chroot_list と user_list による権限管理|vsftpd

今は理解したつもりになってるけど、忘れそうな予感全開なのでメモ。
↓[2009.07.22追記]
えー、 chroot 関係の内容がおもいっきり間違っておりました。逆でした。すいません。
chroot は「上層ディレクトリにアクセスする権限」ではなく、「上層ディレクトリにアクセスさせない制限」でした。非常にこっぱずかしい。

/etc/vsftpd/chroot_list 編

まずは /etc/vsftpd/chroot について。
/etc/vsftpd/vsftpd.conf
の中で、
chroot_list_enable=YES
となっていることが前提条件。これでリストの内容が権限コントロールに反映されます。

1.chroot_local_user=YES と追記した場合

/etc/vsftpd/vsftpd.conf

chroot_local_user=YES
と追記した場合、「ローカルユーザーは全員 chroot ね」となり、全ユーザーはホームディレクトリより上層にアクセスできない設定になります。そして
/etc/vsftpd/chroot_list
に記述されたユーザーは chroot 無効のユーザーリストになります。
その結果、記述されているユーザー群だけが自身のホームディレクトリより上層ディレクトリへはアクセスできるようになります。

2.chroot_local_user=NO or 記述無しの場合(デフォルト)

それに対し、
chroot_list_enable=YES
かつ、
chroot_local_user=NO もしくは記述が何も無い場合、
「ローカルユーザーは全員 chroot 無しよー、カマーン」となり、全ユーザーがホームディレクトリより上層へのアクセスが可能な状態になります。そして、
/etc/vsftpd/chroot_list
chroot を有効にするユーザー群リストになります。
通常はこちらがデフォルトの設定になっているはず。
リストに記述されているユーザーは先ほどと違い、自身のホームディレクトリよりも上層ディレクトリにはアクセスできなくなります。一般ユーザーや、管理業務と関係のないユーザー名を連ねるリストになる感じですね。

通常用途を考えると「管理者数 < 一般ユーザー数」となるケースが多いと思います。その場合は「1.」の方法を選択し、管理者群のユーザー名のみを /etc/vsftpd/chroot_list に記述してchroot権限を与えるのが良いでしょう。
また、逆に管理者が多くて一般ユーザーが少ない場合は、「2.」の方法を行うほうが管理が楽な場合もあります。

/etc/vsftpd/user_list 編

次に /etc/vsftpd/user_list の考え方。
こちらも userlist_enable=YES が前提。
デフォルトの設定では userlist_enable=YESとなっています。

1.userlist_deny=YES or 記述無しの場合(デフォルト)

/etc/vsftpd/user_list の挙動は、userlist_deny の値によって変わります。
userlist_deny=YES もしくは記述が無い場合には、user_list は接続禁止リストとして機能します。
つまり、「このリストに記述されているユーザーは FTP 接続ができない」ということになります。

2.userlist_deny=NO の場合

一方、userlist_deny=NO の場合は、接続許可リストとして機能します。
「このリストに記述のあるユーザー群だけが FTP アクセスできる」というようになります。

セキュリティー及び管理的には「2.」の方法で、明示的に許可するユーザーをはっきりさせておいたほうが楽ですね。

おまけ

似たような管理ファイルに
/etc/vsftpd/ftpusers
もあります。こちらはとにかくアクセスを禁止するためのリスト。
user_listよりも優先順位が高いので、user_listで許可されているユーザーであっても、このリストにユーザー名を書かれてしまうとアクセスできなくなります。

3個のコメントあるよ

  1. vsftpのuserlistやchroot_listの設定が少しややこしかったので調べていました。
    参考になりました!ありがとうございました!

  2. 参考になったようで幸いです。
    私も足りない頭を振り絞って考えた甲斐があるというものです。
    linuxはこういう風に連鎖的に条件分岐が発生するのが苦労するところです。
    前提条件(この場合、chroot_list_enable=YESかNOか)で、その後の話が逆になったりするのがしんどい(笑)。
    最近はLinuxに触れる時間が少ないので私も忘れつつありますが、
    こういう時の自分の為に書いているようなもんです、この手の記事は。
    これからも頑張ってください!

コメントを残してみる

コメント