Невозможно получить доступ к экземпляру после настройки правил iptables

Невозможно получить доступ к экземпляру после настройки правил iptables

Я пытаюсь настроить некоторые правила, чтобы заблокировать все порты, кроме 21 и 22 на TCP (SSH и FTP). Но когда я пытаюсь запустить этот скрипт, я блокирую свой экземпляр и не могу получить к нему доступ. Вот скрипт:

# Flush the FW Rules 
iptables -F
iptables -X

# Block all traffic
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP

# Allow SSH
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 22 -j ACCEPT

# Allow FTP
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 21 -j ACCEPT

# Allow ICMP (ping)
iptables -A INPUT -p icmp -j ACCEPT
iptables -A OUTPUT -p icmp -j ACCEPT

В скрипте он настраивает входящие и исходящие запросы для SSH и FTP, но почему я не могу получить к нему доступ?

решение1

  1. Для правил в OUTPUTцепочке необходимо указывать соответствие исходному порту ( --sport), а не порту назначения ( --dport).
  2. В любом случае DROPполитика в этой OUTPUTцепочке не является общепринятой практикой.
  3. Прочитайте руководство по iptables и примеры наборов правил.
  4. Чтобы избежать потери соединения, лучше использовать iptables-saveи iptables-applyинструменты.

решение2

Вам следует настроить отслеживание состояния и избавиться от -A OUTPUT ... -j ACCEPTочередей.

IPTABLES -I INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
IPTABLES -I FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
IPTABLES -I OUTPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

Приятно видеть, что вы используете явную фильтрацию исходящего трафика, но ее реализация требует больше работы.

Связанный контент