آموزش کامل امن کردن وردپرس
آموزش کامل امن کردن وردپرس ( جلوگیری از هک وردپرس )
۱- نسخه وردپرسی را که از آن استفاده می کنید، مخفی کنید :
یکی از اشتباهات کاربران این است که نسخه وردپرس خود را در معرض دید قرار می دهند. در این حالت اگر شما نسخه وردپرس خود را به روز نکرده باشید در معرض خطر هستید
چون هر کسی می تواند نسخه وردپرس شما را ببیند. به طرق مختلف می توان نسخه وردپرس را مخفی کرد.
در حالت عادی نسخه ورد پرس در داخل کد HTML صفحه index قابل مشاهده است…
آموزش کامل امن کردن وردپرس
برای حذف این شماره باید حداکثر دو فایل را ویرایش کنید. مورد اول در داخل فایل header.php است که باید به دنبال این خط از کد بگردید:
کد php:
<meta name=”generator” content=”WordPress <?php bloginfo(‘version’); ?>” />
که باید این خط را به این شکل تغییر دهید :
کد php:
<meta name=”generator” content=”WordPress” />
ولی در بعضی از قالب ها این شماره نسخه در دو جا نمایش داده می شود. برای حذف شماره نسخه در مکان دوم باید این کد را به فایل function.php موجود در داخل پوشه theme اضافه کنید:
کد php:
<?php remove_action(‘wp_head’, ‘wp_generator’); ?>
از این طریق می توانید مطمئن باشید که شماره نسخه wordpress شما برای عموم قابل مشاهده نیست. احیانا اگر شماره نسخه وردپرس در قالب شما هم به نمایش در می آید
می توانید با ویرایش آن بخش، شماره نسخه را حذف کنید.
آموزش کامل امن کردن وردپرس
مورد دیگری نیز پاک کردن فایل readme.html از روت است. متاسفانه اغلب کاربران آن فایل را در همان بخش باقی می گذارند
در حالی که اصلا هیچ احتیاجی به قرار دادن این فایل بر روی سرور نیست. شما می توانید آدرس این فایل رو در نوار آدرس تایپ کنید،
اگر این فایل بر روی سرور موجود باشد، برای شما نمایش داده خواهد شد و شما شماره نسخه کاربر را خواهید دید . به عنوان مثال:
کد php:
https://www.example.com/readme.html
به جای example نام سایت مورد نظر را قرار دهید. خواهید دید که بسیاری از کاربران ورد پرس این فایل را از روی سرور خود حذف نکرده اند !!
۲- دایرکتوری هایی که صفحه index ندارند ، می توانند مشکل ساز شوند !
در حالت عادی برخی از پوشه های وردپرس حاوی فایل Index نیست و هر کس می تواند داخل آن پوشه ها را ببیند. یکی از این پوشه ها، پوشه plugin است.
هر کس میتواند محتوای آن را ببیند و از این طریق می تواند پلاگین هایی را که شما استفاده می کنید را دیده و نسخه آن را نیز ببیند. این یک ضعف امنیتی بزرگ است.
رای رفع این مشکل دو راه وجود دارد. راه حل ساده این است که یک فایل Index.html بسازید و داخل دایرکتوری پلاگین قرار دهید و شیوه دوم و اصولی تر این است
که دستوری را به فایل htaccess. موجود در root اضافه کنید تا هر کس سعی کرد ، دایرکتوری هایی را که صفحه index ندارند را ببیند،
به صفحه پیغام خطای ۴۰۴ هدایت شود. برای این کار باید این خط را به آخر فایل htaccess. خود اضافه کنید:
آموزش کامل امن کردن وردپرس
کد php:
# Prevents directory listingOptions -Indexes
۳- نسخه وردپرس را همیشه به روز نگه دارید.
سعی کنید همیشه نسخه وردپرس ، پلاگین ها و قالب های خود را به روز نگه دارید. اگر از نسخه ۲٫۶ استفاده می کنید، به روز کردن پلاگین ها برای شما به سادگی
امکان پذیر خواهد بود و به روز رسانی خودکار وردپرس نیز از نسخه بعدی به وردپرس اضافه خواهد شد ولی در حال حاضر نیز می توانید
با نصب wordpress automatic upgrade می توانید این قابلیت را در اختیار داشته باشید.
۴- سطوح دسترسی (premissions) را به درستی تنظیم کنید!
هیچ گاه و تحت هیچ شرایطی بر روی هاست های اشتراکی ، پرمیشن هیچ پوشه ای را بر روی ۷۷۷ قرار ندهید چون افراد دیگری که بر روی همان هاست هستند
می توانند فایل هایی را به آن پوشه آپلود و اجرا کنند. برای پوشه ها در نهایت از می توانید از پرمیشن ۷۵۵ استفاده کنید و برای فایل ها نیز از پرمیشن ۶۴۴ استفاده کنید.
۵- دسترسی به پوشه wp-admin را محدود کنید!
اگر دسترسی ها را به این پوشه محدود کنید ، به میزان زیادی امنیت سیستم خود را افزایش داده اید.
این پوشه را به دو شکل می توان محدود کرد. شیوه اول محدود کردن دسترسی به این پوشه با استفاده از فایل htaccess. و آدرس IP است. این شیوه فقط زمانی کاربرد دارد
که شما از IP Static استفاده می کنید. بیشتر کاربران ایرانی از ip های داینامیک استفاده می کنند و این شیوه برای آنها مناسب نیست ولی اگر احیانا کسانی باشند
که از آی پی استاتیک استفاده می کنند، کافیست که داخل پوشه wp-admin یک فایل htaccess. بسازند و این تکه کد را داخل آن قرار دهند:
آموزش کامل امن کردن وردپرس
کد php:
order deny,allowdeny from all# allow my home IP addressallow from XX.XX.XXX.XXX# allow my work IP addressallow from XX.XX.XXX.XXX
به جای X ها باید آدرس آی پی خود را قرار دهند. می توانید به تعداد دلخواه به آدرس آی پی اضافه کنید و تنها همین آدرس ها می توانند به آن پوشه دسترسی داشته باشند و باقی افرادی که
سعی داشته باشند وارد دایرکتوری wp-admin شوند، به صفحه پیغام خطای ۴۰۴ هدایت می شوند.
افرادی که از آدرس های IP داینامیک استفاده می کنند می توانند پوشه wp-admin را پسورد گذاری کنند. با استفاده از قابلیت موجود در داخل CPanel هاست خود می توانید این کار را به راحتی
انجام دهید.
آموزش کامل امن کردن وردپرس
۶- پسورد های خود را مطمئن و طولانی انتخاب کنید!
کی از دلایل اینکه سایت ها به راحتی هک می شوند استفاده از کلمات عبور ساده و قابل حدس است. برای جلوگیری از هک شدن همیشه سعی کنید که پسورد های طولانی که مخلوطی از
حروف ، اعداد و نشانه هاست را انتخاب کنید. همچنین می توانید با نصب پلاگین هایی همچون Login Lock Down جلوی افرادی را که سعی دارند با امتحان پسورد های مختلف وارد بخش ادمین
سایت شما شوند را بگیرید. این پلاگین آدرس های IP را ثبت می کند و اگر کاربری با یک آدرس آی پی تعداد دفعات خاصی ، پسورد را اشتباه وارد کند برای دقایق مشخصی دیگر به او اجازه وارد
کردن کلمه عبور را نخواهد داد.
همچنین سعی کنید که username وارد شدن به بخش ادمین را که به شکل پیش فرض admin است را تعویض کنید. در حالت پیش فرض این یوزنیم admin است و نیمی از زحمت هکر برای وارد
شدن به بخش ادمین را کم کرده است. حتما این کلمه را تغییر دهید.
برای تغییر کلمه عبور admin می توانید از phpmyadmin موجود بر روی هاست خود استفاده کنید ولی اگر تا به حال با این برنامه کار نکرده اید می توانید از پلاگین change admin username
استفاده کنید. بعد از نصب این پلاگین و فعال کردنش ، به بخش کاربران مراجعت کنید، در این بخش گزینه change username به لینک های بالای همان بخش اضافه شده است. دقت کنید که بعد از
تغییر کلمه عبور حتما باید یکبار logout کرده و دوباره login کنید.
۷- جلوی ایندکس شدن احتمالی محتوای پوشه های wp رو بگیرید!
موتور های جستجو می توانند محتوای پوشه های مختلف را جستجو کنند و بسیاری از حفره های موجود در سایت ها با استفاده از همین صفحات ایندکس شده در گوگل توسط هکر ها کشف
می شوند. با اضافه کردن این یک خط به فایل robots.txt خود جلوی ایندکس شدن پوشه های wp را بگیرید!
آموزش کامل امن کردن وردپرس
کد php:
Disallow: /wp-
اگر در حال حاضر هیچ فایل robots.txt ای روی سرور خود ندارید، می توانید از این دستورات را در داخل یک فایل با نام robots و پسوند txt ذخیره کنید و بر روی root سرور خود قرار دهید:
کد php:
User-agent: *# disallow all files in these WordPress directoriesDisallow: /wp-content/Disallow: /wp-admin/Disallow: /wp-includes/Disallow: /wp-# disallow all files in these directoriesDisallow: /tag/Disallow: /cgi-bin/# disallow robots from parsing individual post feeds and trackbacksDisallow: /feed/Disallow: /trackback/Disallow: */trackback*# disallow any files that are stats relatedDisallow: /stats*Disallow: /about/legal-notice/Disallow: /about/copyright-policy/Disallow: /about/terms-and-conditions/Disallow: /tagDisallow: /docs*Disallow: /manual*Disallow: /category/uncategorized*# disallow files ending with the following extensionsUser-agent: GooglebotDisallow: /*.php$Disallow: /*.js$Disallow: /*.inc$Disallow: /*.css$Disallow: /*.gz$Disallow: /*.cgi$Disallow: /*.wmv$Disallow: /*.php*Disallow: /*.gz$Allow: /wp-content/uploads/#disallow WayBack archiving siteUser-agent: ia_archiverDisallow: /
این فایل حتی سایت شما را برای موتور های جستجو نیز بهینه می کند و اجازه ایندکس شدن محتوای بدون استفاده سایت شما را به موتور های جستجو نمی دهد.
البته شیوه های دیگری نیز برای حفاظت بیشتر در دسترس است که احتیاج به کمی دانش فنی دارد. به عنوان مثال می توانید prefix تیبل های بانک اطلاعاتی وردپرس خود را تغییر دهید که البته این کار با نسبت پلاگین نیز امکان پذیر است. افرادی که با SQL injection قصد هک کردن سایت را داشته باشند اگر prefix دقیق را ندادند، کاری نمی توانند انجام دهند از این رو تغییر prefixدهد.
۸- دسترسی به پوشه ی wp-content را محدود کنید!
آموزش کامل امن کردن وردپرس
این پوشه محل نگه داری فایلهای قالب ها-زبان ها و پلاگین ها است.همچنین در این پوشه فایلهایی ممکن است برای دانلود قرار بگیرد.عکس های آپلود شده هم در جزئیات همین پست قرار می گیرد.
بهتر است اجازه ندهید نفوذ گران به فایلهای مثل php در این پوشه که مهم هستند دسترسی داشته باشند.
برای این کار وارد پوشه ی wp-content می شویم.خوب در این پوشه یک .htaccess وجود داره که خوب باز می کنیم این فایل را.بعد دستور زیر را وارد می کنیم :
کد php:
Order Allow,Deny
Deny from all
<files ?.(jpg|gif|rar|jpge|mp3|zip|png|js|css)$? ~>
Allow from all
</files>
بعد هم فایل را ذخیره می کنیم.
حالا ببینیم این دستور اچ تی اکسس چی میگه:
این دستور می گوید به هر فایلی بجز اینهایی که در این لیست وجود داردند اجازه ی دسترسی نده.
من خودم فایل های zip,rar,mp3 و jpge را اضافه کردم.ولی ممکن است شما به دسترسی فایل های بیشتری برای کاربرانتون نیاز دارید.خوب در لیست اضافه کنید.
هر فایلی هم که تو این لیست نباشه دسترسی نداره.
۹- از پروتوکل های امن تر استفاده کنید!
در قوانین tcp/ip پروتوکل های متفاوتی تعریف شده است که می تونیم نام ببریم از http,https و ftp
این امر مشخصی است که تقریبا تمام سایت ها از پروتوکل http استفاده می کنند.اما یک پروتوکل رمز نگاری شده امن تر وجود دارد به نام https.می توانید در شبکه های بی سیم و محلی امنیت
را بسیار افزایش دهید.ابتدا باید با میزبانی هاست خود صحبت کنید تا این قابلیت به دامین شما داده شود.بعد از این مرحله فایل config.php را باز می کنیم و در آن این دستور را جایگذاری می
کنیم.
کد php:
define(‘FORCE_SSL_ADMIN’, true);
این دستور چی میگه:
از این پس هنگام زدن دومین مورد نظر توسط هر کاربری از پروتوکل https برای برقراری ارتباط استفاده شود.
ادامه ی نکته ی ۴:
نرم افزار wp security scan می تواند سطح دسترسی مهمترین فایل های ورد پرس شما را تشخیص دهد.توجه داشته باشید که بعد از هر اسکن پلاگین را غیر فعال کنید.هم از نرم افزار های مثل
filezilla و هم از خود فایل منیجر موجود در سی پنل می تونید premission را تغییر دهید.
۱۰- غییر نام پیشوند wp در بانک اطلاعاتی:
این نکته که اشاره کردند بسیار مهم است.شما می توانید از لحاظ هک شدن بانک اطلاعاتی خود با انجام این دستورالعمل کاملا آسوده خاطر باشید.
الف) ابتدا یکback up یا پشتیبان از بانک اطلاعاتی(database) سایت میگیریم که در صورت بروز هرگونه خراب کاری sبتوانیم اطلاعات را بازگردانیم.
ب) فایل config.php را باز می کنیم. این خط را جستجو کنید.
کد php:
$table_prefix = ‘wp_’;
خوب مشخص است که ما می خواهیم wp به نام دلخواهمان تغییر کند.نام دلخواه خود را وارد کنید به جای wp و ذخیره ی پرونده.
آموزش کامل امن کردن وردپرس
ب)وارد php my admin سایت خود شوید.در کنترل پنل سایت موجود است.دیتا بیس مربوط به ورد پرس که قبلا ایجاد کردید را انتخاب کنید. تمام جداول(tables) های که پیشوند wp دارند را را با نام
دلخواهی که برای wp در فایل config.php گذاشته بودید تغییر دهید.
توجه!!: نام جدول را عوض نکنید ها.فقط پیشوند یعنی wp با هرچی که شما در کانفیگ.پی اچ پی بجای همون wp گذاشتید.
ج) جدول wp-option را انتخاب کنید و وارد آن شوید. الان باید این wp با اسم دلخواه شما تغییر پیدا کرده باشه.بعد گزینه ی SQL را از منوی بالای جدول انتخاب کنید. این گزینه را کلیک کردید صفحه
ای می آید که یک جعبه(box) کوئری(query) وجود دارد که می توانید در آن مقدار وارد کنید.
مقدار زیر را وارد کنید:
کد php:
UPDATE new_usermeta SET meta_key = REPLACE(meta_key, ‘wp_’, ‘jadid_’);
اون قسمت دستور که کلمه ی jadid هست را به نام دلخواهی که با wp عوض کردید تغییر بدهید.
د) حالا وارد جدول wp_usermeta شوید.بعد دوباره از منوی بالا SQL را کلیک می کنیم.ولی این بار در جعبه ی کوئری این دستور را وارد می کنیم.
کد php:
UPDATE new_options SET option_name = ‘jadid_user_roles’ WHERE option_name = ‘wp_user_roles’ AND blog_id =0;
باز هم می گم یادتون نره jadid را با اون نام دلخواه عوض کنید.تو این دستور هم jadid هست.
ذخیره و پایان.
فراموش نشود که حتما قبل از انجام این مراحل بک آپ بگیرید.