iptables 阻止除 http/https/ssh 之外的所有內容

iptables 阻止除 http/https/ssh 之外的所有內容

我的 vps 上有這個 iptables 配置,應該運行 Wordpress。我想要做的是阻止除連接埠 80 上的 http、連接埠 443 上的 https 和連接埠 22 上的 ssh 之外的所有傳入請求。

Chain INPUT (policy ACCEPT)
    num  target     prot opt source               destination         
    1    f2b-sshd   tcp  --  anywhere             anywhere             multiport dports ssh
    
    Chain FORWARD (policy ACCEPT)
    num  target     prot opt source               destination         
    
    Chain OUTPUT (policy ACCEPT)
    num  target     prot opt source               destination         
    
    Chain f2b-sshd (1 references)
    num  target     prot opt source               destination         
    1    REJECT     all  --  [retracted_ip]       anywhere             reject-with icmp-port-unreachable
    2    REJECT     all  --  [retracted].com     anywhere             reject-with icmp-port-unreachable
    3    RETURN     all  --  anywhere             anywhere            

我在網路上找到了一些指令,但我不確定它們是否會與fail2ban衝突。

答案1

一般來說:

iptables -L -v -n --line-numbers防火牆規則依照設定和出現的順序進行處理(在、iptables -L -v -n -t nat --line-numbers和 /或類似命令的輸出中iptables-save)。

在錯誤的鍊和/或錯誤的順序中建立新規則將導致不必要的後果,破壞功能、安全性和/或鎖定有效流量。

請注意,執行低階iptables命令來管理防火牆可能並不總是最好的解決方案。據我所知,在 Ubuntu 中使用 UFW 工具是首選,並且可以與fail2ban 一起可靠地工作。


Fail2ban 建立一個或多個自訂鏈(處理阻止特定行為不當 IP 位址的大部分繁重工作),就像f2b-sshd鏈一樣。通常您讓fail2ban 管理這些鏈中的條目。

此外,fail2ban 為其在INPUT鏈中建立的自訂鏈建立規則。通常這些規則必須出現首先在 INPUT鏈,在您建立的任何其他規則之前。

在目前的防火牆配置中,當您使用帶有-A開關的 iptables 將新規則附加到 INPUT 鏈時,一切都應該有效。


執行以下命令將附加常用規則來建立允許 ssh、http 和 https 的防火牆,並阻止所有其他傳入流量。

iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp  -m tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp  -m tcp --dport 443 -j ACCEPT
iptables -A INPUT -j REJECT --reject-with icmp-host-prohibited

答案2

首先讓我們備份:)

sudo iptables-save > ./mybackup

如果您失去連線並需要 KVM,您可以輕鬆還原到備份的開始狀態

sudo iptables-restore < ./mybackup

然後就可以開始加入規則了

sudo iptables -A INPUT -d YOURIPPUBLIC -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A INPUT -d YOURIPPUBLIC  -p tcp -m tcp --dport 443 -j ACCEPT
sudo iptables -A INPUT -d YOURIPPUBLIC  -p tcp -m tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -d YOURIPPUBLIC  -p tcp -m tcp --dport 22 -j DROP
sudo iptables -A INPUT -d YOURIPPUBLIC  -j DROP

如果您想為您的執行個體以外的 IP 設定防火牆,則上述內容為 YOURIPPUBLIC : 33.33.33.33 或使用網路遮罩 33.33.33.33/32

相關,已建立 - 如果在連接之前獲得,只需跳過所有防火牆下一個規則,要獲得連接,請遵循下一個規則:)

如果你想要整個網絡

sudo iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
sudo iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp -m tcp --dport 22 -j DROP
sudo iptables -A INPUT -j DROP

您可以儲存以供稍後編輯:

iptables-save > /.mynew.iptables.list.txt

相關內容