Bonjour,
Tout est dans le titre.
J'aimerais que toutes applications se voient—par défaut—interdites d'accès à toutes les interfaces réseaux.
Un fichier de configuration permettrait de remédier à cela :
ALL_INTERFACES=eno1 enp3s0
# Ping peut accéder aux 2 interfaces
Ping /bin/ping $ALL_INTERFACES
# Eclipse peux accéder qu'à une seule interace
Eclipse /opt/eclipse/java-2019-03/eclipse/eclipse enp3s0
# Python3 (lancé par Eclipse) : idem
Eclipse/Python3 /usr/bin/python3 IDEM
# Tous les processus lancés depuis Eclipse/Python3 : full access
Eclipse/Python3/ALL ALL $ALL_INTERFACES
Alors j'ai vu que la commande 'ip' permettait de faire ça en utilisant les espaces de nom réseau. L'article ici https://lord.re/posts/137-linux-nonet-app/ explique comment interdire l'accès au réseau à une application. C'est un bon début.
Mais il reste beaucoup à faire…
Pouvez-vous m'aider ?
Merci.
# si tu veux couper l'accès réseaux pour TOUTES les applications
Posté par NeoX . Évalué à 0.
et hop, plus de connexion
bon tu peux aussi juste débrancher le câble en fait
[^] # Re: si tu veux couper l'accès réseaux pour TOUTES les applications
Posté par minitchoup . Évalué à -1. Dernière modification le 04 octobre 2019 à 14:31.
Non.
# MAC
Posté par FreeFlight . Évalué à 4.
Tu veux faire du contrôle d'accès obligatoire on dirait.
Regarde du côté de selinux.
[^] # Re: MAC
Posté par minitchoup . Évalué à 2.
Je ne connais pas SELinux. Un peu plus AppArmor… Dans mon exemple je parle d'Eclipse, application pour laquelle je voulais interdire tout accès au net. J'ai dû écrire un profil AppArmor pour cela… Pour moi, c'est vraiment trop compliqué. Alors que le besoin est simple !
Maintenant, pour le cas d'Eclipse, je ne passe plus par AA. Mais bien par la commande "ip netns exec". Je pense que la solution passe par cette commande. Je creuse…
https://manpages.debian.org/unstable/iproute2/ip-netns.8.en.html
[^] # Re: MAC
Posté par deuzene (site web personnel) . Évalué à 4.
Tu peux aussi regarder du côté de Firejail, plutôt une app de sandboxing mais tu peux interdire la connexion.
« Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes. »
# Idée de daemon
Posté par minitchoup . É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.
[^] # Oui mais quand est-il des processus lancés au démarrage (systemd) ?
Posté par minitchoup . Évalué à 3.
Effectivement, tant que le service NetNSAdm (celui qu'il nous faut écrire) n'a pas démarré, il faut qu'aucune application n'est droit d'accès au réseau !
Dans le man de "ip netns" il est dit :
Ok, donc il suffirait d'imposer un nom de domaine réseau (sans accès) au processus init :
Run a systemd unit in a specified network namespace
La suite au prochain épisode…
[^] # Re: Oui mais quand est-il des processus lancés au démarrage (systemd) ?
Posté par minitchoup . Évalué à 3.
Autre méthode (peut-être) : écrire un "hook" qui se charge à la création d'un processus de le positionner dans le NetNS "NO-NET".
Hooking sys_execve on Linux kernel 4.6 or higher
# en plus interactif
Posté par Psychofox (Mastodon) . Évalué à 6.
En plus interactif j'irai plutôt chercher du côté de douane ou opensnitch
# Des choses existent déjà !
Posté par minitchoup . Évalué à 2.
Merci à tous pour vos liens : firejail, douane et OpenSnitch.
Il y a sans doute de bonnes choses à (ap)prendre.
J’essaierai de vous faire un retour.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.