Як заблокувати доступ до Інтернету до певних програм у Linux


20

Останнім часом я стикався з проблемою обмеження доступу в Інтернет до певних програм. Чи може хтось порекомендувати хороший спосіб зробити це, не використовуючи якогось конкретного програмного забезпечення?

Відповіді:


31

Для мене рішення було прямо вперед.

  1. Створення, підтвердження нової групи ; додати потрібних користувачів до цієї групи:
    • Створити: groupadd no-internet
    • Перевірка: grep no-internet /etc/group
    • Додати користувача: useradd -g no-internet username

      Примітка. Якщо ви змінюєте вже існуючого користувача, слід запустити: usermod -a -G no-internet userName позначте:sudo groups userName

  2. Створіть сценарій на своєму шляху і зробіть його виконуваним:
    • Створити: nano /home/username/.local/bin/no-internet
    • Виконаний: chmod 755 /home/username/.local/bin/no-internet
    • Зміст: #!/bin/bash
                    sg no-internet "$@"

  3. Додайте правило iptables для відмови від мережевої активності для групи без Інтернету :


   4. Перевірте це, наприклад, у Firefox, запустивши:

  • no-internet "firefox"

У випадку, якщо ви хочете зробити виняток і дозволити програмі отримати доступ до локальної мережі :

  • iptables -A OUTPUT -m owner --gid-owner no-internet -d 192.168.1.0/24 -j ACCEPT
  • iptables -A OUTPUT -m owner --gid-owner no-internet -d 127.0.0.0/8 -j ACCEPT
  • iptables -A OUTPUT -m owner --gid-owner no-internet -j DROP

ПРИМІТКА: У разі нересту правила будуть зберігатися. Наприклад, якщо ви запускаєте програму без правила Інтернету, і ця програма відкриє вікно браузера, правила все ж застосовуються.


2
Кілька зауважень Ilia: Ad 1: - щоб змінити існуючого користувача: usermod -a -G groupName userName - перевірте: sudo groups userName Ad 3: - У мене вже багато правил у iptables, положення нового правила є вирішальним . повинно бути першим правилом у ланцюжку OUTPUT. Тому я використовую вставку: iptables -I OUTPUT 1 -m власник --gid-owner no-internet -j DROP Щоб дозволити доступ до локальної мережі: переконайтесь, що правила ACCEPT вище правила DENY. Працює як шарм. Використовуйте його, наприклад, на Wifiguard. Прог перевіряє наявність невідомих пристроїв, але "телефонує додому" на кожному запуску.

Сценарій передасть лише команду. Якщо ви спробуєте запустити програму з параметрами, вам слід використовувати "$ @" замість "$ 1". Чомусь мені довелося тимчасово зберігати його у змінній для bash, щоб правильно її обробити: cmd = "$ @"; SG немає-інтернет "$ {команда}"
onse

використовувати "nointernet" замість "no-internet". З будь-якої причини Ubuntu 14.04 не може впоратися з тире, коли ви намагаєтесь використовувати sg або chgrp (запит на введення пароля, потім не вдається).

1
unshare -n YourAppToBlock> використовуйте "nointernet" замість "no-internet". можливо, "ні \\ - Інтернет"?
SarK0Y

Я спробував це, як описано, але для мене, після додавання мене до "не-Інтернету" та встановлення ip-таблиць, я більше не можу підключитися до Інтернету (з і без bash script no-internet).
Viatorus
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.