UnixPower on Networking
  http://www.unix-power.net/

 
 Top - Linux - CentOS vsftp




いつからなのか既に忘れてしまいましたが、LinuxでFTPサーバといえばvsftpです。一昔前ではProftpなどもありましたが、標準的なFTPサーバということでvsftpのメモです。


■基本設定


まずyumでインストールします。

# yum install vsftpd
# rpm -qa | grep vsftp
vsftpd-2.2.2-11.el6.i686


設定ファイルは/etc/vsftpd/vsftpd.confになります。これを編集します。

# vi /etc/vsftpd/vsftpd.conf

anonymous_enable=NO
use_localtime=YES


個人的な必須の設定変更として上記2点があります。


最初にanonymous ftpを無効としています。一昔前ですがanonymous ftp経由で不正侵入されたことがありそれ以来、これは必ず無効としておくべき設定と認識しています。


デフォルトではファイルをアップロードするとそのファイルの作成日時が9時間ずれて表示されます。これはデフォルトでGMTの日時が採用されているからであって、ローカルタイムを使用すべくuse_localtimeをyesにしています。



■chroot設定


ホスティングサーバなどでよくある設定ですが、FTPでログインした際に全てのディレクトリが見えるようにするのではなくそのユーザのホームディレクトリ以下のみ見えるように設定することが可能です。

# vi /etc/vsftpd/vsftpd.conf

chroot_local_user=YES
chroot_list_enable=YES
# (default follows)
chroot_list_file=/etc/vsftpd/chroot_list

# /etc/rc.d/init.d/vsftpd restart

上記の設定で基本的にユーザは自分のホームディレクトリ配下のみ見えるようになりますが/etc/vsftpd/chroot_listに記載されているユーザは例外処理として全てのディレクトリが見えるようになります。/etc/vsftpd/chroot_listはデフォルトで存在しないファイルですので新規に作成する必要があります。

# vi /etc/vsftpd/chroot_list

user1
user2
user3

1行に1ユーザづつ記載していきます。このファイルを変更してもvsftpの再起動は不要です。


■ログの採取


FTPのアップロード/ダウンロードのログを以下の設定で採取することが可能です。セキュリティ面を気にするならとっておくのもありかと。標準では/var/log/xferlogに出力されます。また、xferlog_std_formatでは標準的なフォーマットで出力するか独自のフォーマットで出力するか指定します。yesにするとwu-ftpdなどと共通のフォーマットで/var/log/xferlogに出力し、noにすると独自のフォーマットで/var/log/vsftpd.logに出力します。

# vi /etc/vsftpd/vsftpd.conf

xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=NO


■ログインユーザの制限


FTPログインできるユーザを制限することができます。

# vi /etc/vsftpd/vsftpd.conf

userlist_enable=YES
userlist_deny=NO
userlist_file=/etc/vsftpd/user_list

# /etc/rc.d/init.d/vsftpd restart


vsftpdを再起動すると自動的に/etc/vsftpd/user_listが作成されます。ここに列挙されたユーザはFTPでのログインができなくなります。

# vi /etc/vsftpd/user_list


# 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
user1
user2
user3

■データ転送量の制限

local_max_rate=<numetric>

データ転送量を制限したい場合に使用するオプションです。このオプションではbytes/sec単位で最大転送レートを指定できます。0が指定される場合と指定されない場合は無制限となります。

■無効なシェルのFTPログイン

ホスティングサーバなどにありがちなのですがFTPではログインできるけど、SSHではログイン させたくないというときがあります。ユーザのシェルはデフォルトで/bin/bashとなっているところを/bin/falseなどの無効なシェルに変更した場合、FTP/SSHどちらもロ グイン不可となります。

これをFTPのみログイン可能なように設定変更することが出来ます。

# vi /etc/pam.d/vsftpd

#%PAM-1.0
session optional pam_keyinit.so force revoke
auth required pam_listfile.so item=user sense=deny \ file=/etc/vsftpd/ftpusers onerr=succeed
#auth required pam_shells.so
auth include password-auth
account include password-auth
session required pam_loginuid.so
session include password-auth

上記の太文字の部分が変更箇所でコメントアウトしています。この変更により/bin/falseのユーザなどでもFTPではログイン可能となります。シェルの変更コマンドは以下のようになります。

# usermod -s /bin/false user



 
 Copyright(C) 2003-2015 UnixPower on Networking All rights reserved.