| Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente |
| linux_auditd [2020/02/13 17:59] – nekan | linux_auditd [2021/03/05 20:39] (Version actuelle) – nekan |
|---|
| ~~CLOSETOC~~ | ====== Auditd & Auditbeat - Surveillance système d'un poste linux ====== |
| ====== Auditd ====== | <label type="info">Création</label> --- //[[nekan@shyrkasystem.com|Nicolas THOREZ]] 2020/02/14 14:07// |
| |
| {{ :underconstruction-copy-300x150.jpg |}} | ''auditd'' est quasiment une référence en terme d'audit de système Linux. Il enregistre toutes les informations, actions, des utilisateurs et des services. L'analyse de ces logs permet alors à un administrateur système se savoir précisément ce qu'il s'est passé sur une machine. |
| |
| <note warning>root</note> | <callout type="tip" title="Compatibilité" icon="true">''auditd'' est compatible PCI-DSS.</callout> |
| |
| Prérequis | ''auditd'' est livré avec des outils de gestion tels que : |
| | * ''ausearch'' : permet de chercher des informations dans les logs de ''auditd''. |
| | * ''aureport'' : affiche un rapport (statistique) des données de ''auditd''. |
| |
| * apt-get install -y apt-transport-https dirmngr #openjdk-8-jdk | Les logs de ''auditd'' dépendent des règles appliquées et ces derniers peuvent être assez difficile à comprendre. C'est pour cela, qu'on traitera les données de ''auditd'' au travers de ElasticSearch & Kibana via le plugin ''auditbeat''. |
| |
| Installation Auditd | * Référence : [[https://www.elastic.co/fr/|Elastic]] |
| | * Tutoriel pour l'installation de ElasticSearch & Kibana : **[[linux_elastic_kibana|Lien]]** |
| |
| * apt-get install -y auditd audispd-plugins | <callout type="info" title="Environnement" icon="true">Cette procédure a été réalisée et testée sur une VM debian 9 sur ESXi, une debian 10 sur ESXi et un ubuntu 18.04.4 LTS sur Hyper-V.</callout> |
| |
| Configuration des règles | <callout type="danger" title="Droits" icon="true">Cette procédure nécessite des droits ''root''. Faîtes donc attention à ce que vous faîtes.</callout> |
| |
| # TODO | ===== Installation auditd ===== |
| |
| # Lynis ? | * On met à jour le cache APT : |
| | <sxh bash>apt-get update</sxh> |
| | * On installe les paquets nécessaires : |
| | <sxh bash>apt-get install -y auditd audispd-plugins</sxh> |
| |
| Installation ElasticSearch | ==== Gestion du service ==== |
| |
| * wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add - | * Status : |
| * echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | tee -a /etc/apt/sources.list.d/elastic-7.x.list | <sxh bash>systemctl status auditd.service</sxh> |
| * apt-get update | * Démarrage |
| * apt-get install elasticsearch | <sxh bash>systemctl start auditd.service</sxh> |
| | * Arrêt : |
| | <sxh bash>systemctl stop auditd.service</sxh> |
| |
| Démarrage auto | ==== Configuration des règles ==== |
| * /bin/systemctl daemon-reload | |
| * /bin/systemctl enable elasticsearch.service | |
| |
| Test local | Les règles peuvent être gérées directement via la ligne de commande avec ''auditctl''. Par exemple : |
| * curl -X GET "localhost:9200/?pretty" | |
| |
| Accès extérieur | * L'option ''-l'', liste les règles existantes : |
| * systemctl stop elasticsearch | <sxh bash>auditctl -l</sxh> |
| * nano /etc/elasticsearch/elasticsearch.yml | * L'option ''-D'', supprime toutes les règles existantes : |
| * Décommenter network.host | <sxh bash>auditctl -D</sxh> |
| * Remplacer sa valeur par 0.0.0.0 | * Pour surveiller le fichier /etc/passwd : |
| * Décommenter discovery.seed_hosts | <sxh bash>auditctl -a exit,always -F path=/etc/passwd -F perm=wa</sxh> |
| * Remplacer sa valeur par 0.0.0.0 | |
| * iptables -A INPUT -p tcp -s 10.30.1.81 --dport 9200 -j ACCEPT ##### Paramétrer le firewall | |
| * systemctl start elasticsearch | |
| |
| Test extérieur | Je vous laisse vous référer à la documentation de ''auditd'' pour connaître l'ensemble des commandes. |
| * curl -X GET "10.30.1.79:9200/?pretty" | |
| |
| | Les règles peuvent aussi être inscrites directement dans le fichier de configuration ''/etc/audit/rules.d/audit.rules''. Il existe par ailleurs sur Internet des exemples de fichier de configuration : |
| |
| Installation kibana | * Configuration pour les bonnes pratiques : [[https://github.com/Neo23x0/auditd/blob/master/audit.rules|Neo23x0 sur Github]] |
| * apt-get install -y kibana | * Configuration pour PCI-DSS : [[https://github.com/linux-audit/audit-userspace/blob/master/rules/30-pci-dss-v31.rules|Linux-audit sur Github]] |
| |
| Démarrage automatique | <callout type="tip" title="Redémarrage" icon="true">N'oubliez pas de redémarrer ''auditd'' après chaque modification de règles afin qu'elles soient prise en compte.</callout> |
| * /bin/systemctl daemon-reload | |
| * /bin/systemctl enable kibana.service | |
| * systemctl start kibana | |
| |
| Configuration | ==== Préparation pour l'intégration à auditbeat ==== |
| * systemctl stop kibana | |
| * nano /etc/kibana/kibana.yml | |
| * Décommenter server.host | |
| * Remplacer sa valeur par 0.0.0.0 | |
| * Décommenter elasticsearch.hosts | |
| * Remplacer sa valeur par ["http://0.0.0.0:9200"] | |
| * systemctl start kibana | |
| |
| Installation de auditbeats | Si vous souhaitez n'utiliser que ''auditd'' et ses outils, vous pouvez vous arrêter là. Les données de ''auditd'' sont enregistrées dans le fichier ''/var/log/audit/audit.log''. |
| * apt-get install auditbeat | |
| * systemctl enable auditbeat | |
| |
| | Sinon, il faut préparer ''auditd'' pour qu'il soit piloté par ''auditbeat'' et Kibana. Pour cela : |
| | * On arrête le service : |
| | <sxh bash>systemctl stop auditd.service</sxh> |
| | * On désactive le démarrage automatique de ''auditd'' |
| | <sxh bash>systemctl disable auditd</sxh> |
| |
| | ===== Installation de auditbeat ===== |
| |
| Site web | On peut désormais installer ''auditbeat'' : |
| * http://10.30.1.79:5601 | * A partir des sources ajoutées avec ElasticSearch, on met à jour le dépôt APT : |
| * Aller dans l'onglet SIEM | <sxh bash>apt-get update</sxh> |
| * Cliquer sur Add data | * On installe les paquets nécessaires : |
| * | <sxh bash>apt-get install -y auditbeat</sxh> |
| |
| | ==== Démarrage automatique ==== |
| |
| | <sxh bash>systemctl daemon-reload |
| | systemctl enable auditbeat</sxh> |
| | |
| | ==== Gestion du service ==== |
| | |
| | * Status : |
| | <sxh bash>systemctl status auditbeat.service</sxh> |
| | * Démarrage |
| | <sxh bash>systemctl start auditbeat.service</sxh> |
| | * Arrêt : |
| | <sxh bash>systemctl stop auditbeat.service</sxh> |
| | |
| | ==== Paramétrage des règles ==== |
| | |
| | * On commence par arrêter le service : |
| | <sxh bash>systemctl stop auditbeat.service</sxh> |
| | * Le fichier de configuration de ''auditbeat'' est ''/etc/auditbeat/auditbeat.yml''. |
| | * A l'intérieur, on trouve la section ''Modules configuration'', suivie de ''auditbeat.modules'' et enfin ''module: auditd''. |
| | * C'est là que l'on peux copier les règles inscrites dans le fichier de configuration de ''auditd'' à savoir ''/etc/audit/rules.d/audit.rules''. |
| | * Une fois modifié, on peut vérifier les règles inscrite avec la commande : |
| | <sxh bash>auditbeat show auditd-rules</sxh> |
| | * On peut aussi tester ces règles avec la commande : |
| | <sxh bash>auditbeat -e test config</sxh> |
| | * Si tout va bien, on arrête le test ''CTRL+C'' et on redémarre le service : |
| | <sxh bash>systemctl start auditbeat.service</sxh> |
| | |
| | ==== Configuration pour l'envoi de données à Kibana ==== |
| | |
| | * On édite le fichier de configuration : |
| | <sxh bash>nano /etc/auditbeat/auditbeat.yml</sxh> |
| | * On cherche avec ''CTRL+W'' la section ''setup.kibana'' |
| | * On décommente le champ ''host'' et on modifie sa valeur avec l'adresse du serveur Kibana sans oublier le port. |
| | * On cherche avec ''CTRL+W'' la section ''output.elasticsearch'' |
| | * On décommente le champ ''hosts'' et on modifie sa valeur avec l'adresse du serveur Kibana sans oublier le port. |
| | * On enregistre ''CTRL+O'' et on quitte ''CTRL+X'' |
| | * On redémarre le service : |
| | <sxh bash>systemctl restart auditbeat.service</sxh> |
| | |
| | ===== Intégration à Kibana ===== |
| | |
| | * On commence par ce rendre sur la page web de Kibana. |
| | * Dans le bandeau de gauche, on clique sur le menu ''SIEM'' : |
| | <image shape="thumbnail">{{ :linux:kibana:auditbeat_001.png |}}</image> |
| | * Si la page ''SIEM'' n'a jamais reçu de données, on cliquera sur le gros bouton bleu ''Add Data'' au milieu de la page sinon se bouton se trouve en haut à droite de la page : |
| | <image shape="thumbnail">{{ :linux:kibana:auditbeat_002.png |}}</image> |
| | * Dans la nouvelle page, on clique sur ''Auditbeat'' : |
| | <image shape="thumbnail">{{ :linux:kibana:auditbeat_003.png |}}</image> |
| | * Tout en bas de la page, on clique sur ''Check data'' (ça peut demander quelques minutes depuis la configuration de ''auditbeat'' avant que Kibana ne reçoive des données) : |
| | <image shape="thumbnail">{{ :linux:kibana:auditbeat_004.png |}}</image> |
| | * Si tout va bien, un message nous confirme la réception des données. On peut alors repartir dans le menu ''SIEM'' en cliquant sur le bouton ''SIEM App'' : |
| | <image shape="thumbnail">{{ :linux:kibana:auditbeat_005.png |}}</image> |
| | * Plus bas dans la page de ''SIEM'', on peut voir un graphique statistique des données reçues ainsi que le nombre de données systèmes et réseaux. On pourra alors cliquer sur : |
| | * ''View events'' pour chercher et analyser les données. |
| | * ''View hosts'' pour avoir une analyse par hôte. |
| | * ''View network'' pour avoir une analyse par réseau. |
| | <image shape="thumbnail">{{ :linux:kibana:auditbeat_006.png |}}</image> |
| | * On cliquera donc sur ''View events'' pour analyser nos données. La nouvelle page présente quelques graphiques mais surtout une carte ''Events'' en bas de page. La barre de recherche et les filtres nous permettent alors de trouver les évènements qui nous intéressent. La recherche se fait au moyen du langage ''Kibana Query Language'' (KQL) par défaut mais on peut aussi utiliser le langage ''Lucene''. |
| | <image shape="thumbnail">{{ :linux:kibana:auditbeat_007.png |}}</image> |
| | |
| | <callout type="success" title="Installation" icon="true">Félicitation. Vos données d'audit sont désormais intégrées à Kibana.</callout> |
| | |
| | ===== Interrogation des logs (Cas pratiques) ===== |
| | |
| | L'article suivant donne quelques requête de recherche pour certains cas pratiques (**[[kibana_auditbeat_query|Lien]]**) |
| |
| ~~DISCUSSION~~ | ~~DISCUSSION~~ |
| |