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
- 2-ochrona BIOS
- 3-szyfrowanie dysku twardego (poufność)
- 4-ochrona dysku(dostępność)
- 5-Zablokuj katalog rozruchowy
- 6-Wyłącz użycie USB
- 7-Aktualizacja systemu
- 8-Sprawdź zainstalowane pakiety
- 9-Sprawdź otwarte porty
- 10-Secure SSH
- 11- Enable SELinux
- 12- parametry sieci
- 13- zasady dotyczące haseł
- 14-uprawnienia i weryfikacje
- 15- dodatkowe hartowanie procesu
- Ostatnie słowa
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.