Linux hardening: 15-stopniowa Lista kontrolna dla bezpiecznego serwera Linux

Gus Khawaja

większość ludzi zakłada, że Linux jest bezpieczny i jest to fałszywe założenie. Wyobraź sobie, że twój laptop został skradziony bez uprzedniego utwardzenia. Złodziej prawdopodobnie założyłby, że Twoja nazwa użytkownika to „root”, a Twoje hasło to „toor”, ponieważ jest to domyślne hasło na Kali i większość ludzi nadal go używa. A Ty? Mam nadzieję, że nie.

negatywne konsekwencje zawodowe związane z wyborem Nie hartowania hosta Kali Linux są poważne, więc podzielę się niezbędnymi krokami, aby twój host Linux był bezpieczny, w tym jak używam testów penetracyjnych i Kali Linux, aby wykonać zadanie. Ważne jest, aby pamiętać, że chociaż jest to wiele dystrybucji (AKA dystrybucji) Linuksa i każda z nich różni się od perspektywy wiersza poleceń, logika jest taka sama. Skorzystaj z poniższych wskazówek, aby utwardzić własną skrzynkę Linuksa.

1-udokumentuj informacje o hoście

za każdym razem, gdy pracujesz nad nowym zadaniem utwardzania Linuksa, musisz utworzyć nowy dokument, który zawiera wszystkie elementy listy kontrolnej wymienione w tym poście i musisz sprawdzić każdy zastosowany element. Co więcej, na górze dokumentu musisz podać informacje o hoście Linuksa:

  • Nazwa maszyny
  • adres IP
  • adres Mac
  • imię i nazwisko osoby wykonującej hartowanie (najprawdopodobniej ty)
  • Data
  • numer aktywów (jeśli pracujesz dla firmy, musisz podać numer aktywów, którego Twoja firma używa do znakowania gospodarze.)

2-ochrona BIOS

musisz chronić BIOS hosta hasłem, aby użytkownik końcowy nie mógł zmienić i zastąpić ustawień zabezpieczeń w BIOS-ie; ważne jest, aby ten obszar był chroniony przed wszelkimi zmianami. Każdy producent komputera ma inny zestaw kluczy, aby przejść do trybu BIOS, wtedy jest to kwestia znalezienia konfiguracji, w której ustawiono hasło administracyjne.

następnie musisz wyłączyć rozruch z zewnętrznych urządzeń multimedialnych (USB / CD/DVD). Jeśli pominiesz zmianę tego ustawienia, każdy może użyć pamięci USB zawierającej rozruchowy system operacyjny i uzyskać dostęp do danych systemu operacyjnego.

+ chcesz wiedzieć więcej o Linuksie? Dowiedz się więcej z Pluralsight, technologiczną platformą edukacyjną. Ucz się Linuksa już teraz. +

Płyty główne najnowszych serwerów mają wewnętrzny serwer WWW, na którym można uzyskać do nich zdalny dostęp. Pamiętaj, aby zmienić domyślne hasło na stronie Administratora lub wyłączyć je, jeśli jest to możliwe.

3-szyfrowanie dysku twardego (poufność)

większość dystrybucji Linuksa umożliwia szyfrowanie dysków przed instalacją. Szyfrowanie dysku jest ważne w przypadku kradzieży, ponieważ osoba, która ukradła komputer, nie będzie w stanie odczytać danych, jeśli podłączy dysk twardy do komputera.

na poniższym obrazku wybierz trzecią opcję z listy: Guided-użyj całego dysku i skonfiguruj zaszyfrowany LVM (LVM oznacza logical volume manager.)

jeśli Twoja dystrybucja Linuksa nie obsługuje szyfrowania, możesz użyć oprogramowania takiego jak TrueCrypt.

4-ochrona dysku(dostępność)

kopie zapasowe mają tak wiele zalet w przypadku uszkodzonego systemu, błędów w aktualizacji systemu operacyjnego. W przypadku ważnych serwerów kopia zapasowa musi zostać przeniesiona poza siedzibę w przypadku awarii. Backup musi być również zarządzany. Na przykład, jak długo będziesz przechowywać stare kopie zapasowe? Kiedy trzeba wykonać kopię zapasową systemu (Codziennie, Co tydzień …)?

krytyczne systemy powinny być rozdzielone na różne partycje dla:

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

porcjowanie dysków daje możliwość wydajności i bezpieczeństwa w przypadku błędu systemowego. Na poniższym obrazku możesz zobaczyć opcję oddzielania partycji w Kali Linux podczas instalacji.

5-Zablokuj katalog rozruchowy

katalog rozruchowy zawiera ważne pliki związane z jądrem Linuksa, więc musisz upewnić się, że ten katalog jest zablokowany do uprawnień tylko do odczytu, wykonując kolejne proste kroki. Najpierw otwórz plik „fstab”.

następnie dodaj ostatnią linię podświetloną na dole.

po zakończeniu edycji pliku należy ustawić właściciela, wykonując następujące polecenie:

#chown root:root /etc/fstab

następnie ustawiłem kilka uprawnień do zabezpieczania ustawień rozruchu:

  • Ustaw właściciela i grupę /etc/grub.conf do użytkownika root:

#chown root:root /etc/grub.conf

  • Set permission on the / etc / grub.plik conf do odczytu i zapisu tylko dla roota:

#chmod og-rwx /etc/grub.conf

  • Wymaganie uwierzytelniania dla trybu pojedynczego użytkownika:

#sed -i "/SINGLE/s/sushell/sulogin/" /etc/sysconfig/init

#sed -i "/PROMPT/s/yes/no/" /etc/sysconfig/init

6-Wyłącz użycie USB

W zależności od tego, jak krytyczny jest Twój system, czasami konieczne jest wyłączenie użycia pamięci USB na hoście Linuksa. Istnieje wiele sposobów, aby odmówić korzystania z pamięci USB; oto popularny:

Otwórz ” czarną listę.conf ” plik za pomocą ulubionego edytora tekstu:

#nano /etc/modprobe.d/blacklist.conf

po otwarciu pliku Dodaj następujący wiersz na końcu pliku (Zapisz i zamknij):

blacklist usb_storage

następnie otwórz rc.plik lokalny:

#nano /etc/rc.local

na koniec dodaj następujące dwie linie:

modprobe -r usb_storage

exit 0

7-Aktualizacja systemu

pierwszą rzeczą do zrobienia po pierwszym uruchomieniu jest aktualizacja systemu; powinien to być łatwy krok. Ogólnie rzecz biorąc, otwierasz okno terminala i wykonujesz odpowiednie polecenia. W Kali Linux osiągasz to wykonując polecenia z poniższego obrazka:

8-Sprawdź zainstalowane pakiety

Wyświetl listę wszystkich pakietów zainstalowanych w systemie Linux i usuń niepotrzebne. Musisz być bardzo surowy, jeśli host, który próbujesz utwardzić, jest serwerem, ponieważ serwery potrzebują najmniejszej liczby zainstalowanych na nich aplikacji i usług. Oto przykład jak wyświetlić listę pakietów zainstalowanych na Kali Linux:

pamiętaj, że wyłączenie niepotrzebnych usług zmniejszy powierzchnię ataku, dlatego ważne jest, aby usunąć następujące starsze usługi, jeśli znajdziesz je zainstalowane na serwerze Linux:

  • Serwer Telnet
  • serwer RSH
  • serwer NIS
  • serwer TFTP
  • serwer rozmów

9-Sprawdź otwarte porty

Identyfikacja otwartych połączeń z Internetem jest misją krytyczną. W Kali Linux używam następującego polecenia do wykrywania ukrytych otwartych portów:

10-Secure SSH

tak, rzeczywiście SSH jest bezpieczny, ale musisz również utwardzić tę usługę. Po pierwsze, jeśli możesz wyłączyć SSH, to problem rozwiązany. Jeśli jednak chcesz go użyć, musisz zmienić domyślną konfigurację SSH. Aby to zrobić, przejdź do /etc/ssh i otwórz plik „sshd_config” za pomocą ulubionego edytora tekstu.

  • Zmień domyślny numer portu 22 na inny, np. 99.
  • upewnij się, że root nie może zalogować się zdalnie przez SSH:

PermitRootLogin no

  • Zezwalaj określonym użytkownikom:

AllowUsers

lista może trwać i trwać, ale te powinny wystarczyć na początek. Na przykład niektóre firmy dodają banery, aby odstraszyć napastników i zniechęcić ich do dalszego działania. Zachęcam do zapoznania się z instrukcją obsługi SSH, aby zrozumieć wszystkie konfiguracje w tym pliku, lub możesz odwiedzić tę stronę, aby uzyskać więcej informacji.

oto kilka dodatkowych opcji, które musisz upewnić się, że istnieją w pliku” sshd_config”:

  • Protocol2
  • IgnoreRhosts to yes
  • HostbasedAuthentication no
  • PermitEmptyPasswords no
  • X11Forwarding no
  • MaxAuthTries 5
  • szyfry aes128-ctr,AES192-Ctr,AES256-Ctr
  • clientaliveinterval 900
  • clientalivecountmax 0
  • Usepam tak

na koniec ustaw uprawnienia do pliku sshd_config, aby tylko użytkownicy Root mogli zmieniać jego zawartość:

#chown root:root /etc/ssh/sshd_config

#chmod 600 /etc/ssh/sshd_config

11- Enable SELinux

security Enhanced Linux to mechanizm bezpieczeństwa Jądra wspierający politykę bezpieczeństwa kontroli dostępu. SELinux posiada trzy tryby konfiguracji:

  • wyłączony: wyłączony
  • dopuszczalny: wyświetla ostrzeżenia
  • egzekwowanie: zasada jest egzekwowana

używając edytora tekstu, otwórz plik konfiguracyjny:

#nano /etc/selinux/config

i upewnij się, że polityka jest egzekwowana:

SELINUX=enforcing

12- parametry sieci

zabezpieczenie działania sieci hosta Linuksa jest podstawowym zadaniem. Nie zawsze zakładaj, że firewall zajmie się wszystkim. Oto kilka ważnych funkcji, które należy wziąć pod uwagę przy zabezpieczaniu sieci hosta:

– Wyłącz przekazywanie IP, ustawiając sieć.ipv4.parametr ip_forward na 0 W ” / etc / sysctl.conf”

– Włącz ochronę złych komunikatów o błędach, ustawiając sieć.ipv4.icmp_ignore_bogus_error_responses parametr do 1 w ” / etc / sysctl.conf ”

zdecydowanie polecam używanie zapory Linuksowej poprzez stosowanie reguł iptable i filtrowanie wszystkich pakietów przychodzących, wychodzących i przekazywanych. Konfigurowanie reguł iptables zajmie trochę czasu, ale jest to warte bólu.

13- zasady dotyczące haseł

ludzie często używają swoich haseł, co jest złą praktyką bezpieczeństwa. Stare hasła są przechowywane w pliku „/ etc / security / opasswd”. Użyjemy modułu PAM do zarządzania politykami bezpieczeństwa hosta Linuksa. W dystrybucji Debiana otwórz plik ” / etc / pam.d / common-password ” za pomocą edytora tekstu i dodać następujące dwie linie:

auth sufficient pam_unix.so likeauth nullok

password sufficient pam_unix.so remember=4 (nie pozwoli użytkownikom na ponowne użycie czterech ostatnich haseł.)

kolejna Polityka haseł, którą należy wymusić, to silne hasła. Moduł Pam oferuje pam_cracklib, który chroni Twój serwer przed atakami słownikowymi i brutalnymi. Aby wykonać to zadanie, otwórz plik / etc / pam.d / system-auth za pomocą dowolnego edytora tekstu i dodać następujący wiersz:

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

Linux będzie hashował hasło, aby uniknąć zapisywania go w czystym tekście, więc musisz upewnić się, że zdefiniujesz bezpieczny algorytm hashowania hasła SHA512.

kolejną ciekawą funkcjonalnością jest zablokowanie konta po pięciu nieudanych próbach. Aby tak się stało, musisz otworzyć plik ” / etc / pam.d / password-auth ” i dodać następujące linie:

auth required pam_env.so

auth required pam_faillock.so preauth audit silent deny=5 unlock_time=604800

auth pam_unix.so

auth pam_faillock.so authfail audit deny=5 unlock_time=604800

auth sufficient pam_faillock.so authsucc audit deny=5 unlock_time=604800

auth required pam_deny.so

jeszcze nie skończyliśmy; potrzebny jest dodatkowy krok. Otwórz plik ” / etc / pam.d / system-auth ” i upewnij się, że dodałeś następujące linie:

auth required pam_env.so

auth required pam_faillock.so preauth audit silent deny=5 unlock_time=604800

auth pam_unix.so

auth pam_faillock.so authfail audit deny=5 unlock_time=604800

auth sufficient pam_faillock.so authsucc audit deny=5 unlock_time=604800

auth required pam_deny.so

po pięciu nieudanych próbach tylko administrator może odblokować konto za pomocą następującego polecenia:

# /usr/sbin / faillock –user < userlocked> — reset

również inną dobrą praktyką jest ustawienie hasła, które wygaśnie po 90 dniach, aby wykonać to zadanie, musisz:

  • ustaw parametr PASS_MAX_DAYS na 90 W „/etc/login.defs „
  • Zmień aktywnego użytkownika, wykonując następujące polecenie :

#chage --maxdays 90 <user>

kolejną wskazówką dotyczącą ulepszania zasad haseł jest ograniczenie dostępu do polecenia su poprzez ustawienie pam_wheel.so parametry w ” / etc / pam.d / su”:

wymagany auth pam_wheel.so use_uid

ostatnią wskazówką dla zasad haseł jest wyłączenie kont systemowych dla użytkowników spoza roota za pomocą następującego skryptu bash:

#!/bin/bash

for user in `awk -F: '( < 500) {print }' /etc/passwd`; do

if

then

/usr/sbin/usermod -L $user

if && &&

then /usr/sbin/usermod -s /sbin/nologin $user

fi

fi

done

14-uprawnienia i weryfikacje

przygotuj się psychicznie, ponieważ to będzie długa lista. Ale uprawnienia są jednym z najważniejszych i najważniejszych zadań do osiągnięcia celu bezpieczeństwa na hoście Linuksa.

#chown root:root /etc/anacrontab

#chmod og-rwx /etc/anacrontab

#chown root:root /etc/crontab

#chmod og-rwx /etc/crontab

#chown root:root /etc/cron.hourly

#chmod og-rwx /etc/cron.hourly

#chown root:root /etc/cron.daily

#chmod og-rwx /etc/cron.daily

#chown root:root /etc/cron.weekly

#chmod og-rwx /etc/cron.weekly

#chown root:root /etc/cron.monthly

#chmod og-rwx /etc/cron.monthly

#chown root:root /etc/cron.d

#chmod og-rwx /etc/cron.d

ustaw Prawo i uprawnienia na „/ var/spool / cron” dla „głównego crontab”

#chown root:root <crontabfile>

#chmod og-rwx <crontabfile>

Ustaw właściciela i uprawnienia użytkownika/grupy na pliku „passwd”

#chmod 644 /etc/passwd

#chown root:root /etc/passwd

Ustaw właściciela użytkownika / grupy i uprawnienia w pliku „Grupa”

#chmod 644 /etc/group

#chown root:root /etc/group

Ustaw właściciela użytkownika / grupy i uprawnienia na pliku „Cień”

#chmod 600 /etc/shadow

#chown root:root /etc/shadow

Ustaw właściciela i uprawnienia użytkownika/grupy na pliku „gshadow”

#chmod 600 /etc/gshadow

#chown root:root /etc/gshadow

15- dodatkowe hartowanie procesu

dla tego ostatniego elementu na liście, dołączam kilka dodatkowych wskazówek, które należy wziąć pod uwagę podczas hartowania hosta Linuksa.

najpierw ogranicz zrzuty rdzenia o:

  • dodanie hard core 0 do ” / etc / security / limits.conf ” plik
  • dodawanie fs.suid_dumpable = 0 do ” / etc / sysctl.plik conf”

po drugie, skonfiguruj Exec Shield przez:

  • dodawanie jądra.exec-shield = 1 do ” / etc / sysctl.conf ” plik

Po Trzecie, włącz losowe rozmieszczenie regionu pamięci wirtualnej przez:

  • dodawanie jądra.randomize_va_space = 2 do ” / etc / sysctl.plik conf”

Ostatnie słowa

w tym krótkim poście omówiliśmy wiele ważnych konfiguracji dla bezpieczeństwa Linuksa. Ale właśnie zarysowaliśmy powierzchnię hartowania Linuksa—istnieje wiele złożonych, nitty-grit konfiguracji. Aby dowiedzieć się więcej o tym, jak utwardzić swoje serwery Linux dla lepszego bezpieczeństwa, sprawdź moje kursy na Pluralsight.

Gus Khawaja jest konsultantem ds. bezpieczeństwa i autorem w Pluralsight. Zajmuje się bezpieczeństwem, IT i tworzeniem aplikacji internetowych oraz tworzy kursy Dla Pluralsight. Gus z powodzeniem dostarczał i rozwijał rozwiązania informatyczne dla firm w całej Kanadzie. Po wielu latach doświadczeń w informatyce, zwrócił swoją uwagę na bezpieczeństwo cybernetyczne i znaczenie, jakie bezpieczeństwo wnosi do tego pola minowego. Jego pasja do etycznego hakowania zmieszana z jego doświadczeniem w programowaniu, co czyni go mądrym szwajcarskim specjalistą od noża wojskowego w dziedzinie informatyki.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.