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

46

J'aimerais utiliser un logiciel pour contrôler quel programme peut se connecter à Internet. Je sais que ce comportement est associé au mot "pare-feu", mais certains utilisateurs de Linux sont très mécontents si quelqu'un demande un pare-feu personnel. Je ne veux pas vous contrarier par la demande d'un tel programme.
Je ne veux pas "sécuriser les ports" ou tout autre élément que promet un pare-feu personnel sous Windows. J'ai regardé dans iptables mais cela ne correspond pas à mes besoins.

J'ai trouvé une excellente réponse ici ( "Comment bloquer l'accès à Internet pour les applications de vin ") mais il est très inconfortable de configurer cela.

Existe-t-il un logiciel demandant chaque programme s’il peut accéder à Internet?

    
posée guerda 25.05.2011 - 11:30
la source

11 réponses

6

Il y a un script Perl dans le forum allemand Ubuntu ( Traduit par Google en anglais ) qui semble le faire. 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 en allemand uniquement, vous pouvez donc avoir besoin d'un service de traduction (comme Google Translate, voir ci-dessus).

    
réponse donnée Florian Diesch 25.05.2011 - 13:02
la source
29

Si vous recherchez toujours ce type d’application, je suis en train de développer cette application: lien

Mon application bloque toutes les applications inconnues (les nouvelles versions d’une application autorisée sont bloquées) et vous demande si vous autorisez ou refusez son trafic.

Consultez le site Web ;-)

    
réponse donnée ZedTuX 08.08.2013 - 19:56
la source
16

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

  1. Créez un groupe no-internet . Ne pas rejoindre ce groupe.
  2. Ajoutez une règle iptables -A OUTPUT -m owner --gid-owner no-internet -j DROP aux tables ip qui empêchent tous les processus appartenant au groupe no-internet d'utiliser le réseau.
  3. Exécutez sudo -g no-internet YOURCOMMAND au lieu de YOURCOMMAND .

Vous pouvez facilement écrire un script wrapper 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 à votre /etc/sudoers .

    
réponse donnée Tim 19.02.2014 - 13:17
la source
4

Il existe déjà un pare-feu dans Ubuntu, mais il est désactivé par défaut. Vous pouvez l'activer et l'utiliser par la ligne de commande:

lien

Ou vous pouvez utiliser un programme avec une interface graphique dessus, gufw, qui peut être installé directement depuis le logiciel Ubuntu:

lien

Si vous devez bloquer l’accès à Internet à une application spécifique, vous pouvez essayer ce programme qui est toujours en version bêta et qui n’est pas disponible dans le Centre logiciel Ubuntu:

lien

    
réponse donnée heiko81 23.12.2011 - 15:30
la source
3

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

Voici une solution qui ne nécessite pas de modifier les règles de pare-feu et s'exécute sous le même utilisateur (via sudo ) avec un environnement modifié, où votre utilisateur est my_user et l'application que vous souhaitez 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, consultez man unshare .

    
réponse donnée ccpizza 13.02.2017 - 22:34
la source
3

@psusi: Je souhaite vraiment que les gens ne vendent pas des informations mauvaises et inutiles. Les IPTables permettent de le faire, donc je ne le considère guère comme "imprudent". Le simple fait de dire "NON" sans comprendre un cas d'utilisation est un peu étroit. lien

EDIT bodhi.zazen

NOTE - CETTE OPTION A ETE RETIREE DES IPTABLES EN 2005, 8 ANS AVANT CETTE REPONSE A ETE PUBLIEE

VOIR - lien

  

commit 34b4a4a624bafe089107966a6c56d2a1aca026d4 Auteur: Christoph   Hellwig Date: dim août 14 17:33:59 2005 -0700

     

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

     

Extraire les correspondances cmd / sid / pid car leur non-joignable est cassé et se trouve dans la       manière de verrouiller les modifications apportées à tasklist_lock.

Signed-off-by: Christoph Hellwig <[email protected]>
Signed-off-by: Patrick McHardy <[email protected]>
Signed-off-by: David S. Miller <[email protected]>
    
réponse donnée user141987 20.03.2013 - 14:36
la source
2

J'ai trouvé que la solution affichée ici était bonne. Cela implique la création d'un groupe d'utilisateurs pour lequel l'accès à Internet est autorisé et la configuration de règles de pare-feu pour autoriser l'accès uniquement à ce groupe. La seule façon pour une application d'accéder à Internet est si elle est 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 que contient l'article que j'ai lié ci-dessus:

  1. Créez 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é au groupe sudo dans /etc/group . Si vous modifiez ce fichier, vous devrez vous déconnecter et vous reconnecter avant que le script ci-dessous ne fonctionne.

  3. Créez un script contenant les éléments suivants 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 shell dans lequel vous pourrez exécuter des applications avec accès à Internet.

Notez que ce script ne fait rien pour enregistrer et restaurer vos règles de pare-feu. Vous souhaiterez peut-être modifier le script pour utiliser les commandes iptables-save et iptables-restore shell.

    
réponse donnée Mark 26.08.2015 - 21:12
la source
1

Pour le meilleur et pour le pire, Linux utilise une approche différente. Il n'y a pas d'interface graphique simple pour offrir cette fonctionnalité. Il y a beaucoup de discussions sur ce sujet sur Internet et vous pouvez trouver des discussions intéressantes si vous recherchez Google. Bien que le débat soit intéressant, il n’ya pas eu à ce jour de groupe dédié de programmeurs 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 trop facile à apprendre et tous présentent des avantages et des inconvénients. Personnellement, je préfère SELinux, même si SELinux a une courbe d'apprentissage plus raide.

Voir:

lien

Une application a déjà été référencée, leopardflower. Je ne suis pas sûr du statut / de la maintenance.

    
réponse donnée Panther 20.03.2013 - 18:06
la source
1

C'était dans iptables jusqu'à la version 2.6.24 du noyau Si vous utilisez une machine 2.x - 2.6.24 et que votre noyau est conforme, vous pouvez le faire. pour une raison quelconque, ils l'ont sorti, donc non ce n'est pas Microsoft. lien

    
réponse donnée not really 09.09.2013 - 06:11
la source
1

Essayez Fleur de léopard . Il a une interface graphique et des restrictions par application.

    
réponse donnée brand 13.12.2011 - 10:55
la source
0

Non, ce n'est pas possible. Cela ne fait pas non plus partie de la définition traditionnelle du pare-feu. C'est quelque chose que Microsoft a trouvé assez récemment dans une tentative de papier sur leurs problèmes de sécurité de système d'exploitation fondamentalement cassés. Il est considéré comme imprudent et impraticable dans la communauté Linux, car un programme non autorisé peut simplement exécuter un autre programme qui est ainsi accessible.

Si vous n'aimez pas ce qu'un programme fait sur le réseau lorsque vous l'exécutez, n'exécutez pas ce programme.

    
réponse donnée psusi 25.05.2011 - 15:35
la source

Lire d'autres questions sur les étiquettes