Ossec est un détecteur d'intrusion du type HIDS (Host-based Intrusion Detection System). Il est l'un des HIDS des plus utilisés, très facile d'accès tant pour l'installation que pour l'utilisation.

Url du site officiel : http://www.ossec.net/

Mais que fait Ossec exactement :

  • Vérification de l'intégrité des fichiers systèmes.
  • Analyse des logs et remontée
  • Détection des rootkits
  • Mécanisme de prévention actif (lancement de règle iptables par exemple)
  • Sévérité des alertes classés de 0 à 15

Téléchargement :

Vous trouverez les sources pour le serveurs et l'agent ainsi que l'interface web à cette adresse : http://www.ossec.net/files/

cd /opt/SOURCES
wget http://www.ossec.net/files/ossec-hids-2.4.1.tar.gz
tar xvzf ossec-hids-2.4.1.tar.gz
cd ossec-hids-2.4.1

Installation :

Grâce a un script très bien fait l'installation est un jeu d'enfant (mais laissez pas ça à vos enfants quand même...) Personnellement je préfère changer le repertoire d'installation pour une désinstallation plus tard ça sera plus simple (par exemple : /opt/ossec-serveur pour le serveur et /opt/ossec-agent pour l'agent).

./install.sh

et la vous n'avez plus qu'a suivre les instructions dans la langue de Molière, serveur installera juste la partie serveur (avec surveillance du serveur biensur), agent installera juste un agent et local installera le serveur et un agent pour le serveur (mais plus tard il sera nécessaire de réinstaller en mode serveur si vous voulez ajouter un agent d'un autre serveur).

Pour démarrer le serveur OSSEC HIDS :

/opt/ossec-server/bin/ossec-control start
ou
service ossec start

Pour arrêter le serveur OSSEC HIDS :

/opt/ossec-server/bin/ossec-control stop

La configuration peut être visualisée ou modifiée dans le fichier de configuration :

/opt/ossec-server/etc/ossec.conf

Installation de l'interface Web :

Url ou vous trouverez l'interface : http://www.ossec.net/files/ui/

cd /var/www
wget http://www.ossec.net/files/ui/ossec-wui-0.3.tar.gz
tar xvzf ossec-wui-0.3.tar.gz
mv ossec-wui-0.3 ossec
chown -R user-apache: ossec
cd ossec
./setup

Il vous faudra sûrement configurer un vhost pour faire du propre :)

Ajouter un agent de surveillance sur un autre serveur :

Biensur il faut installer un agent sur le serveur client, comme au début de cet article, une fois fait :

Lancez cette commande sur le serveur ossec et suivez les instructions :

/opt/ossec-server/bin/manage_agents

Ensuite utilisez la commande suivante pour importer la clef que vous aurez copier, sur le client, ce qui lui permettra de faire ces remontées au serveur ossec.

/opt/ossec-agent/bin/manage_agents

Ces commande sont à adapter selon votre installation.

Maintenant rendez vous à l'url que vous avez choisi pour l'interface :

Elle doit être de la forme : http://ossec.domain.fr ou http://ip-serveur/ossec

Si au lancement de l'interface web vous obtenez une erreur de type opendir failed (/var/ossec) dans vos logs ou Unable to access ossec directory et que vous avez modifié le répertoire d'ossec à l'installation (/opt/ossec... par exemple, il faut éditer le fichier /var/www/ossec/ossec_conf.php et faire le changement adéquate :

/* Ossec directory */
$ossec_dir="/home/ossec";

Parfois il faut attendre quelques minutes avant d'avoir les premières remontées.

Administration et commandes:

Pour afficher la liste des agents actifs on tape :

/opt/ossec-server/bin/agent_control -lc

Enlevez le c pour avoir la liste de tous les agents meme ceux qui ne sont pas encore actif.

Pour interroger le status d'un agent le 002 par exemple on tape :

/opt/ossec-server/bin/agent_control -i 002

Pour ceux qui voudraient aller un peu plus loin : http://www.ossec.net/main/manual/

Screenshots :

Voici un petit aperçu de l'interface :

ossec web jpeg

Très simple :) mais fonctionnelle :) espérons qu'elle évolue un peu, il ne manque que ça a ce superbe outil.

Astuce d'administration :

Intégrité des fichiers :

Sur la machine qui vous interesse dans ossec.conf :

<syscheck>
    <!-- Frequency that syscheck is executed - default to every 22 hours -->
    <frequency>79200</frequency>

    <!-- Directories to check  (perform all possible verifications) -->
    <directories check_all="yes">/etc,/usr/bin,/usr/sbin</directories>
    <directories check_all="yes">/bin,/sbin</directories>

Par défaut l'intégrité est vérifié toute les 22h, vous avez la possibilité de le faire effectuer en temps réel en rajoutant la directive realtime, comme ceci :

<directories realtime="yes" check_all="yes">/etc,/usr/bin,/usr/sbin</directories>

Le check_all est égale à toutes les options suivantes :

  • check_sum : vérification par sommes de controle.
  • check_owner : vérification basée sur le changement du proprietaire.
  • check_group : vérification basée sur le changement du groupe.
  • check_size : vérification basée sur la taille des fichiers.
  • check_perm : vérification basée sur le changement de permission.

Avec la balise <ignore> vous avez la possibilité d'exclure des fichiers ou repertoire de toutes ces vérifications.

Pour la gestion des alertes vous pouvez aussi affiner la chose :

Par défaut les alertes au dessus de 6 sont envoyé par mail, vous pouvez changer cette option :

 <alerts>
    <log_alert_level>1</log_alert_level>
    <email_alert_level>7</email_alert_level>
  </alerts>

Ici les alertes de niveau 1 et plus sont remonté au serveur puis à l'interface web mais seule les alertes au dessus du niveau 6 font l'objet d'un envoi par mail.

Vous pouvez pousser la chose en rajoutant ceci :

<email_alerts>
<email_to>admin@moi-meme.org<email_to>
<level>12</level>
<format>full</format>
</email_alerts>

La les alertes supérieur à 12 donc 13, 14, et 15 seront envoyé par mail au format normal (format sms possible) à l'adresse spécifié.

Pour accroitre les performances d'Ossec vous serez tenté de supprimer quelques lignes dans les fichiers de configurations par exemple dans la section <rules> mais sachez que ces regles peuvent être dépendantes entre elles, et vous faire de vilaines erreurs lors du redémarrage d'Ossec.

Mettre les alertes en bases de données :

<database_output>
<hostname>127.0.0.1</hostname>
<username>uossec</username>
<password>possec</password>
<database>ossecdb</database>
<type>mysql</type>
</database_output>

Je n'ai pas bien compris a quoi cela sert mais bon...pourquoi pas :)

Créer sa propre règle de surveillance :

Toutes les règles définies à la main doit être rajouté dans local_rules.xml car c'est le seul fichier qui ne sera pas écrasé lors d'une mise a jour d'Ossec.