44 votes

Comment bloquer l'accès à Internet pour les applications de vin?

Comment peut-on empêcher des applications de vin spécifiques ou de toutes sortes d'accéder à Internet?

Lors de l'utilisation de certaines applications sous Windows, elles essayaient parfois d'accéder à Internet sans raison apparente. J'ai pu empêcher ce comportement avec un pare-feu personnel à l'époque. Malheureusement, je n'ai pas encore trouvé de pare-feu au niveau de l'application sur Ubuntu. C'est particulièrement ennuyeux lorsque je suis à l'étranger en utilisant l'itinérance des données avec mon modem 3G.

36voto

Phill Pafford Points 245

Il y a un joli tutoriel sur la façon de bloquer n'importe quel programme d'accéder à Internet sur les forums Ubuntu.

Étapes

sudo addgroup no-internet  # Créer le groupe "no-internet"
sudo adduser $USER no-internet  # Ajouter l'utilisateur actuel à no-internet

Règle iptables pour empêcher ce groupe d'accéder au réseau

sudo iptables -I OUTPUT 1 -m owner --gid-owner no-internet -j DROP
sudo ip6tables -I OUTPUT 1 -m owner --gid-owner no-internet -j DROP # Pour bloquer également le trafic IPv6

Processus auxquels vous ne voulez pas accorder l'accès à Internet en utilisant sg ou sudo -g (exécuter une commande avec un ID de groupe différent):

sg no-internet -c "cheminCompletDuProcessus args"

Cela implique essentiellement de créer un nouveau groupe, de lui refuser l'accès à Internet, puis d'exécuter tout programme que vous voulez restreindre en tant qu'ID de groupe. Ainsi, dans votre cas, vous exécuteriez toujours wine en utilisant la méthode décrite dans le tutoriel.

16voto

mark Points 161

Créez un groupe et devenez membre de celui-ci

addgroup wino

adduser $USER wino

Entrez maintenant une règle iptables pour bloquer ce groupe d'utiliser internet vous pouvez taper ceci dans le terminal et appuyer sur entrée

iptables -A OUTPUT -m owner --gid-owner wino -j REJECT

Pour que cette règle s'exécute après chaque redémarrage avec systemd, utilisez iptables-persistent save du package iptables-persistent.

Si vous utilisez rc-local : Vous pouvez mettre la règle dans /etc/rc.local. Assurez-vous que la dernière ligne dans ce fichier texte soit exit 0.

Exemple d'utilisation :

sg wino "wine nomduexecutable.exe"

Vous avez besoin des " " et tapez aussi wine avant le nom du programme.

9voto

mikakun Points 169
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings]
"MigrateProxy"=dword:00000001
"ProxyEnable"=dword:00000001
"ProxyHttp.1.1"=dword:00000000
"ProxyOverride"=""
"ProxyServer"="http://NonExistantProxyAddress:80"
"User Agent"="Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1"

pour ajouter à votre registre de vin (ou des disques virtuels playonlinux) :

solution beaucoup plus simple en effet que d'utiliser des groupes (et n'empêche pas pol de se connecter, juste les applications)

crédits à http://ootput.wordpress.com/2011/06/06/block-wine-applications-from-the-internet/comment-page-1/

EDIT : en attente du geek dans le commentaire pour ajouter des paramètres de registre pour bloquer le TCP, en attendant : http://support.microsoft.com/en-us/kb/154596 (semble que définir les ports à zéro ou créer une erreur de configuration bloquera effectivement les connexions tcp/udp ; mais je n'ai pas encore rencontré ce problème, donc je n'ai pas besoin d'une solution de contournement)

4voto

Hi-Angel Points 3233

Il suffit d'exécuter l'application comme suit :

systemd-run --scope -p IPAddressDeny=any wine myapp.exe

Le IPAddressDeny=… permet de refuser l'accès à un ensemble d'adresses IPv4 et IPv6. La valeur spéciale any désactive l'accès à toutes les adresses pour tous les protocoles basés sur IP, comme TCP, UDP, ICMP, SCTP, etc.

Exemple d'utilisation (note : pour cette démo, j'ai dû corriger wine ping, car cela expirait) :

$ export WINEDEBUG=-all   # supprime les impressions de débogage pour la démo
$ wine ping localhost     # vérifiez que le ping fonctionne
Envoi d'une requête 'ping' sur localhost [127.0.0.1] avec 32 octets de données:
Réponse de 127.0.0.1 : octets=32 temps<1 ms TTL=64
Réponse de 127.0.0.1 : octets=32 temps<1 ms TTL=64
Réponse de 127.0.0.1 : octets=32 temps<1 ms TTL=64
Réponse de 127.0.0.1 : octets=32 temps=1 ms TTL=64

Statistiques Ping pour 127.0.0.1 :
        Paquets : envoyés = 4, reçus = 4, perdus = 0 (0% de perte)
Temps approximatif de cycle aller-retour en millisecondes :
        Minimum = 0 ms, Maximum = 1 ms, Moyenne = 0 ms
$ systemd-run --scope -p IPAddressDeny=any wine ping localhost   # eh bien, plus maintenant
==== AUTHENTIFICATION POUR org.freedesktop.systemd1.manage-units ====
L'authentification est requise pour gérer les services système ou d'autres unités.
Plusieurs identités peuvent être utilisées pour l'authentification :
 1.  constantine
 2.  archie
Choisissez l'identité à authentifier en tant que (1-2) : 1
Mot de passe :
==== AUTHENTIFICATION COMPLÈTE ====
Exécution de la portée en tant qu'unité : run-u28936.scope
Envoi d'une requête 'ping' sur localhost [127.0.0.1] avec 32 octets de données:
PING : échec de la transmission. Erreur générale.
PING : échec de la transmission. Erreur générale.
PING : échec de la transmission. Erreur générale.
PING : échec de la transmission. Erreur générale.

Statistiques Ping pour 127.0.0.1 :
        Paquets : envoyés = 4, reçus = 0, perdus = 4 (100% de perte)

Pour le reste de la réponse, je vais copier le texte de ma réponse similaire sur unix.se :


Note : cela va vous demander un mot de passe, mais l'application est lancée en tant qu'utilisateur. Ne laissez pas cela vous induire en erreur en pensant que la commande nécessite sudo, car cela ferait fonctionner la commande en tant que root, ce qui n'était probablement pas votre intention.

Si vous ne voulez pas entrer le mot de passe (après tout, vous possédez déjà vos ressources, pourquoi auriez-vous besoin d'un mot de passe pour les limiter), vous pourriez utiliser l'option --user, cependant pour que cela fonctionne, vous aurez besoin de prendre en charge cgroupsv2 activé, ce qui nécessite actuellement de démarrer avec le paramètre kernel systemd.unified_cgroup_hierarchy.

0voto

Alwin07 Points 333

Ce n'est pas la solution la plus propre, mais en tant que solution temporaire pour les utilisateurs de PlayOnLinux, elle est facile et rapide à mettre en place.

Allez dans Paramètres > Internet

Activez Définir un proxy et saisissez un site web sans proxy, par exemple stackoverflow.com et un nom d'utilisateur et un mot de passe aléatoires. Les programmes n'atteindront pas le serveur proxy ni internet.

Avertissement : Soyez conscient que cela empêchera également la boîte de dialogue d'installation de rechercher et d'installer de nouveaux logiciels!

s

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