CESNET Intrusion Detection System

Technická zpráva CESNETu číslo 5/2006
k dispozici též ve formátech PDF, PostScript a XML.

Pavel Vachek
15. červen 2006

Keywords: IDS, Instrusion detection system, LaBrea, CESNET CSIRT

1   Abstract

This technical report describes a simple system for detecting hacker- and virus-induced intrusions into a selected LAN. Its main component is the LaBrea program distributed under GPL licence and run on a PC server under Linux. Auxiliary programs built within the CESNET CSIRT activity allow automated distribution of warning e-mails to the administrators of selected networks where the attacks originated. Unlike other Intrusion Detection Systems, this IDS needs no human intervention after installation.

2   Úvod

CESNET provozuje od konce roku 2002 jednoduchý a užitečný systém pro detekci neoprávněného přístupu (Intrusion Detection System, dále jen IDS), který po instalaci prakticky nevyžaduje lidskou obsluhu a pravidelně informuje správce sítí o těch jejich strojích, z nichž byly zaznamenány útoky. Správci sítí jsou tedy včas informováni, mohou napadené stroje včas odvirovat nebo odpojit od sítě, a tak omezit další šíření virů a zlepšit pověst sítě.

Účelem této zprávy je informovat o systému IDS další zájemce, zejména z řad administrátorů sítí universit a AV ČR s velkými alokacemi IP adres, a přesvědčit je, aby podobný systém nainstalovali ve svých vlastních sítích.

3   Projekt IDS

IDS CESNETu má tyto hlavní součásti:

Pomocné funkce pro systém IDS:

Všechny tyto součásti jsou podrobně popsány níže.

4   Program LaBrea

Cílem programu LaBrea [Lis03] je zpomalit a pokud možno zastavit šíření počítačových virů a hackerských aktivit. Jeho autor ho napsal jako reakci na virus Code Red, který začal řádit v červenci 2001. Jak vyplyne z následujících odstavců, Internetu prospívá i instalace samotného serveru LaBrea; po doplnění na IDS server je užitek z LaBrey ještě výrazně větší.

Hlavní rysy programu LaBrea:

Na pokusy o připojení umí LaBrea reagovat následujícími způsoby:

Záznamy o incidentech LaBrea zaznamenává do systémového logu nebo do zvoleného souboru.

5   Doporučená hardwarová konfigurace IDS

Při výběru vhodného stroje můžeme vycházet z těchto dlouhodobých zkušeností:

V současné době je IDS CESNETu instalován na starším stroji DELL PowerEdge 1400SC v konfiguraci:

IDS server doporučujeme připojit co nejblíže k hraničnímu routeru, který propojuje síť instituce a páteřní síť CESNETu. Na podsíť monitorovanou systémem IDS ovšem neaplikujeme žádná omezení provozu (ochrana před síťovými viry apod.). Připojení přes přepínač nedoporučujeme, protože při monitorování rozlehlejší podsítě, jež zlepšuje účinnost systému, by se mohla přeplnit ARP tabulka přepínače.

6   Instalace

Předpokládejme, že naší instituci byl přidělen adresový rozsah 172.16.0.0/16, tj. 65536 IP adres; z nich jsme dosud nevyužili a jistě ani nevyužijeme blok 172.16.224.0/22, tj. 1024 IP adres. Tento adresový blok vyhradíme pro IDS; bude ho monitorovat rozhraní Eth1.

Administrativní rozhraní Eth0 systému IDS má přidělenu adresu např. 172.16.1.2; tato adresa je v našem případě součástí podsítě o velikosti např. /25 (128 IP adres). Uvedená IP adresa je jediná, kterou IDS zveřejňuje a která musí mít reversní záznam; z této adresy odesíláme dopisy správcům těch sítí, jejichž stroje se pokoušely připojit na IP adresy monitorované rozhraním Eth1. Na rozhraní Eth0 povolujeme přístup pomocí SSH pouze z několika vybraných adres.

Před zahájením instalace systému LaBrea kontrolujeme, zda byly v rámci distribuce nainstalovány programy Gcc, Perl, Libpcap a Whois. Poslední uvedený program [DIt06] je součástí SuSE Linux a několika dalších distribucí. Lze ho najít i na adrese http://ftp.debian.org/debian/pool/main/w/whois. Nejnovější je whois_4.7.13.tar.gz (59 kB, 2.4.2006).

Z http://prdownloads.sourceforge.net/libdnet stáhneme nejnovější versi programu Libdnet. V našem případě to byl soubor libdnet-1.11.tar.gz (436 kB, 19.1.2006).

Z http://prdownloads.sourceforge.net/labrea stáhneme nejnovější versi programu LaBrea - pravděpodobně soubor labrea-2.5-stable-1.tar.gz (206 kB, 30.10.2003).

Standardním způsobem
$ ./configure
$ make
$ su
$ make install
nainstalujeme nejprve program Libdnet, pak LaBrea.

Program LaBrea spustíme ručně ve zkušebním režimu (použije se pouze rozhraní Eth0, provoz v síti se nijak neovlivní):

$ labrea -T -z

Program LaBrea by měl zobrazit zhruba toto:

Wed May 31 16:01:31 2006  LaBrea will attempt to capture unused IPs.
Wed May 31 16:01:31 2006  Full internal BPF filter: arp or (ip and ether dst host 00:00:0F:FF:FF:FF)
Wed May 31 16:01:31 2006  LaBrea will log to stdout
Wed May 31 16:01:31 2006  Logging will be very verbose.
Wed May 31 16:01:31 2006  Initiated on interface: eth0
Wed May 31 16:01:31 2006  Host system IP addr: 172.16.1.2, MAC addr: 00:12:34:56:78:9a
Wed May 31 16:01:31 2006  ...Processing configuration file
Wed May 31 16:01:31 2006  ... End of configuration file processing

Wed May 31 16:01:31 2006  Network number: 172.16.1.0
Wed May 31 16:01:31 2006  Netmask: 255.255.255.128
Wed May 31 16:01:31 2006  Number of addresses LaBrea will watch for ARPs: 127
Wed May 31 16:01:31 2006  Range: 172.16.1.0 - 172.16.1.127
Wed May 31 16:01:31 2006  Throttle size set to WIN 10
Wed May 31 16:01:31 2006  Rate (-r) set to 3
Wed May 31 16:01:31 2006  Test mode run complete... LaBrea is exiting.
Wed May 31 16:01:31 2006  LaBrea exiting...
Wed May 31 16:01:31 2006  35/0 packets (received/dropped) by filter

V následujícím kroku spustíme program tak, aby IDS využíval obou rozhraní:

Odpovídá tomu tato příkazová řádka:

$ labrea -b -H -i eth1 -I 172.16.225.77 -no-arp-sweep \
  -o -p 300 -v -z

Pokud všechno správně funguje i teď, začneme rozhraní Eth1 provozovat jako unnumbered interface, tj. bez přidělené IP adresy. Následující odstavce podrobně popisují instalaci v operačním systému SuSE Linux; uživatelé jiných distribucí použijí toho, co jejich operační systém nabízí.

Původní stav nenakonfigurovaného rozhraní Eth1 je např.:

$ ifconfig eth1
eth1      Link encap:Ethernet  HWaddr 00:09:87:65:43:21
          BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

Pomocí konfiguračního programu YaST (operační systém SuSE Linux) nastavíme potřebné parametry tohoto rozhraní včetně jeho IP adresy (libovolná adresa ze zvoleného rozsahu, zde opět 172.16.225.77). Po nakonfigurování ohlásí ifconfig asi toto:

$ ifconfig eth1
eth1      Link encap:Ethernet  HWaddr 00:09:87:65:43:21
          inet addr:172.16.225.77  Bcast:172.16.227.255  Mask:255.255.252.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:11 errors:0 dropped:0 overruns:0 frame:0
          TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:660 (660.0 b)  TX bytes:460 (460.0 b)

Konfigurační soubor tohoto rozhraní, který se nalézá v adresáři /etc/sysconfig/network, teď obsahuje:

$ more ifcfg-eth-id-00\:09:87\:65\:43\:21
BOOTPROTO='static'
BROADCAST='172.16.227.255'
IPADDR='172.16.225.77'
MTU=''
NETMASK='255.255.252.0'
NETWORK='172.16.224.0'
REMOTE_IPADDR=''
STARTMODE='onboot'
UNIQUE='Hkyc.MvtRJ6g27Q1'
_nm_name='bus-pci-0000:01:0a.0'

Pozor: pokud chceme obsah tohoto souboru zálohovat, pojmenujeme záložní soubor tak, aby se lišil už začátek jeho názvu - např. sav-ifcfg-eth-id-00\:09\:87\:65\:43\:21.

Vhodným textovým editorem odstraníme údaje BROADCAST, IPADDR, NETMASK a NETWORK. Soubor pak vypadá takto:

$ more ifcfg-eth-id-00\:09\:87\:65\:43\:21
BOOTPROTO='static'
BROADCAST=''
IPADDR=''
MTU=''
NETMASK=''
NETWORK=''
REMOTE_IPADDR=''
STARTMODE='onboot'
UNIQUE='Hkyc.MvtRJ6g27Q1'
_nm_name='bus-pci-0000:01:0a.0'

Operační systém restartujeme. Měl by přitom ohlásit asi toto:

Setting up network interfaces:
    lo
    lo        IP address: 127.0.0.1/8   .  .  .  .  .  .  .  .  .  .  done
Waiting for mandatory devices:
  eth-id-00:12:34:56:78:9a eth-id-00:09:87:65:43:21
    eth0      device: AAAAA Corp. [Ethernet ABCD] (rev 08)
    eth0      configuration: eth-id-00:12:34:56:78:9a
    eth0      IP address: 172.16.1.2/25
    eth1      device: BBBBB Corp. [Ethernet EFGH] (rev 09)
    eth1      configuration: eth-id-00:09:87:65:43:21
Setting up service network  .  .  .  .  .  .  .  .  .  .  .  .  .  .  done

Je vidět, že rozhraní Eth1 je také funkční, ale nemá přidělenu IP adresu. Program ifconfig zobrazí stav rozhraní Eth1 takto:

$ ifconfig eth1
eth1      Link encap:Ethernet  HWaddr 00:09:87:65:43:21
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:442 errors:0 dropped:0 overruns:0 frame:0
          TX packets:10 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:3199 (3.1 Kb)  TX bytes:1005 (1.0 Kb)

Program LaBrea spustíme pomocí této příkazové řádky:

$ labrea -b -E 00:09:87:65:43:21 -H -i eth1 -I 172.16.225.77 \
  -n 172.16.224.0/22 -no-arp-sweep -O -o -p 300 -v -z

V tomto režimu můžeme program LaBrea provozovat nějakou dobu podle potřeby. Můžeme vyzkoušet jeho další možnosti (volitelné parametry příkazové řádky nebo konfiguračního souboru), zkusíme se do monitorovaného rozsahu adres připojit např. programem Telnet, vyzkoušíme reakci na ping, zjistíme, jak časté jsou útoky DDoS zdánlivě vycházející z naší sítě, atd.

Přitom pravděpodobně zjistíme, že program generuje obrovské množství dat o útocích vycházejících i z oblastí, které nemůžeme ovlivnit. Soustředíme se pouze na sítě z autonomního systému AS2852, tj. na sítě CESNET, z. s. p. o., jeho členů a zákazníků. Všechna data, která program LaBrea generuje, tedy budeme filtrovat programem grep tak, aby nám k dalšímu zpracování zůstaly jen:

K tomu všemu slouží soubor /var/log/LBstrings.

Dále musíme zajistit, aby se program LaBrea automaticky spustil po zavedení operačního systému, aby bylo možné jeho výsledky v pravidelných intervalech zpracovat a aby se program uměl vypořádat i s následky případného výpadku systému. To všechno zajistí soubor /etc/init.d/labrea, který nainstalujeme příkazem

$ insserv -v labrea.

Výsledky získané programem LaBrea zpracovává IDS každý pracovní den několikrát - tak, jak je to definováno v crontabu uživatele root. Pokaždé proběhnou tyto operace:

Programy LaBreaBackEnd a LaBreaReport jsou napsané v jazyce Perl. Oba vyžadují instalaci modulu Mail::Sender z http://search.cpan.org/dist/Mail-Sender. Nejnovější verse je Mail-Sender-0.8.13.tar.gz z 25.2.2006. Nainstalujeme ho např. těmito příkazy:

$ perl Makefile.PL
$ make
$ make test
$ make install

Přitom je třeba definovat několik implicitních hodnot, které Mail::Sender ke své činnosti potřebuje. Nejdůležitější z nich je adresa poštovního serveru. Pokud provozujeme Postfix na témže stroji jako IDS, jako adresu poštovního serveru uvedeme localhost. Na všechny ostatní dotazy lze odpovědět stiskem Enter nebo (u implicitního kódování) n.

Program LaBreaBackEnd je poměrně složitý systém, který původně sloužil ke zpracování dat o útocích vycházejících z celého Internetu. Systém IDS CESNETu ho ale využívá v jednodušším režimu:

$ LaBreaBackEnd -b -i file1 -l limit -O -v

-b		provoz v dávkovém režimu
-i file1	file1 je název vstupního souboru (výstupní soubor programu LaBrea)
-l limit	pokud počet útoků z jedné IP adresy nepřesáhne hodnotu limit, ignorujeme je.
		Pokud lim=0, zpracujeme všechny útoky z této adresy
-O		zpracujeme pouze útoky ze sítí uvedených v poli @ownnet
-v		výpis podrobnějších diagnostických informací.

Hlavním účelem programu LaBreaBackEnd je zjištění adres elektronické pošty všech správců sítě, z níž byl útok přijat. Pokud k IP adrese útočícího stroje existuje platný reversní záznam, zjistí LaBreaBackEnd i adresy správců příslušné domény. Ze vzniklého seznamu adres program vybere jednu nebo několik nejvhodnějších adres; pokud vhodné adresy nenajde, pokusí se je sám vygenerovat, je-li to možné, a přidá je k adresám již nalezeným.

Program se snaží minimalisovat počet odeslaných dopisů: pokud byly zaznamenány útoky z různých sítí nebo domén, k nimž program po optimalisaci adres přiřadil stejné adresy elektronické pošty správců, pošle na tyto adresy jediný společný dopis s informacemi o všech útocích detekovaných v příslušném časovém intervalu.

Program generuje v pracovním adresáři protokol o běhu programu s implicitním názvem yymmddhh.log udávajícím datum a hodinu ukončení programu. Pokud byly zjištěny útoky ze sítí, které nás zajímají, vznikne i

Program LaBreaBackEnd také odešle administrátorovi systému IDS zprávu SMS o výsledcích běhu (počet detekovaných chyb formátu ve vstupních datech, počet útočících strojů a počet vygenerovaných datových souborů).

Program LaBreaReport je spouštěn, pouze pokud program LaBreaBackEnd vygeneroval nějaká data o zjištěných útocích. Čte soubory v adresáři result a po vhodném naformátování a doplnění vysvětlujících informací je rozešle elektronickou poštou. Po odeslání je implicitně vymaže. I on nabízí různé možnosti parametrů na příkazové řádce; za normálních okolností využíváme pouze:

$ LaBreaReport -k -i

-k	odeslané soubory se nevymažou, ale přejmenují na *.sent
-i	existence souborů *.sent v adresáři result je tolerována.

Při testování činnosti programu lze s výhodou použít parametrů

-t	dopisy se neodesílají, soubory se nemažou
-T	dopisy se posílají jen na adresu $testaddr
-v	výpis podrobnějších diagnostických informací.

Program LaBreaBackEnd obsahuje proměnné, které je vhodné zkontrolovat a případně zkonfigurovat podle potřeb sítě. Jsou to především:

@ignoredom	pokud doménová adresa útočícího stroje obsahuje některou 
		adresu uvedenou v @ignoredom, nepošle se správcům této domény
		žádná stížnost
@ndom		útoky z domén zde uvedených budou ignorovány
@nipadd		útoky z jednotlivých IP adres zde uvedených budou ignorovány
@nipnet		útoky ze sítí zde uvedených budou ignorovány
@ownnet		při volbě parametru -O budou monitorovány pouze sítě uvedené 
		v tomto poli
$smsadd		adresa, na niž se odesílá SMS o výsledku běhu.

Informace o tom, kde přesně leží IP adresy sítě monitorované systémem IDS, nezveřejňujeme. Tomu napomáhají i následující dvě proměnné v programu LaBreaBackEnd:

$strin	řetězec (cílová IP adresa), který chceme kvůli utajení ...
$strout		... nahradit tímto řetězcem.

I program LaBreaReport je vhodné zkonfigurovat. Jde o tyto proměnné:

$bccaddr	adresy, na něž se posílají slepé kopie varovných dopisů,
		pokud není zvolen testovací režim -t nebo -T
$testaddr	adresa, na niž se posílají dopisy v testovacím režimu -T.

7   Závěr

Systém IDS v dejvické síti CESNET2 byl původně navržen tak, aby detekoval a hlásil útoky z celosvětového Internetu. Má tedy mnoho vlastností, které se v nynějším režimu práce nevyužívají, ale které autor zatím nechce odstranit.

Důvod, proč se IDS omezuje na hlášení útoků pocházejících ze sítě CESNET2, není technický, ale administrativní. Jakmile začal systém IDS rozesílat svá varování, začali adresáti těchto zpráv (v průměru kolem tisíce) odpovídat takto:

  1. Za zprávy děkují, případně i napíší, v čem byl problém. Často jde o odpovědi autoresponderů
  2. o zprávy nestojí a uvádějí seznam domén nebo IP adres, které máme ignorovat
  3. o zprávy nestojí, ale uvádějí správnou adresu, kam zprávy posílat
  4. o zprávy nestojí, považují je za SPAM
  5. posílají zavirované dopisy a SPAM.

Reakce správce IDS:

Zásadní problém s monitorováním celosvětového Internetu je v tom, že systém IDS pak vyžaduje každodenní dozor člověka, který by až několik hodin denně trávil korespondencí se správci a podle jejich požadavků průběžně zdokonaloval konfiguraci programu LaBreaBackEnd. Přitom se projeví zásadní problémy: neplatné, dávno zastaralé kontaktní údaje o správcích sítí i domén, a neexistující kontaktní adresy pro zasílání stížností podle RFC 2142 (abuse@example.net). Pokud správci sítí a domén své kontaktní údaje sami neudržují, je velká část práce administrátora IDS marná.

Po zvážení těchto zkušeností se autor zprávy rozhodl soustředit se na síť CESNET2 a přesvědčit správce všech připojených sítí, aby zkontrolovali své kontaktní údaje v RIPE DB a zřídili i kontaktní adresu pro zasílání stížností. U všech universitních sítí a u většiny zákazníků je to hotovo, poměrně malá část ještě zbývá dokončit.

Systém IDS se v provozu velmi osvědčuje: na rozdíl od klasických systémů IDS nevyžaduje pravidelnou údržbu signatur útoků a nehrozí mu ani nebezpečí falešných poplachů. Bude však ještě užitečnější po nasazení na dalších místech sítě CESNET - lze oprávněně předpokládat, že se výrazně zlepší a zrychlí účinnost detekce útoků vycházejících přímo z těch sítí, jejichž správci tento systém IDS instalují.

8   Konfigurační soubory

8.1   Konfigurace crontab uživatele root

$ crontab -l
# Every working day at 6.05, 9.05, 12.05, 15.05 GMT:
5 6,9,12,15 * * 1-5 /etc/init.d/labrea restart; sh /var/log/LBbe.sh

8.2   Soubor /var/log/LBbe.sh

#! /bin/sh
BZIP2_BIN=/usr/bin/bzip2
DATESTRING=`/bin/date +%y%m%d%H`
LBBE_LNK=/root/bin/LaBreaBackEnd
LBREP_LNK=/root/bin/LaBreaReport
LABREA_LOG=/var/log/LaBrea
LABREA_LOG_SAV=/var/log/LaBrea.$DATESTRING
LABREA_START=/var/log/START
TOUCH_BIN=/usr/bin/touch

echo "Processing the LaBrea log file, sending results (if any)..."
$LBBE_LNK -b -l 0 -i $LABREA_LOG -O -v && $LBREP_LNK -k -i
echo "Creating the START timestamp..."
$TOUCH_BIN $LABREA_START
echo "Renaming the LaBrea log file..."
mv -f -backup=t $LABREA_LOG $LABREA_LOG_SAV
echo "Compressing the LaBrea log file..."
$BZIP2_BIN $LABREA_LOG_SAV
echo "Done."

8.3   Soubor /var/log/LBstrings

ting: 195\.113\.
ting: 195\.178\.[6789]\d\.
ting: 193\.84\.[34]\d\.
ting: 193\.84\.1[679]\d\.
ting: 193\.84\.2[012]\d\.
ting: 146\.102\.
ting: 147\.3[23]\.
ting: 147\.22[89]\.
ting: 147\.23[01]\.
ting: 147\.251\.
ting: 158\.19[46]\.
ting: 160\.21[67]\.
Current average bw
Inbound SYN/ACK
Responded to a Ping

8.4   Soubor /etc/init.d/labrea

#! /bin/sh
#
# /etc/init.d/labrea
#
### BEGIN INIT INFO
# Provides: labrea
# Required-Start: $network
# Required-Stop: $network
# Default-Start: 3 5
# Default-Stop: 3 5
# Description: Start the LaBrea program
### END INIT INFO
LABREA_BIN=/usr/local/sbin/labrea
test -x $LABREA_BIN || exit 5
GREP_BIN=/usr/bin/grep
test -x $GREP_BIN || exit 5
. /etc/rc.status
rc_reset
case "$1" in
    start)
        echo -n "Starting LaBrea 2.51, appending to existing log"
        /sbin/startproc -f $LABREA_BIN -b -E 00:09:87:65:43:21 -H -i eth1 \
          -I 172.16.225.77 -n 172.16.224.0/22 -no-arp-sweep -O -o -p 300 \
          -v -z | $GREP_BIN -f /var/log/LBstrings >> /var/log/LaBrea.new &
        rc_status -v
        ;;
    stop)
        echo -n "Shutting down LaBrea 2.51..."
        /sbin/killproc -TERM $LABREA_BIN
        sleep 1
        rc_status -v
        echo -n "Shutting down grep..."
        /sbin/killproc -TERM $GREP_BIN
        sleep 1
        rc_status -v
        ;;
  restart)
        echo -n "Shutting down LaBrea 2.51..."
        /sbin/killproc -TERM $LABREA_BIN
        sleep 1
        rc_status -v
        echo -n "Shutting down grep..."
        /sbin/killproc -TERM $GREP_BIN
        sleep 1
        rc_status -v
        echo "Renaming the resulting log file to be processed by LBbe..."
        mv -f /var/log/LaBrea.new /var/log/LaBrea
        sleep 1
        echo -n "Starting LaBrea 2.51, opening new log file..."
        /sbin/startproc -f $LABREA_BIN -b -E 00:09:87:65:43:21 -H -i eth1 \
          -I 172.16.225.77 -n 172.16.224.0/22 -no-arp-sweep -O -o -p 300 \
          -v -z | $GREP_BIN -f /var/log/LBstrings > /var/log/LaBrea.new &
        sleep 1
        rc_status -v
        ;;
    status)
        echo -n "Checking LaBrea 2.51 status: "
        wc -l /var/log/LaBrea.new | cut -f1 -d" " > /var/log/LaBreaLC
        echo -n `cat /var/log/LaBreaLC`
        echo -n " log lines"
        rm -f /var/log/LaBreaLC
        /sbin/checkproc $LABREA_BIN
        rc_status -v
        ;;
    *)
        echo "Usage: $0 {start|stop|status|restart}"
        exit 1
        ;;
esac
rc_exit

Pozn.: Soubory LaBreaBackEnd a LaBreaReport se průběžně vyvíjejí. Jsou vystaveny na adrese ftp://ftp.cesnet.cz/local/ids a podepsány PGP klíčem 1BEDF25D (Pavel.Vachek@cesnet.cz; fingerprint = 6627 E8B9 29EC A28A EBE3 8A7F 44C4 BABC 1BED F25D).

Použitá literatura

[DIt06] Marco d'Itri: Whois - an improved whois client. http://www.linux.it/ md/software
[Kry06] Jan Krynicky: Mail::Sender - module for sending mails with attachments through an SMTP server. http://search.cpan.org/dist/Mail-Sender
[Lis03] Tom Liston: Project LaBrea. http://labrea.sourceforge.net and http://www.hackbusters.net/Worm%20and%20Virus%20Defense.pdf
[Vac03] Zabezpečení lokálních sítí CESNET2. In: Vysokorychlostní síť národního výzkumu a její nové aplikace, str. 228...231. Praha 2003. http://www.cesnet.cz/doc/2003/zprava/security.html

další weby:fond rozvojemetacentrumCzechLightpřenosyvideoservereduroameduID.cz