Ubuntu

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

  • August 9, 2021

我的 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 衝突。

一般來說:

防火牆規則按照設置和出現的順序進行處理(在 、 和/或類似命令的輸出iptables -L -v -n --line-numbers中)iptables -L -v -n -t nat --line-numbersiptables-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

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