Skip to content

TP3B Part4 - E. IDS

1. Intro

Un détecteur d'intrusion ou IDS (Intrusion Deteciton System) est un outil qui permet de surveiller un système afin de détecter de l'activité suspecte.

Qu'est-ce qui est suspect ? C'est plutôt large, et ça dépend pas mal de l'environnement.

Mais y'a des trucs qu'on peut considérer comme un peu évident. Ptit exemple :

  • là on prépare un template harden de VM
  • donc une fois déployé, y'a des trucs qui sont pas CENSÉS être touchés puisque déjà configurés aux ptits oignons
  • genre le fichier /etc/ssh/sshd_config
  • si la moindre interaction est demandé avec ce fichier, c'est suspect
  • nan ?
Note

Ce template de VM pourrait servir à déployer tout et n'importe quoi : un serveur web, une db, un serveur de jeu, peu importe.
A quel moment un serveur web a besoin de toucher à /etc/ssh/sshd_config ? A part permettre à un hacker d'accéder au fichier ?

Nous on va utiliser un IDS qui s'appelle AIDE : il est ultra simpliste, donc ça se prête bien à un ptit TP.

2. Setup simple

🌞 Installer l'IDS AIDE

  • y'a un paquet officiel

🌞 Proposer une conf AIDE

  • il doit surveiller de façon adéquate :

    • la conf SSH
    • la conf sysctl

🌞 Initialiser la base de données AIDE

  • AIDE doit créer une base de données avant de pouvoir être utilisé

    • il va stocker les infos actuelles des fichiers
    • ça lui permettra de pouvoir détecter plus tard s'ils ont changé
  • ça se fait en une commande !

🌞 Jouer avec les tests d'intégrité AIDE

  • utilisez une commande AIDE pour faire un test d'intégrité

    • aucune différence ne devrait être levée
  • modifiez un des fichiers surveillés, et relancer un test

    • AIDE devrait signifier que le fichier a été touché

3. Automated

AIDE n'a aucune mécanique native pour être lancé à intervalles réguliers.
Et on va se pointer toutes les heures pour faire lancer une commande et faire un test.

On va donc créer le nécessaire pour qu'un test AIDE se lance à intervalles réguliers.

🌞 Créer un service systemd pour lancer un test AIDE

  • il faut créer un fichier dans /etc/systemd/system/
  • vous le nommerez aide-test.service
  • exemple de contenu minimal :
[Unit]
Description=Run an AIDE integrity check

[Service]
# On met oneshot en type : ça indique que ce sera pas un service qui va run en permanence, mais un truc ponctuel (il se lance puis se termine)
Type=oneshot

# En ExecStart on met la commande qui sera exécutée quand on fait un `systemctl start`
# Mettez le chemin absolu vers la commande
ExecStart=<commande_pour_un_test_AIDE>

# Ptit tip pour que le service reste indiqué comme "actif" même après qu'il soit terminé
RemainAfterExit=true

[Install]
WantedBy=multi-user.target

🌞 Indiquer à systemd qu'on a modifié les services

  • dès qu'on modifie un service, faut l'indiquer à systemd
  • go balancer :
sudo systemctl daemon-reload

🌞 Tester le service

  • go faire un systemctl start aide-test
  • le résultat de la commande est dans les logs du service, donc :

    • systemctl status aide-test (que les dernières lignes)
    • et journalctl -xe -u aide-test

🌞 Créer un timer systemd

  • créez le fichier aide-test.timer à côté du .service
  • un test AIDE doit être déclenché 1 fois toutes les heures

4. Bonus : Alerte Discord

Ptit bonus : quand un changement est détecté, une alerte Discord est reçue.

Pour ce faire, il va falloir :

  • créer un ptit script shell (~10 lignes) qui :

    • lance un test AIDE
    • s'il le test retoure un truc, il envoie un message Discord (un curl)
    • l'URL du webhook Discord est lu dans la variable AIDE_WEBHOOK_URL
    • la variable sera définie peut être différemment pour chaque machine
  • modifier le service aide-test :

    • il lance le script au lieu d'une commande AIDE directement

Proposer un setup qui permet de recevoir des alertes Discord

  • donc le script et le service systemd mis à jour
  • invitez-moi dans votre serv Discord que je vois les alertes :)

Go next

Finally create and deploy your template !