L’objectif de cet atelier était de mettre rapidement en œuvre la chaîne Suricata,
Suricata est un logiciel open source de détection d’intrusion (IDS), de prévention d’intrusion (IPS), et de supervision de sécurité réseau (NSM).
Une présentation du logiciel a été réalisé durant le séminaire EOLE 2016 :
Suricata – IDS Libres par Eric Leblond – Stamus Network (45 min)
Nous avons profité de cet atelier pour enrichir Wikipédia avec une page sur le logiciel Suricata : http://fr.wikipedia.org/wiki/Suricata_(logiciel)
Installation de Suricata
Pour tester la solution différentes voies ont été choisies :
- installation sur une Eolebase depuis les paquets ;
- utilisation et installation de la distribution SELKS 3.0 ;
- l’utilisation d’Amsterdam, une image Docker.
Installation depuis les paquets
Installation depuis la distribution SELKS 3.0
L’utilisation du live sur une machine virtualisée, testée 2 fois sur des systèmes de virtualisation différent n’a rien donné car la machine freeze au bout de quelques dizaines de minutes. L’installation testée à deux reprises également dans des VM n’a rien donné non plus.
Installation avec Docker
Nous n’avons pas eu le temps de tester l’image Docker mis à disposition.
http://github.com/StamusNetworks/Amsterdam
Configuration de Suricata
- mi
Contenu de la règle eole.rules :
{"timestamp":"2016-11-16T10:54:13.628227+0100","flow_id":1160956180949346,"in_iface":"ens4","event_type":"alert","src_ip":"192.168.0.1","src_port":52250,"dest_ip":"192.168.0.24","dest_port":22,"proto":"TCP","alert":{"action":"allowed","gid":1,"signature_id":2230024,"rev":1,"signature":"Connexion sur le port 22","category":"Generic Protocol Command Decode","severity":3},"ssh":{"client":{"proto_version":"2.0","software_version":"OpenSSH_7.2p2 Ubuntu-4ubuntu2.1"},"server":{"proto_version":"2.0","software_version":"OpenSSH_7.2p2 Ubuntu-4ubuntu2.1"}}} {"timestamp":"2016-11-16T10:54:13.717455+0100","flow_id":1160956180949346,"in_iface":"ens4","event_type":"alert","src_ip":"192.168.0.1","src_port":52250,"dest_ip":"192.168.0.24","dest_port":22,"proto":"TCP","alert":{"action":"allowed","gid":1,"signature_id":2230024,"rev":1,"signature":"Connexion sur le port 22","category":"Generic Protocol Command Decode","severity":3},"ssh":{"client":{"proto_version":"2.0","software_version":"OpenSSH_7.2p2 Ubuntu-4ubuntu2.1"},"server":{"proto_version":"2.0","software_version":"OpenSSH_7.2p2 Ubuntu-4ubuntu2.1"}}}
Installation d’Elasticsearch
# apt-get update
Configuration d’Elasticsearch
Test d’Elasticsearch
Installation de Logstash
# echo "deb http://packages.elastic.co/logstash/4.5/debian stable main" | sudo tee -a /etc/apt/sources.list # apt-get update # apt-get install logstash
Configuration de Logstash
# vim /etc/logstash/conf.d/01-eole-input.conf input { file { path => "/var/log/suricata/eve.json" #sincedb_path => "/var/lib/logstash/" codec => json type => "SuricataIDPS" } } filter { if [type] == "SuricataIDPS" { date { match => [ "timestamp", "ISO8601" ] } } } output { elasticsearch { hosts => ["localhost:9200"] } #stdout { codec => rubydebug } #stdout { codec => json} }
Pour vérifier la configuration de Logstash il est possible de l’exécuter manuellement en précisant le fichier de configuration :
# /opt/logstash/bin/logstash -f /etc/logstash/conf.d/01-eole-input.conf
Installation de Nginx
# apt-eole install eole-reverseproxy
Création de l’utilisateur kibana
# echo "kibanaadmin:`openssl passwd -apr1`" | sudo tee -a /etc/nginx/htpasswd.users Password: Verifying - Password: kibanaadmin:$apr1$.kUW0B1D$B7Pp3yEyKM9AWcY5e5nLy0
Configuration de Nginx
Création d’un fichier /etc/nginx/sites-available/kibana : écoute sur le port 80
server { listen 80; server_name example.com; auth_basic "Restricted Access"; auth_basic_user_file /etc/nginx/htpasswd.users; location / { proxy_pass http://localhost:5601; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; } }
Création d’un lien symbolique
# ln -s /etc/nginx/sites-available/kibana kibana (depuis /etc/nginx/sites-enable )
Pour vérifier la configuration :
# nginx -t
Configuration de Kibana
service kibana start
Connexion à l’application
Connexion anonyme :
http://<ipServeur>:5601/app/kibana
http://<ipServeur>:5601
Connexion authentifiée :
http://<ipServeur>/app/kibana
http://<ipServeur>
Le compte et le mot de passe choisi sont ceux configurés plus haut : kibanaadmin