PHP обработчик —> Apache
Для одиночной установки:
1 2 3 4 5 6 7 8 |
# BEGIN WordPress RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] # END WordPress |
1. Защита важных файлов
Запретите доступ к файлам wp-config.php, htaccess, php.ini и логам ошибок. Добавьте это правило, чтобы запретить доступ к этим файлам:
1 2 3 4 |
<FilesMatch "^.*(error_log|wp-config\.php|php.ini|\.[hH][tT][aApP].*)$"> Order deny,allow Deny from all </FilesMatch> |
Если вы хотите запретить доступ ко всем файлам .htaccess на сайте, добавьте этот код:
1 2 3 4 5 6 |
# запретить доступ ко всем .htaccess файлам <files ~ "^.*\.([Hh][Tt][Aa])"> order allow,deny deny from all satisfy all </files> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
# ограничение доступа к ПУ только ручным вводом адреса ErrorDocument 401 /путь-к-вашему-сайту/index.php?error=404 ErrorDocument 403 /путь-к-вашему-сайту/index.php?error=404 <IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{REQUEST_METHOD} POST RewriteCond %{HTTP_REFERER} !^http://(.*)?ваш-сайт.ru [NC] RewriteCond %{REQUEST_URI} ^(.*)?wp-login\.php(.*)$ [OR] RewriteCond %{REQUEST_URI} ^(.*)?wp-admin$ RewriteRule ^(.*)$ - [F] </IfModule> #Включает отслеживание сим-ссылок Options +FollowSymLinks #Запускает url_rewriting RewriteEngine On #Блокирует все ссылки, содержащие <script> RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC,OR] #Блокирует все скрипты, которые пытаются изменить переменные PHP Globals: RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR] #Блокирует все скрипты, которые пытаются изменить переменную _REQUEST: RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2}) #Перенаправляет все подобные попытки на страницу с ошибкой 403 - запрещено RewriteRule ^(.*)$ /403.html [F,L] #Disable site folders browsing Options All -Indexes |
2. Запретите доступ к директориям сайта
По умолчанию сервер Apache разрешает доступ к директориям сайта. То есть любой посетитель сайта может открыть любую папку и запустить любой файл внутри этой папки, если введет в браузере нужный адрес, например, ваш-сайт.ru/wp-content/uploads/. Если эти папки будут доступны для просмотра, злоумышленник может заразить какие-то файлы на вашем сервере. Чтобы запретить доступ к папкам, добавьте это правило в .htaccess:
1 2 |
#Disable site folders browsing Options All -Indexes |
3. Доступ только к разрешенным типам файлов
В папке wp-content находятся темы, плагины и медиа контент. Кроме доступа к директориям сайта, можно разрешить доступ только к некоторым типам файлов, например, css, js, jpg, pdf, doc и так далее. Для этого создайте в папке wp-content новый файл .htaccess и добавьте это правило:
1 2 3 4 5 6 |
# запрет доступа ко всем файлам, кроме: Order deny,allow Deny from all <Files ~ ".(css|js|xml|jpe?g|png|gif|pdf|zip|rar|docx|rtf|odf)$"> Allow from all </Files> |
4. Запретите доступ с определенных IP
Вы можете полностью запретить доступ к сайту с подозрительных или вредоносных ip:
1 2 3 4 5 |
# Block IP addresses. order allow,deny deny from 164.186.15.0/24 deny from 124.153.34.144 allow from all |
5. Запретите доступ к PHP файлам
Закройте доступ к PHP файлам темы и плагинов. Могут внедрить вредоносный код и заразить сайт. Заблокировать доступ неавторизованных пользователей к php файлам темы и плагинов:
1 2 3 4 5 6 7 |
# запретить доступ к PHP файлам 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] |
6. Запретите исполнение PHP файлов
Если хакеру удастся загрузить вредоносные файлы на сервер, он не сможет их запустить, потому что это правило запрещает их исполнение. Но вам все равно нужно будет найти и удалить инфицированные файлы. Чем больше препятствий взломщику вы установите, тем ниже вероятность что ваш сайт взломают. Обычно хакеры загружают бэкдоры в папку /wp-content/uploads/, поэтому заблокируйте исполнение всех PHP файлов в этой папке:
1 2 3 4 5 6 7 |
# Disallow php execution in Uploads <Directory "/var/www/wp-content/uploads/"> <Files "*.php"> Order Deny,Allow Deny from All </Files> </Directory> |
7. Запрет загрузки изображений с сайта на сторонних серверах
1 2 3 4 5 6 |
Options +FollowSymlinks #Запрещает кражу картинок RewriteEngine On RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^http://(www.)?mysite.ru/ [nc] RewriteRule .*.(gif|jpg|png)$ http://mysite.ru/images/stop_stealing.gif[nc] |
http://mysite.ru/images/stop_stealing.gif -будет транлироваться на внешних серверах.
8. Запрет доступа к конкретному файлу
Запрет доступа ко всем файлам с конкретным расширением
Если необходимо запретить доступ ко всем файлам с определенным расширением (типом), то применяйте следующий набор команд:
1 2 3 |
<Files "\.(txt)$"> Order Deny,Allow Deny from all |
Источники:
https://techbear.ru/redaktirovanie-fayla-htaccess-dlya-bezopasnosti-wordpress/