Я только что установил fail2ban в NetinVM (совокупность виртуальных машин внутри виртуальной машины)
пока все хорошо, я устанавливаю на конкретную машину (10.5.1.13), где ssh находится на 2222 (все в корне)
С другой машины (10.5.1.11) я повторно отправляю ssh на первую с неправильным паролем.
fail2ban распознал "атаку" и сказал банить ip
fail2ban> status sshd
Status for the jail: sshd
|- Filter
| |- Currently failed: 1
| |- Total failed: 20
| `- File list: /var/log/auth.log
`- Actions
|- Currently banned: 2
|- Total banned: 2
`- Banned IP list: 10.5.1.11
когда я заглядываю в iptables:
# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
f2b-sshd tcp -- anywhere anywhere multiport dports ssh
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain f2b-sshd (1 references)
target prot opt source destination
REJECT all -- dmzb.example.net anywhere reject-with icmp-port-unreachable
RETURN all -- anywhere anywhere
это правило REJECT добавлено, и разрешение dmzb.emaple.net кажется правильным:
$ ping dmzb.example.net
PING dmzb.example.net (10.5.1.11) 56(84) bytes of data.
64 bytes from dmzb.example.net (10.5.1.11): icmp_seq=1 ttl=64 time=0.940 ms
и разрешите домен, добавленный в iptables, правильно к IP "злоумышленника"
тем не менее, я все еще могу продолжить испытания ssh с машины "злоумышленника", получить запрос пароля и даже войти, если я введу правильный пароль.
Обновить: как было предложено, пробовал
$ iptables -L -n
Chain INPUT (policy ACCEPT)
target prot opt source destination
f2b-sshd tcp -- 0.0.0.0/0 0.0.0.0/0 multiport dports 22
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain f2b-sshd (1 references)
target prot opt source destination
REJECT all -- 10.5.1.11 0.0.0.0/0 reject-with icmp-port-unreachable
RETURN all -- 0.0.0.0/0 0.0.0.0/0
ip кажется правильным, но бан не применяется.
Внутри вашего набора правил вы связываете проверку fail2ban с портом 22, но в описании, которое вы написали, ваш ssh действительно слушает порт 2222. Чтобы проверить это, начните с iptables-save -c
или iptables -L -n -v
. Проверьте счетчики соответствующих правил. Кроме того, tcpdump также очень полезен в вашем случае.