Je dois bloquer l'accès d'une application à Internet. J'ai recherché et trouvé cette recette:
-Créer le groupe "no-internet".
-Ecrivez le script netblock.sh avec cette ligne:
sg no-internet "$1"
-Ajouter cette règle à iptables:
iptables -I OUTPUT 1 -m owner --gid-owner no-internet ! -d 192.168.1.0/24 -j DROP
-L'application:
$ netblock.sh /path/to/binary
Notez que je veux bloquer l'accès au monde extérieur mais accorder l'accès au réseau local.
J'ai vu des rapports selon lesquels cela fonctionne, mais cela ne fonctionne pas pour moi.
Test avec ping:
$ ping www.google.com
PING www.google.com (216.58.222.100) 56(84) bytes of data.
64 bytes from rio01s16-in-f100.1e100.net (216.58.222.100): icmp_seq=1 ttl=54 time=43.5 ms
64 bytes from rio01s16-in-f100.1e100.net (216.58.222.100): icmp_seq=2 ttl=54 time=42.3 ms
^C
$ netblock.sh "ping www.google.com"
ping: www.google.com: Temporary failure in name resolution
Ça marche. Pourtant...
$ ping 192.168.1.1
PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.
64 bytes from 192.168.1.1: icmp_seq=1 ttl=64 time=0.324 ms
64 bytes from 192.168.1.1: icmp_seq=2 ttl=64 time=0.379 ms
^C
$ netblock.sh "ping 192.168.1.1"
PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.
ping: sendmsg: Operation not permitted
ping: sendmsg: Operation not permitted
^C
Le réseau local est également bloqué et je ne le souhaite pas. Qu'est-ce que je fais mal?
iptables
si d'autres règles de pare-feu interféraient?