もしもどなたか分かったら教えてください。 今、openSUSEをkvm環境ゲストで使っています。 ゲスト環境に対して、ポートの制限を使用としています。 もちろんゲスト内部でiptablesを使えば設定が出来ます。 しかし、複数のゲストを立ち上げたときに個別に設定するのは 大変なので、ホスト側で一括して制限をしようと考えました。 たとえば、 iptables -A INPUT -p tcp -s 192.168.3.XXX --dport 22 -j REJECT と言う設定をホスト側で行えば、192.168.3.XXX からのアクセスは、 ホスト、ゲスト共に拒否出来ると考えました。 しかし、実際にやってみると、ホスト側はアクセス制限が効くのですが、 ゲスト側には効かず、素通しになってしまいます。 iptables の仕様はゲスト側には効かない、と思って良いのでしょうか。 ribbon -- To unsubscribe, e-mail: opensuse-ja+unsubscribe@opensuse.org To contact the owner, e-mail: opensuse-ja+owner@opensuse.org
鎌田@翻訳人です。
On Mon, 2 Jan 2017 19:03:21 +0900
User Ribbon
もしもどなたか分かったら教えてください。
今、openSUSEをkvm環境ゲストで使っています。 ゲスト環境に対して、ポートの制限を使用としています。 もちろんゲスト内部でiptablesを使えば設定が出来ます。 しかし、複数のゲストを立ち上げたときに個別に設定するのは 大変なので、ホスト側で一括して制限をしようと考えました。 たとえば、
iptables -A INPUT -p tcp -s 192.168.3.XXX --dport 22 -j REJECT
と言う設定をホスト側で行えば、192.168.3.XXX からのアクセスは、 ホスト、ゲスト共に拒否出来ると考えました。
しかし、実際にやってみると、ホスト側はアクセス制限が効くのですが、 ゲスト側には効かず、素通しになってしまいます。
iptables の仕様はゲスト側には効かない、と思って良いのでしょうか。
INPUTは対象のマシンの入力としてパケットを受け取ったとき、 つまりLinuxマシンから見て自分宛のパケットであると認識した場合にのみ 動作する仕組みです。FORWARD, OUTPUTについても同様に、それぞれその マシンが処理する転送や出力に対してのみ動作し、それ以外のパケットは そもそもiptablesのキューに入ってきません。 なので、やるとしたらデフォルトのfilterテーブル (-t filter)ではなく、 mangleテーブル (-t mangle) に対して設定するか、ブリッジのフィルタ (ebtables)を使用すると期待通りに動作するのではないかと思います。 以上です。 -- Yasuhiko Kamata E-mail: belphegor@belbel.or.jp -- To unsubscribe, e-mail: opensuse-ja+unsubscribe@opensuse.org To contact the owner, e-mail: opensuse-ja+owner@opensuse.org
On Mon, Jan 02, 2017 at 10:05:38PM +0900, Yasuhiko Kamata wrote:
iptables -A INPUT -p tcp -s 192.168.3.XXX --dport 22 -j REJECT
と言う設定をホスト側で行えば、192.168.3.XXX からのアクセスは、 ホスト、ゲスト共に拒否出来ると考えました。
しかし、実際にやってみると、ホスト側はアクセス制限が効くのですが、 ゲスト側には効かず、素通しになってしまいます。
iptables の仕様はゲスト側には効かない、と思って良いのでしょうか。
INPUTは対象のマシンの入力としてパケットを受け取ったとき、 つまりLinuxマシンから見て自分宛のパケットであると認識した場合にのみ 動作する仕組みです。FORWARD, OUTPUTについても同様に、それぞれその マシンが処理する転送や出力に対してのみ動作し、それ以外のパケットは そもそもiptablesのキューに入ってきません。
なので、やるとしたらデフォルトのfilterテーブル (-t filter)ではなく、 mangleテーブル (-t mangle) に対して設定するか、ブリッジのフィルタ (ebtables)を使用すると期待通りに動作するのではないかと思います。
やってみました。 iptables -t mangle -A INPUT -p udp --sport 67:68 -j DROP で追加してみました。 なお、mangle の時はREJECTは使えず。 iptables -nvL -t mangle Chain PREROUTING (policy ACCEPT 22389 packets, 14M bytes) pkts bytes target prot opt in out source destination Chain INPUT (policy ACCEPT 15167 packets, 11M bytes) pkts bytes target prot opt in out source destination 5 1950 DROP udp -- * * 0.0.0.0/0 0.0.0.0/0 udp spts:67:68 となって、一応パケットが引っかかるように見えたのですが、 やはりゲスト側にはパケットが渡されています。 おそらくあと何か足らないような気がしますが、うーん、何だろう。 なお、ebtables については入っていなかったので追加してみましたが、 設定が悪かったのかうまく引っかからず。 ribbon -- To unsubscribe, e-mail: opensuse-ja+unsubscribe@opensuse.org To contact the owner, e-mail: opensuse-ja+owner@opensuse.org
On Tue, Jan 03, 2017 at 06:31:53PM +0900, User Ribbon wrote:
なので、やるとしたらデフォルトのfilterテーブル (-t filter)ではなく、 mangleテーブル (-t mangle) に対して設定するか、ブリッジのフィルタ (ebtables)を使用すると期待通りに動作するのではないかと思います。
やってみました。
iptables -t mangle -A INPUT -p udp --sport 67:68 -j DROP で追加してみました。 なお、mangle の時はREJECTは使えず。
http://www.asahi-net.or.jp/~aa4t-nngk/ipttut/output/rctest-iptablestxt.html に iptables の動作を調べる設定例がありました。これを少し直して、DHCPが どう通るかを調べました。 結果、 iptables -t mangle -A PREROUTING -i vmbr0 -p udp --sport 67:68 -j DROP でVMゲストからの、DHCPアクセス要求を蹴る事が出来ました。 ribbon -- To unsubscribe, e-mail: opensuse-ja+unsubscribe@opensuse.org To contact the owner, e-mail: opensuse-ja+owner@opensuse.org
participants (2)
-
User Ribbon
-
Yasuhiko Kamata