Outils personnels

OSSEC installation

De wikiGite

Révision datée du 8 avril 2010 à 10:22 par Frank (discussion | contributions) (Ajout de log NMAP)

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

Un fichier de base ossec-init.conf est seulement créé dans /etc, la config se fait sous /opt/ossec/etc.

Créer une tâche de mise à jour du local_rules.xml (vi /etc/cron.daily/ossec-local-rules)

#!/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 /etc/cron.daily/ossec-local-rules
/etc/cron.daily/ossec-local-rules

Ajout d'un log NMAP

S'assurer que nmap est installé

nmap -V

Générer le fichier (script /opt/systools/nmap_ossec.sh) :

nmap --append_output -sU -sT -oG /var/log/nmap-out.log localhost > /dev/null

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)

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
}

Ajouter la surveillance d'OSSEC à check_service.sh si nécessaire

ENLEVER 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, trop restrictif.

  • modif local_rules pour ajouter des exclusions à ids.xml ?

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..."