IDS Systeemid - Labor 1
Labor 1
Labori käigus paigaldame Suricata ning testime selle töötamist.
Seame paika reeglite uuendamise Oinkmasteri abil kasutades Emerging Threats reeglikogumikku ning optimeerime kasutatavat reeglikogumikku.
Laboris on kasutusel Ubuntu Linux 14.04 LTS. Täpsem info laborite kohta on leitav: IDS systeemid - Labori paigaldusjuhend
Ettevalmistused Suricata paigaldamiseks
Seadistame eth1 võrguliidese valimatusse režiimi
1. Avame faili interfaces:
vim /etc/network/interfaces
2. Lisame eth1 parameetrid:
auto eth1 iface eth1 inet manual up ifconfig $IFACE 0.0.0.0 up up ip link set $IFACE promisc on down ip link set $IFACE promisc off down ifconfig $IFACE down
3. Salvesta ja välju
4. Teeme võrgu teenusele taaskäivituse
service networking restart
5. Kontrollime võrguliidest.
ifconfig
Käsu väljundis näeme kolmandas reas "UP BROADCAST RUNNING PROMISC":
eth1 Link encap:Ethernet HWaddr 00:0c:29:32:bf:11 inet6 addr: fe80::20c:29ff:fe32:bf11/64 Scope:Link UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1 RX packets:1152 errors:0 dropped:0 overruns:0 frame:0 TX packets:62 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:94351 (94.3 KB) TX bytes:17248 (17.2 KB)
Suricata paigaldus
1. Uuendame repositooriumi nimekirjad
apt-get update
2. Suricata kasutamisel Ubuntu distributsiooni peal on kõige lihtsam kasutada repositooriumi. Kõigepealt paigaldame paki nimega "python-software-properties", kuna selle sees asub programm "add-apt-repository", mida kasutame järgmisena.
apt-get install python-software-properties
3. Lisame repositooriumi ja piagaldame Suricata
add-apt-repository ppa:oisf/suricata-stable apt-get update apt-get install suricata
4. Suricata uuendamiseks saame kasutada
apt-get update apt-get upgrade
5. Eemaldamiseks
apt-get remove suricata
Seadistamine
Suricata parameetrite määramine
1. Loome logide kausta
mkdir /var/log/suricata
2. Avame Suricata konfiguratsiooni faili:
vim /etc/suricata/suricata.yaml
Kirjeldame kasutuses olevad operatsiooni süsteemid otsides "suricata.yaml" failist rida "host-os-policy" (VIM-i puhul saab otsimist teostada sisestades "/" ning seejärel otsitava teksti.)
host-os-policy: # Make the default policy windows. windows: [] bsd: [] bsd-right: [] old-linux: [] linux: [192.168.56.200, 192.168.56.201, 192.168.56.101, 127.0.0.1] old-solaris: [] solaris: [] hpux10: [] hpux11: [] irix: [] macos: [] vista: [] windows2k3: [ ]
Kirjeldame ära aadresside grupid. Selleks otsime üles rea "address-groups"
address-groups: HOME_NET: "[192.168.56.0/24]" EXTERNAL_NET: "!$HOME_NET"
Enda kirjutatud reeglid
1. Enda kirjutatud reeglite kasutamiseks loome faili local.rules
touch /etc/suricata/rules/local.rules
Juhul kui rules kaust puudub, siis loome selle
mkdir /etc/suricata/rules
Lisame local.rules faili ühe reegli
vim /etc/suricata/rules/local.rules alert ip any any -> any any (msg:"ICMP detected"; sid:2; rev:1;)
2. Lisame Suricata kofiguratsiooni kohalike reeglite faili.
vim /etc/suricata/suricata.yaml
Otsime üles rea "rule-files" ja lisame sinna alla esimese reana local.rules faili.
rule-files: - local.rules - botcc.rules - ciarmy.rules - compromised.rules - drop.rules - dshield.rules - emerging-activex.rules - emerging-attack_response.rules - emerging-chat.rules - emerging-current_events.rules - emerging-dns.rules - emerging-dos.rules - emerging-exploit.rules - emerging-ftp.rules ...
3. Reegli testimiseks käivitame Suricata ning seadistame kuulama eth1 võrguliidese peale, mille eelnevalt seadistasime valimatusse režiimi.
suricata -c /etc/suricata/suricata.yaml -i eth1
4. Pingime kliendi masinast IDS serverit
ping ids
5. Kõrvale avame teise ssh ühenduse ids serverisse ja avame Suricata logi
tail -f /var/log/suricata/fast.log
Näeme, et logisse lisanduvad teated reeglile vastavast liiklusest
05/25/2014-13:03:58.407499 [**] [1:2:1] ICMP detected [**] [Classification: (null)] [Priority: 3] {ICMP} 192.168.56.3:8 -> 192.168.56.2:0 05/25/2014-13:03:58.407526 [**] [1:2:1] ICMP detected [**] [Classification: (null)] [Priority: 3] {ICMP} 192.168.56.2:0 -> 192.168.56.3:0 05/25/2014-13:03:59.407073 [**] [1:2:1] ICMP detected [**] [Classification: (null)] [Priority: 3] {ICMP} 192.168.56.3:8 -> 192.168.56.2:0 05/25/2014-13:03:59.407097 [**] [1:2:1] ICMP detected [**] [Classification: (null)] [Priority: 3] {ICMP} 192.168.56.2:0 -> 192.168.56.3:0
Oinkmaster üles seadmine reeglikogumike uuendamiseks
1. Paigaldame OinkMasteri
apt-get install oinkmaster
On olemas mitmed reeglikogumikke. Praegusel juhul kasutame Emerging Threats (ET) reeglikogumikku.
Oinkmaster peab teada, kust saab reeglikogumikku alla laadida:
http://rules.emergingthreats.net/open/suricata/emerging.rules.tar.gz
2. Selle lingi lisamiseks avame oinkmaster.conf faili:
vim /etc/oinkmaster.conf
3. Leiame üles rea ET reeglite veebilehele (vim puhul saab otsingut teostada sisestades kõigepealt "/" ning seejärel otsingu stringi):
/Emerging Threats
4. Lisame hüperlingi:
url = http://rules.emergingthreats.net/open/suricata/emerging.rules.tar.gz
Pärast muudatuse sisse viimist näeb faili sektsiooni välja selline:
# Example for rules from the Emerging Threats site (previously known as Bleeding Snort). # url = http://www.emergingthreats.net/rules/emerging.rules.tar.gz # Old url: # url = http://www.bleedingsnort.com/downloads/bleeding.rules.tar.gz url = http://rules.emergingthreats.net/open/suricata/emerging.rules.tar.gz
5. Salvesta ja välju failist. Vim puhul, väljuda paoklahviga sisestus režiimist ning seejärel ":wq".
6. Uuendame reeglikogumiku:
cd /etc oinkmaster -C /etc/oinkmaster.conf -o /etc/suricata/rules
7. Pärast reeglite alla laadimist ja lahti pakkimist on reeglite kaustast leitavad ka kaks faili nimedega classification. config ja reference.config. Mõlemad on vaja lisada Suricata konfiguratsiooni faili:
vim /etc/suricata/suricata.yaml
Konfiguratsioonis otsime üles rea"classification-file" ning muudame ära vajalikud parameetrid. Lõpptulemusena saame:
classification-file: /etc/suricata/rules/classification.config reference-config-file: /etc/suricata/rules/reference.config
8. Testimiseks käivitame suricata:
suricata -c /etc/suricata/suricata.yaml -i eth1
9. Käivitamisel näeme, et mitmed reegli failid pole saadaval. Nende mitte kasutamiseks saame suricata.yaml faili rule-files sektsioonis lisada konkreetse reegli faili ette #.
vim /etc/suricata/suricata.yaml
Lisame # kahe faili ette:
# - emerging-icmp.rules # - dns-events.rules
10. Salvestame ja väljume.
11. Reeglite hilisemaks uuendamiseks käivitame käsu:
oinkmaster -C /etc/oinkmaster.conf -o /etc/suricata/rules
Soovituslik on reegleid tihti uuendada. ET reeglikogumikku uuendatakse korra päevas.
Automaatne uuendamine oinkmasteri abil
Et muuta reeglite uuendamine lihtsaks ja automaatseks, seadistame croni töö oinkmasteri automaatseks käivitamiseks.
1. Loome reeglite varundamiseks kausta.
mkdir /etc/suricata/backup
2. Lisame uue kasutaja oinkmaster
useradd oinkmaster
3. Muudame mõningad failiõigused.
chown -R oinkmaster /etc/suricata/backup chown -R oinkmaster /etc/suricata/rules
4. Testime, kas töötab
su oinkmaster oinkmaster -C /etc/oinkmaster.conf -o /etc/suricata/rules -b /etc/suricata/backup 2>&1
5. Kuna me tahame seda iga päev käivitada, siis lisame crontabi alla vastava töö
crontab -e -u oinkmaster 30 00 * * * oinkmaster -o /etc/snort/rules -b /etc/snort/backup 2>&1 >> /dev/null 2>&1
Reeglikogumike optimeerimine
Mida rohkem reegleid on kasutuses, seda rohkem ressurssi on vaja pakettide analüüsimiseks. Seega mõtekas on keelata need reeglid, mis käivad tehnoloogiate või teenuste vastu mida asutuse infrastruktuuris ei esine.
Kõigepealt keelame mõned üldised grupid. Selleks avame uuesti Suricata konfiguratsiooni faili:
vim /etc/suricata/suricata.yaml
Otsime üles rea "rule-files".
/rule-files
Reegli grupi keelamiseks on vaja konkreetne reegli faili välja kommenteerida, lisades rea ette #.
Oletame, et poliitikatega on infrastruktuuris keelatud ActiveX tehnoloogia kasutamine, ei leia kasutust ftp protokoll ning ei ole ka SCADA seadmeid.
Ülesanne Otsida suricata.yaml failist üles sektsioon "rule-files:" ning kommenteerida välja need 3 reeglite faili mis käsitlevad neid teenuseid (Active-X; FTP; SCADA).
Üksiku või mitme reegli keelamine
Üksiku reegli või mitme reegli lubamiseks/keelamiseks on vaja leida reegli sid. Seda seetõttu, et sid alusel saab reegli keelata oinkmasteri konfiguratsioonis. Sellisel juhul jääb reegel keelatuks ka pärast reeglikogumiku uuendamist.
Antud näite puhul ütleme, et asutus on paiganud kõigi Linuxi serverite OpenSSL teegid ning seeläbi kõrvaldanud HeartBleed nimelise nõrkuse. Seega kõik reeglid, mis käsitlevad seda nõrkust võib keelata.
1. Otsime üles kõik HeartBleedi käsitlevad reeglid.
cd /etc/suricata/rules grep -R "HeartBleed"
Leiame, et HeartBleedi käsitlevaid reegleid on 6. Kuigi väljastati 12 rida on esimesed 6 rida pärit sid-msg.map failist, kus hoitakse teadete ja reegli id vahelisi seoseid seega need võib välja jätta.
2. Eraldame välja kõigi 6 reegli sid tunnused.
grep -R "HeartBleed" | grep -P -o "sid\:\d+" | grep -o -P "\d{2,}+" | tr '\n' ',' >> /etc/oinkmaster.conf
Üleval nähtava käsuga, filtreerime reegli failidest rekursiivselt välja kõik read kus sisaldub sõna HeartBleed, seejärel eraldame nendest ridadest sid tunnused ja puhastame read üleliigsest. Viimaks asendame tr käsu abil reavahetused komaga ja kirjutame tekkinud rea Oinkmasteri konfiguratsiooni faili lõppu.
3. Avame Oinkmasteri konfiguratsiooni ja kerime faili lõppu. Eelmise käsuga sinna kirjutatud sid tunnused on meid ootamas.
vim /etc/oinkmaster.conf
4. Kirjutame sid tunnuste ette parameetri "disablesid" ning rea lõppu lisame # ja kommentaari. Lõpptulemusena näeb oinkmasteri konfiguratsiooni faili viimane rida välja selline:
disablesid 2018377, 2018378, 2018382, 2018383, 2018388, 2018389 # Ei ole enam HeartBleedi haavatavust
5. Salvestame ja väljume.
6. Kui käivitame Oinkmasteri uuenduse uuesti, siis näeme millised ja kui mitu reeglit on keelatud.
oinkmaster -C /etc/oinkmaster.conf -o /etc/suricata/rules