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

НОВЫЕ соединения iptables против --syn

Какая разница между:

iptables ... -m state --state NEW

и

iptables ... --syn

Первый должен выбрать НОВЫЕ соединения, но AFAIK новые соединения создаются путем отправки флага синхронизации TCP. Другой означает именно это - пакеты с флагом синхронизации.

Можете ли вы привести какие-нибудь практические примеры, когда приведенные выше команды возвращают разные результаты?

В --syn флаг полезен для проверки TCP-трафика, но NEW состояние может использоваться для других протоколов (включая TCP) лайк UDP и ICMP. Я могу сказать что NEW более общий, чем --syn Вариант TCP.

Из руководства iptables вы можете прочитать:

NEW    meaning that the packet has started a new connection,
       or otherwise associated with a connection which has not seen packets in both directions

Например, запрос DNS будет соответствовать NEW состояние, но он не будет соответствовать правилу с --syn вариант. Проще говоря, это дейтаграмма UDP.

Так же --syn Опция может использоваться для проверки пакетов TCP с комбинацией неверных флагов, чтобы отбросить их.

Кроме того, вы можете использовать оба этих параметра вместе, чтобы проверить NEW TCP потоки без --syn как первый пакет и отбросьте их, например:

$ sudo iptables -A bad_tcp_packets -p tcp ! --syn -m state --state NEW -j LOG --log-prefix "New not syn:"

Здесь мы добавляем эти типы пакетов в определяемую пользователем цепочку, называемую bad_tcp_packets быть удаленным / зарегистрированным и т.д ...