Voici ce à quoi j'ai pensé. Proposez-moi mieux, plus simple, de déjà existant... Partagez vos idées !
Au lancement du service (qu'il nous faut écrire ;) :
- changer netns de tous les processus ayant un exe dans leur proc pour NONET (aucune interface déclarée)
- création de tous les netns nécessaires pour la configuration
- appliquer la configuration avec un processus de surveillance :
Fichier de configuration :
# création des alias interfacealias <aliasif name> <interface>
# affection des ns aux groupes d'applications
grp [<parent grp name>:[<parent grp name>:[..]]]<grp name> <exe path> \[+<checker function> [+<checker function> [..]]]\[<aliasif name> [<aliasif name> [..]]]|IDEM \[LOCKDOWN]
Exemple :
aliaslocal enp3s0
alias net eno1
grp Ping /bin/ping local net
grp Eclipse /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java +checkEclipse local
grp Eclipse:Python3 /usr/bin/python3 local net
grp Eclipse:Python3:* * local
Le processus de surveillance réalise les opérations suivantes (ttes les n secondes) :
liste l'ensemble des processus en cours :
si le processus considéré est déjà enregistré alors ne fait rien.
sinon enregistre le processus :
recherche dans /proc/<pid>/exe et s'il le trouve récupère le chemin pointé (ex : /usr/bin/python3)
recherche dans les chemins en conf une correspondance non bloquée (bloquée = LOCKDOWN) et validée (tous les routines de vérification sont satisfaites comme +checkEclipse dans l'exemple) (ex : -> Eclipse:Python3)
la chaine des parents doit être reconstruite (ex : le processus Python possède-t-il comme parent Eclipse ? ie le PPID du processus Python appartient-il au groupe Eclipse ?)
si non, alors on ne fait rien de plus
si oui, alors on poursuit ainsi de suite jusqu'au premier parent. Si c'est le dernier parent qui a été considéré alors :
on déplace le processus Python dans le netns correspondant.
Si parmi la liste des processus enregistrés certains n'existent plus, alors ils sont retirés de la liste.
# Idée de daemon
Posté par minitchoup . En réponse au message Comment interdire par défaut, l'accès aux réseaux pour toutes les applications ?. Évalué à 3. Dernière modification le 04 octobre 2019 à 18:44.
Voici ce à quoi j'ai pensé. Proposez-moi mieux, plus simple, de déjà existant... Partagez vos idées !
Au lancement du service (qu'il nous faut écrire ;) :
- changer netns de tous les processus ayant un exe dans leur proc pour NONET (aucune interface déclarée)
- création de tous les netns nécessaires pour la configuration
- appliquer la configuration avec un processus de surveillance :
Fichier de configuration :
Exemple :
Le processus de surveillance réalise les opérations suivantes (ttes les n secondes) :
Si parmi la liste des processus enregistrés certains n'existent plus, alors ils sont retirés de la liste.