Назад | Перейти на главную страницу

Разрешить только SSH, FTP и серверы Cloudflare через IPTables

Я хочу разрешить только SSH-доступ, FTP-доступ и все коммуникации между моим выделенным сервером и всеми серверами Cloudflare с использованием IPTables. Я пробовал команды ниже, но похоже, что я сам выгнал, и я не знаю, что я сделал не так:

# 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. Это должно позволить соединениям, которые связаны с разрешенными входящими соединениями, иметь возможность выходить обратно.