راهنمای جامع ویرایش فایل httaccess. به منظور افزایش امنیت سایت

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

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

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

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

فایل htaccess. در ریشه سایت شما قرار دارد. پسوند htaccess به این معنا است که این فایل در حالت پیش فرض مخفی است و شما وقتی فایلها را در کامپیوتر خود مرور می کنید نمی توانید آن را ببنید مگر اینکه show hidden files را در کامپیوتر خود فعال کرده باشید.

در وردپرس این فایل به منظور ایجاد ساختار url زیبا مورد استفاده قرار می گیرد و اگر ویژگی permalinks یا همان ساختار url فعال باشد به صورت خودکار ساخته می شود.شما می توانید کارهای بیشماری با استفاده از این فایل انجام دهید نظیر ریدایرکت ۳۰۱ یا ایجاد قوانین بلاک برای بازدید کننده های غیرمجاز.

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

ساخت فایل htaccess.

اگر در ریشه سایت، فایل مذکور وجود ندارد، یک فایل خالی به همین نام بسازید و در هاست خود آپلود کنید. اگر سرور هاست به شما اجازه چنین کاری را نداد، یک فایل به نام htaccess.txt بسازید و سپس نام آنرا به htaccess. تغییر دهید.

ذیلا کدهای پیش فرضی که در فایل htaccess. وجود دارند را مشاهده می کنید.

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

برای سایتها و شبکهای چندگانه که در زیردایرکتوری ها نصب شده اند به جای کد فوق، می توانید کد زیر را در فایل درج کنید:

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
# add a trailing slash to /wp-admin
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]
RewriteRule . index.php [L]

اگر مولتی سایت شما زیردامنه دارد به جای کد فوق از کد زیر استفاده کنید:

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
# add a trailing slash to /wp-admin
RewriteRule ^wp-admin$ wp-admin/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^(wp-(content|admin|includes).*) $1 [L]
RewriteRule ^(.*\.php)$ $1 [L]
RewriteRule . index.php [L]

زمانی که دارید این فایل را می سازید باید توجه داشته باشید که سطح دسترسی را روی ۶۴۴ قرار دهید تا فایل از حمله های بالقوه در امان باشد.

برای ویرایش فایل htaccess. هم می توانید مستقیما از محیط کاربری سی پنل یا دایرکت ادمین استفاده کنید یا اینکه از طریق ftp و مثلا با استفاده از نرم افزار filezilla .

۱. محافظت از فایلهای مهم

یکی از بهترین کارها محافظت از این فایل به همراه محافظت از گزارشات خطا، فایل wp-config.php و فایل php.ini است. همین که این تغییرات را اعمال نمودید، تلاش برای دسترسی به این فایلها توسط نفوذگران، ناکام خواهد ماند.

<FilesMatch "^.*(error_log|wp-config\.php|php.ini|\.[hH][tT][aApP].*)$">
Order deny,allow
Deny from all
</FilesMatch>

فایلهایتان را بررسی کنید تا ببنید آیا فایل php.ini وجود دارد یا نه. اگر فایلی به نام php5.ini وجود داشت آن را با php.ini جایگزین کنید.

۲. محدودیت دسترسی به ادمین

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

ErrorDocument 401 /khalayegh.com/index.php?error=404
ErrorDocument 403 /khalayegh.com/index.php?error=404
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_URI} ^(.*)?wp-login\.php(.*)$ [OR]
RewriteCond %{REQUEST_URI} ^(.*)?wp-admin$
RewriteCond %{REMOTE_ADDR} !^IP Address One$
RewriteCond %{REMOTE_ADDR} !^IP Address Two$
RewriteCond %{REMOTE_ADDR} !^IP Address Three$
RewriteRule ^(.*)$ - [R=403,L]
</IfModule>

دو خط اول کد بالا،آی پی های غیرمجاز را به صفحه ۴۰۴ ریدایرکت می کند.این امر مانع ایجاد چرخه مداوم ریدایرکت می شود و به همین علت سایت شما شبیه به یک سایت مشکل دار و خراب نخواهد شد. فقط اطمینان حاصل کنید که /khalayegh.com/ را با آدرس سایت خود جایگزین نموده اید.(آدرس صفحه ۴۰۴ خود را ابتدا بررسی نموده و سپس در این کد جایگذاری کنید.)

مطلب مرتبط:  14 نکته کلیدی برای حفاظت از پنل مدیریتی وردپرس

همچنین IP Address One, IP Address Two and IP Address Three را نیز با آی پی هایی که مد نظر شما است جایگزین نمایید.اگر می خواهید که فقط یک آی پی آدرس را اضافه کنید، خطوط ۹ و ۱۰ را پاک نمایید. ضمنا برای افزودن بیش از سه آی پی می توانید خط ۱۰ را تا بی نهایت بار کپی نموده و در خط بعدی درج کرده و آی پی را جایگزین نمایید.

اگر شما یا هر یک از اعضای سایت، آی پی داینامیک و متغیر دارید یا اینکه شبکه چند سایته و چند کاربر در شبکه مولتی سایت خود دارید می توانید به وسیله کد زیر برای هر یک دسترسی ایجاد کنید.

ErrorDocument 401 /khalayegh.com/index.php?error=404
ErrorDocument 403 /khalayegh.com/index.php?error=404
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_METHOD} POST
RewriteCond %{HTTP_REFERER} !^http://(.*)?khalayegh.com [NC]
RewriteCond %{REQUEST_URI} ^(.*)?wp-login\.php(.*)$ [OR]
RewriteCond %{REQUEST_URI} ^(.*)?wp-admin$
RewriteRule ^(.*)$ - [F]
</IfModule>

همانند مورد قبل، مسیر صفحه ۴۰۴ را اصلاح نمایید و khalayegh.com را با آدرس سایت خود جایگزین کنید.

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

با اینکه این کدها مانع تلاش هکر هایی که به صورت دستی قصد حدس زدن اطلاعات ورود شما را دارند نمی شود اما در اغلب موارد تفاوتهای آشکار و قابل تامل و البته بسیار کمتری را در حملات بروت فورث شاهد خواهد بود.

۳. جلوگیری از مرور دایرکتوری

اگر بازدیدکنندگان سایت به دامنه شما وارد شوند و آدرس یک دایرکتوری را در مرورگر تایپ کنند، این امکان را دارند تا لیستی از دایرکتوری های سایت شما را از طریق فرونت اند سایت ببینند. به علت ماهیت و ساختاری که وردپرس دارد هیچ چیزی در حالت عادی نمی تواند مانع مشاهده آدرسی مانند khalayegh.com/wp-content-uploads/ توسط کاربران و نمایش فهرست فایلها و پوشه های موجود در آن گردد.

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

مخفی کردن یک کد پشتیبان در زیر بالشتان، شبیه به این است که آن را در مکانی هوشمندانه و مرموز مخفی کنید ولی کاغذی روی در بچسبانید و روی آن کد پشتیبان خود را درج نمایید تا همه بتوانند به آن کد مخفی دسترسی داشته باشند.

اضافه نمودن این تکه کد به فایل htaccess. از مرور کردن دایرکتوری ها ممانعت به عمل می آورد و کار را برای هکر ها دشوار می کند.

Options All -Indexes

۴. محدودیت دسترسی به فایلهای php

فراهم آوردن دسترسی مستقیم به فایلهای php اشتباه بزرگی است.هر چه که فرآیند دستیابی به فایلهای مهمتان را برای هکر ها دشوارتر کنید بهتر است و چون فایلهای php می توانند به منظور تزریق کدهای مخرب و آلوده سازی سایت شما مورد استفاده قرار گیرند، لذا بی نهایت مهم است که از فایلهای php خود محافظت به عمل آورید.

می توانید این تکه کدها را به منظور ممانعت از دسترسی مستقیم کاربران غیرمجاز به فایلهای php پلاگین ها و پوسته های نصب شده روی سایتتان به فایل htaccess. اضافه کنید.

RewriteCond %{REQUEST_URI} !^/wp-content/plugins/file/to/exclude\.php
RewriteCond %{REQUEST_URI} !^/wp-content/plugins/directory/to/exclude/
RewriteRule wp-content/plugins/(.*\.php)$ - [R=404,L]
RewriteCond %{REQUEST_URI} !^/wp-content/themes/file/to/exclude\.php
RewriteCond %{REQUEST_URI} !^/wp-content/themes/directory/to/exclude/
RewriteRule wp-content/themes/(.*\.php)$ - [R=404,L]

۵. محدودیت در اجرای فایلهای php

اگر کاری کنید تا فایلهای php ناشناخته اجرا نشوند، هکرها با آپلود کردن فایلهای php مخرب خود در سایت شما به هدف هک کردن سایت شما دست نمی یابند.

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

مطلب مرتبط:  مختصر و مفید با امنیت وردپرس

چون بسیاری از هکرها در پوشه /wp-content/uploads/ فایل دسترسی ساز خود را ایجاد و آپلود می کنند، بلاک کردن اجرای فایلهای php در این پوشه می تواند بسیار کمک کننده باشد.

تکه کد زیر را به منظور محدودیت در اجرای فایل های php در پوشه آپلودها، به فایل htaccess. خود بیفزایید.

<Directory "/var/www/wp-content/uploads/">
<Files "*.php">
Order Deny,Allow
Deny from All
</Files>
</Directory>

۶. حفاظت از سایت در برابر تزریق اسکریپتها

شما نقشی جدی در امنیت سایت خود دارید. پس چرا کاری نکنید تا از تزریق کدهای مخرب به فایلهای php سایتتان جلوگیری شود؟

بسیاری از هکر ها سعی می کنند تا متغیرهای GLOBALS و REQUESTــ را در تلاش برای تزریق کد مخرب تغییر دهند. می توانید با افزودن تکه کد زیر به فایل 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]

۷. امن سازی دایرکتوری wp-includes

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

کد زیر را به منظور ممانعت از دسترسی هکرها به پوشه wp-includes بیفزایید.

<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>

۸. جلوگیری از فهرست شدن یوزر نیم ها

وقتی یک بازدید کننده در مرورگر خود آدرس khalayegh.com/?author=1 را وارد می کند به صفحه نویسنده سایت با آی دی ۱ هدایت می شود.صفحه نویسنده حاوی یوزرنیم دقیق کاربر با آی دی ۱ است.

بازدید کننده به آسانی می تواند یوزرنیم تمام کاربران سایتی که مطلبی در سایت نوشته و منتشر کرده اند را به این طریق به دست بیاورد. این فرآیند username enumeration نام دارد.

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

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

به منظور جلوگیری از فهرست شدن یوزرنیم، کد زیر را اضافه کنید.

RewriteCond %{QUERY_STRING} author=d
RewriteRule ^ /? [L,R=301]

۹. ssl یک الزام است!

کد زیر باعث می شود تا دسترسی به سایت تنها از طریق ssl امکان پذیر باشد. مقاله فعال سازی ssl را مطالعه کنید تا از روش راه اندازی ssl در سایت خود مطلع گردید.

SSLOptions +StrictRequire
SSLRequireSSL
SSLRequire %{HTTP_HOST} eq "www.khalayegh.com"
ErrorDocument 403 https://www.khalayegh.com

فراموش نکنید که آدرس khalayegh.com را با آدرس سایت خود جایگزین کنید.

۱۰. جلوگیری از هات لینک شدن تصاویر

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

برای اینکه چنین اتفاقی نیفتد کد زیر را به htaccess. اضافه کنید.

RewriteEngine On RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} 
!^https://(www\.)?khalayegh.com/.*$ [NC] RewriteRule \.(gif|jpg)$ 
https://www.khalayegh.com/hotlink.gif [R,L]

khalayegh.com و https را با مشخصات دامنه خودتان جایگزین کنید.

همچنین آدرس https://www.khalayegh.com/hotlink.gif را با آدرس یک تصویر دلخواه که خودتان طراحی کرده اید تا در سایت سارق تصویر به جای تصویری که به سرقت برده است نشان داده شود، جایگزین کنید.

سخن پایانی

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

نصب یک پلاگین امنیتی نظیر Wordfence Security می تواند به میزان زیادی امنیت سایت شما را بهبود بخشد.

آیا موارد ذکر شده در این مقاله را روی فایل htaccess. خود پیاده نمودید؟ چه کدهایی را می توان به این فهرست اضافه نمود؟ با ما به اشتراک بگذارید.

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

مطالب مرتبط