OSSEC installation
De wikiGite
Sommaire
Installation OSSEC
Il faut que gcc soit installé.
gcc -v
wget http://www.ossec.net/files/ossec-hids-latest.tar.gz tar -xvzf ossec-hids-latest.tar.gz cd ossec-hids-xxxxx ./install.sh
(note : pour une mise à jour il détecte l'ancienne installation et propose de la mettre à jour. Seul petit soucis : si on répond oui à la mise à jour des règles, il écrase aussi decoder.xml. Penser à y remettre postfix-auth)
Installation selon la doc "Securing Your Server With A Host-based Intrusion Detection System"
- choisir la langue
- Valider l'écran de résumé du système
- choisir installation type local
- install dans /opt/ossec plutôt que /var
- alerte mail : OUI. Il doit trouver le serveur de mail à partir de l'adresse qu'on lui donne.
- démon de vérification d'intégrité (syscheck) : OUI
- moteur de détection de rootkit (rootcheck) : OUI
- réponse active : OUI
- pare-feu ? : OUI
- Ajouter l'adresse fixe local dans la white list
Puis compilation ossec...
Messages de fin :
- Configuration correctement terminée. - Pour démarrer OSSEC HIDS: /opt/ossec/bin/ossec-control start - Pour arrêter OSSEC HIDS: /opt/ossec/bin/ossec-control stop
(ça marche aussi par /etc/init.d/ossec start/stop)
- La configuration peut être visualisée ou modifiée dans /opt/ossec/etc/ossec.conf
Vérifier la configuration (vi /opt/ossec/etc/ossec.conf) :
- L'adresse mail expéditeur doit être valide (domaine reconnu)
- Ajouter éventuellement des logs applicatifs. Exemple, après :
<localfile> <log_format>apache</log_format> <location>/var/log/httpd/access_log</location> </localfile>
Ajouter :
<localfile> <log_format>apache</log_format> <location>/var/log/ephoto/http_error_log</location> </localfile> <localfile> <log_format>apache</log_format> <location>/var/log/ephoto/http_access_log</location> </localfile>
Un fichier de base ossec-init.conf est seulement créé dans /etc, la config se fait sous /opt/ossec/etc.
Modifier le format du sujet des mails d'alertes. Editer /opt/ossec/etc/internal_options.conf, changer :
# Maild full subject (0=disabled, 1=enabled) maild.full_subject=1
Créer une tâche de mise à jour du local_rules.xml (vi /opt/systools/ossec-local-rules.sh)
(Ou se reporter à "mise à jour automatique des scripts" (maj_script.sh))
#!/bin/bash OSSEC_DIR=/opt/ossec CHANGED=0 # Verify if standard directory exist if [ -d $OSSEC_DIR ] then cd $OSSEC_DIR # If there is no backup copy of xml files if [ ! -f rules/local_rules.xml.dist ] then cp rules/local_rules.xml rules/local_rules.xml.dist fi if [ ! -f etc/decoder.xml.dist ] then cp etc/decoder.xml etc/decoder.xml.dist fi # Get them cd $OSSEC_DIR/rules wget -q http://www.systea.net/public/local_rules.xml.custom > /dev/null 2>&1 # If download is ok if [ $? -eq 0 ] then cmp local_rules.xml.custom local_rules.xml > /dev/null 2>&1 # If downloaded file differs from local file, install it if [ $? -gt 0 ] then mv local_rules.xml.custom local_rules.xml logger -t ossec "local_rules.xml has changed. Restart needed." CHANGED=1 else rm -f local_rules.xml.custom* logger -t ossec "local_rules.xml not changed. No restart needed." fi fi cd $OSSEC_DIR/etc wget -q http://www.systea.net/public/decoder.xml.custom > /dev/null 2>&1 # If download is ok if [ $? -eq 0 ] then cmp decoder.xml.custom decoder.xml > /dev/null 2>&1 # If downloaded file differs from local file, install it if [ $? -gt 0 ] then mv decoder.xml.custom decoder.xml logger -t ossec "decoder.xml has changed. Restart needed." CHANGED=1 else rm -f decoder.xml.custom* logger -t ossec "decoder.xml not changed. No restart needed." fi fi if [ $CHANGED -eq 1 ] then /etc/init.d/ossec restart > /dev/null 2>&1 fi fi
Puis le lancer au moins une fois
chmod /opt/systools/ossec-local-rules.sh ln -s /opt/systools/ossec-local-rules.sh /etc/cron.daily/ossec-local-rules /etc/cron.daily/ossec-local-rules
Ajouter la surveillance d'OSSEC à check_service.sh si nécessaire
NE PAS ACTIVER POUR L'INSTANT LA SURVEILLANCE DU LOG DE SNORT (dans ossec.conf, inclu automatiquement si SNORT est installé), c'est plein de faux-positifs sur HTTP, beaucoup trop bavard.
- A étudier : modif local_rules pour ajouter des exclusions à ids.xml ?
Ajout d'un log NMAP
S'assurer que nmap est installé
nmap -V
Générer le fichier de log (script /opt/systools/nmap_ossec.sh) :
nmap --append_output -sU -sT -oG /var/log/nmap-out.log localhost > /dev/null
Sans oublier
chmod 700 /opt/systools/nmap_ossec.sh
Ajouter l'analyse du log à ossec.conf :
<localfile> <log_format>nmapg</log_format> <location>/var/log/nmap-out.log</location> </localfile>
Redémarrer OSSEC
Puis mettre le script en cron
ln -s /opt/systools/nmap_ossec.sh /etc/cron.hourly/nmap_ossec
Penser à ajouter /var/log/nmap-out.log à logrotate (fichier /etc/logrotate.d/nmap_ossec) :
/var/log/nmap-out.log { weekly rotate 5 compress missingok notifempty create 0640 root root sharedscripts postrotate /etc/cron.hourly/nmap_ossec.sh endscript }
OSSEC-WUI
wget http://www.ossec.net/files/ui/ossec-wui-0.2.tar.gz tar -xvzf ossec-wui-0.2.tar.gz mv ossec-wui-0.2 /var/www/ossec-wui cd /var/www/ossec-wui ./setup.sh
- Donner un nom/pwd pour le .htaccess + .htpasswd : admin/<mot_de_passe_admin>
Editer /var/www/ossec-wui//var/www/ossec-wui, changer le répertoire racine d'Ossec si nécessaire
Créer un alias dans /etc/apache2/conf.d/ossec.conf :
<IfModule mod_alias.c> Alias /ossec-wui "/var/www/ossec-wui" </IfModule> <DirectoryMatch /var/www/ossec-wui/> Options -FollowSymLinks AllowOverride All order deny,allow # deny from all # allow from 127.0.0.0/255.0.0.0 </DirectoryMatch>
Ajouter www-data dans le groupe ossec dans /etc/group
Redémarrer Apache
SNORT LOG ANALYSIS : modif logs snort pour analysis par ossec. (A venir)
- ajouter <stats>0</stats> à globals pour éviter les "excessive number of..."