20 wskazówek dotyczących bezpieczeństwa wzmacniania serwerów CentOS — część 1
W tym samouczku omówione są jedynie ogólne wskazówki dotyczące bezpieczeństwa dla CentOS 8/7, których można użyć do wzmocnienia systemu. Wskazówki dotyczące list kontrolnych są przeznaczone do stosowania głównie na różnego rodzaju serwerach typu bare-metal lub na maszynach (fizycznych lub wirtualnych) zapewniających usługi sieciowe.
Jednak niektóre wskazówki można z powodzeniem zastosować także w maszynach ogólnego przeznaczenia, takich jak komputery stacjonarne, laptopy i komputery jednopłytkowe wielkości karty (Raspberry Pi).
Wymagania
- Minimalna instalacja CentOS 8
- Minimalna instalacja CentOS 7
1. Ochrona fizyczna
Blokuj dostęp do serwerowni, korzystaj z blokowania szaf i nadzoru wideo. Weź pod uwagę, że jakikolwiek fizyczny dostęp do serwerowni może narazić Twoją maszynę na poważne problemy związane z bezpieczeństwem.
Hasła BIOS można zmienić resetując zworki na płycie głównej lub odłączając baterię CMOS. Ponadto intruz może ukraść dyski twarde lub bezpośrednio podłączyć nowe dyski twarde do interfejsów płyty głównej (SATA, SCSI itp.), uruchomić system z aktywną dystrybucją Linuksa oraz sklonować lub skopiować dane bez pozostawiania śladów oprogramowania.
2. Zmniejsz wpływ szpiegostwa
W przypadku bardzo wrażliwych danych prawdopodobnie warto zastosować zaawansowane zabezpieczenia fizyczne, takie jak umieszczenie i zamknięcie serwera w klatce Faradaya lub skorzystać z wojskowego rozwiązania TEMPEST, aby zminimalizować wpływ szpiegowania systemu za pośrednictwem fal radiowych lub wycieków elektrycznych.
3. Zabezpiecz BIOS/UEFI
Rozpocznij proces wzmacniania swojej maszyny poprzez zabezpieczenie ustawień BIOS/UEFI, w szczególności ustaw hasło BIOS/UEFI i wyłącz urządzenia nośników startowych (CD, DVD, wyłącz obsługę USB) w aby uniemożliwić nieautoryzowanym użytkownikom modyfikowanie ustawień systemu BIOS lub zmianę priorytetu urządzenia rozruchowego i uruchamianie komputera z alternatywnego nośnika.
Aby zastosować tego typu zmiany w swoim komputerze, należy zapoznać się z instrukcją producenta płyty głównej, aby uzyskać szczegółowe instrukcje.
4. Bezpieczny moduł ładujący
Ustaw hasło GRUB, aby uniemożliwić złośliwym użytkownikom manipulowanie sekwencją rozruchu jądra lub poziomami uruchamiania, edycję parametrów jądra lub uruchomienie systemu w trybie pojedynczego użytkownika w celu wyrządzenia szkody systemowi i zresetowania roota hasło, aby uzyskać uprzywilejowaną kontrolę.
5. Użyj oddzielnych partycji dysku
Instalując CentOS na systemach przeznaczonych jako serwery produkcyjne, użyj dedykowanych partycji lub dedykowanych dysków twardych dla następujących części systemu:
/(root)
/boot
/home
/tmp
/var
6. Użyj LVM i RAID w celu zapewnienia redundancji i rozbudowy systemu plików
Partycja /var to miejsce, w którym zapisywane są na dysku komunikaty dziennika. Ta część systemu może gwałtownie rosnąć na serwerach o dużym natężeniu ruchu, które udostępniają usługi sieciowe, takie jak serwery internetowe lub serwery plików.
Dlatego użyj dużej partycji dla /var lub rozważ skonfigurowanie tej partycji przy użyciu woluminów logicznych (LVM) lub połącz kilka dysków fizycznych w jedno większe wirtualne urządzenie RAID 0, aby utrzymać duże ilości danych. W przypadku danych należy rozważyć użycie układu LVM na poziomie RAID 1.
Aby skonfigurować LVM lub RAID na dyskach, postępuj zgodnie z naszymi przydatnymi przewodnikami:
- Skonfiguruj pamięć dyskową za pomocą LVM w systemie Linux
- Utwórz dyski LVM za pomocą vgcreate, lvcreate i lvextend
- Połącz kilka dysków w jedną dużą pamięć wirtualną
- Utwórz RAID 1 przy użyciu dwóch dysków w systemie Linux
7. Zmodyfikuj opcje fstab, aby zabezpieczyć partycje danych
Oddziel partycje przeznaczone do przechowywania danych i zapobiegnij wykonywaniu programów, plików urządzeń lub bitu setuid na tego typu partycjach, dodając następujące opcje do pliku fstab, jak pokazano poniżej fragment:
/dev/sda5 /nas ext4 defaults,nosuid,nodev,noexec 1 2
Aby zapobiec eskalacji uprawnień i wykonywaniu dowolnego skryptu, utwórz osobną partycję dla /tmp i zamontuj ją jako nosuid, nodev i noexec .
/dev/sda6 /tmp ext4 defaults,nosuid,nodev,noexec 0 0
8. Zaszyfruj dyski twarde na poziomie bloku za pomocą LUKS
W celu ochrony poufnych danych w przypadku fizycznego dostępu do dysków twardych maszyny. Sugeruję, abyś nauczył się szyfrować dysk, czytając nasz artykuł Szyfrowanie danych na dysku twardym systemu Linux za pomocą LUKS.
9. Używaj PGP i kryptografii klucza publicznego
Aby zaszyfrować dyski, użyj protokołu PGP i kryptografii klucza publicznego lub polecenia OpenSSL, aby zaszyfrować i odszyfrować poufne pliki za pomocą hasła, jak pokazano w tym artykule Konfigurowanie szyfrowanej pamięci masowej systemu Linux.
10. Zainstaluj tylko minimalną wymaganą liczbę pakietów
Unikaj instalowania nieistotnych lub niepotrzebnych programów, aplikacji lub usług, aby uniknąć luk w zabezpieczeniach pakietów. Może to zmniejszyć ryzyko, że naruszenie bezpieczeństwa fragmentu oprogramowania może doprowadzić do naruszenia innych aplikacji, części systemu, a nawet systemów plików, co ostatecznie doprowadzi do uszkodzenia lub utraty danych.
11. Często aktualizuj system
Regularnie aktualizuj system. Synchronizuj jądro Linuksa z najnowszymi poprawkami zabezpieczeń i aktualizuj całe zainstalowane oprogramowanie do najnowszych wersji, wydając poniższe polecenie:
yum update
12. Wyłącz Ctrl+Alt+Del
Aby uniemożliwić użytkownikom ponowne uruchomienie serwera, gdy mają fizyczny dostęp do klawiatury lub za pośrednictwem aplikacji konsoli zdalnej lub konsoli wirtualnej (KVM, interfejs oprogramowania do wirtualizacji), należy wyłączyć Ctrl+Alt +Del
sekwencję klawiszy, wykonując poniższe polecenie.
systemctl mask ctrl-alt-del.target
13. Usuń niepotrzebne pakiety oprogramowania
Zainstaluj minimalne oprogramowanie wymagane dla Twojego komputera. Nigdy nie instaluj dodatkowych programów ani usług. Instaluj pakiety wyłącznie z zaufanych lub oficjalnych repozytoriów. Użyj minimalnej instalacji systemu, jeśli maszyna ma działać przez cały czas jako serwer.
Sprawdź zainstalowane pakiety za pomocą jednego z następujących poleceń:
rpm -qa
Utwórz lokalną listę wszystkich zainstalowanych pakietów.
yum list installed >> installed.txt
Sprawdź listę bezużytecznego oprogramowania i usuń pakiet, wydając poniższe polecenie:
yum remove package_name
14. Uruchom ponownie usługi systemowe po aktualizacjach demona
Użyj poniższego przykładu polecenia, aby ponownie uruchomić usługę systemową w celu zastosowania nowych aktualizacji.
systemctl restart httpd.service
15. Usuń niepotrzebne usługi
Zidentyfikuj usługi nasłuchujące na określonych portach, używając następującego polecenia ss.
ss -tulpn
Aby wyświetlić listę wszystkich zainstalowanych usług wraz z ich statusem wyjściowym, wydaj poniższe polecenie:
systemctl list-units -t service
Na przykład domyślna minimalna instalacja CentOS zawiera domyślnie zainstalowanego demona Postfix, który działa pod nazwą głównego systemu na porcie 25. Usuń usługę sieciową Postfix, jeśli Twoje urządzenie nie będzie używane jako serwer pocztowy.
yum remove postfix
16. Szyfruj przesyłane dane
Nie używaj niezabezpieczonych protokołów do zdalnego dostępu lub przesyłania plików, takich jak Telnet, FTP ani innych zaawansowanych protokołów zwykłego tekstu, takich jak SMTP, HTTP, NFS lub SMB, które przez domyślnie nie szyfruje sesji uwierzytelniania ani wysyłanych danych.
Do przesyłania plików używaj wyłącznie protokołów sftp, scp oraz SSH lub VNC przez tunele SSH do połączeń z konsolą zdalną lub dostępu do GUI.
Aby tunelować konsolę VNC przez SSH, skorzystaj z poniższego przykładu, który przekazuje port VNC 5901 z komputera zdalnego na komputer lokalny:
ssh -L 5902:localhost:5901 remote_machine
Na komputerze lokalnym uruchom poniższe polecenie, aby nawiązać wirtualne połączenie ze zdalnym punktem końcowym.
vncviewer localhost:5902
17. Skanowanie portów sieciowych
Przeprowadź kontrolę portów zewnętrznych za pomocą narzędzia Nmap z systemu zdalnego za pośrednictwem sieci LAN. Ten typ skanowania można wykorzystać do sprawdzenia luk w zabezpieczeniach sieci lub przetestowania reguł zapory sieciowej.
nmap -sT -O 192.168.1.10
18. Zapora sieciowa filtrująca pakiety
Użyj narzędzia firewalld, aby chronić porty systemowe, otwierać lub zamykać określone porty usług, zwłaszcza dobrze znane porty (<1024).
Zainstaluj, uruchom, włącz i wyświetl listę reguł zapory sieciowej, wydając poniższe polecenia:
yum install firewalld
systemctl start firewalld.service
systemctl enable firewalld.service
firewall-cmd --list-all
19. Sprawdź pakiety protokołów za pomocą Tcpdump
Użyj narzędzia tcpdump, aby lokalnie wąchać pakiety sieciowe i sprawdzać ich zawartość pod kątem podejrzanego ruchu (porty źródłowo-docelowe, protokoły TCP/IP, ruch w warstwie drugiej, nietypowe żądania ARP).
Aby uzyskać lepszą analizę przechwyconego pliku tcpdump, użyj bardziej zaawansowanego programu, takiego jak Wireshark.
tcpdump -i eno16777736 -w tcpdump.pcap
20. Zapobiegaj atakom DNS
Sprawdź zawartość swojego mechanizmu rozpoznawania nazw, zwykle pliku /etc/resolv.conf, który definiuje adres IP serwerów DNS, których powinien używać do zapytań o nazwy domen, aby uniknąć man-in-the -środkowe ataki, niepotrzebny ruch dla głównych serwerów DNS, fałszowanie lub tworzenie ataku DOS.
To dopiero pierwsza część. W następnej części omówimy inne wskazówki dotyczące bezpieczeństwa dla CentOS 8/7.