解決策 1:
私にとっての解決策はたまたま簡単でした.
<オール>- 作成:
groupadd no-internet
- 検証:
grep no-internet /etc/group
- ユーザーを追加:
useradd -g no-internet username
注:既存のユーザーを変更する場合は、usermod -a -G no-internet userName
を実行する必要があります。 で確認してください:sudo groups userName
- 作成:
nano /home/username/.local/bin/no-internet
- 実行可能ファイル:
chmod 755 /home/username/.local/bin/no-internet
- コンテンツ:
#!/bin/bash
sg no-internet "[email protected]"
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 でプログラムを実行するとします。 ルールとそのプログラムはブラウザ ウィンドウを開きますが、ルールは適用されます。
解決策 2:
より簡単な方法:firejail を使用します .サンドボックス内でアプリケーションを実行します。サンドボックスでは、コンピューター内の任意のネットワークまたはフォルダーへのアプリケーションのアクセスを制御できます。
ネットワーク アクセスなしで特定のアプリケーションを実行するには、次の手順を実行します。
firejail --net=none <application>
その場合、「サンドボックスは、ネットワーク インターフェイスのないコンピューターのように見えます」。 (ドキュメントのネットワーク セクションを参照)
例:firejail --net=none firefox
ネットワークに接続せずに Firefox を起動します。
インストール
インストールのドキュメントを参照してください。ディストリビューションのパッケージ システムからインストールするか、最新バージョンの LTS を入手することをお勧めします。 (たとえば、この最新の LTS バージョン、9.56.2
、Ubuntu 16.04 でも動作します。)