Linux
iptables ip地址塊被忽略?
在我們的伺服器上執行
top
給了我們平均負載:68.67、63.48、60.30
我們懷疑這是由於太多的 httpd 連接造成的。
跑步:
netstat -tun 2>/dev/null | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr
給我們(所有 IP 轉換為私有地址):
418 176 192.168.1.1 41 192.168.1.2 8 192.168.1.3 5 192.168.1.4 5 192.168.1.5 4 192.168.1.6 2 192.168.1.7 2 192.168.1.8 2 192.168.1.9 2 127.0.0.1 1 servers) 1 Address 1 192.168.1.10 1 192.168.1.11
正如您所看到的
192.168.1.1
(從 WAN 地址轉換而來,僅用於此處),它似乎有 176 個連接到我們的伺服器。遠端查找此 IP 可將其重新解析為 DDOS 服務。我們跑了
sudo iptables -I INPUT -m iprange --src-range 192.168.0.0-192.168.0.255 -j DROP
嘗試刪除與其完整範圍相關的所有範圍,但在執行 netstat 命令時仍會顯示請求。
IPtables 命令或 netstat 命令有問題嗎?
我們跑
sudo service iptables save sudo service httpd restart
儲存它並使其處於活動狀態,然後
sudo iptables --list
確認它已添加,它是。不確定我們是否缺少某些東西。謝謝。
更新
跑步
iptables -L -nv
節目pkts bytes target prot opt in 30179 1793K DROP all -- * * 0.0.0.0/0 0.0.0.0/0 source IP range STARTRANGE-ENDRANGE
這是否意味著
30179
請求被阻止?我們的 IPtables 也看起來像這樣(STARTRANGE/ENDRANGE 是實際的四字節地址)…
Chain INPUT (policy DROP) target prot opt source destination DROP all -- anywhere anywhere source IP range STARTRANGE-ENDRANGE DROP all -- anywhere anywhere source IP range STARTRANGE-ENDRANGE DROP all -- anywhere anywhere source IP range STARTRANGE-ENDRANGE ACCEPT tcp -- anywhere anywhere tcp dpt:http ACCEPT tcp -- anywhere anywhere tcp dpt:https ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED ACCEPT icmp -- anywhere anywhere ACCEPT all -- anywhere anywhere ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:ssh ACCEPT tcp -- anywhere anywhere tcp dpt:mysql DROP all -- anywhere anywhere source IP range STARTRANGE-ENDRANGE
縮短的 Netstat 輸出(命令執行:)
netstat -n | grep '192.168'
:tcp 0 1 OUR_SERVER_IP:44531 192.168.1.1:443 SYN_SENT tcp 0 1 OUR_SERVER_IP:44675 192.168.1.1:443 SYN_SENT tcp 0 1 OUR_SERVER_IP:44600 192.168.1.1:443 SYN_SENT tcp 0 1 OUR_SERVER_IP:44587 192.168.1.1:443 SYN_SENT tcp 0 1 OUR_SERVER_IP:44641 192.168.1.1:443 SYN_SENT tcp 0 1 OUR_SERVER_IP:44578 192.168.1.1:443 SYN_SENT tcp 0 1 OUR_SERVER_IP:44626 192.168.1.1:443 SYN_SENT tcp 0 1 OUR_SERVER_IP:44604 192.168.1.1:443 SYN_SENT tcp 0 1 OUR_SERVER_IP:44541 192.168.1.1:443 SYN_SENT tcp 0 1 OUR_SERVER_IP:44678 192.168.1.1:443 SYN_SENT tcp 0 1 OUR_SERVER_IP:44625 192.168.1.1:443 SYN_SENT tcp 0 1 OUR_SERVER_IP:44661 192.168.1.1:443 SYN_SENT tcp 0 1 OUR_SERVER_IP:44543 192.168.1.1:443 SYN_SENT tcp 0 1 OUR_SERVER_IP:44602 192.168.1.1:443 SYN_SENT tcp 0 1 OUR_SERVER_IP:44644 192.168.1.1:443 SYN_SENT tcp 0 1 OUR_SERVER_IP:44580 192.168.1.1:443 SYN_SENT tcp 0 1 OUR_SERVER_IP:44688 192.168.1.1:443 SYN_SENT tcp 0 1 OUR_SERVER_IP:44683 192.168.1.1:443 SYN_SENT tcp 0 1 OUR_SERVER_IP:44588 192.168.1.1:443 SYN_SENT tcp 0 1 OUR_SERVER_IP:44556 192.168.1.1:443 SYN_SENT tcp 0 1 OUR_SERVER_IP:44681 192.168.1.1:443 SYN_SENT tcp 0 1 OUR_SERVER_IP:44631 192.168.1.1:443 SYN_SENT
現在您終於發布了
netstat
有問題的輸出(感謝您),我們可以看到它獲取的連接幾乎肯定不是來自遠端伺服器,正如您所想的那樣。相反,您的伺服器正努力在埠 443 (HTTPS) 上啟動與該遠端伺服器的**連接。**這就是為什麼他們沒有被INPUT
鍊式規則阻止的原因;第一個數據包是出站的 - 只有遠端伺服器生成的響應被INPUT
規則阻止,連接SYN_SENT
一直保持到超時。的使用
netstat -apn
表明,建立這些連接的是系統上的 HTTPD 伺服器。您不知道您的伺服器應該這樣做的任何原因,因此您將離開仔細研究它的設置。