Outils personnels

OSSEC installation

De wikiGite

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 sur CentOS :

yum -y install gcc

ou sur Debian :

apt-get install gcc make
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

Configuration

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

vi /opt/ossec/etc/ossec.conf
  • L'adresse mail expéditeur doit être valide (domaine reconnu) : ATTENTION AU NOM DE DOMAINE APRES LE "@"

Ajouter 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/monappli/http_error_log</location>
 </localfile>
 
 <localfile>
   <log_format>apache</log_format>
   <location>/var/log/monappli/http_access_log</location>
 </localfile>

Sujet des mails d'alertes

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

Whitelist

Si nécessaire, on peut aussi ajouter des adresses IP dans le bloc <white_list>

Repeated offender

L' "active response" bloque par défaut une IP pendant 10mn (600s). Pour un attaquant qui revient systématiquement malgré ce blocage, on peut définir des règles d' "escalade" du blocage :

 <active-response>
   <repeated_offenders>30,60,120</repeated_offenders>
 </active-response>

mise à jour local_rules.xml

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 700 /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
}


SNORT LOG ANALYSIS : modif logs snort pour analyse par ossec. (A venir)

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