中堅プログラマーの備忘録

忘れっぽくなってきたので備忘録として・・・

【vsftpd】FTPサーバーでchroot設定するとログイン出来なくなってしまう原因と対策

1.概要

【vsftpd】でユーザーのホームディレクトリより
上層のディレクトリにアクセスできないように
【chroot】設定をしたのですが、
設定反映後、何故かログインできなくなってしまいました。

2.まず設定した内容

【/etc/vsftpd/vsftpd.conf】の下記の部分を変更しました。

chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list

chroot_local_user=YES

ユーザをログインディレクトリより上層のディレクトリにアクセスできなくする

chroot_list_enable=YES

chroot_list_fileで設定したファイルに記述されているユーザーは
上層のディレクトリにアクセスが可能

chroot_list_file=/etc/vsftpd/chroot_list

上層のディレクトリにアクセスが可能なユーザー名を記載



今回は上層のディレクトリにアクセスが可能なユーザーは存在しないので
何も記載されていないchroot_listを作成します。

[root@localhost ~]# touch /etc/vsftpd/chroot_list


これで設定は完了!かと思ったのですが
設定を反映後、これまでログインできていたのにも関わらず
ログインさえもできないという状況に陥ってしまいました・・・

3.解決方法

解決するまでに2時間ほど費やしてしまいましたが
答えはこれでした。

allow_writeable_chroot=YES

これを【vsftpd.conf】に追加することで解決しました。


この設定は何かというと
ホームディレクトリが書き込み可能でも
【chroot】設定が可能になるという設定のようです。


早速ホームディレクトリのアクセス権限を調べてみると

[root@localhost home]# ls -l
total 12
drwxr-xr-x.  2 root     root     4096 Jan  1 09:05 myapp
drwxr-xr-x.  2 root     root     4096 Sep 13  2019 test
drwx------. 11 testuser testuser 4096 Jan  5  1970 testuser

と上記のように所有者に対しては全ての権限を与えているという状態でした。
ちなみに今回使ったユーザーは【testuser】になります。


書き込み不可能な【chroot】がセキュリティー上好ましいのが理解できますが
書き込みが出来ないとアップロード自体が出来ませんので
今回は【YES】と設定しました。

4.結果

接続確認は【FFFTP】で行いました。
結果は下図のとおりです。

【変更前】
f:id:tsu--kun:20191024202616p:plain


【変更後】
f:id:tsu--kun:20191024202139p:plain


変更後はアドレスバーに上層のディレクトリが表示されなくなっています。