OSSEC : installation

OSSEC : installation jpp

Note : cet article est ancien (historique presque) voir la dernière version ici. 
L'installation pour tests a été faite sur une machine Centos 5.5 virtualisée avec XEN. 
Après récupération des sources (pour moi version 2.4.1) et détarage dans un répertoire d'installation il suffit de lancer le script "install.sh" 
Après le choix de la langue (fr pour moi) un récapitulatif de votre système s'affiche 
=====================================================================

OSSEC HIDS v2.4.1 Script d'installation - http://www.ossec.net 
  
 Vous êtes sur le point d'installer OSSEC HIDS. 
 Vous devez avoir une compilateur C préinstallé sur votre système. 
 Si vous avez des questions ou des commentaires, envoyez un email 
 à dcid@ossec.net (ou daniel.cid@gmail.com). 
  
  - Système: Linux machine.domaine 2.6.18-194.3.1.el5 
  - Utilisateur: root 
  - Hôte: machine.domaine 


  -- Appuyez sur Entrée pour continuer ou Ctrl-C pour annuler. --

====================================================================== 
On appuye bien sûr sur entrée ... et l'on doit alors choisir l'option d'installation entre : 
serveur    serveur d'analyse OSSEC 
agent    agent transmettant à un serveur     
local    machine indépendante 
Pour cette première approche je choisis "local" 
Pour le répertoire d'installation je garde "/var/ossec". Je configure les alertes par Email et saisis une adresse mail valide en précisant le serveur de mail à utiliser (localhost) puisque j'ai un serveur Postfix local. 
Je précise ensuite que je veux démarrer le démon de controle d'intégrité et le moteur de détection de rootkit. 
=======================================================================

1- Quel type d'installation voulez-vous (serveur, agent, local ou aide) ? local 

  - Installation en local choisie. 

2- Définition de l'environnement d'installation. 

 - Choisissez votre répertoire d'installation de OSSEC HIDS [/var/ossec]: 

    - L'installation sera faite sur  /var/ossec . 

3- Configuration de OSSEC HIDS. 

  3.1- Voulez-vous une alerte par email ? (o/n) [o]: o 
   - Quel est votre adresse email ? xxxxxx@xxxxxx 
   - Quel est l'adresse IP ou le nom d'hôte de votre serveur SMTP ? localhost 

  3.2- Voulez-vous démarrer le démon de vérification d'intégrité ? (o/n) [o]: o 

   - Lancement de syscheck (démon de vérification d'intégrité). 

  3.3- Voulez-vous démarrer le moteur de détection de rootkit ? (o/n) [o]: o 
  3.4- La réponse active vous permet d'éxécuter des commandes 
       spécifiques en fonction d'évènement. Par exemple, 
       vous pouvez bloquer une adresse IP ou interdire 
       l'accès à un utilisateur spécifique. 
       Plus d'information sur : 
       http://www.ossec.net/en/manual.html#active-response 
        
   - voulez-vous démarrer la réponse active ? (o/n) [o]: o 
   - Par défaut, nous pouvons activer le contrôle d'hôte 
     et le pare-feu (firewall-drop). Le premier ajoute 
     un hôte dans /etc/hosts.deny et le second bloquera 
     l'hôte dans iptables (sous linux) ou dans ipfilter 
     (sous Solaris, FreeBSD ou NetSBD). 
   - Ils peuvent aussi être utilisés pour arrêter les scans 
     en force brute de SSHD, les scans de ports ou d'autres 
     formes d'attaques. Vous pouvez aussi les bloquer par 
     rapport à des évènements snort, par exemple. 

   - Voulez-vous activer la réponse pare-feu (firewall-drop) ? (o/n) [o]: o 
     - pare-feu (firewall-drop) activé (local) pour les levels >= 6 

   - liste blanche (white list) par défaut pour la réponse active : 
      - 192.168.1.x 
      - 192.168.1.y 

   - Voulez-vous d'autres adresses IP dans votre liste (white list) ? (o/n)? [n] o

============================================================================= 
J'ajoute ici les adresses IP que je ne veux pas voir bannir lors des tests ... 
=============================================================================

3.6- Mise en place de la configuration pour analyser les logs suivants : 
    -- /var/log/messages 
    -- /var/log/secure 
    -- /var/log/maillog 

 - Si vous voulez surveiller d'autres fichiers, changez 
   le fichier ossec.conf en ajoutant une nouvelle valeur 
   de nom de fichier local. 
   Pour toutes vos questions sur la configuration, 
   consultez notre site web http://www.ossec.net . 
    
    
   --- Appuyez sur Entrée pour continuer ---

============================================================================= 
Ensuite la compilation commence et est très courte . 
=============================================================================

- Configuration correctement terminée. 

 - Pour démarrer OSSEC HIDS: 
        /var/ossec/bin/ossec-control start 

 - Pour arrêter OSSEC HIDS: 
        /var/ossec/bin/ossec-control stop 

 - La configuration peut être visualisée ou modifiée dans /var/ossec/etc/ossec.conf 


    Merci d'utiliser OSSEC HIDS. 
    Si vous avez des questions, suggestions ou si vous trouvez 
    un bug, contactez nous sur contact@ossec.net ou en utilisant la 
    liste de diffusion publique sur ossec-list@ossec.net 
    ( http://www.ossec.net/en/mailing_lists.html ). 

    Plus d'information peut être trouver sur http://www.ossec.net 

    ---  Appuyez sur Entrée pour finir (peut-être plus d'info plus bas). ---

============================================================================= 
Un script de démarrage "/etc/init.d/ossec" a été ajouté et activé correctement dans la machine. 
Un petit reboot pour valider le tout et ça repart, on peut au passage voir le démarrage de OSSEC. Un premier mail de lancement est aussitôt envoyé, c'est une alerte de niveau 3 (les niveaux vont de 1 à 15, 15 étant l'alerte maxi) me signalant le démarrage du démon : 
OSSEC HIDS Notification. 
2010 Jun 29 14:06:13 
Received From:machine.domaine->ossec-monitord 
Rule: 502 fired (level 3) -> "Ossec server started." 
Portion of the log(s): 
ossec: Ossec started. 
--END OF NOTIFICATION 

Je me connecte en "root" sur la machine, nouvelle alerte de niveau 4 cette fois. 
Je me connecte avec un autre utilisateur cela déclenche un nouveau mail de "first time user logged in". Une autre connexion avec le même utilisateur ne déclenche aucun mail. Tout cela semble bel et bon. 
 

OSSEC : Mysql

OSSEC : Mysql jpp

Après l'installation qui se passe très simplement et la vérification de l'installation (cf article précédent) il va falloir tester ce logiciel, ce qui peut prendre un certain temps ! 
J'avais malheureusement oublié d'installer le support MYSQL, j'ai du réaliser une petite manipulation pour activer le support Mysql et relancer l'installation. 
Activation du support Mysql :

  • Charger la bibliothèque de développement ((mysql-devel.i386 sur Centos)
  • aller dans le répertoire "src" de l'installateur et lancer la commande 
    make setdb

Qui réponds gentiment : 
============================================================ 
Error: PostgreSQL client libraries not installed. 
Info: Compiled with MySQL support. 
============================================================ 
Il faut ensuite relancer le script "install.sh", 
Après avoir choisi le français, je choisis de mettre à jour mon installation ainsi que les règles. La compilation démarre  ... et se termine par l'installation.

 ........ 
OSSEC HIDS v2.4.1 Stopped 
Starting OSSEC HIDS v2.4.1 (by Trend Micro Inc.)... 
Started ossec-maild... 
Started ossec-execd... 
Started ossec-analysisd... 
Started ossec-logcollector... 
Started ossec-syscheckd... 
Started ossec-monitord... 
Completed. 
 - Configuration correctement terminée. 
 - Pour démarrer OSSEC HIDS: 
                /var/ossec/bin/ossec-control start 
 - Pour arrêter OSSEC HIDS: 
                /var/ossec/bin/ossec-control stop 
 - La configuration peut être visualisée ou modifiée dans /var/ossec/etc/ossec.conf 
    Merci d'utiliser OSSEC HIDS. 
    Si vous avez des questions, suggestions ou si vous trouvez 
    un bug, contactez nous sur contact@ossec.net ou en utilisant la 
    liste de diffusion publique sur ossec-list@ossec.net 
    ( http://www.ossec.net/en/mailing_lists.html ). 

    Plus d'information peut être trouver sur http://www.ossec.net 
    ---  Appuyez sur Entrée pour finir (peut-être plus d'info plus bas). --- 
 - Mise à jour complète.

Il faut ensuite s'occuper de la base de données :

  • Créer la base
  • Créer l'utilisateur
  • Donner les droits adéquats à l'utilisateur sur la base
  • Créer le schéma en allant dans le répertoire d'installation puis dans "src/os_dbd" où un fichier "mysql.schema" n'attends que votre bon vouloir et la commande :

mysql --user=le_user --password=le_password -D la_base <mysql.schema

Après contrôle 8 tables sont créées dans le schéma. 
Il est temps d'aller ajouter le paramétrage qui va bien dans le fichier (xml) de configuration de OSSEC. Il suffit d'ajouter en tête du fichier /var/ossec/etc/ossec.conf le petit bout de XML suivant :

<ossec_config> 
  <database_output> 
    <hostname>le_host</hostname> 
    <port>3306</port> 
    <username>ossec_user</username> 
<password>ossec_password</password> 
    <database>ossec_database</database> 
    <type>mysql</type> 
  </database_output> 
</ossec_config>

Exécuter avec ferveur l'incantation suivante :

  1. /var/ossec/bin/ossec-control enable database
  2.  Stopper et relancer le service.

L'enregistrement est alors effectué dans la base Mysql (Postgresql est aussi admis). 
Petite remarque : l'installation crée de nouveaux utilisateurs et un groupe "ossec" et la plupart des process ne tournent pas avec les privilèges de "root" ce qui est un gage de stabilité/sécurité. 
  
Tests en cours .... la suite au prochain article.

OSSEC : Interface WEB

OSSEC : Interface WEB jpp

Note 2019, il est possible d'utiliser la version décrite ici comme interface avec OSSEC.

Récupérer l'archive "ossec-wui....", pour moi la version 0.3, la détarer dans un répertoire tranquille. Il suffit ensuite de recopier le nouveau répertoire ossew-wui-0.3 dans l'arborescence WEB, pour moi /var/www/ossec-wui-0.3. 
Il faut ensuite ajouter le groupe "ossec" à l'utilisateur sous lequel Apache est lancé (apache pour Centos, www-data pour Debian). 
Il faut ensuite se rendre dans le répertoire /var/www/ossec... et y lancer le script de configuration "setup.sh" :

[root@xxxxxxx ossec-wui-0.3]# ./setup.sh 
Setting up ossec ui... 
Username: xxxxxx 
New password:  
Re-type new password:  
Adding password for user xxxxxx 
Setup completed successfuly.

Dans /var/www j'ai ensuite fait un lien ossec-wui-0.3 --> ossec puis dans le répertoire /etc/httpd/conf.d j'ai ajouté le fichier suivant :

<Directory "/var/www/ossec"> 
    Options Indexes 
    AllowOverride None 
    Order allow,deny 
    Allow from all 
</Directory>

On relance Apache et l'accès est ensuite direct par http://localhost/ossec. 
Quelques images de l'interface Web (un peu "rude") mais qui semble assez commode pour les recherches. 
Image 1 : vue lors de l'accès 
 

Image 2 : critères de recherche : 
 

Cette interface se révèle assez commode pour les recherches.

OSSEC : Installation serveur

OSSEC : Installation serveur jpp

Si comme moi vous trouvez OSSEC "pas mal" vous pouvez installer des agents sur d'autres machines, pour cela il vous suffira de modifier votre machine originale en mode "serveur". 
Note juillet 2018 : cette version est aujourd'hui obsolete, voir l'article sur la version 3.0.0 stable. 
Il faut malheureusement détruire son installation existante et refaire une installation. 
Détruire les éléments suivants : 
/var/ossec 
/etc/ossec-init.conf 
/etc/init.d/ossec 
et 
./rc.d/rc2.d/S99ossec 
./rc.d/rc0.d/K15ossec 
./rc.d/rc4.d/S99ossec 
./rc.d/rc1.d/K15ossec 
./rc.d/rc5.d/S99ossec 
./rc.d/rc6.d/K15ossec 
./rc.d/rc3.d/S99ossec 
Il suffit alors comme d'habitude de se rendre dans le répertoire d'installation et de lancer l'inévitable "install.sh". 
Si vous désirez utiliser le stockage dans une base Mysql, n'oubliez pas d'activer la fonctionnaité "Mysql" (voir article). 
On choisit la langue, et on frappe "Entrée" sur l'invite ... 
======================================================================

... /... 
 -- Appuyez sur Entrée pour continuer ou Ctrl-C pour annuler. -- 
1- Quel type d'installation voulez-vous (serveur, agent, local ou aide) ? serveur 
  - Installation du serveur choisie. 
2- Définition de l'environnement d'installation. 
  - Choisissez votre répertoire d'installation de OSSEC HIDS [/var/ossec]: 
    - L'installation sera faite sur  /var/ossec . 
3- Configuration de OSSEC HIDS. 
  3.1- Voulez-vous une alerte par email ? (o/n) [o]: o 
   - Quel est votre adresse email ? toto@monserveur 
   - Quel est l'adresse IP ou le nom d'hôte de votre serveur SMTP ? 192.168.1.xxx 
  3.2- Voulez-vous démarrer le démon de vérification d'intégrité ? (o/n) [o]: O 
   - Lancement de syscheck (démon de vérification d'int&grité). 
  3.3- Voulez-vous démarrer le moteur de détection de rootkit ? (o/n) [o]: O 
   - Lancement de rootcheck (détection de rootkit). 
  3.4- La réponse active vous permet d'éxécuter des commandes 
       spécifiques en fonction d'événement. Par exemple, 
       vous pouvez bloquer une adresse IP ou interdire 
       l'accès à un utilisateur spécifique. 
       Plus d'information sur : 
       http://www.ossec.net/en/manual.html#active-response 
   - voulez-vous démarrer la réponse active ? (o/n) [o]: O 
     - Réponse active activée. 
     - Par défaut, nous pouvons activer le contrôle d'hôte 
     et le pare-feu (firewall-drop). Le premier ajoute 
     un hôte dans /etc/hosts.deny et le second bloquera 
     l'hôte dans iptables (sous linux) ou dans ipfilter 
     (sous Solaris, FreeBSD ou NetSBD). 
   - Ils peuvent aussi être utilisés pour arrêter les scans 
     en force brute de SSHD, les scans de ports ou d'autres 
     formes d'attaques. Vous pouvez aussi les bloquer par 
     rapport à des événements snort, par exemple. 
   - Voulez-vous activer la réponse pare-feu (firewall-drop) ? (o/n) [o]: o 
    - liste blanche (white list) par défaut pour la réponse active : 
      - 192.168.2.xxx 
      - 192.168.2.xxx 
   - Voulez-vous d'autres adresses IP dans votre liste (white list) ? (o/n)? [n]: o 
   - IPs (séparées par des espaces) : 192.168.1.xxx 
  3.5- Voulez-vous activer fonctionnalités syslog (port udp 514) ? (o/n) [o]: n 
   --- Fonctionnalité syslog désactivée. 
  3.6- Mise en place de la configuration pour analyser les logs suivants : 
    -- /var/log/messages 
    -- /var/log/secure 
    -- /var/log/maillog 
    -- /var/log/httpd/error_log (apache log) 
    -- /var/log/httpd/access_log (apache log) 
 - Si vous voulez surveiller d'autres fichiers, changez 
   le fichier ossec.conf en ajoutant une nouvelle valeur 
   de nom de fichier local. 
   Pour toutes vos questions sur la configuration, 
   consultez notre site web http://www.ossec.net . 
   
... ... ... la compil se passe ... ... ... 
  
 - Le Système est Redhat Linux. 
 - Script d'initialisation modifié pour démarrer OSSEC HIDS pendant le boot. 
 - Configuration correctement terminée. 
 - Pour démarrer OSSEC HIDS: 
        /var/ossec/bin/ossec-control start 
 - Pour arrêter OSSEC HIDS: 
        /var/ossec/bin/ossec-control stop 
 - La configuration peut être visualisée ou modifiée dans /var/ossec/etc/ossec.conf 
    Merci d'utiliser OSSEC HIDS. 
    Si vous avez des questions, suggestions ou si vous trouvez 
    un bug, contactez nous sur contact@ossec.net ou en utilisant la 
    liste de diffusion publique sur ossec-list@ossec.net 
    ( http://www.ossec.net/en/mailing_lists.html ). 
    Plus d'information peut être trouver sur http://www.ossec.net 
    ---  Appuyez sur Entrée pour finir (peut-être plus d'info plus bas). --- 
 - Vous devez ajouter le(s) agent(s) avant qu'ils aient un accès autorisé. 
   Lancez 'manage_agent' pour les ajouter ou les supprimer: 
   /var/ossec/bin/manage_agents 
   Plus d'information sur: 
   http://www.ossec.net/en/manual.html#ma

==================================================================== 
Dès le service lancé on constate l'ouverture d'un port en écoute : 
lsof -Pn | grep UDP | grep oss 
ossec-rem 5859    ossecr    4u     IPv4     152930                 UDP *:1514  
après avoir démarré un poste muni d'un agent on peut voir dans le log de celui-ci la trace de la connection au serveur OSSEC (/var/ossec/logs/ossec.log) : 
2010/06/30 14:24:03 ossec-agentd(4102): INFO: Connected to the server (192.168.1.124:1514). 
2010/06/30 14:29:37 ossec-syscheckd: INFO: Finished creating syscheck database (pre-scan completed). 

Pour le reste du fonctionnement il est identique à celui de la version locale.