CentOS 6/vsftpd



構築概要

下記の内容で構築します。

  • FTPサーバーへのアクセス禁止ユーザ管理(/etc/vsftpd/ftpusers)
  • ホームディレクトリより上層アクセス許可ユーザの管理(/etc/vsftpd/chroot_list)


設定ファイルの退避

デフォルトの設定ファイルを退避します。

# cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.rpmdefault


vsftpd設定

FTPサービスは、2種類の起動方法があります。
一つは常時起動している デーモンモード
もう一つは要求があたた場合だけ起動する inetモード
ここでは デーモンモードで運用する方法を記載します。

設定ファイルを編集します。

# vi /etc/vsftpd/vsftpd.conf

下記を追記・修正します。

  • anonymousユーザの禁止
    #anonymous_enable=YES
     ↓↓
    anonymous_enable=NO
  • ログの記録
    # xferlogファイルにログを記録
    xferlog_enable=YES
  • アスキーモードのアップロードを許可
    # アスキーモードのアップロードを許可
    ascii_upload_enable=YES
  • アスキーモードのダウンロードを許可
    # アスキーモードのダウンロードを許可
    ascii_download_enable=YES
  • ログイン時のメッセージ
    # FTPログイン時のメッセージにバージョン名などが表示されないようにする
    ftpd_banner=Welcome FTP service.
  • ホームディレクトリより上層アクセス(chroot)
    # ホームディレクトリより上層へのアクセスを禁止
    chroot_local_user=YES
    # 上記を許可するユーザのリストの有効化
    chroot_list_enable=YES
    # 上記のリストファイル名
    chroot_list_file=/etc/vsftpd/chroot_list
  • ディレクトリごと削除できるようにする
    #ls_recurse_enable=YES
     ↓↓
    ls_recurse_enable=YES
  • 日本時間のタイムスタンプを利用
    # タイムスタンプ時間を日本時間にする
    use_localtime=YES
  • PASVモード関連
    # PASVモード接続時の最小ポート番号
    pasv_min_port=40000
    # PASVモード接続時の最大ポート番号
    pasv_max_port=40029
  • SSL接続関連
    # SSLの有効化
    ssl_enable=YES
    # 証明書ファイルを指定
    rsa_cert_file=/etc/pki/tls/certs/vsftpd.pem
    # ログイン時にSSL接続を強制しない
    force_local_logins_ssl=NO
    # データ転送時にSSL接続を強制しない
    force_local_data_ssl=NO


FTPサーバーへのアクセス禁止ユーザの登録

FTPサーバーへのアクセスを禁止するユーザの登録を行います。
例としてユーザ john をホームディレクトリより上層へのアクセスを許可

# echo john >> /etc/vsftpd/ftpusers

この他に、デフォルトで登録されているユーザーアカウントがあるので下記を追記するといいです。
(※詳しくは /etc/passwd を見てFTP接続の必要性のないユーザーをすべて洗い出す)

gopher
ftp
dbus
rpc
usbmuxd
avahi-autoipd
vcsa
rtkit
abrt
apache
saslauth
postfix
qpidd
haldaemon
ntp
avahi
rpcuser
nfsnobody
pulse
gdm
webalizer
sshd
memcached
dovecot
dovenull
mysql
tcpdump


ホームディレクトリより上層アクセス許可ユーザの登録

/etc/vsftpd/chroot_list でホームディレクトリより上層へのアクセスを許可するユーザの登録を行います。
例としてユーザ john をホームディレクトリより上層へのアクセスを許可

# echo john >> /etc/vsftpd/chroot_list


SSL用サーバー証明書の作成

FTP接続用のサーバー証明書を作成します。
作成方法は Apache や Postfix で作成した方法と同様です。

# cd /etc/pki/tls/certs/
# make vsftpd.pem

QA方式なので各項入力していきます。

umask 77 ; \
        PEM1=`/bin/mktemp /tmp/openssl.XXXXXX` ; \
        PEM2=`/bin/mktemp /tmp/openssl.XXXXXX` ; \
        /usr/bin/openssl req -utf8 -newkey rsa:2048 -keyout $PEM1 -nodes -x509 -days 3650 -out $PEM2 -set_serial 0 ; \
        cat $PEM1 >  mail.pem ; \
        echo ""    >> mail.pem ; \
        cat $PEM2 >> mail.pem ; \
        rm -f $PEM1 $PEM2
Generating a 2048 bit RSA private key
..........................................................+++
.+++
writing new private key to '/tmp/openssl.EZdXzt'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:JP(国名)
State or Province Name (full name) []:Tokyo(都道府県名)
Locality Name (eg, city) [Default City]:Minato(市区町村名)
Organization Name (eg, company) [Default Company Ltd]:example.net(組織名、サイト名)
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:example.net(一般名、サーバー名)
Email Address []:webmaster@example.net(管理者メールアドレス)


自動起動設定

デーモンモードで運用するため、自動起動の設定を行います。

# chkconfig vsftpd on


起動

下記のコマンドで起動します。

# /etc/init.d/vsftpd start


動作確認

実際にLAN内、もしくはLAN外から接続して動作を確認します。
接続できない場合は、 /var/log 配下のログを確認します。




Last-modified: 2015-04-23 (木) 17:52:52 (1210d)