• پایان فعالیت بخشهای انجمن: امکان ایجاد موضوع یا نوشته جدید برای عموم کاربران غیرفعال شده است

بهینه سازی htaccess برای امنیت وردپرس

modirantarah

کاربر تازه وارد
تاریخ عضویت
22 آگوست 2014
نوشته‌ها
47
لایک‌ها
11
محل سکونت
تهران
htaccess_wp_security_banner.jpg
امنیت وردپرس یکی از عوامل نفوذ پذیر و ضعیف برای وب مستر های تازه کار به شمار میرود.
پس از نصب و پیکربندی وردپرس ، اگر نظارت و ایمن سازی صورت نگیرد ، امنیت وردپرس به خطر افتاده و ممکن است خسارات جبران ناپذیری را به جای بگذارد.
در اغلب مقالات آموزشی در مورد نصب و پیکربندی وردپرس ، روش نصب 5 دقیقه ای و سریع را برای این کار شرح میدهند ، اما به طور معمول به برخی از فاکتورهای امنیتی مهم اشاره نمیشود.

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

فایل htaccess. چیست ؟
فایل htaccess یک پیکربندی اختیاری و شخصی سازی شده برای تنظیمات وب سرور Apache می باشد ، که در دایرکتوری و فایل های مختلف وب سایت تغییراتی را اعمال میکند ، شما میتوانید تنظیمات گسترده ایی را از طری فایل htaccess اعمال نمایید ، مانند : دسترسی ندادن به فایل یا پوشه خاص (دسترسی مستقیم) ، بلوکه کردن IP آدرس ، ایجاد پسورد برای دایرکتوری مشخص و … طبق روال پیشین فایل htaccess در دایرکتوری اصلی نصب وردپرس قرار دارد و بطور پیش فرض دارای تنظیمات مربوط به پیوند های یکتا یا Permalinks می باشد.

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

روبوت های نادرست را بلوکه کنیم

بلوکه کردن روبوت ها توسط htaccess

یکی از ویژگی های بارز فایل htaccess بلوکه کردن IP آدرس های مختلف برای دسترسی به وب سایت شما می باشد ، این امر برای بالا بردن امنیت وردپرس و یا وب سایت شما ، زمانی که IP آدرس های اسپمر را میشناسید ، بسیار کارآمد خواهد بود.
کد:
# Block one or more IP address. Replace IP_ADDRESS_* with the IP you want to block
<Limit GET POST>
order allow,deny
deny from IP_ADDRESS_1
deny from IP_ADDRESS_2
allow from all
</Limit>
به جای مقدار IP_ADDRESS_1 شما میتوانید IP اسپمر یا کاربر خاصی را برای ممنوعیت در دسترسی به وب سایت خود وارد نمایید ، همچنین شما میتوانید رنج وسیعی از IP آدرس ها را اینجا وارد کنید ، دسترسی کاربران به هنگام درخواست توسط وب سرور مسدود خواهد شد.

غیرفعال کردن مشاهده دایرکتوری

غیرفعال کردن مشاهده دایرکتوری توسط htaccess

یکی از راه های قابل نفوذ در وب سایت وردپرس ، حفره امنیتی مشاهده دایرکتوری وب سایت می باشد ، بطور پیش فرض وب سرورApache اجازه دسترسی از طریق دایرکتوری را به کاربران میدهد ، یعنی دسترسی به تمامی فایل ها و پوشه ها در پوشه root و یاhome (اصلی) وب سایت ، برای کاربران آزاد می باشد ، بدیهی است که هیچ وب مستری نباید این اجازه را به کاربران خود بدهد تا به فایل های موجود روی هاست نظیر پلاگین ها ، تصاویر ، فایل های چند رسانه ایی و … دسترسی داشته باشند.

اگر بطور کاملا تصادفی من 10 وب سایت وردپرسی انتخاب کنم ، شما مشاهده خواهید کرد که حداقل 6 مورد از این انتخاب ها دارای حفره دسترسی به دایرکتوری می باشند و این موجب به خطر افتادن امنیت وردپرس و یا وب سایت شما خواهد شد ، مشاهده دایرکتوری ها در فایل ها wp-content/uploads که محل ذخیره سازی فایل های آپلود شده توسط مدیر وب سایت می باشد بسیار خطرناک است و همچنین این حفره باعث میشود که کاربران تمامی محتوای پوشه هایی که دارای فایل index نمی باشند را به راحتی مشاهده نمایند. در حقیقت تصویری که در بالا مشاهده میکنید ، متعلق به یکی از وب سایت های وردپرسی می باشد. برای حل این مشکل دستورات زیر را به فایل htaccess اضافه نمایید.
کد:
# Disable directory browsing
Options All -Indexes
فقط به فایل های مجاز از پوشه wp-content اجازه دسترسی دهیم

اجازه دسترسی به فایل های مشخص از پوشه wp-content

همانطور که وب مسترها میدونند پوشه wp-content یکی از کلیدی ترین و مهمترین پوشه های وردپرس می باشد ، چراکه تمامی فایل های مربوط به پوسته ها ، فایل های چند رسانه ایی ، تصاویر و … آپلود شده توسط مدیر وب سایت در این ناحیه ذخیره سازی میشود ، و مطمئنا هیچ وب مستری علاقه ای به دسترسی کاربران به این فایل ها را ندارد ، به جای ایجاد محدودیت در دسترسی به دایرکتوری یا کل پوشه موجود در هاست شما میتوانید به راحتی فایل هایی با فرمت های مشخص را محدود نمایید ، شما میتوانید فایل هایی با فرمت های JPG, PDF, DOCX, CSS, JS را برای دسترسی عموم بازدیدکنندگان و موتورهای جستجو آزاد گذاشته و مابقی فایل ها را بلوکه نمایید ، برای انجام این کار دستورات زیر را به فایل htaccess خود اضافه نمایید.
کد:
# Disable access to all file types except the following
Order deny,allow
Deny from all
<Files ~ ".(xml|css|js|jpe?g|png|gif|pdf|docx|rtf|odf|zip|rar)$">
Allow from all
</Files>
شما می بایستی یک فایل htaccess جدید در ریشه پوشه wp-content بسازید و دستورات زیر را در آن فایل قرار دهید ، چراکه اگر این دستورات را در فایل htaccess ربشه وب سایت root قرار دهید ، منجر به تداخل کارکرد وب سایت شما خواهد شد ، همچنین شما میتوانید فرمت های مختلفی را نیز مانند rar اضافه کنید.

اعمال محدودیت دسترسی به wp-includes

ایجاد عدم دسترسی به wp-includes با htaccess

پوشه wp-includes حاوی هسته و تمامی فایل های مورد نیاز برای پیکربندی و بارگزاری وردپرس شما می باشد ، بنابراین به دلیل اهمیت بالا این پوشه هیچ بازدید کننده ایی نباید به این پوشه دسترسی داشته باشد ، شما میتوانید دسترسی به این پوشه را با کد های زیر ممنوع نمایید.

کد:
# Block wp-includes folder and files
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^wp-admin/includes/ - [F,L]
RewriteRule !^wp-includes/ - [S=3]
RewriteRule ^wp-includes/[^/]+\.php$ - [F,L]
RewriteRule ^wp-includes/js/tinymce/langs/.+\.php - [F,L]
RewriteRule ^wp-includes/theme-compat/ - [F,L]
</IfModule>

اجازه دسترسی به IP های مشخص برای پوشه wp-admin

اجازه دسترسی به IP های مشخص برای پوشه wp-admin

پوشه wp-admin دارای داشبورد مدیریتی وردپرس شما می باشد ، در بسیاری از مواقع کاربران شما دسترسی به داشبورد وردپرس را نخواهند داشت ، مگر در صورتیکه شما برای بازدیدکنندگان امکان ثبت نام در وب سایت را فعال کرده باشید ، یکی از راه های بالا بردن امنیت وردپرس اعمال محدودیت دسترسی به پوشه wp-admin توسط IP آدرس های از قبل مشخص شده هست ، با قراردادن IP آدرس خود در کد زیر میتوانید محدودیت دسترسی به پوشه wp-admin را اعمال نمایید.

کد:
# Limit logins and admin by IP
<Limit GET POST PUT>
order deny,allow
deny from all
allow from 302.143.54.102
allow from IP_ADDRESS_2
</Limit>
این نکته را نیز در نظر بگیرید که برای اعمال محدودیت دسترسی ، شما می باسیتی یک فایل htaccess جدید در پوشه wp-admin ایجاد نموده و کد های زیر را در داخل آن قرار دهید.

محفاظت از فایل های wp-config و htaccess از دسترسی عموم کاربران

محافظت از فایل های wp-config و htaccess

فایل wp-config.php دارای تمامی تنظیمات مربوط به پیکربندی و بانک اطلاعاتی وردپرس شما می باشد ، تحت هیچ شرایطی نباید سایر بازدیدکنندگان به این فایل دسترسی داشته باشند ، چون در صورت دسترسی وب سایت شما هک خواهد شد !
icon_twisted.gif
و همچنین به دلیل اعمال برخی تنظیمات در حوزه امنیت وردپرس بازدیدکنندگان نباسیتی به فایل htaccess نیز دسترسی داشته باشند ، شما میتوانید با دستورات زیر مانع دسترسی به فایل wp-config.php شوید.

کد:
# Deny access to wp-config.php file
<files wp-config.php>
order allow,deny
deny from all
</files>
برای اعمال عدم دسترسی به فایل htaccess

کد:
# Deny access to all .htaccess files
<files ~ "^.*\.([Hh][Tt][Aa])">
order allow,deny
deny from all
satisfy all
</files>
محافظت از تصاویر در مقابل زالو ها

محفاظت از تصاویر وب سایت در مقابل زالو ها

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

کد:
# Prevent image hotlinking script. Replace last URL with any image link you want.
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yourwebsite.com [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yourotherwebsite.com [NC]
RewriteRule \.(jpg|jpeg|png|gif)$ http://i.imgur.com/MlQAH71.jpg [NC,R,L]

فعال سازی کش گیری وب سایت در مرورگرها


فعال سازی کش گیری وب سایت در مرورگرها

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

کد:
# Setup browser caching
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpg "access 1 year"
ExpiresByType image/jpeg "access 1 year"
ExpiresByType image/gif "access 1 year"
ExpiresByType image/png "access 1 year"
ExpiresByType text/css "access 1 month"
ExpiresByType application/pdf "access 1 month"
ExpiresByType text/x-javascript "access 1 month"
ExpiresByType application/x-shockwave-flash "access 1 month"
ExpiresByType image/x-icon "access 1 year"
ExpiresDefault "access 2 days"
</IfModule>
ریدایرکت یا ارجاع به صفحه ، وب سایت در حال تعمیر است

ریدایرکت یا ارجاع به صفحه ، وب سایت در حال تعمیر است

زمانیکه مشغول ایجاد برخی تغییرات در محتوا و یا ساختار وب سایت خود هستید ، فعال سازی برگه ، وب سایت در دست تعمیر است ، یا وب سایت در حال بروزرسانی است ، یک عمل کاربر پسندانه است ، برای این کار یک فایل ساده با محتوای دلخواه و تحت عنوان maintenance.html ساخته و در ریشه root دایرکتوری وب سایت خود قرار دهید ، و دستورات زیر را در داخل فایلhtaccess خود قرار دهید ، در نظر داشته باشید ، پس از اتمام بروز رسانی و یا تغییرات برای بارگذاری مجدد و صحیح وب سایت خود ، می بایستی این دستورات را از فایل htaccess کامنت کرده و یا حذف نمایید ، شما میتوانید این کد ها را با قراردادن علامت# در ابتدای هر دستور کامنت نمایید.
کد:
# Redirect all traffic to maintenance.html file
RewriteEngine on
RewriteCond %{REQUEST_URI} !/maintenance.html$
RewriteCond %{REMOTE_ADDR} !^123\.123\.123\.123
RewriteRule $ /maintenance.html [R=302,L]

صفحات خطا را شخصی سازی نمایید

صفحات خطا را شخصی سازی نمایید

یکی دیگر از قابلیت های بارز و کاربر پسند User Friendly فایل htaccess ایجاد صفحات خطای هاست مانند 404 ، 500 ،403 و … (برای آشنایی با کدهای خطا هاست کلیک کنید) استفاده از فایل htaccess می باشد ، برای این کار ابتدا شما می بایستی صفحه دلخواه و شخصی سازی شده خود را برای هر پیام خطا نظیر 404 بسازید و سپس صفحه مورد نظر را دایرکتوری rootوردپرس خود آپلود نمایید ، سپس میتوانید با مشخص کردن کدهای خطا و صفحات مربوطه در هنگام بروز خطاهای ذکر شده در هاست صفحات شخصی سازی شده توسط شما بارگذاری گردند.
کد:
# Custom error page for error 403, 404 and 500
ErrorDocument 404 /error.html
ErrorDocument 403 / error.html
ErrorDocument 500 / error.html
در پایان
در این مقاله ما ترفند و دستوراتی را برای بالا بردن امنیت وردپرس و یا وب سایت خود از طریق فایل htaccess را آموختیم ، در پایان نیز مجدد یادآوری میکنم تا قبل از اعمال هر تغییری در فایل htaccess فعلی وب سایت خود ، نسخه بک آپ و یا پشتیبان تهیه نمایید و این مطلب را نیز در نظر داشته باشید که هیچ سیستمی کاملا امن نیست.
icon_wink.gif
 
بالا