Linuxでiptablesを使用してLAN上の特定のユーザーにインターネットアクセスを制限する方法

Linuxでiptablesを使用してLAN上の特定のユーザーにインターネットアクセスを制限する方法

LANにAとBという2人のユーザーがいるとします。 iptables ルールを使用してユーザー A のインターネットアクセスを制限し、再起動後も有効な状態に保つようにルールを保存する方法。また、特定の時点でこのユーザーにアクセス権を付与したい場合は、どのように再度有効にしますか? Ubuntu Linux 10.04を使用しています。私はしばしば自分のコンピュータにログインするためにローカルSSHログインを使用しているので、誰かがコマンドラインでこれを行う方法を教えてくれたらいいでしょう。

答え1

私は、ユーザーAとBが管理者である同じLinuxシステムを使用していると仮定します。 (質問では完全には明確ではありません。AとBの両方が独自のコンピュータを持っていて、管理者であればまったく異なる質問です。)

次のコマンドは、uid 1234を持つユーザーがインターフェイスからパケットを送信するのを防ぎますeth0

iptables -t mangle -A OUTPUT -o eth0 -m owner --uid-owner 1234 -j DROP
ip6tables -t mangle -A OUTPUT -o eth0 -m owner --uid-owner 1234 -j DROP

私は読書をお勧めしますUbuntu iptablesガイド基本的にツールに慣れてください(そして、マングルテーブルなどの詳細については、マニュアルページを参照してください)。

ユーザーはまだpingを実行できますが(setuidルートであるため)、他の操作を実行することはできません。他のユーザーがローカルプロキシを起動した場合でも、そのユーザーは引き続きプロキシに接続できます。

このルールを削除するには、-D上記のコマンドに追加してください。

ルールを永続的にするには、ルールをに追加します/etc/network/if-up.d/my-user-restrictions(で始まる実行可能スクリプトで作成します#!/bin/sh)。または以下を使用してくださいiptables-save(参照Ubuntu iptablesガイドより多くの情報を知りたい場合)。

答え2

私はこれにiptablesを使用しません。

A と B が固定 IP ClientA と ClientB に関連付けられているとします。私はあなたのインターネットプロキシがServerI(あなたのUbuntuサーバー?)であると仮定します。

したがって、ClientAからServerIに拒否/削除ルーティングエントリを追加します。

私はUbuntuを使用していないので、この設定を永続的にするために使用する設定ファイルを知らせることはできません(再起動後も保持されます)。

誰かがこの詳細を追加できますか?

答え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

引用する

関連情報