Запрещено проникновение! Восемь основных трюков с .htaccess для WordPress

Запрещено проникновение! Восемь основных трюков с .htaccess для WordPress
Файл .htaccess — это мощный инструмент настройки веб-серверов или пакетов веб-хостинга, который всегда следует использовать при самостоятельном размещении WordPress. Файл можно найти в корневом каталоге установки WordPress (где находятся папки wp-content, wp-admin и т. д.). В этой статье мы объясним основные настройки файлов для более безопасного и лучшего WordPress, помимо настройки его собственных файлов конфигурации.

колючая проволока-438185_640

Подготовка .htaccess

Прежде всего, найдите файл . На следующем снимке экрана показано его расположение.

htaccess

Очень важно сделать резервную копию .htaccess, прежде чем вносить какие-либо изменения.

Просто скопируйте файл в новую/другую папку. Характеристика Mac OS X: Mac считает все файлы с начальной точкой в ​​имени системными файлами, включая .htaccess. Если вы перетащите такой файл на рабочий стол, он будет скрыт. Вы можете использовать небольшой виджет панели инструментов «Скрытые файлы», чтобы показывать и скрывать скрытые файлы. Виджет отлично работает как с Yosemite, так и со старыми версиями.

Обновляйте браузер после каждой модификации .htaccess, чтобы убедиться, что ваш сайт по-прежнему работает. Файлы .htaccess очень деликатны. Всего один неверный параметр может разрушить ваше присутствие в Интернете. Если это произойдет с вами, загрузите файл резервной копии. Обычно это должно решить проблему.

Позвольте им начать работу с фрагментами кода

Добавьте следующие фрагменты кода в конец файла .htaccess.

1. Запретить доступ к .htaccess извне

Чтобы защитить важный файл управления сервером .htaccess от внешних атак, мы ограничим доступ к (S)FTP.

1
2
3
4
5
# Deny access to .htaccess and .htpasswd if in use
FilesMatch "(.htaccess)">
  Order deny,allow
  Deny from all
FilesMatch>

2. Предотвратите хотлинкинг изображений

Настоящей проблемой может стать так называемый хотлинкинг изображений. Хотлинкинг означает, что люди даже не удосуживаются загрузить изображения с вашего веб-сайта, чтобы впоследствии связать их со своей страницы. Вместо этого просто укажите путь к вашему изображению и вызовите их с вашего сайта на свои страницы, что может снизить производительность и сократить необходимую пропускную способность. С помощью следующего кода вы можете легко предотвратить внешние ссылки.

Замените «yourwebsite.com» на адрес вашего сайта. В последней строке указан путь к изображению, которое появляется вместо связанного изображения. Вы можете заменить его любым другим изображением. Некоторые действительно неприятные вещи можно сделать таким образом 😉

1
2
3
4
5
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www.)?yourwebsite.com [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www.)?yourwebsite.com [NC]
RewriteRule .(jpg|jpeg|png|gif)$ http://i.imgur.com/g7ptdBB.png [NC,R,L]

Имейте в виду, что если у вас есть внешний поставщик фида, такой как Feedburner, вы можете не увидеть никаких изображений в фиде.

3. Активируйте кеширование браузера

Вряд ли какой-либо другой метод настройки позволяет добиться таких же хороших результатов, как этот, с минимальными усилиями. Многие большие файлы вашего сайта практически никогда не меняются. Поэтому рекомендуется хранить их в кеше браузера. Кэшированные файлы, такие как CSS или JavaScript, загружаются быстрее, поскольку их нужно загрузить только один раз во время первого посещения. Если ваш посетитель снова возвращается на сайт (или на любой другой сайт в первый раз), браузеру не нужно перезагружать эти файлы, что повышает производительность загрузки сайта.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
## EXPIRES 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 text/html "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 1 month"
IfModule>
## EXPIRES CACHING ##

4. Избавьтесь от IP-адресов навсегда

Вы можете захотеть удалить определенные IP-адреса, будь то из-за того, что кто-то пытался взломать учетную запись администратора или из-за того, что кто-то оставляет вредоносные (спамовые) комментарии. Если вы знаете его IP-адрес, используйте следующий код, чтобы изгнать этого человека навсегда, или, по крайней мере, его IP-адрес, или, по крайней мере, его IP-адрес, который вы знаете ;-).

1
2
3
4
5
6
Limit GET POST>
order allow,deny
deny from 123.456.78.9
deny from 987.654.32.1
allow from all
Limit>

Пожалуйста, имейте в виду, что вам нужно заменить IP-адреса в коде.

5. Блокировать включение только файлов

Есть некоторые действительно важные файлы, которые никогда не должны быть доступны из-за пределов WordPress. Защитите свои файлы с помощью следующего кода:

1
2
3
4
5
6
7
8
9
10
# Block the include-only 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>

Имейте в виду, что этот код не работает с многосайтовой установкой WordPress.

6. Защитите папку Wp-content

Папка wp-content — самая важная папка WordPress, так как она содержит ваши темы, плагины, изображения, кешированные файлы и т. д. Это делает ее главной целью для хакеров, поэтому она должна быть хорошо защищена.

Создайте отдельный файл .htaccess, добавьте следующий код и загрузите файл в папку wp-content (www.yourwebsite/wpcontent/).

1
2
3
4
5
Order deny,allow
 Deny from all
 Files ~ ".(xml|css|jpe?g|png|gif|js)$">
 Allow from all
 Files>

7. Отключить интерфейс XML-RPC

С интерфейсом XML-RPC вы можете управлять WordPress с помощью внешних программ и публиковать статьи или редактировать комментарии. К ним относятся мобильные приложения для iOS, Android и др., а также Windows LiveWriter и другое программное обеспечение. Интерфейс также может быть использован для DDoS-атак, которые могут закрыть ваш сайт. Вы должны отключить интерфейс короткой записью в .htaccess:

1
2
3
4
Files xmlrpc.php>
  Order Deny,Allow
  Deny from all
Files>

Используйте приведенный выше код только в том случае, если на вашем веб-сайте нет функции блога, потому что обратные ссылки также не будут иметь доступа. Если у вас есть блог или вы хотите использовать WordPress с мобильными приложениями, используйте следующий код для защиты интерфейса:

1
2
3
4
5
6
7
8
9
10
11
12
IfModule mod_setenvif.c>
  Files xmlrpc.php>
    BrowserMatch "Poster" allowed
    BrowserMatch "WordPress" allowed
    BrowserMatch "Windows Live Writer" allowed
    BrowserMatch "wp-iphone" allowed
    BrowserMatch "wp-android" allowed
    Order Deny,Allow
    Deny from All
    Allow from env=allowed
  Files>
IfModule>

В этом примере разблокированы следующие клиенты (сверху вниз):

  • Плакат
  • Блоги WordPress
  • Средство записи Windows Live
  • WordPress для iOS
  • WordPress для Android

Удалите клиентов, которые вам не нужны. Вы также можете добавить новые пользовательские агенты и разблокировать их.

Источник: Сергей Мюллер — Защита XML-RPC-интерфейса WordPress с помощью .htaccess

8. PHP — Блокировать отчеты об ошибках

Это очень важный момент. Когда PHP отправляет отчет об ошибке, путь к файлу становится видимым. Сергей Мюллерс описывает это следующим образом:

«В блогах WordPress довольно легко (косвенно) создайте ошибку PHP, чтобы получить отчет об ошибке и путь, не будучи администратором или экспертом. Вызов определенных файлов ядра или плагинов WordPress в адресной строке браузера приводит к фатальным ошибкам PHP (поскольку отсутствуют необходимые и упомянутые функции WordPress). Если настройки сервера или PHP позволяют отображать ошибки, они появятся в браузере. Вряд ли кто-то может расшифровать отчеты об ошибках, но они являются ценной информацией для хакеров, которые могут найти дыры и использовать их в полной мере».

Решите эту проблему простым добавлением в файл .htaccess:

1
php_flag display_errors Off

Последнее, не менее важное

Вам также следует заблокировать некоторые важные файлы от доступа извне по той простой причине, что доступ к этим файлам нужен только вам. Последний фрагмент кода защищает ваш веб-сайт от эксплойтов URL — атак на основе URL. Я использую этот код для всех своих сайтов.

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
34
35
36
37
38
39
40
41
42
43
# ----------------------------------------------------------------------
# Important safety settings
# ----------------------------------------------------------------------	

#Block important files from outside access
files install.php>
Order allow,deny
Deny from all
files>

files wp-config.php>
Order allow,deny
Deny from all
files>

# PROTECT readme.html
files readme.html>
 Order Allow,Deny
 Deny from all
 Satisfy all
Files>

# PROTECT readme.html for DE edition
Files readme.html>
 Order Allow,Deny
 Deny from all
 Satisfy all
Files>

files error_log>
Order allow,deny
Deny from all
files>

# Block URL based exploits 
RedirectMatch 403 [
IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
# Ban double slashes in all URLs 
RewriteCond %{THE_REQUEST} ^[A-Z]+ /(([^/ ]+/)*)/+([^ ]*)
RewriteRule ^ /%1%3 [L,R=301]
IfModule>

Заключение

С помощью этих фрагментов кода вам потребуется всего несколько минут, чтобы сделать ваш сайт WordPress более безопасным и быстрым. Хотя хакерам будет сложно атаковать ваш веб-сайт, ваши читатели могут наслаждаться более высокой производительностью загрузки; благодаря активному кэшированию браузера.

Ссылки по теме

(дпе)