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

Я хочу настроить свой брандмауэр IPTables таким образом, чтобы:

  • Любое новое подключение () принято
  • После получения данных:
    • Если порт назначения находится в белом списке, продолжайте разрешать соединение и любые СВЯЗАННЫЕ соединения
    • В противном случае закройте / сбросьте соединение

Я осмотрелся и даже попробовал несколько собственные конфигурации, но я не очень хорошо знаком с IPTables и не добился успеха. Моя первая попытка была такой:

iptables -F
iptables -A INPUT -I lo -j ACCEPT
iptables -A INPUT -m state --state NEW -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT //example of allowed port
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j DROP
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

Что, как я понимаю, должно выполнить следующее:

  • Принять весь трафик localhost
  • Принять все НОВЫЕ соединения
  • Принять весь трафик на порт 22
  • Отбросить весь трафик, не обрабатываемый портом 22 правило
  • (Установить правила по умолчанию для ВВОД , ВПЕРЕД и ВЫХОД ] цепочки)

Однако подключение к порту 22 по-прежнему не выполняется на connect () . В идеале, связь с 22 должна быть беспрепятственной, и connect () с любым другим портом завершается успешно, но затем соединение закрывается, когда вызывается send (...) .

2
задан 9 April 2016 в 08:07
1 ответ

Ваша установка, вероятно, будет делать то, что вы хотите, , если у вас есть служба, прослушивающая соответствующие порты . Iptables - это фильтр пакетов, а не конечная точка соединения.

3
ответ дан 3 December 2019 в 10:38

Теги

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