75 votes

Comment contrôler l'accès à Internet pour chaque programme ?

Je voudrais utiliser un logiciel pour contrôler quel programme peut se connecter à l'Internet. Je sais que ce comportement est associé au mot "pare-feu", mais certains utilisateurs de Linux sont très contrariés si quelqu'un exige un pare-feu personnel. Je ne veux pas vous contrarier en demandant un tel programme.
Je ne veux pas "sécuriser les ports" ou d'autres trucs qu'un pare-feu personnel promet sur Windows. J'ai regardé dans iptables mais il ne répond pas à mes exigences.

J'ai vu une excellente réponse ici ( "Comment bloquer l'accès à Internet pour les applications de Wine" ) mais c'est très inconfortable de mettre cela en place.

Existe-t-il un logiciel qui demande à chaque programme s'il peut accéder à l'Internet ?

38voto

ZedTuX Points 633

REMARQUE : Douane n'est plus activement développé et il est signalé qu'il ne fonctionne pas dans les versions ultérieures d'Ubuntu. Cette solution peut ne pas fonctionner, mais la réponse est conservée telle quelle pour des raisons historiques.

Au cas où vous seriez toujours à la recherche de ce type d'application, je suis actuellement en train de développer exactement cette application : http://douaneapp.com/ https://gitlab.com/douaneapp/Douane

Mon application bloque toute application inconnue (les nouvelles versions d'une application autorisée sont bloquées) et vous demande si vous autorisez ou refusez son trafic.

Jetez un coup d'œil au site web ;-)

screen shot

38voto

Tim Points 581

I trouvé une solution pratique qui résout le problème. Vous créez un groupe qui n'est jamais autorisé à utiliser l'Internet et vous lancez le programme en tant que membre de ce groupe.

  1. Créer un groupe no-internet . Faites pas rejoindre ce groupe

    sudo addgroup no-internet
  2. Ajouter une règle à iptables qui empêche tous les processus appartenant au groupe no-internet d'utiliser le réseau (utiliser ip6tables pour empêcher également le trafic IPv6)

    sudo iptables -A OUTPUT -m owner --gid-owner no-internet -j DROP
  3. Exécuter sudo -g no-internet YOURCOMMAND au lieu de YOURCOMMAND .

Vous pouvez facilement écrire un wrapper script qui utilise sudo pour vous. Vous pouvez vous débarrasser de l'invite de mot de passe en ajoutant

%sudo     ALL=(:no-internet)      NOPASSWD: ALL

ou, quelque chose de similaire avec sudo visudo

Utilisez le iptables-save y iptables-restore pour conserver les règles du pare-feu.

11voto

Dimitar II Points 391

Une autre option est firejail . Il exécute l'application dans une sandbox où vous contrôlez si l'application peut voir le réseau :

firejail --net=none firefox

Cette commande permet de lancer le navigateur Firefox sans accès à Internet. Notez que la distribution firejail dans le repo Ubuntu est obsolète - mieux vaut télécharger sa dernière version LTS depuis la page d'accueil de firejail.

6voto

Fabiano Soriani Points 543

Il existe un Perl script dans le forum allemand d'Ubuntu ( Traduit de Google en anglais ) qui semble faire cela. Je ne l'ai jamais essayé et je n'ai pas regardé de plus près le script, mais peut-être que cela fonctionne pour vous. La description est uniquement en allemand, vous aurez donc peut-être besoin d'un service de traduction (comme Google Translate ; voir ci-dessus).

5voto

Dan Blanchard Points 2757

Il existe déjà un pare-feu dans Ubuntu, ufw mais elle est désactivée par défaut. Vous pouvez l'activer et l'utiliser par la ligne de commande ou par son interface, gufw qui peut être installé directement depuis le Centre logiciel Ubuntu.

Si vous avez besoin de bloquer l'accès Internet à une application spécifique, vous pouvez essayer de Fleur de léopard qui est toujours en version bêta et n'est pas disponible dans le Centre logiciel Ubuntu :

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X