Centos
通過 IPTables 僅允許 SSH、FTP 和 Cloudflare 伺服器
我只想允許 SSH 訪問、FTP 訪問以及我的專用伺服器和所有使用 IPTables 的 Cloudflare 伺服器之間的所有通信。我嘗試了下面的命令,但似乎我把自己踢了出去,我不知道我做錯了什麼:
# Allow FTP and SSH for our staff iptables -A INPUT -p tcp --dport 20 -j ACCEPT iptables -A OUTPUT -p tcp --dport 20 -j ACCEPT iptables -A INPUT -p tcp --dport 21 -j ACCEPT iptables -A OUTPUT -p tcp --dport 21 -j ACCEPT iptables -A INPUT -p tcp --dport 22 -j ACCEPT iptables -A OUTPUT -p tcp --dport 22 -j ACCEPT # Allow all Cloudflare IPv4 and IPv6 for i in `curl https://www.cloudflare.com/ips-v4`; do iptables -A INPUT -p tcp --source $i --dport 80 -j ACCEPT; done for i in `curl https://www.cloudflare.com/ips-v6`; do ip6tables -A INPUT -p tcp --source $i --dport 443 -j ACCEPT; done # make sure nothing comes or goes out of this box iptables -A INPUT -j DROP iptables -A OUTPUT -j DROP ip6tables -A INPUT -j DROP iptables-save > /etc/sysconfig/iptables ip6tables-save > /etc/sysconfig/ip6tables apt-get install iptables-persistent service iptables-persistent start service iptables-persistent save
執行此行後,我被 SSH 踢了:
iptables -A OUTPUT -j DROP
。FTP也不再起作用了。那裡有什麼問題??
問題在於
iptables -A OUTPUT -j DROP
埠以及如何使用埠。您已允許埠 20、21 和 22。您永遠不會將這些埠用作您的傳出埠。它們將是埠範圍內高位的隨機數。嘗試添加類似
sudo iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
在你的
iptables -A OUTPUT -j DROP
. 這應該允許與允許的傳入連接相關的連接能夠退出。