web-dev-qa-db-ja.com

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

LANにAとBの2人のユーザーがいるとします。iptablesルールを使用してユーザーAのインターネットアクセスを制限し、ルールを保存して、再起動後もユーザーが引き続き有効になるようにするにはどうすればよいですか。また、ある時点でそのユーザーにアクセスを許可したいとします。再度有効にするにはどうすればよいですか? Ubuntu Linux 10.04を使用しています。ローカルのsshログインを使用してマシンにログインすることが多いので、コマンドラインから実行方法を誰かに教えてもらえたら嬉しいです。

11
Marwan Tanager

ユーザーAとBは、管理者と同じLinuxマシンを使用していると想定しています。 (それはあなたの質問から完全に明確ではありません。AとBが管理者である独自のコンピューターを持っている場合、それは完全に異なる問題です。)

次のコマンドは、uid 1234のユーザーがインターフェースeth0でパケットを送信できないようにします。

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

buntu iptablesガイド を読んで、ツールの基本的な知識を習得することをお勧めします(マングルテーブルなどの詳細については、manページを参照してください)。

ユーザーは(setuidルートであるため)pingを実行できますが、それ以外は実行できません。プロキシが別のユーザーによって開始された場合、そのユーザーはローカルプロキシに接続できます。

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

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

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

AとBは固定IP ClientAとClientBに関連付けられていると思います。あなたのInternet-ProxyはServerI(あなたのUbuntu-Server?)だと思います。

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

私はUbuntuを使用していません-そのため、その設定を永続的にするためにどの設定ファイルを使用するかを伝えることはできません(再起動後も存続します)。

おそらく誰かがその詳細を追加できますか?

0
Nils