FreeBSD 10.0 - FTP サーバ vsftpd インストール!
Updated:
「FreeBSD 10.0 - FTP サーバ vsftpd インストール」についての記録です。
(旧バージョンでの個人の作業記録を更新しました。興味がなければスルーしてください)
0. 前提条件
- 以下の作業は、リモート接続して行う。(リモートから
ssh vbox
で接続) - リモート端末は、 Linux Mint 17 マシンを想定しているが、 Unix 系 OS なら同じ。
- 設定ファイル等のテキストファイルの編集には
vi
コマンドを使用。 - 作業はリモート接続で一般ユーザから root になって行う。
- ログローテションをするので logrotate がインストール済みであること。
- SSL 証明書を使用するので OpenSSL がインストール・設定済みであること。
- 外部へ公開するなら BIND がインストール・設定済みであること。
- FTP の PASV モードで使用するポートは 4000〜4009/TCP を想定。
- 主にFreeBSDサーバー構築マニュアルを参照。
1. SSL 証明書作成
# cd /etc/ssl/
# openssl req -new -x509 -days 3650 -key server.key -out ftp.crt
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) [AU]:JP # <= 国略称(2桁)
State or Province Name (full name) [Some-State]:Shimane # <= 都道府県名
Locality Name (eg, city) []:Matsue # <= 市区町村名
Organization Name (eg, company) [Internet Widgits Pty Ltd]:mk-mode.com # <= 会社・組織名等
Organizational Unit Name (eg, section) []: # <= 部署名(空でよい)
Common Name (e.g. server FQDN or YOUR name) []:ftp.mk-mode.com # <= 管理者名(ホスト名等)
Email Address []:postmaster@mk-mode.com # <= 管理者メールアドレス
# cat server.key ftp.crt > ftp.pem
# chmod 400 ftp.*
# cd
2. pkgtools.conf 編集
make
実行時に常時設定するパラメータを設定しておく。
File: /usr/local/etc/pkgtools.conf
1
2
3
MAKE_ARGS = {
'ftp/vsftpd' => 'WITH_VSFTPD_SSL=yes', # <= 追加
}
3. vsftpd インストール
# cd /usr/ports/ftp/vsftpd
# make BATCH=yes WITH_VSFTPD_SSL=yes install clean
# cd
4. 設定ファイル編集
まず、設定ファイルに書き込み権限を付与。
# chmod 640 /usr/local/etc/vsftpd.conf
そして、編集。
File: /usr/local/etc/vsftpd.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
anonymous_enable=NO # <= 変更(匿名ログインを拒否)
local_enable=YES # <= コメント解除(ローカルログインを許可)
write_enable=YES # <= コメント解除(書き込みを許可)
local_umask=022 # <= コメント解除(新規ファイルの権限設定)
xferlog_file=/var/log/vsftpd.log # <= コメント解除(ログファイルの指定)
ascii_upload_enable=YES # <= コメント解除(アスキーモードでのアップロードを許可)
ascii_download_enable=YES # <= コメント解除(アスキーモードでのダウンロードを許可)
chroot_local_user=YES # <= コメント解除(ローカルユーザの chroot 化)
chroot_list_enable=YES # <= コメント解除(ホームディレクトリより上位への移動を禁止するユーザリストを使用)
chroot_list_file=/etc/vsftpd.chroot_list # <= コメント解除(ホームディレクトリより上位への移動を禁止するユーザリストのファイル)
ls_recurse_enable=YES # <= コメント解除(ディレクトリ単位での再帰的な削除を許可)
listen=NO # <= NO になっていることを確認(inetd での起動を許可)
# 最終行に下記を追加
pasv_enable=YES # <= PASV モード有効
pasv_addr_resolve=YES # <= pasv_address 有効
pasv_address=ftp.mk-mode.com # <= ルータの WAN 側 IP アドレス(内部のみなら不要)
pasv_min_port=4000 # <= PAXV モードの最小ポート番号
pasv_max_port=4009 # <= PAXV モードの最大ポート番号
use_localtime=YES # <= ローカルタイムを使用
ssl_enable=YES # <= SSL接続を許可
rsa_cert_file=/etc/ssl/ftp.pem # <= SSL 証明書ファイルを指定
require_ssl_reuse=NO # <= SSL セッションを再利用しない
force_local_logins_ssl=NO # <= 強制 SSL 接続を解除
force_local_data_ssl=NO # <= 強制 SSL 接続を解除
force_dot_files=YES # <= ドットファイルを表示
5. アクセス許可設定
File: /etc/hosts.allow
1
vsftpd: ALL # <= 最終行に追加
6. chroot 設定
chroot 化する(FTP サーバに接続させる)ユーザの一覧を作成。
File: /etc/vsftpd.chroot_list
1
masaru
6. inetd 設定
FTP サーバへの接続要求のあった場合のみ vsftpd を起動させるために設定ファイルを編集。(最終行に以下の記述をを追記)
File: /etc/inetd.conf
1
ftp stream tcp nowait root /usr/local/libexec/vsftpd vsftpd
7. inetd 自動起動設定
File: /etc/rc.conf
1
inetd_enable="YES" # <= 追加
8. inetd 起動
# /etc/rc.d/inetd start
Starting inetd.
9. ログローテーション設定
以下の内容のファイルを作成。
File: /usr/local/etc/logrotate.d/vsftpd
1
2
3
4
5
6
7
8
9
10
11
/var/log/vsftpd.log{
daily
rotate 4
create
nocompress
missingok
sharedscripts
postrotate
/bin/kill -HUP `cat /var/run/inetd.pid`
endscript
}
10. ファイアウォール設定
FTP サーバを外部に公開する場合は、FTP 用ポート:21/TCP、PASV モード用ポート 4000〜4009/TCP を開放する。(内部のみの場合も適切に設定する)
11. 動作確認
ローカルマシンなどから、コマンドや FTP クライアントで FTP サーバへ接続し各種操作が可能か確認する。
以上。
Comments