Приветствую тебя, мой немногочисленный читатель.
На днях в очередной раз появилась новость о взломе WordPress.
Решил поделиться некоторыми в общем очевидными приемами о безопасности.1) Удалите пользователя по умолчанию (admin), вместо него заведите себя
2) Защитите админку паролем (http-авторизация):
Nginx:
location ~ /wp-login.php { auth_basic "Admin only"; auth_basic_user_file /usr/local/etc/nginx/pass/.wpadmin; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include /usr/local/etc/nginx/fastcgi_params; }
# mkdir /usr/local/etc/nginx/pass # htpasswd -c /usr/local/etc/nginx/pass/.wpadmin vasyapupkin yapupkin New password: Re-type new password: Adding password for user <strong>vasyapupkin
Тестируем конфигурацию nginx:
# nginx -t nginx: the configuration file /usr/local/etc/nginx/nginx.conf syntax is ok nginx: configuration file /usr/local/etc/nginx/nginx.conf test is successful
Если syntax is ok, то говорим nginx перечитать конфигурацию, в противном случае исправляем ошибки:
# nginx -s reload
Т.к. htpasswd утилита из дистрибутива Apache, то ее может не оказаться в системе (у меня нет Apache, php обрабатывается php-fpm), то можно поставить в принципе поставить Apache, но можно обойтись небольшой утилитой например htpasswd.py написанной на Python 2
cd /usr/ports/security/py-htpasswd && make install clean # htpasswd.py -c -b /usr/local/etc/nginx/pass/.wpadmin vasyapupkin SUPERPASSWORD
Кроме дополнительной авторизации можно ограничить по IP адресу доступ к админке, добавив пару строк в nginx конфигурацию хоста:
location ~ /wp-login.php { auth_basic "Admin only"; auth_basic_user_file /usr/local/etc/nginx/pass/.wpadmin; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include /usr/local/etc/nginx/fastcgi_params; allow XXX.XXX.XXX.XXX; allow 10.10.10.0/24; deny all; }
Незабываем проверить и передернуть NGINX (nginx -t, nginx -s reload)
Apache:
<Directory "/usr/local/www/wordpress/wp-admin"> AuthType Basic AuthName "Admin ONLY" AuthUserFile /usr/local/etc/apache24/pass/.wpadmin Require valid-user Order allow,deny allow from 10.10.10. XXX.XXX.XXX.XXX Deny from all </Directory>
В общем как-то так:)
Всем пока.