Outils personnels

OSSEC installation

De wikiGite

Révision datée du 1 mars 2011 à 13:57 par Frank (discussion | contributions) (Installation OSSEC)

Installation OSSEC

Se connecter en root. Créer un sous-répertoire install pour y mettre les fichiers d'installation.

mkdir install
cd install

Vérifier que gcc soit installé

gcc -v

Au besoin :

yum install gcc
wget http://www.ossec.net/files/ossec-hids-latest.tar.gz
tar -xvzf ossec-hids-latest.tar.gz
cd $(ls -d ossec-hids-* | grep -v latest)
./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) : ATTENTION AU NOM DE DOMAINE APRES LE @
  • 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..."