383 lines
13 KiB
Markdown
383 lines
13 KiB
Markdown
# Audit SUID GUID Linux
|
|
|
|
## Version Shell
|
|
### Installation
|
|
|
|
Copier audit-suid.sh
|
|
|
|
Exemple:
|
|
```
|
|
cp audit-suid.sh /usr/local/bin/audit-suid.sh
|
|
chmod +x /usr/local/bin/audit-suid.sh
|
|
```
|
|
### Exécution
|
|
```
|
|
# Exécuter avec les droits root
|
|
sudo /usr/local/bin/audit-suid.sh
|
|
```
|
|
|
|
### Planification avec cron
|
|
```
|
|
# Audit quotidien à 2h du matin
|
|
sudo crontab -e
|
|
# Ajouter la ligne :
|
|
0 2 * * * /usr/local/bin/audit-suid.sh
|
|
```
|
|
|
|
### Personalisation
|
|
|
|
Modifier le fichier ```/etc/audit/suid_whitelist.conf``` pour ajouter vos propres binaires légitimes.
|
|
|
|
Ce script vous aidera à maintenir la sécurité de vos serveurs Linux en identifiant rapidement les risques potentiels liés aux permissions SUID/SGID.
|
|
|
|
## Version Python
|
|
### Installation
|
|
|
|
Copier ```audit-suid.py```
|
|
|
|
Exemple:
|
|
|
|
```
|
|
# Sauvegarde du script
|
|
sudo mkdir -p /usr/local/bin/
|
|
sudo cp suid_audit.py /usr/local/bin/audit-suid.py
|
|
sudo chmod +x /usr/local/bin/audit-suid.py
|
|
# Création des répertoires
|
|
sudo mkdir -p /etc/audit /var/log/audit
|
|
```
|
|
|
|
### Utilisation
|
|
```
|
|
# Exécution simple
|
|
sudo python3 audit-suid.py
|
|
|
|
# Avec options
|
|
sudo python3 audit-suid.py --max-depth 15 --no-temp
|
|
|
|
# Aide
|
|
python3 audit-suid.py --help
|
|
|
|
# Exécution avec droits root (obligatoire)
|
|
sudo /usr/local/bin/audit-suid.py
|
|
```
|
|
|
|
### Options disponibles
|
|
Option Description
|
|
|
|
- **--no-temp**: Ne pas vérifier /tmp, /var/tmp, /dev/shm
|
|
- **--no-orphan**: Ne pas vérifier les fichiers orphelins
|
|
- **--no-hash**: Ne pas calculer les hashs MD5 (plus rapide)
|
|
- **--max-depth N**: Profondeur maximale de recherche (défaut: 20)
|
|
- **--log-dir PATH**: Répertoire des logs (défaut: /var/log/audit)
|
|
- **--whitelist PATH**: Fichier JSON de whitelist
|
|
|
|
### Cron
|
|
```
|
|
# Éditer crontab
|
|
sudo crontab -e
|
|
|
|
# Ajouter pour une exécution quotidienne à 2h
|
|
0 2 * * * /usr/local/bin/audit-suid.py --no-hash
|
|
|
|
# Exécution hebdomadaire avec tous les contrôles
|
|
0 3 * * 0 /usr/local/bin/audit-suid.py
|
|
```
|
|
### Format du fichier de whitelist (JSON)
|
|
|
|
```json
|
|
{
|
|
"SUID": [
|
|
"/bin/su",
|
|
"/usr/bin/sudo",
|
|
"/usr/bin/passwd"
|
|
],
|
|
"SGID": [
|
|
"/usr/bin/wall",
|
|
"/usr/bin/write"
|
|
]
|
|
}
|
|
```
|
|
|
|
### Exemple d'execution
|
|
```
|
|
root@bv01:~# /usr/local/bin/audit-suid.py
|
|
================================================================================
|
|
SUID/SGID Security Audit Tool - Linux Privilege Scanner
|
|
Début de l'audit: 2026-04-20 13:55:09
|
|
================================================================================
|
|
2026-04-20 13:55:09,631 - INFO - Liste blanche chargée: 20 SUID, 8 SGID
|
|
2026-04-20 13:55:09,631 - INFO - Début de l'audit depuis /
|
|
2026-04-20 13:55:09,686 - INFO - Progression: 10000 fichiers parcourus...
|
|
2026-04-20 13:55:09,736 - INFO - Progression: 20000 fichiers parcourus...
|
|
2026-04-20 13:55:09,786 - INFO - Progression: 30000 fichiers parcourus...
|
|
2026-04-20 13:55:09,858 - INFO - Progression: 40000 fichiers parcourus...
|
|
2026-04-20 13:55:09,919 - INFO - Progression: 50000 fichiers parcourus...
|
|
2026-04-20 13:55:09,981 - INFO - Progression: 60000 fichiers parcourus...
|
|
2026-04-20 13:55:10,036 - WARNING - [ALERTE SUID] /usr/libexec/spice-client-glib-usb-acl-helper (propriétaire: root, groupe: root)
|
|
2026-04-20 13:55:10,038 - WARNING - [ALERTE SUID] /usr/sbin/mount.cifs (propriétaire: root, groupe: root)
|
|
2026-04-20 13:55:10,039 - WARNING - [ALERTE SGID] /usr/sbin/pam_extrausers_chkpwd (propriétaire: root, groupe: shadow)
|
|
2026-04-20 13:55:10,039 - WARNING - [ALERTE SGID] /usr/sbin/unix_chkpwd (propriétaire: root, groupe: shadow)
|
|
2026-04-20 13:55:10,041 - WARNING - [ALERTE SUID] /usr/sbin/pppd (propriétaire: root, groupe: dip)
|
|
2026-04-20 13:55:10,042 - INFO - Progression: 70000 fichiers parcourus...
|
|
2026-04-20 13:55:10,056 - INFO - [OK SGID] /usr/bin/chage
|
|
2026-04-20 13:55:10,057 - WARNING - [ALERTE SUID] /usr/bin/fusermount3 (propriétaire: root, groupe: root)
|
|
2026-04-20 13:55:10,057 - INFO - [OK SGID] /usr/bin/expiry
|
|
2026-04-20 13:55:10,058 - INFO - [OK SGID] /usr/bin/ssh-agent
|
|
2026-04-20 13:55:10,058 - INFO - [OK SUID] /usr/bin/chfn
|
|
2026-04-20 13:55:10,059 - INFO - [OK SUID] /usr/bin/passwd
|
|
2026-04-20 13:55:10,059 - INFO - [OK SUID] /usr/bin/gpasswd
|
|
2026-04-20 13:55:10,059 - INFO - [OK SUID] /usr/bin/umount
|
|
2026-04-20 13:55:10,060 - INFO - [OK SUID] /usr/bin/chsh
|
|
2026-04-20 13:55:10,060 - INFO - [OK SUID] /usr/bin/pkexec
|
|
2026-04-20 13:55:10,060 - WARNING - [ALERTE SUID] /usr/bin/su (propriétaire: root, groupe: root)
|
|
2026-04-20 13:55:10,061 - WARNING - [ALERTE SUID] /usr/bin/newgidmap (propriétaire: root, groupe: root)
|
|
2026-04-20 13:55:10,061 - WARNING - [ALERTE SGID] /usr/bin/crontab (propriétaire: root, groupe: crontab)
|
|
2026-04-20 13:55:10,061 - WARNING - [ALERTE SUID] /usr/bin/newuidmap (propriétaire: root, groupe: root)
|
|
2026-04-20 13:55:10,062 - INFO - [OK SUID] /usr/bin/sudo
|
|
2026-04-20 13:55:10,062 - INFO - [OK SUID] /usr/bin/newgrp
|
|
2026-04-20 13:55:10,063 - INFO - [OK SUID] /usr/bin/mount
|
|
2026-04-20 13:55:10,066 - INFO - [OK SUID] /usr/lib/dbus-1.0/dbus-daemon-launch-helper
|
|
2026-04-20 13:55:10,069 - WARNING - [ALERTE SUID] /usr/lib/cockpit/cockpit-session (propriétaire: root, groupe: cockpit-wsinstance)
|
|
2026-04-20 13:55:10,102 - INFO - Progression: 80000 fichiers parcourus...
|
|
2026-04-20 13:55:10,108 - WARNING - [ALERTE SUID] /usr/lib/polkit-1/polkit-agent-helper-1 (propriétaire: root, groupe: root)
|
|
2026-04-20 13:55:10,125 - WARNING - [ALERTE SGID] /usr/lib/x86_64-linux-gnu/utempter/utempter (propriétaire: root, groupe: utmp)
|
|
2026-04-20 13:55:10,136 - INFO - [OK SUID] /usr/lib/openssh/ssh-keysign
|
|
2026-04-20 13:55:10,164 - INFO - Progression: 90000 fichiers parcourus...
|
|
2026-04-20 13:55:10,231 - INFO - Progression: 100000 fichiers parcourus...
|
|
2026-04-20 13:55:10,295 - INFO - Progression: 110000 fichiers parcourus...
|
|
2026-04-20 13:55:10,358 - INFO - Progression: 120000 fichiers parcourus...
|
|
2026-04-20 13:55:10,425 - INFO - Progression: 130000 fichiers parcourus...
|
|
2026-04-20 13:55:10,492 - INFO - Progression: 140000 fichiers parcourus...
|
|
2026-04-20 13:55:10,548 - INFO - Progression: 150000 fichiers parcourus...
|
|
2026-04-20 13:55:10,592 - INFO - Progression: 160000 fichiers parcourus...
|
|
2026-04-20 13:55:10,661 - INFO - Progression: 170000 fichiers parcourus...
|
|
2026-04-20 13:55:10,719 - INFO - Progression: 180000 fichiers parcourus...
|
|
2026-04-20 13:55:10,803 - INFO - Progression: 190000 fichiers parcourus...
|
|
2026-04-20 13:55:10,844 - WARNING - [ALERTE SUID] /home/stef/fake_malware (propriétaire: root, groupe: root)
|
|
2026-04-20 13:55:10,844 - WARNING - [ALERTE SGID] /home/stef/fake_malware (propriétaire: root, groupe: root)
|
|
2026-04-20 13:55:10,879 - INFO - Progression: 200000 fichiers parcourus...
|
|
2026-04-20 13:55:10,965 - INFO - Progression: 210000 fichiers parcourus...
|
|
2026-04-20 13:55:11,032 - INFO - Progression: 220000 fichiers parcourus...
|
|
2026-04-20 13:55:11,103 - INFO - Progression: 230000 fichiers parcourus...
|
|
2026-04-20 13:55:11,194 - INFO - Progression: 240000 fichiers parcourus...
|
|
2026-04-20 13:55:11,278 - INFO - Progression: 250000 fichiers parcourus...
|
|
2026-04-20 13:55:11,360 - INFO - Progression: 260000 fichiers parcourus...
|
|
2026-04-20 13:55:11,419 - INFO - Progression: 270000 fichiers parcourus...
|
|
2026-04-20 13:55:13,947 - INFO - Progression: 280000 fichiers parcourus...
|
|
2026-04-20 13:55:24,686 - INFO - Progression: 290000 fichiers parcourus...
|
|
2026-04-20 13:55:30,602 - INFO - Audit terminé. 296764 fichiers parcourus.
|
|
2026-04-20 13:55:30,602 - INFO - Vérification des répertoires temporaires...
|
|
2026-04-20 13:55:30,603 - INFO - Recherche des fichiers orphelins...
|
|
2026-04-20 13:55:51,232 - INFO - Rapport texte généré: /var/log/audit/report_20260420_135509.txt
|
|
2026-04-20 13:55:51,232 - INFO - Rapport JSON généré: /var/log/audit/audit_20260420_135509.json
|
|
2026-04-20 13:55:51,232 - INFO - Rapport CSV généré: /var/log/audit/audit_20260420_135509.csv
|
|
2026-04-20 13:55:51,232 - INFO - Alertes sauvegardées: /var/log/audit/alerts_20260420_135509.txt
|
|
|
|
================================================================================
|
|
RÉSUMÉ DE L'AUDIT
|
|
================================================================================
|
|
Log complet: /var/log/audit/audit_20260420_135509.log
|
|
Rapport détaillé: /var/log/audit/report_20260420_135509.txt
|
|
Rapport JSON: /var/log/audit/audit_20260420_135509.json
|
|
Rapport CSV: /var/log/audit/audit_20260420_135509.csv
|
|
Alertes: /var/log/audit/alerts_20260420_135509.txt
|
|
Whitelist: /etc/audit/suid_whitelist.json
|
|
|
|
⚠️ ATTENTION: 15 anomalie(s) détectée(s) !
|
|
- SUID suspects: 10
|
|
- SGID suspects: 5
|
|
- Orphelins: 0
|
|
Consultez les rapports pour plus de détails
|
|
```
|
|
|
|
Extrait du fichier d'audit en json:
|
|
|
|
```json
|
|
{
|
|
"metadata": {
|
|
"timestamp": "2026-04-20T13:55:51.230720",
|
|
"hostname": "bv01",
|
|
"system": "Linux 6.8.0-110-generic",
|
|
"total_files_audited": 29,
|
|
"total_alerts": 15
|
|
},
|
|
"alerts": [
|
|
{
|
|
"path": "/usr/libexec/spice-client-glib-usb-acl-helper",
|
|
"type": "SUID",
|
|
"permissions": "-rwsr-xr-x",
|
|
"owner": "root",
|
|
"group": "root",
|
|
"size": 22680,
|
|
"size_human": "22.15 KB",
|
|
"mtime": "2024-04-01 04:49:34",
|
|
"hash_md5": "a26efa9f0fc6fe4b5a8f117c5aa4293b",
|
|
"is_whitelisted": false,
|
|
"alert_level": "WARNING"
|
|
},
|
|
{
|
|
"path": "/usr/sbin/mount.cifs",
|
|
"type": "SUID",
|
|
"permissions": "-rwsr-xr-x",
|
|
"owner": "root",
|
|
"group": "root",
|
|
"size": 52296,
|
|
"size_human": "51.07 KB",
|
|
"mtime": "2025-06-11 04:07:20",
|
|
"hash_md5": "8ee15c6c7135adc98ee4002b1ba3553e",
|
|
"is_whitelisted": false,
|
|
"alert_level": "WARNING"
|
|
},
|
|
...
|
|
...
|
|
{
|
|
"path": "/home/stef/fake_malware",
|
|
"type": "SGID",
|
|
"permissions": "-rwSr-Sr--",
|
|
"owner": "root",
|
|
"group": "root",
|
|
"size": 0,
|
|
"size_human": "0 B",
|
|
"mtime": "2026-04-20 09:12:39",
|
|
"hash_md5": "d41d8cd98f00b204e9800998ecf8427e",
|
|
"is_whitelisted": false,
|
|
"alert_level": "WARNING"
|
|
}
|
|
],
|
|
"all_files": [
|
|
{
|
|
"path": "/usr/libexec/spice-client-glib-usb-acl-helper",
|
|
"type": "SUID",
|
|
"permissions": "-rwsr-xr-x",
|
|
"owner": "root",
|
|
"group": "root",
|
|
"size": 22680,
|
|
"size_human": "22.15 KB",
|
|
"mtime": "2024-04-01 04:49:34",
|
|
"hash_md5": "a26efa9f0fc6fe4b5a8f117c5aa4293b",
|
|
"is_whitelisted": false,
|
|
"alert_level": "WARNING"
|
|
},
|
|
{
|
|
"path": "/usr/sbin/mount.cifs",
|
|
"type": "SUID",
|
|
"permissions": "-rwsr-xr-x",
|
|
"owner": "root",
|
|
"group": "root",
|
|
"size": 52296,
|
|
"size_human": "51.07 KB",
|
|
"mtime": "2025-06-11 04:07:20",
|
|
"hash_md5": "8ee15c6c7135adc98ee4002b1ba3553e",
|
|
"is_whitelisted": false,
|
|
"alert_level": "WARNING"
|
|
},
|
|
{
|
|
"path": "/usr/sbin/pam_extrausers_chkpwd",
|
|
"type": "SGID",
|
|
"permissions": "-rwxr-sr-x",
|
|
"owner": "root",
|
|
"group": "shadow",
|
|
"size": 26944,
|
|
"size_human": "26.31 KB",
|
|
"mtime": "2025-09-15 12:37:15",
|
|
"hash_md5": "c1259cf8990be810f3cfc0d56b914e74",
|
|
"is_whitelisted": false,
|
|
"alert_level": "WARNING"
|
|
},
|
|
{
|
|
"path": "/usr/sbin/unix_chkpwd",
|
|
"type": "SGID",
|
|
"permissions": "-rwxr-sr-x",
|
|
"owner": "root",
|
|
"group": "shadow",
|
|
"size": 31040,
|
|
"size_human": "30.31 KB",
|
|
"mtime": "2025-09-15 12:37:15",
|
|
"hash_md5": "25a6c140f22aa0a844f94b864d8a7c38",
|
|
"is_whitelisted": false,
|
|
"alert_level": "WARNING"
|
|
},
|
|
{
|
|
"path": "/usr/sbin/pppd",
|
|
"type": "SUID",
|
|
"permissions": "-rwsr-xr--",
|
|
"owner": "root",
|
|
"group": "dip",
|
|
"size": 420416,
|
|
"size_human": "410.56 KB",
|
|
"mtime": "2024-04-03 17:56:59",
|
|
"hash_md5": "0b977dc339d7b04e1e2d6cfa6c290da7",
|
|
"is_whitelisted": false,
|
|
"alert_level": "WARNING"
|
|
},
|
|
{
|
|
"path": "/usr/bin/chage",
|
|
"type": "SGID",
|
|
"permissions": "-rwxr-sr-x",
|
|
"owner": "root",
|
|
"group": "shadow",
|
|
"size": 72184,
|
|
"size_human": "70.49 KB",
|
|
"mtime": "2024-05-30 14:52:35",
|
|
"hash_md5": "",
|
|
"is_whitelisted": true,
|
|
"alert_level": "INFO"
|
|
},
|
|
{
|
|
"path": "/usr/bin/fusermount3",
|
|
"type": "SUID",
|
|
"permissions": "-rwsr-xr-x",
|
|
"owner": "root",
|
|
"group": "root",
|
|
"size": 39296,
|
|
"size_human": "38.38 KB",
|
|
"mtime": "2024-04-08 15:57:57",
|
|
"hash_md5": "3498b3d1d373f876ff0d6a4551e01c21",
|
|
"is_whitelisted": false,
|
|
"alert_level": "WARNING"
|
|
},
|
|
{
|
|
"path": "/usr/bin/expiry",
|
|
"type": "SGID",
|
|
"permissions": "-rwxr-sr-x",
|
|
"owner": "root",
|
|
"group": "shadow",
|
|
"size": 27152,
|
|
"size_human": "26.52 KB",
|
|
"mtime": "2024-05-30 14:52:35",
|
|
"hash_md5": "",
|
|
"is_whitelisted": true,
|
|
"alert_level": "INFO"
|
|
},
|
|
{
|
|
"path": "/usr/bin/ssh-agent",
|
|
"type": "SGID",
|
|
"permissions": "-rwxr-sr-x",
|
|
"owner": "root",
|
|
"group": "_ssh",
|
|
"size": 309688,
|
|
"size_human": "302.43 KB",
|
|
"mtime": "2026-03-04 17:55:04",
|
|
"hash_md5": "",
|
|
"is_whitelisted": true,
|
|
"alert_level": "INFO"
|
|
},
|
|
...
|
|
...
|
|
{
|
|
"path": "/home/stef/fake_malware",
|
|
"type": "SGID",
|
|
"permissions": "-rwSr-Sr--",
|
|
"owner": "root",
|
|
"group": "root",
|
|
"size": 0,
|
|
"size_human": "0 B",
|
|
"mtime": "2026-04-20 09:12:39",
|
|
"hash_md5": "d41d8cd98f00b204e9800998ecf8427e",
|
|
"is_whitelisted": false,
|
|
"alert_level": "WARNING"
|
|
}
|
|
]
|
|
}
|
|
```
|