[Linux,vsFTPd] FTPサーバ構築
Categorys: [FTPSrv] vsFTPd -
Seizyuro @ June 17, 2008 (Tue) -
Permalink -
Comments (0) -
TrackBack (0)
Linux系のFTPサーバで有名なのはProftpdですが、vsFTPdもかなり有名です。
名前も「Very Secure FTP Daemon」の略から分かるとおり、セキュリティ面に強固なFTPサーバをスローガンにしているようです。
今回はvsftpdの構築を行いますヾ(゚∀゚)ノ
設定は割と簡単なんですが、癖がかなりあるのでそこらへんも交えながら説明したいと思います。
vsFTPdインストール
# wget ftp://ftp.aconus.com/centos4.3/vsftpd/vsftpd-2.0.4-1.i386.rpm
# rpm -Uvh vsftpd-2.0.4-1.i386.rpm
※vsftpdインストール
最新版はおやじさんの所からダウンロード可能
yumでもパッケージが提供されていますが、2008/06/17時点でバージョン2.0.1という少し古いバージョンが提供されています。
その為、pasv等一部のオプションが使えないので2.0.4を導入します。
2.0.1でもpasvを構築できますが、その構築方法の方が面倒なのでオススメできません。
リンクを貼っておくので、個人で判断してご使用下さい。
vsFTPd2.0.3以下のバージョンでpasvを使用する方法
vsFTPd設定
rpmからインストールしているものとします。
↓※変更
anonymous_enable=NO
※匿名ユーザからの接続を拒否
#xferlog_file=/var/log/vsftpd.log
↓※変更
xferlog_file=/var/log/vsftpd.log
※LOGを保存設定(/var/log/vsftpd)
xferlog_std_format=YES
↓※変更
xferlog_std_format=NO
※LOGの保存形式を規定のものに設定
#ascii_upload_enable=YES
#ascii_download_enable=YES
↓※変更
ascii_upload_enable=YES
ascii_download_enable=YES
※アスキーモードでのファイル転送を許可
#ftpd_banner=Welcome to blah FTP service.
↓※変更
ftpd_banner=Welcome to blah FTP service.
※FTPログイン時のバージョンを非表示
#chroot_list_enable=YES
↓※変更・追加
chroot_list_enable=YES
chroot_local_user=YES
※chrootを設定し、除外ユーザをvsftpd.chroot_listに記載されたユーザに限定
#chroot_list_file=/etc/vsftpd/chroot_list
↓※変更
chroot_list_file=/etc/vsftpd/chroot_list
※リスト有効化
#ls_recurse_enable=YES
↓※変更
ls_recurse_enable=YES
サブフォルダを一括でダウンロード・削除を可能にする
listen=YES
↓※変更
listen=NO
※YES=standalone、NO=xinetdで起動
※本記事ではリソース削減の為にxinetd経由で起動する
#pasv_enable=YES
↓※変更
pasv_enable=YES
※Passiveモード有効化
#pasv_address=example.com
↓※変更
pasv_address=hoge.ravenz.info
※Passive時に使用するグローバルIPアドレス、または逆引き可能なアドレスを指定
#pasv_addr_resolve=YES
↓※変更
pasv_addr_resolve=YES
※上記設定の有効化
#pasv_min_port=4000
↓※変更
pasv_min_port=4000
※Passive通信時に使用するポートの開始ポートを指定
#pasv_max_port=4029
↓※変更
pasv_max_port=4029
※Passive通信時に使用するポートの最終ポートを指定
#ssl_enable=YES
↓※変更
ssl_enable=YES
※暗号化接続を可能にする
#ssl_tlsv1=YES
↓※変更
ssl_tlsv1=YES
※暗号化接続を可能にする
#force_local_logins_ssl=NO
#force_local_data_ssl=NO
↓※変更
force_local_logins_ssl=NO
force_local_data_ssl=NO
※暗号化接続のみ許可する場合はYES、通常接続も許可する場合はNO
#rsa_cert_file=/usr/share/ssl/certs/vsftpd.pem
↓※変更
rsa_cert_file=/usr/share/ssl/certs/vsftpd.pem
※サーバ証明書の格納先
※以下は最終行に追加
local_root=public_html
※ユーザの基本ディレクトリをpublic_htmlにする
use_localtime=YES
※タイムスタンプを日本時間へ修正
# echo -n > /etc/vsftpd/chroot_list
※chroot適用外ユーザを指定する空ファイルを作成
# echo hoge >> /etc/vsftpd/chroot_list
※choot適用外のユーザを指定する場合は記述
※以下はinet起動を選択した場合のみ必要
# vi /etc/xinetd.d/vsftpd
※起動スクリプト作成
# normal, unencrypted usernames and passwords for authentication.
service ftp
{
socket_type = stream
wait = no
user = root
server = /usr/sbin/vsftpd
server_args = /etc/vsftpd/vsftpd.conf
nice = 10
disable = yes
↓※変更
disable = no
※xinetd経由での起動を有効化
flags = IPv4
}
chroot_list_enable、chroot_local_userの組み合わせはいくつかあります。
これがvsftpdのややこしい部分だったりするんですが、上記の設定だとchroot_listに記載されていないユーザはchrootされるという設定なので、一番分かりやすい設定を選択しています。
因みにchrootとは、ユーザの基本ディレクトリをシステムルートへ変更してしまう機能です。
プロバイダやレンタルサーバのFTPで自分のアカウントでログインすると、それ以上のディレクトリには行けないと思います。
それがchrootです。
chroot適用外に指定すると、全てのディレクトリやファイルにアクセスする事が出来るのでセキュリティ上危険な為、基本的にFTP等ではchrootを使用します。
Passiveについてですが、他のFQDNを指定するのは既に使用しているアドレスではDNSサーバ構築やhostsによって、サーバが主として使用しているFQDNをローカルIPアドレスに変換している可能性が高いからです。
ローカルIPアドレスに変換されてしまうと、外部ユーザが接続した時に外部からの接続にも関わらず、ローカルIPアドレスで接続を試みます。
外部からの接続なので、当然ローカルIPアドレスには接続出来ないので、接続エラーになってしまいます。
それを回避する為に、別のFQDNを指定するというワケです(゚∀゚)
サーバ証明書作成
# make proftpd.pem
※サーバ証明書作成
Country Name (2 letter code) [GB]:JP
State or Province Name (full name) [Berkshire]:BystonWell
Locality Name (eg, city) [Newbury]:Country of Lawu
Organization Name (eg, company) [My Company Ltd]:RavenzNetwork
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:ravenz.info
Email Address []:ravenz.wing@gmail.com
※上から「国」「都道府県」「市区町村」「サーバ名(適当でOK)」「空」「外部と通信する時に使用するサーバアドレス」「管理者メールアドレス」
vsFTPd起動(xinetdの場合)
※vsFTPd自動起動の設定
# /etc/rc.d/init.d/xinetd start
※vsFTPd起動
vsFTPd起動(standaloneの場合)
※vsFTPd自動起動の設定
# /etc/rc.d/init.d/vsftpd start
※vsFTPd起動
これで、FTPサーバの構築は終了です。
ルータのポート(FTP、FTP-DATA、Passive)を開いて接続確認してみてくださいヾ(゚∀゚)ノ
あとiptablesを構築している場合は、そちらの解放もお忘れなく。



劇場版 空の境界
劇場版 空の境界
劇場版 空の境界 


