Заметил резко возросшую нагрузку на сервер (блог начал тупить :-)).
Первым делом – проверяем лог доступа, в котором сразу видна пачка запросов вида:
... 167.114.233.230 - - [13/Jan/2016:18:07:14 +0200] "POST /xmlrpc.php HTTP/1.1" 499 25 "-" "-" "-" ...
И количество таких запросов:
# cat /var/log/nginx/rtfm.co.ua-access.log | grep xmlrpc | wc -l 8405
Про саму уязвимость можно почитать тут>>>.
Первым делом – блокируем на фаерволе:
# iptables -I INPUT 2 -s 167.114.233.230 -j REJECT # service iptables save iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ]
Что бы избежать их в дальнейшем – решил добавить правило в Fail2Ban.
Создаем файл /etc/fail2ban/filter.d/wp-xmlrpc.local
с правилами:
[Definition] failregex = .*client: <HOST>.*POST.*xmlrpc.php.* ignoreregex =
Проверяем:
# fail2ban-regex /var/log/nginx/rtfm.co.ua-access.log /etc/fail2ban/filter.d/wp-xmlrpc.local ... Results ======= Failregex: 8403 total |- #) [# of hits] regular expression | 1) [8403] ^<HOST> .*POST .*xmlrpc.php.* ...
Добавляем фильтр – редактируем файл /etc/fail2ban/jail.conf
и подключаем новый фильтр:
... [wp-xmlrpc] enabled = true port = http,https filter = wp-xmlrpc logpath = /var/log/nginx/*-access.log maxretry = 2 ...
Перезапускаем Fail2Ban:
# service fail2ban restart
Снимаем ручной бан, добавленный в начале:
# iptables -L INPUT -n --line-numbers | grep 167.114.233.230 10 REJECT all -- 167.114.233.230 0.0.0.0/0 reject-with icmp-port-unreachable
# iptables -D INPUT 10
# service iptables save iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ]
Через пару минут – запросы снова пошли, проверяем:
# fail2ban-client status wp-xmlrpc Status for the jail: wp-xmlrpc |- Filter | |- Currently failed: 1 | |- Total failed: 57 | `- File list: /var/log/nginx/rtfm.co.ua-access.log ***-access.log `- Actions |- Currently banned: 1 |- Total banned: 1 `- Banned IP list: 167.114.233.230
Готово.