X
تبلیغات
نماشا
رایتل

10 ترفند مفید امنیتی وردپرس

جمعه 6 اسفند‌ماه سال 1389 ساعت 09:32 ق.ظ

در خارج از دنیای رایانه، مردم برای حفظ امنیت جان و مال خود، خانه هایی با ضریب ایمنی و امنیت بالا و خودروهای مجهز به دزدگیر خریداری می کنند. و خلاصه از هر ابزاری برای به حداکثر رساندن امنیت خود استفاده می کنند. در دنیای آنلاین، نیز امنیت به همان اندازه مهم و حیاتی است. به خصوص برای کسانی که از وب سایت ها و وبلاگ ها کسب در آمد و امرار معاش می نمایند. در این مقاله ، به شما چند ترفند مفید برای حفاظت از وبلاگ یا وب سایت تحت سیستم مدیریت محتوای وردپرس را آموزش می دهیم.

1- جلوگیری از به نمایش درآمدن اطلاعات غیر ضروری
مشکل:
هنگامی که شما موفق به ورود به یک وبلاگ وردپرس نمی شوید، سیستم مدیریت محتوا (CMS) با نمایش برخی از اطلاعات به شما گوشزد می کند کجای کار اشکال دارد. اگر شما رمز عبور خود را فراموش کرده باشید، ممکن است این راهنمایی به کارتان بیاید. اما در عین حال ممکن است برای کسانی که مایل به هک کردن وبلاگ شما هستند هم اطلاعات مفید و به درد بخوری داشته باشد! پس چرا تلاش نکنیم وردپرس را از نمایش پیغام خطا هنگام عدم موفقیت در ورود به سایت برحذر داریم؟
راه حل :
برای حذف پیغام خطای ورودی (log-in error)، کافی است فایل functions.php پوسته (theme) سایت خود را باز کرده ، و کد زیر را در آن قرار دهیم:

add_filter('login_errors',create_function('$a', "return null;"));

سپس فایل را ذخیره کنید، و امتحان کنید که: اگر موفق به ورود به اکانت خود نشوید، دیگر پیام خطایی نمایش داده نمی شود.
لطفا توجه داشته باشید که چند فایل با نام functions.php وجود دارد. مطمئن شوید که آن فایلی را که در شاخه wp-content وجود دارد تغییر دهید.
توضیح کد:
با استفاده از این کد، ما یک قلاب (hook) ساده برای بازنویسی تابع login_errors() اضافه کرده ایم. از آنجا که تابع سفارشی که ما ایجاد کرده ایم به صورت تهی (null) بر می گردد، پیام نمایش داده شده یک رشته خالی(blank string) خواهد بود.

2- استفاده از Force SSL
مشکل:
اگر شما در مورد محافظت از اطلاعات خود نگران هستید، قطعا باید از اس اس ال (SSL) استفاده کنید. در صورتی که نمی دانید اس اس ال چیست، پیشنهاد می کنیم این مطلب را مطالعه کنید.

اس اس ال چیست و چرا توجه به آن بسیار مهم است؟

آیا می دانستید که وادار کردن وردپرس به استفاده از اس اس ال امکان پذیر است؟ بسیاری از شرکت های خدمات میزبانی وب (web hosting) در صورت درخواست، می توانند اس اس ال را برایتان فعال کنند.

راه حل:
هنگامی که اطمینان یافتید وب سرور شما می تواند از اس اس ال پشتیبانی کند، فقط کافی است که فایل functions.php را باز کرده (واقع در پوشه اصلی فایلهای نصب برنامه ورد پرس) و کد زیر را به آن اضافه کنید:

define('FORCE_SSL_ADMIN', true);

فایل را ذخیره کنید ، و کار شما تمام شد!

توضیح کد:
توضیح این کد هیچ جای سختی ندارد. وردپرس از ثابت های بسیاری برای پیکربندی نرم افزار استفاده می کند. در این مورد ، ما به سادگی ثابت FORCE_SSL_ADMIN را تعریف کرده و مقدار آن را true تعیین کرده ایم. این عمل باعث استفاده وردپرس از اس اس ال خواهد شد.

3- استفاده از htaccess برای محافظت از فایل پیکربندی وردپرس
مشکل:
به عنوان یک مدیر سایت وردپرسی، احتمالا می دانید فایلی با نام wp-config.php چقدر مهم است. این پرونده حاوی تمام اطلاعات مورد نیاز برای دسترسی به پایگاه داده (data base) با ارزش شما است. اطلاعاتی چون نام کاربری ، رمز عبور ، نام سرور و غیره در این فایل نگهداری می گردند. محافظت از wp-config.php امری حیاتی است، نظرتان در مورد بهره برداری از قدرت برنامه آپاچی (Apache) برای حفاظت از این فایل چیست؟

راه حل:
فایل htaccess در پوشه اصلی نصب وردپرس واقع شده است. پس از ایجاد یک نسخه پشتیبان از آن (این فایل از آن گونه فایل حیاتی است که ما همیشه باید یک نسخه سالم از ان را به عنوان پشتیبان نزد خود داشته باشیم) ، آن را باز کرده و کد زیر را در آن وارد کنید:

<files wp-config.php> order allow,deny deny from all </files>


توضیح کد:
فایل های htaccess فایلهای مهم و قدرتمندی هستند که می توانند یکی از بهترین ابزارها برای جلوگیری از دسترسی های ناخواسته به اطلاعات شما باشند. در این کد، ما به سادگی قانونی گذاشته ایم که مانع از هر گونه دسترسی به فایل wp-admin.php می شود. بنابراین اطمینان حاصل می کنیم که هیچ برنامه و ربات مخربی نمی تواند به آن دسترسی داشته باشد.

4- افزودن اعضا و رباتهای ناخواسته به لیست سیاه

مشکل:
این مورد همان اندازه در دنیای آنلاین کاربردی و مفید است که در زندگی واقعی. کسی که شما را امروز اذیت می کند, احتمالا فردا دوباره این کار را خواهد کرد. آیا شما تا کنون توجه کرده اید چگونه وبلاگ شما هر روز در معرض بمباران هرزنامه ها و نظرات مزاحم قرار می گیرد؟ راه حل این مشکل کاملا ساده است: مانع دسترسی آنها به وبلاگ خود شوید.

راه حل:
کد زیر را در فایل htaccess که در ریشه نصب وردپرس واقع شده، وارد کنید. همانطور که گفتیم ، همیشه قبل از هر گونه دستکاری یا ویرایش htaccess از آن پشتیبان بگیرید. این کد دسترسی آی پی ۱۲۳.۴۵۶.۷۸۹ را به سایت شما قطع می کند. به جای آن آی پی را که می خواهید به .سایت تان دسترسی نداشته باشد، وارد کنید

<Limit GET POST PUT> order allow,deny allow from all deny from 123.456.789 </LIMIT>

توضیح کد:
آپاچی برنامه ای قدرتمند است و می تواند به راحتی برای مسدود کردن دسترسی کاربران نامطلوب و ربات ها مورد استفاده قرار گیرد. با استفاده از این کد، ما به آپاچی می گوییم که هر کسی مجاز به برای بازدید از وبلاگ مان است، به جز شخصی با آدرس آی پی 123.456.789.
برای بلاک کردن آی پی های بیشتر، به سادگی خط 4 این کد را در یک خط جدید با استفاده از آدرس آی پی دیگر تکرار کنید، مانند زیر:

<Limit GET POST PUT> order allow,deny allow from all deny from 123.456.789 deny from 93.121.788 deny from 223.956.789 deny from 128.456.780 </LIMIT>

5- محافظت از وبلاگ وردپرس خود در برابر حملات Script Injections

مشکل:
محافظت از وب سایت های پویا به طور ویژه ای از اهمیت برخوردار است. اکثر توسعه دهندگان همیشه ، از دستورات GET و POST محافظت می کنند، اما گاهی اوقات این کافی نیست. ما باید وبلاگ خود را در مقابل حملات تزریق اسکریپت و هر گونه تلاش برای تغییر متغیر های PHP GLOBALS و _REQUEST محافظت کنیم.

راه حل:
کد های زیر تزریق اسکریپت را مسدود کرده و هر گونه تلاش برای تغییر PHP GLOBALS و متغیر _REQUEST. را ناکام می گذارند. این کدها را در فایل htaccess (واقع در ریشه نصب وردپرس) پیست کنید. البته فراموش نکنید که همیشه قبل ازویرایش htaccess از آن پشتیبان بگیرید.

Options +FollowSymLinks RewriteEngine On RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC,OR] RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR] RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2}) RewriteRule ^(.*)$ index.php [F,L]

توضیح کد:
با استفاده از امکانات فایل htaccess می توانیم درخواست ها را چک کنیم. با این کد کنترل می کنیم که آیا هر درخواست شامل <script>هست یا خیر و اینکه آیا آن اسکریپت سعی در تغییر مقدار متغیرهای PHP GLOBALS یا _REQUEST دارد یا نه. اگر هر یک از این شرایط فراهم شده باشد، درخواست مسدود می شود و خطای 403 در مرورگر مهاجم نمایش داده می شود.

6- مبارزه علیه برنامه های دزدی محتوای وبلاگ (Content Scrapers)

مشکل:
اگر وبلاگ شما حاوی مطالب جذاب و خواننده پسند یا کاربردی باشد، بدون شک صاحبان دیگر وبلاگ ها سعی خواهند کرد که مطالب شما را بدون اجازه در وبلاگ یا وب سایت خود استفاده کنند، که نوعی دزدی است. یکی از بزرگترین مشکلات در این مواقع استفاده از لینک تصاویر وبلاگ شما در دیگر سایت ها است که پهنای باند سرور شما را به شدت مصرف می کند.

راه حل:
برای محافظت از وب سایت خود در برابر لینک دهی و دزدی محتوا، به سادگی کد زیر را در فایل htaccess قرار دهید. مثل همیشه فراموش نکنید که از فایل htaccess پشتیبان گرفته و بعد آن را ویرایش کنید.

RewriteEngine On #Replace ?mysite\.com/ with your blog url RewriteCond %{HTTP_REFERER} !^http://(.+\.)?mysite\.com/ [NC] RewriteCond %{HTTP_REFERER} !^$ #Replace /images/nohotlink.jpg with your "don't hotlink" image url RewriteRule .*\.(jpe?g|gif|bmp|png)$ /images/nohotlink.jpg [L]


هنگامی که شما فایل را ذخیره کنید، فقط وب سایت خودتان قادر خواهد بود که از تصاویر استفاده کند. به عبارت دیگر، هیچ کس قادر نیست تصاویر سایت تان را لینک بدهد و یا در سایتش استفاده کند، چرا که این امر می تواند بسیار پیچیده و وقت گیر باشد. وب سایت های دیگر در صورت استفاده از تصاویر شما، به طور خودکار فایل nohotlink.jpg را در سایت شان مشاهده می کنند. توجه داشته باشید که شما همچنین می توانید یک تصویر غیر موجود را مشخص کنید ، تا وب سایت هایی که سعی دارند از تصور شما استفاده کنند به جای تصویرفقط یک فضای خالی ببینند.

توضیح کد:
با استفاده از این کد ، اولین کاری که ما انجام داده ایم بررسی ارجاع دهنده (referrer) است تا با آدرس وبلاگ ما یکسان باشد. اگر چنین نباشد و فایل ضمیمه ای از نوع JPG ، GIF ، BMP یا PNG ، داشته باشد، تصویر nohotlink به جای تصویر اصلی نمایش داده می شود.


7- ایجاد پلاگینی برای محافظت از وبلاگ شما در مقابل درخواست آدرس های مضر

مشکل:
هکرها و افراد خرابکار اغلب از برنامه های مخرب برای پیدا کردن رخنه های امنیتی و حمله به نقاط ضعف وبلاگ استفاده می کنند. وردپرس به طور پیش فرض دارای امکانات حفاظتی خوبی است، اما افزایش آن امکان پذیر است.

راه حل:
کد زیر را در یک فایل متنی قرار داده و آن را نام blockbadqueries.php ذخیره کنید. هنگامی که شما این کار را انجام دادید، آن را در آدرس wp-content/plugins آپلود کنید و آن را مانند هر پلاگین دیگری در تنظیمات وردپرس فعال کنید. حال وبلاگ شما در برابر درخواست های مخرب محافظت می شود.

<?php /* Plugin Name: Block Bad Queries Plugin URI: http://perishablepress.com/press/2009/12/22/protect-wordpress-against-malicious-url-requests/ Description: Protect WordPress Against Malicious URL Requests Author URI: http://perishablepress.com/ Author: Perishable Press Version: 1.0 */ global $user_ID; if($user_ID) { if(!current_user_can('level_10')) { if (strlen($_SERVER['REQUEST_URI']) > 255 || strpos($_SERVER['REQUEST_URI'], "eval(") || strpos($_SERVER['REQUEST_URI'], "CONCAT") || strpos($_SERVER['REQUEST_URI'], "UNION+SELECT") || strpos($_SERVER['REQUEST_URI'], "base64")) { @header("HTTP/1.1 414 Request-URI Too Long"); @header("Status: 414 Request-URI Too Long"); @header("Connection: Close"); @exit; } } } ?>

توضیح کد:
کاری که این کد انجام می دهد بسیار ساده است. این کد شروع به بررسی درخواست هایی با رشته بیش از حد طولانی (بیش از 255 کاراکتر) یا وجود تابع پی اچ پی 64 بیتی(base64) در یک آدرس می کند. اگر یکی از این شرایط برقرار شود، افزونه خطای 414 را به مرورگر نفوذگر ارسال می کند.

8- حذف شماره نسخه وردپرس مورد استفاده

مشکل:
همانطور که ممکن است بدانید، وردپرس به طور خودکار شماره نسخه ای را که از آن استفاده می کنید، در بالای صفحات وبلاگ شما نمایش میدهد. اگر وبلاگ شما همیشه با آخرین نسخه ورد پرس به روز باشد (که مطمئنا بهتر است همیشه این کار را انجام دهید) این نکته کاملا بی ضرر است. اما اگر به دلایلی وبلاگ شما به روز نباشد، وردپرس همچنان شماره نسخه را نمایش داده و هکرها از این نکته مهم به نفع خود سوء استفاده زیادی خواهند کرد. مثلا باگ هایی که کشف شده و در نسخه های بعدی رفع شده اند، هنوز در سایت شما باز و دراختیار هکرها هستند.

راه حل:
کد زیر را در فایل functions.php از پوسته فعال وردپرس وارد کنید. سپس فایل را ذخیره کرده، وبلاگ خود را ریفرش (به روز رسانی تغییرات) کنید شماره نسخه وردپرس دیگر در سربرگ وبلاگ مشاهده نخواهد شد.

remove_action('wp_head', 'wp_generator');


توضیح کد:
برای اجرای برخی اقدامات خاص، وردپرس از مکانیزمی به نام «قلاب» (“hooks”) استفاده می کند، که به شما امکان گیر انداختن یک تابع توسط تابع دیگر را می دهد. تابع wp_generator ، که نمایش نسخه وردپرس را برعهده دارد، با کد بالا گیر خواهد افتاد. هرگاه اراده کنیم می توانیم با استفاده از تابع remove_action() این قلاب را حذف کرده و از اجرای آن جلوگیری کنیم.

9-تغییر نام کاربری ادمین پیش فرض

مشکل:
حملات Brute force یکی از ساده ترین راه ها برای کشف رمزعبور هستند. روش ساده است: مهاجم آنقدر رمزهای عبور مختلفی که احتمال می دهد را امتحان می کند، تا رمزعبور صحیح را کشف کند. کاربران مهاجمی که از روش آزمون و خطا استفاده می کنند، از دیکشنری ها به عنوان اصلی ترین ابزار سود می برند، که به آنها انواع ترکیبات با معنی از حروف را برای کشف رمز عبور را ارائه می دهد.

اما دانستن نام کاربری شما قطعا کار را برای حدس زدن ترکیب رمزعبور درست برای آنها آسان تر می کند. به همین دلیل است که شما همیشه باید نام کاربری پیش فرض را که عبارت است از کلمه “admin” به چیزی تغییر دهید که سخت تر بتوان آن را حدس زد.
توجه داشته باشید که وردپرس 3.0 اجازه انتخاب نام کاربری مورد نظر خود به صورت پیش فرض را می دهد. بنابراین ، این نکته در مواقعی مفید است که هنوز هم از کلمه کلیشه ای و قدیمی “admin” برای حساب کاربری وردپرس خود استفاده می کنید.

راه حل:
اگر شما هنوز نام کاربری “admin” را تغییر نداده اید، به سادگی SQL زیر را در پایگاه داده (دیتابیس) خود اجرا کنید. البته قبل از آن نام کاربری مورد نظرتان را با عبارت Your New Username جایگزین کنید.

UPDATE wp_users SET user_login = 'Your New Username' WHERE user_login = 'Admin';


توضیح کد:
نام های کاربری در پایگاه داده ذخیره می شوند. برای تغییر یکی از این نام ها، تنها کافی است که از کوئری Update استفاده کنید. توجه داشته باشید که این query پست های نوشته شده توسط نام کاربری “admin” را به نام کاربری جدید انتقال نمی دهد. با مطالعه مطلب«13 سوال SQL مفید وردپرس که آرزو می کردید زودتر میدانستید»می توانید به راحتی مشکل تغییر نام نویسنده پست ها را برطرف نمایید.

10- جلوگیری از مرور دایرکتوری

مشکل:
به طور پیش فرض، بیشتر میزبان ها اجازه فهرست کردن دایرکتوری را به کاربر می دهند. بنابراین ، اگر شما عبارت www.yourdomain.com/wp-includes را در نوار آدرس مرورگر وارد کنید (به جای yourdomain نام وبلاگ یا سایت خود را باید بنویسید)، قادر خواهید بود همه فایل های موجود در آن پوشه را ببینید. این قطعا یک ریسک امنیتی است، زیرا هکر می تواند آخرین باری که فایل ها را مدیر وبلاگ یا سایت تغییر داده و یا ویرایش کرده است را مشاهده نموده و به فایلها دسترسی داشته باشد.

راه حل:
فقط کافی است کد زیر را برای پیکربندی آپاچی به فایل htaccess اضافه کنید :

Options -Indexes

توضیح کد:
لطفا توجه داشته باشید که صرفا به روز رسانی فایل robots.txt وبلاگ با دستور

Disallow: /wp*

کافی نیست. این امر تنها از ایندکس شدن دایرکتوری وردپرس (wp-directory) جلوگیری می کند، اما قادر به پیشگیری کاربران از مشاهده فایلها نیست.

 

برای اطلاعات بیشتر می توانید مقاله انگلیسی را مطالعه کنید


 

نظرات (0)
برای نمایش آواتار خود در این وبلاگ در سایت Gravatar.com ثبت نام کنید. (راهنما)

نام :
ایمیل :
وب/وبلاگ :
ایمیل شما بعد از ثبت نمایش داده نخواهد شد

دانلود آهنگ جدید