Я установил пакет pure-ftpd с PureFTP 1.0.24 в Ubuntu 10.04 с помощью apt-get.
Несмотря на то, что это диапазон портов по умолчанию, я добавил файл / etc / pure-ftpd / conf / PassivePortRange, содержащий:
30000 50000
Это добавляет правильную опцию к команде при ее запуске (-p 30000:50000
), но по какой-то причине я все еще получаю соединения, пытающиеся использовать порты выше 50000. Я думаю, проблема в том, что это активные сеансы ftp, но какой смысл указывать диапазон портов, если он работает только в пассивном режиме? Тогда мне все равно нужно открыть все порты в моем брандмауэре ...
Есть ли способ указать диапазон портов для всех подключений (а не только для пассивных)?
В пассивном режиме сервер говорит клиенту подключиться обратно через случайный порт. Вы настроили сервер на использование определенного диапазона, поэтому он должен использовать только их. Этот диапазон должен быть открыт через ваш брандмауэр, чтобы разрешить соединения. (Если ваш брандмауэр не достаточно умен, чтобы просматривать пакеты FTP и добавлять динамические правила).
В активном режиме клиент просит сервер подключиться к нему через случайный порт. Поскольку клиент выбирает это, вы не можете это контролировать. Однако для работы active вам нужно только добавить правило keep-state, чтобы разрешить эти соединения с вашего сервера. вам не нужно полностью открывать все порты.
В активном режиме сервер инициирует соединение с определенным клиентом IP-адресом, поэтому сервер не имеет возможности повлиять на используемый номер порта. В этом случае вам не нужно открывать другие входящие порты, кроме 21, потому что сервер инициирует соединение для передачи данных с клиентом.
В пассивном режиме клиент открывает соединение с портом, определенным сервером, и именно здесь вступает в игру диапазон пассивных портов. Сервер выбирает свободный порт из диапазона и передает его клиенту. Это, конечно, означает, что в брандмауэре сервера должен быть открыт весь диапазон портов, что имеет последствия для безопасности.
В Linux есть изящная функция для смягчения последствий открытия большого диапазона портов для пассивного отслеживания соединений FTP - iptables. Чтобы воспользоваться этим, вам нужно убедиться, что ip_conntrack_ftp модуль загружен, а затем вы можете разрешить такой трафик # iptables -A your_chain -i your_iface -m state --state RELATED -m helper --helper ftp -j ACCEPT
(при необходимости вы можете указать диапазон портов). Это указывает iptables принимать связанные подключения, управляемые помощником conntrack FTP. Итак, если какая-либо другая служба будет прослушивать сокет в вашем диапазоне пассивных портов, iptables откажет в доступе к порту, потому что не может распознать, что он связан с FTP.