Po raz pierwszy otwarcie serwera SSH do Internetu, co należy sprawdzić

9

Przez stosunkowo długi czas korzystałem z kilku serwerów, ale zawsze je wynajmowałem, więc nie mam dużego doświadczenia w zabezpieczaniu rzeczywistego serwera (w przeciwieństwie do aplikacji, na której działam).

Teraz mam ochotę otworzyć mój mały domowy serwer SSH do Internetu.

Będę go używał jako jedyny, moje hasła są wystarczająco skomplikowane, zmieniłem domyślny port SSH na około 4000, jedynym dostępnym portem jest ten port SSH poprzez przekierowanie portów na moim routerze / zaporze sieciowej i jest aktualizowany automatycznie co noc (działa Arch Linux, dystrybucja wersji kroczących).

Jakie są inne rzeczy, które powinienem zrobić, aby zapewnić bezpieczeństwo?

Dzięki!

houbysoft
źródło

Odpowiedzi:

22

Upewnij się, że logowanie użytkownika root jest wyłączone PermitRootLogin no. Zastanowiłbym się również nad całkowitym wyłączeniem haseł PasswordAuthentication noi używaniem kluczy publicznych PubkeyAuthentication yes.

chx
źródło
+1 mnie pobili ...
gravyface
1
Jeśli zamierzasz używać haseł, możesz spróbować przyjrzeć się dwuskładnikowemu systemowi uwierzytelniania. Jeśli nie, odradzam wpisywanie hasła w przypadkowym systemie kawiarni / biblioteki internetowej.
Mark Wagner,
4
Jeśli zezwolisz na autoryzację hasła, rozważ zainstalowanie fail2ban, aby zapobiec atakom typu brute force i użyj silnych haseł do dowolnego konta, które może logować się przez ssh
uSlackr
@embobo - dlaczego tak jest? Hasła przesyłane przez drut szyfrowane w ssh. Tak, klucz auth jest znacznie lepszy pod wieloma względami, ale dopóki hasła są wystarczająco silne i potwierdziłeś, że nikt nie surfuje po ramionach, nie jest to wielka sprawa.
EEAA,
3
@Erika Myślę, że embobo nawiązuje do ogólnej nieufności do jakiegokolwiek obcego systemu. Mimo że SSH jest zaszyfrowany, obca maszyna nadal może powiedzieć, rejestrować naciśnięcia klawiszy. Zatem hasło = zagrożone.
rthomson
9

Upewnij się, że dozwolony jest tylko SSH-2 (ponieważ SSH-1 budziło pewne obawy dotyczące bezpieczeństwa ):

Protocol 2

Określ, którzy jedyni użytkownicy mogą logować się przez SSH:

AllowUsers bob, john

Aby zwiększyć bezpieczeństwo, nie zezwalaj na uwierzytelnianie hasłem i używaj uwierzytelniania kluczem publicznym:

PasswordAuthentication no
PubkeyAuthentication yes

Uwaga: ten samouczek zawiera instrukcje dotyczące tworzenia kluczy i konfigurowania uwierzytelniania za pomocą klucza publicznego.

bambam
źródło
5

Oprócz kwestii związanych z wyłączaniem logowania roota lub korzystaniem wyłącznie z uwierzytelniania za pomocą klucza publicznego, sprawdziłbym również dwukrotnie, czy w systemie nie ma kont użytkowników z trywialnymi lub pustymi hasłami. Powiedziałeś, że twoje osobiste hasła są w porządku, ale to nie wyklucza utworzenia konta z niewłaściwym hasłem z innego powodu.

Jako przykład: musiałem naprawić jedną sieć, w której poprzedni administrator zainstalował nagios na wszystkich swoich systemach ze źródła i utworzył użytkownika nagios bez hasła lub hasła „nagios”, a następnie przystąpiłem do uzyskania trzech różnych maszyn zagrożone.

Daniel Lawson
źródło
4

Możesz spojrzeć na jakieś narzędzie czarnej listy IP, takie jak http://denyhosts.sourceforge.net/ . Blokuje wszystkie adresy IP, które próbują zalogować się bezskutecznie zbyt wiele razy i jest wysoce konfigurowalny.

Lynden Shields
źródło
Prawdopodobnie strata czasu, jeśli masz wyłączone logowanie do roota. Z mojego doświadczenia (2 lata serwera SSH w Internecie), tylko kilka osób ma nawet moją (oczywistą) nazwę użytkownika. Boty właśnie sprawdzają oczywiste hasła do popularnych nazw użytkowników (99% nieudanych logowań na moim serwerze dotyczy roota, co oczywiście jest wyłączone).
Brendan Long
4
Z pewnością nie jest to strata czasu - ale spójrz na fail2ban
symcbean
+1 za fail2ban.
JamesBarnett
1
root nie jest jedynym oczywistym kontem, które sprawdzają boty, zobacz nagios jak wspomniano powyżej. Istnieją również konta bazy danych, takie jak mysql i postgres. Plus wszelkie inne konta aplikacji.
JamesBarnett
Tak, faktycznie moja maszyna SSH skierowana do sieci została przejęta przez bota zgadującego hasło użytkownika innego niż root, więc zdecydowanie nie jest to strata czasu. Poza tym, od czasu uzyskania takiej czarnej listy, patrząc na dzienniki, bardzo mały procent prób dotyczy root.
Lynden Shields
3

Sugeruję, aby zainstalować Fail2ban! http://www.fail2ban.org

Blokuje adres IP po x nieudanych próbach przez y minut, pomagając utrzymać skryptkiddies w ryzach;)

Tie-fighter
źródło
0

Powtarzające się recenzje dziennika w odpowiednich częściach / komponentach systemów (w zależności od jego rzeczywistej / określonej konfiguracji) ...

użytkownik48838
źródło