Niedawno postanowiłem przeprowadzić konserwację zabezpieczeń. Widziałem moje logi i było kilka prób przeciwko mojemu serwerowi SSH. W pierwszej chwili odsunął się port SSH z domyślnego 22. Po to, czytałem coś o fail2ban , BlockHosts i DenyHosts .
Spojrzałem na pierwszy: jest prosty w konfiguracji, wszystko jest zrozumiałe; ale kiedy próbowałem „zbadać jego ochronę”, testy nie powiodły się . Wszystko wydaje się być dobre, ale nadal mogę uzyskać dostęp do serwera.
Testowałem także IPtables: # iptables -I INPUT -j DROP
- po tym moje połączenie SSH zostało utracone (więc czego chciałem). Wtedy to # iptables -I INPUT -s 84.x.y.z -j DROP
też zadziałało.
Ale jakie reguły zrobił Fail2ban, to nie działa: ( $ sudo iptables -L
)
Chain INPUT (policy ACCEPT)
target prot opt source destination
fail2ban-apache tcp -- anywhere anywhere multiport dports www,https
fail2ban-ssh tcp -- anywhere anywhere multiport dports ssh
fail2ban-ssh-ddos 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 fail2ban-apache (1 references)
target prot opt source destination
RETURN all -- anywhere anywhere
Chain fail2ban-ssh (1 references)
target prot opt source destination
DROP all -- 84.x.y.z anywhere
RETURN all -- anywhere anywhere
Chain fail2ban-ssh-ddos (1 references)
target prot opt source destination
RETURN all -- anywhere anywhere
Załadowane moduły jądra: ( $ lsmod | grep ip
)
iptable_nat 4680 0
nf_nat 15576 1 iptable_nat
nf_conntrack_ipv4 12268 3 iptable_nat,nf_nat
nf_conntrack 55540 4 xt_state,iptable_nat,nf_nat,nf_conntrack_ipv4
xt_multiport 2816 2
iptable_filter 2624 1
ip_tables 10160 2 iptable_nat,iptable_filter
x_tables 13284 5 xt_state,xt_tcpudp,iptable_nat,xt_multiport,ip_tables
ipv6 235396 24
Wersje:
- Debian Lenny 5.06, jądro 2.6.26-2-686
- IPtabele 1.4.2-6
- Fail2ban 0.8.3-2sid1
openssh-server
1: 5.1p1-5
Test # 1 krok po kroku:
- Skonfiguruj Fail2ban na niski czas bantime. 60 sekund Następnie załaduj ponownie.
- Próba zalogowania się (za pomocą SSH), bezpośrednio z niewłaściwym hasłem.
- Po raz szósty wprowadź poprawne hasło (maksymalna liczba prób to tylko 4). Zalogowałem się. Mogę również uzyskać dostęp do strony internetowej obsługiwanej przez ten serwer.
iptables -L
pokazał mi, jak wspomniano powyżej. Tak więc ban był aktywny, kiedy się połączyłem, rozkazałem mojemu serwerowi.
Test # 2 krok po kroku:
- Zatrzymaj Fail2ban. Utwórz
at
skrypt, aby w przyszłości usunąć zapisaną poniżej zasadę zakazu. (iptables -D INPUT 1
) - Utwórz regułę banowania:
iptables -I INPUT 1 -s 84.x.y.z -j DROP
- Nie mogłem wpisać nic innego, połączenie SSH jest nieużywalne. Nie mogłem uzyskać dostępu do strony internetowej. Czego chciałem od iptables.
- Po
at
skrypcie mogę uzyskać dostęp do mojego serwera.
Nie widzę rozwiązania, co powinienem zrobić, aby mój ban IPtables (stworzony przez Fail2ban) działał?
Odpowiedzi:
Znalazłem problem, co zrobiłem, przed zainstalowaniem fail2ban. Przepraszam za twój czas.
Ze względów bezpieczeństwa przeniosłem mój sshd z portu 22 na inny. Odnośnik
iptables
odnosi się tylko do portu 22. Myślałem, że jest to zmienna, która zawsze odnosi się do bieżącego portu sshd. Ale NIE .Dokładne rozwiązanie (jeśli odłączyłeś demona od jego oryginalnego portu):
port
sekcję dla wszystkich . Przykład:port = all
banaction
linię za linią portu, o wartości iptables-allports . Przykład:banaction = iptables-allports
.# service fail2ban restart
.Nie mogłem znaleźć rozwiązania zmiany
port ssh
dyrektywy ani napisać tam numeru. Jeśli masz rozwiązanie nieobsługujące wszystkich portów, wysłucham go!źródło
Miałem ten sam problem z brakiem banowania fail2ban po przeniesieniu mojego serwera ssh na niestandardowy port 12345 (powiedzmy).
Aby zmusić fail2ban do stworzenia odpowiednich reguł po kilku nieudanych próbach uwierzytelnienia, dokonałem edycji
/etc/fail2ban/jail.conf
.w
Zakładam, że podobne podejście działałoby w przypadku innych usług na niestandardowych portach.
źródło
Ustawienia dla fail2ban są włączone
/etc/fail2ban/jail.local
. W przypadku instalacji domyślnej nie jestem pewien, czy ona tam jest. Następnie skopiujjail.conf
dojail.local
, więc masz oba pliki/etc/fail2ban/
. Edytujjail.local
, przejdź do wiersza zawierającego[ssh]
i włącz go w następujący sposób:Następnie uruchom ponownie fail2ban:
Możliwe, że teraz będzie działać, tak to skonfigurowałem i działa.
źródło
Podałeś „Fail2ban 0.8.3-2sid1” jako zainstalowany. To jest nieobsługiwana konfiguracja. Pakiety Sid nie powinny być instalowane w stabilnym środowisku.
Używam Debiana 6 (Squeeze), który został uaktualniony z Lenny'ego, na maszynie wirtualnej specjalnie jako serwer SSH dla mojego domu. Używam również fail2ban. Przeprowadziłem test nr 1 i wszystko działało tak, jak powinno. Nie udało mi się zalogować do maksymalnej liczby prób, a następnie moje prośby o zalogowanie zostały odrzucone na 60 sekund.
Moja lista wersji:
źródło
sed -i 's/lenny/squeeze/' /etc/apt/sources.list && apt-get update && apt-get dist-upgrade
. To całkiem proste.