Ja na przykład używam „tarpit” oprócz zezwalania tylko na uwierzytelnianie za pomocą klucza publicznego i nie zezwalanie na rootowanie.
W netfilter
istnieje recent
moduł, który można używać z ( INPUT
łańcuch):
iptables -A INPUT -i if0 -p tcp --dport 22 -m state --state NEW -m recent --set --name tarpit --rsource
iptables -A INPUT -i if0 -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 180 --hitcount 6 --name tarpit --rsource -j DROP
iptables -A INPUT -i if0 -p tcp --dport 22 -j ACCEPT
To oznacza, że każda próba połączenia z portem 22 jest wymieniona przez recent
moduł z adresem IP i innymi rzeczami pod nazwą „tarpit” (jeśli jesteś ciekawy, spójrz /proc/net/xt_recent/tarpit
). Oczywiście możesz używać innych nazw.
Aby wyświetlić lub usunąć adresy IP, użyj:
echo "+123.123.123.123" > /proc/net/xt_recent/tarpit
echo "-123.123.123.123" > /proc/net/xt_recent/tarpit
Ta szybkość ogranicza próby do 5 w 300 sekund. Należy pamiętać, że użytkownicy z istniejącym połączeniem nie przejmują się tym limitem, ponieważ mają już ustanowione połączenie i mogą tworzyć więcej (nawet powyżej limitu prędkości).
Dostosuj reguły do swoich upodobań, ale upewnij się, że zostaną dodane w tej kolejności (tzn. Dodając, użyj ich w tej kolejności, wstawiając następnie w odwrotnej kolejności).
To ogromnie zmniejsza hałas. Zapewnia również faktyczne bezpieczeństwo (przed brutalnym wymuszaniem) w przeciwieństwie do postrzeganego bezpieczeństwa zmiany portu. Jednak nadal zalecam zmianę portu, jeśli jest to wykonalne w twoim środowisku. To również znacznie obniży poziom hałasu ...
Nadal możesz połączyć to z fail2ban, chociaż działałem dobrze bez niego i tylko z powyższymi zasadami.
EDYTOWAĆ:
Możliwe jest zablokowanie się w ten sposób, dzięki czemu możesz dodać coś takiego, co pozwoli ci usunąć ban poprzez pukanie do określonego portu:
iptables -A INPUT -i if0 -p tcp --dport <knockport> -m state --state NEW -m recent --name tarpit --remove