Blok Fail2ban z IPtables nie działa na Debianie Lennym. [przeniesiony port ssh]


11

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 DROPteż 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:

  1. Skonfiguruj Fail2ban na niski czas bantime. 60 sekund Następnie załaduj ponownie.
  2. Próba zalogowania się (za pomocą SSH), bezpośrednio z niewłaściwym hasłem.
  3. 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.
  4. iptables -Lpokazał 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:

  1. Zatrzymaj Fail2ban. Utwórz atskrypt, aby w przyszłości usunąć zapisaną poniżej zasadę zakazu. ( iptables -D INPUT 1)
  2. Utwórz regułę banowania: iptables -I INPUT 1 -s 84.x.y.z -j DROP
  3. 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.
  4. Po atskrypcie mogę uzyskać dostęp do mojego serwera.

Nie widzę rozwiązania, co powinienem zrobić, aby mój ban IPtables (stworzony przez Fail2ban) działał?


Pytanie edytowane! Jakieś pomysły?
antivirtel

Odpowiedzi:


8

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 iptablesodnosi 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):

  1. Otwórz jail.local (lub .conf).
  2. Znajdź swoją usługę (w nawiasach klamrowych).
  3. Napraw portsekcję dla wszystkich . Przykład:port = all
  4. Dodaj lub edytuj istniejącą banactionlinię za linią portu, o wartości iptables-allports . Przykład: banaction = iptables-allports.
  5. Uruchom ponownie demona. Przykład: # service fail2ban restart.

Nie mogłem znaleźć rozwiązania zmiany port sshdyrektywy ani napisać tam numeru. Jeśli masz rozwiązanie nieobsługujące wszystkich portów, wysłucham go!


1
Wszystko, co musisz zrobić, to podać numer portu zamiast nazwy.
Julian Knight

Pamiętaj też, że twoje iptable imię musi mieć mniej niż 32 znaki, aby można je było pomyślnie dodać.
Adrian Lopez

2

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.

port = ssh 

w

port = 12345

Zakładam, że podobne podejście działałoby w przypadku innych usług na niestandardowych portach.


0

Ustawienia dla fail2ban są włączone /etc/fail2ban/jail.local. W przypadku instalacji domyślnej nie jestem pewien, czy ona tam jest. Następnie skopiuj jail.confdo jail.local, więc masz oba pliki /etc/fail2ban/. Edytuj jail.local, przejdź do wiersza zawierającego [ssh]i włącz go w następujący sposób:

enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 6

Następnie uruchom ponownie fail2ban:

sudo /etc/init.d/fail2ban restart

Możliwe, że teraz będzie działać, tak to skonfigurowałem i działa.


Myślę, że nie zrozumiałeś mojego pytania! Fail2ban robi to, czego chcę: oglądaj logi i nakładaj zakaz na atakujących. Ale ten zakaz, co powinny robić IPtables, nie działa. Mogę WCIĄGAĆ DOSTĘP do serwera, korzystając z powyższej konfiguracji reguł.
antivirtel

Przepraszam, spieszyłem się, więc źle zrozumiałem, a ponieważ miałem ten sam problem, który rozwiązałem, dodając jail.local, pomyślałem, że to pomoże. Niestety, jeśli masz wszystko ustawione poprawnie, nie wiem, na czym polega problem, ale mam nadzieję, że zrobi to ktoś inny.
enedene

0

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:

  • / etc / debian_version = 6.0.1
  • fail2ban = 08..4-3
  • iptables = 1.4.8
  • openssh-server = 1: 5.5p1-6


W takim przypadku zalecam wykonanie aktualizacji.
James Sumners,

okok, nie jest to zbyt łatwe, ale jakoś mi się to uda ... - może czysta ponowna instalacja
antivirtel

sed -i 's/lenny/squeeze/' /etc/apt/sources.list && apt-get update && apt-get dist-upgrade. To całkiem proste.
James Sumners

tak, ale czy jest jakaś szansa, że ​​nie uruchomi się następnym razem ... informacje o wydaniu napisały, że nowa buda + nowy system udev ... - czy to się udało na twojej maszynie?
antivirtel
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.