2. vsftpd の初期セットアップ

2-1. 自動起動設定

 初期状態では vsftpd が入っていても、そのままの状態で用いることは出来ません。
 chkconfig コマンドで確認をすると、

# /sbin/chkconfig --list vsftpd
vsftpd          0:off   1:off   2:off   3:off   4:off   5:off   6:off

 このように全てのランレベルで off にされている事が確認できます。

 コマンド【 /sbin/chkconfig vsftpd on 】と入力して、サーバ起動時に自動で vsftpd デーモンが起動するように調整します。

# /sbin/chkconfig vsftpd on

 もう一度 chkconfig --list 〜コマンドを実行すると、自動実行するように設定が変わっている事が分かります。

# /sbin/chkconfig --list vsftpd
vsftpd          0:off   1:off   2:on    3:on    4:on    5:on    6:off

2-2. vsftpd の起動と停止コマンド

 vsftpd を起動しないと実際に ftp 接続のテストも行えません。
 次のようにコマンドを入力して vsftd を起動します。

# /sbin/service vsftpd start
vsftpd 用の vsftpd を起動中:                               [  OK  ]

 起動中は vsftpd のプロセスが次のように起動しています。

# ps ax | grep vsftpd
 4342 ?        S      0:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf

 なお、停止は次のように stop をかけます。

# /sbin/service vsftpd stop
vsftpd を停止中:                                           [  OK  ]

 変更した設定を有効にする場合などは、再起動をかけます。

# /sbin/service vsftpd restart
vsftpd を停止中:                                           [  OK  ]
vsftpd 用の vsftpd を起動中:                               [  OK  ]

2-3. セキュリティに関する設定(必須)

 vsftpd の設定ファイル /etc/vsftpd/vsftpd.conf では末尾に【 tcp_wrappers=YES 】という項目があります。これは TCP ラッパー(tcp_wrappers) の設定を用いる= /etc/hosts.allow と /etc/hosts.deny による制限を行う、というものです。

 この設定がないと、外部のネットワークから不正なアクセスを受ける可能性もあります。特に未知のセキュリティ・ホールが発見された場合でも、アクセスできる環境を制限しておくことで予防策がとれます。

 まず、/etc/hosts.deny ファイルでは『 全ての ftp 接続を拒否 』させます。  vi /etc/hosts.deny などでファイルを開き、次の一行を追加します。

vsftpd: ALL

 それから、許可する環境を【 /etc/hosts.allow 】に記述します。

vsftpd: .example.jp
vsftpd: 192.168.11.0/255.255.255.0

 処理の流れとしては、/etc/hosts.allow のほうが設定は優先されます。
 つまり、/etc/hosts.deny ファイルで一旦全ての接続を拒否した上、/etc/hosts.allow に記述された限られた環境に対してのみ FTP 接続を許可するというものです。

 もし接続が許可されていなければ、接続を試みても ftp クライアント(ftp ソフト) 側では次のようにエラーが表示されます。

$ ftp 192.168.1.3
Connected to 192.168.1.3.
421 Service not available.

 もしクライアントから接続ができず、応答コード 421 (Service not available)が表示されている場合、/etc/hosts.allow などセキュリティ上のアクセス制限がかけられている事を疑った方が良いです。

 アクセスが正常に許可されていれば、次のように FTP 応答があります。

$ ftp 192.168.11.253
Connected to 192.168.11.253.
220 (vsFTPd 2.0.3)
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (192.168.11.253:akane):

2-4. xinetd 経由で vsftpd を呼び出す方法

 前項では vsftpd デーモンを起動させる方法を書きましたが、xinetd を経由し、都度 vsftpd を呼び出す方法があります。
 この方式のメリットは /var/log/secure 中に不正なアクセスがあったか、あるいは正常なアクセスがあったかなど、ログの記録が可能になります。

 設定は、まず vsftpd デーモンの停止を行います。

# /sbin/service vsftpd stop
# /sbin/chkconfig vsftpd off

 vsftpd.conf を開いて設定項目を編集します。

# vi /etc/vsftpd/vsftpd.conf

 ファイル 109 行目の listen=YES を 【 listen=NO 】へ書き換えます。

listen=NO

 この作業を行っておかないと、あとで「500 OOPS: could not bind listening IPv4 socket」とエラーが表示され、正しく ftp 接続が出来なくなります。

 次に xinetd 用の設定ファイルを作成します。

# vi /etc/xinetd.d/vsftpd
ファイルには次のような記述を行います。
service ftp
{
        disable = no
        socket_type             = stream
        wait                    = no
        user                    = root
        server                  = /usr/sbin/vsftpd
}

 設定を有効にするため、xinetd の再起動をかけます。

# /sbin/service xinetd restart
xinetd を停止中:                                           [  OK  ]
xinetd を起動中:                                           [  OK  ]

 これで xinetd 経由で vsftpd の接続を行うことが出来ます。

 接続が拒否されると、ftp クライアント(ftpでサーバに繋ごうとしてる人)には次のように応答コード 421 が返されます。

$ ftp 192.168.11.253
Connected to 192.168.11.253.
421 Service not available, remote server has closed connection

 また、vsftpd がセットアップされているサーバ側では xinted が接続を拒否した旨の記録が残ります。対象ログファイルは /var/log/secure です。

Jun 19 18:41:16 sion xinetd[4659]: FAIL: ftp libwrap from=192.168.11.254

 メッセージはそれぞれ次のような意味があります。

Jun 19 18:41:16,ログに残された日時 sion,ホスト名(たとえばホスト名が sakura なら、sakura と出ます) xinetd[4659]: ,xinetd による記録。[xinetd のプロセス ID] FAIL: ,接続状況 = FAIL = 失敗 ftp ,サービス名 = この場合は ftp サービス libwrap from=192.168.11.254, 接続元が 192.168.11.254  つまり、192.168.11.253 から sion サーバにアクセスがあった。だが、接続は拒否(FAIL)されたという意味です。



トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: Mon, 15 May 2006 12:06:28 JST (4152d)