Web-Server

iptables 網路伺服器連接超時

  • February 21, 2012

設置好iptables後。我的網路伺服器“連接超時”。我正在嘗試根據我所閱讀的內容設置我的 iptables,這是來自另一個 serverFault 文章的 Web 伺服器的一個很好的起點。我有一個名為“iptables-setup”的文件,其中包含以下內容:

# Allow outgoing traffic and disallow any passthroughs

iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP

# Allow traffic already established to continue

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# Allow ssh, #dns, ftp and web services

iptables -A INPUT -p tcp --dport ssh -i eth0 -j ACCEPT
# DNS
# iptables -A INPUT -p tcp --dport domain -i eth0 -j ACCEPT
iptables -A INPUT -p tcp --dport ftp -i eth0 -j ACCEPT
iptables -A INPUT -p udp --dport ftp -i eth0 -j ACCEPT
iptables -A INPUT -p tcp --dport ftp-data -i eth0 -j ACCEPT
iptables -A INPUT -p udp --dport ftp-data -i eth0 -j ACCEPT
# HTTP
iptables -A INPUT -p tcp --dport 80 -i eth0 -j ACCEPT
# HTTPS
iptables -A INPUT -p tcp --dport 443 -i eth0 -j ACCEPT
# CPanel
iptables -A INPUT -p tcp --dport 2083 -i eth0 -j ACCEPT
# WHM
iptables -A INPUT -p tcp --dport 2087 -i eth0 -j ACCEPT

# Allow local loopback services

iptables -A INPUT -i lo -j ACCEPT

# Allow pings

iptables -I INPUT -p icmp --icmp-type destination-unreachable -j ACCEPT
iptables -I INPUT -p icmp --icmp-type source-quench -j ACCEPT
iptables -I INPUT -p icmp --icmp-type time-exceeded -j ACCEPT
iptables -I INPUT -p icmp --icmp-type echo-request -j ACCEPT
iptables -I INPUT -p icmp --icmp-type echo-reply -j ACCEPT

然後我執行:

% service iptables stop
Flushing firewall rules: [  OK  ]
Setting chains to policy ACCEPT: mangle filter [  OK  ]
Unloading iptables modules: [  OK  ]

% sh iptables-setup 

% service iptables save
Saving firewall rules to /etc/sysconfig/iptables: [  OK  ]

% service iptables restart
Flushing firewall rules: [  OK  ]
Setting chains to policy ACCEPT: mangle filter [  OK  ]
Unloading iptables modules: [  OK  ]
Applying iptables firewall rules: [  OK  ]

% iptables --list -n -v
Chain INPUT (policy ACCEPT 84670 packets, 33M bytes)
pkts bytes target     prot opt in     out     source               destination         
84083   33M acctboth   all  --  *      *       0.0.0.0/0            0.0.0.0/0           

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 110K packets, 52M bytes)
pkts bytes target     prot opt in     out     source               destination         
109K   52M acctboth   all  --  *      *       0.0.0.0/0            0.0.0.0/0           

Chain acctboth (2 references)
pkts bytes target     prot opt in     out     source               destination         
 116 16979            tcp  --  !lo    *       [MY_IP]        0.0.0.0/0           tcp dpt:80 
  78  158K            tcp  --  !lo    *       0.0.0.0/0            [MY_IP]       tcp spt:80 
   0     0            tcp  --  !lo    *       [MY_IP]        0.0.0.0/0           tcp dpt:25 
   0     0            tcp  --  !lo    *       0.0.0.0/0            [MY_IP]       tcp spt:25 
   0     0            tcp  --  !lo    *       [MY_IP]        0.0.0.0/0           tcp dpt:110 
   0     0            tcp  --  !lo    *       0.0.0.0/0            [MY_IP]       tcp spt:110 
   5   866            icmp --  !lo    *       [MY_IP]        0.0.0.0/0           
   3   132            icmp --  !lo    *       0.0.0.0/0            [MY_IP]       
26431   11M            tcp  --  !lo    *       [MY_IP]        0.0.0.0/0           
19622 7514K            tcp  --  !lo    *       0.0.0.0/0            [MY_IP]       
  64  4250            udp  --  !lo    *       [MY_IP]        0.0.0.0/0           
  66 10580            udp  --  !lo    *       0.0.0.0/0            [MY_IP]       
26500   11M            all  --  !lo    *       [MY_IP]        0.0.0.0/0           
19691 7524K            all  --  !lo    *       0.0.0.0/0            [MY_IP]       
   0     0            tcp  --  !lo    *       [MY_IP]        0.0.0.0/0           tcp dpt:80 
   0     0            tcp  --  !lo    *       0.0.0.0/0            [MY_IP]       tcp spt:80 
   0     0            tcp  --  !lo    *       [MY_IP]        0.0.0.0/0           tcp dpt:25 
   0     0            tcp  --  !lo    *       0.0.0.0/0            [MY_IP]       tcp spt:25 
   0     0            tcp  --  !lo    *       [MY_IP]        0.0.0.0/0           tcp dpt:110 
   0     0            tcp  --  !lo    *       0.0.0.0/0            [MY_IP]       tcp spt:110 
   1   576            icmp --  !lo    *       [MY_IP]        0.0.0.0/0           
   0     0            icmp --  !lo    *       0.0.0.0/0            [MY_IP]       
  15   600            tcp  --  !lo    *       [MY_IP]        0.0.0.0/0           
  17   720            tcp  --  !lo    *       0.0.0.0/0            [MY_IP]       
   0     0            udp  --  !lo    *       [MY_IP]        0.0.0.0/0           
   1  1016            udp  --  !lo    *       0.0.0.0/0            [MY_IP]       
  16  1176            all  --  !lo    *       [MY_IP]        0.0.0.0/0           
  18  1736            all  --  !lo    *       0.0.0.0/0            [MY_IP]       
47158   19M            all  --  !lo    *       0.0.0.0/0            0.0.0.0/0

% netstat -lntp | egrep ":80"
tcp        0      0 0.0.0.0:80                  0.0.0.0:*                   LISTEN      13687/httpd  

我為易讀性添加了空格,並且

$$ MY_IP $$被替換為我的 ip。同樣,我的問題是,我的 ipconfig 是否存在可能導致我的 Web 伺服器失敗的 HTTP 連接的問題?

您可能希望顯示iptables --list -n -v獲取完整防火牆規則綁定的輸出(包括載入的介面和模組)

然後包括netstat -lntp您想要確認 httpd 確實在埠 0.0.0.0:80 而不是 127.0.0.1 上偵聽的輸出,例如

# netstat -lntp | egrep ":80"

tcp        0      0 :::80         :::*       LISTEN      1954/httpd

**編輯:**對iptables -v --list -n輸出的響應…

假設所有缺少協議或“全部”的行都用於 icmp 和 DENY 規則,那麼與埠 80 HTTP 匹配的唯一行如下:

116 16979   tcp  --  !lo    *  [MY_IP]        0.0.0.0/0       tcp dpt:80 
78  158K   tcp  --  !lo    *   0.0.0.0/0     [MY_IP]         tcp spt:80    
 0     0   tcp  --  !lo    *   [MY_IP]        0.0.0.0/0      tcp dpt:80 
 0     0  tcp  --  !lo    *    0.0.0.0/0      [MY_IP]        tcp spt:80 

我認為目標埠與源埠混淆了。對於到 HTTP 埠的傳入流量(帶有 “tcp dpt:80” 的行),左列應該是 WAN 地址(0.0.0.0/0),目的地應該有你自己的 IP;

 116 16979   tcp  --  !lo    *       [MY_IP]    0.0.0.0/0           tcp dpt:80 

它應該看起來像這樣;

 116 16979   tcp  --  !lo    *           0.0.0.0/0    [MY_IP]      tcp dpt:80 

另一個更新::

關於您創建規則的原始腳本,我看不到輸出如何連接到輸入,因為您的輸入腳本添加了一條通用規則以允許埠 80 上的所有流量,就像這樣;

iptables -A INPUT -p tcp –dport 80 -i eth0 -j ACCEPT

但是,您的輸出中的規則使用不同的策略,其中包含一個名為“acctboth”的公共鏈,該鏈已插入到 INPUT 和 OUTPUT 鏈中。

我會檢查您是否正在載入正確的配置文件。

快速google一下,你粘貼的腳本,acctboth鏈的腳本實際上是cpanel提供的iptables規則集,用於頻寬監控;

http://forums.cpanel.net/f5/iptables-acctboth-chain-74575.html

這解釋了所有瘋狂的 !lo 和其他與您的輸入不匹配的東西……基本上重新載入您的規則是忽略您的規則集,這可能是由於安裝了“acctboth”頻寬監控鏈的任何東西。

引用自:https://serverfault.com/questions/362099