Hardening a principy CIS
Modul 10: Zůstaňte v bezpečí · Doba čtení: 11 min.
Cíl lekce: Po této lekci dokážete vysvětlit, co je hardening a jaké principy za ním stojí, budete vědět, co jsou CIS Benchmarks a jak je rozumně používat, a dokážete svůj server systematicky zkontrolovat nástrojem Lynis.
Klíčové pojmy: hardening, útočná plocha, minimální instalace, minimální oprávnění (least privilege), vrstvená obrana (defense in depth), CIS Benchmarks, Level 1 a Level 2, CIS Controls, Lynis, hardening index, AppArmor, SELinux, sysctl, synchronizace času
Co je hardening?
Čerstvá instalace Debianu nebo Ubuntu je přiměřeně bezpečná, ale je připravená tak, aby fungovala na co nejvíce místech. Hardening (zpevnění) znamená přizpůsobit server přesně Vašemu použití: odstranit vše, co nepotřebujete, a zpřísnit vše, co zpřísnit lze, aniž by se rozbily Vaše vlastní služby.
V předchozích modulech jste to už dělali kousek po kousku: SSH s klíči (modul 2), běžný uživatel se sudo (modul 3), automatické aktualizace (modul 4), firewall a fail2ban (modul 5), služby pod vlastními uživateli (modul 6). Tato lekce zasadí tato jednotlivá opatření do rámce, abyste viděli, co ještě chybí.
Čtyři principy
1. Malá útočná plocha. Co neexistuje, nemůže se pokazit. Každá nainstalovaná služba, každý otevřený port a každý účet je možný vstup (lekce 5.1). Instalujte minimum a odstraňte, co už nepoužíváte:
anna@web1:~$ systemctl list-units --type=service --state=running
anna@web1:~$ sudo ss -tulpn
anna@web1:~$ apt list --installed | wc -lPokud běží služba, kterou neznáte, zjistěte, co dělá (lekce 6.1). Pokud ji nepotřebujete, balíček odstraňte.
2. Minimální oprávnění. Každý uživatel a každý program dostane jen ta oprávnění, která potřebuje (lekce 3.2). Žádná každodenní práce jako root, služby pod vlastními uživateli, databázoví uživatelé jen s oprávněními k vlastní databázi, žádné chmod 777.
3. Vrstvená obrana. Počítejte s tím, že jedno opatření selže. Databáze, která naslouchá jen na 127.0.0.1 a je za firewallem a má silné heslo, zůstane bezpečná, i když jedno z těchto tří opatření omylem vypadne. Tomu se říká defense in depth.
4. Vědět, co se děje. Hardening není jen zavírání, ale také přehled: logy, které se uchovávají (lekce 6.2), monitoring, který upozorní (lekce 8.3), a zálohy, ze kterých se můžete vrátit (modul 8). Bez toho si vniknutí všimnete, až když je pozdě.
CIS Benchmarks
Center for Internet Security (CIS) je americká nezisková organizace, která vytváří CIS Benchmarks: podrobné seznamy doporučených nastavení pro jednotlivé produkty, sestavené dobrovolníky z oblasti bezpečnosti. Existuje jich přes sto, také pro Debian Linux a Ubuntu Linux, pro jednotlivé verze. PDF si můžete zdarma stáhnout pro nekomerční použití, po vytvoření účtu.
Benchmark pro Linux obsahuje stovky doporučení, každé s vysvětlením, způsobem kontroly a způsobem nastavení. Jsou rozdělena do profilů:
- Level 1: základní opatření, která zavedete poměrně rychle, s jasným bezpečnostním přínosem, aniž by server byl o mnoho méně použitelný. Pro většinu serverů je to cíl.
- Level 2: doplňková opatření pro prostředí, kde má bezpečnost přednost (vrstvená obrana). Mohou stát funkce nebo výkon a podle samotného CIS mohou škodit, pokud je použijete bez rozmyslu.
U Linuxu existují samostatné profily pro servery a pro pracovní stanice.
Příklady témat v benchmarku pro Linux: samostatné oddíly pro /tmp a /var/log, vypnutí nepoužívaných souborových systémů a síťových protokolů, synchronizace času, auditní logování, nastavení SSH (mnohé z nich znáte z lekce 2.2), pravidla pro hesla, oprávnění k důležitým souborům a firewall.
Vedle Benchmarks existují CIS Controls (nyní verze 8.1): nejde o nastavení pro jednotlivé produkty, ale o seznam osmnácti skupin opatření pro celou organizaci, například „inventář softwaru“, „správa zranitelností“ a „obnova dat“. Pro jeden server jsou užitečnější Benchmarks; Controls pomohou, když přemýšlíte o celé své firmě.
Používejte benchmark rozumně
Benchmark není tlačítko, které stisknete. Několik pravidel:
- Nejprve pochopit, pak použít. Každé doporučení má vysvětlení. Pokud nechápete proč, zatím ho nepoužívejte.
- Jedna věc najednou a testovat. Přísné nastavení jádra nebo sítě může rozbít Vaši aplikaci. Vytvořte snapshot, změňte jednu věc a ověřte, že vše stále funguje.
- Ne všechno je pro Vás. Doporučení samostatného oddílu
/var/logje na existujícím VPS obtížné a přinese málo. Vybírejte vědomě a zapište si, proč něco neděláte. - Pozor na hotové hardeningové skripty z internetu, které použijí „vše z CIS“ najednou. Mohou změnit SSH, firewall nebo logy tak, že se sami zablokujete, a potom už nevíte, co se změnilo.
Lynis: audit zevnitř
Lynis je bezplatný open-source program (GPL) od CISOfy, který projde Váš server zevnitř a ke každému tématu vypíše varování a návrhy. Sám nic nemění; pouze podává zprávu.
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 výstup číst:
- Warnings (varování) jsou věci, na které se opravdu musíte podívat, například balíčky se známými zranitelnostmi (pak máte nenainstalované aktualizace, lekce 4.1).
- Suggestions (návrhy) jsou rady. Mnohé jsou užitečné, některé se k Vašemu serveru nehodí. Návrh vypnout
AllowTcpForwardingnapříklad rozbije Vaše SSH tunely (lekce 2.3). Vybírejte vědomě. - Každé hlášení má kód v hranatých závorkách, například
[SSH-7408]. Podle něj v logu/var/log/lynis.lognajdete, co přesně se testovalo. - Hardening index je číslo do 100. Je to ukazatel směru, ne známka, za kterou se má honit. Nárůst po Vašich úpravách ukazuje, že postupujete; 100 není cíl.
Verze Lynisu v repozitáři Vaší distribuce může být trochu starší. Pro první audit to nevadí.
Ještě tři témata stručně
- AppArmor a SELinux jsou další bezpečnostní vrstvy v jádře, které pro každý program určují, co smí. Debian a Ubuntu používají AppArmor, ve výchozím stavu zapnutý; AlmaLinux a Rocky SELinux. Nevypínejte je, „protože něco nefunguje“: najděte hlášení v journalu a vyřešte problém cíleně.
- sysctl nastavuje parametry jádra, například pro síť. Výchozí hodnoty Debianu a Ubuntu jsou rozumné. Pokud chcete něco změnit, uložte to do vlastního souboru v
/etc/sysctl.d/(Debian 13 už/etc/sysctl.confnečte). - Čas: server se špatným časem dělá logy nepoužitelnými a může považovat certifikáty za neplatné. Příkazem
timedatectlověřte, že je uvedeno „System clock synchronized: yes“.
V praxi
U WebOké, stejně jako u jiných poskytovatelů VPS, spravujete zabezpečení uvnitř svého serveru sami: poskytovatel se stará o hardware, síť a virtualizační platformu. Tento kurz je svépomoc: nikdo se na Váš server nedívá. Před kolem hardeningu vytvořte snapshot v panelu a zjistěte si, jak otevřít konzoli, kdybyste se přece jen zablokovali.
Shrnutí
- Hardening znamená přizpůsobit server vlastnímu použití: pryč s tím, co není potřeba, přísněji tam, kde to jde.
- Čtyři principy: malá útočná plocha, minimální oprávnění, vrstvená obrana a přehled o tom, co se děje.
- CIS Benchmarks nabízejí pro každý produkt stovky doporučení v profilech Level 1 (základ) a Level 2 (přísné); používejte je s porozuměním, jeden krok po druhém.
- Lynis kontroluje server zevnitř a vypíše varování, návrhy a hardening index; sám nic nemění.
- AppArmor/SELinux nevypínat; vlastní nastavení jádra do
/etc/sysctl.d/; kontrolovat synchronizaci času.
Kvíz
Úkol
Úkol O10.1: Audit pomocí nástroje Lynis. Vytvořte snapshot, nainstalujte na server Lynis a spusťte sudo lynis audit system. Zapište si hardening index, všechna varování a pět návrhů. Vyberte tři návrhy, které provedete, a jeden, který vědomě neprovedete, i s důvodem. Potom audit spusťte znovu a zapište si nový index.
Úkol O10.1: Audit pomocí nástroje Lynis
Tento úkol provádíte sami; nikdo ho nekontroluje. Odškrtněte, co jste udělali, a označte úkol jako splněný.
Nejprve varování (obvykle čekající aktualizace). Smysluplné jsou: přísnější nastavení SSH, automatické aktualizace, odstranění nepoužívaných služeb. Dobrý důvod něco vynechat: AllowTcpForwarding, pokud používáte tunely. Index je ukazatel směru, ne cíl.
Vaše zaškrtnutí a poznámky zůstávají pouze v tomto prohlížeči; nikam je neposíláme. Pokud jste přihlášeni, ukládáme v sekci Moje kurzy pouze to, že jste úkol splnili.
Doporučujeme k přečtení
- Zabezpečení VPS: prvních pět minut
- CIS Benchmarks (přehled, také Debian a Ubuntu): https://www.cisecurity.org/cis-benchmarks
- CIS Controls: https://www.cisecurity.org/controls
- Lynis, dokumentace: https://cisofy.com/documentation/lynis/
- Nizozemské NCSC, Začínáme s kybernetickou bezpečností (nizozemský zdroj): https://www.ncsc.nl/beginnen-met-cybersecurity
