iptables:ローカルネットワーク以外のGIDを介したインターフェイスへのアクセスを無効にします。

iptables:ローカルネットワーク以外のGIDを介したインターフェイスへのアクセスを無効にします。

グループ外のユーザーがインターフェイスを使用することを禁止する次の規則がありますfullnetwork

iptables -I OUTPUT -o eth+  -m owner \! --gid-owner fullnetwork -j REJECT

外部ユーザーがローカルネットワークを使用できるようにする方法はfullnetwork

私はこれを試しましたが、成功しませんでした。

ipset create local hash:net
ipset add local 192.168.0.0/16
ipset add local 172.16.0.0/16
ipset add local 10.0.0.0/8
iptables -I OUTPUT -o eth+  -m owner \! --gid-owner fullnetwork -j REJECT
iptables -I OUTPUT -o eth+  -m owner \! --gid-owner fullnetwork -m set --match-set local src -j ACCEPT

答え1

必要な機能が追加されました。iptables>= 1.8.4そしてカーネル5.3程度(そして全く使えないnftables):また一致再充填する現在(基本)グループだけでなくグループ:--suppl-groups:

--suppl-groups

--gid-ownerプロセスのセカンダリグループのうち、指定されたグループも確認するようにします。

このオプションがなく、グループを直接使用しない場合(たとえば、を使用して)、sg fullnetwork次のコマンドを使用することもできます。

iptables -I OUTPUT -o eth+  -m owner \! --gid-owner fullnetwork -j REJECT

公開された効果は得られません。fullnetwork補足グループリストのこのグループのユーザーだけがネットワークを使用することはできません。

したがって、この一致を実行し、必要に応じて他のユーザーを拒否するには、次の例を使用する必要があります。

iptables -I OUTPUT -o eth+  -m owner ! --gid-owner fullnetwork --suppl-groups -j REJECT

一貫性を維持するために、例外に例外を追加することが許可される規則にしてはいけませんfullnetwork。そうしないと、将来のルールに追加の制限が追加されると、ユーザーは特定のLANへのアクセスのみが許可されているユーザーよりもローカルネットワークへのアクセスを減らすことができます。代わりに、ルールをまとめてグループ化し、ACCEPT決定を使用せずにRETURN決定で拒否を回避し、単一のREJECT決定で終わるユーザーチェーンを作成します。前の2つを交換してください。iptablesルール:

iptables -N reject_non_allowed_on_eth

iptables -A reject_non_allowed_on_eth -m owner --gid-owner fullnetwork --suppl-groups -j RETURN
iptables -A reject_non_allowed_on_eth -m set --match-set local dst -j RETURN
iptables -A reject_non_allowed_on_eth -j REJECT

iptables -I OUTPUT -o eth+ -j reject_non_allowed_on_eth

これは次のように読み取ることができます。

  • イーサネットインターフェイスを使用する場合、

    • fullnetworkグループなら出てください
    • プライベートLANに到達すると終了
    • 残りは承認されません。拒否してください。
  • 残りのパケットをさらにフィルタリングするために、後でさらにルールを追加できます。

他の変更も確認してください。競争が始まった。目的地dst)の代わりに源泉src)システムにこの範囲のアドレスがある場合は、何でもアクセスできます。放射~から住所はソースと一致すれば常に許可されますが、意図したものではないようです。

関連情報