web-dev-qa-db-ja.com

Linux上の特定のプログラムへのインターネットアクセスをブロックする方法

最近、インターネットアクセスを特定のプログラムに制限する問題に遭遇しました。特定のソフトウェアを使用せずに、誰かがそれを行うための良い方法をお勧めできますか?

20
Ilia Rostovtsev

私にとっての解決策はたまたま単純でした。

  1. 作成、検証新しいグループ;必要なユーザーをこのグループに追加:
    • 作成:groupadd no-internet
    • 検証: grep no-internet /etc/group
    • ユーザーを追加する: useradd -g no-internet username

      注:既存のユーザーを変更する場合は、次のコマンドを実行してください:usermod -a -G no-internet userName 確認する : Sudo groups userName

  2. パスにscriptを作成し、実行可能にします:
    • 作成:nano /home/username/.local/bin/no-internet
    • 実行可能ファイル:chmod 755 /home/username/.local/bin/no-internet
    • コンテンツ:#!/bin/bash
      sg no-internet "$@"

  3. グループno-internetのネットワークアクティビティを削除するためのiptablesルール
    • iptables -I OUTPUT 1 -m owner --gid-owner no-internet -j DROP

      注:変更を永続的にすることを忘れないでください。変更は 再起動後に自動的に適用されます になります。それを行うかどうかは、Linuxディストリビューションによって異なります。


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

注:スポーンの場合、ルールは維持されます。たとえば、no-internetルールでプログラムを実行し、そのプログラムがブラウザウィンドウを開く場合でも、ルールは適用されます。

32
Ilia Rostovtsev