>> HOME >> FC5 MENU >> FTPサーバー (vsFTPD)
FTP プロトコルは通信内容が平文 ( 暗号化せず丸見え ) ですので、セキュリティ的には非常に脆弱です。
なので、当サイトでは、LAN 内でしか使用してません。
構築後の使用には、LAN 以外 ( WAN ) からのサーバーアクセスには十分気を付けましょう。
ここでは、Fedora 標準の FTP サーバーである vsftpd を導入します。

1. vsftpd インストール
2. vsftpd の設定
1 ) vsftpd 設定ファイルの編集
3. FTP ログインできるユーザーを制限
1 ) 特定のユーザーをホームディレクトリより上層へのアクセスを許可する
2 ) 特定のユーザーを FTP 接続させないようにする
4. FTP ログインできるクライアントを制限
1 ) 特定のクライアントを許可
2 ) 特定のクライアントを拒否
5. vsftpd の起動と自動起動設定
1 ) vsftpd の起動
2 ) vsftpd の自動起動設定
6. vsftpd の動作確認
7. 公開前の準備
1. vsftpd インストール
[root@linux ~]# yum -y install vsftpd 
Loading "installonlyn" plugin
Setting up Install Process
Setting up repositories
core                                                                 [1/3]
core                      100% |=========================| 1.1 kB    00:00
updates                                                              [2/3]
updates                   100% |=========================|  951 B    00:00
extras                                                               [3/3]
extras                    100% |=========================| 1.1 kB    00:00
Reading repository metadata in from local files
Parsing package install arguments
Resolving Dependencies
--> Populating transaction set with selected packages. Please wait.
---> Downloading header for vsftpd to pack into transaction set.
vsftpd-2.0.4-1.2.i386.rpm 100% |=========================|  17 kB    00:00
---> Package vsftpd.i386 0:2.0.4-1.2 set to be updated
--> Running transaction check

Dependencies Resolved

=============================================================================
 Package                 Arch       Version          Repository        Size
=============================================================================
Installing:
 vsftpd                  i386       2.0.4-1.2        core              135 k

Transaction Summary
=============================================================================
Install      1 Package(s)
Update       0 Package(s)
Remove       0 Package(s)
Total download size: 135 k
Downloading Packages:
(1/1): vsftpd-2.0.4-1.2.i 100% |=========================| 135 kB    00:01
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing: vsftpd                       ######################### [1/1]

Installed: vsftpd.i386 0:2.0.4-1.2
Complete!
2. vsftpd の設定
1 ) vsftpd 設定ファイルの編集
[root@linux ~]# vi /etc/vsftpd/vsftpd.conf 

# Example config file /etc/vsftpd/vsftpd.conf
#
# The default compiled in settings are fairly paranoid. This sample file
# loosens things up a bit, to make the ftp daemon more usable.
# Please see vsftpd.conf.5 for all compiled in defaults.
#
# READ THIS: This example file is NOT an exhaustive list of vsftpd options.
# Please read the vsftpd.conf.5 manual page to get a full idea of vsftpd's
# capabilities.
#
# Allow anonymous FTP? (Beware - allowed by default if you comment this out).
#anonymous_enable=YES
# 匿名ユーザはログインさせない
anonymous_enable=NO

 :
 :
#
# Activate logging of uploads/downloads.
# /var/log/vsftpd.logに接続・転送を記録(1/4)
xferlog_enable=YES
 :
 :
#
# You may override where the log file goes if you like. The default is shown
# below.
# /var/log/vsftpd.logに接続・転送を記録(2/4)
xferlog_file=/var/log/vsftpd.log
#
# If you want, you can have your log file in standard ftpd xferlog format
# /var/log/vsftpd.logに接続・転送を記録(3/4)
xferlog_std_format=NO
#
# You may change the default value for timing out an idle session.
# アイドル時のタイムアウトを設定(600秒)
idle_session_timeout=600
#
# You may change the default value for timing out a data connection.
# 接続時時のタイムアウトを設定(60秒)
#data_connection_timeout=120
data_connection_timeout=60

 :
 :
#
# 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 blah FTP service.
# ログオン時のグリーティングバナー
ftpd_banner=Welcome to MountainBigRoad.JP 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_local_user=YES
# ホームディレクトリより上層へのアクセスを許可するユーザのリストの有効化
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_service_name=vsftpd
userlist_enable=YES
#enable for standalone mode
listen=YES
tcp_wrappers=YES

# user_listに書いてあるユーザ はログインさせない場合
userlist_enable=YES
# user_listに書いてあるユーザ にログインを許可する場合
userlist_enable=NO

# /var/log/vsftpd.logに接続・転送を記録(4/4)
log_ftp_protocol=YES

# タイムスタンプ時間を日本時間に合わせる
use_localtime=YES
# パッシブモードを利用にする
pasv_promiscuous=YES
# パッシブモード利用時のポート範囲(例:50000〜50030)
pasv_min_port=50000
pasv_max_port=50030
3. FTP ログインできるユーザーを制限
1 ) 特定のユーザーをホームディレクトリより上層へのアクセスを許可する
ホームディレクトリより上層へのアクセスを許可するユーザリスト /etc/vsftpd/chroot_list を編集します。
[root@linux ~]# vi /etc/vsftpd/chroot_list 

# ユーザー ( 例 : linux ) は、自ホームディレクトリより上層へのアクセスを許可
linux
2 ) 特定のユーザーを FTP 接続させないようにする
FTP 接続させないユーザーリスト /etc/vsftpd/ftpusers を編集します。
※ vsftpd.conf で userlist_enable=YES とした場合は /etc/vsftpd/user_list でも可。
[root@linux ~]# vi /etc/vsftpd/ftpusers 

# Users that are not allowed to login via ftp
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
news
uucp
operator
games
nobody
# ユーザ「fedora」をFTP接続させないように設定
fedora
4. FTP ログインできるクライアントを制限
1 ) 特定のクライアントを許可
FTPログインできるクライアントリスト /etc/hosts.allow を編集します。
[root@linux ~]# 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.」とサーバ自身は許可
vsftpd : 192.168.1. 127.0.0.1
3 ) 特定のクライアントを拒否
FTPログインできないクライアントリスト /etc/hosts.deny を編集します。
[root@linux ~]# 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!
# 『/etc/hosts.allow』で指定されたクライアント以外は全て拒否
vsftpd : ALL
5. vsftpd の起動と自動起動設定
1 ) vsftpd の起動
[root@linux ~]# service vsftpd start 
vsftpd 用の vsftpd を起動中:                                 [  OK  ]
2 ) vsftpd の自動起動設定
[root@linux ~]# chkconfig vsftpd on 
[root@linux ~]# chkconfig --list vsftpd 
vsftpd          0:off   1:off   2:on    3:on    4:on    5:on    6:off
6. vsftpd の動作確認
Windowsクライアントから実施(コマンド プロンプト)します。
[root@linux ~]# vi /etc/named.conf 
Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

# FTP接続拒否設定の確認 ( ユーザ「fedora」が拒否されるか? )
C:\> ftp 192.168.1.11 
Connected to 192.168.1.11.
220 Welcome to MountainBigRoad.JP FTP service.
User (192.168.1.11:(none)): fedora 
530 Permission denied.
Login failed.
ftp> by 
221 Goodbye.

# FTP接続の確認
C:\> ftp 192.168.1.11 
Connected to 192.168.1.11.
220 Welcome to MountainBigRoad.JP FTP service.
User (192.168.1.11:(none)): linux 
331 Please specify the password.
Password: xxxxxxxxxxx 
230 Login successful.
ftp>

# パッシブモードが有効になっているか確認
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
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:\aaaaa.txt 
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 aaaaa.txt
226 Directory send OK.
ftp: 131 bytes received in 0.00Seconds 131000.00Kbytes/sec.

# サーバよりファイルを取得する
ftp> get c:\aaaaa.txt 
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> by 
221 Goodbye.
7. 公開前の準備
外部 ( WAN ) から接続するには、ルータの設定で ポート番号20番 ( File Transfer Protocol ( Default Data Channel ) )と 21番 ( File Transfer Protocol ( Control Channel ) ) を開けてください。
また、DNS 名での接続は事前にドメイン名の取得を行っている必要があります。