web-dev-qa-db-ja.com

iptablesログに基づいてドロップ/ブロックされているトラフィックを特定する方法

https://help.ubuntu.com/community/IptablesHowTo#More_detailed_Logging からのiptableロギングの例に従いました

Sudo iptables -I INPUT 5 -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7

以下のようなログエントリが表示されます

Oct 20 03:45:50 hostname kernel: iptables denied: IN=eth0 OUT= MAC=xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx SRC=x.x.x.x DST=x.x.x.x LEN=1059 TOS=0x00 PREC=0x00 TTL=115 ID=31368 DF PROTO=TCP SPT=17992 DPT=80 WINDOW=16477 RES=0x00 ACK PSH URGP=0 
Oct 20 03:46:02 hostname kernel: iptables denied: IN=eth0 OUT= MAC=xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx SRC=x.x.x.x DST=x.x.x.x LEN=52 TOS=0x00 PREC=0x00 TTL=52 ID=763 DF PROTO=TCP SPT=20229 DPT=22 WINDOW=15588 RES=0x00 ACK URGP=0 
Oct 20 03:46:14 hostname kernel: iptables denied: IN=eth0 OUT= MAC=xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx SRC=x.x.x.x DST=x.x.x.x LEN=324 TOS=0x00 PREC=0x00 TTL=49 ID=64245 PROTO=TCP SPT=47237 DPT=80 WINDOW=470 RES=0x00 ACK PSH URGP=0 
Oct 20 03:46:26 hostname kernel: iptables denied: IN=eth0 OUT= MAC=xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx SRC=x.x.x.x DST=x.x.x.x LEN=52 TOS=0x00 PREC=0x00 TTL=45 ID=2010 PROTO=TCP SPT=48322 DPT=80 WINDOW=380 RES=0x00 ACK URGP=0 

上記の同様のログが2〜3秒ごとに表示され、ブロックされているトラフィックが多いようです。しかし、私の質問は、上記のログエントリに基づいて、どの種類のトラフィックがブロックまたはドロップされているかをどのように判断するのですか?

DPTは宛先ポートを意味しますか? DPT = 22はSSHアクセスがブロックされていることを意味しますか? DPT = 80は、HTTPトラフィックがブロックされることを意味しますか?

私のiptablesは主にデフォルト値ですが、いくつかの追加のルールを追加しています

-A INPUT -s z.z.z.z/32 -j DROP
-A INPUT -s y.y.y.y/32 -j DROP
-A INPUT -s a.a.a.a/32 -j DROP
-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7

ログファイルのSRC IPはどれも、すべてのトラフィックをドロップするように特別に構成されたiptablesからのものではありませんが、ログファイルには、DPT = 80、DPT = 22のドロップされた異なるIPアドレスが示されています。

私の設定に何か問題がありますか?

7
forestclown

これがあなたのルールです:

-A INPUT -s z.z.z.z/32 -j DROP
-A INPUT -s y.y.y.y/32 -j DROP
-A INPUT -s a.a.a.a/32 -j DROP
-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7

1つ目は、一致するすべてのパケットを暗黙的にドロップします。 2番目と3番目のようになります。 「制限」ルールに到達するまでに、これらの送信元IPアドレスに一致するすべてのパケットがすでにドロップされています。これで残りのトラフィックがあります。この残りのトラフィックでは、毎分5パケットをログに記録します。それらが実際には拒否されていないのに、誤って拒否されたものとしてログに記録します。

代わりに、複数の送信元IPアドレスのいずれかに一致するパケットをログに記録してドロップする場合、これを行う最も簡単な方法は、ログを記録してドロップする新しいチェーンを作成することです。例えば。:

iptables -N LOG_AND_DROP
iptables -A LOG_AND_DROP -j LOG --log-prefix "Source Host denied "
iptables -A LOG_AND_DROP -j DROP

これでこのチェーンができたので、ログに記録してドロップするようにトラフィックを誘導します。

iptables -A INPUT -s z.z.z.z/32 -j LOG_AND_DROP
iptables -A INPUT -s y.y.y.y/32 -j LOG_AND_DROP
iptables -A INPUT -s a.a.a.a/32 -j LOG_AND_DROP

これにより、これらの送信元アドレスに一致するすべてのパケットが取得され、LOG_AND_DROPチェーンに送信されます。このチェーンは、名前が付けられているように、最初にすべてのパケットをログに記録してからドロップします。必要に応じて、ログをレート制限してから削除できます。あなた次第であり、私たちが話しているトラフィックの量に依存します。

注:上記のルールを追加する前に、必ず既存のルールをフラッシュしてください。それ以外の場合は、ログに記録するが否定しないという誤解を招くルールが残っています。

24
Eddie