- - PR -
iptablesの設定
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2007-09-04 15:10
iptablesの設定で、お聞きしたいことがあり、投稿させていただきました。
下記が、sysconfigのiptableのファイルなのですが、 まず、RH-Firewall-1-INPUT に入り、それから許可されているもの(対象サーバーはWEBの80と443、mysqlで構成されたWEBサーバーで、RedHatEs4です)がそれぞれACCEPTされるというのは理解できるのですが、やりたいことは、 @INOUTに対してドロップされたもの、REJECTされたものをそれぞれ別のファイルとしてをすべてログに吐き出したい AINPUTに対してWEBの80番443番以外で、ACCEPTされたものをログに取得したい(WEB閲覧以外で、ACCEPTがあるようなものを調査したい→WEBサービスしか立ててないので) この二点を追加するために下記のiptableをどのように書き換えればいいのでしょうか・・・。 :RH-Firewall-1-INPUT - [0:0] の跡に -A INPUT -j LOG --log-prefix "[IPTABLES INPUT] : " --log-level debug を追加すると当然、WEBで正常閲覧できたログが取れてしまい、位置の問題なのでしょうか・・・ドロップしたもののみという指定がどのようにしたらよいのかよくわかっていない状態です。 *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] UTPUT ACCEPT [0:0] :RH-Firewall-1-INPUT - [0:0] -A INPUT -j RH-Firewall-1-INPUT -A FORWARD -j RH-Firewall-1-INPUT -A RH-Firewall-1-INPUT -i lo -j ACCEPT -A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT -A RH-Firewall-1-INPUT -p 50 -j ACCEPT -A RH-Firewall-1-INPUT -p 51 -j ACCEPT -A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT -A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT -A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited COMMIT | ||||||||
|
投稿日時: 2007-09-04 20:54
iptablesというのは上から順番に評価されていって、
そのパケットが該当する条件式だった場合そのルールによって処理されます。 そのパケットはそれより後方のルールは処理されません。 という動きになるようです。 まぁ極端な話、 --dport 80 -j ACCEPT --dport 80 -j REJECT って書かれていればACCEPTになって、 --dport 80 -j REJECT --dport 80 -j ACCEPT って書かれていれば、REJECTするという事です。 ログというのはその段階で該当したパケットのログが記録されます。 (ログの場合だけは特別で記録のみを行いそれ以降のルールも評価します) こちらも極端な話、 --dport 80 -j ACCEPT --dport 80 -j LOG と書かれている場合には、何も記録されません。 --dport 80 -j LOG --dport 80 -j ACCEPT と書く必要があるわけです。 なお、 --dport 80 -j LOG --dport 80 -j REJECT と書いてもログが残ります。 また、上記の動作からも分かるように LOGルール自身はその後そのパケットが最終的にどうなったかを知りえないので、 難しい条件でログを取るのなら、順序やら条件式を 細かく指定しないと実現出来ないと思います。 ただ、個人的には基本的な方法しか知らないので、 何かしら素晴らしいテクニックがあるかもしれません。 [ メッセージ編集済み 編集者: F/A 編集日時 2007-09-04 20:57 ] | ||||||||
|
投稿日時: 2007-09-04 20:56
DROP、REJECTターゲットを適用しているものを、
ログを取ってDROP、ログを取ってREJECTというチェインを作成した上で、 それらをターゲットとして適用するような構成に変えてみては? 大分前に書いた文章を引用しておきます。
-----
パラメータとして何も定義してない =すべての通信をLOGターゲットに送ってるんですから、 処理の根本を誤解してると思います。 この辺の概念、iptablesの処理フローが腑に落ちてるとすぐ理解できるんですが、 最初からそう分かるもんでもないとも思ってます。 参考になるWebもあると思いますが、下記書籍をお勧めしておきます。 [Red Hat Linux Firewalls] http://www.amazon.co.jp/Red-Hat-Linux-Firewalls-%E3%83%9E%E3%83%83%E3%82%AB%E3%83%BC%E3%83%86%E3%82%A3/dp/4797322691 _________________ Mattun Microsoft MVP for Directory Services (Oct 2006-Sep 2007) | ||||||||
|
投稿日時: 2007-09-05 11:46
さっそくの返信ありがとうございます。
iptableの設定についていろいろ調べました。 上から順に処理がされていくのですね。。。 処理前に ルール LOG --log-prefix "[メモ] " --log-level debug という感じで作成していくと無事にログが取れました。 アドバイスのほどありがとうございました。ログにもルールが適応できるということで、ハナッから間違っていたようです・・・(苦笑 |
1