Мои iptables для FTPS с TLS в порядке?

Я пытался найти в Google iptable для моего FTPS с работающим TLS (proftpd) с killswitch iptables, который у меня сейчас есть (см. https://www.reddit.com/r/linuxquestions/comments/57mga5/is_my_iptables_killswitch_working_have_some_p/ ).

Я использую порт 10210 для FTPS и 60100 -60119 для пассивных портов, этот трафик не проходит через VPN.Я придумал это (они находятся над последними строками):

# Allow traffic via TLS FTPS
iptables -A INPUT -p tcp -m tcp --dport 10210 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
# It seems to be working without the line under
#iptables -A INPUT -p tcp -m tcp --dport 20 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -p tcp -m tcp --sport 10210:60119 --dport 60100:60119 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -p tcp -m state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -j REJECT --reject-with icmp-port-unreachable
iptables -A OUTPUT -p tcp -m tcp --dport 10210 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
# It seems to be working without the line under
#iptables -A OUTPUT -p tcp -m tcp --dport 20 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp -m tcp --sport 10210:60119 --dport 10210:60119 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT

Кажется, это работает, но, поскольку я noob iptables, мне интересно, что я сделал не так (вероятно, у меня есть;), не уверен насчет диапазонов портов и, может быть, его нужно открыть?)

РЕДАКТИРОВАТЬ У меня были проблемы с подключением, поэтому я изменил его на тот, который работает лучше

-A INPUT -p tcp -m tcp --dport 10210 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --sport 10210 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --dport 60100:60119 -j ACCEPT
-A INPUT -p tcp -m state --state ESTABLISHED -j ACCEPT
-A OUTPUT -p tcp -m tcp --dport 10210 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
-A OUTPUT -p tcp -m tcp --sport 10210 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
-A OUTPUT -p tcp -m tcp --dport 60100:60119 -j ACCEPT
-A OUTPUT -p tcp -m tcp --sport 60100:60119 -j ACCEPT

Позже, после прочтения ] http://ipset.netfilter.org/iptables-extensions.man.html , попробуйте это вместо диапазонов портов выше

iptables -A INPUT -p tcp --dport 60100:60119 -m conntrack --ctstate NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -p tcp --dport 60100:60119 -m conntrack --ctstate NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -p tcp --sport 60100:60119 -m conntrack --ctstate NEW,ESTABLISHED,RELATED-j ACCEPT

и удалите -A INPUT -p tcp -m state --state ESTABLISHED -j ACCEPT , а также мне интересно, действительно ли я должен удалить -m conntrack --ctstate NEW, ESTABLISHED для 10210, поскольку это входящий порт для FTPS?

1
задан 1 November 2016 в 14:03
1 ответ

OUTPUT часть предназначена только для подключения, который НАЧИНАЕТСЯ с сервера, он вообще не влияет на соединение, инициированное клиентом. Обычно ВЫХОД - это НЕ ФИЛЬТР , если только у вас нет специальных требований для блокировки исходящих сообщений.

ВХОД - это часть, которую вы должны фильтровать.

УСТАНОВЛЕНО и СВЯЗАННЫЕ части предназначены для соединения, которое уже инициировано и должно продолжать работать (например, как TCP после рукопожатия), и обычно соответствие выше, чем по другим правилам.

Мы можем разделить FTP-соединение на три типа:

  1. Активный FTP (простой)
  2. Пассивный FTP (простой)
  3. FTP с SSL (любой зашифрованный)

В случае активного FTP вам необходимо открыть входящие порты TCP 20 и TCP 21 и этот тип соединения редко используется, т.е. два соединения инициируются от клиента.

В случае, если ситуация с пассивным FTP еще хуже, пассивный FTP использует порт TCP 21 для команд и порт RANDOM TCP для передачи данных для любого соединения, какой порт будет указывается в FTP-ответе сервера, поэтому брандмауэр должен «прослушивать» FTP-трафик, что требует более глубокой проверки После обработки пакетов и динамического открытия порта - это нормальная ситуация. В этом случае используются помощники / модули ядра для отслеживания FTP-соединений, и это решает проблему - вам нужно только открыть TCP-порт 21.

В случае SSL - это еще более безумно,поскольку данные о СЛУЧАЙНОМ порте также зашифрованы и межсетевые экраны не могут угадать, какой порт открыть, в этом случае некоторые парни указывают количество случайных портов в конфигурациях FTP-сервера и открывают все эти порты на межсетевом экране.

Обычно порядок правил таблица фильтров обычно выглядит так:

*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m conntrack --ctstate NEW -m tcp -m multiport --dports 22,80,443 -j ACCEPT
-A INPUT -i eth1 -p tcp -m conntrack --ctstate NEW -m tcp -m multiport --dports 22,53,80,1234 -j ACCEPT
-A INPUT -i eth1 -p udp -m conntrack --ctstate NEW -m udp -m multiport --dports 53,67,123 -j ACCEPT
COMMIT

Для SSL вы можете где-нибудь добавить следующее правило

-A INPUT -p tcp -m conntrack --ctstate NEW -m tcp -m multiport --dports 21,15000:15050 -j ACCEPT
1
ответ дан 3 December 2019 в 23:39

Теги

Похожие вопросы