Повышение безопасности сайта на WordPress с помощью файлов конфигурации
Вместо того, чтобы перенагружать сайт на WordPress множеством плагинов для защиты от атак, лучше воспользоваться альтернативным решением. А именно изменением настроек в файлах конфигурации. Достаточно отредактировать или добавить несколько строк в этих файлах, чтобы достичь такого же эффекта, как и от установки плагина.
Рассмотрим способы защиты от вредоносного воздействия на сайт при помощи установки правил в файлах .htaccess и wp-config.php.
Cоздание .htaccess
.htaccess — необходимый файл для любого сайта, в том числе и для WordPress-сайта. Он позволяет ограничить различные сомнительные действия и закрыть доступ к уязвимым файлам и папкам. Если у вас ещё нет файла .htaccess, создайте пустой текстовый файл в корневой папке сайта и поместите в него следующее:
# BEGIN WordPress
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress
И затем сохраните файл. Теперь можно начинать работу с .htaccess. Добавляя новые строки после # END WordPress
, вы сможете задать необходимые настройки сайта. Перед каждым изменением файла .htaccess рекомендуем сохранять его резервную копию, чтобы оперативно восстановить работу сайта при ошибке в редактировании.
Запрет доступа к панели администратора
Чтобы никто другой не мог открыть вашу административную панель, даже получив логин и пароль, добавьте в файл .htaccess эти параметры:
<LIMIT GET>
Order Deny,Allow
Allow from xx.xx.xx.xx
Deny from all
</LIMIT>
Здесь xx.xx.xx.xx
— это тот IP-адрес, с которого разрешён доступ в панель, то есть ваш IP. Вы можете добавить и другие разрешённые адреса, повторяя строку Allow from
. Этот способ подходит только в том случае, если для работы с сайтом используются статические IP-адреса.
Защита от SQL-инъекций
По статистике, при атаках на WordPress-сайты злоумышленники чаще всего проводят внедрение SQL-кода. Защититься от SQL-инъекций помогут следующие строки:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_METHOD} ^(HEAD|TRACE|DELETE|TRACK) [NC]
RewriteRule ^(.*)$ - [F,L]
RewriteCond %{QUERY_STRING} \.\.\/ [NC,OR]
RewriteCond %{QUERY_STRING} boot\.ini [NC,OR]
RewriteCond %{QUERY_STRING} tag\= [NC,OR]
RewriteCond %{QUERY_STRING} ftp\: [NC,OR]
RewriteCond %{QUERY_STRING} http\: [NC,OR]
RewriteCond %{QUERY_STRING} https\: [NC,OR]
RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} mosConfig_[a-zA-Z_]{1,21}(=|%3D) [NC,OR]
RewriteCond %{QUERY_STRING} base64_encode.*\(.*\) [NC,OR]
RewriteCond %{QUERY_STRING} ^.*(\[|\]|\(|\)|<|>|ê|"|;|\?|\*|=$).* [NC,OR]
RewriteCond %{QUERY_STRING} ^.*(%24&x).* [NC,OR]
RewriteCond %{QUERY_STRING} ^.*(%0|%A|%B|%C|%D|%E|%F|127\.0).* [NC,OR]
RewriteCond %{QUERY_STRING} ^.*(globals|encode|localhost|loopback).* [NC,OR]
RewriteCond %{QUERY_STRING} ^.*(request|select|insert|union|declare).* [NC]
RewriteCond %{HTTP_COOKIE} !^.*WordPress_logged_in_.*$
RewriteRule ^(.*)$ - [F,L]
</IfModule>
Защита от межсайтового скриптинга
Попытки совершить XSS-инъекцию вы можете отразить, добавив в .htaccess такой код:
<IfModule mod_rewrite.c>
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]
</IfModule>
Защита от эксплуатирования при DDoS-атаках
Взломщики используют поддерживаемое по умолчанию расширение XML-RPC, чтобы организовывать сети из WordPress-сайтов с целью проведения DDoS-атак. Чтобы уберечь свой сайт от участия в такого рода действиях, укажите в .htaccess эти строки:
<FilesMatch "^(xmlrpc\.php)">
Order Deny,Allow
Allow from xx.xx.xx.xx
Deny from all
</FilesMatch>
Здесь xx.xx.xx.xx
также означает IP-адрес администратора сайта.
Защита от брутфорс-атаки
При подключённых человекопонятных URL злоумышленники легко вычисляют логин владельца сайта. Для этого используется метод полного перебора. Однако следующий код спасёт вас от таких атак:
RewriteCond %{QUERY_STRING} author=d
RewriteRule ^ /? [L,R=301]
Запрет доступа к плагинам и темам
Предотвратите воздействие взломщиков на используемые вами темы и плагины с помощью этих строк в .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]
Запрет доступа к папкам и файлам
Используя эту короткую строку, вы закроете доступ по полному пути к папкам на вашем сервере:
Options –Indexes
А закрыть доступ к любому чувствительному файлу можно, применив эти правила:
<files имя файла>
Order Allow,Deny
Allow from xx.xx.xx.xxx
Deny from all
</files>
Прежде всего, рекомендуется таким образом защитить оба файла конфигурации, сам .htacсess, а также wp-config.php.
Работа с wp-config.php
Так называется главный конфигурационный файл WordPress-сайта. Он создаётся автоматически при установке WordPress и содержит основные настройки, в том числе и относящиеся к безопасности. Как и в случае с .htaccess, перед каждым изменением wp-config.php сохраняйте его резервную копию.
В этом файле содержатся так называемые ключи безопасности и соли. Они помогают защитить конфиденциальную информацию. Строки с ключами и солями выглядят следующим образом:
define('AUTH_KEY', 'wQ/&+1|o|q~Yl^[DBzMnm,|eeJ(nn%$f%d~^R8>m<U|Obe%?pQ ! e}~up#{|4zS');
define('SECURE_AUTH_KEY', 'p+g,]0>bN>OzH[mjbOp|Z- HEdVwe-sGm?] c p]UG:_}d!oOIN4pF8k4vA.hTWa');
define('LOGGED_IN_KEY', 'o(Ne#sv,q!Sr-jY/Z=FnfdG5e,GDY>4$I:2TEj_$+|-#[6E.YqUWm8CJs-2uS1KB');
define('NONCE_KEY', '|[JdrY]{P89GU7.~3?AmTD({1;ZD=S~|99O#pW5)7:/c+#/.E{9|9 =i#I0{5_}6');
define('AUTH_SALT', 'QZX$QMusYwMw@ZD^0Ici-lU@4]?VN>ct~cE1hznPyxbBn>!,WyqP+D)lu@7,SI|h');
define('SECURE_AUTH_SALT', 'Pt<-SeC7.<kHX|:cB+F_a*2c1@-@k-7ZiIzaK{@AODLs!AO>0MpxI21R8B}t+k-%');
define('LOGGED_IN_SALT', ';uN/(CC5;aa^xV7>J;{)yy1%Rg}[=!7mw|J&y1G5~axF#ocSx~)9}M91Un7-1?nE');
define('NONCE_SALT', '2It4E9x_7KeFw h<)Gc7/-N-Z%(N8j-7 (o{yLM$.lk4.E6p#zi< uF0p3i0hg- ');
Используя генератор ключей и солей от WordPress, создайте свои уникальные комбинации символов и вставьте их в wp-config.php. Желательно обновлять ключи и соли как минимум один раз в год.
Также в wp-config.php можно отключить несанкционированное удаление и установку плагинов:
define( ‘DISALLOW_FILE_MODS’, true );
А отключение редактирования плагинов и тем производится с помощью этой строки:
define( 'DISALLOW_FILE_EDIT', true );
Действия с файлами конфигурации не занимают много времени, но при этом создают надёжную преграду на пути взломщиков. Изучите основные возможности, которые можно реализовать с помощью этих файлов, чтобы обезопасить свой сайт без сторонних инструментов.