Wyszukiwanie w witrynie

25 wskazówek dotyczących wzmacniania zabezpieczeń serwerów Linux


Wszyscy mówią, że Linux jest domyślnie bezpieczny i w pewnym stopniu się z tym zgadzają (jest to temat dyskusyjny). Jednak Linux ma domyślnie wbudowany model bezpieczeństwa. Musisz go dostroić i dostosować do swoich potrzeb, co może pomóc w zwiększeniu bezpieczeństwa systemu. Linux jest trudniejszy w zarządzaniu, ale oferuje większą elastyczność i opcje konfiguracji.

Zabezpieczenie systemu produkcyjnego przed rękami hakerów i crackerów to trudne zadanie dla administratora systemu. To jest nasz pierwszy artykuł związany z „Jak zabezpieczyć Linuksa” lub „Wzmocnieniem Linuksa”. W tym poście wyjaśnimy 25 przydatnych porad i wskazówek, jak zabezpieczyć system Linux. Mamy nadzieję, że poniższe porady i wskazówki pomogą Ci w pewnym stopniu zabezpieczyć Twój system.

1. Bezpieczeństwo systemu fizycznego

Skonfiguruj BIOS, aby wyłączyć uruchamianie z CD/DVD, Urządzeń zewnętrznych, stacji dyskietek w BIOS. Następnie włącz hasło BIOS i chroń GRUB hasłem, aby ograniczyć fizyczny dostęp do systemu.

  1. Ustaw hasło GRUB, aby chronić serwery Linux

2. Partycje dysku

Ważne jest, aby mieć różne partycje, aby uzyskać większe bezpieczeństwo danych na wypadek awarii. Tworząc różne partycje, dane można rozdzielać i grupować. Kiedy nastąpi nieoczekiwany wypadek, uszkodzone zostaną tylko dane tej partycji, natomiast dane na pozostałych partycjach przetrwają. Upewnij się, że musisz mieć następujące oddzielne partycje i upewnij się, że aplikacje innych firm powinny być zainstalowane na oddzielnych systemach plików w katalogu /opt.

/
/boot
/usr
/var
/home
/tmp
/opt

3. Zminimalizuj pakiety, aby zminimalizować luki

Czy na pewno chcesz zainstalować wszelkiego rodzaju usługi?. Zaleca się unikanie instalowania bezużytecznych pakietów, aby uniknąć luk w zabezpieczeniach pakietów. Może to zminimalizować ryzyko, że naruszenie jednej usługi może spowodować naruszenie innych usług. Znajdź i usuń lub wyłącz niechciane usługi z serwera, aby zminimalizować lukę. Użyj polecenia „chkconfig”, aby znaleźć usługi działające na poziomie działania 3.

/sbin/chkconfig --list |grep '3:on'

Gdy odkryjesz, że działają jakieś niechciane usługi, wyłącz je za pomocą następującego polecenia.

chkconfig serviceName off

Użyj menedżera pakietów RPM, takiego jak „yum” lub „apt-get”, aby wyświetlić listę wszystkich zainstalowanych pakietów w systemie i usunąć je za pomocą następujące polecenie.

yum -y remove package-name
sudo apt-get remove package-name
  1. 5 przykładów poleceń chkconfig
  2. 20 praktycznych przykładów poleceń RPM
  3. 20 poleceń Linux YUM do zarządzania pakietami systemu Linux
  4. 25 Poleceń APT-GET i APT-CACHE do zarządzania zarządzaniem pakietami

4. Sprawdź nasłuchujące porty sieciowe

Za pomocą polecenia sieciowego „netstat” możesz wyświetlić wszystkie otwarte porty i powiązane programy. Jak powiedziałem powyżej, użyj polecenia „chkconfig”, aby wyłączyć wszystkie niechciane usługi sieciowe w systemie.

netstat -tulpn
  1. 20 poleceń Netstat do zarządzania siecią w systemie Linux

5. Użyj bezpiecznej powłoki (SSH)

Protokoły Telnet i rlogin wykorzystują zwykły tekst, a nie zaszyfrowany format, co stanowi naruszenie bezpieczeństwa. SSH to bezpieczny protokół wykorzystujący technologię szyfrowania podczas komunikacji z serwerem.

Nigdy nie loguj się bezpośrednio jako root, jeśli nie jest to konieczne. Do wykonywania poleceń użyj „sudo”. sudo są określone w pliku /etc/sudoers, można je także edytować za pomocą narzędzia „visudo”, które otwiera się w edytorze VI.

Zaleca się także zmianę domyślnego numeru portu SSH 22 na inny numer portu wyższego poziomu. Otwórz główny plik konfiguracyjny SSH i wprowadź następujące parametry, aby ograniczyć użytkownikom dostęp.

vi /etc/ssh/sshd_config
Wyłącz logowanie roota
PermitRootLogin no
Zezwalaj tylko określonym użytkownikom
AllowUsers username
Użyj wersji protokołu SSH 2
Protocol 2
  1. 5 najlepszych praktyk zabezpieczania i ochrony serwera SSH

6. Aktualizuj system

Zawsze aktualizuj system, dodając najnowsze łatki, poprawki bezpieczeństwa i jądro, jeśli są dostępne.

yum updates
yum check-update

7. Blokowanie Cronjobs

Cron ma własną wbudowaną funkcję, która pozwala określić, kto może, a kto nie chce uruchamiać zadań. Kontroluje się to za pomocą plików o nazwach /etc/cron.allow i /etc/cron.deny. Aby zablokować użytkownika za pomocą cron, wystarczy dodać nazwy użytkowników w cron.deny i pozwolić użytkownikowi na uruchomienie cron, dodaj je w pliku cron.allow. Jeśli chcesz uniemożliwić wszystkim użytkownikom korzystanie z cron, dodaj linię „ALL” do pliku cron.deny.

echo ALL >>/etc/cron.deny
  1. 11 przykładów planowania Cron w systemie Linux

8. Wyłącz pamięć USB, aby wykryć

Często zdarza się, że chcemy ograniczyć użytkownikom możliwość korzystania z pendrive'a USB w systemach, aby chronić i zabezpieczać dane przed kradzieżą. Utwórz plik „/etc/modprobe.d/no-usb”, a dodanie poniższej linii nie wykryje pamięci USB.

install usb-storage /bin/true

9. Włącz SELinux

Linux o zwiększonym bezpieczeństwie (SELinux) to obowiązkowy mechanizm bezpieczeństwa kontroli dostępu zapewniany w jądrze. Wyłączenie SELinux oznacza usunięcie mechanizmu bezpieczeństwa z systemu. Zastanów się dwa razy dokładnie przed usunięciem, jeśli Twój system jest podłączony do Internetu i jest dostępny publicznie, zastanów się nad tym więcej.

SELinux udostępnia trzy podstawowe tryby działania i rzeczywiście tak jest.

  1. Wymuszanie: jest to tryb domyślny, który włącza i wymusza politykę bezpieczeństwa SELinux na komputerze.
  2. Zezwalający: w tym trybie SELinux nie będzie egzekwował polityki bezpieczeństwa w systemie, a jedynie będzie ostrzegał i rejestrował działania. Ten tryb jest bardzo przydatny przy rozwiązywaniu problemów związanych z SELinux.
  3. Wyłączone: SELinux jest wyłączony.

Możesz wyświetlić bieżący stan trybu SELinux z wiersza poleceń, używając poleceń „system-config-selinux”, „getenforce” lub „ komendy sestatus.

sestatus

Jeśli jest wyłączona, włącz SELinux za pomocą następującego polecenia.

setenforce enforcing

Można nim także zarządzać z poziomu pliku „/etc/selinux/config”, w którym można go włączyć lub wyłączyć.

10. Usuń pulpity KDE/GNOME

Nie ma potrzeby uruchamiania komputerów stacjonarnych X Window, takich jak KDE lub GNOME, na dedykowanym serwerze LAMP. Możesz je usunąć lub wyłączyć, aby zwiększyć bezpieczeństwo serwera i wydajność. Aby wyłączyć proste, otwórz plik „/etc/inittab” i ustaw poziom uruchamiania na 3. Jeśli chcesz całkowicie usunąć go z systemu, użyj poniższego polecenia.

yum groupremove "X Window System"

11. Wyłącz IPv6

Jeśli nie używasz protokołu IPv6, powinieneś go wyłączyć, ponieważ większość aplikacji lub polityk nie wymaga protokołu IPv6 i obecnie nie jest on wymagany na serwerze . Przejdź do pliku konfiguracji sieci i dodaj następujące wiersze, aby go wyłączyć.

vi /etc/sysconfig/network
NETWORKING_IPV6=no
IPV6INIT=no

12. Ogranicz użytkownikom możliwość używania starych haseł

Jest to bardzo przydatne, jeśli chcesz uniemożliwić użytkownikom używanie tych samych starych haseł. Stary plik haseł znajduje się w /etc/security/opasswd. Można to osiągnąć wykorzystując moduł PAM.

Otwórz plik „/etc/pam.d/system-auth” w RHEL/CentOS/Fedora.

vi /etc/pam.d/system-auth

Otwórz plik „/etc/pam.d/common-password” w Ubuntu/Debian/Linux Mint.

vi /etc/pam.d/common-password

Dodaj następujący wiersz do sekcji „auth”.

auth        sufficient    pam_unix.so likeauth nullok

Dodaj następujący wiersz do sekcji „hasło”, aby uniemożliwić użytkownikowi ponowne użycie ostatniego 5 hasła.

password   sufficient    pam_unix.so nullok use_authtok md5 shadow remember=5

Serwer pamięta tylko ostatnie 5 haseł. Jeśli spróbujesz użyć któregokolwiek z ostatnich 5 starych haseł, pojawi się komunikat o błędzie.

Password has been already used. Choose another.

13. Jak sprawdzić wygaśnięcie hasła użytkownika

W systemie Linux hasła użytkowników są przechowywane w pliku „/etc/shadow” w zaszyfrowanym formacie. Aby sprawdzić wygaśnięcie hasła użytkownika, należy użyć polecenia „chage”. Wyświetla informacje o szczegółach wygaśnięcia hasła wraz z datą ostatniej zmiany hasła. Dane te są wykorzystywane przez system do podejmowania decyzji, kiedy użytkownik musi zmienić swoje hasło.

Aby wyświetlić wszelkie istniejące informacje o wieku użytkownika, takie jak data wygaśnięcia i godzina, użyj następującego polecenia.

#chage -l username

Aby zmienić wiek hasła dowolnego użytkownika, użyj następującego polecenia.

#chage -M 60 username
#chage -M 60 -m 7 -W 7 userName
Parametry
  1. -M Ustaw maksymalną liczbę dni
  2. -m Ustaw minimalną liczbę dni
  3. -W Ustaw liczbę dni ostrzeżenia

14. Zablokuj i odblokuj konto ręcznie

Funkcje blokady i odblokowania są bardzo przydatne, zamiast usuwać konto z systemu, możesz je zablokować na tydzień lub miesiąc. Aby zablokować określonego użytkownika, możesz użyć polecenia follow.

passwd -l accountName

Uwaga: zablokowany użytkownik jest nadal dostępny tylko dla użytkownika root. Blokowanie odbywa się poprzez zastąpienie zaszyfrowanego hasła ciągiem znaków (!). Jeśli ktoś spróbuje uzyskać dostęp do systemu za pomocą tego konta, otrzyma błąd podobny do poniższego.

su - accountName
This account is currently not available.

Aby odblokować lub umożliwić dostęp do zablokowanego konta, użyj polecenia as. Spowoduje to usunięcie (!) ciągu znaków z zaszyfrowanym hasłem.

passwd -u accountName

15. Egzekwowanie silniejszych haseł

Wielu użytkowników używa miękkich lub słabych haseł, a ich hasła mogą zostać zhakowane za pomocą ataków opartych na słownikach lub metodą brute-force. Moduł „pam_cracklib” jest dostępny w stosie modułów PAM (Puggable Authentication Modules), który wymusi na użytkowniku ustawienie silnych haseł. Otwórz następujący plik za pomocą edytora.

Przeczytaj także:

vi /etc/pam.d/system-auth

I dodaj linię, używając parametrów kredytu jako (lcredit, ucredit, dcredit i/lub ocredit odpowiednio małymi literami , wielkie litery, cyfry i inne)

/lib/security/$ISA/pam_cracklib.so retry=3 minlen=8 lcredit=-1 ucredit=-2 dcredit=-2 ocredit=-1

16. Włącz Iptables (zapora sieciowa)

Zdecydowanie zaleca się włączenie zapory systemu Linux, aby zabezpieczyć nieautoryzowany dostęp do serwerów. Zastosuj reguły w iptables do filtrowania pakietów przychodzących, wychodzących i przekazujących. Możemy określić adres źródłowy i docelowy, który ma być dozwolony i zabroniony dla określonego numeru portu udp/tcp.

  1. Podstawowy przewodnik i wskazówki dotyczące IPTables

17. Wyłącz Ctrl+Alt+Delete w Inittab

W większości dystrybucji Linuksa naciśnięcie „CTRL-ALT-DELETE” spowoduje ponowne uruchomienie systemu. Dlatego nie jest dobrym pomysłem włączanie tej opcji przynajmniej na serwerach produkcyjnych, jeśli ktoś to zrobi przez pomyłkę.

Jest to zdefiniowane w pliku „/etc/inittab”. Jeśli przyjrzysz się uważnie temu plikowi, zobaczysz linię podobną do poniższej. Domyślnie linia nie jest komentowana. Musimy to skomentować. Ta konkretna sygnalizacja sekwencji klawiszy spowoduje zamknięcie systemu.

Trap CTRL-ALT-DELETE
#ca::ctrlaltdel:/sbin/shutdown -t3 -r now

18. Sprawdzanie kont pod kątem pustych haseł

Każde konto posiadające puste hasło oznacza, że jest otwarte dla nieautoryzowanego dostępu dla każdego w Internecie i stanowi część bezpieczeństwa na serwerze Linux. Musisz więc upewnić się, że wszystkie konta mają silne hasła i nikt nie ma autoryzowanego dostępu. Puste konta z hasłami stanowią zagrożenie dla bezpieczeństwa i można je łatwo zhakować. Aby sprawdzić, czy istnieją konta z pustym hasłem, użyj poniższego polecenia.

cat /etc/shadow | awk -F: '($2==""){print $1}'

19. Wyświetl baner SSH przed zalogowaniem

Zawsze lepszym pomysłem jest posiadanie banera prawnego lub banerów bezpieczeństwa z ostrzeżeniami dotyczącymi bezpieczeństwa przed uwierzytelnieniem SSH. Aby ustawić takie banery przeczytaj poniższy artykuł.

  1. Wyświetlaj użytkownikom komunikat ostrzegawczy SSH

20. Monitoruj działania użytkowników

Jeśli masz do czynienia z dużą liczbą użytkowników, ważne jest, aby zebrać informacje o działaniach każdego użytkownika i wykorzystywanych przez nich procesach oraz przeanalizować je w późniejszym czasie lub w przypadku jakichkolwiek problemów z wydajnością lub bezpieczeństwem. Ale w jaki sposób możemy monitorować i zbierać informacje o działaniach użytkowników.

Istnieją dwa przydatne narzędzia o nazwie „psacct” i „acct”, które służą do monitorowania działań i procesów użytkowników w systemie. Narzędzia te działają w tle systemu i stale śledzą każdą aktywność użytkownika w systemie oraz zasoby zużywane przez usługi takie jak Apache, MySQL, SSH, FTP itp. Aby uzyskać więcej informacji na temat instalacji, konfiguracji i użytkowania, odwiedź poniższy adres URL.

  1. Monitoruj aktywność użytkownika za pomocą poleceń psacct lub acct

21. Regularnie przeglądaj dzienniki

Przenieś logi na dedykowany serwer logów, może to uniemożliwić intruzom łatwą modyfikację lokalnych logów. Poniżej znajdują się domyślne nazwy plików dziennika Common Linux i ich użycie:

  1. /var/log/message – miejsce, w którym dostępne są dzienniki całego systemu lub dzienniki bieżącej aktywności.
  2. /var/log/auth.log – dzienniki uwierzytelniania.
  3. /var/log/kern.log – logi jądra.
  4. /var/log/cron.log – logi Cronda (zadanie cron).
  5. /var/log/maillog – logi serwera pocztowego.
  6. /var/log/boot.log – dziennik uruchamiania systemu.
  7. /var/log/mysqld.log – plik dziennika serwera bazy danych MySQL.
  8. /var/log/secure – dziennik uwierzytelniania.
  9. /var/log/utmp lub /var/log/wtmp: plik z zapisami logowania.
  10. /var/log/yum.log: pliki dziennika Yum.

22. Kopia zapasowa ważnych plików

W systemie produkcyjnym konieczne jest utworzenie kopii zapasowej ważnych plików i przechowywanie ich w skarbcu bezpieczeństwa, lokalizacji zdalnej lub poza siedzibą firmy w celu odzyskania danych po awarii.

23. Łączenie kart sieciowych

Istnieją dwa rodzaje trybów łączenia NIC, o których należy wspomnieć w interfejsie łączenia.

  1. mode=0 – Round Robin
  2. mode=1 – Aktywny i zapasowy

Łączenie kart sieciowych pomaga nam unikać pojedynczych punktów awarii. Podczas łączenia NIC łączymy ze sobą dwie lub więcej kart sieciowych i tworzymy jeden wirtualny interfejs, w którym możemy przypisać adres IP, aby rozmawiać z innymi serwery. Nasza sieć będzie dostępna w przypadku, gdy jedna karta sieciowa nie działa lub jest niedostępna z jakiegokolwiek powodu.

Przeczytaj także: Tworzenie łączenia kanałów karty sieciowej w systemie Linux

24. Zachowaj /boot jako tylko do odczytu

Jądro Linuksa i powiązane z nim pliki znajdują się w katalogu /boot, który domyślnie jest w formacie do odczytu i zapisu. Zmiana na tylko do odczytu zmniejsza ryzyko nieautoryzowanej modyfikacji krytycznych plików startowych. Aby to zrobić, otwórz plik „/etc/fstab”.

vi /etc/fstab

Dodaj następujący wiersz na dole, zapisz go i zamknij.

LABEL=/boot     /boot     ext2     defaults,ro     1 2

Pamiętaj, że jeśli w przyszłości będziesz musiał zaktualizować jądro, musisz zresetować zmianę na odczyt i zapis.

25. Zignoruj żądanie ICMP lub rozgłoszenia

Dodaj następujący wiersz w pliku „/etc/sysctl.conf”, aby zignorować żądanie ping lub broadcast.

Ignore ICMP request:
net.ipv4.icmp_echo_ignore_all = 1

Ignore Broadcast request:
net.ipv4.icmp_echo_ignore_broadcasts = 1

Załaduj nowe ustawienia lub zmiany, uruchamiając następujące polecenie

#sysctl -p

Jeśli na powyższej liście pominąłeś jakąś ważną wskazówkę dotyczącą bezpieczeństwa lub wzmocnienia, lub masz inną wskazówkę, którą należy uwzględnić na liście. Prosimy o wrzucanie komentarzy w naszym polu komentarza. TecMint jest zawsze zainteresowany otrzymywaniem komentarzy, sugestii i dyskusji na temat ulepszeń.