FTP, passive mode и RHEL8

Мамонтовый протокол FTP предусматривает два режима работы для передачи данных – так называемые активный и пассивный режимы. Для активного режима требуется, чтобы у клиента был публичный IP-адрес и открытые порты, для пассивного – аналогичное должно быть сделано со стороны сервера. Удивительно то, что большинство современных инструкций по настройке vsftpd или proftpd предлагают просто выделить конкретный диапазон портов, прописать их в конфигурации FTP-сервера и разрешить к ним доступ в файрволе. Но зачем это делать, когда долгие годы существуют изощренные системы полностью автоматического разрешения доступа к портам при работе с FTP? А потому что по умолчанию они не работают.

Наглядный пример – RHEL8. Для чистого iptables и аналогов есть модули nf_conntrack_helper и, в частности, nf_conntrack_ftp. Интернет подсказывает, что в ядрах версии 4.7 и выше они по умолчанию отключены и требуют или ручного включения, или отдельной маркировки соединений. Но вот только у RHEL8 предлагается использовать надстройку FirewallD, мануал которого ещё в 2016 году упоминал автоматическое использование соответствующего helper-а, если в конфигурации файрвола активирован стандартный сервис ftp, открывающий доступ к 21-му порту. Так, утверждается, что в выбранном по умолчанию режиме AutomaticHelpers = system должно проверяться значение /proc/sys/net/netfilter/nf_conntrack_helper (которое в >4.7 выключено) и, в зависимости от него, будут предприниматься необходимые меры для автоматического открывания портов для передачи данных через FTP. Но проблема в том, что этого не происходит.

Практический же опыт показывает, что помимо активации в файрволе сервиса ftp всё же необходимо в firewalld.conf дописать AutomaticHelpers = on, после чего никаких отдельных настроек портов для passive mode FTP не понадобится. Отчего это не работает в режиме system в релизной версии RHEL8 – неизвестно.

This entry was posted in Софт and tagged , . Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>