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:

Odeslal tedy tento dopis opatřený platným podpisem PGP:

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:

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ů:

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:

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:

Program procXX pracuje pod uživatelským jménem "root". Jeho úkolem je:

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:

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
další weby:fond rozvojemetacentrumCzechLightpřenosyvideoservereduroameduID.cz