自宅に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経由で接続できるようになりました。しかし、ファイルをアップロード/ダウンロードできません。そして、なぜ、どのように設定するのかわかりません。
どんな助けでも大歓迎です!
このポートは、ルーターによってサーバーのIPとポート21にリダイレクトされます。
ただし、転送を許可するには、データ接続用にポート50000〜60000もリダイレクトする必要があります。
FTP制御接続を検査することにより、リダイレクトがなくてもTLSなし、 ルーターがスマートで必要に応じてポートを自動的に開く場合 動作する可能性があります。ただし、これは機能しませんTLSを使用制御接続は暗号化されており、ルーターはそれを検査できないためです。