Wyszukiwanie w witrynie

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:

  1. Skonfiguruj pamięć dyskową za pomocą LVM w systemie Linux
  2. Utwórz dyski LVM za pomocą vgcreate, lvcreate i lvextend
  3. Połącz kilka dysków w jedną dużą pamięć wirtualną
  4. 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.