web-dev-qa-db-ja.com

vsftpdを使用したファイル転送はTLSでは機能しませんが、暗号化されていない接続では機能します

自宅にUbuntuサーバーがあります。

NATリダイレクトを介してネットワークの外部からアクセスします。ポート3876を使用してFTPに接続すると、このポートはルーターによってサーバーのIPとポート21にリダイレクトされます。

これらのポート用にUbuntuファイアウォールufwを開きました。

OpenSSH                    ALLOW       Anywhere                  
20/tcp                     ALLOW       Anywhere                  
21/tcp                     ALLOW       Anywhere                  
40000:50000/tcp            ALLOW       Anywhere                  
990/tcp                    ALLOW       Anywhere                  
22/tcp                     ALLOW       Anywhere                  
80/tcp                     ALLOW       Anywhere                  
443/tcp                    ALLOW       Anywhere                  
OpenSSH (v6)               ALLOW       Anywhere (v6)             
20/tcp (v6)                ALLOW       Anywhere (v6)             
21/tcp (v6)                ALLOW       Anywhere (v6)             
40000:50000/tcp (v6)       ALLOW       Anywhere (v6)             
990/tcp (v6)               ALLOW       Anywhere (v6)             
22/tcp (v6)                ALLOW       Anywhere (v6)             
80/tcp (v6)                ALLOW       Anywhere (v6)             
443/tcp (v6)               ALLOW       Anywhere (v6)    

次に、通常のFTP接続用にvsftpdを構成し、これを/etc/vsftpd.confに追加します。

listen=NO
listen_ipv6=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
chroot_local_user=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
pasv_enable=Yes
pasv_min_port=40000
pasv_max_port=50000
allow_writeable_chroot=YES

ユーザーに接続して、ファイルをアップロードおよびダウンロードできます。

今度はTLS経由で同じことをしたいので、 https://linoxide.com/linux-how-to/configure-vsftpd-sftp-ubuntu/ のように証明書を作成し、これを追加しますto /etc/vsftpd.conf

listen=NO
listen_ipv6=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
chroot_local_user=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
pasv_enable=Yes
pasv_min_port=40000
pasv_max_port=50000
allow_writeable_chroot=YES

rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem
ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO

これで通常のFTPが無効になり、TLS経由で接続できるようになりました。しかし、ファイルをアップロード/ダウンロードできません。そして、なぜ、どのように設定するのかわかりません。

どんな助けでも大歓迎です!

3
user1082293

このポートは、ルーターによってサーバーのIPとポート21にリダイレクトされます。

ただし、転送を許可するには、データ接続用にポート50000〜60000もリダイレクトする必要があります。

FTP制御接続を検査することにより、リダイレクトがなくてもTLSなしルーターがスマートで必要に応じてポートを自動的に開く場合 動作する可能性があります。ただし、これは機能しませんTLSを使用制御接続は暗号化されており、ルーターはそれを検査できないためです。

0
Martin Prikryl