Présentation de secimport
secimport est une boîte à outils de sécurité reposant sur la technologie eBPF. Elle permet d'appliquer un contrôle granulaire sur les appels système effectués par chaque module Python, offrant ainsi une isolation et une restriction précise des privilèges.
Architecture du dépôt
Le dépôt est organisé de manière modulaire. Voici la disposition des répertoires et fichiers principaux :
secimport/
├── workflows/ # Pipelines CI/CD et intégrations
├── containers/ # Fichiers de conteneurisation
├── documentation/ # Ressources documentaires
├── demonstrations/ # Cas d'usage pratiques
├── utilitaires/ # Scripts auxiliaires
├── noyau/ # Code source principal de secimport
├── tests_unitaires/ # Suite de tests
├── .gitignore
├── hooks_pre_commit.yaml
├── LICENCE
├── README.md
├── SECURITE.md
├── bac_a_sable_seccomp.sh
├── verrou_poetry.lock
├── regles_securite.json
├── regles_securite.yaml
├── configuration_projet.toml
└── appels_sys_autorises.txt
Chaque élément joue un rôle spécifique dans l'écosystème du projet :
- workflows/ : contient les configurations d'automatisation pour l'intégration et le déploiement continus.
- containers/ : regroupe les définitions d'images et les scripts liés à la conteneurisation de l'outil.
- documentation/ : héberge les guides, tutoriels et références techniques.
- demonstrations/ : fournit des exemples concrets d'utilisation de secimport dans différents scénarios.
- utilitaires/ : rassemble des scripts facilitant diverses tâches de maintenance et de déploiement.
- noyau/ : implémente la logique centrale du projet en Python.
- tests_unitaires/ : valide le comportement et la fiabilité du code.
- bac_a_sable_seccomp.sh : met en place un enviornnement d'isolation via nsjail avec filtres seccomp.
- regles_securite.json / regles_securite.yaml : définissent les politiques de contrôle des appels système.
- appels_sys_autorises.txt : énumère les appels système explicitement permis.
Points d'entrée et exécution
L'interaction avec secimport s'effectue principalement via une interface en ligne de commande. Les modules clés responsables du démarrage sont :
- noyau/interface_cli.py : point d'accès principle qui interprète les arguments passés en ligne de commande et route vers les fonctionnalités correspondantes.
- noyau/session_interactive.py : offre un terminal interactif permettant de surveiller en temps réel l'activité des modules et de construire des règles de sécurité à la volée.
- noyau/traceur_syscalls.py : capture les appels système d'un processus Python afin de générer automatiquement un profil de sécurité.
Pour lancer l'outil en ligne de commande :
python -m noyau.interface_cli [--drapeaux] SOUS_COMMANDE [arguments]
Pour démarrer une session interactive de suivi :
python -m noyau.session_interactive
Fichiers de configuration et politiques de sécurité
secimport s'appuie sur des fichiers de configuration déclaratifs pour établir ses règles de sécurité. Les formats JSON et YAML sont pris en charge. Ces fichiers permettent de spécifier précisément quels appels système sont autorisés ou interdits.
Exemple de fichier de politique au format YAML :
# regles_securite.yaml
schema_version: 1
comportement_defaut:
decision: autoriser
regles:
- syscall: lecture
decision: autoriser
- syscall: ecriture
decision: autoriser
- syscall: ouverture
decision: autoriser
# Règles supplémentaires...
Dans cette configuration, schema_version indique la version du format utilisé. Le champ comportement_defaut définit l'action par défaut appliquée à tout appel système non explicitement couvert par une règle. La section regles contient les directives spécifiques, chacune associant un appel système à une décision (autoriser ou refuser).
Cette approche déclarative offre une grande souplesse pour adapter les politiques de sécurité aux exigences de chaque environnement d'exécution.