Jakie są zalety / wady różnych metod blokowania ataków SSH z użyciem siły?


20

Istnieje wiele różnych pakietów służących do blokowania adresów IP, z których w systemie uruchamiane są ataki SSH typu brute-force. Na przykład:

Jakie są zalety / wady tych lub innych?

Moje obecne rozwiązanie polega na pobieraniu wiadomości e-mail, które dziennik generuje codziennie, i zrzucaniu rażących adresów IP do pliku tekstowego, który przesyłam do skryptu, który następnie odbudowuje iptables. Jest hacky, czasochłonny i ręczny, i chciałbym lepszy sposób.

(Pamiętaj, że nie zapytałem, jaki był najlepszy sposób rozwiązania problemu, ponieważ nie ma „najlepszego” sposobu na zrobienie czegokolwiek).

Odpowiedzi:


15

Używam DenyHosts, więc mogę przynajmniej odpowiedzieć na to:

Plusy

  • Jest to całkowicie automatyczne
  • Jest konfigurowalny (ile nieudanych prób przed umieszczeniem na czarnej liście, dla nazw użytkowników, które nie istnieją, nazw użytkowników, które istnieją, oraz specjalnego wpisu dla użytkownika root)
  • Może okresowo wysyłać Ci e-mailem listę hostów na czarnej liście i / lub uruchamiać dany program za każdym razem, gdy nowy host jest na czarnej liście
  • Po pewnym czasie obsługuje automatycznie cofanie z czarnej listy hostów

Cons

Nie mam żadnych nieodwracalnych wad, o ile użyjesz go poprawnie:

  • W swojej domyślnej konfiguracji nie ostrzega cię przed nowymi hostami z czarnej listy, więc jeśli ktoś atakuje twoją sieć z setek różnych adresów, możesz nie zauważyć od razu, tak jak gdybyś monitorował swoje dzienniki ręcznie, ale (jak wspomniano w sekcja plusy) może wysłać Ci wiadomość e-mail lub uruchomić plik wykonywalny, aby powiadomić Cię o dodaniu nowych hostów
  • Domyślnie umieści na czarnej liście twoich hostów tak samo jak każdy inny, więc prawdopodobnie chcesz je dodać /etc/hosts.allow. Zablokowałem się raz, gdy nie udało mi się wpisać hasła, a gdy ktoś z pracy próbował się zalogować na moje konto root jako żart i umieścił na czarnej liście adres IP mojej pracy, zajęło mi kilka dni, aby dowiedzieć się, dlaczego nagle nie mogłem się połączyć do mojej sieci z pracy

19

Kolejnym jest fail2ban , który opiera się na iptables (więc działa z każdą usługą, nie tylko ssh). Z fail2ban możesz:

  • Podaj ścieżkę do dowolnego pliku dziennika (apache, ssh, nginx, serwer pocztowy, ...).
  • Określ wyrażenie regularne dla wzorców ataku (np. Ponad 10 „błędów 404” według tego samego adresu IP w dzienniku dostępu nginx w ciągu 6 sekund)
  • Określ wyrażenie regularne, aby zignorować określone wzorce (bardzo przydatne!)
  • Określ czas zablokowania
  • Wyślij wiadomość e-mail (lub inny alert ...)
  • W pełni konfigurowalny (możesz pisać własne alerty i filtry)

Jedną „wadą” DenyHosts jest to, że wymaga on owijania tcp, więc będzie działać tylko z usługami, które przeglądają plik /etc/hosts.deny. Ale żeby być sprawiedliwym z DenyHosts, sshd jest skompilowany do używania owijarek TCP w większości dystrybucji Linuksa. Uważam również, że DenyHosts jest łatwiejszy do skonfigurowania od razu po awarii niż fail2ban (ale mniej wydajny).

Odniesienie do podobnego pytania SF


fail2ban, na szczęście, działa również z pf - nie tylko iptables
Good Person

10

Prostą i praktycznie skuteczną ochroną przed atakami opartymi na skanowaniu jest nieużywanie standardowego portu. 443 (port https) naraża cię na różne ataki siłowe, które nie złamią twoich słabych haseł i prawdopodobnie działają przez więcej zapór ogniowych niż domyślny port (22).

Większość metod zapobiegania atakom z użyciem brutalnej siły ssh to świetne sposoby na samodzielne wykonanie (Ups, zepsułem konfigurację! Ups, zrobiłem kilka szybkich rsync i jestem teraz zbanowany na cały dzień!) Lub Assisted-Self-DoS (Ups , atakujący pochodzi z / zniszczył maszynę w tej samej podsieci co ja (dynamiczny zakres adresów IP, sieć uczelni ...), a ja również zostanę zbanowany!).

Jeśli logujesz się tylko z kilku miejsc, możesz po prostu dodać źródłowe adresy IP do białej listy. To oczywiście nie jest dobre, jeśli chcesz ssh z laptopa lub telefonu komórkowego w podróży.

Posiadanie demona ssh, który nasłuchuje tylko połączeń IPv6, jeszcze przez kilka lat chroni cię przed skanowaniem. Jednak wiele zapór ogniowych nie pozwala na transport IPv6 w żaden rozsądny sposób.

Inną metodą, o której nie wspominasz, jest pukanie portów . Nie cierpi z powodu problemów z samo-DoS (innych niż błędna konfiguracja), ale nie przepuszcza dobrze zapór ogniowych i może zwiększyć opóźnienie o kilka sekund podczas nawiązywania połączenia.

Jeśli masz dobre hasła lub możesz żyć bez uwierzytelniania za pomocą hasła, wyłącz uwierzytelnianie za pomocą hasła. (Klucze i hasła jednorazowe są wystarczające w większości przypadków użycia: jeśli nie ufasz komputerowi klienckiemu wystarczającemu do przechowywania klucza ssh, nie ufasz, że nie ma keyloggera). Wtedy ataki siłowe będą kosztować trochę procesora i przepustowości, ale nie narażaj się na włamanie (o ile sprawdziłeś, że żaden z kluczy nie pochodzi z OpenSSL o niskiej entropii ).

Podsumowując, należy pamiętać, że zmiana portu nie zmniejsza znacząco ekspozycji. Będziesz mniej skanować , ale wszystko, co możesz odciąć, to nisko wiszący owoc, który stara się wykorzystać stare luki i słabe hasła. Tak długo, jak dbasz o aktualność swojego demona i wymuszasz rozsądne hasła lub rozsądne limity częstotliwości prób, zmiana portu jest bardziej odpowiedzialna niż środek bezpieczeństwa.


1
Zgadzam się, że trochę praktyki nie wymaga banowania ;-) Dobra porada to również zmiana domyślnych portów i nie poleganie na haśle, ale na kluczu chronionym hasłem. Ale tak naprawdę nie wiem, dlaczego powinienem pozwolić sieciom bot wypełniać moje pliki dziennika dostępu, podczas gdy mój ssh i serwer sieciowy muszą odmawiać tysięcy żądań na godzinę. W przypadku fail2ban mój dziennik dostępu jest czysty, a moje aplikacje serwerowe w ogóle nie widzą tego ruchu (z wyjątkiem pierwszych X złych żądań :-)).
Barthelemy,

Korzystanie z niestandardowego portu wcale nie zapewnia dużej ochrony. Skanowanie w poszukiwaniu SSH na niestandardowym porcie zajmuje tylko kilka minut dłużej niż skanowanie w poszukiwaniu SSH na porcie 22 (Zakładając, że cracker wykonuje skanowanie, a skanowanie nie zostało zablokowane przez IDS. Ale jeśli masz IDS, prawdopodobnie zaciemnienie portu jest prawdopodobnie niepotrzebne ). Gdybym był crackerem i znalazł SSH na niestandardowym porcie, byłbym WIĘCEJ zainteresowany, ponieważ wiem, że administrator uważał tę usługę za wystarczająco cenną do ukrycia i polega na bezpieczeństwie przez niejasność.
Stefan Lasiewski

1
@Stefan: Większość ataków nie dotyczy danego hosta, ale konkretnej usługi. W tym celu o wiele bardziej efektywne jest skanowanie jednego portu na wielu adresach niż wielu portów na każdym adresie. A jeśli faktycznie atakuje Cię atakujący, lepiej wiedzieć, więc będziesz chciał, aby silne lub zabronione hasła i ataki były rejestrowane.
Gilles „SO- przestań być zły”

1
@Stefan Widzę niestandardowe porty jako skuteczne rozwiązanie uciążliwości (skanowanie metodą brutalną), a nie tak naprawdę jako środek bezpieczeństwa (tj. Uniemożliwiający przejęcie kontroli nad moim serwerem).
Barthelemy,

1
@sudowned Określenie innego portu nie jest uciążliwe. To tylko jedna linia .ssh/config. Blokada jest problemem, jeśli zapora nie przepuszcza cię, a najłatwiejszym rozwiązaniem jest przyklejenie się do portu 22, a także nasłuchiwanie na 443. Zgadzam się, że zmiana portu tak naprawdę nie poprawia bezpieczeństwa, może powinienem to wyjaśnić . Nie wiem, dlaczego uważasz, że niemożliwe jest, aby demon SSH nie obsługiwał uwierzytelniania za pomocą hasła: to tylko kwestia dodania linii do sshd_configOpenSSH, najczęstszej implementacji.
Gilles 'SO - przestań być zły'
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.