Lista kontrolna zabezpieczania serwerów Linux
15 min czytania - 8 maja 2026

Lista kontrolna krok po kroku do zabezpieczenia serwera Linux. Obejmuje SSH, zapory ogniowe, łatanie, uprawnienia do plików, SELinux/AppArmor i rejestrowanie audytu
Lista kontrolna zabezpieczania serwerów Linux
Domyślna instalacja Linuksa nie jest bezpieczną instalacją Linuksa. Błędne konfiguracje, takie jak otwarty dostęp SSH do roota, słabe zapory ogniowe i niezaktualizowane oprogramowanie, są przyczyną większości naruszeń. Nowe serwery są poddawane zautomatyzowanemu skanowaniu w ciągu kilku minut od uruchomienia, więc utwardzenie powinno nastąpić przed wszystkim innym.
Ta lista kontrolna obejmuje podstawowe kroki: blokowanie SSH, konfigurowanie zapór ogniowych, łatanie, zaostrzanie uprawnień do plików, włączanie obowiązkowej kontroli dostępu i konfigurowanie dziennika audytu.
Zablokowanie SSH
SSH jest głównym punktem dostępu i pierwszą rzeczą, którą atakujący sondują. Domyślna konfiguracja (hasło auth, login root, port 22) jest dokładnie tym, czego szukają automatyczne skanery.
Wygeneruj parę kluczy Ed25519, która oferuje lepsze bezpieczeństwo i wydajność niż RSA:
ssh-keygen -t ed25519Gdy logowanie oparte na kluczach zadziała, zaktualizuj /etc/ssh/sshd_config:
PasswordAuthentication no
ChallengeResponseAuthentication no
PubkeyAuthentication yes
PermitRootLogin no
AllowUsers yourname
MaxAuthTries 3
ClientAliveInterval 300
ClientAliveCountMax 2Zmień domyślny port z 22 na coś mniej oczywistego. Nie powstrzyma to zdeterminowanego atakującego, ale znacznie zmniejszy szum automatycznego skanowania.
Zawsze testuj zmiany z drugiego terminala przed zamknięciem bieżącej sesji. Uruchom sudo sshd -t, aby sprawdzić błędy składni, a następnie systemctl reload sshd, aby zastosować bez przerywania aktywnych połączeń.
Dodaj uwierzytelnianie dwuskładnikowe
2FA oznacza, że atakujący potrzebuje zarówno klucza SSH, jak i fizycznego dostępu do urządzenia. Zainstaluj moduł Google Authenticator PAM:
sudo apt install libpam-google-authenticator # Debian/Ubuntu
sudo dnf install google-authenticator # RHEL/FedoraUruchom google-authenticator dla każdego użytkownika, aby wygenerować tajny klucz i kody odzyskiwania. Przechowuj kody odzyskiwania w trybie offline.
Dodaj ten wiersz do /etc/pam.d/sshd:
auth required pam_google_authenticator.soNastępnie zaktualizuj /etc/ssh/sshd_config:
KbdInteractiveAuthentication yes
UsePAM yes
AuthenticationMethods publickey,keyboard-interactiveUtrzymuj aktywną sesję otwartą podczas testowania. Kody TOTP zależą od dokładnego czasu systemowego, więc upewnij się, że NTP jest uruchomiony.
Konfiguracja zapór sieciowych i Fail2Ban
Uruchom zaporę opartą na hoście, nawet jeśli serwer znajduje się za zaporą sieciową. Zasada jest prosta: domyślnie odrzuć cały ruch przychodzący, a następnie zezwól tylko na to, czego potrzebujesz.
Dla Ubuntu/Debian (UFW):
ufw default deny incoming
ufw default allow outgoing
ufw limit ssh
ufw enableDla RHEL/Rocky/AlmaLinux (Firewalld):
firewall-cmd --set-default-zone=public
firewall-cmd --permanent --add-service=ssh
firewall-cmd --permanent --add-service=https
firewall-cmd --reloadWzmocnij stos sieciowy jądra, dodając te ustawienia do /etc/sysctl.conf:
net.ipv4.tcp_syncookies = 1
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.icmp_echo_ignore_broadcasts = 1Zainstaluj Fail2Ban
Fail2Ban monitoruje próby logowania i blokuje adresy IP po powtarzających się niepowodzeniach. Utwórz /etc/fail2ban/jail.local (nie edytuj bezpośrednio jail.conf, aktualizacje go nadpiszą) i skonfiguruj go tak, aby blokował IP na godzinę po trzech nieudanych próbach w ciągu 10 minut. Ustaw prawidłowy backend dla firewalla(banaction = ufw lub banaction = nftables).
Audyt usług i usuwanie starszych protokołów
Sprawdź, co nasłuchuje za pomocą ss -tlnp i co jest uruchomione za pomocą systemctl list-units --type=service --state=running. Wyłącz wszystko, czego nie potrzebujesz: Bluetooth, CUPS, avahi-daemon, rpcbind.
Usuń starsze protokoły, które przesyłają dane w postaci czystego tekstu:
| Legacy Protocol | Port(y) | Bezpieczna alternatywa |
|---|---|---|
| Telnet | 23 | SSH |
| RSH / Rlogin | 512, 513, 514 | SSH |
| FTP | 21 | SFTP / FTPS |
| TFTP | 69 | SFTP / SCP |
| NIS | Zmienna | LDAP / Kerberos |
Na Debian/Ubuntu: sudo apt-get --purge remove xinetd nis tftpd telnetd rsh-server. W systemach opartych na RHEL: yum erase xinetd ypserv tftp-server telnet-server rsh-server. Zweryfikuj usunięcie za pomocą ss -tulpn.
Aktualizuj i automatyzuj aktualizacje
Aktualizacja systemu to najszybszy sposób na usunięcie znanych luk w zabezpieczeniach. Aktualizacje należy uruchamiać natychmiast po udostępnieniu systemu:
apt update && apt upgrade -y # Debian/Ubuntu
dnf update -y # RHEL/RockyNastępnie zautomatyzuj łatki bezpieczeństwa. W Debianie/Ubuntu zainstaluj unattended-upgrades i skonfiguruj go tak, aby stosował tylko poprawki bezpieczeństwa. Na RHEL/Rocky zainstaluj dnf-automatic i ustaw upgrade_type = security w /etc/dnf/automatic.conf.
Skonfiguruj powiadomienia e-mail o wynikach aktualizacji. Wyłącz automatyczne restarty na serwerach produkcyjnych(Automatic-Reboot = false), aby restarty miały miejsce podczas planowanych okien konserwacji. W przypadku środowisk o wysokim czasie działania należy rozważyć łatanie na żywo za pomocą Canonical Livepatch (Ubuntu) lub kpatch (RHEL).
Zabezpieczanie systemów plików i uprawnień
W pierwszej kolejności należy przeprowadzić audyt plików binarnych SUID i SGID. Pliki te działają z podwyższonymi uprawnieniami i są głównym celem exploitów:
find / -xdev \( -perm -4000 -o -perm -2000 \) -type f -lsZaostrz uprawnienia do krytycznych plików: /etc/shadow powinno być 600, /etc/passwd powinno być 644, /etc/ssh/sshd_config powinno być 600. Ustaw globalny umask 027 w /etc/profile, aby zapobiec odczytywaniu nowych plików przez świat.
Znajdź i napraw pliki zapisywalne na świecie za pomocą find / -xdev -type f -perm -0002 -ls. Dla katalogów, które muszą pozostać zapisywalne (jak /tmp), zastosuj sticky bit: chmod 1777 /tmp.
Opcje bezpiecznego montowania
Edytuj /etc/fstab, aby ograniczyć to, co może się dziać na krytycznych partycjach:
| Partycja | Opcje montowania | Cel |
|---|---|---|
/tmp | nodev, nosuid, noexec | Zapobiega wykonywaniu złośliwego oprogramowania w obszarze zapisywalnym przez świat |
/var/tmp | nodev, nosuid, noexec | Takie same zabezpieczenia jak /tmp |
/dev/shm | nodev, nosuid, noexec | Zabezpiecza pamięć współdzieloną |
/home | nodev, nosuid | Blokuje pliki binarne setuid i węzły urządzeń |
/var/log | nodev, nosuid, noexec | Chroni integralność dziennika |
Przetestuj zmiany za pomocą mount -o remount przed ponownym uruchomieniem, aby uniknąć problemów z rozruchem.
Włącz obowiązkowe kontrole dostępu
SELinux i AppArmor dodają ograniczenia na poziomie jądra dotyczące tego, co mogą robić procesy. Użyj tego, z którym dostarczana jest twoja dystrybucja: SELinux dla RHEL/CentOS/Fedora, AppArmor dla Ubuntu/Debian/SUSE. Przełączanie się między nimi powoduje problemy z kompatybilnością.
SELinux: Sprawdź status za pomocą getenforce. Uruchom w trybie permisywnym(setenforce 0) na co najmniej dwa tygodnie, aby uchwycić zachowanie obciążenia bez naruszania czegokolwiek. Monitoruj naruszenia za pomocą ausearch -m avc -ts recent. Użyj audit2why do diagnozowania bloków i audit2allow -M [nazwa_modułu] do tworzenia modułów zasad. Po wyczyszczeniu dzienników przełącz się na wymuszanie za pomocą setenforce 1, a następnie ustaw to na stałe w /etc/selinux/config.
AppArmor: Sprawdź aktywne profile za pomocą aa-status. Zainstaluj apparmor-utils dla poleceń zarządzania. Uruchom profile w trybie narzekania za pomocą aa-complain, a następnie przejdź do trybu wymuszania za pomocą aa-enforce, gdy będziesz mieć pewność. Użyj aa-genprof do tworzenia profili dla niestandardowych aplikacji.
Skonfiguruj rejestrowanie i monitorowanie audytów
Bez rejestrowania incydenty nie pozostawiają śladów. Zainstaluj auditd:
sudo apt-get install auditd audispd-pluginsDodaj obserwacje systemu plików dla krytycznych plików:
-w /etc/passwd -p wa -k identity
-w /etc/shadow -p wa -k identityŚledzenie wykonywania wszystkich poleceń na poziomie roota:
-a always,exit -F arch=b64 -S execve -F euid=0 -k root_commandsZaładuj reguły za pomocą augenrules --load i dodaj -e 2 na końcu pliku reguł, aby konfiguracja była odporna na manipulacje (zmiany wymagają ponownego uruchomienia komputera).
Monitorowanie integralności plików za pomocą AIDE
AIDE wykrywa nieautoryzowane zmiany w plikach, porównując bieżący stan ze znaną dobrą linią bazową. Zainstaluj go, zainicjuj bazę danych za pomocą aideinit i przenieś wynikowy plik do /var/lib/aide/aide.db.gz. Skonfiguruj codzienne zadanie cron, aby uruchomić aide --check i wysłać wyniki e-mailem do administratorów.
Centralizacja logów
Lokalne logi są bezużyteczne, jeśli atakujący z dostępem roota je usunie. Przekazuj dzienniki do zdalnego serwera w czasie rzeczywistym za pomocą rsyslog z szyfrowaniem TLS. Dodaj do /etc/rsyslog.conf:
*.* @@remote-host:514Ustaw LogLevel VERBOSE w konfiguracji SSH, aby dzienniki zawierały kluczowe odciski palców dla każdego udanego logowania. W przypadku środowisk produkcyjnych zarządzających wieloma serwerami, narzędzia takie jak Wazuh lub OSSEC zapewniają wykrywanie włamań na podstawie hosta ze scentralizowaną analizą dzienników.
Bieżąca konserwacja
Utwardzanie nie jest zadaniem jednorazowym. Konfiguracje dryfują, pojawiają się nowe luki w zabezpieczeniach, a zmiany personelu pozostawiają osierocone konta.
Co tydzień: Przegląd dzienników Fail2Ban, sprawdzenie nieudanych aktualizacji, weryfikacja kopii zapasowych.
Co miesiąc: Audyt kont i uprawnień użytkowników, przegląd uruchomionych usług, pełne skanowanie za pomocą Lynis lub OpenSCAP.
Kwartalnie: Rotacja poświadczeń, aktualizacja reguł zapory sieciowej, test odzyskiwania po awarii.
Użyj narzędzi infrastruktury jako kodu, takich jak Ansible z rolami utwardzania dev-sec.io, aby wymusić spójne konfiguracje w całej flocie i zapobiec dryfowaniu między audytami.
Serwery dedykowane FDC zapewniają pełny dostęp root i pełną kontrolę nad stosem zabezpieczeń. Poznaj opcje serwerów dedykowanych, aby budować na platformie, na której kontrolujesz każdą warstwę.

Masz dość powolnych wdrożeń lub limitów przepustowości? FDC Servers oferuje natychmiastową dedykowaną moc, globalny zasięg i elastyczne plany dostosowane do dowolnej skali.
Uaktualnij teraz
Lista kontrolna zabezpieczania serwerów Linux
Lista kontrolna krok po kroku do zabezpieczenia serwera Linux. Obejmuje SSH, zapory ogniowe, łatanie, uprawnienia do plików, SELinux/AppArmor i rejestrowanie audytu
15 min czytania - 8 maja 2026
samouczek iperf3: Testowanie prędkości sieci w systemach Linux i Windows
10 min czytania - 7 maja 2026

Masz pytania lub potrzebujesz niestandardowego rozwiązania?
Elastyczne opcje
Globalny zasięg
Natychmiastowe wdrożenie
Elastyczne opcje
Globalny zasięg
Natychmiastowe wdrożenie