Я настраиваю свой домашний FTP с виртуальными пользователями на CentOS 6.0. Я использую следующие руководство.
Я смог запустить первый скрипт vsftpd_virtual_config_withTLS.sh успешно и настроил его соответствующим образом.
Затем я успешно запускаю сценарий добавления пользователя vsftpd_virtualuser_add.sh и настраиваю виртуального пользователя.
Затем я запускаю следующие команды, чтобы Iptables разрешал соединения через порт 21.
sudo iptables -I INPUT -p tcp --dport 21 -j ACCEPT
sudo iptables -I OUTPUT -p udp --dport 21 -j ACCEPT
sudo /sbin/service iptables save
sudo /sbin/service iptables restart
Затем я перезапускаю сервер vsftpd. Затем я пытаюсь подключиться к своему недавно настроенному ftp-серверу (шифрование: требуется явный FTP через TLS) с помощью Filezilla 3.5.0 (который использует GnuTLS: 2.10.5), и при подключении получаю следующую ошибку.
Error: GnuTLS error -53: Error in the push function.
Я пробовал другие ftp-клиенты, такие как Fireftp, но он все еще не выводит список каталогов. Я также удостоверился, что vsftpd, gnutls и filezilla являются последней версией. Однако я очень не знаком с TLS, поэтому буду благодарен за любую помощь в этой ситуации. Спасибо!
РЕДАКТИРОВАТЬ: публикация моего файла vsftpd.conf по запросу
anon_world_readable_only=NO
anonymous_enable=NO
chroot_local_user=YES
guest_enable=NO
guest_username=ftp
hide_ids=YES
listen=YES
listen_address=[redacted]
local_enable=YES
max_clients=100
max_per_ip=2
nopriv_user=ftp
pam_service_name=ftp
pasv_max_port=65535
pasv_min_port=64000
session_support=NO
use_localtime=YES
user_config_dir=/etc/vsftpd/users
userlist_enable=YES
userlist_file=/etc/vsftpd/denied_users
xferlog_enable=YES
anon_umask=027
local_umask=027
async_abor_enable=YES
connect_from_port_20=YES
dirlist_enable=NO
download_enable=NO
#
# TLS Configuration
#
ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=NO
force_local_logins_ssl=YES
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
rsa_cert_file=/etc/pki/tls/certs/vsftpd.pem
РЕДАКТИРОВАТЬ: попробовав предложение квантов, я получаю как минимум неудачный список каталогов в Filezilla. Ниже мой вывод из Filezilla.
Status: Connecting to [redacted]...
Status: Connection established, waiting for welcome message...
Response: 220 (vsFTPd 2.2.2)
Command: AUTH TLS
Response: 234 Proceed with negotiation.
Status: Initializing TLS...
Status: Verifying certificate...
Command: USER [redacted]
Status: TLS/SSL connection established.
Response: 331 Please specify the password.
Command: PASS *********
Response: 230 Login successful.
Command: SYST
Response: 215 UNIX Type: L8
Command: FEAT
Response: 211-Features:
Response: AUTH SSL
Response: AUTH TLS
Response: EPRT
Response: EPSV
Response: MDTM
Response: PASV
Response: PBSZ
Response: PROT
Response: REST STREAM
Response: SIZE
Response: TVFS
Response: UTF8
Response: 211 End
Command: OPTS UTF8 ON
Response: 200 Always in UTF8 mode.
Command: PBSZ 0
Response: 200 PBSZ set to 0.
Command: PROT P
Response: 200 PROT now Private.
Status: Connected
Status: Retrieving directory listing...
Command: PWD
Response: 257 "/"
Command: TYPE I
Response: 200 Switching to Binary mode.
Command: PASV
Response: 227 Entering Passive Mode (192,168,1,10,251,213).
Command: LIST
Error: GnuTLS error -53: Error in the push function.
Error: Connection timed out
Error: Failed to retrieve directory listing
РЕДАКТИРОВАТЬ: ошибка, похоже, связана с iptables. Моя конфигурация iptables указана ниже.
# Generated by iptables-save v1.4.7 on Wed Aug 24 00:29:05 2011
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [157:20225]
-A INPUT -p tcp -m tcp --dport 21 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 21 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 60021 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 2011 -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A INPUT -p tcp -m tcp --dport 2011 -j ACCEPT
-A INPUT -p tcp -m tcp --sport 1024:65535 --dport 64000:65535 -m state --state ESTABLISHED -j ACCEPT
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
-A OUTPUT -p tcp -m tcp --sport 20 -j ACCEPT
-A OUTPUT -p udp -m udp --dport 21 -j ACCEPT
-A OUTPUT -p udp -m udp --sport 21 -j ACCEPT
-A OUTPUT -p udp -m udp --sport 60021 -j ACCEPT
-A OUTPUT -p tcp -m tcp --sport 2011 -j ACCEPT
-A OUTPUT -p tcp -m tcp --sport 2011 -j ACCEPT
-A OUTPUT -p tcp -m tcp --sport 20 -j ACCEPT
-A OUTPUT -p tcp -m tcp --sport 64000:65535 --dport 1024:65535 -m state --state RELATED,ESTABLISHED -j ACCEPT
COMMIT
# Completed on Wed Aug 24 00:29:05 201
Изменить: при запуске запроса, предложенного ниже, я получаю следующее
grep: /usr/src/kernels/2.6.32-71.29.1.el6.x86_64-x86_64/.config: No such file or directory
Итак, ip_conntrack_ftp, похоже, загружается некорректно, и я не уверен, как это исправить.
connect_from_port_20=YES
Хотите запустить vsftpd в активном режиме? Если да, добавьте следующее правило iptables и попробуйте еще раз:
iptables -A OUTPUT -p tcp --sport 20 -j ACCEPT
Для пассивного режима попробуйте следующее:
# modprobe ip_conntrack_ftp
и:
iptables -A INPUT -p tcp --sport 1024: --dport 64000:65535 -m state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp --sport 64000:65535 --dport 1024: -m state --state ESTABLISHED,RELATED -j ACCEPT