特定のユーザーのネットワークを無効にする

特定のユーザーのネットワークを無効にする

私はライブで実行することを目的とした 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

参考文献

関連情報