トップ ページ > 未分類 > vsftpd

環境と準備

環境について

今回の実際に構築した環境です。
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
メモ:
あとは、ログファイルの取得内容の指定を忘れずに!