Redhat9.0 : vsftpdの設定

2003.05.14


上へ
RedHat8.0!
RPMの使い方
SNMPの使い方
vsftpd(RedHat8.0)
vsftpd(RedHat9)
ftpクライアント
vsftpd対策
TripWire
RedHat9

Index

bulletvsftpdについて
bullet手順
bulletトラブル
bulletvsftpdの設定
bulletアクセス制御
bulletコンフィグレーション
bullet/etc/vsftpd/vsftpd.conf
bullet/etc/passwd
bulletその他のファイル

horizontal rule

vsftpdについて

Very Secure FTPD(vsftpd)と名乗っているくらいセキュリティ重視のftpdです。

手順

RedHat9.0では,xinetd経由でなく,Standaloneで起動されるようになりました。

トラブル

私の環境では,syslog ( /var/log/message または,USERファシリティのログファイル)に次のメッセージが出ました。

Apr 6 18:46:47 localhost vsftpd: warning: can't get client address: Bad file descriptor

vsftpd.confで,「tcp_wrappers=YES」(RedHat9のデフォルト)となっており,tcp_wrappersを使用していいます。vsftpdの不良で,tcp_wrappersが出力しているメッセージです。

対処は,次の通り。

bullettcp_wrappers=NO」とし,tcp_wrappersを使用しない。
/etc/hosts.allowが使えないため,IPアドレスによる拒絶など出来なくなるデメリットがあります。
bullet無視する
特に,メッセージが出る以外は,/etc/hosts.allowなども有効なので,そのまま使うという考えもあります。
bullet最新版を待つ。

RedHatのBugzillaでvsftpdの不良という情報がありました。<http://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=89765>)

以下のサイトで最新版が公開されていますね。

bulletRPM   ftp://ftp.redhat.com/pub/redhat/linux/rawhide/i386/RedHat/RPMS/vsftpd-1.1.3-9.1.i386.rpm
bulletSRPM ftp://ftp.redhat.com/pub/redhat/linux/rawhide/SRPMS/SRPMS/vsftpd-1.1.3-9.1.src.rpm

vsftpdの設定

コマンド

説明
# rpm -ivh vsftpd-1.1.3-8.i386.rpm rpmでインストールをする
# chkconfig --level 2345 vsftpd on

 

vsftpd は,デフォルトでは起動されていない。起動されるように設定を変更する。

chkconfigは,初期起動デーモンを指定するコマンドである。

chkconfig --list でどのRUNレベルで,デーモンが起動されるのかが判る。

# /etc/init.d/vsftpd start vsftpdを起動する。

アクセス制御

StandAloneモードで起動となり,アクセス制御はtcp_wrappers を使用することになりました。tcp_wrapperを使用する場合,トラブルがあります。

アクセス制御を使用する場合,以下の2つのファイルが関係します。

bullet/etc/vsftpd/vsftpd.conf
bulletデフォルトで,tcp_wrappersを使用する設定になっているので,設定は不要です。
bullet/etc/hosts.allow
bullet許可する(しない)ホストを指定します。(/etc/hossts.deneyでも指定可能)

□ /etc/vsftpd/vsftpd.conf

パラメータ

説明
tcp_wrapperの指定
tcp_wrappers=YES (defualt=NO) vsftpdがStandAloneモードの場合,tcp_wrappersを有効にします。

□ /etc/hosts.allow

パラメータ

説明
vsftpd : {IPアドレス} : {ALLOW|DENEY|パラメータ} IPアドレス - アクセス制御対象のIPアドレス,ネットワークアドレス

{ALLOW|DENEY|パラメータ}
Allow 許可する
DENY 許可しない
パラメータ vsftpdのパラメータ設定する

 

/etc/hosts.allow の例
vsftpd : ALL : DENY 全てのホストからの設定を拒絶する
vsftpd : ALL : Allow 全てのホストからの設定を許可する
vsftpd : 127. : setenv VSFTPD_LOAD_CONF /etc/vsftpd/vsftpd.conf.127 「127.」から始まるIPアドレスは,「/etc/vsftpd/vsftpd.conf.127」のパラメータでvsftpdを実行する。
/etc/hosts.allow の具体的な例 127.0.0.1」のアドレスは,「vsftpd.conf.FAST」のパラメータでアクセさせる。

192.」で始まるアドレスは,「vsftpd.conf.SLOW」のパラメータでアクセさせる。

その他は,通常の「/etc/vsftpd/vsftpd.conf」の設定でアクセスさせる。

IPアドレスによって,ログを分けたり,転送レートの制限を変えたりすることができます。

vsftpd : 127.0.0.1 : setenv VSFTPD_LOAD_CONF /etc/vsftpd/vsftpd.conf.FAST
vsftpd : 192. : setenv VSFTPD_LOAD_CONF /etc/vsftpd/vsftpd.conf.SLOW
vsftpd : ALL : ALLOW

 

コンフィグレーション

□ /etc/vsftpd/vsftpd.conf

/etc/vsftpd/vsftpd.conf でコンフィグレーション可能です。使えそうなコンフィグレーションはこんな感じかな。man vsftpd.confで詳細な説明が読めます。

パラメータ

説明
ログ関係
xferlog_std_format=NO
log_ftp_protocol=YES
クライアントが打ち込んだftpコマンドがログに残ります。xferlog_std_format=YESだと,転送時のコマンドしか残らないのですが,これだと,いろいろと悪さの後が判ります。
anonymous ftp のルートディレクトリを変更する
anon_root={ディレクトリ名} (default 未設定)
 
Anonymous ftpのログインディレクトリを設定する。

デフォルトは,/etc/passwdのftpユーザのホームディレクトリになる。

anonymous ftp を制限する
anonymous_enable=NO (default=YES)
 
Anonymous ftpユーザを許可しない(=NO)
anon_max_rate=50000 転送レートを制限する。回線の細いADSLで運用していると,他からアクセスされるときついんですよ。
単位はバイトです。
anonymous ftp のパスワードを制限する。
deny_email_enable=YES (default=NO)
 
/etc/vsftpd.banned_emailsでかかれているE-Mailアドレスで,Anonymous ftpログインさせない。

ftpサーバへアタックされた時などで,使用する。(と良いらしい)

/etc/vsftpd.banned_emails は,事前に作成しておく必要がある。

/etc/vsftpd.banned_emails の例
IEUser@ IEからのftpアクセスで,E-Mailアドレスを指定していないユーザを許さない。

注意: そのEMailアドレスを1行分と評価します。空白「 」があれば,それも含めて比較します。「#」も1文字となります。

ユーザ を制限する
userlist_enable=NO (default=NO) /etc/vsftpd.user_list を使用しない。(デフォルト)

/etc/vsftpd.ftpusers で指定されているユーザを拒絶します。

userlist_enable=YES (default=NO)
userlist_deny=NO (default=YES)
 
/etc/vsftpd.user_listに書いてあるユーザのみログインさせる

/etc/vsftpd.ftpusers で,指定してあるユーザは,ここで指定されていても,認証でエラーとなる。

userlist_enable=YES (default=NO)
userlist_deny=YES (default=YES)
 
/etc/vsftpd.user_listに書いてあるユーザ はログインさせない。この場合,ログインプロンプトでユーザを指定しても,パスワードプロンプトは出ない。

/etc/vsftpd.ftpusers で指定した場合,Passwordは聞いてくる。こちらの指定では,直ぐにコネクションが切れる。その点が違う。

/etc/vsftpd.user_list の例 userlist_deny=YESの場合,testはログインできないが,ftp(リストにはない)はログインできる。

userlist_deny=NOの場合,testはログインできるが,ftp(リストにはない)はログインできない。。

# vsftpd userlist
# If userlist_deny=NO, only allow users in this file
# If userlist_deny=YES (default), never allow users in this file, and
# do not even prompt for a password.
# Note that the default vsftpd pam config also checks /etc/vsftpd.ftpusers
# for users that are denied.
test
chrootの指定
chroot_local_user=YES (default=NO)
chroot_list_enable=YES (default=NO)
ローカルユーザも,Anonymous ftpユーザと同様,chrootする。
ただし,/etc/vsftpd.chroot_listに書いてあるユーザをchrootしない

chrootさせたときのルートは,ftpでログインするユーザのホームディレクトリになる。全てのエンドユーザが自分のホームディレクトリ以外いじらせたくない場合,指定する。

この場合でも,ユーザftpでログインした場合,chrootされる。

chroot_list_enable=YES (default=NO)
chroot_local_user=NO (default=NO)
 
/etc/vsftpd.chroot_listに書いてあるユーザをchrootさせる

chrootさせたときのルートは,ftpでログインするユーザのホームディレクトリになる。特定エンドユーザが自分のホームディレクトリ以外いじらせたくない場合,指定する。

メッセージ
dirmessage_enable=YES ftpでログインしたディレクトリ(Anounimous ftpのデフォルトでは,/var/ftp/)の".message"ファイルをftpでログインしたときに表示します。
ftpd_banner=任意のメッセージ ftpで接続したときのバナーメッセージを指定する。

 

□ その他のファイル

vsftpd.confは,/etc/vsftpd/配下なのですが,その他は,デフォルトでは,/etc配下です。これらのファイル名はvsftpd.confの中で変更することは可能です。

bullet/etc/vsftpd.ftpusers
bulletftpログインさせないユーザを指定する。rootとかmailとかデフォルトで入っている
bullet/etc/vsftpd.user_list
bulletログインできるユーザを指定する。(userlist_denyuserlist_enableの指定も必要)
bullet/etc/vsftpd.chroot_list
bulletchrootする(しない)ユーザのリスト。
bullet/etc/vsftpd.banned_emails
bulletAnonymous ftpユーザとしてログインさせないE-Mailアドレスを指定する。
bullet/etc/hosts.allow (hosts.deny)
bulletTCP Wrapperのアクセス制御用

horizontal rule

改正歴

2003.04.06 初版
2003.04.11 RedHat8.0のxinetdの説明を削除。
少し,説明を追加。
2003.04.13 TCP Wrapperの説明追加
2003.04.29 tcp_wrappersを使用した場合,大量のログがはき出される点の情報追加。
anon_rootの記述追加。

horizontal rule