آموزش کامل عیب‌یابی عدم توانایی Wordfence در ایجاد wordfence-waf.php در وردپرس

شخصی اشاره کرد که پس از نصب Wordfence در وب‌سایتش، مرتباً با خطاهایی مواجه می‌شد که می‌گفتند نمی‌تواند فایل wordfence-waf.php را در دایرکتوری ریشه ایجاد کند. از او خواستم یک اسکرین‌شات برایم بفرستد؛ پیام خطا فقط یک خط بود و می‌گفت مشکل از مجوز فایل است.

لحظه‌ای در موردش فکر کردم و متوجه شدم که قبلاً با این مورد مواجه شده‌ام. مدت‌ها تلاش کردم تا آن را بفهمم، تقریباً فکر می‌کردم که ارائه‌دهنده خدمات میزبانی وب نقشه‌ای دارد. معلوم شد که مشکل از مجوزها و مالکیت است، اما منطق کنترل پنل میزبانی وب می‌تواند واقعاً گیج‌کننده باشد.

آموزش کامل عیب‌یابی عدم توانایی Wordfence در ایجاد wordfence-waf.php در وردپرس

بگذارید اول توضیح بدهم که این wordfence-waf.php چیست.

در واقع این فایل، فایل محافظتی فایروال Wordfence است که باید در دایرکتوری ریشه وب‌سایت، در همان سطح wp-config.php نوشته شود.

بدون این فایل، فایروال نمی‌تواند شروع به کار کند؛ مثل این است که قفلی نصب کرده‌اید اما کلید را نمی‌توانید وارد کنید.

گزینه ۱: تغییر مجوزها با یک کلیک از طریق کنترل پنل (BT Panel/)HestiaCP/سی‌پنل)

اگر از BT Panel استفاده می‌کنید، در واقع ساده‌ترین روش است. به وب‌سایت خود بروید، سایت مربوطه را پیدا کنید، روی تنظیمات کلیک کنید، سپس به مجوزهای دایرکتوری بروید. مجوز دایرکتوری ریشه وب‌سایت را به ۷۵۵ و مجوز همه فایل‌ها را به ۶۴۴ تغییر دهید. سپس بررسی کنید که آیا کاربر در حال اجرا "www" است یا خیر؛ اگر نه، آن را تغییر دهید. روی دکمه "تعمیر مجوزها" کلیک کنید، منتظر بمانید تا کار تمام شود، Wordfence را رفرش کنید و دوباره امتحان کنید.

برای HestiaCP، به صفحه ویرایش وب‌سایت بروید و گزینه‌ای با عنوان «اجازه دسترسی نوشتن به ریشه وب» را فعال کنید. سپس چند دستور SSH را اجرا کنید تا مالک و مجوزهای دایرکتوری وب‌سایت یکسان شود.

chown -R admin:www-data /home/admin/web/你的域名/public_html
chmod -R 755 /home/admin/web/你的域名/public_html
find /home/admin/web/你的域名/public_html -type f -print0 | xargs -0 chmod 644

سی‌پنل (cPanel) کاربرپسندتر است. فایل منیجر را باز کنید، گزینه «نمایش فایل‌های مخفی» را در گوشه بالا سمت راست فعال کنید، روی دایرکتوری کلیک راست کنید و مجوزها را به ۷۵۵ تغییر دهید، مجوزهای فایل را به ۶۴۴ تغییر دهید، و همچنین در گزینه‌های پیشرفته، قابلیتی برای اصلاح مالک فایل وجود دارد.

گزینه ۲: تغییر دستی مجوزها از طریق SSH (عمومی)لینـوکــس)

اگر کنترل پنل نمی‌تواند آن را مدیریت کند، از SSH به صورت دستی استفاده کنید. پس از اتصال به سرور، ابتدا مالکیت را یکپارچه کنید. در یک محیط LNMP/LEMP، گروه زمان اجرای وب معمولاً www-data یا www است.

chown -R 你的面板用户:www-data /网站根目录完全路径

سپس سطح دسترسی پوشه‌ها را روی ۷۵۵ و سطح دسترسی فایل‌ها را روی ۶۴۴ تنظیم کنید.

find /网站根目录 -type d -print0 | xargs -0 chmod 755
find /网站根目录 -type f -print0 | xargs -0 chmod 644

پس از اتمام فرآیند، به پنل مدیریت وردپرس برگردید و فایروال را دوباره فعال کنید؛ به احتمال زیاد مشکل باید حل شود.

گزینه ۳: ایجاد دستی wordfence-waf.php (یک راه حل عالی برای مواقعی که دسترسی‌ها قفل شده‌اند)

اگر نمی‌توانید از طریق پنل SSH چیزی را تغییر دهید، این کار را به صورت دستی انجام دهید. فایلی با نام wordfence-waf.php در دایرکتوری ریشه ایجاد کنید و کد زیر را در آن قرار دهید.

<?php
if (!defined('WFWAF_VERSION')) {
    define('WFWAF_VERSION', '7.11.0');
}
$wafConfig = array(
    'wafAutoPrepend' => true,
    'wafFile' => __FILE__,
    'wpContentDir' => dirname(__FILE__) . '/wp-content',
    'wpPluginsDir' => dirname(__FILE__) . '/wp-content/plugins',
    'wafLogDir' => dirname(__FILE__) . '/wp-content/wflogs',
);
require_once $wafConfig['wpPluginsDir'] . '/wordfence/lib/waf/waf.php';

به یاد داشته باشید که نسخه ۷.۱۱.۰ را با نسخه فعلی Wordfence خود جایگزین کنید. مجوزهای فایل را روی ۶۴۴ تنظیم کنید، و مالک باید با وب‌سایت مطابقت داشته باشد. سپس wp-config.php را ویرایش کنید و خط زیر را در بالای فایل اضافه کنید.

require_once 'wordfence-waf.php';

ذخیره و به‌روزرسانی Wordfence. فایروال به طور خودکار آن را تشخیص می‌دهد و دیگر خطاها را گزارش نمی‌کند.

گزینه ۴: قوانینی را که دسترسی نوشتن را محدود می‌کنند، بررسی کنید.

گاهی اوقات مشکل از مجوزها نیست، بلکه فایل پیکربندی است که آن را مسدود می‌کند. فایل .htaccess خود را باز کنید و تمام قوانینی را که دسترسی به نوشتن فایل را محدود می‌کنند یا از ایجاد فایل PHP جلوگیری می‌کنند، حذف کنید. برای Nginx، پیکربندی سایت خود را برای محدودیت‌هایی مانند مسیر ریشه فقط خواندنی یا create_file خاموش بررسی کنید و آنها را حذف کنید.

سناریوی دیگر این است که خود میزبان مجازی یا میزبانی ابری سبک، تولید فایل‌های PHP را در دایرکتوری ریشه محدود می‌کند. در این حالت، باید با ارائه‌دهنده خدمات میزبانی خود تماس بگیرید تا این محدودیت را حذف کنند یا حالت محافظت Wordfence را تغییر دهند. به منوی Wordfence، All Options، WAF بروید و حالت موتور محافظت را به Extended Protection تغییر دهید تا از ایجاد فایل ریشه جلوگیری شود.

راه حل ۵: تداخل افزونه‌ها باعث مسدود شدن می‌شود

برخی از افزونه‌های کش یا امنیتی ممکن است این عملیات را مسدود کنند. افزونه‌های کش مانند WP Rocket، W3 Total Cache و LiteSpeed ​​​​Cache و همچنین افزونه‌های امنیتی مانند Sucuri و iThemes Security را موقتاً غیرفعال کنید. سپس کش و opcache سرور را پاک کنید و سرویس PHP را مجدداً راه‌اندازی کنید.

systemctl restart php8.3-fpm

مراحل عیب‌یابی سریع (توصیه می‌شود مراحل را به ترتیب دنبال کنید)

پیشنهاد می‌کنم برای جلوگیری از سردرگمی، این دستور را دنبال کنید. ابتدا، مجوزها و مالکیت را یکسان کنید؛ این کار بیشترین احتمال حل مشکل را دارد. اگر این کار جواب نداد، PHP-FPM را مجدداً راه‌اندازی کنید و backend را رفرش کنید. اگر هنوز جواب نداد، به صورت دستی یک فایل جدید ایجاد کنید و wp-config را تغییر دهید. سپس بررسی کنید که آیا پیکربندی Nginx یا Apache شما ایجاد فایل‌های PHP جدید را در دایرکتوری ریشه مسدود می‌کند یا خیر. در نهایت، تغییر حالت فایروال را در نظر بگیرید.

نکته‌ای که باید به شما یادآوری کنم این است که هرگز نباید سطح دسترسی را روی ۷۷۷ تنظیم کنید. سطح دسترسی پوشه‌ها باید ۷۵۵ و سطح دسترسی فایل‌ها ۶۴۴ باشد؛ این استاندارد است. تنظیم سطح دسترسی روی ۷۷۷ مستقیماً وب‌سایت شما را در معرض خطر امنیتی بسیار بالایی قرار می‌دهد. اگر هک شوید، برای پشیمانی خیلی دیر خواهد بود.

راستش را بخواهید، مطمئن نیستم که این راه‌حل‌ها برای وضعیت شما مؤثر باشند، اما مشکلاتی که با آنها مواجه شدم و روش‌هایی که کشف کردم را با شما به اشتراک گذاشته‌ام. اگر پیام خطای دیگری دریافت کردید، از آن اسکرین‌شات بگیرید و برای من ارسال کنید تا دوباره بررسی کنم.

از آنجایی که تا اینجا را خوانده‌اید، اگر برایتان مفید بود، لطفاً آن را لایک کنید و به اشتراک بگذارید. اگر می‌خواهید زودتر از بقیه از به‌روزرسانی‌ها مطلع شوید، می‌توانید من را دنبال کنید!

ممنون که مقاله من را خواندید. دفعه بعد می‌بینمتان.

وبلاگ امید چن ویلیانگ ( https://www.chenweiliang.com/ آموزش "راه حل کامل برای عدم توانایی وردپرس در ایجاد wordfence-waf.php" که در اینجا به اشتراک گذاشته شده است، ممکن است برای شما مفید باشد.

به اشتراک گذاری لینک این مقاله خوش آمدید:https://www.chenweiliang.com/cwl-34337.html

برای کشف ترفندهای مخفی بیشتر🔑، به کانال تلگرام ما بپیوندید!

اگر دوست داشتید به اشتراک بگذارید و لایک کنید! اشتراک گذاری ها و لایک های شما انگیزه ادامه دار ماست!

 

发表 评论

آدرس ایمیل شما منتشر نخواهد شد. از زمینه های مورد نیاز استفاده می شود * 标注

رفته به بالا