![iptables 阻止除 http/https/ssh 之外的所有內容](https://rvso.com/image/769301/iptables%20%E9%98%BB%E6%AD%A2%E9%99%A4%20http%2Fhttps%2Fssh%20%E4%B9%8B%E5%A4%96%E7%9A%84%E6%89%80%E6%9C%89%E5%85%A7%E5%AE%B9.png)
我的 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