Co jest domyślnie wyłączone na większości serwerów Linux (i dlaczego to ma znaczenie)
Kiedy aprowizujesz świeży serwer Linux — czy to VPS, serwer dedykowany, czy wirtualna maszyna hostowana w chmurze — system uruchamia się w celowo minimalistycznym i wzmocnionym środowisku. To nie jest niedopatrzenie ani niekompletna konfiguracja. Jest to celowa filozofia projektowania wbudowana w każdą główną dystrybucję Linux.
Nowoczesne kompilacje serwerów Linux usuwają niepotrzebne usługi, protokoły i interfejsy, aby zminimalizować powierzchnię ataku, zaoszczędzić zasoby systemowe i dać administratorom precyzyjną kontrolę nad tym, co działa na ich infrastrukturze. Zrozumienie, co jest domyślnie wyłączone — i dlaczego — jest podstawową wiedzą dla każdego administratora systemów, inżyniera DevOps lub dewelopera zarządzającego obciążeniami produkcyjnymi.
Ten przewodnik analizuje najczęstsze funkcje i usługi, które są domyślnie wyłączone lub nieobecne na serwerach Linux, wyjaśnia uzasadnienie bezpieczeństwa i operacyjne za każdą decyzją oraz pokazuje dokładnie, jak zweryfikować każde ustawienie na własnym systemie.
Dlaczego "Disabled by Default" to strategia bezpieczeństwa, a nie ograniczenie
Zasada działająca tutaj jest często nazywana "secure by default, extensible by choice". Zamiast dostarczać w pełni wyposażony system i ufać administratorom, że go zabezpieczą, nowoczesne dystrybucje Linux dostarczają zablokowany system i ufają administratorom, że włączą tylko to, czego potrzebują.
Takie podejście bezpośrednio zmniejsza ryzyko błędnej konfiguracji — jednej z głównych przyczyn naruszeń bezpieczeństwa serwerów. Każda usługa, która nie działa, to usługa, która nie może być wykorzystana. Każdy protokół, który nie jest włączony, to protokół, który nie może być przechwycony. Każdy otwarty port, który nie istnieje, to punkt wejścia, który atakujący nie mogą sondować.
Mając ten kontekst, przeanalizujmy szczegółowo każde domyślne ograniczenie.
1. Logowanie SSH jako root
Status: Domyślnie wyłączone na praktycznie wszystkich nowoczesnych dystrybucjach serwerów Linux
Bezpośrednie logowanie jako root przez SSH jest uniwersalnie wyłączone we współczesnych kompilacjach serwerów Linux — i z doskonałego powodu. Umożliwienie zdalnego dostępu root tworzy pojedynczy katastrofalny punkt awarii: jedno skompromitowane hasło daje atakującemu pełną, nieograniczoną kontrolę nad całym systemem.
Prawidłowy przepływ pracy polega na zalogowaniu się jako użytkownik bez uprawnień i eskalacji uprawnień za pomocą sudo lub su tylko w razie potrzeby. To tworzy ścieżkę audytu, ogranicza zasięg kradzieży poświadczeń i wymusza celowe działanie przed wykonaniem uprzywilejowanych poleceń.
Jak zweryfikować:
grep PermitRootLogin /etc/ssh/sshd_configOczekiwane wyjście na prawidłowo wzmocnionym serwerze:
PermitRootLogin noJeśli widzisz PermitRootLogin yes lub PermitRootLogin prohibit-password, natychmiast przejrzyj konfigurację SSH i dostosuj ją do polityki bezpieczeństwa Twojej organizacji.
Najlepsze praktyki:
Utwórz dedykowanego użytkownika administracyjnego, dodaj go do grupy sudo i upewnij się, że PermitRootLogin no jest ustawione przed wdrożeniem jakiejkolwiek usługi dostępnej publicznie.
2. Uwierzytelnianie hasłem w SSH
Status: Domyślnie wyłączone na większości serwerów aprowizowanych w chmurze
Na wielu platformach chmurowych i w środowiskach hostingu zarządzanego uwierzytelnianie hasłem SSH jest całkowicie wyłączone w momencie aprowizacji. Pary kluczy SSH są jedynym akceptowanym mechanizmem uwierzytelniania.
To jest znaczna poprawa bezpieczeństwa. Uwierzytelnianie hasłem jest podatne na ataki brute-force, credential stuffing i ataki słownikowe. Klucze SSH — szczególnie gdy są chronione hasłem — są obliczeniowo niemożliwe do brute-force’owania przy obecnej technologii.
Tradycyjne instalacje oparte na ISO mogą nadal domyślnie zezwalać na logowanie hasłem, ale najlepszą praktyką jest ich wyłączenie natychmiast po skonfigurowaniu uwierzytelniania opartego na kluczach.
Jak sprawdzić:
grep PasswordAuthentication /etc/ssh/sshd_configOczekiwane wyjście:
PasswordAuthentication noJak wyłączyć uwierzytelnianie hasłem:
Edytuj /etc/ssh/sshd_config i ustaw:
PasswordAuthentication no
PubkeyAuthentication yesNastępnie przeładuj demona SSH:
# Ubuntu/Debian
sudo systemctl reload ssh
# RHEL/AlmaLinux/Rocky Linux
sudo systemctl reload sshd> Ostrzeżenie: Zawsze potwierdź, że Twój klucz SSH działa, zanim wyłączysz uwierzytelnianie hasłem, lub ryzykujesz zablokowanie się na serwerze.
3. Starsze i nieszyfrowane protokoły sieciowe
Status: Brak w nowoczesnych kompilacjach serwerów
Usługi takie jak Telnet, FTP, Rlogin i Rsh nie są instalowane na nowoczesnych obrazach serwerów Linux. Protokoły te zostały zaprojektowane w erze, gdy szyfrowanie nie było priorytetem. Przesyłają poświadczenia, polecenia i dane w postaci zwykłego tekstu — co czyni je niezwykle łatwymi do przechwycenia za pomocą analizatora pakietów na dowolnym segmencie sieci między klientem a serwerem.
Protokoły te zostały zastąpione bezpiecznymi alternatywami:
| Starszy protokół | Bezpieczna zamiana |
|---|---|
| Telnet (port 23) | SSH (port 22) |
| FTP (port 21) | SFTP lub FTPS |
| Rlogin / Rsh | SSH |
Jak sprawdzić, czy nie są uruchomione starsze usługi:
ss -tulnpJeśli porty 21 (FTP) lub 23 (Telnet) nie pojawiają się w wynikach, te usługi nie są aktywne. Jeśli się pojawią, zbadaj natychmiast i usuń lub wyłącz je, chyba że istnieje konkretne, uzasadnione wymaganie.
4. Graficzne Interfejsy Użytkownika (GUI)
Status: Nie zainstalowany na edycjach serwerowych
Dystrybucje serwerowe — w tym Ubuntu Server, Debian, AlmaLinux, Rocky Linux i CentOS Stream — nie są wyposażone w graficzne środowiska pulpitu, takie jak GNOME, KDE Plasma lub XFCE. Jest to celowy i dobrze uzasadniony wybór.
Środowisko GUI:
- Zużywa znaczne zasoby RAM i CPU, które powinny być dedykowane dla obciążeń
- Wprowadza dużą liczbę dodatkowych pakietów oprogramowania, z których każdy stanowi potencjalną lukę w zabezpieczeniach
- Jest całkowicie niepotrzebne do administracji serwerem, która jest wykonywana przez wiersz poleceń za pośrednictwem SSH
Oczekiwanie jest jednoznaczne: serwery są zarządzane przez CLI. Jeśli stwierdzisz, że chcesz graficzny interfejs na serwerze produkcyjnym, jest to generalnie sygnał, że proces lub przepływ pracy wymaga ponownego rozważenia.
> Uwaga: Narzędzia takie jak Panele Kontrolne VPS — takie jak cPanel, Plesk lub DirectAdmin — zapewniają webowe graficzne interfejsy zarządzania bez konieczności instalowania pełnego środowiska pulpitu na serwerze.
5. Łańcuchy narzędzi programistycznych i kompilatory
Status: Nie zainstalowano w minimalnych obrazach serwera
Kompilatory takie jak gcc i narzędzia budowania takie jak make, cmake i autoconf są celowo nieobecne w większości minimalnych obrazów serwera Linux. Uzasadnienie jest dwojaki:
- Zmniejszony rozmiar obrazu: Minimalne obrazy są szybsze do wdrożenia, łatwiejsze do tworzenia kopii zapasowych i zużywają mniej zasobów.
- Wzmocnienie bezpieczeństwa: Jeśli atakujący uzyska dostęp do serwera, brak kompilatora uniemożliwia mu kompilowanie złośliwych plików binarnych lub kodu exploita bezpośrednio w systemie. Jest to znacząca przeszkoda w wielu łańcuchach ataków.
Jak sprawdzić:
gcc --versionJeśli łańcuch narzędzi nie jest zainstalowany, zobaczysz:
-bash: gcc: command not foundJak zainstalować, jeśli jest wymagane:
# Ubuntu/Debian
sudo apt update && sudo apt install build-essential
# RHEL/AlmaLinux/Rocky Linux
sudo dnf groupinstall "Development Tools"Instaluj narzędzia programistyczne tylko na serwerach, gdzie kompilacja jest rzeczywistym wymogiem operacyjnym — takich jak serwery budowania lub środowiska programistyczne — i unikaj instalowania ich na produkcyjnych serwerach aplikacji lub baz danych.
6. ICMP (Odpowiedzi Ping)
Status: Włączone domyślnie na poziomie systemu operacyjnego; często ograniczone na poziomie sieci/zapory
Serwery Linux domyślnie odpowiadają na żądania echo ICMP (ping) na poziomie systemu operacyjnego. Jednak wielu dostawców hostingu i platform chmurowych blokuje ICMP na poziomie zapory sieciowej lub grupy bezpieczeństwa, co powoduje, że serwery wydają się niedostępne dla ping, nawet gdy są w pełni operacyjne.
Tłumienie odpowiedzi ICMP sprawia, że serwer jest mniej wykrywalny podczas skanowania rozpoznawczego sieci. Jednak utrudnia to również legalne monitorowanie i diagnostykę — narzędzia takie jak ping i traceroute polegają na ICMP, aby działać prawidłowo.
Jak przetestować:
ping your_server_ipJak zablokować ICMP na poziomie systemu operacyjnego za pomocą iptables (jeśli wymagane):
sudo iptables -A INPUT -p icmp --icmp-type echo-request -j DROPDecyzja o blokowaniu ICMP powinna być podjęta świadomie, ważąc marginalną korzyść bezpieczeństwa względem kosztu operacyjnego dla przepływów pracy monitorowania i rozwiązywania problemów.
7. IPv6
Status: Domyślnie włączony w większości dystrybucji; może być ograniczony na poziomie dostawcy
IPv6 jest domyślnie włączony w nowoczesnych dystrybucjach Linux, w tym Ubuntu, Debian, Fedora i pochodnych RHEL. Jednak wielu dostawców hostingu wyłącza IPv6 na poziomie sieci, jeśli ich infrastruktura go nie obsługuje, co oznacza, że system operacyjny może być skonfigurowany dla IPv6, ale serwer nie będzie miał routowalnego adresu IPv6.
Jak sprawdzić adresy IPv6:
ip a | grep inet6Jeśli pojawia się tylko ::1 (adres loopback), IPv6 nie jest skonfigurowany na poziomie sieci, nawet jeśli jest włączony w systemie operacyjnym.
Jeśli Twoje obciążenie nie wymaga IPv6 i Twój dostawca go nie oferuje, możesz je wyłączyć na poziomie jądra, dodając następujące do /etc/sysctl.conf:
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1Następnie zastosuj zmianę:
sudo sysctl -p8. Niepotrzebne usługi systemowe i demony
Status: Różny w zależności od dystrybucji; minimalne instalacje wyłączają większość nieistotnych usług
Poza wymienionymi powyżej elementami, minimalne instalacje serwerów Linux zazwyczaj wyłączają lub pomijają szereg usług obecnych w kompilacjach dla komputerów stacjonarnych lub w pełnych wersjach:
- Bluetooth — nieistotne na serwerach; nie zainstalowane
- Avahi/mDNS — odkrywanie sieci lokalnej; niepotrzebne i potencjalnie zagrożenie bezpieczeństwa na serwerach
- Cups (drukowanie) — brak przypadku użycia na serwerze
- ModemManager — nieistotne na sprzęcie serwerowym
- NetworkManager — często zastępowany przez
systemd-networkdlub ręczną konfiguracjąnetplanna serwerach
Jak przeprowadzić audyt uruchomionych usług:
systemctl list-units --type=service --state=runningPrzeglądaj tę listę okresowo i wyłącz każdą usługę, która nie służy udokumentowanemu celowi na tym konkretnym serwerze.
Praktyczna Lista Kontrolna Bezpieczeństwa dla Nowo Aprowizowanego Serwera Linux
Po aprowizacji nowego serwera — niezależnie od tego, czy jest to hosting współdzielony uaktualniony do VPS czy zupełnie nowy serwer dedykowany — przejdź przez tę listę kontrolną, aby potwierdzić podstawową postawę bezpieczeństwa:
| Sprawdzenie | Polecenie | Oczekiwany Wynik | |
|---|---|---|---|
| Logowanie root SSH | grep PermitRootLogin /etc/ssh/sshd_config | no | |
| Uwierzytelnianie hasłem | grep PasswordAuthentication /etc/ssh/sshd_config | no | |
| Otwarte porty | ss -tulnp | Widoczne tylko oczekiwane porty | |
| GCC zainstalowany | gcc --version | command not found (chyba że jest wymagany) | |
| Uruchomione usługi | systemctl list-units --type=service --state=running | Tylko wymagane usługi | |
| Status IPv6 | `ip a | grep inet6` | Zgodnie z oczekiwaniami dla Twojego środowiska |
Wybór odpowiedniego środowiska hostingowego dla Twoich wymagań bezpieczeństwa
Domyślna postawa bezpieczeństwa Twojego serwera jest również wpływana przez wybrane środowisko hostingowe. VPS z cPanel zapewnia zarządzany interfejs oparty na sieci web, który upraszcza administrację, zachowując bazowy model bezpieczeństwa Linux. Bare-metal serwer dedykowany daje Ci pełną kontrolę nad każdą warstwą stosu, od firmware’u do aplikacji.
Dla zespołów uruchamiających aplikacje internetowe zabezpieczone SSL, połączenie serwera z prawidłowo skonfigurowanym certyfikatem SSL jest niezbędnym uzupełnieniem wzmacniania na poziomie serwera — szyfrując dane w transicie, tak jak uwierzytelnianie kluczem SSH chroni dostęp do samego serwera.
Podsumowanie
Serwery Linux dostarczone z pudełka są celowo aprowizowane w bezpiecznym, zminimalizowanym stanie. Logowanie SSH jako root jest wyłączone. Uwierzytelnianie hasłem jest ograniczone lub wyeliminowane. Starsze protokoły w postaci zwykłego tekstu są nieobecne. Żadne środowisko graficzne nie jest zainstalowane. Kompilatory i narzędzia budowania są wykluczone z obrazów bazowych.
W przeciwieństwie do tego, usługi takie jak odpowiedzi ICMP i IPv6 pozostają domyślnie włączone na poziomie systemu operacyjnego, ale są często ograniczone na poziomie sieci lub zapory w zależności od infrastruktury dostawcy i postawy bezpieczeństwa.
Ta filozofia „bezpieczne domyślnie, rozszerzalne z wyboru” zapewnia, że administratorzy zachowują pełną kontrolę nad swoim środowiskiem. Serwer udostępnia tylko to, co jest wyraźnie wymagane dla jego przeznaczonej roli — nic więcej. Każda usługa, którą włączysz, każdy port, który otworzysz, i każdy pakiet, który zainstalujesz, to świadoma decyzja z udokumentowanym uzasadnieniem.
Ta dyscyplina jest fundamentem bezpieczeństwa operacyjnego. To nie jest ograniczenie serwerów Linux. To jest dokładnie to, co czyni je platformą z wyboru dla infrastruktury produkcyjnej na całym świecie.
na wszystkich usługach hostingowych