image

Stop aanvallers met het Prelude Hybrid IDS

dinsdag 4 juli 2006, 13:37 door Redactie, 0 reacties

Prelude is een "Hybrid IDS framework" die het mogelijk maakt dat zowel open source als proprietary security applicaties naar één gecentraliseerd systeem melding maken. Om dit te doen maakt Prelude gebruik van IDMEF (Intrusion Detection Message Exchange Format) een IETF standaard die ervoor zorgt dat verschillende sensoren via dezelfde taal "events" genereren.

Op deze manier kan Prelude gebruik maken van verschillende sensoren zoals Snort, honeyd, Nessus Vulnerability Scanner, Samhain, en meer dan 30 verschillende systeemlogs. Met al deze gegevens kan de software een aanval beter verifieren en verbanden tussen verschillende incidenten leggen.

Voor iedereen die met Prelude aan de slag wil gaan hebben we een zeer uitgebreide handleiding gemaakt. De handleiding bestaat uit 3 delen:

Intrusion Detection met Prelude Hybrid IDS: Deel 1 (Introductie)
Intrusion Detection met Prelude Hybrid IDS: Deel 2 (Prelude-manager)
Intrusion Detection met Prelude Hybrid IDS: Deel 3 *Nieuw*,In dit derde deel uit de serie Intrusion Detection met Prelude Hybrid IDS wordt de installatie van het IDS beschreven.

Prewikka
Het installeren van de Prewikka frontend begint wederom met het installeren van de prewikka package:

# portinstall py24-prewikka
MySQL Database
Voor prewikka dient ook een MySQL database te worden aangemaakt. Hierin worden de prewikka gebruikers opgeslagen:
mysql> create database prewikka;
Query OK, 1 row affected (0.00 sec)
mysql> grant all privileges on prewikka.* to prewikka@localhost identified
by 'ScLmBUcl6vNui3sBEItakaiVvSGj6O';
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;

Query OK, 0 rows affected (0.00 sec)
Na het aanmaken van de database kan deze worden gevuld:
# mysql -p -u prewikka prewikka /local/share/prewikka/database/mysql.sql

Enter password:
Prewikka configuratie
De prewikka configuratie bevindt zich in /usr/local/etc/prewikka/prewikka.conf. In dit voorbeeld moet hier de volgende informatie in:
[general]
external_link_new_window

[interface]
software: Prewikka
place: RooT66
title: Prelude management

[command]
whois: /usr/bin/whois
traceroute: /usr/sbin/traceroute

[general]
external_link_new_window

[interface]
software: Prewikka
place: RooT66
title: Prelude management

[command]
whois: /usr/bin/whois
traceroute: /usr/sbin/traceroute

[idmef_database]
type: mysql
host: localhost
user: prelude
pass: AgTCwkCRSu9uUD4zFwRJC5wtHZtEA4
name: prelude

[database]
type: mysql
host: localhost
user: prewikka
pass: ScLmBUcl6vNui3sBEItakaiVvSGj6O
name: prewikka

[log stderr]
[auth loginpassword]
expiration: 60
Web Account
Het is belangrijk te beseffen dat de prewikka.conf de database wachtwoorden bevat die toegang geven tot de prelude en de prewikka database. Het is dus verstandig om deze alleen toegankelijk te maken tot de gebruiker waar de webserver onder draait. Onder FreeBSD is dit de www gebruiker.
# chown -R www:www /usr/local/etc/prewikka/

# chmod 700 /usr/local/etc/prewikka/
Webserver configuratie
Als webserver maak ik gebruik van Apache. Prewikka is geschreven in python, en het is verstandig om mod_python te installeren zodat het geheel iets vlotter draait. Met mod_python kan een volgende virtual host configuratie worden gebruikt:
NameVirtualHost *:80
Directory /usr/local/share/prewikka/htdocs>
Allow from any


ServerName prelude

SetHandler mod_python
PythonHandler prewikka.ModPythonHandler


SetHandler None

Alias /prewikka /usr/local/share/prewikka/htdocs
Het is belangrijk op te merken dat ik de elianne machine een alias prelude heb gegeven in mijn /etc/hosts.

Prewikka website
Op http://prelude/ wordt nu een prewikka website gepresenteerd. De eerste maal inloggen gebeurt met de gebruikersnaam admin, wachtwoord admin. Het is verstandig deze direct te veranderen. De prewikka website is verder behoorlijk leeg, er zijn nog geen meldingen binnengekomen en onder agents staat alleen de prelude-manager.

Prelude Logfile Monitor Sensor
Het installeren van de prelude logfile monitor (prelude-lml) dient te gebeuren op alle machines van het netwerk. Onder FreeBSD zal de installatie door de ports geschieden:

# portinstall prelude-lml
Prelude-lml configuratie
De configuratiebestanden bevinden zich in /usr/local/etc/prelude-lml, uiteraard weer in .conf-dist vorm zodat deze bestanden eerst naar .conf moeten worden gecopieerd. Volg voor de configuratiebestanden in /usr/local/etc/prelude de instructies uit het artikel over de prelude manager. In prelude-lml.conf moet de volgende informatie komen:

include = /usr/local/etc/prelude/default/idmef-client.conf
[format=syslog]

time-format = "%b %d %H:%M:%S"
prefix-regex = "^(?P.{15}) (?PS+)
(?:(?PS+?)(?:[(?P[0-9]+)])?: )?"
file = /var/log/all.log
# udp-server = 0.0.0.0
[format=apache]
time-format = "%d/%b/%Y:%H:%M:%S"
prefix-regex = "^(?PS+) - - [(?P.{20}) +.{4}] "
file = /var/log/httpd-access.log
[Pcre]
ruleset=/usr/local/etc/prelude-lml/ruleset/pcre.rules
We laten prelude hier alle logberichten controleren. Omdat /var/log/all.log niet altijd voor prelude leesbaar is dienen we in /etc/newsyslog.conf de volgende regel te hebben voor all.log:
/var/log/all.log        root:prelude    640  7     *    @T00  J
Verder moet all.log ook uberhaubt worden aangemaakt, dmv de volgende regel in /etc/syslog.conf:
*.*                                             /var/log/all.log
Om te zorgen dat dit bestand ook bestaan, kunnen de volgende commando's worden uitgevoerd:
# touch /var/log/all.log
# chown root:prelude /var/log/all.log
# chmod 640 /var/log/all.log
Vergeet niet syslogd te herstarten mocht je /etc/syslog.conf hebben aangepast. Mocht je ook de errorlog van apache willen monitoren, verander dan de httpd.conf zodat de ErrorLog regel er uitziet als:
ErrorLog syslog
Prelude account
Op elk systeem moet het prelude account worden aangemaakt. Dit is al gebeurd op het systeem waar de prelude-manager is geinstalleerd, en de aanwijzingen hiervoor staan ook in het prelude manager stukje.

Voor de pidfile maken we een directory aan in /var/run, en we zorgen er weer voor dat de prelude gebruiker alle configuratie bestanden bezit:

elianne# mkdir /var/run/prelude-lml
elianne# chown -R prelude:prelude /var/run/prelude-lml /var/spool/prelude
/var/spool/prelude-lml /usr/local/etc/prelude /usr/local/etc/prelude-lml
elianne# chmod 700 /var/run/prelude-lml /var/spool/prelude /var/spool/prelude-lml
/usr/local/etc/prelude /usr/local/etc/prelude-lml
elianne#
Prelude profiel
Voor elke sensor moet een profiel worden aangemaakt. Hierin bevinden zich de SSL sleutels voor de beveiligde verbinding met de manager. Het aanmaken van het profiel gaat met:
# prelude-adduser register prelude-lml "idmef:w admin:r" 
10.0.1.4 --uid prelude --gid prelude
In dit commando is 10.0.1.4 het ip adres van de manager. Op de manager dient het volgende commando to worden uitgevoerd:
# prelude-adduser registration-server prelude-manager 
--listen 10.0.1.4 --uid prelude --gid prelude
Zorg ervoor dat je firewall deze verbinding niet tegenhoud, het is een tcp verbinding over port 5553.

Startup scripts
Ook voor de prelude logfile monitor wordt door de FreeBSD ports een startup script meegeleverd. Deze bevindt zich in /usr/local/etc/rc.d/prelude-lml. Ook hierin dienen we de pidfile te veranderen naar:

pidfile=/var/run/prelude-lml/prelude-lml.pid
En we dienen in /etc/rc.conf de volgende regels op te nemen:
prelude_lml_enable="YES"
prelude_lml_user="prelude"
Wanneer we nu /usr/local/etc/rc.d/prelude-lml start uitvoeren zien we bij de manager in de /var/log/messages de volgende regel:
May  5 10:41:57 elianne prelude-manager: [127.0.0.1:59706 0x65e5445b0e93
idmef:w admin:r]: TLS authentication succeed: client certificate is trusted.
Ook zien we nu de sensor in de prewikka frontend. Zorg ook hierbij dat de firewall niet de verbinding tussen sensor en manager verbiedt. Deze verbindingen gaan naar tcp port 4690.
Nog geen reacties
Reageren

Deze posting is gelocked. Reageren is niet meer mogelijk.