Вкратце: он ДЕЙСТВИТЕЛЬНО подключается в пассивном режиме, но просто не использует порты, которые я пытаюсь использовать, несмотря на конфигурацию.
Настройки на pasv_max_port
и pasv_min_port
похоже, игнорируется, но я не вижу, что мешает vsftpd распознать или применить конфигурацию.
Я предпринял следующие действия:
[Сервер] Отредактируйте vsftpd.conf и сохраните
pasv_max_port=60000
pasv_min_port=60003
#Server's public IP (AWS EC2 Elastic IP)
pasv_address=*.*.*.*
* Я пробовал несколько других комбинаций: они показаны ниже.
[Сервер] Перезапустите vsftpd с service vsftpd restart
[Клиент (Filezilla)] Подключитесь к *. *. *. * Через порт 22 в пассивном режиме. SSL и вход в систему все идет нормально, затем он возвращает это:
Command: PASV
Trace: CFtpControlSocket::OnReceive()
Response: 227 Entering Passive Mode (*,*,*,*,254,73).
Похоже, он подключается к *.*.*.*:65097
. (И этот номер порта меняется при каждой попытке, как будто я не установил диапазон портов для использования в пассивном режиме.) Разумеется, если я настрою свой брандмауэр на закрытие всего остального, кроме порта 22 и диапазона 60000-60003, это не так. не будем продолжать.
Я пробовал другие диапазоны, такие как 62010-62019, даже перезагружал Linux, но он по-прежнему ведет себя так же.
Это конфликт с iptables ?? (Я сомневаюсь в этом, поскольку моя машина работает на экземпляре AWS EC2, так что это похоже на работу за NAT, верно?)
Ничего похожего на мой вопрос не было найдено, поэтому я подумал, что, должно быть, делаю что-то глупое, но орфография была проверена буква к букве, а строки под конфигурацией pasv_address
действительно вступает в силу (это не сработает, если я оставлю их пустыми и перезапущу vsftpd).
21
, 60000 - 60003
)amzn-main
репозиторий (vsftpd.x86_64
, 2.2.2-13.13.amzn1)cat /proc/sys/net/ipv4/ip_local_port_range
возвращается 32768 60999
Моя цель - открыть только контролируемый диапазон портов для передачи данных, и это только для одного клиента с фиксированным IP-адресом. Это означает, что я могу просто перейти в активный режим и открыть порт 20 только для этого IP-адреса, однако просто для того, чтобы придерживаться старой конфигурации текущего FTP-сервера, который нужно заменить, я бы предпочел использовать пассивный режим. -> Только что выяснил, что это должен быть пассивный режим из-за соображений безопасности на стороне клиента.
.. любая идея?
До этого я пробовал их с несколькими другими vsftpd.conf, например
pasv_enable=YES
pasv_max_port=60000
pasv_min_port=60003
port_enable=YES
pasv_addr_resolve=YES
pasv_address=*.*.*.*
И с этим мне тоже не повезло. В настоящее время я просто придерживаюсь минимума строк, необходимых для таких вещей (например, pasv_enable
является YES
по умолчанию.)
Решено: @Zdenek из раздела комментариев заметил, что в моей конфигурации была глупая ошибка:
максимальный порт должен быть выше вашего минимального порта - @ Zdenek
Итак, исправление от
pasv_max_port=60000
pasv_min_port=60003
к
pasv_max_port=60003
pasv_min_port=60000
было все, что нужно было сделать.
Я думал, что это было слишком глупо, чтобы оставлять его на этом сайте, но подумал, что может быть полезно для кого-то, кто пропустил это или ожидал, что vsftpd вернет ошибку при такой неправильной конфигурации, как эта, поэтому оставьте как есть.
Еще раз спасибо @Zdenek за проверку!