Linux

如何將 apache2 添加到 iptables?

  • March 12, 2012

我有一個具有以下 iptable 規則的 linux 伺服器:

iptables -p INPUT DROP
iptables -p OUTPUT DROP
iptables -p FORWARD DROP

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -t filter -p tcp --dport http -j ACCEPT

我有 apache2 在埠 80 上監聽。問題是,雖然本地機器可以通過主機名訪問開發機器,但沒有其他本地機器可以訪問它。如果我清除 iptable 規則,他們就可以訪問它。

我如何解決它?我嘗試將埠 80 添加到上述規則集中,但沒有奏效。

編輯,這裡是目前的 iptable 規則:

   iptables -F INPUT
iptables -F OUTPUT
iptables -F FORWARD
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -t filter -p tcp --dport http -j ACCEPT
iptables -A OUTPUT -t filter -p tcp --dport 53 -j ACCEPT
iptables -A OUTPUT -t filter -p udp --dport 53 -j ACCEPT
iptables -A OUTPUT -t filter -p tcp --dport https -j ACCEPT
iptables -A OUTPUT -t filter -p udp --dport https -j ACCEPT
iptables -A OUTPUT -t filter -p tcp --dport 445 -j ACCEPT
iptables -A OUTPUT -t filter -p tcp --dport 139 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -i eth0 -j ACCEPT
iptables -A INPUT -p tcp --dport domain -i eth0 -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -p tcp --dport http -j ACCEPT

如果您在執行 apache 的同一台機器上執行 iptables,則需要更改以下規則:

iptables -A OUTPUT -t filter -p tcp --dport http -j ACCEPT

成為

iptables -A INPUT -p tcp --dport http -j ACCEPT

您需要允許傳入流量到埠 80 而不是傳出流量。

ESTABLISHED此外,僅允許and是不夠RELATEDINPUT。您需要對OUTPUT. 添加如下規則:

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

如果您在同一台伺服器上執行 DNS 服務,則需要允許埠 53 協議 UDP,類似於您對 HTTP 所做的。

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