FTPプロトコルでのファイル転送ツールはFFFTPなどが有名です。
このツールはとても優秀で使い勝手もよく私も使わせてもらっています。
しかし、自宅サーバへのファイル転送には一切使用しておりません。
FFFTP自体には全く問題はありませんが、FTPプロトコル自身に多少の問題があります。
こちらのFTPサーバの構築(vsFTPD)も管理者への要望が多かった為、ご紹介します。
構築後の使用には、LAN以外(WAN)からのサーバアクセスには十分に気を付けて下さい。
個人的には『WinSCPによるサーバファイル転送』をお勧めします。
# yum -y install vsftpd |
vsFTPDの設定ファイルを編集 # vi /etc/vsftpd/vsftpd.conf # Allow anonymous FTP? (Beware - allowed by default if you comment this out). 匿名ユーザはログインさせない anonymous_enable=NO # You may change the default value for timing out an idle session. アイドル時のタイムアウトを設定(300秒) idle_session_timeout=300 # You may change the default value for timing out a data connection. 接続時時のタイムアウトを設定(30秒) data_connection_timeout=30 # By default the server will pretend to allow ASCII mode but in fact ignore # the request. Turn on the below options to have the server actually do ASCII # mangling on files when in ASCII mode. # Beware that on some FTP servers, ASCII support allows a denial of service # attack (DoS) via the command "SIZE /big/file" in ASCII mode. vsftpd # predicted this attack and has always been safe, reporting the size of the # raw file. # ASCII mangling is a horrible feature of the protocol. アスキーモードでアップロード・ダウンロードを許可する ascii_upload_enable=YES ascii_download_enable=YES # You may fully customise the login banner string: ログオン時のバナー(必須ではありません。好みでどうぞ。) ftpd_banner=Welcome to kajuhome.com FTP service. # You may specify an explicit list of local users to chroot() to their home # directory. If chroot_local_user is YES, then this list becomes a list of # users to NOT chroot(). 一般ユーザはホームパスより上へアクセスさせない chroot_list_enable=YES # (default follows) ホームパスより上へアクセスさせないユーザリストファイル chroot_list_file=/etc/vsftpd/chroot_list # You may activate the "-R" option to the builtin ls. This is disabled by # default to avoid remote users being able to cause excessive I/O on large # sites. However, some broken FTP clients such as "ncftp" and "mirror" assume # the presence of the "-R" option, so there is a strong case for enabling it. ディレクトリを削除可能にする ls_recurse_enable=YES PAM認証のサービス名指定 pam_service_name=vsftpd アクセスユーザーリストファイルの使用 userlist_enable=YES 上記の「userlist_enable」の設定により、ファイル「/etc/vsftpd/user_list」内のユーザ接続方法が異なります。 YES : ファイル「/etc/vsftpd/user_list」内に指定されたユーザは拒否される NO : 「/etc/vsftpd/user_list」内の指定ユーザに関わらず接続が許可(*1)される 隠れた属性があり、以下を定義すると「アクセスユーザーリスト」に定義されたユーザの挙動が変わるので注意 定義がない(デフォルト)場合は「userlist_enable=YES」として処理されます userlist_enable=NO この設定値を「NO」にすると「/etc/vsftpd/user_list」内に指定されたユーザのみ許可(*1)される *1:ファイル「/etc/vsftpd/ftpusers」内にそのユーザが設定されていた場合は「拒否」されるので注意 tcp_wrappersを使用する tcp_wrappers=YES これ以降は任意で追加 ユーザが打ち込んだftpコマンドをログに残す(下記2つ) xferlog_std_format=NO log_ftp_protocol=YES タイムスタンプ時間を日本時間に合わせる use_localtime=YES パッシブモードを利用にする pasv_promiscuous=YES パッシブモード利用時のポート範囲(例:50000〜50030) pasv_min_port=50000 pasv_max_port=50030 |
ホームパスより上へアクセスさせないユーザ一覧 *:はじめて作成する場合、当該ファイルはないので新規作成となります # vi /etc/vsftpd/chroot_list ユーザ「linux」は、自ホームパスより上に行かせない linux FTP接続させないユーザ一覧 # vi /etc/vsftpd/user_list # vsftpd userlist # If userlist_deny=NO, only allow users in this file # If userlist_deny=YES (default), never allow users in this file, and # do not even prompt for a password. # Note that the default vsftpd pam config also checks /etc/vsftpd.ftpusers # for users that are denied. root bin daemon adm lp sync shutdown halt mail news uucp operator games nobody ユーザ「fedora」をFTP接続させないように設定 fedora 『vsFTPDの設定ファイル変更』でも述べていますが「userlist_enable」と「userlist_deny」の設定 で接続の動作が異なるので注意する事。(以下に簡単な表を纏めておきます。) ┌─────────────┐ │ /etc/vsftpd/user_list │ ┌────────┬────────┼──────┬──────┤ │ 属性名 │ 設定値 │ユーザ名あり│ユーザ名なし│ ├────────┼────────┼──────┼──────┤ │userlist_enable │ YES │ 接続不可 │ 接続可 │ ├────────┼────────┼──────┼──────┤ │ │YES(デフォルト) │ 同上 │ 同上 │ │userlist_deny ├────────┼──────┼──────┤ │ │ NO │ 接続可 │ 接続不可 │ └────────┴────────┴──────┴──────┘ 外部指定ファイルはディストリビューションやvsftpdのバージョンにより違うので注意 user_list:「/etc/vsftpd/user_list」 または 「/etc/vsftpd.user_list」 ftpusers :「/etc/vsftpd/ftpusers」 または 「/etc/vsftpd.ftpusers」 |
FTPログインできるクライアントを設定(tcp_wrappers) # vi /etc/hosts.allow # # hosts.allow This file describes the names of the hosts which are # allowed to use the local INET services, as decided # by the '/usr/sbin/tcpd' server. # プライベートアドレス「192.168.1.」とサーバ自身、グローバルアドレス「211.xxx.xxx.xxx」は許可 vsftpd : 192.168.1. 127.0.0.1 211.xxx.xxx.xxx 『/etc/hosts.allow』で指定されたクライアント以外は全て拒否 # vi /etc/hosts.deny # # hosts.deny This file describes the names of the hosts which are # *not* allowed to use the local INET services, as decided # by the '/usr/sbin/tcpd' server. # # The portmap line is redundant, but it is left to remind you that # the new secure portmap uses hosts.deny and hosts.allow. In particular # you should know that NFS uses portmap! vsftpd : ALL |
vsFTPDを起動する 【FC1 から Fedora15 / CentOS4 / CentOS5 / CentOS6 の場合】 # /etc/rc.d/init.d/vsftpd start 【Fedora16以降 / CentOS7 の場合】 # systemctl start vsftpd.service |
起動時にvsFTPDを起動する 【FC1 から Fedora15 / CentOS4 / CentOS5 / CentOS6 の場合】 # chkconfig vsftpd on 設定内容を確認 # chkconfig --list vsftpd vsftpd 0:オフ 1:オフ 2:オン 3:オン 4:オン 5:オン 6:オフ 【Fedora16以降 / CentOS7 の場合】 # systemctl enable vsftpd.service 設定内容を確認 # systemctl status vsftpd.service vsftpd.service - Vsftpd ftp daemon Loaded: loaded (/usr/lib/systemd/system/vsftpd.service; enabled) Active: active (running) since 火 2014-07-15 17:17:25 JST; 47s ago |
クライアント機より接続する(ここはWindowsのDOS窓より行ってください)
Microsoft Windows XP [Version 5.1.2600] (C) Copyright 1985-2001 Microsoft Corp. FTP接続拒否設定の確認(ユーザ「fedora」が拒否されるか?) C:\Documents and Settings\fedora>ftp ftp> op To 192.168.1.5 Connected to 192.168.1.5. 220 (vsFTPd 1.2.1) User (192.168.1.5:(none)): fedora ログインを拒否された 530 Permission denied. Login failed. FTP接続を終了 ftp> bye 221 Goodbye. FTP接続の確認 C:\Documents and Settings\fedora>ftp ftp> op To 192.168.1.5 Connected to 192.168.1.5. 220 (vsFTPd 1.2.1) User (192.168.1.5:(none)): linux ログインできた 331 Please specify the password. Password: 230 Login successful. ftp> パッシブモードの状態を確認 ftp> ls -l パッシブモードが無効になっている(*:WindowsのFTPコマンドはPASVに対応していません) 「PASVを使うことを考えてください」というメッセージ 200 PORT command successful. Consider using PASV. 150 Here comes the directory listing. -rw------- 1 500 500 2049 Oct 05 16:27 Mailbox 226 Directory send OK. ftp: 65 bytes received in 0.00Seconds 65000.00Kbytes/sec. ftp> 自ホームパス以外に移れるか確認 現在の位置確認 ftp> pwd vsFTPDでのchroot設定は、自ホームパス(/home/linux/)をトップパス(/)に擬似的に置き換えます 257 "/" /root/に移動してみる ftp> cd /root/ 拒否された 550 Failed to change directory. /etc/に移動してみる ftp> cd /etc/ 拒否された 550 Failed to change directory. ftp> サーバへファイルを転送する ftp> put c:\textfile 200 PORT command successful. Consider using PASV. 150 Ok to send data. 226 File receive OK. ftp: 60 bytes sent in 0.00Seconds 60000.00Kbytes/sec. 転送先の確認 ftp> ls -l 200 PORT command successful. Consider using PASV. 150 Here comes the directory listing. -rw------- 1 500 500 2049 Oct 05 16:27 Mailbox 転送できた -rw-r--r-- 1 500 500 57 Dec 07 17:57 textfile 226 Directory send OK. ftp: 131 bytes received in 0.00Seconds 131000.00Kbytes/sec. サーバよりファイルを取得する ftp> get textfile 200 PORT command successful. Consider using PASV. 150 Opening ASCII mode data connection for textfile (57 bytes). 226 File send OK. ftp: 60 bytes received in 0.00Seconds 60000.00Kbytes/sec. FTP接続を終了 ftp> bye 221 Goodbye. |
クライアント機より接続する(代表的なWindowsのFTPツールのFFFTPを使用します。)
以下はFFFTP操作時のログです。
FFFTP Ver.1.92 Copyright(C) 1997-2003 Sota. ---------------------------- ホスト xxx.xxx.xxx.xxx (21) に接続しています. 接続しました. 220 (vsFTPd 2.0.3) >USER linux 331 Please specify the password. >PASS [xxxxxx] 230 Login successful. >>CD c:\ >XPWD 257 "/home/linux" >TYPE A 200 Switching to ASCII mode. パッシブモードになっている。(またポートも指定範囲内である) >PASV 227 Entering Passive Mode (xxx,xxx,xxx,xxx,156,70) ダウンロードのためにホスト xxx.xxx.xxx.xxx (50006) に接続しています. 接続しました. >NLST -alL 150 Here comes the directory listing. 226 Directory send OK. ファイル一覧の取得は正常終了しました. (716 Bytes) >TYPE I 200 Switching to Binary mode. >PASV 227 Entering Passive Mode (xxx,xxx,xxx,xxx,156,89) アップロードのためにホスト xxx.xxx.xxx.xxx (50025) に接続しています. 接続しました. >STOR /home/linux/textfile 150 Ok to send data. 226 File receive OK. アップロードは正常終了しました. (1 Sec. 57 B/S). >TYPE A 200 Switching to ASCII mode. >PASV 227 Entering Passive Mode (xxx,xxx,xxx,xxx,156,75) ダウンロードのためにホスト xxx.xxx.xxx.xxx (50011) に接続しています. 接続しました. >NLST -alL 150 Here comes the directory listing. 226 Directory send OK. ファイル一覧の取得は正常終了しました. (782 Bytes) >TYPE I 200 Switching to Binary mode. >PASV 227 Entering Passive Mode (xxx,xxx,xxx,xxx,156,87) ダウンロードのためにホスト xxx.xxx.xxx.xxx (50023) に接続しています. 接続しました. >RETR /home/linux/textfile 150 Opening BINARY mode data connection for /home/linux/textfile (57 bytes). 226 File send OK. ダウンロードは正常終了しました. (1 Sec. 57 B/S). 切断しました |
WANから接続するに当たって、ルータの設定が必要です。
ルータのポート開閉は、ご自分のルータ取扱説明書をご覧ください。
DNS名で接続するには事前にドメイン名の取得を行っている必要があります。(以下は代表的なものであり、また、当サイトが使用させて頂いております)