PROJET 4.5 : MISE EN PLACE D’UN IDS/IPS - …Catégories d’IDSEn considèrent les différentes...

37
PROJET 4.5 : MISE EN PLACE D’UN IDS/IPS Table des matières Introduction.............................................................................................................................2 Fonctionnalités d’un IDS....................................................................................................2 Architecture d’un IDS......................................................................................................... 4 Catégories d’IDS................................................................................................................ 5 Préparation du système......................................................................................................... 5 Configuration de l’accès réseau.........................................................................................6 Configuration du gestionnaire de paquet APT...................................................................8 Préparation de l’espace de travail (Workbench)................................................................9 Installation de OpenSSH-Server...................................................................................... 11 Installation de Suricata.........................................................................................................18 Installation de la chaîne de compilation...........................................................................18 Installation des dépendances.......................................................................................... 19 Compilation de Suricata...................................................................................................20 Configuration de Suricata................................................................................................ 21 Installation de Snorby...........................................................................................................23 Installation de Ruby..........................................................................................................23 Installation des dépendances supplémentaires...............................................................24 Installation de Apache......................................................................................................25 Installation de MySQL......................................................................................................26 Installation de Snorby...................................................................................................... 27 Installation de la passerelle Apache................................................................................ 30 Installation de Barnyard2..................................................................................................... 32 Démarrage manuel des services......................................................................................... 34 Démarrage automatique des services................................................................................. 34 Mise à jour des signatures avec OinkMaster.......................................................................35 Baptiste MOINE 1 Projet 4.5

Transcript of PROJET 4.5 : MISE EN PLACE D’UN IDS/IPS - …Catégories d’IDSEn considèrent les différentes...

Page 1: PROJET 4.5 : MISE EN PLACE D’UN IDS/IPS - …Catégories d’IDSEn considèrent les différentes sources de données utilisées pour la détection d’intrusion, une autre classification

PROJET 4.5 : MISE EN PLACE D’UN IDS/IPS

Table des matières

Introduction.............................................................................................................................2 Fonctionnalités d’un IDS....................................................................................................2 Architecture d’un IDS.........................................................................................................4 Catégories d’IDS................................................................................................................5Préparation du système.........................................................................................................5 Configuration de l’accès réseau.........................................................................................6 Configuration du gestionnaire de paquet APT...................................................................8 Préparation de l’espace de travail (Workbench)................................................................9 Installation de OpenSSH-Server......................................................................................11Installation de Suricata.........................................................................................................18 Installation de la chaîne de compilation...........................................................................18 Installation des dépendances..........................................................................................19 Compilation de Suricata...................................................................................................20 Configuration de Suricata................................................................................................21Installation de Snorby...........................................................................................................23 Installation de Ruby..........................................................................................................23 Installation des dépendances supplémentaires...............................................................24 Installation de Apache......................................................................................................25 Installation de MySQL......................................................................................................26 Installation de Snorby......................................................................................................27 Installation de la passerelle Apache................................................................................30Installation de Barnyard2.....................................................................................................32Démarrage manuel des services.........................................................................................34Démarrage automatique des services.................................................................................34Mise à jour des signatures avec OinkMaster.......................................................................35

Baptiste MOINE 1 Projet 4.5

Page 2: PROJET 4.5 : MISE EN PLACE D’UN IDS/IPS - …Catégories d’IDSEn considèrent les différentes sources de données utilisées pour la détection d’intrusion, une autre classification

INTRODUCTION

Avec la création d’un Internet basé sur l’anonymat appelé « Onion Router », la diffusion àgrande échelle de faille 0day mais aussi de pack d’exploitation (« exploit pack »),n’importe quel initié aux nouvelles technologies et à leurs enjeux en termes de sécurité del’information, est capable de procéder à une attaque ciblée sans pour autant en connaîtrele fonctionnement. Ainsi les technologies des systèmes de détection d’intrusion (IDS, ou« Intrusion Detection System ») ont connus un engouement considérable de la part desinstitutions de renom.

Un IDS a pour principale fonction d’analyser l’activité d’un réseau ou d’un hôte donné entemps réel ou différé, afin de détecter toute tentative d’intrusion et agir face à cettetentative, par exemple, en exécutant un script pré-configuré permettant d’agir sur le pare-feu du système distant et rejeter les autres requêtes de l’hôte ayant effectué ou tenté uneintrusion, cependant un IDS reste moins performant qu’un IPS (« Intrusion PreventionSystem ») lorsqu’il s’agit de rejeter les requêtes suite à la découverte d’une intrusion, onparle alors d’action passive lors de la détection et active lorsqu’un principe de préventionest mise en œuvre (e.g. rejet de connexion).

Un IDS peut analyser les éléments de la couche Application (7), Transport (4) et Réseau(3) du modèle OSI. Il permet également, en fonction de la solution adoptée, d’alerterl’administrateur par e-mail voire en utilisant des modules matériels complémentaires,d’envoyer un SMS afin de lui permettre d’appliquer un correctif ou encore d’entreprendreun processus judiciaire.

Cela a pour but, en repérant les activités et événements anormaux ou suspects,d’entretenir une gestion proactive de la sécurité des systèmes d’information.

Fonctionnalités d’un IDS

Un IDS possède diverses fonctionnalités permettant la détection d’anomalies telles que :

• Une attaque ciblée, en règle générale un IDS permet dans ce cas de :

◦ Détecter les analyses réseau par découverte (e.g. XMAS, NULL ACK), prémicesd’une attaque informatique. En effet, l’attaquant va procéder à une découverteglobale de l’architecture du SI en utilisant des outils permettant tout d’abord delancer de manière récursive des requêtes ARP afin de mapper l’ensemble deshôtes présent sur le réseau, l’attaquant va ensuite pouvoir interroger par « force-brute » tous les ports de connexion TCP ou UDP et attendre une réponse. Enfonction des réponses, l’attaquant est capable de connaître, par exemple, laversion du service interrogé ou encore le protocole utilisé et, par la même,établir une cartographie du réseau logique ;

◦ Détecter le DoS (déni de services), permettant à l’attaquant en envoyant desrequêtes arbitraires et en diminuant le temps de réponse des services, depouvoir, par exemple, usurper ce service et dérober les données d’un client(« spoofing ») ;

◦ Détecter l’exploitation de vulnérabilité protocolaire ou applicative, par exempleen détectant l’utilisation de « shellcode », il s’agit d’une portion de codeassembler permettant l’exécution d’instructions non-gérées en altérant lefonctionnement initial du protocole/programme (« reverse engineering ») ;

Baptiste MOINE 2 Projet 4.5

Page 3: PROJET 4.5 : MISE EN PLACE D’UN IDS/IPS - …Catégories d’IDSEn considèrent les différentes sources de données utilisées pour la détection d’intrusion, une autre classification

◦ Détecter une exploitation sans pour autant avoir détecté l’attaque, en récupérantpar exemple la réponse du service (e.g. authentification réussie).

• Une anomalie relative à une attaque globale du réseau, par exemple, l’utilisationd’un « ver ». Un ver est un programme malveillant capable de s’auto-répliquer surl’ensemble des machines en exploitant leurs vulnérabilités (i.e. mécanisme derebonds). Dans ce cas un IDS pourrait permettre de :

◦ Cartographier ou lister l’ensemble des zones affectées ;

◦ Identifier la source de l’infection et, le cas échéant, identifier la source ou auteurde l’infection. En effet dues aux nombreuses infections, il devient très complexede déterminer l’infection initiale dans la mesure où les machines infectéesdeviennent à leur tour les sources de cette diffusion.

• Une anomalie relative à un dysfonctionnement applicatif ou protocolaire, à unemauvaise configuration ou un délai de réponse anormal. Dans ce cas un IDSpermet potentiellement de :

◦ Proposer le remplacement de protocoles obsolètes, par exemple en détectantl’utilisation de Telnet (i.e. protocole déprécié) ;

◦ Indiquer à l’administrateur des délais de réponse anormalement long, ce genred’information peut paraître anodin mais peut par exemple révéler l’existenced’une porte dérobé sur l’hôte distant.

En résumé un IDS permet de :

• Collecter et analyser des traces en vu de développer leur force probante lors d’uneintrusion ;

• Alerter et journaliser de manière centralisée la découverte d’intrusion ;

• Agir de manière préventive ou curative aux anomalies.

Baptiste MOINE 3 Projet 4.5

Page 4: PROJET 4.5 : MISE EN PLACE D’UN IDS/IPS - …Catégories d’IDSEn considèrent les différentes sources de données utilisées pour la détection d’intrusion, une autre classification

Architecture d’un IDS

Un IDS peut être dé-composé en plusieurs niveaux :

• Le senseur ou sonde, il s’agit du niveau où se passe tout le procédé de collected’information ;

• La source de données, en général il s’agit de captures de trames réseaux ou dejournaux d’événements ;

• Le filtre, il permet à l’administrateur de classer les résultats, en utilisant par exempledes motifs ;

• Le canal de réponse, il permet de faire transiter l’information relevée ;

• La console, elle permet à l’administrateur d’effectuer le monitoring à partir desréponses de l’IDS.

Baptiste MOINE 4 Projet 4.5

Illustration 1: Architecture d'un IDS

Page 5: PROJET 4.5 : MISE EN PLACE D’UN IDS/IPS - …Catégories d’IDSEn considèrent les différentes sources de données utilisées pour la détection d’intrusion, une autre classification

Catégories d’IDS

En considèrent les différentes sources de données utilisées pour la détection d’intrusion,une autre classification des IDS peut être utilisée en termes de type d’éléments protégés :

• Le HIDS (« host based IDS »), il utilise les informations d’un seul hôte / système ;

• Le NIDS (« network based IDS »), il exploite l’audit d’un périmètre défini du réseau.

PRÉPARATION DU SYSTÈME

Afin de déployer Suricata, il est possible d’utiliser bon nombre de système d’exploitation.En effet, cette solution faisant partie des plus renommées, celui-ci est maintenu surl’ensemble des distributions les plus utilisées en entreprise (principalement Linux), àsavoir :

• Debian ;

• CentOS ;

• Fedora ;

• OpenSuse ;

• Ubuntu.

Dans notre cas nous utiliserons Debian, notamment pour sa bonne gestion desressources matérielle et sa meilleure capacité d’administration depuis l’implémentation desystemd.

Baptiste MOINE 5 Projet 4.5

Illustration 2: Catégories d’IDS

Page 6: PROJET 4.5 : MISE EN PLACE D’UN IDS/IPS - …Catégories d’IDSEn considèrent les différentes sources de données utilisées pour la détection d’intrusion, une autre classification

Configuration de l’accès réseau

Configuration des contrôleurs d’interface réseau :

# cat <<-'EOF' >/etc/network/interfaces

auto lo

iface lo inet loopback

# Configuration IPv4 statique du NIC Ethernet

# Administration

auto eth0

allow-hotplug eth0

iface eth0 inet static

address 10.16.0.35

netmask 255.255.128.0

gateway 10.16.0.1

dns-nameservers 10.16.0.30

# Collecte

auto eth1

allow-hotplug eth1

iface eth1 inet manual

up /etc/network/if-up.d/netconf

EOF

Configuration de la résolution de noms :

# cat <<-'EOF' >/etc/resolv.conf

# DNS GSB

search swiss-galaxy.com

nameserver 10.16.0.30

# DNS OpenNIC project

nameserver 185.83.217.248

nameserver 108.61.210.58

EOF

Baptiste MOINE 6 Projet 4.5

Page 7: PROJET 4.5 : MISE EN PLACE D’UN IDS/IPS - …Catégories d’IDSEn considèrent les différentes sources de données utilisées pour la détection d’intrusion, une autre classification

Montage des cartes d’interface réseau :

# ifup eth0

# ifup eth1

Ajout d’un script de configuration du réseau :

# cat <<-'EOF' >/etc/network/if-up.d/netconf

#!/bin/bash

# Promiscuous mode on eth1

ifconfig eth1 promisc up

# IPv4 forwarding (IPS)

# echo '1' >/proc/sys/net/ipv4/ip_forward

# echo '1' >/proc/sys/net/ipv4/conf/all/forwarding

# IPTables rules for NFQUEUE (IPS mode)

# iptables -F

# iptables -t nat -A POSTROUTING -j MASQUERADE

# iptables -A INPUT -i eth1 -j NFQUEUE

# iptables -I FORWARD -j NFQUEUE

# Display rules and exit

# iptables -vnL

exit 0

EOF

# chmod 755 /etc/network/if-up.d/netconf

Baptiste MOINE 7 Projet 4.5

Page 8: PROJET 4.5 : MISE EN PLACE D’UN IDS/IPS - …Catégories d’IDSEn considèrent les différentes sources de données utilisées pour la détection d’intrusion, une autre classification

Configuration du gestionnaire de paquet APT

Ajout des sources (dépôts) pour le téléchargement de paquets deb :

# cat <<-'EOF' >/etc/apt/sources.list

# Dépôt de base de Debian Jessie

deb http://httpredir.debian.org/debian/ jessie main contrib

deb-src http://httpredir.debian.org/debian/ jessie main contrib

# Mises à jour distribution stable

deb http://httpredir.debian.org/debian/ jessie-updates main

deb-src http://httpredir.debian.org/debian/ jessie-updates main

# Mises à jour vers distribution stable

deb http://httpredir.debian.org/debian/ jessie-backports main

deb-src http://httpredir.debian.org/debian/ jessie-backports main

# Mises à jour de sécurité

deb http://security.debian.org/ jessie/updates main

deb-src http://security.debian.org/ jessie/updates main

EOF

Téléchargement et installation de la clé GPG (« GNU Privacy Guard ») du dépôt deDebian :

# gpg --keyserver pgpkeys.mit.edu --recv-key 8B48AD6246925553

# gpg -a --export 8B48AD6246925553 | sudo apt-key add -

Mise à niveau des paquets :

# apt-get update

# apt-get -fy upgrade

# apt-get -fy dist-upgrade

Baptiste MOINE 8 Projet 4.5

Page 9: PROJET 4.5 : MISE EN PLACE D’UN IDS/IPS - …Catégories d’IDSEn considèrent les différentes sources de données utilisées pour la détection d’intrusion, une autre classification

Préparation de l’espace de travail (Workbench)

Installation d’utilitaires usuels :

# apt-get -fy install curl mercurial git subversion netcat python3.4 vim ntpdate

Configuration de la date et heure en utilisant un service NTP (« Network Time Protocol ») :

# ntpdate 0.fr.pool.ntp.org

Configuration du nom d’hôte :

# export HOSTNAME=suricata

# export DOMAIN=swiss-galaxy.com

# cat <<EOF >/etc/hostname

${HOSTNAME}

EOF

# cat <<EOF >/etc/hosts

127.0.0.1 localhost

10.16.0.35 ${HOSTNAME}.${DOMAIN} ${HOSTNAME}

# IPv6

::1 ip6-localhost ip6-loopback

fe00::0 ip6-localnet

ff00::0 ip6-mcastprefix

ff02::1 ip6-allnodes

ff02::2 ip6-allrouters

EOF

# hostname ${HOSTNAME}

# hostname -b ${HOSTNAME}

# domainname ${HOSTNAME}.${DOMAIN}

# domainname -b ${HOSTNAME}.${DOMAIN}

# hostnamectl set-hostname ${HOSTNAME}

# systemctl restart networking.service

Baptiste MOINE 9 Projet 4.5

Page 10: PROJET 4.5 : MISE EN PLACE D’UN IDS/IPS - …Catégories d’IDSEn considèrent les différentes sources de données utilisées pour la détection d’intrusion, une autre classification

Création d’un utilisateur simple :

# export USR=user

# useradd -u 1337 -UG users -s /bin/bash -d /home/${USR}/ ${USR}

# mkdir -p /home/${USR}

# find /etc/skel/ -mindepth 1 -exec cp -r {} /home/${USR}/ \;

# chown -R 1337:1337 /home/${USR}/

# chmod -R 700 /home/${USR}/

# passwd ${USR}

Ajout de l’utilisateur aux membres du groupe sudo pour l’exécution rapide de tâches entant qu’utilisateur root :

# apt-get install sudo

# usermod -aG sudo

OU (conseillé), suppression de la gestion sudo, l’exécution de commandesd’administrations sensibles ne seront possibles que dans un contexte d’exécutionprivilégié (root) non hérité :

# apt-get purge sudo

Baptiste MOINE 10 Projet 4.5

Page 11: PROJET 4.5 : MISE EN PLACE D’UN IDS/IPS - …Catégories d’IDSEn considèrent les différentes sources de données utilisées pour la détection d’intrusion, une autre classification

Installation de OpenSSH-Server

Téléchargement du paquet openssh-server en utilisant le gestionnaire APT :

# apt-get -fy install openssh-server

Arrêt du service en utilisant systemd :

# systemctl stop ssh.service

Génération de nouveaux nombres premiers de 4096 bits pour le Diffie-Hellman GroupExchange : (à défaut d’unité de calcul graphique, cette étape est très coûteuse en termesde temps processeur) :

# ssh-keygen -G /tmp/moduli -b 4096

Test de sûreté et validation des nombres premiers et suppression des nombres premiers :

# ssh-keygen -T /etc/ssh/moduli -f /tmp/moduli

# rm /tmp/moduli

Génération d’un nouveau jeu de clé publique et privée pour le serveur :

# rm /etc/ssh/ssh_host_*key*

# ssh-keygen -N '' -t ed25519 -f /etc/ssh/ssh_host_ed25519_key < /dev/null

# ssh-keygen -N '' -t rsa -b 4096 -f /etc/ssh/ssh_host_rsa_key < /dev/null

Ajout d’un message d’avertissement pour éviter tout problème en cas de procéduresjudiciaires suite à un potentiel piratage ou autre accès non autorisé :

# cat >/etc/issue <<-'EOF'

#############################################

# AVERTISSEMENT: L’accès à ce système est #

# restreint au personnel administratif de #

# Galaxy Swiss Bourdin #

# #

# Tout accès non autorisé constitue une #

# violation sujette à poursuite judiciaire. #

#############################################

EOF

Baptiste MOINE 11 Projet 4.5

Page 12: PROJET 4.5 : MISE EN PLACE D’UN IDS/IPS - …Catégories d’IDSEn considèrent les différentes sources de données utilisées pour la détection d’intrusion, une autre classification

Configuration du client

Sauvegarde de la configuration d’origine :

# cp /etc/ssh/ssh_config{,.bak}

Création d’une nouvelle configuration pour l’authentification SSH en tant que client :

# cat <<-'EOF' >/etc/ssh/ssh_config

# Configuration par défaut pour l'authentification sur tous les hôtes

Host *

# Pas d'authentification par mot de passe

PasswordAuthentication no

ChallengeResponseAuthentication no

# Authentification par clés publiques

PubkeyAuthentication yes

# Privilégie l'utilisation de EdDSA (Ed25519) à RSA

IdentityFile ~/.ssh/id_ed25519

IdentityFile ~/.ssh/id_rsa

# Désactive le Roaming (CVE-2016-0777 et CVE-2016-0778)

UseRoaming no

# Variables d'environnement relatives à la langue

SendEnv LANG LC_*

# N'affiche pas les noms d'hôtes en clair

HashKnownHosts yes

# Divers

VisualHostKey yes

EOF

Baptiste MOINE 12 Projet 4.5

Page 13: PROJET 4.5 : MISE EN PLACE D’UN IDS/IPS - …Catégories d’IDSEn considèrent les différentes sources de données utilisées pour la détection d’intrusion, une autre classification

Configuration du service

Sauvegarde de la configuration d’origine :

# cp /etc/ssh/sshd_config{,.bak}

Création d’une nouvelle configuration pour le service SSH :

# cat <<-'EOF' >/etc/ssh/sshd_config

#### Réseau ####

# Port d'écoute du service, non standard conseillé afin d'éviter les scans intempestifs (n’augmente en aucun cas le niveau de sécurité !)

Port 22

# Accélération du processus d’authentification pour les clients n’utilisant pasde paramètres DNS valides

UseDNS no

# Utilisation du protocole SSH-2 uniquement

Protocol 2

# Écoute IPv4 uniquement et sur le réseau d'administration

AddressFamily inet

ListenAddress 10.16.0.35

# Désactivation de la redirection du flux Xorg

X11Forwarding no

X11DisplayOffset 10

# Désactive les messages de type TCPKeepAlive, ces messages ne sont pas diffusés dans le canal chiffré

TCPKeepAlive no

# Alternative chiffrée au TCPKeepAlive, désauthentification après 3 min d’inactivité (3*60sec)

ClientAliveInterval 60

ClientAliveCountMax 3

Baptiste MOINE 13 Projet 4.5

Page 14: PROJET 4.5 : MISE EN PLACE D’UN IDS/IPS - …Catégories d’IDSEn considèrent les différentes sources de données utilisées pour la détection d’intrusion, une autre classification

#### Clés ####

# Clés d’hôte pour le protocole SSH-2

# Privilégie l’utilisation de EdDSA (Ed25519) à RSA

HostKey /etc/ssh/ssh_host_ed25519_key

HostKey /etc/ssh/ssh_host_rsa_key

# Séparation des privilèges, prévient les exploits de type privilege escalation

UsePrivilegeSeparation yes

UseLogin no

# Authentification par clé publique

PubkeyAuthentication yes

AuthorizedKeysFile %h/.ssh/authorized_keys

#### Authentification ####

# Whitelist

AllowGroups ssh-user

# 30 secondes pour saisir la passphrase

LoginGraceTime 30

# Interdit l'authentification avec un utilisateur root

PermitRootLogin no

# Vérification des permissions sur les fichiers de clés et les répertoires

StrictModes yes

# N’utilise pas les fichiers ~/.rhosts et ~/.shosts

IgnoreRhosts yes

# Pas d’authentification basée sur l’hôte

HostbasedAuthentication no

Baptiste MOINE 14 Projet 4.5

Page 15: PROJET 4.5 : MISE EN PLACE D’UN IDS/IPS - …Catégories d’IDSEn considèrent les différentes sources de données utilisées pour la détection d’intrusion, une autre classification

# Ne fait pas confiance en ~/.ssh/known_hosts pour l’authentification RhostsRSAAuthentication

IgnoreUserKnownHosts yes

RSAAuthentication yes

RhostsRSAAuthentication no

# Interdit l’authentification sans mot de passe

PermitEmptyPasswords no

# Utilisation de clés publique/privée pour l’authentification

PasswordAuthentication no

# Désactivation du ChallengeResponse (à activer pour une authentification TOTP)

UsePAM no

ChallengeResponseAuthentication no

#### Divers ####

# Journalisation dans /var/log/auth.log

SyslogFacility AUTH

LogLevel INFO

# Affichage de la dernière connexion

PrintLastLog yes

MaxAuthTries 2

MaxStartups 10:30:60

# Affichage d’une bannière de login

Banner /etc/issue

PrintMotd no

# Autorise les clients à passer des variables locales d’environnement

AcceptEnv LANG LC_*

Subsystem sftp /usr/lib/openssh/sftp-server

EOF

Baptiste MOINE 15 Projet 4.5

Page 16: PROJET 4.5 : MISE EN PLACE D’UN IDS/IPS - …Catégories d’IDSEn considèrent les différentes sources de données utilisées pour la détection d’intrusion, une autre classification

Configuration de l’utilisateur

Création d’un groupe et ajout de l’utilisateur autorisé pour l’authentification sur le serviceSSH (voir Whitelist) :

# groupadd ssh-user

# usermod -aG ssh-user user

Création des jeux de clés (depuis le client) :

# mkdir ~/.ssh

# cd ~/.ssh

# ssh-keygen -t ed25519 -f ~/.ssh/[email protected]_ed25519

# ssh-keygen -t rsa -b 4096 -f ~/.ssh/[email protected]_rsa

# cat ~/.ssh/[email protected]_{ed25519,rsa}.pub

Mise à jour des clés publiques pour l’utilisateur (depuis le serveur) :

# mkdir /home/user/.ssh/

# cd /home/user/.ssh/

# cat <<-'EOF' >/home/user/.ssh/authorized_keys

<contenu de [email protected]_ed25519.pub>

<contenu de [email protected]_rsa.pub>

EOF

# chown -R user:user /home/user/.ssh/

# chmod 0500 /home/user/.ssh/

# chmod 0400 /home/user/.ssh/authorized_keys

Redémarrage du service OpenSSH (depuis le serveur) :

# systemctl restart ssh.service

Suppression des clés publiques (depuis le client) :

# chmod -R 0700 ~/.ssh

# rm ~/.ssh/[email protected]_{ed25519,rsa}.pub

Baptiste MOINE 16 Projet 4.5

Page 17: PROJET 4.5 : MISE EN PLACE D’UN IDS/IPS - …Catégories d’IDSEn considèrent les différentes sources de données utilisées pour la détection d’intrusion, une autre classification

Configuration de l’authentification client (depuis le client) :

# cat <<-'EOF' >~/.ssh/config

Host suricata.swiss-galaxy.com

User user

IdentityFile ~/.ssh/[email protected]_ed25519

EOF

# touch ~/.ssh/known_hosts

# chmod 0500 ~/.ssh

# chmod 0700 ~/.ssh/known_hosts

# chmod 0400 ~/.ssh/[email protected]_ed25519

# chmod 0400 ~/.ssh/[email protected]_rsa

# chmod 0400 ~/.ssh/config

Test et validation de l’authentification par clé publique (depuis le client) :

# ssh suricata.swiss-galaxy.com

Baptiste MOINE 17 Projet 4.5

Page 18: PROJET 4.5 : MISE EN PLACE D’UN IDS/IPS - …Catégories d’IDSEn considèrent les différentes sources de données utilisées pour la détection d’intrusion, une autre classification

INSTALLATION DE SURICATA

Installation de la chaîne de compilation

Afin de compiler Suricata ainsi que ses dépendances, il est nécessaire d’installer sur lesystème, une chaîne de compilation.

Analyseurs lexicaux et syntaxiques

Composantes du début de la chaîne de compilation, les analyseurs consistent àdécomposer les chaînes de caractères en entités lexicales (« tokens ») en se basant surdes expressions rationnelles, définissant des séquences de caractères autorisés. Ceprocessus s’appelle la segmentation (« tokenization »). Les plus utilisés sont :

• GNU Bison : Compilateur de compilateur chargé de l’analyse sémantique etsyntaxique ;

• Flex : Analyseur de motifs lexicaux.

Installation

# apt-get -fy install flex bison

Autotools

Autotools désigne un ensemble d’outils de build du projet GNU, parmi lesquels :

• GNU Make : Fournit une aide à la compilation et à l’édition de liens par la créationde fichier de description d’installation des dépendances appelés makefile ;

• GNU AutoMake : Permet la génération d’un makefile à partir d’une description deplus haut niveau ;

• GNU AutoConf : Permet la génération d’un script shell de configuration del’environnement de développement « configure » à partir de programmes basés surle préprocesseur GNU M4 ;

• GNU LibTool : Utilisé avec AutoConf et AutoMake afin de simplifier le processus decompilation, indépendamment du système utilisé, par la création de bibliothèquesdynamiques dépendantes au processus d’installation ;

• GNU AutoGen : Fournit une approche similaire à Flex dans la génération defichiers makefile.

Installation

# apt-get -fy install make automake autoconf libtool autogen m4

Baptiste MOINE 18 Projet 4.5

Page 19: PROJET 4.5 : MISE EN PLACE D’UN IDS/IPS - …Catégories d’IDSEn considèrent les différentes sources de données utilisées pour la détection d’intrusion, une autre classification

Compilateur

Le compilateur GCC (« GNU Compiler Collection ») est un ensemble de compilateurnotamment utilisé pour le langage C et C++. En complément de cette bibliothèque decompilation, il est parfois nécessaire d’installer d’autre outils pouvant être utilisées dans lachaîne de compilation :

• GNU BinUtils : Ensemble d’outils permettant la création et la gestion deprogrammes binaires et sources assembleur ;

• GNU Debugger : Fournit une large ensemble d’outils pour tracer ou altérerl’exécution d’un programme (debugging) ;

• GNU C++ : Compilateur pour C++.

Installation

# apt-get -fy install binutils gcc g++ gdb build-essential linux-headers-$(uname -r)

Installation des dépendances

Afin de fonctionner, Suricata se base principalement sur 5 bibliothèques (libraries) :

• LibPCRE : Fournit des fonctions pour la gestion d’expressions rationnelles baséessur PCRE (« Perl Compatible Regular Expressions ») ;

• LibPCap : Fournit des fonctions pour la capture de trafic réseau ;

• LibNet : Fournit des fonctions d’interaction réseau bas-niveau telles que lamanipulation de tables (e.g. ARP, routage), pare-feu (e.g. ipchains, ipfw), IPtunnelling, etc ;

• LibYAML : Fournit des fonctions de traitement de données en utilisant le standardde forme YAML ;

• LibNetFilter : Fournit des fonctions d’interaction avec le pare-feu du noyau,composant essentiel pour la configuration de Suricata en mode IPS ;

• Zlib : Fournit des fonctions pour la compression / décompression de données ;

• LibJansson : Fournit des fonctions pour le traitement de données utilisant le formatJSON (JavaScript Object Notation).

Installation

# apt-get -fy install libpcre3 libpcre3-dbg libpcre3-dev libpcap-dev libnet1-dev libyaml-0-2 libyaml-dev libnetfilter-queue-dev zlib1g zlib1g-dev libmagic-dev libcap-ng-dev libjansson-dev pkg-config magic coccinelle

Baptiste MOINE 19 Projet 4.5

Page 20: PROJET 4.5 : MISE EN PLACE D’UN IDS/IPS - …Catégories d’IDSEn considèrent les différentes sources de données utilisées pour la détection d’intrusion, une autre classification

Compilation de Suricata

# cd /tmp/

# git clone git://phalanx.openinfosecfoundation.org/oisf.git

# cd oisf/

# git clone https://github.com/ironbee/libhtp

# ./autogen.sh

Installation de Suricata en inline mode dans /usr/bin/suricata, les fichiers de configurationseront dans le répertoire /etc/suricata et les journaux dans /var/log/suricata :

# ./configure --enable-nfqueue --prefix=/usr --sysconfdir=/etc --localstatedir=/var

# make

# make install

Reconfiguration du chargeur des bibliothèques partagées :

# ldconfig

Création d’un nouvel utilisateur dédié à l’exécution du service :

# groupadd suricata

# useradd -g suricata -s /bin/false suricata

Création du répertoire de stockage des journaux d’événements :

# mkdir /var/log/suricata

# chown suricata:suricata /var/log/suricata

Création de répertoire de stockage des règles :

# mkdir -p /etc/suricata/rules

Baptiste MOINE 20 Projet 4.5

Page 21: PROJET 4.5 : MISE EN PLACE D’UN IDS/IPS - …Catégories d’IDSEn considèrent les différentes sources de données utilisées pour la détection d’intrusion, une autre classification

Configuration de Suricata

Création des fichiers de configuration :

# cp {suricata.yaml,classification.config,reference.config} /etc/suricata/

# touch /etc/suricata/threshold.config

Modification du fichier de configuration suricata.yaml

# vim /etc/suricata/suricata.yaml

Désactivation des règles permettant l’envoie d’alertes au SIEM (« Security Information &Event Management System ») Prelude :

# alert output to prelude (http://www.prelude-technologies.com/) only

# available if Suricata has been compiled with --enable-prelude

# - alert-prelude:

# enabled: no

# profile: suricata

# log-packet-content: no

# log-packet-header: yes

Note : Pour commenter un bloc de texte, en utilisant vim :

• Appuyer sur CTRL+v pour passer en mode sélection de bloc visuel ;

• Sélectionner le premier caractère de chacune des lignes du bloc de texte àcommenter en descendant (touche j) ou en montant (touche k) ;

• Passer en mode insertion en pressant la touche I (i majuscule) ;

• Commenter la ligne avec le caractère approprié (# en général) ;

• Quitter le mode d’insertion en pressant la touche ÉCHAP.

Configuration du contexte d’exécution utilisateur du service :

# Run suricata as user and group.

run-as:

user: suricata

group: suricata

Baptiste MOINE 21 Projet 4.5

Page 22: PROJET 4.5 : MISE EN PLACE D’UN IDS/IPS - …Catégories d’IDSEn considèrent les différentes sources de données utilisées pour la détection d’intrusion, une autre classification

Modification des variables locales de Suricata :

# Holds the address group vars that would be passed in a Signature.

# These would be retrieved during the Signature address parsing stage.

address-groups:

HOME_NET: "10.16.0.0/17"

Configuration des flux de journalisation :

# Define your logging outputs. If none are defined, or they are all

# disabled you will get the default - console output.

outputs:

- console:

enabled: yes

- file:

enabled: yes

filename: /var/log/suricata/suricata.log

Configuration des flux de sortie pour Barnyard2 :

# alert output for use with Barnyard2

- unified2-alert:

enabled: yes

filename: unified2.alert

Ajout de règles à Suricata

Afin de commencer sur une base saine et pouvoir mieux appréhender le fonctionnementintrinsèque de Suricata ainsi que la syntaxe utilisée pour la création de ses règles, nousallons commencer par utiliser un package de règles pré-établies et si besoin est, lesmodifier par la suite :

# cd /tmp/

# wget http://rules.emergingthreats.net/open/suricata/emerging.rules.tar.gz

# tar xvfz emerging.rules.tar.gz

# mv /tmp/rules/*.rules /etc/suricata/rules/

# chown -R suricata:suricata /etc/suricata/

Baptiste MOINE 22 Projet 4.5

Page 23: PROJET 4.5 : MISE EN PLACE D’UN IDS/IPS - …Catégories d’IDSEn considèrent les différentes sources de données utilisées pour la détection d’intrusion, une autre classification

INSTALLATION DE SNORBY

Installation de Ruby

Installation de Ruby en utilisant le serveur subversion RVM :

# curl -#LO https://rvm.io/mpapis.asc

# gpg --import mpapis.asc

# curl -sSL https://get.rvm.io | bash -s stable --quiet-curl --ruby=1.9.3

# source /usr/local/rvm/scripts/rvm

Validation des pré-requis :

# rvm requirements

Ajout de Ruby à la variable d’environnement PATH (remarque : ajout dans /etc/profilepossible) :

# export PATH=/usr/local/rvm/gems/ruby-1.9.3-p551/bin:$PATH

# rvm use ruby-1.9.3-p551

Mise à jour de rdoc (corrige des problèmes d’encodage dans Ruby on Rails) :

# gem update rdoc

# gem rdoc --all --overwrite

Baptiste MOINE 23 Projet 4.5

Page 24: PROJET 4.5 : MISE EN PLACE D’UN IDS/IPS - …Catégories d’IDSEn considèrent les différentes sources de données utilisées pour la détection d’intrusion, une autre classification

Installation des dépendances supplémentaires

Ajout du dépôt de Wheezy comme nouvelle source pour APT :

# cat <<-'EOF' >>/etc/apt/sources.list

# Dépôt de base de Debian Wheezy

deb http://httpredir.debian.org/debian/ wheezy main

deb-src http://httpredir.debian.org/debian/ wheezy main

EOF

Mise à jour des caches APT :

# apt-get update

Installation des dépendances :

# apt-get -fy install libssl-dev libreadline6-dev libsqlite3-dev libsqlite3-ruby1.9.1 ruby1.9.3 libxml++2.6-dev libxml2-dev imagemagick libmagickwand-dev openjdk-7-jdk ghostscript graphviz-dev libfftw3-dev libgv-ruby libjpeg-dev ruby-dev ttf-dejavu unzip xorg libcrypt-ssleay-perl libwww-perl libyaml-dev openssl libcurl4-openssl-dev libxslt1-dev libxslt-dev wkhtmltopdf default-jre-headless

# wget https://aws-eu-cache01.rubygems.org/gems/text-hyphen-1.2.gem

# gem install --force --local text-hyphen-1.2.gem

# export LD_LIBRARY="/usr/lib/*-linux-gnu"

# wget https://aws-eu-cache01.rubygems.org/gems/text-format-1.0.0.gem

# gem install --force text-format-1.0.0.gem

# mkdir -p /usr/src/PGM/BUILD/libxml/

# cd /usr/src/PGM/BUILD/libxml/

# wget ftp://xmlsoft.org/libxml2/libxml2-2.8.0.tar.gz

# tar xvzf libxml2-2.8.0.tar.gz

# cd /usr/include

# gem install nokogiri -v '1.5.9' -- --with-xml2-include=/usr/src/PGM/BUILD/libxml/libxml2-2.8.0/include ./INS_NOKO

# gem install thor i18n bundler tzinfo builder memcache-client rack rack-test erubis mail rack-mount sqlite3 rails activesupport

# gem install rake --version=0.9.2

# gem install net-ssh -v 2.2.2 --no-ri --no-rdoc

# gem install do_mysql -v '0.10.12'

# gem install arel ezprint

# gem install dm-rails -v 1.2.1

# gem install bundler -v 1.2.1

Baptiste MOINE 24 Projet 4.5

Page 25: PROJET 4.5 : MISE EN PLACE D’UN IDS/IPS - …Catégories d’IDSEn considèrent les différentes sources de données utilisées pour la détection d’intrusion, une autre classification

Installation de Apache

Installation de Apache et PHP en utilisant le gestionnaire de paquet APT :

# apt-get -fy install apache2 php5 php5-common php5-mysql libapache2-mod-php5

Arrêt du service Apache :

# systemctl stop apache2.service

Configuration de Apache :

# cat <<-'EOF' >/etc/apache2/sites-enabled/000-default.conf

ServerName localhost

<VirtualHost *:80>

DocumentRoot /var/www/html

ErrorLog ${APACHE_LOG_DIR}/error.log

CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

EOF

Création d’une nouvelle arborescence WWW :

# rm -rf /var/www/*

# mkdir -p /var/www/html

# chown www-data:www-data /var/www/html

Démarrage du service :

# systemctl start apache2.service

Baptiste MOINE 25 Projet 4.5

Page 26: PROJET 4.5 : MISE EN PLACE D’UN IDS/IPS - …Catégories d’IDSEn considèrent les différentes sources de données utilisées pour la détection d’intrusion, une autre classification

Installation de MySQL

Installation de MySQL en utilisant le gestionnaire de paquet APT :

# apt-get -fy install mysql-server mysql-client libmysqlclient-dev

Arrêt du service MySQL :

# systemctl stop mysql.service

Configuration de MySQL :

# mv /etc/mysql/conf.d/mysqld_safe_syslog.cnf{,.bak}

# cat <<-'EOF' >>/etc/mysql/my.cnf

[mysqld_safe]

log_error=/var/log/mysql/mysql-error.log

[mysqld]

log_error=/var/log/mysql/mysql_error.log

general_log_file=/var/log/mysql/mysql.log

general_log=1

log_slow_queries=/var/log/mysql-slow.log

long_query_time=2

log-queries-not-using-indexes

EOF

Création des fichiers pour la journalisation d’événements de MySQL :

# touch /var/log/mysql/mysql{,-slow,-error}.log

# chown -Rf mysql /var/log/mysql

Configuration de l’utilisateur et de la base de données pour Suricata :

# mysql -u root -p

mysql> CREATE DATABASE snorby DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;

mysql> CREATE USER 'snorby'@'localhost' IDENTIFIED BY 'sMKn@6jE';

mysql> GRANT ALL PRIVILEGES ON snorby.* TO 'snorby'@'localhost' WITH GRANT OPTION;

Baptiste MOINE 26 Projet 4.5

Page 27: PROJET 4.5 : MISE EN PLACE D’UN IDS/IPS - …Catégories d’IDSEn considèrent les différentes sources de données utilisées pour la détection d’intrusion, une autre classification

Installation de Snorby

Suite à de nombreux essais pour la compilation et l’utilisation de snorby, plusieursproblèmes ont été rencontrés (e.g. failles XSS, gestion de version et référencesincorrectes, erreurs de syntaxe). J’ai donc pris l’initiative d’apporter ma contribution (e.g.Updates by Creased · Pull Request #425) au projet en corrigeant moi-même ces erreursde conceptions.

En attendant l’approbation de la part de l’équipe de développement du projet, ces commitrestent au statut de pull request (Request for Comments) et n’est donc, pour l’heure, pasune composante du projet officiel, il est cependant possible d’exploiter le contenu de cePR pour mettre à jour le contenu de la base de fichiers locale :

# git clone https://github.com/Snorby/snorby.git

# cd /var/www/snorby/

# git pull origin pull/425/head

Vérification des modifications :

# git reflog

f8b0794 HEAD@{0}: pull origin pull/425/head: Fast-forward

94c7f18 HEAD@{1}: clone: from https://github.com/Snorby/snorby.git

# git log 94c7f18..f8b0794 --format="format:Commit hash: %C(green)%h%C(reset)%nAuthor: %C(yellow)%aN <%aE>%C(reset)%nSubject: %C(cyan)%s%C(reset)%nCommitDate: %C(red)%cd%C(reset)%n"

Commit hash: f8b0794

Author: Baptiste MOINE <[email protected]>

Subject: Update Gemfile.lock

CommitDate: Thu Mar 17 16:57:27 2016 +0100

[...]

Commit hash: 29dda93

Author: Baptiste MOINE <[email protected]>

Subject: Update Ruby version requirement

CommitDate: Thu Mar 17 14:00:46 2016 +0100

OU, en utilisant mon fork :

# git clone https://github.com/Creased/snorby.git

Baptiste MOINE 27 Projet 4.5

Page 28: PROJET 4.5 : MISE EN PLACE D’UN IDS/IPS - …Catégories d’IDSEn considèrent les différentes sources de données utilisées pour la détection d’intrusion, une autre classification

Configuration de Snorby :

# cd /var/www/snorby/config/

# mv database.yml{.example,}

# mv snorby_config.yml{.example,}

# sed -i s/"\/usr\/local\/bin\/wkhtmltopdf"/"\/usr\/bin\/wkhtmltopdf"/g snorby_config.yml

# cat <<-'EOF' >/var/www/snorby/config/database.yml

# Snorby Database Configuration

#

# Please set your database password/user below

# NOTE: Indentation is important.

#

snorby: &snorby

adapter: mysql

username: snorby

password: "sMKn@6jE"

host: localhost

development:

database: snorby

<<: *snorby

test:

database: snorby

<<: *snorby

production:

database: snorby

<<: *snorby

EOF

Installation de Snorby :

# cd /var/www/snorby/

# bundle install --deployment --path vendor/cache

Baptiste MOINE 28 Projet 4.5

Page 29: PROJET 4.5 : MISE EN PLACE D’UN IDS/IPS - …Catégories d’IDSEn considèrent les différentes sources de données utilisées pour la détection d’intrusion, une autre classification

Tel qu’indiqué dans le commit #8b7a905, j’ai conseillé la modification de certains scriptstels que ezprint, afin de corriger des erreurs syntaxiques :

# sed -i 's/\(^.*\)\(Mime::Type.register.*application\/pdf.*$\)/\1if Mime::Type.lookup_by_extension(:pdf) != "application\/pdf"\n\1 \2\n\1end/' vendor/cache/ruby/*.*.*/bundler/gems/ezprint-*/lib/ezprint/railtie.rb

# sed -i 's/\(^.*\)\(Mime::Type.register.*application\/pdf.*$\)/\1if Mime::Type.lookup_by_extension(:pdf) != "application\/pdf"\n\1 \2\n\1end/' vendor/cache/ruby/*.*.*/gems/actionpack-*/lib/action_dispatch/http/mime_types.rb

# sed -i 's/\(^.*\)\(Mime::Type.register.*application\/pdf.*$\)/\1if Mime::Type.lookup_by_extension(:pdf) != "application\/pdf"\n\1 \2\n\1end/' vendor/cache/ruby/*.*.*/gems/railties-*/guides/source/action_controller_overview.textile

Configuration de la messagerie électronique pour l’envoi d’alertes :

# cat <<-'EOF' >/var/www/snorby/config/initializers/mail_config.rb

ActionMailer::Base.delivery_method = :smtp

ActionMailer::Base.smtp_settings = {

:address => "bluemind.swiss-galaxy.com",

:port => 587,

:domain => "swiss-galaxy.com",

:user_name => "ids",

:password => "5ur1cAt@",

:authentication => "plain",

:enable_starttls_auto => true

}

ActionMailer::Base.delivery_method = :sendmail

ActionMailer::Base.sendmail_settings = {

:location => '/usr/sbin/sendmail',

:arguments => '-i -t'

}

ActionMailer::Base.perform_deliveries = true

ActionMailer::Base.raise_delivery_errors = true

ActionMailer::Base.perform_deliveries = true

ActionMailer::Base.raise_delivery_errors = true

# Mail.register_interceptor(DevelopmentMailInterceptor) if Rails.env.development?

EOF

Installation des configurations de Snorby :

# bundle exec rake snorby:setup

Baptiste MOINE 29 Projet 4.5

Page 30: PROJET 4.5 : MISE EN PLACE D’UN IDS/IPS - …Catégories d’IDSEn considèrent les différentes sources de données utilisées pour la détection d’intrusion, une autre classification

Installation de la passerelle Apache

Snorby étant principalement développé en Ruby, son interfaçage avec Apache doit êtrefait avec une passerelle.

Installation des composants supplémentaires :

# apt-get -fy install apache2-dev apache2.2-common libapr1-dev libaprutil1-dev libcurl4-openssl-dev

Arrêt du service Apache :

# systemctl stop apache2.service

Installation de la passerelle :

# gem install passenger --no-ri --no-rdoc

# /usr/local/rvm/gems/ruby-1.9.3-p551/bin/passenger-install-apache2-module -a

Ajout du module dans Apache :

# cat <<-'EOF' >/etc/apache2/mods-available/passenger.load

LoadModule passenger_module `find /usr/local/rvm/gems/ -type f -name "*mod_passenger*.so" | head -n1`

<IfModule mod_passenger.c>

PassengerRoot `find /usr/local/rvm/gems/ -type d -name "passenger-*" | head -n1`

PassengerRuby /usr/local/rvm/rubies/ruby-1.9.3-p551/bin/ruby

</IfModule>

EOF

Activation des modules tiers :

# a2enmod passenger

# a2enmod rewrite

# a2enmod ssl

Démarrage du service Apache :

# systemctl start apache2.service

Baptiste MOINE 30 Projet 4.5

Page 31: PROJET 4.5 : MISE EN PLACE D’UN IDS/IPS - …Catégories d’IDSEn considèrent les différentes sources de données utilisées pour la détection d’intrusion, une autre classification

A présent, il est possible de se rendre sur la console de Snorby tel que présenté surl'Illustration 3.

Les identifiants sont par défaut (Il est préférable de les modifier) :

• Email : [email protected]

• Password : snorby

Ici on les remplacera par :

• Email: [email protected]

• Password : admini

Baptiste MOINE 31 Projet 4.5

Illustration 3: Page d'authentification de Snorby

Page 32: PROJET 4.5 : MISE EN PLACE D’UN IDS/IPS - …Catégories d’IDSEn considèrent les différentes sources de données utilisées pour la détection d’intrusion, une autre classification

INSTALLATION DE BARNYARD2

Compilation des dépendances :

# cd /usr/src/

# wget http://www.tcpdump.org/release/libpcap-1.7.4.tar.gz

# tar xvzf libpcap-1.7.4.tar.gz

# cd libpcap-1.7.4/

# ./configure "CFLAGS=-fPIC -g -O2" --prefix=/usr --enable-shared

# make

# make install

# cd /usr/src/

# wget https://libdnet.googlecode.com/files/libdnet-1.12.tgz

# tar zxf libdnet-1.12.tgz

# cd libdnet-1.12/

# ./configure "CFLAGS=-fPIC -g -O2" --prefix=/usr --enable-shared

# make

# make install

# cd /usr/src/

# git clone https://github.com/luigirizzo/netmap

# cd netmap/LINUX/

# ./configure --no-drivers

# make

# make install

# cd /usr/src/

# wget https://www.snort.org/downloads/snort/daq-2.0.6.tar.gz

# tar xzvf daq-2.0.6.tar.gz

# cd daq-2.0.6/

# ./configure "CFLAGS=-fPIC -g -O2" --disable-ipq-module --disable-ipfw-module --disable-afpacket-module --disable-dump-module --with-libpcap-includes=/usr/include/libnetfilter_queue --with-libpcap-libraries=/usr/lib --with-pic

# make

# make install

Baptiste MOINE 32 Projet 4.5

Page 33: PROJET 4.5 : MISE EN PLACE D’UN IDS/IPS - …Catégories d’IDSEn considèrent les différentes sources de données utilisées pour la détection d’intrusion, une autre classification

Compilation de Barnyard2 :

# cd /usr/src/

# git clone https://github.com/firnsy/barnyard2.git

# cd barnyard2

# ./autogen.sh

# ./configure --with-mysql-libraries=/usr/lib/*-linux-gnu

# make

# make install

Configuration de Barnyard2 :

# cp /usr/src/barnyard2/etc/barnyard2.conf /etc/suricata/

# sed -i 's/\(^config reference_file:\s*\/etc\/\)snort\(\/reference.config$\)/\1suricata\2/' /etc/suricata/barnyard2.conf

# sed -i 's/\(^config classification_file:\s*\/etc\/\)snort\(\/classification.config$\)/\1suricata\2/' /etc/suricata/barnyard2.conf

# sed -i 's/\(^config gen_file:\s*\/etc\/\)snort\(\/gen-msg.map$\)/\1suricata\/rules\2/' /etc/suricata/barnyard2.conf

# sed -i 's/\(^config sid_file:\s*\/etc\/\)snort\(\/sid-msg.map$\)/\1suricata\/rules\2/' /etc/suricata/barnyard2.conf

# sed -i 's/^#\(config waldo_file:\s*\).*$/\1\/var\/log\/suricata\/suricata.waldo/' /etc/suricata/barnyard2.conf

# sed -i 's/^#\(\s*output database: log, mysql, user=\).*\(\spassword=\).*\(\sdbname=\).*\(\shost=\).*$/\1snorby\2sMKn@6jE\3snorby\4localhost/' /etc/suricata/barnyard2.conf

# sed -i 's/^#\(config interface:\s*\).*$/\1eth1/' /etc/suricata/barnyard2.conf

Création de l’arborescence de journalisation :

# mkdir /var/log/barnyard2

# touch /var/log/suricata/suricata.waldo

Ajout des filtres pour Barnyard2 :

# wget http://rules.emergingthreats.net/open/suricata/rules/sid-msg.map -O /etc/suricata/rules/sid-msg.map

# wget http://rules.emergingthreats.net/open/suricata/rules/gen-msg.map -O /etc/suricata/rules/gen-msg.map

Baptiste MOINE 33 Projet 4.5

Page 34: PROJET 4.5 : MISE EN PLACE D’UN IDS/IPS - …Catégories d’IDSEn considèrent les différentes sources de données utilisées pour la détection d’intrusion, une autre classification

DÉMARRAGE MANUEL DES SERVICES

La pile IDS étant composée, nous pouvons démarrer chacun des services manuellementen mode daemon pour vérifier leurs fonctionnements :

# cd /var/www/snorby/

# bundle exec rails server -e production -d # Démarrage de Snorby

# suricata -c /etc/suricata/suricata.yaml -i eth1 -D # Démarrage de Suricata

# barnyard2 -c /etc/suricata/barnyard2.conf -d /var/log/suricata -f unified2.alert -w /var/log/suricata/suricata.waldo -D # Démarrage de Barnyard2

DÉMARRAGE AUTOMATIQUE DES SERVICES

À défaut de scripts de démarrage pour chacun des services composant cette pile, j’aiprocédé à l’écriture des scripts pour la gestion de ces différents services.

Chacun des fichiers nécessaires à la mise en place de ces services sous SystemD sonttéléchargeables depuis mon registre GitHUB.

Application des scripts au système :

# cd /tmp/

# git clone https://github.com/Creased/ids-services.git

# cd ids-services/

Copie des configurations :

# cp ./etc/default/{barnyard2,snorby,suricata} /etc/default/

# chmod 644 /etc/default/{barnyard2,snorby,suricata}

Copie des scripts :

# cp ./usr/sbin/{barnyard2,snorby}.sh /usr/sbin/

# chmod 755 /usr/sbin/{barnyard2,snorby}.sh

# cp ./etc/init.d/suricata /etc/init.d/

# chmod 755 /etc/init.d/suricata

Copie et activation des services dans SystemD :

# cp ./etc/systemd/system/{barnyard2,snorby}.service /etc/systemd/system/

# systemctl enable barnyard2.service

# systemctl enable snorby.service

# systemctl enable suricata.service

Baptiste MOINE 34 Projet 4.5

Page 35: PROJET 4.5 : MISE EN PLACE D’UN IDS/IPS - …Catégories d’IDSEn considèrent les différentes sources de données utilisées pour la détection d’intrusion, une autre classification

MISE À JOUR DES SIGNATURES AVEC OINKMASTER

Oinkmaster est un outil destiné à simplifier la gestion des signatures. Même s’il est conçupour Snort, il peut également fonctionner pour Suricata.

Installation de OinkMaster en utilisant le dépôt Debian :

# apt-get install oinkmaster

Configuration de OinkMaster par l’ajout d’un URI pour la récupération des signaturesdepuis EmergingThreats :

# sed -i 's/^# \(url =\) http:\/\/www\.emergingthreats\.net\/rules\/emerging\.rules\.tar\.gz/\1 http:\/\/rules.emergingthreats.net\/open\/suricata\/emerging.rules.tar.gz/' /etc/oinkmaster.conf

Mise à jour de la configuration de Suricata afin de s’assurer que chacune des règles seraprise en compte suite à la mise à jour :

# vim /etc/suricata/suricata.yaml

Remplacer :

classification-file: /etc/suricata/classification.config

reference-config-file: /etc/suricata/reference.config

par :

classification-file: /etc/suricata/rules/classification.config

reference-config-file: /etc/suricata/rules/reference.config

Au besoin, mettre à jour la liste des règles utilisées par Suricata :

rule-files:

- botcc.rules

- ciarmy.rules

- compromised.rules

- drop.rules

- dshield.rules

- emerging-activex.rules

- emerging-attack_response.rules

- emerging-chat.rules

Baptiste MOINE 35 Projet 4.5

Page 36: PROJET 4.5 : MISE EN PLACE D’UN IDS/IPS - …Catégories d’IDSEn considèrent les différentes sources de données utilisées pour la détection d’intrusion, une autre classification

- emerging-current_events.rules

- emerging-dns.rules

- emerging-dos.rules

- emerging-exploit.rules

- emerging-ftp.rules

- emerging-games.rules

- emerging-icmp_info.rules

# - emerging-icmp.rules

- emerging-imap.rules

- emerging-inappropriate.rules

- emerging-malware.rules

- emerging-misc.rules

- emerging-mobile_malware.rules

- emerging-netbios.rules

- emerging-p2p.rules

- emerging-policy.rules

- emerging-pop3.rules

- emerging-rpc.rules

- emerging-scada.rules

- emerging-scan.rules

- emerging-shellcode.rules

- emerging-smtp.rules

- emerging-snmp.rules

- emerging-sql.rules

- emerging-telnet.rules

- emerging-tftp.rules

- emerging-trojan.rules

- emerging-user_agents.rules

- emerging-voip.rules

- emerging-web_client.rules

- emerging-web_server.rules

- emerging-web_specific_apps.rules

- emerging-worm.rules

- tor.rules

- decoder-events.rules # available in suricata sources under rules dir

- stream-events.rules # available in suricata sources under rules dir

- http-events.rules # available in suricata sources under rules dir

- smtp-events.rules # available in suricata sources under rules dir

Baptiste MOINE 36 Projet 4.5

Page 37: PROJET 4.5 : MISE EN PLACE D’UN IDS/IPS - …Catégories d’IDSEn considèrent les différentes sources de données utilisées pour la détection d’intrusion, une autre classification

# - dns-events.rules # available in suricata sources under rules dir

- tls-events.rules # available in suricata sources under rules dir

# - modbus-events.rules # available in suricata sources under rules dir

# - app-layer-events.rules # available in suricata sources under rules dir

Il est également possible de désactiver une catégorie, simplement en commutant lesymbole de commentaire (« # ») devant la catégorie concernée, par exemple :

# - app-layer-events.rules # Catégorie désactivée

Cependant, il est également possible de désactiver une règle spécifique sans pour autanten désactiver la catégorie, ainsi il sera nécessaire de récupérer son identifiant (sid pour« Signature IDentifier ») et ajouter une instruction dans le fichier de configuration deOinkMaster, par exemple :

# cat <<-'EOF' >>/etc/oinkmaster.conf

disablesid 2008983 # Désactivation de la signature « BlackSun » de emerging-user_agents.rules

EOF

Téléchargement initial manuel des règles :

# oinkmaster -C /etc/oinkmaster.conf -o /etc/suricata/rules/

Ajout d’une règle dans la Crontab pour l’automatisation de cette tâche :

# crontab -e -u suricata

00 00 * * * oinkmaster -C /etc/oinkmaster.conf -o /etc/suricata/rules/ &>/dev/null 2>&1

Baptiste MOINE 37 Projet 4.5