Защищаем /admin у WP

0
(0)

На этом как и на других доменах многих сайтов, сделанных на базе wordpress, ендпоинт «/admin» ведет в /wp-login.php, который в свою очередь ведет в админ панель. Да он защищен паролем и защиту можно расширить вполне «дефолтными» средствами nginx + fail2ban.

Цель следующая — на «админский» ендпоинт мы добавляем базовую авторизацию на строне nginx, а в fail2ban добавляем парсер error.log nginx-a.

Воспользуемся утилитой htpasswd и создадим файл с хешом пароля.

Bash
htpasswd -c /etc/nginx/.htpasswd <user_name>

Теперь включаем базовую авторизацию на стороне nginx

Nginx
location = /wp-login.php {
		auth_basic "Restricted";
		auth_basic_user_file /etc/nginx/.htpasswd;
		include fastcgi_params;
		fastcgi_pass 127.0.0.1:9000;
        fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
}

Перезапускаем nginx и проверяем работу, если все ок, двигаемся дальше.

Создадим в /etc/fail2ban/filter.d/wordpress-auth.conf следующий конфиг

Plaintext
[Definition]
failregex = ^ \[error\] \d+#\d+: \*\d+ user "\S+":? (password mismatch|was not found in ".*"), client: <HOST>, server: \S*, request: "\S+ \S+ HTTP/\d+\.\d+", host: "\S+"(, referrer: "\S+")?\s*$

ignoreregex =

И в /etc/fail2ban/jail.conf добавим

Plaintext
[wordpress]
enabled = true
port = http,https
filter = wordpress-auth
logpath = /var/log/nginx/error.log
maxretry = 3
bantime = 43200

Рестартим fail2ban, делаем парочку не удачных попыток и смотрим лог.

Насколько статья полезна?

Нажмите на звезду, чтобы оценить!

Средняя оценка 0 / 5. Количество оценок: 0

Оценок пока нет. Поставьте оценку первым.

Оставить комментарий