Zaoszczędź 15% na wszystkich usługach hostingowych

Sprawdź swoje umiejętności i zdobądź Rabat na dowolny plan hostingowy

Użyj kodu: Skills Rozpocznij
Sekcja
Bezpieczeństwo Linux

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_config

Oczekiwane wyjście na prawidłowo wzmocnionym serwerze:

PermitRootLogin no

Jeś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_config

Oczekiwane wyjście:

PasswordAuthentication no

Jak wyłączyć uwierzytelnianie hasłem:

Edytuj /etc/ssh/sshd_config i ustaw:

PasswordAuthentication no
PubkeyAuthentication yes

Nastę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 / RshSSH

Jak sprawdzić, czy nie są uruchomione starsze usługi:

ss -tulnp

Jeś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:

  1. Zmniejszony rozmiar obrazu: Minimalne obrazy są szybsze do wdrożenia, łatwiejsze do tworzenia kopii zapasowych i zużywają mniej zasobów.
  2. 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 --version

Jeśli łańcuch narzędzi nie jest zainstalowany, zobaczysz:

-bash: gcc: command not found

Jak 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_ip

Jak zablokować ICMP na poziomie systemu operacyjnego za pomocą iptables (jeśli wymagane):

sudo iptables -A INPUT -p icmp --icmp-type echo-request -j DROP

Decyzja 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 inet6

Jeś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 = 1

Następnie zastosuj zmianę:

sudo sysctl -p

8. 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-networkd lub ręczną konfiguracją netplan na serwerach

Jak przeprowadzić audyt uruchomionych usług:

systemctl list-units --type=service --state=running

Przeglą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:

SprawdzeniePolecenieOczekiwany Wynik
Logowanie root SSHgrep PermitRootLogin /etc/ssh/sshd_configno
Uwierzytelnianie hasłemgrep PasswordAuthentication /etc/ssh/sshd_configno
Otwarte portyss -tulnpWidoczne tylko oczekiwane porty
GCC zainstalowanygcc --versioncommand not found (chyba że jest wymagany)
Uruchomione usługisystemctl list-units --type=service --state=runningTylko wymagane usługi
Status IPv6`ip agrep 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.