vsftpd 显式 FTPS 加密设置(以 xinetd 方式启动)

/

vsftpd 在 Linux 下诸多 ftp 服务端软件中,安全性和性能都很不错。

生成证书

openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem
chown root:root /etc/ssl/private/vsftpd.pem
chmod 600 /etc/ssl/private/vsftpd.pem

编辑 /etc/vsftpd.conf

#  禁用 standalone 方式,适用于不繁忙的 FTP 站点
listen=NO
anonymous_enable=NO
local_enable=YES
write_enable=YES
#  限制登录用户的活动范围为 home 目录
chroot_local_user=YES
allow_writeable_chroot=YES
rsa_cert_file=/etc/ssl/private/vsftpd.pem
ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO

解决 500 OOPS: Vsftpd: Refusing to Run With Writable Root Inside Chroot () 错误

基于安全因素考虑,vsftpd 的一些版本比如 2.3.5 如果启用了 chroot_local_user=YES,则 allow_writeable_chroot=YES 设置无效,登录用户的 home 目录亦禁止写入,否则就会出现 500 OOPS 错误。

最简单的解决办法莫过于去除 home 目录的写权限,chmod 555 /home/xxx,不过这样一来,home 目录就成鸡肋了,实在不可取。也可以更改源为 Sid,直接安装 vsftpd 3,至少 vsftp 3.0.0 已经解决了这个问题,但是对于生产环境来说估计没人会这么做。

好在还有人为 debean wheezy 下的 vsftpd 打了补丁,让 allow_writeable_chroot=YES 设置重新生效了。

echo "deb http://ftp.cyconet.org/debian wheezy-updates main non-free contrib" >> \
/etc/apt/sources.list.d/wheezy-updates.cyconet.list; \
aptitude update; aptitude install -t wheezy-updates debian-cyconet-archive-keyring vsftpd

新建 /etc/xinetd.c/vsftpd

service ftp
{
    socket_type = stream
    wait = no
    user = root
    server = /usr/sbin/vsftpd
    nice = 10
    disable = no
}

重新启动 vsftpd

/etc/init.d/vsftpd stop
/etc/init.d/xinetd restart

参考:http://blog.waja.info/2013/05/13/500-oops-vsftpd-refusing-to-run-with-writable-root-inside-chroot/

Comments