How to disable Internet connection for a single process?

Solution 1:

I've just had the same question and found a really nice solution on ubuntuforums.org

Summary

  • add a group "no-internet" and add your user to it

    sudo addgroup no-internet
    sudo adduser $USER no-internet
    
  • add a iptables rule to prevent that group from accessing the network:

    iptables -I OUTPUT 1 -m owner --gid-owner no-internet -j DROP
    
  • run the process you don't want to have internet access like with sg (execute command as different group ID):

    sg no-internet "process command line"
    

Solution 2:

You can try the following:

  • unshare. Seems to work fine for terminal programs. I'm unable to get it to work with X11.

    unshare -r -n ping google.com
    
  • Firejail. You might have to fiddle with the config to get it to work.

    firejail --noprofile --net=none firefox
    

Solution 3:

I would recommend using firewall rules to lock that program out. If you can isolate the port numbers that the program is using you can block traffic on those ports. You can also set up "per process" firewall rules with SELinux or other security software.

https://help.ubuntu.com/community/Gufw

If you're looking for something a little more direct or challenging you can configure IPTables as documented here.