
私はライブで実行することを目的とした Ubuntu/Mint ディストリビューションに取り組んでいます。管理者、インターネット、セキュリティの 3 つの一般的なグループに分類される複数のアカウントがあります。
- 管理者明らかに何でもできる権限を持っています。
- インターネットアカウントはインターネットを使用するためのものです。
他のアカウントは安全アカウント。いかなる状況においても、インターネット、プリンター、Bluetooth、WiFi デバイスなどのネットワーク接続は許可されません。
私がやりたいのはカーネルからネットワーク ドライバーを削除することですが、そうするとインターネットを必要とするアカウントが無効になります。
これらのセキュリティアカウントのインターネットを無効にする最も簡単な方法は何ですか?接続不可能ソリューション。
答え1
iptables
それは( )でできますip6tables
。
再起動まで
ターミナルでルールを追加するiptables
sudo iptables -A OUTPUT -p all -m owner --uid-owner username -j DROP
sudo ip6tables -A OUTPUT -p all -m owner --uid-owner username -j DROP
どこユーザー名インターネット接続を無効にするユーザーです。ファイルを保存して終了します。
これにより、指定されたユーザーによって作成された送信パッケージが自動的にドロップされるというルールがiptables
( ) に追加されます。ip6tables
完全なグループに対して同じことを行う場合は、--uid username
の代わりに を使用することをお勧めします--gid-owner groupname
。これにより、完全なユーザー グループに対して同じ効果が得られます。
たとえば、グループがsecurity
インターネットにアクセスできないようにするには、コマンドは次のようになります。
sudo iptables -A OUTPUT -p all -m owner --gid-owner security -j DROP
sudo ip6tables -A OUTPUT -p all -m owner --gid-owner security -j DROP
永続
ルールを永続的にするには、 でスクリプトを作成し/etc/network/if-up.d/
、必要な行を追加して実行可能にします。
オプションとして、iptables-save
( ip6tables-save
) を使用して現在のルールを保存し、起動時に復元します。
現在のiptables
ルールを保存する
sudo iptables-save > /etc/iptables_rules
sudo ip6tables-save > /etc/ip6tables_rules
お気に入りのテキストエディタで開き/etc/rc.local
、ファイルの最後に以下を追加します。
/sbin/iptables-restore < /etc/iptables_rules
/sbin/ip6tables-restore < /etc/ip6tables_rules
これにより、保存されたルールが起動ごとに復元されます。IPv4 接続のみをブロックしたユーザーは、引き続きインターネットに接続できます。
詳細情報とその他のiptables
オプションについては、マニュアルページ。
答え2
ブルーノの解決策は優れています。おそらく最も優れた自己完結型の解決策だと思います。
他に考えられる選択肢としては、インターネットへのゲートウェイとして別のマシンにファイアウォール/プロキシを設定し、ユーザーごとの認証を提供する接続のみを許可するというものがあります。保護を強化するために、両方を併用することもできます。
答え3
もしファイアウォール設定の一部である場合、直接ルールを使用して特定のユーザーのネットワーク アクセスをブロックできます。例:
/etc/firewalld/direct.xml
‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾
<?xml version="1.0" encoding="utf-8"?>
<direct>
<chain ipv="ipv4"
table="filter"
chain="restrict_user_ipv4"/>
<rule ipv="ipv4"
table="filter"
chain="OUTPUT"
priority="1">-m owner --uid-owner user -j restrict_user_ipv4</rule>
<rule ipv="ipv4"
table="filter"
chain="restrict_user_ipv4"
priority="3">-j DROP</rule>
<chain ipv="ipv6"
table="filter"
chain="restrict_user_ipv6"/>
<rule ipv="ipv6"
table="filter"
chain="OUTPUT"
priority="1">-m owner --uid-owner user -j restrict_user_ipv6</rule>
<rule ipv="ipv6"
table="filter"
chain="restrict_user_ipv6"
priority="3">-j DROP</rule>
</direct>
リロードを忘れずに
# firewall-cmd --reload