web-dev-qa-db-ja.com

ソースIPをシミュレートして、どのiptablesルールが起動しているか、起動していないかをテストする方法

[〜#〜] apf [〜#〜] によって生成されるかなり複雑なiptables/ipchains構成があります。ポート80へのトラフィックはブロックされるはずですが、Apacheログは誰かがWebページを調査できたことを示しています。

[Sun Feb 03 13:08:45 2013] [error] [client 50.57.125.169] File does not exist:     /var/www/w00tw00t.at.blackhats.romanian.anti-sec:)
[Sun Feb 03 13:08:45 2013] [error] [client 50.57.125.169] File does not exist: /var/www/phpMyAdmin
[Sun Feb 03 13:08:45 2013] [error] [client 50.57.125.169] File does not exist: /var/www/phpmyadmin

50.57.125.169からのパケットがブロックされなかった理由をデバッグするためにiptablesでソースIPをシミュレートする方法はありますか? -C | --checkオプションは、IPに明示的に一致するルールが存在するかどうかのみを報告するようですが、私がしたいのは(pseudocode

myserver% iptables --test --source_ip=50.57.125.169 --dest_port=80
Rule #17 matches (ALLOW)    // i.e. this would be the rule that matches

これを行う方法はありますか?

[編集] 1つの部分的な解決策は、iptablesでTRACEデバッグを有効にし( https://serverfault.com/a/126078/67472 )、hping3(ソースIPを偽装できるTrentに感謝します。ただし、テストが別のサーバーから実行された場合、結果は表示されません。同じサーバーから実行された場合、ループバックインターフェイスを経由します。

7
mrisher

Hpingを使用してトラフィックのソースIPアドレスをシミュレートし、トラフィックがまだ通過しているかどうかを確認できますか?おそらくあなたが探しているものではないかもしれませんが、あなたは次のようなことをすることができます

hping3 --syn --destport 80 --count 3 -a test.ip.address webserver.ip.address
6
trent

scapyを使用して、IPアドレスを偽装することができます。

1
user101130

私はあなたが尋ねた質問に直接対処していないことを知っていますが、APFをかなり長い間使用していたので、別のアプローチを使用した場合に備えて、IPをブロックする方法についてアドバイスできます。

例:ホスト1.2.3.4のポート80をブロックするには、次の行を追加します/etc/apf/deny_hosts.rules

    tcp:in:d=80:s=1.2.3.4

これに加えて、ソースIPをスプーフィングする煩わしさを経験する代わりに、自分の制御下にあるクライアントコンピューターのIPアドレスをブロックして、そこから接続してみてはどうでしょう。

1
Daniel t.