У меня есть сервер, на котором запущено несколько сайтов WordPress, и каждый из этих сайтов отказывается входить в систему с IP-адресов после нескольких неудачных попыток входа. Шаги следующие:
Кроме того, плагин безопасности WP записывает в файл на сервере (уровень 3?). Это означает, что мы можем объединять данные между сайтами, размещенными на этом сервере. Теперь, используя Fail2Ban, мы ищем 3 локаута уровня 3 в течение 1 месяца, а затем бан на уровне сервера на 3 месяца.
Однако плагины WP по-прежнему показывают повторяющиеся новые блокировки для тех же IP-адресов. Это означает, что злоумышленник все еще получает доступ к сайтам, размещенным на этом сервере.
Если я посмотрю в журналы сервера, я вижу, что блокировки записываются в правильный файл. Я также вижу, что Fail2Ban и соответствующие тюрьмы / действия обнаруживают повторяющиеся IP-адреса / нарушителя (-ов) и запрещают их.
Теперь, если я запустил следующую команду:
iptables -L
Я получаю примерно такой результат (отредактированный для краткости):
Chain INPUT (policy ACCEPT)
target prot opt source destination
f2b-WordPress tcp -- anywhere anywhere multiport dports http,https
f2b-Http-Get-Dos tcp -- anywhere anywhere multiport dports http,https
.....
и далее вниз:
Chain f2b-WordPress (1 references)
target prot opt source destination
REJECT all -- dedic980.hidehost.net anywhere reject-with icmp-port-unreachable
REJECT all -- dedic693.hidehost.net anywhere reject-with icmp-port-unreachable
RETURN all -- anywhere anywhere
Итак, я вижу, что срабатывает моя тюрьма, и что имя хоста, связанное с используемым IP-адресом, отклоняется, но пользователь по-прежнему получает доступ к серверу на том же IP-адресе, который использовался неоднократно. Итак, очевидно, что они все еще получают доступ к сайтам на сервере и пытаются ворваться в администраторов сайтов.
Это нужно остановить как можно скорее.
Итак, я предполагаю, что iptables блокирует имя хоста, а не IP. Поскольку это имя хоста похоже на службу, предназначенную для сокрытия реальных имен хостов, я решил, что это причина проблемы, то есть: iptables блокирует неправильное имя хоста. Но, возможно, я здесь ошибаюсь ... Если это так, я бы приветствовал лучшее решение.
Исходя из этого, я отредактировал /etc/fail2ban/jail.conf следующим образом (я знаю, что должен создать локальную версию):
# "usedns" specifies if jails should trust hostnames in logs,
# warn when DNS lookups are performed, or ignore all hostnames in logs
#
# yes: if a hostname is encountered, a DNS lookup will be performed.
# warn: if a hostname is encountered, a DNS lookup will be performed,
# but it will be logged as a warning.
# no: if a hostname is encountered, will not be used for banning,
# but it will be logged as info.
# usedns = warn
usedns = no
Затем я сохранил все и перезапустил службу fail2ban. Файлы журналов предполагают, что все работает нормально, и что тюрьма wordpress выполнила свою работу и запретила использование 2 IP этим конкретным человеком.
Другой взгляд на iptables -L
однако показывает, что имя хоста было заблокировано, а не IP ...
Итак, что мне теперь делать?
Обновить
Я только что вручную добавил два IP-адреса в iptables через Webmin> Linux Firewall (который, как мне кажется, использует firewalld) и запустил iptables -L
который показывает имена хостов, а не введенные мной IP-адреса. Итак, iptables преобразует IP-адреса в имена хостов, а не fail2ban. Если да, то почему остальные 20 IP-адресов, которые я добавил вручную, отображаются как их IP, а НЕ имя хоста?
Правила будут блокировать новые подключения, но не существующие. Пока они поддерживают соединение, они могут делать запросы.
Чтобы разорвать существующие соединения, добавьте копию правила отклонения над правилом принятия для установленных соединений. Удалите правило после разрыва соединения.
Вы должны увидеть соединения в выводе команды netstat -ant | grep EST '.
Возможно, вам придется вручную добавить правило, если они будут продолжать попытки. Fail2ban блокирует соединение только на период, указанный в настройках Bantime. Правило, добавленное вручную, должно остаться.