- PR -

当サイトのiptablesの設定

1
投稿者投稿内容
McLaren
ぬし
会議室デビュー日: 2002/01/15
投稿数: 784
お住まい・勤務地: 東京
投稿日時: 2003-02-24 22:53
 お世話になります。いつも@ITの記事を読ませて頂いております。さて、突然ですが
http://www.atmarkit.co.jp/flinux/rensai/security05/security05b.html
で、下記の部分の意味が良く分かりません。。。

----------------------------------------------------------------
# 各サーバからファイアウォールの内側のホストへのpingを許可
/sbin/iptables -A OUTPUT -p icmp -s $V_WEB --icmp-type 0 -d $MAINT -j ACCEPT
/sbin/iptables -A INPUT -p icmp -s $MAINT --icmp-type 8 -d $V_WEB -j ACCEPT
/sbin/iptables -A OUTPUT -p icmp -s $V_MAIL --icmp-type 0 -d $MAINT -j ACCEPT
/sbin/iptables -A INPUT -p icmp -s $MAINT --icmp-type 8 -d $V_MAIL -j ACCEPT
/sbin/iptables -A OUTPUT -p icmp -s $V_DNS --icmp-type 0 -d $MAINT -j ACCEPT
/sbin/iptables -A INPUT -p icmp -s $MAINT --icmp-type 8 -d $V_DNS -j ACCEPT
----------------------------------------------------------------
#行のコメントが合っているなら、例えば1〜2行目で言えば、ローカルアドレスのWEBサーバーからpingを発信するのであれば$R_WEBではないのでしょうか。。さらにそれであればFORWARDチェインに記述することになるのではないでしょうか。また、$MAINTは決して「ファイアウォールの内側のホスト」ではないと思うのですが。。

また、仮にルールが正しくて#行のコメントが間違っているのであれば仮想IPからpingを打つことって可能なのでしょうか。。また、それができた場合、仮想IPからpingを打つ意味はあるのでしょうか。。


[ メッセージ編集済み 編集者: okumura 編集日時 2003-02-24 22:53 ]

[ メッセージ編集済み 編集者: okumura 編集日時 2003-02-28 10:59 ]
ふじい
大ベテラン
会議室デビュー日: 2002/05/07
投稿数: 123
お住まい・勤務地: 東京
投稿日時: 2003-02-27 11:01
こんにちは、ふじいです。

なかなか返事がつかないですね。このサイトの記事なんで、書いた人からつくと思ってたんだけど。

さらっと見ただけなんで、間違ってるかもしれないですが、

引用:

okumuraさんの書き込み (2003-02-24 22:53) より:
 お世話になります。いつも@ITの記事を読ませて頂いております。さて、突然ですが
http://www.atmarkit.co.jp/flinux/rensai/security05/security05b.html
で、下記の部分の意味が良く分かりません。。。

----------------------------------------------------------------
# 各サーバからファイアウォールの内側のホストへのpingを許可
/sbin/iptables -A OUTPUT -p icmp -s $V_WEB --icmp-type 0 -d $MAINT -j ACCEPT
/sbin/iptables -A INPUT -p icmp -s $MAINT --icmp-type 8 -d $V_WEB -j ACCEPT
/sbin/iptables -A OUTPUT -p icmp -s $V_MAIL --icmp-type 0 -d $MAINT -j ACCEPT
/sbin/iptables -A INPUT -p icmp -s $MAINT --icmp-type 8 -d $V_MAIL -j ACCEPT
/sbin/iptables -A OUTPUT -p icmp -s $V_DNS --icmp-type 0 -d $MAINT -j ACCEPT
/sbin/iptables -A INPUT -p icmp -s $MAINT --icmp-type 8 -d $V_DNS -j ACCEPT
----------------------------------------------------------------
#行のコメントが合っているなら、例えば1〜2行目で言えば、ローカルアドレスのWEBサーバーからpingを発信するのであれば$R_WEBではないのでしょうか。。さらにそれであればFORWARDチェインに記述することになるのではないでしょうか。また、$MAINTは決して「ファイアウォールの内側のホスト」ではないと思うのですが。。



これ、下のやつとセットで考えないと分かりにくいし、コメントは適切でないと思います。内側のホストってサーバーなのかな? ネットワーク図にはサービスを提供するサーバーしかないですから。だとしたらメンテナンス用ホストがここで出てくるのはわからない。

もし、ファイアーウォールで守られたサーバー同士のpingを許可するルールなら、コリジョンドメイン内だから、別にファイアーウォールとおらないでも通信できるでしょう。

あと、FORWARDチェインじゃない? という質問ですが、このルールは
「最初ですべて止めて、必要のある通信のみ許可する」ですよね。

なので、FORWARDチェインに入る前にインターフェースで弾かれちゃうんですよ。多分そういう意図だと思います。

インターフェースでパケットを受け取ってあげて、その後は送信先が入ってきたインターフェースのセグメントにないから、FORWARDチェインに入ります。

ここまで厳しいの書くんだったら、インターフェースまで指定すればいいのに。

だから別途それを許可するFORWARDルールがないといけないんだけど、ないですね。このページの上の方には書いてありますよね。抜けてるんじゃないですか? だとしたら、もう少し確認して欲しいですね。

自分のポリシーや書き方とかなり違うので、これ以上は突っ込みたくないですね。それが書いた人の方針と違うかもしれないし。あと検証する時間もないのですみません。

引用:

また、仮にルールが正しくて#行のコメントが間違っているのであれば仮想IPからpingを打つことって可能なのでしょうか。。また、それができた場合、仮想IPからpingを打つ意味はあるのでしょうか。。



意味はありますよ。主に外側のネットワークへ通信できているかどうかのテストとしてですね。

ただ、質問の意図は、SNATするから仮想IPではなく、実IPでは?ということなんだろうけど、それはそうですよ。SNATはチェインを抜けたあとに送信元アドレスを書き換えますからチェイン内では、実IPです。

全体的にこのルールの仕上げは抜けが多いと思います。なんで書いた人の修正を待ちましょう。それまではいろいろいっても徒労に終わりそう・・・。

今気づいたけど、一昨年のか・・・。

[ メッセージ編集済み 編集者: ふじい 編集日時 2003-02-27 11:51 ]
McLaren
ぬし
会議室デビュー日: 2002/01/15
投稿数: 784
お住まい・勤務地: 東京
投稿日時: 2003-02-27 12:37
 お世話になっております。スクリプト中に、

MAINT='172.16.1.150' “メンテナンス用ホスト”

とありますので、メンテナンス用のホストはファイアーウォールの外側だと考えてよいのではないでしょうか。。

 また、iptablesでは、INPUTとOUTPUTチェインは自分自身に対するパケットのみを定義し、FORWARDするパケットには無関係だと理解しておりますが、間違いないでしょうか。。
ふじい
大ベテラン
会議室デビュー日: 2002/05/07
投稿数: 123
お住まい・勤務地: 東京
投稿日時: 2003-02-27 17:08
こんにちは、ふじいです。

引用:

okumuraさんの書き込み (2003-02-27 12:37) より:
 お世話になっております。スクリプト中に、

MAINT='172.16.1.150' “メンテナンス用ホスト”

とありますので、メンテナンス用のホストはファイアーウォールの外側だと考えてよいのではないでしょうか。。



でもそしたらFORWARDチェインに行くはず・・・。なので、INPUTとOUTPUTのチェインなんて書かないはずなんですよ。

そう書いているということは、内側なのかな? と思いましたが、やっぱりよくわかりません。

引用:

 また、iptablesでは、INPUTとOUTPUTチェインは自分自身に対するパケットのみを定義し、FORWARDするパケットには無関係だと理解しておりますが、間違いないでしょうか。。



はい、その理解で正しいです。ですので、僕はFORWARDチェインのみでいいと思います。

元の例だと、上の方ですべてのチェインでパケットを破棄してますよね。なので、FORWARDチェインで許可しないと、パケットがチェインに渡らないです。

ですので、元の例とは別にFORWARDチェインが必要です。

もとの例だと「メンテナンス用ホストが外側にあるのか」、「だとしたらなぜINPUT、OUTPUTチェインにICMPのルールあるのか」が僕もよくわかりません。
McLaren
ぬし
会議室デビュー日: 2002/01/15
投稿数: 784
お住まい・勤務地: 東京
投稿日時: 2003-02-28 10:53
 お世話になります。私もそれと全く同じ疑問からこのスレッドを立ち上げました。非常に疑問です。いつも興味を持って当サイトの記事を閲覧させていただいておりますので、是非とも書かれた方からのコメントをいただければ大変光栄です。それをもとにまた勉強させていただきたいと思っておりますので。。

 また、この構成のときに、ふじい様でしたらどのように修正されますでしょうか。。お手本を示していただけませんでしょうか。。
ふじい
大ベテラン
会議室デビュー日: 2002/05/07
投稿数: 123
お住まい・勤務地: 東京
投稿日時: 2003-02-28 14:41
こんにちは、ふじいです。

引用:

okumuraさんの書き込み (2003-02-28 10:53) より:
 お世話になります。私もそれと全く同じ疑問からこのスレッドを立ち上げました。非常に疑問です。いつも興味を持って当サイトの記事を閲覧させていただいておりますので、是非とも書かれた方からのコメントをいただければ大変光栄です。それをもとにまた勉強させていただきたいと思っておりますので。。

 また、この構成のときに、ふじい様でしたらどのように修正されますでしょうか。。お手本を示していただけませんでしょうか。。



それは勘弁してください。(笑

(訂正)組み方が全然違うので。 -> よく見たら一緒でした。

僕の場合ドロップしたパケットのログをとれないので、ポリシーでDROPにして、先に通したいものを通していきます。

そして、通したくないもので、攻撃と思われる怪しいパケットは、Limitをつけてログをとります。そして、syslog-ngでグループごとにログを分けます。
そして必要のないものをDROPします。

いまだにNimdaとかきてますんで、苦情を言うためにもログにとっておかないと・・・。

たとえばセグメントを2つに分けるとしたら、

外から中に抜けるパケット
中から外へ抜けるパケット

入ってくるパケット
出ていくパケット

ICMP関連
セキュリティー関連

くらいのチェインを作り、それに飛ばして該当するパケットへの処理を、まとめてそこにいろいろ書きます。

iptables以外の処理もシェルスクリプトで一緒に(VPNとか)書きますから、iptables-saveとかは使いませんね。

[ メッセージ編集済み 編集者: ふじい 編集日時 2003-02-28 14:50 ]
1

スキルアップ/キャリアアップ(JOB@IT)