Lista kontrolna zabezpieczania serwerów Linux

15 min czytania - 8 maja 2026

hero section cover
Spis treści
  • Lista kontrolna zabezpieczania serwerów Linux
  • Zablokowanie SSH
  • Konfiguracja zapór sieciowych i Fail2Ban
  • Aktualizuj i automatyzuj aktualizacje
  • Zabezpieczanie systemów plików i uprawnień
  • Włącz obowiązkowe kontrole dostępu
  • Skonfiguruj rejestrowanie i monitorowanie audytów
  • Bieżąca konserwacja
Udostępnij

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 ed25519

Gdy 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 2

Zmień 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/Fedora

Uruchom 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.so

Następnie zaktualizuj /etc/ssh/sshd_config:

KbdInteractiveAuthentication yes
UsePAM yes
AuthenticationMethods publickey,keyboard-interactive

Utrzymuj 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 enable

Dla RHEL/Rocky/AlmaLinux (Firewalld):

firewall-cmd --set-default-zone=public
firewall-cmd --permanent --add-service=ssh
firewall-cmd --permanent --add-service=https
firewall-cmd --reload

Wzmocnij 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 = 1

Zainstaluj 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 ProtocolPort(y)Bezpieczna alternatywa
Telnet23SSH
RSH / Rlogin512, 513, 514SSH
FTP21SFTP / FTPS
TFTP69SFTP / SCP
NISZmiennaLDAP / 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/Rocky

Nastę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 -ls

Zaostrz 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:

PartycjaOpcje montowaniaCel
/tmpnodev, nosuid, noexecZapobiega wykonywaniu złośliwego oprogramowania w obszarze zapisywalnym przez świat
/var/tmpnodev, nosuid, noexecTakie same zabezpieczenia jak /tmp
/dev/shmnodev, nosuid, noexecZabezpiecza pamięć współdzieloną
/homenodev, nosuidBlokuje pliki binarne setuid i węzły urządzeń
/var/lognodev, nosuid, noexecChroni 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-plugins

Dodaj 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_commands

Zał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:514

Ustaw 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ę.

background image
Czy Twój serwer hamuje Twój rozwój?

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

Blog

Polecane w tym tygodniu

Więcej artykułów
Lista kontrolna zabezpieczania serwerów Linux

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

Więcej artykułów
background image

Masz pytania lub potrzebujesz niestandardowego rozwiązania?

icon

Elastyczne opcje

icon

Globalny zasięg

icon

Natychmiastowe wdrożenie

icon

Elastyczne opcje

icon

Globalny zasięg

icon

Natychmiastowe wdrożenie