Bezpečnostní audit lokálních strojů
Technická zpráva CESNETu
číslo 19/2005
k dispozici též ve formátech PDF,
PostScript a
XML.
Pavel Vachek
12. prosinec 2005
1 Abstrakt
Zpráva obsahuje informace o novém systému pro bezpečnostní audit strojů v
místní síti a návod k jeho instalaci. Hlavní složkou systému je program
NESSUS distribuovaný pod licencí GPL a provozovaný na PC pod operačním
systémem Linux; jednoduchou a zabezpečenou komunikaci umožňuje nově vyvinuté
poštovní rozhraní. Koncepce zde popsaného auditačního systému vznikla v rámci
aktivity CESNET CSIRT.
2 Úvod
CESNET2 zahrnuje řadu samostatných lokálních sítí obsahujících počítače s různými operačními systémy. Zajištění bezpečnosti heterogenních sítí klade velké nároky na pracovní kapacitu jejich správců a je známo, že právě velké universitní sítě často obsahují nedostatečně zabezpečené stroje. Je tedy velmi důležité, aby správci i kvalifikovaní uživatelé měli možnost snadno a kdykoli otestovat zabezpečení svých strojů.
Možnost auditu zabezpečení strojů v síti CESNET2 pomocí NESSUSu byla využívána od roku 2002 - viz [Vac02]. Tehdy však audit probíhal v dávkovém režimu: stroje byly rozděleny do dvou skupin podle typu požadovaných testů a byly testovány pravidelně každé dva týdny. Tato metoda byla organisačně velmi jednoduchá, ale přinášela některé potíže - např. tu, že frekvence auditů nemohla vyhovět všem. Výrazně vhodnější by byla metoda, která by umožnila testování "na objednávku": každý správce by mohl svůj stroj otestovat, kdykoli by sám potřeboval - např. těsně před a těsně po instalaci zvolených bezpečnostních záplat. Právě to se stalo cílem projektu popsaného v této technické zprávě.
NESSUS je kvalitní program pro bezpečnostní audit strojů, od začátku šířený v rámci licence GPL. Získal řadu ocenění u odborné veřejnosti a ve srovnávacích testech bývá na předních místech. Počet jeho instalací ve světě přesahuje 75 tisíc. Informace o něm lze najít např. na adrese http://www.nessus.org; podrobný, ale přesto neúplný popis NESSUSu a jeho možností je obsažen v [Der04]. Autorem NESSUSu je Renaud Deraison, který se později stal jedním ze zakladatelů firmy Tenable Network Security. Tato firma spravuje současnou versi 2.2.x, která je stále distribuována pod licencí GPL. Velká většina bezpečnostních testů dostupných ve formě "plugins" je ale nyní k disposici pouze pod některou licencí firmy Tenable (zdarma nebo za úplatu).
Nedávno bylo oznámeno, že nově připravovaná verse 3.x od firmy Tenable bude stále dostupná zdarma, ale již ne v rámci licence GPL. V reakci na toto oznámení vznikla skupina programátorů, která chce i nadále tento osvědčený auditační systém udržovat a distribuovat v rámci licence GPL pod názvem OpenVAS - viz http://www.openvas.org. Auditační server CESNETu bude prozatím využívat nejnovější GPL verse NESSUSu 2.2.6 z listopadu 2005; budeme se snažit sledovat vývoj NESSUSu verse 3.x i OpenVASu.
Auditační systém NESSUS pracuje v režimu klient - server. Existují
klientské programy NESSUSu pro grafický i řádkový režim; grafický
klient existuje pro systémy typu UNIX i Windows. Instalace klienta i serveru
NESSUS není obtížná, ale je zbytečné, aby ji prováděl každý, kdo má o
bezpečnostní audit zájem: stačí, aby v lokální síti existoval jediný stroj, na
němž je nainstalován server i klient NESSUSu. Server otestuje zabezpečení těch
strojů, které si oprávněný uživatel zvolí; s klientem komunikuje uživatel
jednoduše a bezpečně - elektronickou poštou.
2.1 Konfigurace operačního systému
Operační systém Linux provozujeme bez grafického rozhraní, ale pro instalaci a původní konfiguraci systému NESSUS je třeba alespoň jednou spustit grafického klienta, a to na kterémkoli stroji, k němuž máme přístup. S jeho pomocí vygenerujeme dva konfigurační soubory klienta NESSUSu (pro úplný soubor testů i pro bezpečné testy), jichž pak lze využívat i v řádkovém režimu.
Auditační server nakonfigurujeme s minimálním množstvím síťových služeb; doporučujeme spustit pouze servery SSH (OpenSSH), SMTP (Postfix) a NTP (ntpd). Firewall nakonfigurujeme tak, aby služby SSH a NTP komunikovaly pouze s několika vybranými IP adresami a aby server SMTP přijímal elektronickou poštu jen z adresových rozsahů místní sítě, již chceme testovat, případně jen z jediného poštovního serveru. Smyslem posledního omezení je ochrana před spammery, kteří by se jinak snažili našeho SMTP serveru zneužívat k šíření nevyžádané pošty.
2.2 Stručný popis obsluhy a funkce systému
Fiktivní uživatel test@example.cz potřeboval otestovat zabezpečení svého stroje 10.0.0.91 pomocí našeho serveru, který komunikuje na poštovní adrese audit@audit.example.net. Chtěl:
- spustit všechny testy včetně potenciálně nebezpečných
- výsledky ve formátu HTML
- bezpečnostní testy měly začít za 1 hodinu a 20 minut
From: test@example.cz Date: Sun, 9 Oct 2005 10:14:54 +0200 (CEST) To: audit@audit.example.net Subject: REAL TEST # 40 ---BEGIN PGP SIGNED MESSAGE--- Hash: SHA1 target 10.0.0.91 config full format html delay 1 h 20 m ---BEGIN PGP SIGNATURE--- Version: GnuPG v1.4.0 (GNU/Linux) Comment: For info see http://quantumlab.net/pine_privacy_guard/ iD8DBQFDSNGARMS6vBvt8l0RAlNQAKCquM/sjcLg0Go3iJtdwxYPKRzUjACggQX0 (...) ---END PGP SIGNATURE---
O 17 sekund později dostal odpověď podepsanou PGP klíčem auditačního serveru:
From: audit@audit.example.net Date: Sun, 9 Oct 2005 08:15:11 +0000 To: test@example.cz Subject: Re: REAL TEST # 40 ---BEGIN PGP SIGNED MESSAGE--- Hash: SHA1 AUDIT v. 32 start: Sun Oct 9 08:14:57 2005 GMT Permitted TARGET: 10.0.1.235 10.0.0.91 10.0.0.48 Audit configuration requested in Qfile: CONFIG: full FORMAT: html TARGET: 10.0.0.91 DELAY: 4800 seconds (-> Sun Oct 9 09:35:07 2005 GMT) Audit request `1128850507.1128845707.17621' queued. ---BEGIN PGP SIGNATURE--- Version: Crypt::OpenPGP 1.03 iQBGBAERAgAGBQJDSNGLAAoJEP9UPgLLyY50BQEAnRfjrXDPM47Nrf7fVwzOrphf (...) ---END PGP SIGNATURE---
Dopis obsahoval tyto důležité údaje:
- seznam všech strojů, které tento uživatel měl právo testovat
- bezpečnostní testy měly být spuštěny v 9:35:07 hodin
- soubor Qfile s uvedenými parametry CONFIG, FORMAT a TARGET byl pod jménem 1128850507.1128845707.17621 zařazen do fronty požadavků na spuštění programu
nessus.
Tuto frontu v pravidelných intervalech prohlíží program, jenž ve vhodném
okamžiku spustí nessus s parametry nalezenými v nejstarším souboru ve
frontě. Když bezpečnostní audit skončil, odeslal program uživateli druhý dopis,
který byl také podepsán PGP klíčem serveru:
From: audit@audit.example.net
Date: Sun, 9 Oct 2005 09:41:28 +0000
To: test@example.cz
Subject: Re: REAL TEST # 40
---BEGIN PGP SIGNED MESSAGE---
Hash: SHA1
Hello,
please find the results of your NESSUS security audit
in the attached file.
This audit request has been queued at Sun Oct 9 08:15:07 2005 GMT.
Audit request processing advanced by 6 seconds.
Parameters supplied in `1128850507.1128845707.17621':
CONFIG: full
FORMAT: html
TARGET: 10.0.0.91
Best regards,
the CESNET AUDIT robot.
---BEGIN PGP SIGNATURE---
Version: Crypt::OpenPGP 1.03
iQBGBAERAgAGBQJDSOXEAAoJEP9UPgLLyY50cjwAn0XwMOuTdGe9CPYL535w00Kp
(...)
---END PGP SIGNATURE---
[ Part 2, Text/HTML (Name: "RESFILE") 156 lines. ]
[ Unable to print this part. ]
Údaje uvedené v této části dopisu připomněly, který druh bezpečnostních testů proběhl. Testy začaly o 6 sekund dříve, než uživatel žádal. Výsledky ve formátu HTML (soubor RESFILE) jsou velmi přehledné a dobře je zobrazí libovolný prohlížeč.
2.3 Instalace systému NESSUS
Přihlásíme se do systému pod uživatelským jménem "root". Na adrese http://www.nessus.org/download zvolíme položku "NESSUS x.y.z installer (all UNIX systems)" a stiskneme tlačítko "DOWNLOAD". Zobrazí se text licence "REGISTERED PLUGIN FEED", se kterou je třeba vyjádřit souhlas. Zadáme svou adresu elektronické pošty, na niž nám bude zaslán aktivační kód umožňující bezplatný přístup ke všem bezpečnostním testům, které ve formě "plugins" firma Tenable Network Security zpřístupňuje.
Zkontrolujeme, zda jsou nainstalovány balíky sharutils a openssl-devel. Pro vytvoření grafického klienta NESSUSu je třeba i balík gtk2-devel. Do vhodného adresáře stáhneme soubor nessus-installer-x.x.x.sh a celý systém NESSUS (klient i server) nainstalujeme příkazem
$ sh nessus-installer-x.y.z.sh
Po skončení překladu se instalační program zeptá na aktivační kód, který
mezitím přišel elektronickou poštou na naši adresu. Až ho obdrží, sám stáhne
nejnovější "plugins" ze serveru plugins.nessus.org a
vytvoří konfigurační soubor serveru nessusd na adrese
/usr/local/etc/nessus/nessusd.conf. Nakonec napíše tyto
pokyny:
Create a nessusd certificate using /usr/local/sbin/nessus-mkcert Add a nessusd user use /usr/local/sbin/nessus-adduser Start the Nessus daemon (nessusd) use /usr/local/sbin/nessusd -D Start the Nessus client (nessus) use /usr/local/bin/nessus To uninstall Nessus, use /usr/local/sbin/uninstall-nessus Remember to invoke '/usr/local/sbin/nessus-update-plugins' periodically to update your list of plugins
2.3.1 Instalace a konfigurace serveru nessusd
Certifikát X.509 pro server nessusd vygenerujeme příkazem
$ nessus-mkcert
Příkazem $ nessus-adduser vytvoříme konto pro uživatele "root" (metoda autentifikace = "password", heslo zde např. "Secret"). Pod tímto uživatelským jménem budou spouštěny bezpečnostní testy všech uživatelů, kteří budou využívat našeho poštovního rozhraní. Jako "rules" (omezení) lze uvést prázdný seznam ukončený pomocí CTRL-D. Znamená to, že uživatel "root" není omezen v adresách strojů, které smí testovat. Omezení pro jednotlivé uživatele využívající poštovního rozhraní ovšem existují; budou popsána níže.
V konfiguračním souboru /usr/local/etc/nessus/nessusd.conf
programu nessusd zkontrolujeme a podle potřeby nastavíme např. tyto
údaje:
max_hosts = 10 max_checks = 8 log_whole_attack = no dumpfile = /dev/null port_range = default optimize_test = yes checks_read_timeout = 5 safe_checks = no auto_enable_dependencies = yes use_mac_addr = no
Význam uvedených parametrů:
- max_hosts ... maximální počet současně testovaných strojů
- max_checks ... maximální počet současně probíhajících testů každého stroje
- log_whole_attack ... záznam informací o spuštění každého testu
- dumpfile ... soubor pro záznam ladicích informací jednotlivých testů
- port_range ... rozsah testovaných TCP a UDP portů (default: asi 8500 portů dle /usr/local/var/nessus/services.txt)
- optimize_test ... bannery vzdálených služeb jsou důvěryhodné
- checks_read_timeout ... 5 sekund pro lokální sítě
- safe_checks ... pouze bezpečné testy
- auto_enable_dependencies ... automatické spuštění všech potřebných testů
- use_mac_addr ... testované stroje jsou identifikovány pomocí Ethernetových adres
Pak už můžeme spustit server nessusd v dávkovém režimu příkazem
$ nessusd -D
Tím se automaticky do paměti RAM natáhnou všechny "plugins" (v současnosti jich je téměř 10 tisíc). Pro jistotu vydáme příkaz
$ ps -ef | grep nessusd
a hledáme řetězec "nessusd: waiting for incoming connections"
2.3.2 Konfigurace klienta nessus
Funkčnost auditačního systému ověříme tím, že spustíme i klienta
nessus v řádkovém režimu příkazem
$ nessus -x -T text -q localhost 1241 root Secret targets results &
Význam parametrů na příkazové řádce:
-x... nekontroluje se certifikát X.509-T text... výstupní soubor bude ve formátu "ASCII text"-q... spuštění v dávkovém režimulocalhost... adresa serveru NESSUS1241... TCP port, na kterém nessusd provozujemeroot... jméno uživatele NESSUSuSecret... heslo tohoto uživateletargets... soubor se seznamem testovaných strojů (127.0.0.1)results... výstupní soubor s výsledky
Program nás upozorní:
The plugins that have the ability to crash remote services or hosts have been disabled. You should activate them if you want your security audit to be complete
Počkáme, až bezpečnostní testy skončí, zkontrolujeme výstupní soubor s výsledky auditu našeho auditačního serveru a zařídíme se podle nich. Nezapomeneme, že zatím proběhly jen tzv. bezpečné testy. K tomu, abychom mohli spouštět úplné testy včetně potenciálně nebezpečných, musíme nejprve vytvořit vhodný konfigurační soubor podle svých potřeb pomocí grafického klienta NESSUSu: vydáme příkaz
$ nessus &
a sami v grafickém rozhraní změníme všechny potřebné parametry; rozhodně však v "PLUGINS" nezapomeneme zvolit "ENABLE ALL" a jako "Target" opět zadat 127.0.0.1 (nebo soubor targets). Audit spustíme kliknutím na tlačítko "START THE SCAN". Opět počkáme na dokončení bezpečnostního auditu a zkontrolujeme výsledky - možná budou úplnější.
Vzniklý implicitní konfigurační soubor klienta /root/.nessusrc umožní spouštět úplné testy včetně potenciálně nebezpečných. Překopírujeme ho do souboru .nessusrc.full. Z něho snadno vytvoříme druhý konfigurační soubor .nessusrc.safe pro spouštění pouze bezpečných testů; stačí v něm změnit řádku
safe_checks = no
na
safe_checks = yes
Po úspěšném vyzkoušení grafického klienta nastavíme automatické stahování
bezpečnostních testů a generování nových versí obou konfiguračních souborů tím,
že do crontab přidáme tyto nebo podobné dvě řádky:
# Every day at 23.55 GMT 55 23 * * * /usr/local/sbin/nessus-update-plugins; cp $HOME/.nessusrc $HOME/.nessusrc.full; sed -e s/'safe_checks = no'/'safe_checks = yes'/ $HOME/.nessusrc > $HOME/.nessusrc.safe
2.4 Programy poštovního rozhraní
jsou dva: auditXX a procXX. Oba jsou napsány v jazyce
Perl a vyžadují přítomnost interpretu Perlu.
Program auditXX pracuje pod uživatelským jménem "audit".
Vykonává tyto základní funkce:
- příjem dopisů od SMTP serveru
- kontrola přítomnosti PGP podpisu
- odeslání nepodepsané odpovědi na přijaté nepodepsané dopisy
- kontrola správnosti PGP podpisu
- extrakce požadovaných parametrů auditu přijatých v dopise (konfigurace testů, formát výstupního souboru s výsledky, seznam testovaných strojů, zpoždění)
- zařazení dávkového souboru do fronty požadavků
- odeslání podepsané odpovědi na přijaté podepsané dopisy
Program procXX pracuje pod uživatelským jménem "root". Jeho
úkolem je:
- prohlížení fronty požadavků na audit strojů
- spuštění auditu ve vhodnou chvíli a se správnými parametry
- odeslání podepsaného dopisu s výsledky auditu
Níže uvedený postup popisuje instalaci na auditačním serveru audit.example.net. Na něm je vytvořeno uživatelské jméno "audit", které slouží výhradně ke komunikaci uživatelů se serverem prostřednictvím elektronické pošty (adresa audit@audit.example.net). Na serveru je pod uživatelským jménem "root" nainstalován i řádkový klient a server systému NESSUS, jak již bylo uvedeno.
2.4.1 Konfigurace poštovního systému
Poštu s příkazy pro auditační server přijímá pouze stroj audit.example.net. V zóně domény example.net tedy existuje pro tuto adresu jediný MX záznam (žádné sekundární MX relé pro tuto adresu úmyslně nezřídíme):
audit IN MX 10 audit
Na serveru je nainstalován SMTP server Postfix pro příjem i odesílání
pošty. Poštu doručenou uživatelskému jménu "audit" soubor
.forward přesměruje do standardního vstupu programu
auditXX:
\audit, "|/home/audit/bin/auditXX"
2.4.2 Instalace modulů jazyka Perl
Z adresy search.cpan.org nainstalujeme modul Mail::Sender (v současnosti verse 0.8.10), který umožňuje komunikaci s naším SMTP serverem (Postfix). Modul nainstalujeme doporučeným způsobem:
$ perl -MCPAN -e "install Mail::Sender"
Při vytváření konfiguračního souboru stačí uvést implicitní hodnotu SMTP serveru jako localhost. Ostatní parametry není třeba vyplňovat. Podobně by mělo jít nainstalovat Crypt::OpenPGP (v současnosti verse 1.03):
$ perl -MCPAN -e "install Crypt::OpenPGP"
Autorovi se ale lépe osvědčilo nejprve nainstalovat tyto dva moduly:
$ perl -MCPAN -e "install Math::Pari"
$ perl -MCPAN -e "install Crypt::RSA"
a modul Crypt::OpenPGP až po nich.
2.4.3 Instalace PGP klíče a ověření funkce poštovního systému
Spustíme program gpg a vygenerujeme PGP klíč pro uživatelské jméno
audit@audit.example.net. Privátní klíč vložíme i do keyringu
uživatelského jména "root".
Odesílání dopisů podepsaných PGP klíčem poštovního serveru ověříme pomocí
programu MailtestXX (v současnosti verse 9.92) napsaného opět v jazyce
Perl. Do jeho zdrojového souboru vložíme 16-znakový identifikátor
vygenerovaného klíče a jeho Passphrase, adresu auditačního serveru a jednu nebo
několik adres příjemců asi takto:
$from = 'audit@audit.example.net'; # poštovní adresa serveru $to = 'test@example.cz, test2@example.cz'; # sem odešleme zkušební dopis $keyid = 'BE3A078534D6DDC8'; # audit@audit.example.net $pass = 'AuditPwd'; # Passphrase pro klíč PGP
Testovací program spustíme takto:
$ MailtestXX test.html
(test.html je jakýkoli testovací soubor ve formátu HTML)
Pokud všechno proběhlo správně, napíše program MailtestXX:
xx input lines, yyy characters read...... sent.
Na adresách příjemců zkontrolujeme, zda dopisy došly a lze je přečíst.
Případná chybová hlášení vypíše program MailtestXX a mohou být i v
systémovém logu (/var/log/allmessages apod.).
2.4.4 Instalace a test činnosti programu auditXX
Program auditXX (v současnosti audit35) překopírujeme do
adresáře /home/audit/bin. Do jeho zdrojového souboru opět
vložíme 16-znakový identifikátor vygenerovaného klíče, jeho Passphrase a adresu
auditačního serveru podle tohoto příkladu:
$from = 'audit@audit.example.net'; # poštovní adresa serveru $keyid = 'BE3A078534D6DDC8'; # audit@audit.example.net $pass = 'AuditPwd'; # Passphrase pro klíč PGP
Na adresu audit@audit.example.net odešleme libovolný (třeba prázdný a nepodepsaný) dopis tak, aby příjem pošty z TCP portu 25 adresy odchozího SMTP serveru byl na firewallu auditačního serveru povolen. Při instalaci v systému SuSE 10.0 bylo třeba povolit přístup k nainstalovaným modulům jazyka Perl pro řadové uživatele takto:
$ chmod -R 755 /usr/lib/perl5/site_perl/5.8.7/*
Program auditXX by na přijatý nepodepsaný dopis měl odpovědět
odesláním standardního nepodepsaného dopisu s pokyny k obsluze serveru. Dnes
vypadá asi takto:
From: audit@audit.example.net Date: Mon, 5 Dec 2005 15:34:01 +0100 To: test@example.cz Subject: Re: TEST 1 AUDIT v. 35 start: Mon Dec 5 14:34:01 2005 GMT The following UNSIGNED text has been received: vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv TEST 1 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Please resend using a correct PGP key. This may also help: AUDIT SERVER HELP: CONFIG: previous | full | safe FORMAT: previous|nbe|html|html_graph|text|xml|old-xml|tex|nsr TARGET: previous | list of IP or domain addresses to be tested DELAY: hh H mm M | hh H | mm M VERBOSE: (for debugging purposes) END: (end of input data)
Podrobnosti o případných chybách a jejich původu zjistíme ze souboru /home/audit/DEBUG nebo z chybového hlášení odeslaného serverem Postfix. Pokud až potud fungovalo všechno správně, vyzkoušíme příjem dopisů podepsaných platným klíčem PGP. Předpokládejme, že chceme povolit:
- uživateli test@example.cz bezpečnostní audit strojů 10.1.2.3, 10.2.3.5
- uživateli user@example.com bezpečnostní audit strojů 192.168.200.100 ... 104
Uspořádáme tedy s těmito uživateli soukromou PGP autogramiádu; veřejné PGP klíče uživatelů "test" a "user" podepíšeme a vložíme do keyringů uživatelských jmen "audit" a "root". Všechny informace potřebné k bezpečnostnímu auditu budou uloženy v rámci jediného adresáře /home/audit/AUDIT takto:
$ ls -R /home/audit/AUDIT/
/home/audit/AUDIT/: test@example.cz/ PERM/ QUEUE/ user@example.com/ PROC/ /home/audit/AUDIT/test@example.cz: CFG CFG.sav /home/audit/AUDIT/user@example.com: CFG CFG.sav /home/audit/AUDIT/PERM: test@example.cz user@example.com /home/audit/AUDIT/PROC: RESFILE TARGFILE /home/audit/AUDIT/QUEUE:
Adresář /home/audit/AUDIT se vytvoří automaticky při
prvním spuštění programu auditXX. Jeho uživatelské podadresáře (např.
/home/audit/AUDIT/test@example.cz/) se vytvoří automaticky pro
(každého) oprávněného uživatele, od něhož byl přijat dopis podepsaný PGP klíčem
nalezeným v keyringu /home/audit/.gnupg/pubring.gpg. V každém
uživatelském podadresáři se vytvoří konfigurační soubor
audit/AUDIT/test@example.cz/CFG a případně i jeho záložní
kopie audit/AUDIT/test@example.cz/CFG.sav. Obsahuje parametry
CONFIG, FORMAT a TARGET, s nimiž uživatel naposledy úspěšně spustil
bezpečnostní audit svých strojů. To proto, aby při opakovaném odeslání
požadavku na audit nemusel uživatel zadávat ty parametry, které se proti
minulému běhu nezměnily; pokud se nezměnil žádný, musí z bezpečnostních důvodů
uživatel znovu uvést alespoň jeden z nich.
Adresář /home/audit/AUDIT/PERM se vytvoří automaticky
poté, co program auditXX přijal správně podepsaný dopis od prvního
oprávněného uživatele. Tento adresář musí obsahovat pro každého oprávněného
uživatele jeden soubor s jeho jménem (např.
/home/audit/AUDIT/PERM/test@example.cz). V něm jsou uvedeny
IP adresy strojů, které smí tento uživatel testovat. Formát souboru je
jednoduchý:
# Případný libovolný komentář 10.1.2.3 10.2.3.5 # Adresy mohou být i po několika na jedné řádce, oddělené mezerou nebo TAB: 192.168.100.200 192.168.100.201 192.168.100.202 192.168.100.203 192.168.100.204
Tento soubor vytvoří správce auditačního systému ručně podle požadavku, který dostal od uživatele při soukromé PGP autogramiádě. Vzhledem k tomu, že jde o uživatele z jeho vlastní organisace, neměl by mít problém s ověřením, zda má uživatel právo testovat uvedené stroje.
I adresář /home/audit/AUDIT/QUEUE se vytvoří automaticky
při prvním spuštění programu auditXX. Obsahuje frontu požadavků všech
uživatelů na spuštění programu nessus. Požadavky do fronty vkládá
program auditXX, z fronty je vybírá a dále zpracovává program
procXX.
K adresáři /home/audit/AUDIT/PROC má přístup pouze
uživatel "root". Program procXX v něm vytvoří soubor
TARGFILE (seznam IP adres testovaných strojů) a
RESFILE (soubor s výsledky bezpečnostního auditu těchto
strojů) podle požadavků, které našel v nejstarším souboru v adresáři
/home/audit/AUDIT/QUEUE.
Činnost programu auditXX nejsnáze otestujeme tak, že pro sebe
vytvoříme zkušební uživatelské jméno (test@example.cz),
vygenerujeme pro ně PGP klíč, vytvoříme soubor
/home/audit/AUDIT/PERM/test@example.cz obsahující IP adresu
testovaného stroje (např. 10.1.2.3) a na adresu
audit@audit.example.net odešleme podepsaný dopis obsahující
např.:
config: safe format: html target: 10.1.2.3 verbose end
Podrobný protokol o průběhu zpracování požadavku a o případných chybách se
vytvoří v souboru na adrese /home/audit/DEBUG. Důležité
informace včetně případných chybových hlášení odešle program auditXX
uživateli, a to ve stejném formátu, jako měl přijatý dopis od uživatele, tj.
nepodepsaný, clearsigned PGP nebo PGP/MIME.
Do fronty požadavků v adresáři /home/audit/AUDIT/QUEUE se zařadí soubor s unikátním názvem, který obsahuje časové údaje o požadovaném okamžiku spuštění testu (levá část názvu), případně i o okamžiku odeslání požadavku (prostřední část názvu, pokud uživatel požadoval nenulové zpoždění). Pravá část názvu zajišťuje unikátnost názvu souboru. Tímto způsobem máme zajištěno, že výpis adresáře vždy automaticky seřadí soubory tak, že požadavek, který má být zpracován jako první, se také objeví na prvním místě.
2.4.5 Instalace a test činnosti programu procXX
jsou ještě jednodušší. Program procXX (v současnosti verse 31)
překopírujeme do adresáře /root/bin. Do jeho zdrojového
souboru také vložíme 16-znakový identifikátor PGP klíče serveru, jeho
Passphrase a poštovní adresu podle tohoto vzoru:
$from = 'audit@audit.example.net'; # poštovní adresa serveru $keyid = 'BE3A078534D6DDC8'; # audit@audit.example.net $pass = 'AuditPwd'; # Passphrase pro klíč PGP
Program ověří existenci adresářů /home/audit/AUDIT/PROC a
/home/audit/AUDIT/QUEUE. Cron ho spouští každou
minutu; do crontab tedy přidáme tyto nebo podobné dvě
řádky:
# Checking the NESSUS AUDIT QUEUE every minute: * * * * * /root/bin/procXX
Pro testovací účely můžeme procXX spustit i ručně. Pokud
/home/audit/AUDIT/QUEUE obsahuje nějaké soubory s požadavky na
spuštění nessus, které tam vytvořil program auditXX,
procXX se zaměří na první z nich. Pokud již nadešel jeho čas, spustí
nessus s požadovanými parametry. Až jeho běh skončí, procXX
odešle dopis s výsledky uživateli. Potom najde ve frontě název prvního
následujícího požadavku a otestuje, zda nadešel i jeho čas. Pokud ano, ihned ho
spustí a popsaný děj se opakuje. Pokud není třeba ihned spustit další běh
nessus, program procXX skončí.
Při spuštění programu nessus je vytvořen prázdný soubor
/home/audit/AUDIT/PROC/NESSUSLOCK, který signalisuje, že
spuštění dalších bezpečnostních testů musí počkat, dokud
NESSUSLOCK nezmizí. Program procXX je i nadále
spouštěn každou minutu; pokud zjistí, že NESSUSLOCK existuje,
ihned skončí.
Podrobný protokol o průběhu zpracování požadavku se vytvoří v souboru
/root/DEBUG. Programy auditXX i procXX
generují řadu diagnostických hlášení, která by měla pomoci při hledání
případných chyb vzniklých při instalaci nebo běhu programů.
2.5 Auditační server CESNETu v Praze-Dejvicích
Auditační systém je od listopadu 2005 ve zkušebním provozu v dejvické síti CESNETu. Provozujeme ho na serveru DELL PowerEdge 1400SC v konfiguraci: Pentium III 925 MHz, 512 MB RAM, 160 GB SCSI HD. Jako operační systém slouží Linux, distribuce SuSE 9.x. Připravujeme přechod na výkonnější server DELL PowerEdge SC1425 a SuSE Linux 10.x.
Server lze kontaktovat na adrese audit@audit.ces.net. Poštu přijímá pouze ze SMTP serveru office2.cesnet.cz, jehož používá převážná většina zdejších uživatelů. Využívá "plugins" podle licence "REGISTERED PLUGIN FEED"; znamená to, že bezpečnostní testy v síti CESNETu jsou zdarma, ale se sedmidenním zpožděním po jejich zveřejnění pro platící zákazníky.
3 Závěr
Auditační systém NESSUS vyniká řadou pokročilých vlastností, které umožňují otestovat zabezpečení stroje podstatně dokonaleji, než jak to v této fázi dělá zde popsaný auditační server. Např. zřízení speciálního uživatelského jména na testovaných strojích, k nimž by pak dostal NESSUS přístup, by umožnilo prozkoumat příslušné stroje i zevnitř - tedy kvalitativně výrazně lépe, než dokáže náš auditační server dnes, tj. zvenčí prostřednictvím ICMP nebo otevřených TCP a UDP portů.
Další možností auditů může být ta, že administrátor spouští bezpečnostní
testy svých strojů prostřednictvím svého vlastního (pravděpodobně grafického)
klienta nessus; k našemu auditačnímu serveru nessusd se
připojuje externě prostřednictvím TCP portu 1241. To mu umožní spustit přesně
takové "plugins" nebo jejich skupiny, které potřebuje, a přitom nebude
muset spravovat server nessusd a pečovat o jeho aktualisaci.
Ještě další možností by mohlo být sestavení nových specialisovaných
konfiguračních souborů klienta nessus (kromě dosud popsaných
full a safe) - např. pro testování jednotlivých přesně
definovaných problémů typických pro některé operační systémy nebo aplikační
programy.
Všechna tato vylepšení mohou být hotova poměrně brzy; stačí, aby uživatelé systému projevili dostatečný zájem a byli případně ochotni poskytnout k auditu své stroje, zejména s operačními systémy MS Windows 2000 a vyššími, které autor této zprávy dosud neměl příležitost otestovat.
Autor tohoto systému bude vděčen za připomínky k provozu systému a za jakékoli náměty k jeho rozšíření jeho možností.
Použitá literatura
| [Der04] |
Deraison, R. et al.: Nessus Network Auditing Syngress Publishing, 2004, ISBN 1931836086 |
| [Vac02] |
Vachek P., Indra M., Pustka M.: Projekt bezpečnostního auditu lokálních sítí Technická zpráva CESNETu 1/2002, CESNET, z. s. p. o., Praha |