Приветствую тебя, мой немногочисленный читатель.
На днях в очередной раз появилась новость о взломе WordPress.
Решил поделиться некоторыми в общем очевидными приемами о безопасности.1) Удалите пользователя по умолчанию (admin), вместо него заведите себя
2) Защитите админку паролем (http-авторизация):
Nginx:
1 2 3 4 5 6 7 8 | 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; } |
1 | # mkdir /usr/local/etc/nginx/pass |
1 2 3 4 | # htpasswd -c /usr/local/etc/nginx/pass/.wpadmin vasyapupkin yapupkin New password: Re-type new password: Adding password for user <strong>vasyapupkin</strong> |
Тестируем конфигурацию nginx:
1 2 3 | # 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 перечитать конфигурацию, в противном случае исправляем ошибки:
1 | # nginx -s reload |
Т.к. htpasswd утилита из дистрибутива Apache, то ее может не оказаться в системе (у меня нет Apache, php обрабатывается php-fpm), то можно поставить в принципе поставить Apache, но можно обойтись небольшой утилитой например htpasswd.py написанной на Python 2
1 2 | cd /usr/ports/security/py-htpasswd && make install clean # htpasswd.py -c -b /usr/local/etc/nginx/pass/.wpadmin vasyapupkin SUPERPASSWORD |
Кроме дополнительной авторизации можно ограничить по IP адресу доступ к админке, добавив пару строк в nginx конфигурацию хоста:
1 2 3 4 5 6 7 8 9 10 11 | 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:
1 2 3 4 5 6 7 8 9 | <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> |
Вообщем как-то так:)
Всем пока.