グループ外のユーザーがインターフェイスを使用することを禁止する次の規則があります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
)システムにこの範囲のアドレスがある場合は、何でもアクセスできます。放射~から住所はソースと一致すれば常に許可されますが、意図したものではないようです。