Настройка iptables для поддержки пассивных FTPS-соединений

Ситуация: есть сервер, на котором крутится ProFTPd, а iptables настроен так, чтобы не разрешать лишних соединений (политика по умолчанию — DROP). При этом есть желание, чтобы FTP-сервер работал по протоколу FTPS и поддерживал пассивные соединения.

Использование модуля ip_conntrack_ftp в данном случае не поможет — управляющее соединение зашифровано, и ip_conntrack_ftp просто не сможет узнать, на какой порт идёт пассивное соединение.

Предположим, что имеются такие правила:

[-]

<span class="similitudo">View Code</span> Bash
modprobe ip_conntrack
modprobe ip_conntrack_ftp
<span class="co0"># Политика по умолчанию: отброс соединения</span>
iptables <span class="re5">-P</span> INPUT DROP
<span class="co0"># Отбрасываем соединения с неверным состоянием</span>
iptables <span class="re5">-A</span> INPUT  <span class="re5">-m</span> conntrack <span class="re5">--ctstate</span> INVALID <span class="re5">-j</span> DROP
iptables <span class="re5">-A</span> OUTPUT <span class="re5">-m</span> conntrack <span class="re5">--ctstate</span> INVALID <span class="re5">-j</span> DROP
<span class="co0"># Разрешаем установленные и относящиеся к ним соединения</span>
iptables <span class="re5">-A</span> INPUT <span class="re5">-m</span> conntrack <span class="re5">--ctstate</span> ESTABLISHED,RELATED <span class="re5">-j</span> ACCEPT
<span class="co0"># Разрешаем FTP-соединения</span>
iptables <span class="re5">-A</span> INPUT <span class="re5">-m</span> conntrack <span class="re5">--ctstate</span> NEW <span class="re5">-p</span> tcp <span class="re5">--sport</span> 1024:65535 <span class="re5">--dport</span> 20:21 <span class="re5">-j</span> ACCEPT

Данный сценарий разрешает как активные, так и пассивные (благодаря ip_conntrack_ftp) FTP-соединения без шифрования. Для поддержки шифрования нужно сделать две вещи:

  1. Явно задать в конфигурации ProFTPd список портов, которые могут быть использованы для пассивных соединений, например: PassivePorts 49000 49500 и перезапустить демон;
  2. Открыть перечисленные порты в iptables:
    <span class="codebox"><code class="bash">iptables <span class="re5">-A</span> INPUT <span class="re5">-p</span> tcp <span class="re5">--sport</span> 1024:65535 <span class="re5">--dport</span> 49000:49500 <span class="re5">-j</span> ACCEPT</code></span>

После этого пассивные FTPS-соединения будут работать.
Источник http://blog.sjinks.pro/linux/790-proftpd-ftps-iptables/

Запись опубликована в рубрике *CentOS. Добавьте в закладки постоянную ссылку.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Я не спамер This plugin created by Alexei91