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

Как настроить vsftpd и iptables для прослушивания порта 21, но работать на другом порту?

У нас есть процесс Java, который содержит встроенный FTP-сервер, который я хотел бы запустить на машине RHEL5. Я не хочу запускать процесс от имени пользователя root и не хочу, чтобы клиенты указывали порт при подключении. Похоже, я смогу настроить vsftpd для прослушивания альтернативного порта (например, 20000), а затем настроить ipchains для перенаправления всего трафика с порта 21 на порт 20000. Я думаю, что конкретно мне нужно:

  1. Настройте vsftpd для прослушивания порта 20000
  2. Настроить ip_conntrack_ftp для перенаправления трафика с порта 21 на 20000

Итак, мой первоначальный вопрос: кажется ли это разумным подходом?

Для выполнения шага 1 я изменил свой vsftpd.conf, добавив в него следующую строку:

listen_port=20000

Затем я могу перезапустить vsftpd и убедиться, что он прослушивает 20000, выполнив следующие действия:

> ftp tstweb1 20000
Connected to tstweb1.pulseenergy.com.
220 (vsFTPd 2.0.5)
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (tstweb1:cclark):

И я перехожу к логину без проблем. Шаг 1 завершен.

Что касается шага 2, я не вижу загруженного модуля:

> /sbin/lsmod | grep ftp

>

Поэтому я пытаюсь загрузить его с правильной информацией о перенаправлении портов:

> /sbin/modprobe ip_conntrack_ftp ports=21,20000

И я проверяю, что он загрузился:

> /sbin/lsmod | grep ftp
ip_conntrack_ftp       41489  0 
ip_conntrack           91109  3 ip_conntrack_ftp,iptable_nat,ip_nat

Но я получаю отказ в соединении, когда пытаюсь его использовать:

> ftp tstweb1
ftp: connect: Connection refused

Я знаю, что FTP - это сложный протокол с активным и пассивным режимами и связью через несколько портов, но у меня сложилось впечатление, что ip_conntrack_ftp модуль скроет для меня многое из этого. Нужно ли мне дополнительно писать какие-то особые правила iptables?

Я думаю, что то, что вы ищете, ПРАВИЛЬНО:

iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 21 -j REDIRECT --to-port 20000

И вам нужно использовать пассивный ftp.