GNU/Linux >> Znalost Linux >  >> Linux

Jak číst zprávy Lynis pro zlepšení zabezpečení Linuxu

Když jsem si přečetl článek Gaurava Kamatheho Prohledejte zabezpečení Linuxu pomocí Lynis , připomnělo mi to dobu, kdy jsem byl správcem systému pro Ministerstvo práce USA. Jednou z mých povinností bylo udržovat naše unixové servery odolné. Každé čtvrtletí přišel nezávislý ověřovatel, aby zkontroloval stav zabezpečení našich serverů. Pokaždé v den, kdy měl ověřovatel dorazit, jsem spustil Security Readiness Review (SRR), skenovací nástroj, který používal velkou sadu skriptů k identifikaci a hlášení jakýchkoli bezpečnostních zjištění. SRR byl open source, takže jsem mohl zobrazit všechny zdrojové skripty a jejich funkce. To mi umožnilo nahlédnout do kódu, určit, co konkrétně bylo špatně, a rychle opravit každý nalezený problém.

Co je Lynis?

Další zdroje pro Linux

  • Cheat pro příkazy Linuxu
  • Cheat sheet pro pokročilé příkazy systému Linux
  • Bezplatný online kurz:Technický přehled RHEL
  • Síťový cheat pro Linux
  • Cheat sheet SELinux
  • Cheat pro běžné příkazy pro Linux
  • Co jsou kontejnery systému Linux?
  • Naše nejnovější články o Linuxu

Lynis je open source nástroj pro bezpečnostní audit, který funguje podobně jako SRR tím, že skenuje systém Linux a poskytuje podrobné zprávy o všech nalezených slabinách. Stejně jako SRR se také skládá z velké sady skriptů a každý skript kontroluje konkrétní položku, např. minimální a maximální požadavky na stáří hesla.

Po spuštění Lynis můžete použít jeho zprávu k nalezení skriptu každé položky a zjistit, jak přesně Lynis zjišťoval a nahlásil jednotlivé problémy. Stejný kód skriptu můžete také použít k vytvoření nového kódu pro automatizaci rozlišení.

Jak číst zprávy Lynis

Protože Gauravův článek pojednával o instalaci a použití Lynis, v tomto článku ukážu několik příkladů, jak můžete číst a používat jeho zprávy.

Chcete-li začít, spusťte audit:

# lynis audit system --quick 

Po jeho dokončení se na obrazovce zobrazí úplná zpráva. V dolní části se zobrazí Návrhy sekce uvádí všechny položky, které může být potřeba otestovat, aby se systém lépe zpevnil, a také TEST-ID pro každou z nich.

Chcete-li posílit systém a zmenšit velikost seznamu, začněte pronásledovat každou položku. Popis v části Návrhy sekce může obsahovat vše, co potřebujete vědět, jak postupovat. Pokud ne, můžete použít show details příkaz:

# lynis show details TEST-ID 

Například jeden z návrhů v mém systému je:

Databáze požadovaná pro locate nemůže být nalezeno. Spusťte updatedb nebo locate.updatedb k vytvoření tohoto souboru. [FILE-6410]

Vypadá to, že stačí spustit příkaz updatedb , ale pokud si chci být jistý, mohu použít Lynis' show details možnost:

# lynis zobrazit podrobnosti SOUBOR-6410
2020-06-16 20:54:33 Probíhá test ID SOUBOR-6410 (Kontrola lokalizační databáze)
2020-06-16 20:54:33 Test :Kontrola lokalizační databáze
2020-06-16 20:54:33 Výsledek:soubor /var/lib/mlocate/mlocate.db nenalezen
2020-06-16 20:54:33 Výsledek:soubor /var/lib/locate/locatedb nenalezeno
2020-06-16 20:54:33 Výsledek:soubor /var/lib/locatedb nenalezen
2020-06-16 20:54:33 Výsledek :soubor /var/lib/slocate/slocate.db nenalezen
2020-06-16 20:54:33 Výsledek:soubor /var/cache/locate/locatedb nenalezen
2020-06-16 20:54:33 Výsledek:soubor /var/db/locate.database nenalezen
2020-06-16 20:54:33 Výsledek:databáze nenalezena
2020-06-16 20:54:33 Návrh:Nebyla nalezena databáze požadovaná pro 'locate'. Spusťte 'updatedb' nebo 'locate.updatedb' a vytvořte tento soubor. [test:FILE-6410] [podrobnosti:-] [řešení:-]
2020-06-16 20:54:33 ====

Tyto podrobnosti naznačují, že Lynis nemohla najít různé soubory. Tento případ je velmi jasný. Mohu spustit updatedb a znovu zkontrolujte tento test:

# updatedb
# lynis --testuje FILE-6410

Kromě toho opětovná kontrola podrobností ukazuje, který soubor našel, že vyhovuje testu:

# lynis zobrazit podrobnosti SOUBOR-6410 
2020-06-16 21:38:40 Probíhá test ID SOUBOR-6410 (Kontrola lokalizační databáze)
2020-06-16 21:38:40 Test :Kontrola locate databáze
2020-06-16 21:38:40 Výsledek:locate databáze nalezena (/var/lib/mlocate/mlocate.db)
2020-06-16 21:38:40 Výsledek :soubor /var/lib/locate/locatedb nenalezen
2020-06-16 21:38:40 Výsledek:soubor /var/lib/locatedb nenalezen
2020-06-16 21:38:40 Výsledek:soubor /var/lib/slocate/slocate.db nenalezen
2020-06-16 21:38:40 Výsledek:soubor /var/cache/locate/locatedb nenalezen
2020-06 -16 21:38:40 Výsledek:soubor /var/db/locate.database nenalezen
2020-06-16 21:38:40 ====

Potápění hlouběji

Mnohé z Lynisiných návrhů nejsou tak přímočaré jako tento. Pokud si nejste jisti, čeho se nález nebo návrh týká, může být obtížné zjistit, jak problém vyřešit. Předpokládejme, že spouštíte Lynis na novém linuxovém serveru a existuje několik položek týkajících se démona zabezpečeného shellu (SSH), z nichž jedna odkazuje na MaxAuthTries nastavení:

* Zvažte posílení konfigurace SSH [SSH-7408] 
    - Podrobnosti  :MaxAuthTries (6 --> 3)
      https://cisofy.com/lynis/controls/SSH-7408/

K vyřešení tohoto problému potřebujete znát umístění konfiguračních souborů SSH. Zkušený správce Linuxu už možná ví, kde je najít, ale pokud ne, existuje způsob, jak zjistit, kde je Lynis našla.

Vyhledání testovacích skriptů Lynis

Lynis podporuje mnoho operačních systémů; proto se místo instalace může lišit. V systému Red Hat Enterprise Linux nebo Fedora Linux použijte rpm k nalezení testovacích souborů:

# rpm -ql lynis 

Toto vypíše všechny testovací soubory a nahlásí jejich umístění v lynis/include adresář. V tomto adresáři vyhledejte TEST-ID, o kterém chcete vědět (v tomto případě SSH-7408):

# grep SSH-7408 /usr/share/lynis/include/*
/usr/share/lynis/include/tests_ssh:   # Test        :SSH-7408

Vyhledání problémů s SSH

Soubor s názvem tests_ssh obsahuje TEST-ID a zde můžete najít funkce skenování související s SSH. Podívejte se na tento soubor, abyste viděli různé funkce volané skenerem Lynis. První část definuje seznam adresářů v proměnné s názvem SSH_DAEMON_CONFIG_LOCS . Následujících několik sekcí je odpovědných za kontrolu stavu démona SSH, nalezení jeho konfiguračního souboru a identifikaci jeho verze. Kód, který hledá konfigurační soubor, jsem našel v části Test SSH-7404, popsané jako „Určení umístění konfiguračního souboru démona SSH“. Tento kód obsahuje for smyčka, která hledá v položkách v seznamu soubor s názvem sshd_config . Tuto logiku mohu použít k vlastnímu vyhledávání:

# najdi /etc /etc/ssh /usr/local/etc/ssh /opt/csw/etc/ssh -name sshd_config
/etc/ssh/sshd_config
/etc/ssh/sshd_config
najít:'/usr/local/etc/ssh':Žádný takový soubor nebo adresář
najít:'/opt/csw/etc/ssh':Žádný takový soubor nebo adresář

Další zkoumání tohoto souboru odhalí kód související s nalezením SSH-7408. Tento test zahrnuje MaxAuthTries a několik dalších nastavení. Nyní mohu najít proměnnou v konfiguračním souboru SSH:

# grep MaxAuthTries /etc/ssh/sshd_config
#MaxAuthTries 6

Lynis také oznámila zjištění týkající se právních bannerů zobrazených při přihlášení do systému. Na svém domácím desktopovém systému (kde neočekávám, že se přihlásí mnoho dalších lidí) jsem se neobtěžoval změnit výchozí issue soubory. Firemní nebo vládní systém bude pravděpodobně vyžadovat, aby obsahoval právní banner, který uživatele varuje, že jejich přihlášení a aktivita mohou být zaznamenávány a monitorovány. Lynis to uvádí pomocí testů BANN-7126 a BANN-7130:

* Přidejte legální banner do /etc/issue, abyste varovali neoprávněné uživatele [BANN-7126] 
      https://cisofy.com/lynis/controls/BANN-7126/

* Přidejte právní banner na /etc/issue.net, abyste varovali neoprávněné uživatele [BANN-7130]
      https://cisofy.com/lynis/controls/BANN-7130/

Na svém systému s Fedora 32 Workstation toho moc nenacházím:

# cat /etc/issue /etc/issue.net
\S
Jádro \r na \m (\l)

\S
Jádro \r na \m (\l)

Mohl bych přidat něco jako „Nechovejte se“ nebo „Nic nerozbíjejte“, ale popis testu neposkytuje dostatek informací k vyřešení problému, a tak jsem se znovu podíval na skripty Lynis. Všiml jsem si, že include adresář obsahoval soubor s názvem tests_banners; tohle vypadalo jako dobré místo, kam se podívat. S pomocí grep , viděl jsem související testy:

# grep -E 'BANN-7126|BANN-7130' /usr/share/lynis/include/tests_banners
    # Test        :BANN-7126
    Registrovat --test-no BANN-7126 - -preqs-met ${PREQS_MET} --hmotnost L --síť NE --zabezpečení kategorie --popis "Zkontrolujte obsah bannerového souboru problému"
    # Test        :BANN-7130
    Zaregistrujte se --test-no BANN-7130 --preqs-met ${PREQS_MET} --hmotnost L --síť NE --zabezpečení kategorie --popis "Zkontrolovat obsah bannerového souboru issue.net"

Po prozkoumání přidruženého kódu v souboru pro test jsem zjistil, že oba tyto testy procházejí některými předdefinovanými právními termíny s for smyčka:

for ITEM in ${LEGAL_BANNER_STRINGS}; do 

Tyto právní podmínky jsou uloženy v proměnné LEGAL_BANNER_STRINGS definované v horní části souboru. Posunutím zpět nahoru zobrazíte úplný seznam:

LEGAL_BANNER_STRINGS="audit access authori condition connect consent continu criminal enforce evidence forbidden intrusion law legal legislat log monitor owner penal policy policies privacy private prohibited record restricted secure subject system terms warning" 

Moje počáteční návrhy („nechat si nic“ a „nic nerozbíjet“) by test neuspokojily, protože neobsahují žádná slova z tohoto seznamu.

Tato bannerová zpráva obsahuje několik povinných slov, a proto splní tento test a zabrání Lynis, aby to nahlásila:

Pozor, pokračováním v připojení k tomuto systému souhlasíte s tím, aby si vlastník ukládal protokol o veškeré činnosti. Neoprávněný přístup je zakázán.

Tato zpráva musí být přidána do obou /etc/issue a /etc/issue.net .

Zajištění opakovatelnosti

Tyto úpravy můžete provést ručně, ale možná budete chtít zvážit automatizaci. Například může existovat mnoho nastavení, která je třeba změnit, nebo budete muset tyto úpravy provádět pravidelně na mnoha serverech. Vytvoření zpevňujícího skriptu by bylo skvělým způsobem, jak tento proces zefektivnit. Pro konfigurace SSH některé sed příkazy ve vašem hardening skriptu tato zjištění vyřeší. Nebo můžete použít echo prohlášení k přidání legálních bannerů:

sed -i '/MaxAuthTries/s/#MaxAuthTries 6/MaxAuthTries 3/' /etc/ssh/sshd_config

echo "Právní banner" | tee -a /etc/issue /etc/issue.net

Automatizace vám umožňuje vytvořit opakovatelný skript, který lze ukládat a spravovat v rámci vaší infrastruktury. Tento skript můžete také začlenit do počátečního zřizování serveru.

Posilte svůj systém

Tento typ cvičení může zlepšit vaše skriptovací dovednosti jak následováním stávajícího kódu, tak psaním vlastních skriptů. Protože se jedná o open source, Lynis usnadňuje nahlédnout pod pokličku, jak je váš systém kontrolován a co znamenají jeho zprávy. Konečným výsledkem bude dobře zocelený systém, který můžete předvést, kdykoli se tito auditoři přiblíží.


Linux
  1. Prohledejte své zabezpečení Linuxu pomocí Lynis

  2. Linux – spouštění versus čtení bit. Jak fungují adresářová oprávnění v Linuxu?

  3. Jak číst odezvu websocket v linuxovém shellu

  1. Jak zlepšit dobu spouštění aplikací v Linuxu

  2. Linux – Jak opravit/instalovat/přeinstalovat Grub?

  3. Jak je možné, že fakeroot není porušením zabezpečení v Linuxu?

  1. Jak monitorovat zabezpečení serveru Linux pomocí Osquery

  2. Jak číst protokol auditu v Linuxu

  3. Jak číst manuálové stránky Linuxu?