大量出站連接埠 80

大量出站連接埠 80

我的伺服器無緣無故消耗過多的傳出頻寬,這是一個重大問題。伺服器作業系統是 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

還有數千個條目,每天消耗 100GB 或更多。我嘗試了許多不同的防火牆規則。我的 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 沒有顯示任何內容(這表示它已緩存在記憶體中)

我的診斷:您正在運行一個網頁伺服器。

檢查您的網站伺服器存取日誌以了解人們正在存取哪些內容。交通正常嗎?考慮使用 CDN 來減少傳出頻寬。


哦,日誌裡什麼都沒有?

  • 您確定 httpd 正在記錄您認為記錄的位置嗎?
  • 嘗試終止 httpd,捕獲流量,然後重新啟動 httpd,以便您可以捕獲開始的請求。
  • 如果他們正在下載大文件,日誌可能會嗎?下載完成後才會出現。
  • 使用阿帕契?嘗試啟用該server-status模組,以便您可以詢問 httpd 它正在做什麼。

相關內容