Wszyscy w Internecie radzą wyłączyć logowanie roota przez SSH, ponieważ jest to zła praktyka i dziura w systemie bezpieczeństwa, ale nikt nie wyjaśnia, dlaczego tak jest.
Co jest takiego niebezpiecznego w włączaniu logowania roota (szczególnie przy wyłączonym logowaniu się hasłem)?
Jaka jest różnica między nazwą użytkownika symbolu X a hasłem symbolu Y lub nazwą użytkownika root a hasłem symbolu X + Y z punktu widzenia bezpieczeństwa, na wypadek gdyby autoryzacja hasłem była dozwolona?
su -
albosudo -i
dlatego, że ich rzeczywista logowania mogą być nagrywane. To sprawia, że odwołanie całego dostępu do osoby jest znacznie prostsze, więc nawet jeśli mają hasło roota, nie mogą nic z tym zrobić.Odpowiedzi:
Dlaczego rootowanie przez SSH jest złe
Istnieje wiele botów, które próbują zalogować się do komputera za pośrednictwem SSH. Te boty działają w następujący sposób.
Wykonują coś podobnego,
ssh root@$IP
a następnie próbują standardowych haseł, takich jak „root” lub „password123”. Robią to tak długo, jak to możliwe, dopóki nie znajdą odpowiedniego hasła. Na ogólnodostępnym serwerze możesz zobaczyć wiele wpisów w swoich plikach dziennika. Mogę zwiększyć do 20 na minutę lub więcej.Gdy atakujący mają szczęście (lub wystarczająco dużo czasu) i znajdują hasło, mają dostęp do konta root, a to oznacza, że masz kłopoty.
Ale jeśli nie zezwolisz rootowi na logowanie się przez SSH, bot musi najpierw odgadnąć nazwę użytkownika, a następnie pasujące hasło. Powiedzmy, że lista prawdopodobnych haseł zawiera
N
wpisy, a lista prawdopodobnych użytkowników jestM
duża. Bot ma zestawN*M
wpisów do przetestowania, więc jest to nieco trudniejsze dla bota w porównaniu z przypadkiem root, gdzie jest to tylko zestaw wielkościN
.Niektórzy powiedzą, że to dodatkowe
M
nie jest prawdziwym zyskiem w zakresie bezpieczeństwa i zgadzam się, że jest to tylko niewielkie ulepszenie bezpieczeństwa. Ale myślę o tym bardziej jako o tych małych kłódkach, które same w sobie nie są bezpieczne, ale utrudniają wielu ludziom łatwy dostęp. Jest to oczywiście ważne tylko wtedy, gdy twój komputer nie ma innych standardowych nazw użytkowników, takich jak tor lub apache.Lepszym powodem, aby nie zezwalać na rootowanie, jest to, że root może wyrządzić o wiele więcej szkód na komputerze niż zwykły użytkownik. Jeśli więc przy odrobinie szczęścia znajdą hasło, cały system zostanie utracony, a przy standardowym koncie użytkownika można tylko manipulować plikami tego użytkownika (co jest nadal bardzo złe).
W komentarzach wspomniano, że normalny użytkownik może mieć prawo do korzystania,
sudo
a jeśli odgadnie hasło tego użytkownika, system również zostanie całkowicie utracony.Podsumowując, powiedziałbym, że nie ma znaczenia, które hasło użytkownika otrzyma atakujący. Kiedy odgadną jedno hasło, nie możesz już ufać systemowi. Osoba atakująca może wykorzystać prawa tego użytkownika do wykonywania poleceń
sudo
, osoba atakująca może również wykorzystać słabość systemu i uzyskać uprawnienia roota. Jeśli atakujący miał dostęp do twojego systemu, nie możesz już mu ufać.Należy pamiętać, że każdy użytkownik w twoim systemie, który może logować się przez SSH, jest dodatkową słabością. Wyłączając root usuwasz jedną oczywistą słabość.
Dlaczego hasła nad SSH są złe
Powód wyłączenia haseł jest naprawdę prosty.
Cały pomysł wypróbowania haseł działa tylko wtedy, gdy można je odgadnąć. Kiedy użytkownik ma hasło „pw123”, twój system staje się niepewny. Innym problemem związanym z hasłami wybranymi przez ludzi jest to, że ich hasła nigdy nie są tak naprawdę losowe, ponieważ byłoby to trudne do zapamiętania.
Ponadto zdarza się, że użytkownicy ponownie używają swoich haseł, logując się na Facebooku lub na swoich kontach Gmail i na serwerze. Gdy haker otrzyma hasło do konta tego użytkownika na Facebooku, może dostać się na Twój serwer. Użytkownik może łatwo zgubić go przez phishing lub serwer Facebooka może zostać zhakowany.
Ale kiedy używasz certyfikatu do logowania, użytkownik nie wybiera swojego hasła. Certyfikat oparty jest na losowym ciągu, który jest bardzo długi od 1024 bitów do 4096 bitów (hasło ~ 128 - 512 znaków). Ponadto ten certyfikat służy tylko do logowania się na serwerze i nie jest używany z żadnymi usługami zewnętrznymi.
Spinki do mankietów
http://bsdly.blogspot.de/2013/10/the-hail-mary-cloud-and-lessons-learned.html
Ten artykuł pochodzi z komentarzy i chciałem nadać mu nieco bardziej widoczną pozycję, ponieważ zagłębia się nieco w sprawę botnetów, które próbują zalogować się przez SSH, jak to robią, jak wyglądają pliki dziennika i co można zrobić, aby ich powstrzymać. Zostało napisane przez Petera Hansteena.
źródło
N*M > N
. Ponieważ większość hostów * nix maroot
użytkownika, jeśli zezwolisz rootowi na logowanie się bezpośrednio z hosta zdalnego, rozmiar matrycy testowej to liczba haseł do wypróbowania; nie zezwalając na bezpośrednie logowanie do konta root, liczba możliwych kombinacji mnożona jest przez liczbę nazw użytkowników, które chcesz przetestować (i nadal nie ma gwarancji, że będziesz testować prawidłowe nazwy użytkowników!).# of X length words
*# of Y length words
można wypróbować * kombinacje. Gdy nazwa użytkownika jest stała (np. Root), ale hasło ma długość X + Y,# of X+Y length words
możliwe są hasła. I# of X+Y length words
=# of X length words * # of Y length words
Mogą to być niektóre z powodów, dla których bezpośrednie logowanie do roota nie powinno być dozwolone.
Ale to tylko WSKAZÓWKA góry lodowej. Musisz skonfigurować inne ograniczenia i konfiguracje, takie jak:
źródło
sudo
konfiguracją. Prawdziwy zabójca to efekt multiplikacji, gdy nie masz jednej nazwy użytkownika, na którą można liczyć, że będzie ważna na danym hoście.Masz rację, że nazwa użytkownika root i hasło symbolu X + Y są kryptograficznie co najmniej tak bezpieczne, jak nazwa użytkownika symbol X + hasło symbolu Y. W rzeczywistości jest to jeszcze bardziej bezpieczne, ponieważ nazwiska ludzi są łatwe do odgadnięcia (boty mogą po prostu wypróbować Johna, Mike'a, Billa itp. ... i tak dalej: to właśnie robi wielu z nich zamiast próbować rootowania). I szczególnie nie masz szczęścia, jeśli jest to atak ukierunkowany, ponieważ jeśli ktoś chce złamać serwer firmy, nie byłoby problemu ze znalezieniem nazwy (pseudonimu) sysadmin.
A gdy tylko atakujący uzyska dostęp do konta, którego sysadmin używa do logowania ssh (a następnie używa
su
lubsudo
wykonuje swoje zadania), może zainfekować sesję tego użytkownika programem, który wyśle hasło roota atakującego, gdy sysadmin wpisze następne czas.Jest to dowolny rodzaj loginu głównego, który jest (lub powinien być) uważany za złą praktykę z punktu widzenia bezpieczeństwa. „Normalny” login użytkownika -> łańcuch su / sudo dodaje ścieżkę audytu. Mówiąc wprost: pozwala dowiedzieć się, kto co zrobił.
Szczególnym przypadkiem może być ten, w którym tylko jedna osoba ma dostęp do konta root. W takim przypadku użycie dodatkowego „normalnego” użytkownika nie doda dużej wartości (przynajmniej nigdy nie widziałem tej wartości). Ale i tak - powinieneś mieć prostego użytkownika w systemie (do zadań nieadministracyjnych, uruchamiania wget itp .;-)).
źródło
Atakujący (bot / botnet / hacker) musi tylko odgadnąć hasło i ma pełną kontrolę nad systemem, jeśli jesteś otwarty na Internet. Ponadto żadne konto systemowe (dane www, serwer proxy itp.) Nie powinno być w stanie zalogować się przez SSH z tych samych powodów.
Jeśli wyłączyłeś logowanie hasłem (na przykład za pomocą klucza publicznego), weź pod uwagę, że ktokolwiek, kto przejmie klucz prywatny, uzyska pełną kontrolę nad systemem. Zobacz, dlaczego używanie klucza publicznego z użytkownikiem jest lepsze poniżej.
Dodatkowa nazwa użytkownika może dodać warstwę bezpieczeństwa, ponieważ: a) osoba atakująca powinna znać zarówno parę, nazwę użytkownika, jak i hasło; b) w przypadku, gdy atakujący naruszy Twój system, nie będzie miał natychmiastowego dostępu do konta uprzywilejowanego, co doda odrobinę niuansów dla atakującego.
W tym przypadku klucz publiczny jest również plusem, ponieważ:
źródło
Nie jest to takie złe, o ile podejmujesz środki ostrożności. Jako przykład możesz zainstalować CSF (Skonfiguruj zaporę serwera) i ustawić liczbę dozwolonych prób niepowodzenia, więc jeśli ktoś spróbuje, powiedzmy ponad 5 prób awarii, to są one automatycznie blokowane. Tak więc cała pierwsza część najlepszego odpowiadającego nie będzie wcale problemem. Zdarzyło mi się to wiele razy i na szczęście wszyscy wprowadzający zostali na stałe zablokowani. Myślę, że dla serwera nie jest to duży problem, jeśli jesteś jedyną osobą zarządzającą serwerem, ale oczywiście, jeśli jest wielu administratorów systemu lub pracujesz w organizacji, to oczywiście nie używaj korzeń. Wydaje mi się, że także w przypadku komputerów stacjonarnych użycie innego konta jest lepsze, ponieważ istnieje ryzyko bezpieczeństwa, ponieważ używasz dużo oprogramowania, ale na serwerze nie „ Jeśli wybierzesz losowe oprogramowanie, któremu nie ufasz, upewnij się, że utrzymujesz je na jak najniższym poziomie. Wniosek jest następujący: nie, to nie jest naprawdę szkodliwe, jeśli wiesz, jak prawidłowo zarządzać serwerem.
źródło