JITAKU_SVR_Wiki
OSはOpenSUSE11.0
以下、manがわかりやすかったのでそのまま抜粋しているところが多い。
一部自分のコメントを挿入。
真偽値オプション †
- anonymous_enable
anonymous ログインを許可するかどうかを制御する。
YES にした場合、ユーザー名 ftp と anonymous の両方を anonoymous ログインとして認識する。
- chroot_list_enable
YES に設定した場合、ログイン後にホームディレクトリへと chroot() されるローカルユーザのリストを指定できる。
- chroot_local_user を YES に設定した場合には、意味が異なってくる。~
リストはその場合、chroot() jail へと移動されないユーザ のリストとなる。
デフォルトでは、このリストは /etc/vsftpd.chroot_list ファイルであるが、
chroot_list_file 設定によってこれを変更することができる。
- chroot_local_user
YES に設定した場合、ローカルユーザは(デフォルトで)ログイン後に ホームディレクトリへと chroot() される。
- 警告
- このオプションはセキュリティに密接に関連する。
ユーザがアップロード権限を持っていたり、シェルでのアクセスができる場合は 特にである。
何をしているかを理解している場合にのみ有効にすること。
これらのセキュリティの問題は vsftpd に特有の問題ではないことに 注意してほしい。
ローカルユーザを chroot() jail に入れることができるすべての FTP デーモンにおいて、この問題がある。
- download_enable
NO に設定した場合、すべてのダウンロード要求はアクセス拒否になる。
- local_enable
ローカルユーザのログインを許可するかどうかを制御する。
YES に設定した場合、/etc/passwd にある普通のユーザアカウントを ログインに使う。
- pasv_enable
NO に設定した場合、データ接続の開始において PASV を許可しない。
- pasv_promiscuous
YES に設定した場合、 PASV セキュリティーチェックを無効にし、 制御用の接続と異なる IP アドレスからのデータ接続を許可する。
何をしているかを理解している場合にのみ有効にすること。
唯一の道理にかなった利用法は、安全なトンネルの中で使うか、
そうでなければ、おそらくは FXP(訳注: リモートホスト間転送) を容易にするためのものである。
数値オプション †
- local_max_rate
ローカルユーザの最大データ転送レート。 秒あたりのバイト数。
デフォルト: 0 (無制限)
- max_clients
スタンドアロンモードの場合に、接続可能なクライアントの最大数を指定する。
最大数を越えて接続したクライアントには、エラーメッセージを渡す。
デフォルト: 0 (無制限)
- pasv_max_port
PASV でのデータ接続に割り当てるポートの最大値。 ファイアウォールで指定するポートの範囲を狭めるのに使用できる。
デフォルト: 0 (任意のポートを使用)
- pasv_min_port
PASV でのデータ接続に割り当てるポートの最小値。 ファイアウォールで指定するポートの範囲を狭めるのに使用できる。
デフォルト: 0 (任意のポートを使用)
vsftpd.chroot_list †
通称jail(ジェイル)。このリストに書かれたユーザは自分のディレクトリ以上には行けない。サービス用のftpユーザや、レンタルサーバなどでは必須。
# more vsftpd.chroot_list
ftp
ここにユーザを追加するとオプションしだいでそのユーザに制限をかけられる。
例)
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
以上の設定で、
vsftpd.chroot_listに追加されたユーザはftpユーザ以外のディレクトリを移動することも、見ることも出来ない。
また、rootでのログインはデフォルトで認められていないので、もし、ログインが必要であれば、
# vi /etc/ftpusers
root => #root
ftpusersはログインを禁止しているユーザのリストファイルなので、この中のrootをコメントアウト
PASVモード †
常にクライアントから接続要求を行うことで、内側のFWを通過できる。
PASVモード<=>アクティブモード
pasv_enable=YES
pasv_max_port=0
pasv_min_port=0
以上の設定でPASVモードが使用可能になる。
※WindowsのftpクライアントにはPASVモードがないので注意。
iptablesでFTPの通信を許可する。
必要なモジュール:nf_conntrack_ftp
# modprobe ip_conntrack_ftp
# lsmod | gnf_conntrack_ftp
nf_conntrack_ftp 25380 0
組み込まれたことが分かる。
このモジュールをファイアーウォールに書き込む
# vi /etc/sysconfig/SuSEfirewall2
FW_LOAD_MODULES="ip_conntrack_ftp"
更にPASVモードで使用するポートを開放する。(ただし、番号を指定するわけではなく、パケットの種類で開放する。)
# vi /etc/sysconfig/scripts/SuSEfirewall2-custom
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
# SuSEfirewall stop
# SuSEfirewall start
vsftpd.logの出力 †
ログの出力がちょっと特殊なのでメモ。
参考URL:http://www.nina.jp/server/slackware/vsftpd/vsftpd.conf.html
デフォルトだと/var/log/messagesにログをためていく。
以下の項目を編集する必要がある。
xferlog_enable=YES
syslog_enable=YES
#dual_log_enable=YES (コメントアウトされている)
xferlog_std_format=NO
vsftpd.logにためていきたいのでであれば、
↓
xferlog_enable=YES
syslog_enable=NO
dual_log_enable=NO (コメントアウトをはずす)
xferlog_std_format=NO
iptablesメモ †
ESTABLISHED 通常の応答パケットか確立中コネクションの応答パケット
INVALID 既知の接続に結び付けられないパケット
NEW コネクション開始パケット
RELATED 接続を許可したpacketのprotocolに関連のあるパケット
ICMPエラー、FTPデータコネクションなどのパケット
ESTABLISHEDに関してはここではなくても通信に影響はない。
2009-05-15