8
Май
0

Критерий состояния соединения — conntrack ( iptables)

conntrack — контроля состояния соединения

используется для привязки к соединениям. В частности, состояние NEW выделяет пакеты, открывающие новые соединения, состояние ESTABLISHED — пакеты, принадлежащие к установленным соединениям, состоянию RELATED соответствуют пакеты, открывающие новые соединения, логически связанные с уже установленными (например, соединение данных в пассивном режиме FTP). Состояние INVALID означает, что принадлежность пакета к соединению установить не удалось.

Например, одним простым правилом

iptables -I INPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT

получается корректное пропускание всех входящих пакетов, принадлежащих установленным соединениям, и возможность фильтрации новых соединений.

Лучше заменить в предыдущем правиле ESTABLISHED на ESTABLISHED,RELATED ,

iptables -I INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

происходит правильная фильтрация протоколов, использующих связанные соединения — FTP, SIP H.323 и других. Такое простое (с точки зрения пользователя) решение сложной (с технической точки зрения) проблемы является безусловным достоинством firewall —  netfilter и ядра Linux в целом.

Кроме критерия conntrack, стоит упомянуть и его идеологического предшественника — критерий state.Он был вместо -m conntrack --ctstate ESTABLISHED,RELATED .

было
iptables -I INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

Подобные формулировки до сих пор сохраняются во многих руководствах по iptables. Однако в настоящее время критерий state считается устаревшим, и разработчики iptables рекомендуют использовать вместо него критерий conntrack. Также заметим, что критерий conntrack обладает более широкими возможностями, нежели state, и позволяет использовать дополнительную информацию о соединении, в частности, состояние самого соединения (ctstatus).

Enjoyed reading this post?
Subscribe to the RSS feed and have all new posts delivered straight to you.

Comments are closed.

Celadon theme by the Themes Boutique