Linux

Linux iptables:丟棄所有 Apache 請求,但來自單個 IP 地址的請求除外

  • October 25, 2020

我目前正在 Debian 10 伺服器上使用 Apache 建構網站。我想阻止除單個 IP 地址(我的家庭網路的公共 IP 地址)之外的所有流量到我的網站,以便我可以在建構網站時建構我的網站,而其他使用者不會訪問該站點。我想使用帶有 iptables 的伺服器防火牆來解決這個問題。我創建了以下規則:

sudo iptables --policy INPUT DROP
sudo iptables --policy OUTPUT DROP
sudo iptables --policy FORWARD DROP

iptables -A INPUT -p tcp -m multiport --dports 80,443 -s 1.2.3.4 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

iptables -A OUTPUT -p tcp -m multiport --sports 80,443 -s 1.2.3.4 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

經過幾天的測試,我得出結論,問題一定出在我的 OUTPUT 鏈上。任何見解或想法將不勝感激,謝謝!

更新:為每個請求添加 iptables-save 的輸出。

此外,經過更多測試後,似乎當我嘗試從我的作業網路以外的網路通過伺服器的 IP 地址訪問我的網站時,請求被丟棄。每當我嘗試通過域名訪問我的網站時,請求都不會被丟棄。我可能會遺漏 DNS 的某些內容嗎?

謝謝大家的幫助!

# Generated by xtables-save v1.8.2 on Sun Oct 25 00:48:27 2020
*filter
:INPUT DROP [304:18242]
:FORWARD DROP [0:0]
:OUTPUT DROP [79:6999]
-A INPUT -s 1.2.3.4 -p tcp -m multiport --dports 80,443 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A OUTPUT -d 1.2.3.4 -p tcp -m multiport --sports 80,443 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
-A OUTPUT -o lo -j ACCEPT
COMMIT
# Completed on Sun Oct 25 00:48:27 2020
# Generated by xtables-save v1.8.2 on Sun Oct 25 00:48:27 2020
*nat
:PREROUTING ACCEPT [255:14541]
:INPUT ACCEPT [4:240]
:POSTROUTING ACCEPT [1:67]
:OUTPUT ACCEPT [49:3523]
COMMIT
# Completed on Sun Oct 25 00:48:27 2020
# Generated by xtables-save v1.8.2 on Sun Oct 25 00:48:27 2020
*mangle
:PREROUTING ACCEPT [343:22686]
:INPUT ACCEPT [342:22646]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [102:10858]
:POSTROUTING ACCEPT [53:7350]
COMMIT
# Completed on Sun Oct 25 00:48:27 2020

更新:現在可以確認問題是無論我的防火牆規則如何,我仍然可以通過我的域名訪問該網站

我假設您的網路伺服器不是您家庭網路的一部分。

我假設為了設置您的 Web 伺服器,您可以通過某種類型的控制台訪問您的 Web 伺服器。我做出這個假設是因為您將 iptables 過濾器表的所有鏈(INPUT、OUTPUT、FORWARD)的預設策略更改為 DROP,這將導致與 Web 伺服器的任何遠端連接(例如 ssh)失敗。事實上,即使使用該配置,您也無法訪問環回介面。

我假設當您使用 1.2.3.4 時,您指的是您的家庭網路公共 IP。

我會通過評論要求澄清,但我在伺服器故障中還沒有足夠的聲譽。如果您願意,請隨時澄清。如果我的假設是正確的,那麼在 OUTPUT 鍊式規則中將“-s”更改為“-d”可能會解決問題。即您的 Web 伺服器從源(-s 源)1.2.3.4 接收(在 INPUT 鏈上),而您的 Web 伺服器(在 OUTPUT 鏈上)發送到(-d 目標)1.2.3.4。

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