24 часа в сутки в интернете работают различные боты,которые пытаются с помощью
brute force подобрать пароли к сайтам на wordpress.
В логах вебсервера /var/log/apache2/other_vhosts_access.log вы можете найти такие записи:
example.com:443 13.58.134.7 — — [01/Nov/2018:10:41:25 +0100] «POST /wp-login.php HTTP/1.1» 200 2159
example.com:443 13.58.134.7 — — [01/Nov/2018:10:41:38 +0100] «POST /wp-login.php HTTP/1.1» 200 2320
1. Создаем новый фильтр fail2ban
touch /etc/fail2ban/filter.d/apache-wplogin.conf
в который прописываем правило для фильтрации необходимых записей в лог файле
[Definition]
failregex = ^\S*
2. Правильность синтаксиса нового regex выражения можно
проверить с помощью команды:
fail2ban-regex /var/log/apache2/other_vhosts_access.log apache-wplogin.conf -v
Failregex: 30 total
|- #) [# of hits] regular expression
| 1) [30] ^\S*
| 13.58.134.7 Thu Nov 01 10:41:25 2018
| 13.58.134.7 Thu Nov 01 10:41:38 2018
Наше выражение работает правильно. В логах был найден IP address 13.58.134.7
с которого были попытки взлома
example.com:443 13.58.134.7 — — [01/Nov/2018:10:41:25 +0100] «POST /wp-login.php HTTP/1.1» 200 2159 «https://www.google.com/url?e2d31300fa18bbbe300e6290927e7d9a» «Mozilla/5.0 (Windows NT 6.0; rv:36.0) Gecko/20100101 Firefox/36.0»
example.com:443 13.58.134.7 — — [01/Nov/2018:10:41:38 +0100] «POST /wp-login.php HTTP/1.1» 200 2320 «https://www.google.com/url?e2d31300fa18bbbe300e6290927e7d9a» «Mozilla/5.0 (Windows NT 6.0; rv:36.0) Gecko/20100101 Firefox/36.0»
3. Добавляем в файл /etc/fail2ban/jail.local новое правило блокировки с именем wplogin
[wplogin]
enabled = true
filter = apache-wplogin
action = iptables-multiport[name=wplogin, port=»80,443″, protocol=tcp]
sendmail-whois[name=»server-wplogin», dest=admin@server.net, sender=fail2ban@server.net]
logpath = /var/log/apache2/other_vhosts_access.log
findtime = 600
maxretry = 3
где:
filter — имя файла с нашим фильтром
action — действие для блокировки, в нашем случае используем iptables-multiport,
вебсервер работает на портах 80 и 443 В случае блокировки будет отправлен
e-mail на указанный dest admin@server.net -адрес получателя от отпрвителя from fail2ban@server.net
logpath — путь к лог файлу apache
findtime — время за которое будут просматриваться логи (600 sec -10 min)
maxretry — какое количество пыток взлома за это время findtime было совершено
4. Затем перестартовываем fail2ban
service fail2ban restart и проверяем командой
iptables -L -n | grep wplogin что наш фильтр активен
fail2ban-wplogin tcp — 0.0.0.0/0 0.0.0.0/0 multiport dports 80,443