Centos

通過 IPTables 僅允許 SSH、FTP 和 Cloudflare 伺服器

  • May 4, 2015

我只想允許 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. 這應該允許與允許的傳入連接相關的連接能夠退出。

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