FTPS+chroot
20100825
以下の仕様に基づいて構築する。
1.標準のFTPは避け、FTPSの実装
→クライアント側ルータのSPI機能により、TLSハンドシェイクのパケットをドロップしてしまう場合があり、対策として標準FTPも同時に使用出来るものとする。
2.一部の特権ユーザ以外はchrootを設定し、指定したディレクトリから上層へのアクセスを制限する。
→ファイルサーバにFTPでアクセスする用途を想定し、ユーザ毎に任意の場所を指定出来る物とする。
3.その他の標準的な設定については設定されている物とする。
4.ホームディレクトリより上層へのアクセスが可能な特権ユーザ名「CentOS」
→ホームディレクトリ「/var/www」
5.ファイルサーバ用ユーザ名「Windows」
ホームディレクトリ「/win」
6.その他一般ユーザは「/home/ユーザ名」をホームディレクトリとする。
動作環境
CentOS5.x
vsftpd
FTPS(Explicit)
ファイルサーバは「Windowsの共有フォルダをLinuxでマウントして使用する方法」を採用
Linux機での作業
◆vsftpdの設定を変更
[root@Server ~]# vi /etc/vsftpd/vsftpd.conf
chroot_local_user=YES
chroot_list_enable=YES
chroot機能の有効化
特権ユーザ設定の有効化
chroot_list_file=/etc/vsftpd/chroot_conf/chroot_list
user_config_dir=/etc/vsftpd/chroot_conf
特権ユーザ設定のファイルを指定
chroot先のディレクトリを個別に設定するためのファイルを指定
ssl_enable=YES
force_local_logins_ssl=NO
force_local_data_ssl=NO
rsa_cert_file=/etc/pki/tls/certs/vsftpd.pem
FTPSの有効化
標準FTPの接続を許可する。
標準FTPの転送を許可する。
サーバ証明書
◆ホームディレクトリより上層へのアクセスが可能な特権ユーザの指定
[root@Server ~]# echo "CentOS" >> /etc/vsftpd/chroot_conf/chroot_list
「/etc/vsftpd/chroot_conf/chroot_list」にユーザ名を記述する事で指定出来ます。
◆ユーザ「CentOS」のホームディレクトリを設定
[root@Server ~]# touch /etc/vsftpd/chroot_conf/CentOS
[root@Server ~]# echo "local_root=/var/www/" >> /etc/vsftpd/chroot_conf/CentOS
◆ユーザ「Windows」のホームディレクトリ及び、chrootディレクトリを設定
[root@Server ~]# touch /etc/vsftpd/chroot_conf/Windows
[root@Server ~]# echo "local_root=/win/" >> /etc/vsftpd/chroot_conf/Windows
「/etc/vsftpd/chroot_conf/」以下にユーザ名のファイルを作成して「local_root=ディレクトリパス」と記載する。
◆サーバー証明書を作成する
[root@Server ~]# cd /etc/pki/tls/certs/
[root@Server certs]# make vsftpd.pem
Country Name (2 letter code) [GB]:JP(国名)
State or Province Name (full name) [Berkshire]:都道府県
Locality Name (eg, city) [Newbury]:市町村
Organization Name (eg, company) [My Company Ltd]:サーバ名
Organizational Unit Name (eg, section) []:空白
Common Name (eg, your name or your server's hostname) []:ホスト名
Email Address []:メールアドレス
◆起動(再起動)
[root@Server ~]# /etc/rc.d/init.d/vsftpd restart
◆たまに忘れる自動起動化設定
[root@Server ~]# chkconfig vsftpd on
終わり