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


回答:


31

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

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

      注:既存のユーザーを変更する場合は、次を実行する必要があります:usermod -a -G no-internet userName check with: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. グループ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

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


2
いくつかのメモIlia:広告1:-既存のユーザーを変更するには:usermod -a -G groupName userName-check with:sudo groups userName Ad 3:-iptablesにはすでに多くのルールがあります。新しいルールの位置は重要です。チェーンOUTPUTの最初のルールである必要があります。したがって、insertを使用します。iptables -I OUTPUT 1 -m owner --gid-owner no-internet -j DROP LANへのアクセスを許可するには、ACCEPTルールがDENYルールより上にあることを確認します。魔法のように機能します。たとえばWifiguardで使用します。Progは、WLANで不明なデバイスをチェックしますが、起動するたびに「電話をかけます」。

スクリプトはコマンドのみを渡します。パラメータを使用してプログラムを起動する場合は、「$ 1」ではなく「$ @」を使用する必要があります。何らかの理由で、bashが正しく処理するために、変数に一時的に保存する必要がありました。cmd= "$ @"; SGなしインターネット"$ {CMD}"
オンセ

「no-internet」の代わりに「nointernet」を使用します。何らかの理由で、sgまたはchgrpを使用しようとすると、Ubuntu 14.04はダッシュを処理できません(パスワードの入力を求められ、その後失敗します)。

1
unshare -n YourAppToBlock>「no-internet」の代わりに「nointernet」を使用します。おそらく、「no \\-internet」?
SarK0Y

説明したように試してみましたが、私にとっては「no-internet」に追加してipテーブルを設定した後、インターネットに接続できなくなりました(bashスクリプトno-internetの有無にかかわらず)。
Viatorus
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.