Я пытаюсь настроить fail2ban, я несколько раз пытался войти на свой веб-сервер, чтобы запустить правило, и, глядя на мои iptables, похоже, что это сработало:
Chain fail2ban-apache (1 references)
target prot opt source destination
DROP all -- 192.168.1.70 0.0.0.0/0
RETURN all -- 0.0.0.0/0 0.0.0.0/0
Но если я попытаюсь получить доступ к серверу Apache из .70, я все равно смогу!
Любые идеи?
Полный список по запросу:
Chain INPUT (policy ACCEPT 100998 packets, 137858737 bytes)
pkts bytes target prot opt in out source destination
0 0 fail2ban-apache tcp -- * * 0.0.0.0/0 0.0.0.0/0 multiport dports 80,443
1925 322694 fail2ban-ssh tcp -- * * 0.0.0.0/0 0.0.0.0/0 multiport dports 22
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 43963 packets, 7223477 bytes)
pkts bytes target prot opt in out source destination
Chain fail2ban-apache (1 references)
pkts bytes target prot opt in out source destination
0 0 DROP all -- * * 192.168.1.70 0.0.0.0/0
0 0 RETURN all -- * * 0.0.0.0/0 0.0.0.0/0
Chain fail2ban-ssh (1 references)
pkts bytes target prot opt in out source destination
1925 322694 RETURN all -- * * 0.0.0.0/0 0.0.0.0/0
Здесь произошло то, что после нескольких попыток подключения по SSH правило fail2ban добавило 192.168.1.70
к fail2ban-apache
цепочка, но эта цепочка выполняется только для портов 80 и 443. Порт 22 все еще разрешен, потому что 192.168.1.70
не был добавлен в fail2ban-ssh
цепь.
Вы обнаружите, что не можете делать запросы http или https со своего веб-сервера из 192.168.1.70
но вы все еще можете использовать SSH.
Вы, вероятно, захотите изменить действие fail2ban для правила SSH, чтобы блокировать SSH, а не http и https.
Если вы хотите заблокировать весь порт при появлении атаки bruteforce ssh или apache, вам необходимо добавить или отредактировать эти строки:
banaction = iptables-allports
после [ssh]
или [apache]
линии на /etc/fail2ban/jail.conf
или здесь для действия по умолчанию
# Default banning action (e.g. iptables, iptables-new,
# iptables-multiport, shorewall, etc) It is used to define
# action_* variables. Can be overridden globally or per
# section within jail.local file
banaction = iptables-allports
если вы не хотите блокировать весь порт, вы можете добавить числовое имя порта в эту строку
[apache]
enabled = true
port = http,https,dns,6969 <-
filter = apache-auth
logpath = /var/log/apache*/*error.log
maxretry = 6
Одно из правил с более высоким приоритетом - разрешить обмен данными до того, как брандмауэр доберется до вашего правила блокировки. Правила блокировки должны быть на первом месте или очень близко к первому в ваших правилах.