Jak wyłączyć logowanie roota w Ubuntu?

28

jakiś czas temu podałem rootowi hasło, abym mógł zalogować się jako root i załatwić kilka rzeczy. Teraz chcę wyłączyć logowanie roota, aby zwiększyć bezpieczeństwo, ponieważ zamierzam udostępniać moją usługę w Internecie. Widziałem kilka sposobów na zrobienie tego ( sudo passwd -l rootbawiąc się /etc/shadowitd.), Ale nigdzie nie jest powiedziane, jaki jest najlepszy / najbardziej rozsądny sposób. Zrobiłem to, sudo passwd -l rootale widziałem porady, które mówią, że może to wpłynąć na skrypty inicjujące i że nie jest tak bezpieczne, jak się wydaje, ponieważ nadal prosi o hasło, jeśli próbujesz się zalogować, a nie całkowicie odmawia dostępu. Jak więc można to osiągnąć?

EDYCJA: aby wyjaśnić, jest to dla lokalnego logowania jako root; Wyłączyłem już zdalne logowanie przez SSH. Chociaż próba zalogowania się jako root przez SSH nadal monituje o hasło roota (co zawsze kończy się niepowodzeniem). Czy to złe?

Ben Hymers
źródło
1
Wyłączenie lokalnego dostępu do konta root ma prawie zerową korzyść dla bezpieczeństwa. Użytkownik z dostępem fizycznym może obrócić twoje urządzenie na niezliczone sposoby.
jscott,
Punkt wzięty. Nie musisz logować się jako root, jeśli możesz po prostu wyjąć dyski twarde. Wciąż chciałbym wiedzieć, jak przywrócić konto roota do stanu sprzed zmiany, choć teraz z ciekawości.
Ben Hymers
zobacz aktualizację mojej odpowiedzi poniżej. Myślę, że teraz rozumiem, o co pytasz.
jscott,
@jscott podczas wyłączania roota może nie zapewniać bezpieczeństwa przed włamaniem, ale nie zalogowanie się, ponieważ root zapewnia przełącznik bezpieczeństwa przed zniszczeniem sysa za pomocą niewłaściwie umieszczonego rmpolecenia. Czegoś nauczyłem się na własnej skórze. Tak, po prostu NIE można zalogować się jako root, ale wyłączenie to ma sens z punktu widzenia administratora systemu.
codechimp,
Wygląda świetnie na VPS lub hosting, naprawdę nie wymaga myślenia.
jjxtra

Odpowiedzi:

34

Dla mnie jest dyskusyjne, że wyłączenie roota jest warte potencjalnych problemów. Nigdy nie testowałem tak skonfigurowanego serwera. Moje preferencje to zezwalaj tylko na dostęp lokalny do roota. Jeśli osoba atakująca ma fizyczny dostęp do twojego serwera, możesz zapomnieć o wszystkim, co zrobiłeś, aby „zabezpieczyć” swoją instalację.

Wyłącz sshdostęp do katalogu głównego , edytując, /etc/ssh/sshd_configaby zawierał:

PermitRootLogin no

Manipulując /etc/shadow, chsh -s /bin/false rootwszystko można cofnąć za pomocą prostego bootowalnej płyty CD / thumbdrive.

Zaktualizuj według komentarza:

From help.ubuntu.com : „Domyślnie hasło do konta root jest zablokowane w Ubuntu ”. Proszę zobaczyć sekcję „Ponowne wyłączanie konta root”. Aby zresetować stan konta root, w celu instalacji domyślnej użyj następującego polecenia:

sudo usermod -p '!' root
jscott
źródło
Żaden system nie jest bezpieczny, gdy atakujący ma fizyczny dostęp do tego systemu. Kiedy możesz edytować / etc / shadow, co powstrzymuje cię przed edycją / etc / ssh / sshd_config?
Sven
@SvenW: Dokładnie. Dlatego debatuję nad użytecznością, pod względem bezpieczeństwa, nawet kłopotania się z „wyłączaniem” roota. Ogranicz dostęp roota, tak. Wyłącz konto, nie.
jscott,
4
sudo service ssh restart ....... po wykonaniu tej czynności.
Naweed Chougle,
Przywoływany plik pomocy zawiera teraz następującą komendę: sudo passwd -dl root
MrG
21

Zakładam, że odnosisz się do zdalnego logowania przez ssh. Dodaj następujący wiersz do /etc/ssh/sshd_config:

PermitRootLogin no

i zrestartuj usługę ssh

sudo service ssh restart

To powinno wystarczyć i możesz zachować swoje konto roota tak, jak jest (lub spróbować je wyłączyć, jeśli uważasz, że jest to konieczne).

kynan
źródło
Przepraszam, powinienem był powiedzieć, że dotyczy to lokalnych loginów. Zaktualizowałem pytanie.
Ben Hymers
4

Na główne pytanie udzielono odpowiedzi kilka razy, ale na drugie pytanie nie. SSH monituje o hasło po wprowadzeniu roota po wyłączeniu go jako funkcji bezpieczeństwa. Uruchomi się również, jeśli spróbujesz zalogować się jako lkjfiejlksji.

Ma to na celu uniemożliwienie komuś przetestowania stosu nazw użytkowników, aby spróbować sprawdzić, które są prawidłowe w twoim systemie. Jednak z punktu widzenia bezpieczeństwa, jeśli wyłączyłeś rootowanie przez SSH, skonfigurowałbym również program wykrywający bruteforce (taki jak fail2ban) i ustawiłem go tak, aby nawet jeśli ktoś spróbuje zalogować się jako root, blokuje go próbowanie dodatkowych ataków.

Ryan Gooler
źródło
Dobra odpowiedź, dzięki! Mam już skonfigurowany fail2ban, skonfiguruję go tak, aby blokował się przy pierwszej próbie zalogowania jako root, dobra rada.
Ben Hymers
2

Najlepszym sposobem jest zastąpienie zaszyfrowanego hasła * w / etc / shadow (drugie pole po pierwszym „:”), IMHO. Wyłącz także logowanie roota dla ssh (w ten sposób po prostu niemożliwe jest logowanie przez ssh jako root) i być może ograniczenie ssh do logowania do certyfikatu, co jest znacznie bezpieczniejsze niż logowanie oparte na haśle.

W większości przypadków SSH powinna być jedyną dostępną z zewnątrz usługą, która potencjalnie umożliwia logowanie do roota, więc te drzwi byłyby zablokowane.

Aby dodatkowo to ograniczyć, możesz zainstalować coś takiego jak fail2ban, który blokuje adresy IP przez pewien czas po kilku nieudanych próbach logowania.

Sven
źródło
Mam wrażenie, że „*” jest takie samo jak „!”, Zgodnie z przyjętą odpowiedzią, więc głosuję również na tę odpowiedź.
Ben Hymers,
1

JR i in.,

Twoi AllowUsers zaprowadzili mnie do tego https://help.ubuntu.com/community/SSH/OpenSSH/Configuring

sudo vi / etc / ssh / sshd_config

PermitRootLogin tak (zmieniono na nie)

(dodaj wiersz na dole pliku) DenyUsers użytkownik1 użytkownik2

zapisz i wyjdź, a następnie

ponowne uruchomienie ssh usługi sudo

Rozwiązałem mój problem. Dziękuje za wszystko.

Jeff
źródło
0

Jeśli chcesz wyłączyć lokalne logowanie roota, możesz spróbować zmodyfikować / etc / passwd i zastąpić / bin / bash przez / bin / false. JEDNAK, ponieważ go nie testowałem, powiedziałbym, aby pozostawić otwartą sesję root po stronie, przetestować ją, a jeśli jest jakiś dziwny efekt uboczny, zmień go z powrotem.

Julien Vehent
źródło
0

Re: Bezpieczeństwo.

IMHO jest tylko tyle, co możesz zrobić, ze względów bezpieczeństwa, bez odłączania skrzynki, odłączania jej od sieci i spawania w 3-calowym, kuloodpornym pudełku ze stali węglikowej.

Pomyśl o tym w ten sposób - jeśli ludzie będą mogli zhakować Departament Obrony, CIA, FBI i Citibank - reszta z nas, zwykli śmiertelnicy, nie poradzą sobie znacznie lepiej.

Odp: Bezpieczeństwo SSH.

Nie tylko zabraniam dostępu do roota przez ssh, ale także ustawiam parametr „AllowUsers” na moją i tylko moją nazwę użytkownika. W ten sposób nikt oprócz mojego użytkownika nie może zalogować się przez ssh. Może to być zbędne, ponieważ w moim przypadku tworzę tylko JEDNEGO użytkownika root.

Niestety, jak już wiele razy powiedzieli inni, gdy tylko ktoś uzyska fizyczny dostęp do skrzynki, wszystkie zakłady są WYŁĄCZONE!

Wymiana certyfikatu na logowanie ssh? Hmmmm . . . Brzmi dobrze. Jak ty to robisz?

Jim (JR)

Jim
źródło