Hardening serwerów Linux: od czego naprawdę zacząć
Praktyczny przewodnik po utwardzaniu serwerów Linux — bez kopiowania stuelementowych checklist, za to z naciskiem na działania o największym efekcie.
Hardening Linuksa kojarzy się z długimi listami kontrolnymi, które kopiuje się z internetu i odhacza bez zrozumienia. Takie podejście daje złudne poczucie bezpieczeństwa. Lepiej skupić się na ograniczonej liczbie działań, które realnie zmniejszają powierzchnię ataku. Poniżej kolejność, którą stosujemy w praktyce.
Zacznij od minimalizacji
Najprostsza zasada bezpieczeństwa: czego nie ma, tego nie da się zaatakować. Serwer powinien mieć zainstalowane wyłącznie pakiety niezbędne do pełnionej roli. Każda dodatkowa usługa, kompilator czy narzędzie to potencjalny wektor ataku i kolejny komponent do aktualizowania.
Sprawdź, jakie usługi nasłuchują na portach (ss -tulpn) i wyłącz wszystko, czego nie potrzebujesz. Serwer bazodanowy nie powinien mieć uruchomionego serwera WWW „na wszelki wypadek”.
Dostęp SSH — najczęstszy cel
SSH to brama do serwera i pierwszy cel automatycznych ataków. Trzy zmiany dają tu największy efekt:
- Wyłącz logowanie hasłem, wymuś klucze. Uwierzytelnianie kluczem publicznym eliminuje ataki słownikowe. W pliku
sshd_config:PasswordAuthentication no. - Zablokuj bezpośrednie logowanie roota.
PermitRootLogin no. Administrator loguje się na własne konto i podnosi uprawnienia przezsudo, co zapewnia rozliczalność. - Ogranicz dostęp. Tam, gdzie to możliwe, ogranicz SSH do zaufanych adresów lub schowaj go za VPN. Mechanizmy takie jak fail2ban dodatkowo ograniczają próby brute-force.
Aktualizacje i ich automatyzacja
Niezałatany system to najczęstsza przyczyna włamań. Większość udanych ataków wykorzystuje znane podatności, dla których łatka istniała od miesięcy. Skonfiguruj automatyczne instalowanie aktualizacji bezpieczeństwa (np. unattended-upgrades w Debianie/Ubuntu) i ustal proces dla aktualizacji wymagających restartu.
Automatyzacja jest tu kluczowa — ręczne łatanie kilkudziesięciu serwerów zawsze gdzieś się zatrzyma.
Zasada minimalnych uprawnień
Konta i procesy powinny działać z najniższymi możliwymi uprawnieniami. Usługi uruchamiaj na dedykowanych kontach systemowych, nigdy jako root, jeśli nie jest to absolutnie konieczne. Uprawnienia sudo przyznawaj imiennie i precyzyjnie, zamiast hurtowo dodawać użytkowników do grupy administracyjnej.
Warto przejrzeć też pliki z bitem SUID — to klasyczna ścieżka eskalacji uprawnień, którą atakujący sprawdza w pierwszej kolejności.
Zapora sieciowa z domyślną odmową
Firewall powinien działać według zasady „domyślnie blokuj, jawnie zezwalaj”. Otwarte powinny być wyłącznie porty rzeczywiście potrzebnych usług. Niezależnie od tego, czy używasz nftables, ufw czy grup zabezpieczeń w chmurze, reguła jest ta sama: ruch przychodzący domyślnie odrzucony, wyjątki świadome i udokumentowane.
Logowanie i wykrywanie zmian
Hardening to nie tylko zamykanie drzwi, ale i zdolność zauważenia, że ktoś próbował je sforsować. Centralizuj logi poza serwerem (atakujący po włamaniu czyści lokalne logi), monitoruj logowania i operacje sudo, a integralność krytycznych plików kontroluj narzędziami typu AIDE. Audyt jądra (auditd) pozwala rejestrować zdarzenia istotne z punktu widzenia bezpieczeństwa.
Oprzyj się na standardach, ale ze zrozumieniem
Zamiast wymyślać własną listę, warto wykorzystać CIS Benchmarks — szczegółowe, sprawdzone wytyczne dla konkretnych dystrybucji. Kluczowe słowo to „ze zrozumieniem”: każdą rekomendację należy ocenić w kontekście roli serwera, a nie stosować na ślepo, bo niektóre ustawienia mogą zakłócić działanie aplikacji.
Podsumowanie
Skuteczny hardening Linuksa to nie tysiąc drobnych ustawień, lecz kilka decyzji o dużym wpływie: minimalizacja usług, zabezpieczenie SSH, automatyczne aktualizacje, minimalne uprawnienia, restrykcyjny firewall i centralne logowanie. Jeśli chcesz, żebyśmy przeprowadzili przegląd konfiguracji Twoich serwerów według CIS Benchmarks, umów się na hardening.