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


11

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

回答:


17

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

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

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

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

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

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

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


どうもありがとうございました。そして、はい、あなたの仮定は本当です。あなたの答えと前述のubuntuガイドに基づいて、制限されたユーザーにsshアクセスも許可したい場合は正しい方法です(時にはssh経由で彼のアカウントを使用してログインしたい):iptables -t mangle -A OUTPUT- o eth0 -m owner --uid-owner 1234 -p tcp --dport ssh -j ACCEPT iptables -t mangle -A OUTPUT -o eth0 -m owner --uid-owner 1234 -j DROPこれらのルールをそのまま上記のファイルと物事は正常に動作するようです。
Marwan Tanager、2011

@Marwanそうだと思います。sshが他のプロトコルを簡単にトンネリングできるため、sshアクセスを許可すると、ほとんどすべてが許可されることに注意してください。
Gilles「SO-邪悪になるのをやめる」

0

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

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

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

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

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.