Есть сервер vsftpd с доступом через сертификат.
Подключение к серверу происходит, но при получении списка каталогов происходит ошибка.
Вот собственно конфиг:
vsftpd.confanonymous_enable=YES
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_file=/var/log/xferlog
syslog_enable=YES
xferlog_std_format=YES
vsftpd_log_file=/var/log/vsftpd.log
log_ftp_protocol=YES
chroot_local_user=YES
allow_writeable_chroot=YES
listen=YES
pam_service_name=vsftpd
tcp_wrappers=YES
pasv_enable=YES
pasv_min_port=40000
pasv_max_port=41000
ssl_enable=YES
rsa_cert_file=/etc/vsftpd/cert/cert.pem
rsa_private_key_file=/etc/vsftpd/cert/privkey.pem
Подключение к серверу проходит нормально, но клиент не получает список каталогов и отваливается.
Как это выглядит в FileZilla:
FileZilla LogСтатус: Соединяюсь с 192.168.1.20:21...
Статус: Соединение установлено, ожидание приглашения...
Статус: Инициализирую TLS...
Статус: Проверка сертификата...
Статус: TLS соединение установлено.
Статус: Авторизовались
Статус: Получение списка каталогов...
Команда: PWD
Ответ: 257 "/"
Команда: TYPE I
Ответ: 200 Switching to Binary mode.
Команда: PASV
Ответ: 227 Entering Passive Mode (10,77,59,21,118,52).
Команда: LIST
Ошибка: Соединение прервано после 20 секунд неактивности
Ошибка: Не удалось получить список каталогов
Как это выглядит в journalctl -xe:
journalctl -xeCONNECT: Client "192.168.1.24"
FTP response: Client "192.168.1.24", "220 (vsFTPd 3.0.2)"
FTP command: Client "192.168.1.24", "AUTH TLS"
FTP response: Client "192.168.1.24", "234 Proceed with negotiation."
FTP command: Client "192.168.1.24", "USER ftpuser"
[ftpuser] FTP response: Client "192.168.1.24", "331 Please specify the password."
[ftpuser] FTP command: Client "192.168.1.24", "PASS "
[ftpuser] OK LOGIN: Client "192.168.1.24"
[ftpuser] FTP response: Client "192.168.1.24", "230 Login successful."
[ftpuser] FTP command: Client "192.168.1.24", "OPTS UTF8 ON"
[ftpuser] FTP response: Client "192.168.1.24", "200 Always in UTF8 mode."
[ftpuser] FTP command: Client "192.168.1.24", "PBSZ 0"
[ftpuser] FTP response: Client "192.168.1.24", "200 PBSZ set to 0."
[ftpuser] FTP command: Client "192.168.1.24", "PROT P"
[ftpuser] FTP response: Client "192.168.1.24", "200 PROT now Private."
[ftpuser] FTP command: Client "192.168.1.24", "PWD"
[ftpuser] FTP response: Client "192.168.1.24", "257 "/""
[ftpuser] FTP command: Client "192.168.1.24", "TYPE I"
[ftpuser] FTP response: Client "192.168.1.24", "200 Switching to Binary mode."
[ftpuser] FTP command: Client "192.168.1.24", "PASV"
[ftpuser] FTP response: Client "192.168.1.24", "227 Entering Passive Mode (10,77,59,21,119,159)."
[ftpuser] FTP command: Client "192.168.1.24", "LIST"
CONNECT: Client "192.168.1.24"
FTP response: Client "192.168.1.24", "220 (vsFTPd 3.0.2)"
FTP command: Client "192.168.1.24", "AUTH TLS"
FTP response: Client "192.168.1.24", "234 Proceed with negotiation."
FTP command: Client "192.168.1.24", "USER ftpuser"
[ftpuser] FTP response: Client "192.168.1.24", "331 Please specify the password."
[ftpuser] FTP command: Client "192.168.1.24", "PASS "
[ftpuser] OK LOGIN: Client "192.168.1.24"
Если отключить ssl, то клиент спокойно подключается и получает список каталогов.
Порты 20-21 и 40000-41000 открыты.
vsftpd 3.0.2
CentOS 7
Есть ещё небольшая зацепка.
В ошибках есть строка где видно что клиент ломится прямо в корень сервера:
FileZilla:
Ответ: 257 "/"
Хотя домашняя директория пользователя /data/ftp
passwd:
ftpuser:x:1000:1000::/data/ftp:/sbin/nologin
/sbin/nologin - присутствует в /etc/shells
но если параметры
chroot_local_user и
allow_writeable_chroot изменить на NO, то он уже стучится в правильную директорию
FileZilla:
Ответ: 257 "/data/ftp"
но основная ошибка не уходит