web-dev-qa-db-ja.com

ipfwベースのファイアウォールはApacheWebサーバーの速度を低下させます

FreeBSD8.3マシンで実行されているApacheWebサーバーがあります。
そのマシンには、次のルールを持つipfwファイアウォールがあります。

root@aigamedev:~# ipfw -a list
00005    0       0 deny ip from 67.212.xxx.xxx to any
00010  206   88422 allow ip from any to any via lo0
00015    0       0 deny ip from any to 127.0.0.0/8
00020    0       0 deny ip from 127.0.0.0/8 to any
00050    0       0 check-state
00060 5315 1358507 allow tcp from any to any established
00061    8     658 allow ip from any to any out keep-state
00070    0       0 allow icmp from any to any
00080    0       0 deny ip from me to me in recv re0
00085    0       0 deny tcp from any to any frag
00098    0       0 allow tcp from me to 83.64.xxx.xxx out established keep-state
00099    0       0 allow tcp from 83.64.xxx.xxx to me dst-port 22 in setup keep-state
00100    0       0 allow tcp from any to any dst-port 22 in setup keep-state
00110    0       0 allow tcp from any to any dst-port 22 out setup keep-state
00160    0       0 allow tcp from any to any dst-port 25 out setup keep-state
00180    0       0 allow tcp from any to any dst-port 53 out setup keep-state
00185    0       0 allow udp from any to any dst-port 53 out keep-state
00200 6750  661150 allow tcp from any to any dst-port 80,443 in setup keep-state
00210    0       0 allow tcp from any to any dst-port 80,443 out setup keep-state
00250    0       0 allow udp from any to any dst-port 123 out keep-state
00280    0       0 allow udp from any to any dst-port 67-68 out keep-state
00300    0       0 allow tcp from any to any dst-port 5222,5223,5269 in setup keep-state
00305    0       0 allow tcp from any to any dst-port 5222,5223,5269 out setup keep-state
00999   25    1716 deny ip from any to any
65535    0       0 deny ip from any to any

これらのファイアウォールルールを有効にすると、同じマシン上のApacheサーバーが「遅くなり」ます。つまり、多くの接続がハングし、ページの読み込みにミリ秒ではなく数秒かかります。これは、さまざまなソースネットワークおよびクライアントからテストできます。 server-status読み取り状態で何もしていないApacheスロットの多く(ほとんど)を見ることができます。

その後、ファイアウォールを停止すると、Apacheサーバーはすぐに通常のパフォーマンスに戻ります。

これらのファイアウォールルールで何が間違っている可能性があるかについてのアイデアはありますか?

2
Matthias

tcp/80の「新しい」接続を許可していますか? Apacheはどのポートをリッスンしており、どこから接続を受け入れる必要がありますか?

これらのルールが速度低下を引き起こしてはなりません。

00200 allow tcp from any to any dst-port 80,443 in setup keep-state
00210 allow tcp from any to any dst-port 80,443 out setup keep-stat

おそらく、これらのポートは、これらのポートをリッスンしているスクリプト/ダメオン/アプリケーションに負担をかけ、ボックスの速度を低下させています。

00300 allow tcp from any to any dst-port 5222,5223,5269 in setup keep-state
00305 allow tcp from any to any dst-port 5222,5223,5269 out setup keep-state

私のアドバイス:サービスごとに1台の物理/仮想マシンを用意する..... ntopを実行して、実際にプッシュしているトラフィックの量を確認します

1
nandoP

Apacheは、ファイアウォールがブロックしている他のサービスに依存しているようです。実行しているアプリケーションがわからないと、より正確な情報を提供することは困難ですが、ローカルホスト上のすべてへのアクセスをブロックしているため、間違っているようです。

すべての拒否行をコメントアウトすることから始めて、同じ速度で動作することを確認します。次に、最後からゆっくりと拒否行の再追加を開始します。これらのルールはトリガーされていないと主張していますが、これは常に信頼できるとは限りません。

1
Quetza