Portfolio
Mayoussier Lucas

Mise en place d'un SOC

Au vu du contexte GSB, j’ai mis en place un SOC afin de sécuriser tout mon parc informatique. Voici comment j’ai fait :
Tout d’abord, mon SOC contient 2 machines principales : ma première machine sous Ubuntu 24.04 qui contient OpenVas, qui est mon scanner de vulnérabilités, la suite ELK qui sera mon SIEM, une machine vulnérable qui est Metasploitable 2.
Pour commencer, j’installe OpenVas sur mon Ubuntu via un script d’installation :
Je commence par mettre à jour puis upgrade mon système.
Après, je clone un repo github qui contient les scripts d’installation d’openvas :
git clone https://github.com/iachievedit/build_openvas
Puis, je me rends dans le dossier de l’installation et je lance le script d’installation :
cd build_openvas
time ./install.sh
Après un certain temps, selon la configuration de la machine, le script se termine et je peux lancer le deuxième script qui permet de lancer tous les services d’openvas :
cd scripts/
./99_start.sh
Une fois le script terminé, je reviens en arrière dans l’arborescence des fichiers :
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
Une fois que je connais le Mot de Passe, je peux alors me rendre sur mon interface web d’OpenVas :
ip_du_serveur:9392
Et 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.

Puis, dans Scans et Tasks pour lancer notre première analyse. Mais avant ça, je vais mettre en place une machine vulnérable pour être sûr d’avoir des vulnérabilités sur la machine que je vais scanner.

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 update
Puis 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
Après l’installation, je vais vérifier que java est correctement installé en vérifiant sa version :
java -version
Pour être sûr qu’ELK localise bien JAVA, je vais mettre le chemin de la variable d’environnement :
sudo nano /etc/environment
Puis ajouter la ligne :
JAVA_HOME="/usr/lib/jvm/java-11-openjdk-amd64"
Puis, on applique les changements en reloadant l’environnement :
source /etc/environment
Et on vérifie que JAVA_HOME est bien configuré :
echo $JAVA_HOME
Une fois JAVA installé, on va pouvoir installer ElasticSearch.
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.gpg
Puis, 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
Et on update la packages liste pour inclure le nouveau repository d’Elasticsearch :
sudo apt-get update
Puis, on installe elasticsearch :
sudo apt-get install elasticsearch
Quand c’est installé, on lance Elasticsearch et on le configure pour qu’il se lance au démarrage de la machine :
sudo systemctl start elasticsearch
sudo systemctl enable elasticsearch
Il faut maintenant configurer Elasticsearch pour autoriser les accès externes :
sudo nano /etc/elasticsearch/elasticsearch.yml
Et 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
On redémarre Elasticsearch pour appliquer les changements :
sudo systemctl restart elasticsearch
Et 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 :
Ensuite vient l’installation de Logstash :
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
Et on démarre le service et encore une fois on le fait démarrer automatiquement au démarrage :
sudo systemctl start logstash
sudo systemctl enable logstash
Puis, on vérifie le statut du service :
sudo systemctl status logstash
Une fois cela fait, on va installer Kibana. Kibana est l’interface Web qui permet de visualiser les données qui viennent d’elasticsearch.
On installe Kibana avec ces commandes :
sudo apt-get install kibana
Puis, on démarre le service et on le démarre automatiquement au démarrage :
sudo systemctl start kibana
sudo systemctl enable kibana
Pour configurer Kibana pour y accéder, il faut modifier le fichier de configuration :
sudo nano /etc/kibana/kibana.yml
Il 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"]
Et on redémarre Kibana pour appliquer les changements :
sudo systemctl restart kibana
On 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 :
La documentation de l’installation est disponible directement sur le cloud d’Aristee : https://cloud.aristeecampus.org/index.php/s/eKkr2yXz8WNgj3o
Où bien directement sur ce bouton :
Une fois les configurations de sécurités faites, je vais installer auditbeat. C’est ce qui va remonter toutes les logs de mes machines sur mon SIEM.
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;
Puis, je le lance :
chmod 755 install.sh
./install.sh
Ensuite, je modifie le fichier de configuration d’auditbeat :
sudo nano /etc/auditbeat/auditbeat.yml
Et j’active le setup du dashboard :
setup.dashboards.enable: true
Une fois cela fait, je vais tester la config d’autidtbeat pour m’assurer que tout marche :
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
Une fois la config OK, je me rends sur Kibana dans le menu dans Stack Management, Roles et j’en crée un nouveau.
J’attribue le nom : auditbeat-publisher
Comme privilèges : monitor et read_ilm
Comme Index privilèges : Indices: auditbeat-* et Privilèges: create_doc
Une fois le rôle créé, je vais créer un utilisateur :
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
Une fois cela fait, sur Kibana je vais dans Dev Tools puis Console pour créer une clé API pour le user que je viens de créer avec ce script :
POST /_security/api_key/grant
{
  "grant_type": "password",
  "username": "auditbeat-publisher",
  "password": "Aristee.2025",
  "api_key": {
    "name": "auditbeat-publisher"
  }
}
Maintenant, je vais aller dans le fichier de configuration d’auditbeat pour rentrer ma clé API et rajouter mes IP d’host Kibana et Elasticsearch :
sudo nano /etc/auditbeat/auditbeat.yml
Dans 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 :
Puis, je redémarre le service d’auditbeat :
sudo systemctl restart auditbeat
Ensuite, je me rends dans le dashboard de Kibana dans System Overview et je peux voir les logs de ma machine qui remontent :
Une fois auditbeat fonctionnel, je vais mettre en place ma machine vulnérable pour pouvoir effectuer des scans dessus.

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 :

Ici, ne pas choisir d’ISO. Il faut importer la VM déjà pré-faite plus tard directement sur le PVE

Dans Disks bien choisir IDE dans Bus/Device

Puis, je choisis le reste de la configuration selon les capacités de ma machine

Une fois ma machine créée, je me rends dans la console de mon PVE et dedans je rentre les commandes :
cd /var/lib/vz/images
mkdir "ID_DE_LA_MACHINE"
Puis, je télécharge directement l’image :
wget https://sourceforge.net/projects/metasploitable2/files/metasploitable-linux-2.0.0.zip
Une fois le téléchargement fini, j’extrais le .zip avec la commande unzip. Pour utiliser cette commande, il faut au préalable installer le package unzip :
apt install unzip
unzip metasploitable-linux-2.0.0.zip
Je me rends dans le nouveau dossier Metasploitable-Linux
cd Metasploitable2-linux
Et une fois dedans je convertis le .vmdk en .qcow2 :
qemu-img convert -f vmdk Metasploitable.vmdk -O qcow2 Metasploitable.qcow2
Une fois la conversion finie, je déplace l’image .qcow2 dans le dossier qui précède le dossier actuel :
mv Metasploitable.qcow2 ../
Ensuite, je me rends dans le fichier de configuration de ma VM créée juste avant :
sudo nano /etc/pve/qemu-server/ID_DE_LA_VM.conf
Et c’est ici que je renseigne l’image système à utiliser, en rentrant le chemin de mon image qemu :
ide0: file=local:1010/Metasploitable2.qcow2,size=32G
Maintenant, il suffit juste d’aller dans le fichier storage.cfg du PVE pour rajouter la prise en charge des images par proxmox :
nano /etc/pve/storage.cfg
Et rajouter images après backup

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 la cible créée, je me rends dans la section Tasks dans Scans et je vais créer une nouvelle tâche :
Je vais choisir le nom de la tâche, sur quelle cible elle va opérer, si je veux la planifier ou non et pleins d’autres paramètres que l’on peut sélectionner selon les besoins.

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 :

Voilà mon SOC terminé.
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.

.

.

.