Доступ по SSH заблокирован правилами iptables

Доступ по SSH заблокирован правилами iptables

Я установил следующие правила iptables, и они заблокировали мне доступ по ssh (и все остальное):

*filter

# Allow loopback
-I INPUT 1 -i lo -j ACCEPT

# Allow DNS
-A OUTPUT -p udp --dport 53 -j ACCEPT

# allow outbound connection to several website
-A OUTPUT -p tcp -d www.google.com -j ACCEPT
-A OUTPUT -p tcp -d example.com -j ACCEPT
-A OUTPUT -p tcp -d myotherwebsite.tld -j ACCEPT

#allow inbound connection after an allowed outbound
-A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

#allow me and my website to communicate
-A INPUT -s 2.2.2.2/32 -j ACCEPT
-A INPUT -s 1.1.1.1/32 -j ACCEPT

-A INPUT -s 127.0.0.1/8 -j ACCEPT

-A INPUT -j LOG
-A OUTPUT -j LOG

#drop everything else
-P INPUT DROP

COMMIT

В этом примере мой IP 1.1.1.1, мой веб-сайт 2.2.2.2, а этот сервер 3.3.3.3 Я блокирую все соединения ipv6 (мой ПК настроен только на ipv4). Я почти уверен, что эти правила работали раньше, но сейчас нет.

решение1

Добавьте правило в вашу OUTPUTцепочку, которое разрешает пакеты для уже установленных соединений. Типичное правило для добавления в ваш набор правил будет:

-A OUTPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

Для SSH-подключения это будет служить той же цели, что и правило, которое вы описали вваш предыдущий ответ. Однако он более общий и будет также применяться для разрешения двунаправленных потоков пакетов, связанных с любыми другими INPUTправилами цепочки, которые вы можете добавить в будущем, без дополнительных явных правил в вашей OUTPUTцепочке.

решение2

Похоже, что необходимо двунаправленное правило, добавление следующей строки позволяет мне получить доступ к моему серверу:

-A OUTPUT -d 1.1.1.1/32 -j ACCEPT

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