Użytkownik root jako jedyny w systemie od początku posiada pełne uprawnienia. Jest w stanie usunąć system z dysku przy pomocy jednego polecenia. Dlatego też tak istotne jest, aby na co dzień nie pracować na koncie root. W tym wpisie przedstawię 3 sposoby, które pozwolą na podniesienie bezpieczeństwa w systemie.
Oczywiście zablokowanie działania użytkownika root, jest niezbyt rozsądnym posunięciem, więc na początek warto utworzyć innego z takimi samymi uprawnieniami ale inną nazwą.
W konsoli z poziomu konta root niezależnie czy jest to Debian (i jego pochodne) czy Centos/Red Hat użyj
1 2 |
# useradd -m -c "Special user" userr # passwd userr |
Useradd utworzy nowego użytkownika (userr = userroot), przełącznik -m utworzy katalog domowy a -c opis tego konta. Passwd pomoże ustawić hasło dla nowego konta.
Kolejnym krokiem jest dodanie nowego konta do grupy wheel / sudo. Grupa wheel / sudo to specjalna grupa użytkowników używana w niektórych systemach uniksowych do kontrolowania dostępu do polecenia su, która pozwala użytkownikowi podszywać się pod innego użytkownika (zwykle superużytkownika).
1 2 |
# usermod -aG wheel userr #CentOS/RHEL # usermod -aG sudo userr #Debian/Ubuntu |
Po tym zabiegu przy użyciu su userr przełącz się na nowe konto, aby zablokować pierwotne konto root.
Blokowanie ROOT’a po SSH
Praca na serwerach opartych o GNU/Linux to głównie konsola (czyli okienko trybu tekstowego), gdzie wykonywane są polecenia, które mają wpływ na działanie całego systemu. Dobrym pomysłem jest domyślne wyłączenie możliwości zdalnego logowania się poprzez SSH konta root. Zdalnie zaloguje się zwykły użytkownik a dopiero później przełączy się przy pomocy su userr na użytkownika z wyższymi uprawnieniami. Innym pomysłem jest wykonywanie poleceń poprzez zastosowanie sudo nazwa_użytkownika polecenie.
Rozpocząć należy od edycji poniższego pliku sshd_config
1 |
sudo vim /etc/ssh/sshd_config |
należy odszukać wiersz z PermitRootLogin, jeżeli jest on ustawiony jako yes, należy zmienić tę wartość na no.

Ostatnim krokiem jest ponowne uruchomienie systemu lub tylko usługi ssh
1 2 3 |
$ sudo systemctl restart sshd lub $ sudo service sshd restart |
Zablokowanie dostępu do shell’a (konsoli)
Tworząc użytkownika otrzymuje on dostęp do shella (/bin/bash). Jednak, jeżeli użytkownik ma nie móc logować się do shell’a należy ustawić zamiast /bin/bash należy ustawić /sbin/nologin.
Zmiany tego ustawienia możliwa jest na co najmniej 2 sposoby:
- niebezpieczny, edytowanie pliku /etc/passwd przy pomocy vim, gdzie kasuje się /bin/bash a na jego miejsce dodany jest /sbin/nologin. Błąd przy edytowaniu tego pliku odetnie dostęp dla wszystkich do systemu.
- bezpieczny, użycie polecenia usermod –shell /sbin/nologin root, które to polecenie zaktualizuje bezpiecznie wpis w /etc/passwd, wymaga podania hasła obecnie zalogowanego użytkownika czyli userr.
Przy próbie logowania system będzie ciągle prosił o wpisanie loginu oraz hasła, bez komunikatu, że logowanie dla tego użytkownika jest zabronione.
Blokada konta ROOT’a poprzez PAM
Pluggable Authentication Modules (w skrócie PAM) to scentralizowana, podłączana, modułowa i elastyczna metoda uwierzytelniania w systemach Linux. PAM, poprzez moduł /lib/security/pam_listfile.so, pozwala na dużą elastyczność w ograniczaniu uprawnień określonych kont.
Powyższy moduł może służyć do odniesienia się do listy użytkowników, którzy nie mogą logować się za pośrednictwem niektórych usług docelowych, takich jak login, ssh i dowolne inne programy obsługujące PAM.
W tym przypadku chcemy wyłączyć dostęp użytkownika root do systemu, ograniczając dostęp do usług logowania i/lub sshd. Wszystkie polecenia należy wykonać z poziomu userr. Najpierw otwórz i edytuj plik usługi docelowej w katalogu /etc/pam.d/
1 2 3 |
$ sudo vim /etc/pam.d/login lub $ sudo vim /etc/pam.d/sshd |
Do pliku login i/lub sshd dodaj poniższy wiersz (na końcu pliku)
1 |
auth required pam_listfile.so onerr=succeed item=user sense=deny file=/etc/ssh/blockedusers |
W pliku blockedusers wystarczy dodać użytkownika, który nie będzie miał prawa logowania do systemu.
W kolejnym kroku należy utworzyć plik blockedusers
1 |
$ sudo vim /etc/ssh/blockedusers |
Warto również nadać do niego uprawnienia dla pliku blockedusers na poziomie 600 (u=r+w,g,o=brak). Czyli odczyt oraz zapis będzie miał tylko użytkownik userr.
Podsumowanie
Jak widzisz podniesienie poziomu bezpieczeństwa w systemie GNU/Linux poprzez wyłączenie lub mocne ograniczenie dostępu do niego poprzez użytkownika root.
Dziękuję Ci, za poświęcony czas na przeczytanie tego artykułu. Jeśli był on dla Ciebie przydatny, to gorąco zachęcam Cię do zapisania się na mój newsletter, jeżeli jeszcze Cię tam nie ma. Proszę Cię także o “polubienie” mojego bloga na Facebooku oraz kanału na YouTube – pomoże mi to dotrzeć do nowych odbiorców. Raz w tygodniu (niedziela punkt 17.00) otrzymasz powiadomienia o nowych artykułach / projektach zanim staną się publiczne. Możesz również pozostawić całkowicie anonimowy pomysł na wpis/nagranie.
Link do formularza tutaj: https://beitadmin.pl/pomysly
Pozostaw również komentarz lub napisz do mnie wiadomość odpisuję na każdą, jeżeli Masz jakieś pytania:).