Jak możemy ograniczyć wpływ sond ssh?

13

Mój serwer jest stale atakowany przez różne adresy IP. Wypróbowują pięć haseł, a następnie zmieniają adres IP.

Zrobiłem różne blokady, takie jak używanie kluczy ssh i nie zezwalanie na hasła i nie zezwalanie na zdalne logowanie do roota.

Czy mogę coś zrobić, aby pozbyć się tych prób ataku? Jeśli nie, czy są jakieś szczególne zabezpieczenia, które powinienem zastosować?

JW01
źródło
1
Oznaczanie migracji do security.se, gdzie jest to trochę bardziej na temat
Rory Alsop
1
@Rory Istnieje różnica między „nieco bardziej na temat kimś innym” a „tutaj poza tematem” - tutaj wydaje się dość wyraźnie na temat
Michael Mrozek
Bez obaw @Michael. Miałem ping z Gillesa, żeby przyjść i spojrzeć na to, jak być może nie na miejscu.
Rory Alsop,
@Rory Ok, zapytam go o to; zwykle jest całkiem dobry w przekonywaniu mnie do czegoś, co moim zdaniem jest {off, on} temat jest właściwie {on, off} temat
Michael Mrozek
1
Moje pytanie wydaje się zmienione nie do poznania. W moim pierwotnym pytaniu naprawdę próbowałem dowiedzieć się, czy w każdej witrynie często zdarzały się ataki siłowe - czy to fakt. Odpowiedział na to Matteo: „To rzeczywiście fakt życia”. Drugą częścią pytania było pytanie, co mogę zrobić, aby aktywnie powstrzymać te ataki oprócz obrony . Byłoby to drugorzędne pytanie, gdyby tylko niektóre strony cierpiały z powodu ataków siłowych. Bruce odpowiedział na jego pomysł na tarpit. Tak naprawdę nie prosiłem o wskazówki obronne.
JW01

Odpowiedzi:

14

To rzeczywiście fakt z życia. Możesz zainstalować narzędzia do odfiltrowywania hostów, które atakują cię po kilku nieudanych próbach.

DenyHosts analizuje pliki dziennika i automatycznie dodaje do /etc/hosts.denypliku osoby atakujące .

Sprawdź dokumentację, w jaki sposób skonfigurować go do swoich potrzeb.

Aktualizacja : niektóre ważne punkty sugerowane w komentarzach

  • pamiętaj, aby poprawnie skonfigurować narzędzia jako DenyHosts, ponieważ możesz się zablokować (np. możesz skonfigurować maszynę lub sieć, która nigdy nie jest filtrowana)

  • DenyHosts nie zwiększa bezpieczeństwa systemu: filtruje tylko ataki na poziomie IP (może zmniejszyć obciążenie małych komputerów i zmniejszyć rozmiar plików dziennika, ale nic więcej)

Matteo
źródło
1
Aaa Zaczynałem myśleć, że jestem wyjątkowy. Dzięki, że mnie wyprostowałeś.
JW01,
W przypadku Matteo odpowiedź na twoje pytanie brzmi: prawie refs Q1.3 denyhosts.sourceforge.net/faq.html#1_0
whoami
@whoami Dzięki za link, miłe podsumowanie. Chociaż jedną rzeczą, która zawsze przychodzi mi na myśl, gdy widzę użycie innej końcówki portu, jest „ skąd wiesz, że wybrany port alternatywny nie jest już używany przez coś innego?
JW01
1
Uważaj na DenyHosts i podobne narzędzia, ponieważ wprowadzają one dodatkową złożoność, tzn. Mogą same stwarzać problemy z bezpieczeństwem, por. drugi komentarz do unix.stackexchange.com/questions/2942/...
maxschlepzig
1
Uważaj również na DenyHosts, ponieważ możesz zablokować się na swoim komputerze. Prosty apt-get install denyhostswyciągnął mnie z komputera.
Naftuli Kay
15

Postępowałem zgodnie z tymi instrukcjami, aby dodać 7-sekundowe opóźnienie do każdej próby logowania SSH przy użyciu niepoprawnego hasła. Zrobiłem mój sshd w „tarpit” dla skanerów brutalnej siły.

Powinienem również dodać, że mam zmodyfikowane, sshd tarpit rejestrować nieudane hasła. Może to nie być całkowicie etyczne, ponieważ pozwala użytkownikowi rootowi spojrzeć na to, co zwykli użytkownicy błędnie wpisują jako własne hasła, ale ponieważ jestem jedynym „prawdziwym” użytkownikiem, uważam, że jest OK.

Nie mam go uruchomionego na niestandardowym porcie, ponieważ aspekt „tarpit” nie zmarnowałby nikogo czasu.

Bruce Ediger
źródło
Ponadto użyj niestandardowego portu i użyj kluczy zamiast haseł. Wówczas nie mają prawie żadnej nadziei (pod warunkiem, że nie dostaną kluczy, które i tak powinny zostać zabezpieczone hasłem).
Callum Rogers,
To ładna odpowiedź, ponieważ ma nieco „ofensywne” podejście, a nie jest wyłącznie „defensywne”, co moim zdaniem dodaje moralności.
JW01,
9

Jeśli tylko niewielka liczba osób potrzebuje SSH do systemu, rozważ przeniesienie SSH do niestandardowego portu (np. 6422, 8080 itd.). To samo znacznie zmniejszy liczbę prób logowania (i prawdopodobnie ochroni cię przed niektórymi niepakowanymi Robak oparty na exploicie SSH).

Klin
źródło
3
+1 Raczej użyteczny, ponieważ ogranicza irytację, ale nie myl tego ze środkiem bezpieczeństwa - jest to bliższy odpowiednik drzwi ekranowych przeciwko komarom niż zamka bezpieczeństwa.
Piskvor opuścił budynek
1
+1 Jest to również oszczędność zasobów serwera.
Xeoncross,
6

Zgadzam się z odpowiedzią @ Matteo; to, co widzisz, to w zasadzie tysiące systemów zombie przeprowadzających rozproszony atak brute-force na twój serwer, ponieważ działa na nim strona internetowa, co oznacza, że ​​mogą istnieć użytkownicy, którzy mogą mieć konto logowania, z którym można się domyślić minimalny wysiłek ze strony skrypciarza - ma program, który nakazuje tysiącom zombie podejmować próby brutalnej siły na kilkuset hostach stron jednocześnie i po prostu sporządzić listę udanych zwrotów.

Podobnie, czasami możesz zobaczyć wiele permuacji „http://twoj.web.host/phpmyadmin/” w swoich /var/log/apache2/access.logplikach; są to automatyczne skany w poszukiwaniu najczęstszych sposobów konfigurowania PHPMyAdmin, i spróbują wielu znanych exploitów, jeśli taki zostanie znaleziony (nawiasem mówiąc, właśnie dlatego zacząłem mówić klientom, aby korzystali z witryny PMA, którą osobiście skonfigurowałem i bądź na bieżąco, zamiast instalować własną wersję i zapominać o jej aktualizacji, ale teraz mamy styczną).

Oprócz wysłania oryginalnego polecenia, nie kosztuje to nawet czasu ani przepustowości; to ogień i zapomnij.

Innym bardzo przydatnym oprogramowaniem do takich sytuacji jest fail2ban , który używa iptables do blokowania prób połączenia po wielu wyraźnie fałszywych logowaniach lub innych próbach wykorzystania.

Shadur
źródło
4

Spróbuj skonfigurować Fail2ban . Zapewnia bardzo elastyczny sposób wyszukiwania nieudanych prób i zawiera szablony dla SSH, HTTP i wspólnych usług.

Fail2ban zaktualizuje iptables zgodnie z twoimi działaniami. Uwielbiam to.

Nacięcie
źródło
3

Za pomocą IPTABLES można zatrzymać ruch bez uruchamiania demona, takiego jak Fail2Ban lub DenyHosts.

#  Allows SSH connections (only 4 attempts by an IP every 3 minutes, drop the rest to prevent SSH attacks)
-A INPUT -p tcp -m tcp --dport 22 -m state --state NEW -m recent --set --name DEFAULT --rsource
-A INPUT -p tcp -m tcp --dport 22 -m state --state NEW -m recent --update --seconds 180 --hitcount 4 --name DEFAULT --rsource -j DROP
-A INPUT -p tcp -m state --state NEW --dport 22 -j ACCEPT
Xeoncross
źródło
2

Jeśli możesz sobie z tym poradzić, znajduję najlepszy sposób radzenia sobie z takimi sprawami, jak korzystanie z VPN. W ten sposób jedyne, na co mogą celować, to VPN. Na świecie nie powinny być dostępne żadne usługi, z wyjątkiem tych, które są niezbędne, aby „wszyscy” mieli do nich dostęp, takich jak serwer WWW. Cała reszta powinna być blokowana przez zaporę ogniową. Teraz jedyną rzeczą, na którą naprawdę musisz się martwić o zabezpieczenie, jest VPN. Jeśli możesz, uzyskaj statyczny adres IP komputerów, z których zarządzasz serwerami, i zablokuj VPN do tego konkretnego adresu IP. To naprawdę jedyny sposób, aby powstrzymać ludzi przed próbą brutalnego użycia haseł.

Kibee
źródło
0

Sshguard działa świetnie. Używam go razem z iptables.

Alexander
źródło