Solution 1 :
La solution pour moi s'est avérée simple.
- Créer, valider un nouveau groupe; ajoutez les utilisateurs requis à ce groupe :
- Créer :
groupadd no-internet
- Valider :
grep no-internet /etc/group
- Ajouter un utilisateur :
useradd -g no-internet username
Remarque :Si vous modifiez un utilisateur déjà existant, vous devez exécuter :usermod -a -G no-internet userName
vérifier avec :sudo groups userName
- Créer :
- Créer un script dans votre chemin et rendez-le exécutable :
- Créer :
nano /home/username/.local/bin/no-internet
- Exécutable :
chmod 755 /home/username/.local/bin/no-internet
- Contenu :
#!/bin/bash
sg no-internet "[email protected]"
- Créer :
- Ajouter une règle iptables pour avoir abandonné l'activité du réseau pour le groupe pas d'internet :
iptables -I OUTPUT 1 -m owner --gid-owner no-internet -j DROP
Remarque :N'oubliez pas de rendre les modifications permanentes, afin qu'elles soient appliquées automatiquement après le redémarrage. Cela dépend de votre distribution Linux.
4. Vérifiez-le, par exemple sur Firefox en exécutant :
no-internet "firefox"
Au cas où vous voudriez faire une exception et autoriser un programme à accéder au réseau local :
iptables -A OUTPUT -m owner --gid-owner no-internet -d 192.168.1.0/24 -j ACCEPT
iptables -A OUTPUT -m owner --gid-owner no-internet -d 127.0.0.0/8 -j ACCEPT
iptables -A OUTPUT -m owner --gid-owner no-internet -j DROP
REMARQUE : En cas de ponte les règles seront maintenues. Par exemple, si vous exécutez un programme avec pas d'internet règle et ce programme ouvrira la fenêtre du navigateur, les règles seront toujours appliquées.
Solution 2 :
Une possibilité plus simple :utilisez firejail . Il exécute l'application à l'intérieur du bac à sable. Dans le bac à sable, vous pouvez contrôler l'accès de l'application à n'importe quel réseau ou dossier de votre ordinateur.
Pour exécuter une certaine application sans accès au réseau, procédez comme suit :
firejail --net=none <application>
Dans ce cas, "Le bac à sable ressemble à un ordinateur sans aucune interface réseau." (Voir la section Réseau dans la documentation)
Par exemple, firejail --net=none firefox
démarrera firefox sans aucune connexion réseau.
Installation
Voir la documentation d'installation. Vous devez installer à partir du système de paquets de votre distribution, ou mieux obtenir la dernière version LTS. (Par exemple, cette dernière version LTS, 9.56.2
, fonctionne également dans Ubuntu 16.04.)