Hardening i zasady CIS
Moduł 10: Bezpieczeństwo na co dzień · Czas czytania: 11 min
Cel lekcji: Po tej lekcji potrafią Państwo wyjaśnić, czym jest hardening i jakie zasady za nim stoją, wiedzą Państwo, czym są CIS Benchmarks i jak rozsądnie z nich korzystać, a także potrafią Państwo systematycznie sprawdzić swój serwer za pomocą Lynis.
Kluczowe pojęcia: hardening, powierzchnia ataku, minimalna instalacja, minimalne uprawnienia (least privilege), obrona warstwowa (defense in depth), CIS Benchmarks, Level 1 i Level 2, CIS Controls, Lynis, hardening index, AppArmor, SELinux, sysctl, synchronizacja czasu
Czym jest hardening?
Świeża instalacja Debiana lub Ubuntu jest dość bezpieczna, ale przygotowana tak, aby działała w jak największej liczbie miejsc. Hardening (utwardzanie) to dopasowanie serwera dokładnie do Państwa zastosowania: usunięcie wszystkiego, czego Państwo nie potrzebują, i zaostrzenie wszystkiego, co da się zaostrzyć, bez psucia własnych usług.
W poprzednich modułach robili to Państwo już krok po kroku: SSH z kluczami (moduł 2), zwykły użytkownik z sudo (moduł 3), automatyczne aktualizacje (moduł 4), zapora i fail2ban (moduł 5), usługi działające na własnych użytkownikach (moduł 6). Ta lekcja układa te pojedyncze środki w jedną całość, aby było widać, czego jeszcze brakuje.
Cztery zasady
1. Mała powierzchnia ataku. Czego nie ma, to nie może się zepsuć. Każda zainstalowana usługa, każdy otwarty port, każde konto to potencjalne wejście (lekcja 5.1). Prosimy instalować minimalnie i usuwać to, czego już Państwo nie używają:
anna@web1:~$ systemctl list-units --type=service --state=running
anna@web1:~$ sudo ss -tulpn
anna@web1:~$ apt list --installed | wc -lJeśli działa usługa, której Państwo nie znają, prosimy sprawdzić, co robi (lekcja 6.1). Jeśli nie jest potrzebna, prosimy usunąć pakiet.
2. Minimalne uprawnienia. Każdy użytkownik i każdy program otrzymuje tylko te uprawnienia, które są potrzebne (lekcja 3.2). Żadnej codziennej pracy jako root, usługi na własnych użytkownikach, użytkownicy baz danych z uprawnieniami tylko do własnej bazy, żadnego chmod 777.
3. Obrona warstwowa. Prosimy zakładać, że jeden środek zawiedzie. Baza danych, która nasłuchuje tylko na 127.0.0.1, i stoi za zaporą, i ma silne hasło, pozostaje bezpieczna także wtedy, gdy jeden z tych trzech elementów przypadkiem przestanie działać. Nazywa się to defense in depth.
4. Wiedza o tym, co się dzieje. Hardening to nie tylko zamykanie, ale także obserwowanie: logi, które są przechowywane (lekcja 6.2), monitorowanie, które powiadamia (lekcja 8.3), oraz kopie zapasowe, dzięki którym można wrócić do poprzedniego stanu (moduł 8). Bez tego włamanie zauważą Państwo dopiero wtedy, gdy będzie za późno.
CIS Benchmarks
Center for Internet Security (CIS) to amerykańska organizacja non-profit, która tworzy CIS Benchmarks: obszerne listy zalecanych ustawień dla poszczególnych produktów, opracowywane przez wolontariuszy ze środowiska bezpieczeństwa. Jest ich ponad sto, również dla Debian Linux i Ubuntu Linux, osobno dla każdej wersji. Pliki pdf można pobrać bezpłatnie do użytku niekomercyjnego, po założeniu konta.
Benchmark dla systemu Linux zawiera setki zaleceń, każde z wyjaśnieniem, sposobem sprawdzenia i sposobem wdrożenia. Są one podzielone na profile:
- Level 1: podstawowe środki, które można wprowadzić dość szybko, z wyraźną korzyścią dla bezpieczeństwa i bez znacznego ograniczenia użyteczności serwera. Dla większości serwerów to właściwy cel.
- Level 2: dodatkowe środki dla środowisk, w których bezpieczeństwo jest najważniejsze (obrona warstwowa). Mogą kosztować funkcje lub wydajność, a według samego CIS mogą wyrządzić szkody, jeśli zastosuje się je bez należytej staranności.
W przypadku systemu Linux istnieją osobne profile dla serwerów i stacji roboczych.
Przykładowe tematy w benchmarku dla systemu Linux: osobne partycje dla /tmp i /var/log, wyłączanie nieużywanych systemów plików i protokołów sieciowych, synchronizacja czasu, logowanie audytowe, ustawienia SSH (wiele z nich znają Państwo z lekcji 2.2), polityka haseł, uprawnienia do ważnych plików oraz zapora.
Oprócz Benchmarks istnieją CIS Controls (obecnie wersja 8.1): nie są to ustawienia dla poszczególnych produktów, lecz lista osiemnastu grup środków dla całej organizacji, takich jak "inwentaryzacja oprogramowania", "zarządzanie podatnościami" i "odzyskiwanie danych". Dla pojedynczego serwera bardziej przydatne są Benchmarks; Controls pomagają, gdy myślą Państwo o całej firmie.
Rozsądne korzystanie z benchmarku
Benchmark to nie przycisk, który się naciska. Kilka zasad:
- Najpierw zrozumieć, potem wdrożyć. Każde zalecenie ma wyjaśnienie. Jeśli nie rozumieją Państwo, dlaczego, prosimy jeszcze go nie wdrażać.
- Jedna zmiana naraz i testowanie. Restrykcyjne ustawienie jądra lub sieci może zepsuć Państwa aplikację. Prosimy wykonać snapshot, zmienić jedną rzecz i sprawdzić, czy wszystko nadal działa.
- Nie wszystko jest dla Państwa. Zalecenie dotyczące osobnej partycji
/var/logjest na istniejącym VPS trudne do wykonania i daje niewiele. Prosimy wybierać świadomie i zapisywać, dlaczego czegoś Państwo nie robią. - Ostrożnie z gotowymi skryptami hardeningu z internetu, które stosują "wszystko z CIS" za jednym razem. Mogą tak zmienić SSH, zaporę lub logi, że zablokują Państwo sami sobie dostęp, a potem nie będą Państwo wiedzieć, co zostało zmienione.
Lynis: audyt od wewnątrz
Lynis to bezpłatny program open source (GPL) firmy CISOfy, który sprawdza serwer od wewnątrz i dla każdego obszaru podaje ostrzeżenia oraz sugestie. Sam niczego nie zmienia, a jedynie raportuje.
anna@web1:~$ sudo apt install lynis
anna@web1:~$ sudo lynis audit system
...
-[ Lynis 3.x Results ]-
Warnings (1):
----------------------------
! Found one or more vulnerable packages. [PKGS-7392]
Suggestions (34):
----------------------------
* Consider hardening SSH configuration [SSH-7408]
- Details : AllowTcpForwarding (set YES to NO)
...
Lynis security scan details:
Hardening index : 66 [############# ]
Tests performed : 262Jak czytać wynik:
- Warnings to rzeczy, którym naprawdę trzeba się przyjrzeć, na przykład pakiety ze znanymi lukami (oznacza to, że czekają Państwa aktualizacje, lekcja 4.1).
- Suggestions to porady. Wiele z nich jest przydatnych, niektóre nie pasują do Państwa serwera. Sugestia wyłączenia
AllowTcpForwardingzepsuje na przykład Państwa tunele SSH (lekcja 2.3). Prosimy wybierać świadomie. - Każdy komunikat ma kod w nawiasach kwadratowych, na przykład
[SSH-7408]. Za jego pomocą można sprawdzić w logu/var/log/lynis.log, co dokładnie zostało przetestowane. - Hardening index to liczba do 100. Jest to drogowskaz, a nie ocena, za którą należy gonić. Wzrost po Państwa zmianach pokazuje postęp; wynik 100 nie jest celem.
Wersja Lynis w repozytorium pakietów Państwa dystrybucji może być nieco starsza. Przy pierwszym audycie nie stanowi to problemu.
Jeszcze trzy tematy w skrócie
- AppArmor i SELinux to dodatkowe warstwy zabezpieczeń w jądrze, które dla każdego programu określają, co wolno mu robić. Debian i Ubuntu używają AppArmor, domyślnie włączonego; AlmaLinux i Rocky używają SELinux. Prosimy nie wyłączać ich "bo coś nie działa": należy znaleźć komunikat w journalu i rozwiązać problem w sposób celowy.
- sysctl ustawia parametry jądra, na przykład dotyczące sieci. Domyślne wartości w Debianie i Ubuntu są rozsądne. Jeśli chcą Państwo coś zmienić, prosimy zapisać to we własnym pliku w
/etc/sysctl.d/(Debian 13 nie odczytuje już/etc/sysctl.conf). - Czas: serwer z nieprawidłowym czasem sprawia, że logi stają się bezużyteczne, a certyfikaty mogą być uznawane za nieważne. Prosimy sprawdzić za pomocą
timedatectl, czy widnieje "System clock synchronized: yes".
W praktyce
W WebOké, podobnie jak u innych dostawców VPS, za bezpieczeństwo wewnątrz serwera odpowiadają Państwo sami: dostawca zapewnia sprzęt, sieć i platformę wirtualizacji. Ten kurs służy samodzielnej nauce: nikt nie zagląda na Państwa serwer. Przed rundą hardeningu prosimy wykonać snapshot w panelu i wiedzieć, jak otworzyć konsolę, jeśli mimo wszystko zablokują Państwo sobie dostęp.
Podsumowanie
- Hardening to dopasowanie serwera do własnego zastosowania: usunięcie tego, co niepotrzebne, i zaostrzenie tego, co można zaostrzyć.
- Cztery zasady: mała powierzchnia ataku, minimalne uprawnienia, obrona warstwowa oraz wiedza o tym, co się dzieje.
- CIS Benchmarks zawierają dla każdego produktu setki zaleceń w profilach Level 1 (podstawa) i Level 2 (restrykcyjny); należy korzystać z nich ze zrozumieniem, krok po kroku.
- Lynis sprawdza serwer od wewnątrz i podaje ostrzeżenia, sugestie oraz hardening index; sam niczego nie zmienia.
- Nie wyłączać AppArmor/SELinux; własne ustawienia jądra w
/etc/sysctl.d/; sprawdzać synchronizację czasu.
Quiz
Zadanie
Zadanie O10.1: Audyt za pomocą Lynis. Prosimy wykonać snapshot, zainstalować Lynis na serwerze i uruchomić sudo lynis audit system. Prosimy zapisać hardening index, wszystkie ostrzeżenia i pięć sugestii. Prosimy wybrać trzy sugestie, które Państwo wdrożą, i jedną, której świadomie nie wdrożą, wraz z uzasadnieniem. Następnie prosimy ponownie uruchomić audyt i zapisać nowy index.
Zadanie O10.1: Audyt za pomocą Lynis
To zadanie wykonuje się samodzielnie, nikt go nie sprawdza. Prosimy zaznaczyć wykonane punkty i oznaczyć zadanie jako wykonane.
Najpierw ostrzeżenia (zwykle oczekujące aktualizacje). Warto wdrożyć: ostrzejsze ustawienia SSH, automatyczne aktualizacje, usunięcie nieużywanych usług. Dobry powód, aby coś pominąć: AllowTcpForwarding, jeśli korzystają Państwo z tuneli. Indeks to drogowskaz, a nie cel.
Zaznaczenia i notatki pozostają tylko w tej przeglądarce; nie są nigdzie wysyłane. Po zalogowaniu w Moje kursy zapisywana jest jedynie informacja, że zadanie zostało wykonane.
Przeczytaj więcej
- Zabezpieczanie VPS: pierwsze pięć minut
- CIS Benchmarks (przegląd, także Debian i Ubuntu): https://www.cisecurity.org/cis-benchmarks
- CIS Controls: https://www.cisecurity.org/controls
- Lynis, dokumentacja: https://cisofy.com/documentation/lynis/
- Holenderskie NCSC, Beginnen met cybersecurity (źródło holenderskie, w języku niderlandzkim): https://www.ncsc.nl/beginnen-met-cybersecurity
