puttyとvsftpdでFTP over SSH

古いアプリがftpを使っている!?
PASVモードへの変更は難しくなさそうだ。
FTP over SSH、出番だ!

ftp専用ユーザの作成

useradd -s /sbin/nologin -M -d FTPで接続時のルートとしたいディレクトリパス ユーザ名
passwd ユーザ名

vsftpdの設定

今回は面倒だったのでyumでインストール後サービスとして起動

yum install vsftpd
chkconfig vsftpd on
cd /etc/vsftpd/
touch chroot_list

/etc/user_list を編集して、ftpを許可するユーザーのみを記載する。
(デフォルトでは許可しないユーザーのリスト(ブラックリスト)であるが、
 この後設定を変えて許可するユーザーのリスト(ホワイトリスト)とする。)

vsftpd.confに以下の設定をする

anonymouse_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
xferlog_enable=YES
xferlog_std_format=YES
connect_from_port_20=YES
idle_session_timeout=600
data_connection_timeout=120
ascii_upload_enable=YES
ascii_download_enable=YES
chroot_list_enable=YES
chroot_local_user=YES
chroot_list_file=/etc/vsftpd/chroot_list
listen=YES
pam_service_name=vsftpd
tcp_wrappers=YES
userlist_enable=YES
userlist_deny=NO
pasv_enable=YES
pasv_address=127.0.0.1
pasv_min_port=28376
pasv_max_port=28377

puttyの設定

[接続]-[SSH]-[トンネル]にて
源ポート:28375 送り先:localhost:21   ローカル IPv4
源ポート:28376 送り先:localhost:28376  ローカル IPv4
源ポート:28377 送り先:localhost:28377  ローカル IPv4

ftp接続時

接続先をlocalhost:28375とし、
PASVモードで接続する。