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 ?

5voto

ccpizza Points 1294

L'exécution d'un programme sous un autre utilisateur utilisera les fichiers de configuration de cet utilisateur et non les vôtres.

Voici une solution qui ne nécessite pas de modifier les règles du pare-feu, et qui fonctionne sous le même utilisateur (via sudo ) avec un environnement modifié, où votre utilisateur est my_user et l'application que vous voulez exécuter est my_app :

# run app without access to internet
sudo unshare -n sudo -u my_user my_app

Pour plus de détails, voir man unshare y cette réponse .

Pare-feu Linux GUI

Si vous recherchez un pare-feu graphique, j'ai eu de bons résultats avec OpenSnitch - il n'est pas encore dans les dépôts ubuntu et je ne l'appellerais pas le niveau de production, mais en suivant les étapes de construction de l'article github a fonctionné pour moi.

3voto

user141987 Points 39

@psusi : J'aimerais vraiment que les gens ne colportent pas des informations mauvaises et inutiles. IPTables permet de le faire, donc je ne considère pas cela comme "téméraire". Dire simplement "NON" sans comprendre un cas d'utilisation est quelque peu étroit d'esprit. http://www.debian-administration.org/article/120/Application_level_firewalling

EDIT bodhi.zazen

NOTE - CETTE OPTION A ÉTÉ SUPPRIMÉE D'IPTABLES EN 2005, 8 ANS AVANT QUE CETTE RÉPONSE NE SOIT POSTÉE.

VOIR - http://www.spinics.net/lists/netfilter/msg49716.html

commit 34b4a4a624bafe089107966a6c56d2a1aca026d4 Author: Christoph Hellwig Date : Sun Aug 14 17:33:59 2005 -0700

[NETFILTER] : Suppression de l'abus de tasklist_lock dans ipt{,6}owner

Suppression de la correspondance cmd/sid/pid car elle est cassée et non réparable. et se tient dans la de verrouiller les modifications apportées à tasklist_lock.

Signed-off-by: Christoph Hellwig <hch@xxxxxx>
Signed-off-by: Patrick McHardy <kaber@xxxxxxxxx>
Signed-off-by: David S. Miller <davem@xxxxxxxxxxxxx>

3voto

mdonatas Points 833

J'ai trouvé la solution affichée aquí pour être un bon. Il s'agit de créer un groupe d'utilisateurs pour lequel l'accès à internet est autorisé et de configurer les règles du pare-feu pour n'autoriser l'accès qu'à ce groupe. Le seul moyen pour une application d'accéder à l'internet est qu'elle soit exécutée par un membre de ce groupe. Vous pouvez exécuter des programmes sous ce groupe en ouvrant un Shell avec sudo -g internet -s .

Pour récapituler ce qui est dans le post que j'ai lié ci-dessus :

  1. Créer le groupe "internet" en tapant ce qui suit dans un Shell : sudo groupadd internet

  2. Assurez-vous que l'utilisateur qui exécutera le script ci-dessous est ajouté à la liste des utilisateurs. sudo groupe en /etc/group . Si vous finissez par modifier ce fichier, alors vous devrez vous déconnecter et vous reconnecter avant que le script ci-dessous ne fonctionne.

  3. Créez un script contenant ce qui suit, et exécutez-le :

    #!/bin/sh
    # Firewall apps - only allow apps run from "internet" group to run
    
    # clear previous rules
    sudo iptables -F
    
    # accept packets for internet group
    sudo iptables -A OUTPUT -p tcp -m owner --gid-owner internet -j ACCEPT
    
    # also allow local connections
    sudo iptables -A OUTPUT -p tcp -d 127.0.0.1 -j ACCEPT
    sudo iptables -A OUTPUT -p tcp -d 192.168.0.1/24 -j ACCEPT
    
    # reject packets for other users
    sudo iptables -A OUTPUT -p tcp -j REJECT
    
    # open a shell with internet access
    sudo -g internet -s
  4. En exécutant le script ci-dessus, vous aurez un script dans lequel vous pourrez exécuter des applications avec un accès internet.

Notez que ce script ne fait rien pour sauvegarder et restaurer vos règles de pare-feu. Vous pouvez modifier le script afin d'utiliser la fonction de sauvegarde et de restauration des règles du pare-feu. iptables-save y iptables-restore Shell.

1voto

Chicob13 Points 13

Essayez Fleur de léopard . Il dispose d'une interface graphique et de restrictions par application.

1voto

Panther Points 96601

Pour le meilleur ou pour le pire, Linux utilise une approche différente. Il n'existe pas d'interface graphique simple pour offrir cette fonctionnalité. Il existe de nombreuses discussions sur ce sujet sur Internet et vous pouvez trouver des discussions intéressantes si vous effectuez une recherche sur Google. Bien que les débats soient intéressants, il n'y a pas eu à ce jour de groupe de programmeurs dédiés souhaitant écrire et maintenir cette fonctionnalité.

Les outils qui offrent cette fonctionnalité sous Linux sont Apparmor, Selinux et Tomoyo.

Aucun de ces outils n'est excessivement facile à apprendre et tous présentent des avantages et des inconvénients. Personnellement, je préfère SELinux, bien que la courbe d'apprentissage de SELinux soit plus raide.

Voir :

http://www.linuxbsdos.com/2011/12/06/3-application-level-firewalls-for-linux-distributions/

Il y avait (il y a) une application qui a déjà été référencée, leopardflower. Je ne suis pas sûr de son statut / maintenance.

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