Mise en place d'un SOC
Pour commencer, j’installe OpenVas sur mon Ubuntu via un script d’installation :
Je commence par mettre à jour puis upgrade mon système.
git clone https://github.com/iachievedit/build_openvas
cd build_openvas
time ./install.sh
cd scripts/
./99_start.sh
cd ..Puis, je vais chercher le mot de passe par défaut pour accéder à openvas qui se trouve dans le fichier adminpass.txt.
nano adminpass.txt
ip_du_serveur:9392Et je peux ensuite me login avec le user Admin et le mot de passe récupéré
Une fois sur l’interface, on peut se rendre dans Administration puis dans Feed Status pour vérifier que tous les feeds soit à jour.
Avant cela, je vais mettre en place mon SIEM sous la suite ELK (Elastisearch, Logstash, Kibana) pour voir tous les logs de mes machines.
Voici comment j’ai procédé :
Je commence par un update de ma machine :
sudo apt updatePuis l’installation du packet apt-transport-https, ce qui permet de pouvoir installer des paquets depuis des dépôts qui utilisent le protocole HTTPS :
sudo apt install apt-transport-https
Une fois cela fait, il faut installer Java, car Elastic Stack a besoin de Java pour fonctionner :
sudo apt install openjdk-11-jdk -y
java -version
sudo nano /etc/environmentPuis ajouter la ligne :
JAVA_HOME="/usr/lib/jvm/java-11-openjdk-amd64"
source /etc/environmentEt on vérifie que JAVA_HOME est bien configuré :
echo $JAVA_HOME
Elasticsearch est le coeur de la suite ELK, utilisé pour la recherche et l’analyse.
Pour l’installer, on doit importer la clé de signature publique et ajouter le dépôt APT Elasticsearch au système :
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elasticsearch-keyring.gpgPuis, ajouter la définition du repository :
echo "deb [signed-by=/usr/share/keyrings/elasticsearch-keyring.gpg] https://artifacts.elastic.co/packages/8.x/apt stable main" | sudo tee /etc/apt/sources.list.d/elastic-8.x.list
sudo apt-get updatePuis, on installe elasticsearch :
sudo apt-get install elasticsearch
sudo systemctl start elasticsearch sudo systemctl enable elasticsearch
sudo nano /etc/elasticsearch/elasticsearch.ymlEt décommenter network.host puis faire la même chose pour discovery.seed.hosts.
Il faudra aussi changer les settings de sécurité pour le moment :
xpack.security.enabled: false
sudo systemctl restart elasticsearchEt on confirme qu’Elasticsearch est bien configuré en envoyant une requête HTTP avec un curl :
curl -X GET "localhost:9200"Une réponse JSON devrait apparaitre :
Logstash est utilisé pour traiter et transmettre les données de log à Elasticsearch, pour l’installer voici les étapes :
sudo apt-get install logstash -y
sudo systemctl start logstash sudo systemctl enable logstash
sudo systemctl status logstash
On installe Kibana avec ces commandes :
sudo apt-get install kibanaPuis, on démarre le service et on le démarre automatiquement au démarrage :
sudo systemctl start kibana sudo systemctl enable kibana
sudo nano /etc/kibana/kibana.ymlIl faut décommenter ces trois lignes pour que Kibana puisse joindre Elasticsearch :
server.port: 5601 server.host: "0.0.0.0" elasticsearch.hosts: ["http://localhost:9200"]
sudo systemctl restart kibanaOn peut donc maintenant accéder à l’interface web de Kibana avec cette url : http://IP_DE_LA_MACHINE:5601
Une fois la suite ELK installée je vais la configurer pour qu’elle soit fonctionnelle en HTTPS :
Où bien directement sur ce bouton :
Je commence par créer un script shell qui va installer le paquet apt-transport-https et auditbeat :
sudo nano install.sh
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elasticsearch-keyring.gpg; echo 'deb [signed-by=/usr/share/keyrings/elasticsearch-keyring.gpg] https://artifacts.elastic.co/packages/8.x/apt stable main' | sudo tee /etc/apt/sources.list.d/elastic-8.x.list; sudo apt-get install -y apt-transport-https; apt-get install -y auditbeat;
chmod 755 install.sh ./install.sh
sudo nano /etc/auditbeat/auditbeat.ymlEt j’active le setup du dashboard :
setup.dashboards.enable: true
cd /usr/share/auditbeat/bin ./auditbeat test config -c /etc/auditbeat/auditbeat.yml --path.data /var/lib/auditbeat --path.home /usr/share/auditbeat ./auditbeat test output -c /etc/auditbeat/auditbeat.yml --path.data /var/lib/auditbeat --path.home /usr/share/auditbeat
J’attribue le nom : auditbeat-publisher
Comme privilèges : monitor et read_ilm
Comme Index privilèges : Indices: auditbeat-* et Privilèges: create_doc
Comme nom : auditbeat-publisher
Je mets une fausse adresse de mail de test
Puis, le mot de passe et j’attribue le rôle créé avant et le rôle editor
POST /_security/api_key/grant
{
"grant_type": "password",
"username": "auditbeat-publisher",
"password": "Aristee.2025",
"api_key": {
"name": "auditbeat-publisher"
}
}
sudo nano /etc/auditbeat/auditbeat.ymlDans la section Kibana je modifie host: pour bien mettre en https : https://192.168.110.56:5601 et la même chose dans la section elasticsearch je modifie l’hosts en mettant l’IP de mon serveur et dans api_key je rentre ma clé générée :
sudo systemctl restart auditbeatEnsuite, je me rends dans le dashboard de Kibana dans System Overview et je peux voir les logs de ma machine qui remontent :
Pour ma machine vulnérable, j’ai fait le choix de partir sur Metasploitable 2. Voici comment je l’ai installé sur Proxmox :
Il faut créer une nouvelle VM sur Proxmox. Voici la configuration requise :
Dans Disks bien choisir IDE dans Bus/Device
Puis, je choisis le reste de la configuration selon les capacités de ma machine
cd /var/lib/vz/images
mkdir "ID_DE_LA_MACHINE"
wget https://sourceforge.net/projects/metasploitable2/files/metasploitable-linux-2.0.0.zip
apt install unzip
unzip metasploitable-linux-2.0.0.zip
cd Metasploitable2-linuxEt une fois dedans je convertis le .vmdk en .qcow2 :
qemu-img convert -f vmdk Metasploitable.vmdk -O qcow2 Metasploitable.qcow2
mv Metasploitable.qcow2 ../
sudo nano /etc/pve/qemu-server/ID_DE_LA_VM.conf
ide0: file=local:1010/Metasploitable2.qcow2,size=32G
nano /etc/pve/storage.cfg
Une fois tout cela fait, il suffit seulement de lancer la VM et tout marche.
Le user et le mot de passe de base pour se login est msfadmin.
Je peux donc maintenant lancer un scan sur Openvas sur ma machine vulnérable pour voir si cela détecte bien des vulnérabilités.
Je me rends alors sur mon interface web d’openvas, dans Configuration puis dans Targets. Une fois sur la page, je vais cliquer sur le carré en haut à gauche pour créer une nouvelle target.
Ensuite je vais renseigner le nom de cible et son IP :
Une fois le scan terminé, je clique sur report pour avoir un rapport plus détaillé :
Je peux donc voir combien de failles possède ma machine et si je clique sur la date, j’ai un rapport encore plus détaillé avec chaque faille, leur impact sur la machine, comment patcher la vulnérabilité, leur référence CVE si s’en est une, etc …
Voici quelques exemples :
Il ne me reste plus qu’à installer Auditbeat sur tous mes endpoints. Comme évolution possible je peux intégrer un environnement de pen-test, cela pourrait permettre d’améliorer la sécurité et de tester la robustesse des défenses.
.
.
.