ابتدایی ترین قدم در هک کردن سایت وردپرس جمع آوری اطلاعات جهت نفوذ به سایت می باشد.
در این مقاله سعی داریم تا روش هایی برای مقابله با هک شدن وردپرس ارائه دهیم.
نسخه هسته وردپرس:
فایل readme.html در پوشه اصلی سایت شما اطلاعات پیرامون نسخه وردپرس را نمایش میدهد، بنابراین بهتر است این فایل را حذف نماییم و یا دسترسی به آن را محدود کنیم.
هسته وردپرس را حتما همیشه بروز رسانی کنید.
Directory Indexing :
فعال بودن این ویژگی امکان میدهد تا بازدید کننده محتوای پوشه های سایت شما مشاهده کند، این ویژگی در صورتی که فعال باشد اطلاعات زیادی را در اختیار نفوذگران قرار میدهد مانند لیست تمام پلاگین ها و قالب ها و فایل های آن مانند css ها. مسیرهای حیاتی در وردپرس:
/wp-content/ /wp-content/plugins/ /wp-content/themes/ /uploads/ /images/
بنابراین باید حتما توجه داشته باشیم این ویژگی در تمام مسیر های سایت وردپرس ما از طریق فایل htaccess غیرفعال باشد.
Options -Indexes
محدودیت آپلود فایل های php :
هکرها معمولا فایل های مخرب و backdoor ها را در مسیرهایی ذخیره میکنند که مدیران کمتر آن مسیرها را بررسی میکنند. باید امکان آپلود فایل های php را در مسیرهای خاصی در وردپرس از طریق فایل htaccess محدود نماییم. میتوانید از کد زیر استفاده کنید.
<Files *.php> deny from all </Files>
مسیرهای حیاتی برای محدودیت آپلود فایل های php
/wp-content/uploads /wp-includes/
برای محدود کردن سایر فرمت فایل ها در مسیر هایی مانند wp-content عبارت زیر را به دستور بالا اضافه کنید.
<Files ~ “.(xml|css|jpeg|png|gif|js)$”>
نسخه پلاگین های نصب شده:
ابزارهای زیادی هستند که با بررسی source کدهای HTML یا حتی Header های HTTP می توانند اطلاعات پلاگین ها را کشف نمایند.
نمونه ای از این ابزارها بصورت زیر است:
WPScan –
Nikto –
بنابراین ممکن است همیشه پنهان کردن اطلاعات کار ساده ای نباشد!
محدود کردن index کردن فایل های مدیریتی از طریق موتورهای جستجو:
نیازی نیست موتورهای جستجو تمام اطلاعات مهم بخش مدیریت را بررسی کنند. تنها بررسی صفحه اصلی و صفحات داخلی کافی است، بنابراین برای جلوگیری از ورود ربات های خزنده به مسیرهای مدیریت سایت باید فایل robot.txt را در پوشه اصلی سایت ایجاد نماییم و مقادیر زیر را در آن قرار دهیم.
User-agent: * Disallow: /cgi-bin Disallow: /wp-admin Disallow: /wp-includes Disallow: /wp-content/plugins/ Disallow: /wp-content/cache/ Disallow: /wp-content/themes/ Disallow: */trackback/ Disallow: */feed/ Disallow: /*/feed/rss/$ Disallow: /category/*
بروز کردن پلاگین های وردپرس :
بصورت مداوم باید پلاگین ها را بروز کرد، همانطور که در گذشته اعلام شد برای بررسی وضعیت پلاگین امنیت پلاگین ها و نیاز به بروز رسانی، پلاگین های امنیتی زیادی وجود دارد.
بروز کردن پلاگین ها امری ضروری و مداوم خواهد بود، برای بروز رسانی خودکار تمام پلاگین های وردپرس، پلاگین وجود دارد اما ترجیه بر این است که از نصب پلاگین های زیاد و غیر ضروری تا جای ممکن خودداری شود، بنابراین نتیجه میگیریم که بروز رسانی بصورت دستی مطمئن تر خواهد بود.
پلاگین بروز رسانی خودکار وردپرس.
https://wordpress.org/plugins/automatic-plugin-updates/
همچنین شما می توانید با اضافه کردن یک کد ساده به فایل functions.php قالب یا پلاگین خود قابلیت بروزرسانی خودکار را بدون نیاز به پالگینهاضافه فراهم کنید.
add_filter( 'auto_update_plugin', '__return_true' ); add_filter( 'auto_update_theme', '__return_true' );
دسترسی به فایل های پر اهمیت:
فایل های مهم سایت خود را امن تر کنید. دسترسی به فایل های پراهمیت وردپرس را بسیار محدود کنید و در حالت read-only قرار دهید. (پرمیژن این فایل ها را بروی 444 تنظیم کنید)
برخی از فایل های مهم:
wp-config.php .htaccess
حتی پیشنهاد میشود فایل wp-config.php را به خارج از پوشه public_html منتقل کنید.
بهتر است امکان ویرایش فایل ها را از طریق پنل مدیریت وردپرس غیر فعال کنید برای اینکار خط زیر را به فایل wp-config.php اضافه نمایید.
define( ‘DISALLOW_FILE_EDIT’, true );
حتی میتوانید از طریق htaccess فایل های بیشتری را در مسیرهای مختلف محدود کنید.
<files wp-config.php> order allow,deny deny from all </files>
کشف نام کاربران و تعداد آن ها :
با اضافه کردن عبارت زیر به انتهای آدرس سایت نام کاربران فعال در سایت براحتی مشخص خواهد شد.
YOURSITE.com/?author=1
با تغییر عدد 1 به اعداد بالاتر تمام نام کاربری اعضای سایت مشخص خواهد شد.
بدست آوردن نام های کاربری (username) به این آسانی راه را برای حملات brute force و بدست آوردن پسورد بسیار راحت میکند.
روش پنهان کردن نام کاربری هم بسیار ساده است، کافی است به phpmyadmin سایت وردپرس خود وارد شوید و در Table مربوط به wp_users نام درج شده در ستون user_nicename مقابل user مورد نظر را تغییر دهید.
بصورت پیش فرض user_login و user_nicename باهم یکسان است اما شما باید برای امنیت بیشتر user_nicename را به نام غیرمشابه دیگری تغییر دهید.
امنیت صفحه مدیریت وردپرس:
جهت ورود به صفحه لاگین حتما از کد کپچا استفاده نمایید. برای کپچا پلاگین های متنوعی وجود دارد.
https://wordpress.org/plugins/captcha/
همین طور میتوانید از ویژگی Password Protect بروی پوشه wp-admin جهت لاگین دو مرحله ای استفاده کنید.
https://goo.gl/TDzYzw
حتما در پایان کار در پنل مدیریت از این صفحه logout نمایید و بدون خروج از پنل مدیریت کاربری پنجره مرورگر را نبندید!
برای logout شدن خودکار پس از idle شدن یوزرها می توانید از پلاگین زیر استفاده کنید.
https://wordpress.org/plugins/idle-user-logout/
تغییر Table Prefix دیتابیس:
پیشوند پیش فرض وردپرس برای Table ها wp_ می باشد. این پیشوند کار را برای حملات Sql Injection بسیار راحت میکند. بنابراین پیشنهاد ما این است که از یک پیشوند سخت تر مانند mudse248_ استفاده کنید.
امنیت شخصی:
حتما توجه داشته باشید که باید از سیستمی به سایت خود متصل شوید که این سیستم آلوده به ویروس یا تروجان نباشد. برای اطمینان حتما در سیستم کاربری خود از آخرین نسخه های آنتی ویروس های معتبر استفاده کنید. هرگز از سیستم های غیرمطمئن به سایت خود لاگین نشوید. پس از اتمام کار در صفحه مدیریت وردپرس حتما logout کنید. از ذخیره کردن رمزهای کنترل پنل، صفحه مدیریت و FTP بروی مرورگر و نرم افزار ها خودداری کنید.