FTPサーバ(vsftp)の設定

FTPサーバの設定方法です。

VSFTPの設定をTips形式で紹介したいと思います。

なお、ここでは、CentOSに標準で用意されているVSFTPを利用します。

 

インストール

インストールは以下のコマンドで行います。

yum install vsftpd

 

自動起動の設定は以下のコマンドです。

chkconfig vsftpd on

 


VSFTPサーバの設定例

VSFTPDの設定ファイルは/etc/vsftpd/vsftpd.confです。

なお、設定内容は、CentOS-5のデフォルト設定から変更する所のみ記載します。

 

anonymous(匿名)ログインの禁止

デフォルトでは、anonymous(匿名)ログインが許可されていますので、これを禁止します。

anonymous_enable=NO <---anonymousでのログインを禁止

 


ログインユーザは、自身のホームディレクトリ以下のみアクセス可能とする

ログインユーザは、自身のホームディレクトリ以下のみアクセス出来るように制限をします。

これは、chroot機能を利用する事で可能になります。

chroot設定用ファイルの作成

/etc/vsftpd/chroot_listを空で作成する。

chrootの設定

vsftpd.confに以下の設定をします。

chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list

これで、ログインユーザは自身のホームディレクトリ以下の階層にしかアクセス出来なくなります。

 

アクセス出来るディレクトリを/home/user1では無く、/home/user1/public_htmlにする場合は、以下の設定を追記します。

local_root=public_html

 

chrootからの除外

chrootの制限から除外したいユーザは、/etc/vsftpd/chroot_listにユーザ名を列挙します。

user1
user2

 

 

利用可能ユーザの制限

FTPでログイン可能なユーザを限定する方法です。

デフォルトでは、/etc/vsftpd/user_listに列挙されたユーザはアクセス禁止という利用方法になっていますが、ここでは、/etc/vsftpd/user_listに列挙されたユーザのみ、FTPログイン可能になる設定を紹介します。

なお、rootなどのシステムアカウントは、デフォルトで/etc/vsftpd/ftpusersに列挙されているためもともとログイン出来ないようになっています。

vsftpd.conf

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

 

/etc/vsftpd/user_list

user1
user2

 

 

利用可能クライアントの制限

アクセス可能なクライアントをIPで制限するには、tcp wrapperを利用します。

vsftpd.confには、デフォルトでtcp_wrapperの利用が許可されていますので、後はtcp wrapperの設定を行えば制限可能です。

ここでは、172.16.0.1と192.168.1.0/24から接続可能とし、その他は全て接続不可とします。

接続不可の設定

/etc/hosts.denyに以下を追加します。

vsftpd:ALL

 

接続許可の設定

/etc/hosts.allowに以下を追加します。

vsftpd:172.16.0.1 192.168.1.

 

 

ASCIIモードの有効化

デフォルトでは、ASCIIモードが許可されていません。

おそらく、ASCIIモードを利用して外部からシステムに高負荷をかける攻撃が可能な為、その対応処置だと思われますが、もしASCIIモードを利用したなら設定を変更します。

ascii_upload_enable=YES
ascii_download_enable=YES

 

 

その他の設定項目

ここでは、あまり設定を変更する事が無いであろう項目を紹介します。

local_enable=YES <---ローカルユーザでのログインを許可/不許可
write_enable=YES <---アップロードの許可/不許可

 

 

ファイルのパーミッション

複数ユーザーで同一ディレクトリ配下を管理する場合など、ファイルやディレクトリのパーミッションを強制的に変更するには以下の設定を利用します。

local_umask=022

設定値は以下を利用します。

local_umask=077 <--Directory=700,File=600
local_umask=022 <--Directory=755,File=644(Default)
local_umask=002 <--Directory=775,File=664
local_umask=000 <--Directory=777,File=666

 

 

ログの設定

CentOSではログは/var/vsftpd.logに出力されますが、以下の設定項目を変更する事により出力を変更出来ます。

主な設定項目は以下の通りです。

use_localtime=YES

ログの日付時刻をGMTではなくローカルタイムを利用する。

dual_log_enable=YES

vsftpd形式のログとwu-ftpd形式のログを両方出力する。

vsftpd_log_file=PATH

vsftpd形式のログファイルを出力PATHを指定する。

xferlog_file=PATH

xferlog形式のログファイルを出力PATHを指定する。

xferlog_enable=YES

アップロードやダウンロードの詳細ログを出力する。出力先はvsftpdログ(/var/log/vsftpd.log)。

xferlog_std_format=NO

ログ形式をwu-ftpd形式にし、/var/log/xferlogに出力する。

log_ftp_protocol=NO

詳細なログを出力する。

設定例

use_localtime=YES (Default:NO)
dual_log_enable=YES (Default:NO)
vsftpd_log_file=/var/log/vsftpd.log (Default:/var/log/vsftpd.log)
xferlog_enable=YES (Default:NO)
xferlog_std_format=NO (Default:NO)
log_ftp_protocol=NO (Default:NO)

 


anonymous専用FTPサーバの設定

anonymous(匿名)ログイン可能なFTPサーバの設定です。

CentOS-5のデフォルトで、anonymous(匿名)ログインは利用可能となっています。

anonymous(匿名)ログイン時に共有されるディレクトリは、/var/ftp以下となります。

なお、設定ファイルは、/etc/vsftpd/vsftpd.confです。

ローカルアカウントでのログインの禁止

デフォルトの設定では、Linuxのローカルアカウントでもログイン出来るようになっています。

anonymous専用にするなら、これを無効化します。

以下の行をコメントアウトするか、明示的にNOと設定してください。

local_enable=NO

 

anonymousでのアップロードの禁止

anonymous専用の場合、多くはクライアントからのファイルのアップロードなどを禁止すべきでしょう。

以下の行をコメントアウトするか、明示的にNOと設定してください。

anon_upload_enable=NO <---anonymousのアップロード禁止
anon_mkdir_write_enable=NO <---anonymousのディレクトリ作成を禁止

以上の設定以外はデフォルトのままで、anonymous専用のFTPサーバとして利用出来ます。

 

 

anonymousでアップロードを許可する

anonymousでアップロードを許可する場合は、以下の設定をします。

anonymousでアップロードを許可

anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_umask=022

 

anonymousでアップロードしたファイルの所有者設定

anonymousでアップロードしたファイルの所有者を変更する場合の設定です。

*anonymousでのアップロードが許可されている必要があります。

chown_uploads=YES
chown_username=nobody

Leave a Comment


NOTE - You can use these HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <img localsrc="" alt="">