Potencjalna porwana sesja SSH i najlepsze praktyki SSH

14

W tej chwili trochę wariuję. Jestem SSHing na zdalnym serwerze, który niedawno uruchomiłem. Robię to jako root. Zainstalowałem fail2ban i miałem ogromną liczbę zbanowanych adresów IP w dzienniku.

Podczas ostatniego logowania zauważyłem, że mój terminal jest naprawdę opóźniony, a następnie moje połączenie internetowe przestało działać. Kiedy kupiłem go ponownie po około 5 minutach, zalogowałem się ponownie na serwerze i zrobiłem „kto” i zdałem sobie sprawę, że zalogowało się dwóch użytkowników root. Pomyślałem, że jeśli moje połączenie zostanie zakończone, proces z ostatniej sesji byłby zatrzymany na serwerze?

Połączenie zakończyło się komunikatem „Zapis nieudany: Przerwana rura”, gdy po raz pierwszy rozłączyłem się. Zabiłem sesję bash z drugim rootem. Nie wiem wiele o bezpieczeństwie ssh, jednak czy sesje mogą zostać przejęte? czy istnieje sposób na sprawdzenie tego? Muszę kontynuować logowanie przez ssh, jakie środki ostrożności powinienem podjąć? Gdybym jakoś przechodził przez serwer proxy, aby dotrzeć do mojego serwera (jak mężczyzna w środku ataku), czy mogliby porwać moją sesję ssh?

MarMan29
źródło

Odpowiedzi:

40

Loginy root to prawdopodobnie wiszące sesje powłoki, którymi kiedyś byłeś. Twój serwer prawdopodobnie również otrzymuje dDOS ze wszystkimi próbami zalogowania go.

Zablokuj SSH. Nie zezwalaj na logowanie się do konta root, a żądania, które próbują brutalnie wymusić na tym komputerze awarię natychmiast (przyjmują znacznie mniej zasobów). Zaloguj się jako zwykły użytkownik i podnieś uprawnienia za pośrednictwem sudo, co i tak powinieneś robić. Ogranicz także logowanie SSH do listy adresów IP klientów, aby niesmaczne maszyny nie mogły nawet się zalogować.

Do logowania użytkownika używaj kluczy SSH zamiast haseł. Łatwiej jest sobie z nimi poradzić i można je zabezpieczyć hasłem na wypadek, gdybyś przypadkowo podał klucz prywatny w niewłaściwe miejsce (dając ci czas na jego wymianę i unieważnienie starego). Jak wspomniano w komentarzach @EEAA, musisz także wyłączyć uwierzytelnianie oparte na hasłach, jeśli chcesz ograniczyć klientom używanie tylko kluczy zamiast haseł i kluczy.

Jeśli klany mongolskie nadal będą obijać mury miasta, być może przenieś SSH do innego wysokiego portu (poniżej 1024, jak wskazał @AustinBurke - aby użyć uprzywilejowanego portu) zamiast 22. Spowoduje to zmniejszenie ruchu na tym porcie, jeśli to jest dla ciebie problemem (a większość botów nie jest zbyt wdzięczna, więc spróbują tylko na 22). Nie powstrzyma to próbowania portu 22 ani nawet skanowania komputera, aby sprawdzić, który port nasłuchuje w SSH, aw większości przypadków jest to niepotrzebną niedogodnością. Ale to może pomóc.

Inni mogą być w stanie podać więcej wskazówek, ale są to dość ogólne środki bezpieczeństwa dla publicznego serwera SSH.

Bufor
źródło
22
Używanie kluczy nie wystarczy. Należy również wyłączyć uwierzytelnianie hasłem.
EEAA
4
@marcelm Czy „ ogromna liczba zablokowanych adresów IP w dzienniku ” nie oznacza, że ​​tak się dzieje?
TripeHound
4
@tripehound Nie, nie ma. Nie mówi nic o relatywnym zużyciu zasobów.
marcelm
3
Jest to jednak wskazówka na ten temat, @marcelm.
Lekkość ściga się z Moniką
4
Chociaż jest to wykonalne w tym wszechświecie, ssh jest cholernie bezpieczne. Możesz oczywiście pobrać ten ruch w locie i zapisać go w stanie zaszyfrowanym, ale wymiana klucza Diffie – Hellmana służy do ustanowienia szyfrowanego kanału. Złamanie tego nie jest nawet możliwe, jeśli masz zarówno prywatny, jak i publiczny klucz ssh, który został użyty do uwierzytelnienia, ponieważ klucz strumienia nigdy nie został przekazany podczas sesji. Zanim ktoś złamie ten strumień, wszyscy będziemy martwi.
Spooler