送信ポート 80 の量が多すぎる

送信ポート 80 の量が多すぎる

私のサーバーが無駄に大量の送信帯域幅を消費するという大きな問題を抱えています。サーバーの OS は CentOS 6.4 x64 で、カーネルは 2.6.32-431 です。

簡単な tcpdump ログ ファイルは次のとおりです。

20:10:17.448636 IP 76.200.77.222.broad.pt.fj.dynamic.163data.com.cn.57827 > svgmain.http: Flags [.], ack 463681, win 65520, options [nop,nop,sack 1 {460801:462241}], length 0
20:10:17.448698 IP svgmain.http > 76.200.77.222.broad.pt.fj.dynamic.163data.com.cn.57827: Flags [.], seq 468001:469441, ack 0, win 123, length 1440
20:10:17.454074 IP svgmain.http > 76.200.77.222.broad.pt.fj.dynamic.163data.com.cn.57827: Flags [.], seq 469441:470881, ack 0, win 123, length 1440
20:10:17.637167 IP 76.200.77.222.broad.pt.fj.dynamic.163data.com.cn.57827 > svgmain.http: Flags [.], ack 465121, win 65520, options [nop,nop,sack 1 {466561:468001}], length 0
20:10:17.637221 IP svgmain.http > 76.200.77.222.broad.pt.fj.dynamic.163data.com.cn.57827: Flags [.], seq 470881:472321, ack 0, win 123, length 1440
20:10:17.637230 IP svgmain.http > 76.200.77.222.broad.pt.fj.dynamic.163data.com.cn.57827: Flags [.], seq 472321:475201, ack 0, win 123, length 2880
20:10:17.638062 IP 76.200.77.222.broad.pt.fj.dynamic.163data.com.cn.57827 > svgmain.http: Flags [.], ack 468001, win 65520, length 0
20:10:17.638078 IP svgmain.http > 76.200.77.222.broad.pt.fj.dynamic.163data.com.cn.57827: Flags [.], seq 475201:478081, ack 0, win 123, length 2880
20:10:17.642977 IP 76.200.77.222.broad.pt.fj.dynamic.163data.com.cn.57827 > svgmain.http: Flags [.], ack 470881, win 65520, length 0
20:10:17.642988 IP svgmain.http > 76.200.77.222.broad.pt.fj.dynamic.163data.com.cn.57827: Flags [P.], seq 478081:480961, ack 0, win 123, length 2880

エントリは数千個以上あり、1 日あたり 100 GB 以上を消費しています。さまざまなファイアウォール ルールを試しました。私の iptables ルールは次のとおりです。

-A INPUT -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j DROP
-A INPUT -p tcp -m tcp --dport 80 -j fail2ban-HTTP
-A INPUT -p tcp -m tcp --dport 22 -j fail2ban-SSH
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -s 198.101.197.171/32 -p tcp -m tcp --dport 3306 -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m limit --limit 2/sec --limit-burst 2 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -j DROP
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
-A OUTPUT -o eth0 -p tcp -m tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT
-A OUTPUT -o eth0 -p tcp -m tcp --sport 443 -m state --state ESTABLISHED -j ACCEPT
-A fail2ban-HTTP -j RETURN
-A fail2ban-SSH -j RETURN

私はアマチュアのシステム管理者なので、このような種類の攻撃を防ぐ方法について詳しくはわかりません。

iftop はデータの受信者として変化する任意の IP を表示し、nethogs は帯域幅を占有するプロセスとして /usr/bin/httpd を表示します。iotop はアクティビティを表示しませんが、実際のファイルは読み取られていないことを通知します。

ご意見は?

答え1

はい、次のものがあります:

  • HTTPポートから大量のトラフィックが送信されている
  • nethogsはhttpdデーモンが送信していることを示しています
  • 宛先IPはインターネット上のさまざまなコンピュータです
  • iotop は何も表示しません (メモリにキャッシュされていることを意味します)

私の診断: Web サーバーを実行しています。

ウェブ サーバーのアクセス ログをチェックして、ユーザーが何にアクセスしているかを確認します。通常のトラフィックですか? 送信帯域幅を削減するために CDN の使用を検討してください。


ああ、ログには何もないんですか?

  • httpd がログを記録していると思われる場所にログを記録しているかどうか確認してください。
  • httpdを強制終了し、トラフィックをキャプチャしてからhttpdを再起動して、始めるリクエストの。
  • 巨大なファイルをダウンロードしている場合は、ダウンロードが完了するまでログが表示されないことがあります。
  • Apache を使用していますか?server-statusモジュールを有効にして、httpd が何を実行しているかを問い合わせてみましょう。

関連情報