環境と準備
環境について
今回の実際に構築した環境です。
OS:Cent OS 6.6
レンタルサーバーVPSプラン2GB
※1GBプランも試しましたが、全く問題ありません。
vsftpd: 2.2.2
vsftpdのインストールと設定
# yum -y install vsftpd
オリジナルのvsftpd.confを保存します。
# cd /etc/vsftpd/
# cp vsftpd.conf vsftpd.conf.org
もろもろの設定をします。
# vi vsftpd.conf
-------- anonymous接続を拒否する
-------- デフォルトは『anonymous_enable=YES』
anonymous_enable=NO
-------- アスキーモードを許可する
-------- デフォルトはコメント状態
ascii_upload_enable=YES
ascii_download_enable=YES
-------- chrootを有効にする
-------- これを有効にしないと、ftpユーザーはホームディレクトリ以外も
-------- アクセス可能になってしまいます。
-------- デフォルトはコメント状態
chroot_local_user=YES
-------- chrootから除外するユーザーを設定可能にする
-------- 指定したファイルにユーザー名を記入することで、対象外となる
-------- デフォルトはコメント状態
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
-------- フォルダごとの転送を有効にする
-------- デフォルトはコメント状態
ls_recurse_enable=YES
-------- PASVモードを有効にする。
-------- 明示されていないため追記する
-------- ※ポート範囲はwellknown portを外せば良いです。
pasv_enable=YES
pasv_min_port=10500 ← PASV用ポート範囲開始番号
pasv_max_port=10550 ← PASV用ポート範囲終了番号
chroot用ファイルを作成する
-- chroot_list_enableをYESにした場合、ユーザーを指定しなくてもファイルの存在が必須
# touch chroot_list
-- 必要に応じて編集する
# vi chroot_list
grot3
iptablesの設定をする
-- ftp制御用
# iptables -A INPUT -p tcp --dport 21 -j ACCEPT
-- ftpデータ用
-- vsftpd.conf で指定したポート範囲を設定する
# iptables -A INPUT -p tcp --dport 10500:10550 -j ACCEPT
-- 設定の保存と再起動
# service iptables save
# service iptables restart
vsftpdを起動する
# service vsftpd start
Starting vsftpd for vsftpd: [ OK ]
メモ:
ユーザー制限の設定について
# vi vsftpd.conf
-------- ユーザー制限用ファイルが有効であることを確認する
-------- デフォルトは『userlist_enable=YES』
userlist_enable=YES
-------- ユーザー制限用ファイル(user_list)の動作を指定する
-------- YES=ブラックリスト、NO=ホワイトリスト
-------- デフォルトは暗黙でYES
userlist_deny=YES
メモ:
ただし、ftpusersファイル内に記載されたユーザーは、アクセスできません。
ユーザー名を入力した時点でNGとするか、パスワード入力後NGとするかの動作の違いはありますが、
どういうことでしょう?
古い仕様が残っているとか?
セキュリティ上は、user_listをホワイトリストとし、FTP用ユーザーを作成し、このユーザーのみ許可…
が良いと思います。
その他セキュリティ制限
バナー
# vi vsftpd.conf
-------- ログインした時のバナー。設定が無いとバージョン情報が出力される。
-------- デフォルトはコメント状態
ftpd_banner=Welcome to blah FTP service.
例:
------------------------------------------------------------------
<<設定なし>>
C:\>ftp 192.168.1.1
192.168.1.1 に接続しました。
220 (vsFTPd 2.2.2) ← バージョンが表示される
ユーザー (192.168.1.1:(none)):
------------------------------------------------------------------
<<設定あり>>
C:\>ftp 192.168.1.1
192.168.1.1 に接続しました。
220 Welcome to blah FTP service. ← 用意したコメントが表示される
ユーザー (192.168.1.1:(none)):
ユーザールート
-------- ルートディレクトリをユーザーのホーム下の[public_html]ディレクトリにしたい場合。
-------- ※dovecotなどでメールディレクトリがある場合、誤操作を予防するため。
-------- デフォルトは記述なし
local_root=public_html
-------- ディレクトリは事前に準備しておくため、
-------- 新規ユーザー用にデフォルトフォルダを追加する
# mkdir /etc/skel/public_html
メモ:
あとは、ログファイルの取得内容の指定を忘れずに!