4

配置使用SSL加密的vsftpd服务

 2 years ago
source link: https://blog.sbw.so/u/configure-vsftpd-with-ssl-encrypt.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

配置使用SSL加密的vsftpd服务

来源: sbw Blog | 浏览: 2728 | 评论: 0 发表时间: 2019-04-02

vsftpd 是 Unix 环境下一款功能强大的 ftp 服务器程序,它是Very Secure FTP Daemon的简写。虽然 ftp 协议已经很古老,不经常使用了,但是在同步大量文件的时候,ftp 还是要比 scp 等文件传输方式来的方便的多。由于默认的 ftp 是明文传输,为了安全,一般要配合 SSL 加密同时使用。

先准备好服务器要使用的SSL证书,这里可以参考我之前分享的使用 certbot 一键申请泛域名解析证书这篇文章来申请Let's Encrypt的 SSL 证书。当然,如果你是在家庭里搭建自己的微服务,不要求加密的话也可以省略这个步骤。

编辑/etc/vsftpd.conf并修改以下配置:

# 基本配置
local_enable=YES
write_enable=YES
dirmessage_enable=YES
xferlog_enable=YES
chroot_local_user=YES
pam_service_name=vsftpd
allow_writeable_chroot=YES
listen=YES
# 端口相关的设置,如果使用默认端口则无需设置
listen_port=31
pasv_min_port=5000
pasv_max_port=5010
# SSL 加密相关的设置,如果不使用 SSL 则无需设置
ssl_enable=YES
allow_anon_ssl=NO
force_local_logins_ssl=YES
force_local_data_ssl=YES
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
require_ssl_reuse=NO
ssl_ciphers=HIGH
# SSL 证书,填写正确的证书文件位置
rsa_cert_file=/etc/letsencrypt/fullchain.pem
rsa_private_key_file=/etc/letsencrypt/privkey.pem

一些基本的配置项都是望文生意的,其中有几个比较重要的,可能需要按照情况修改的选项:

chroot_local_user代表在用户登陆后,将他的家目录用作根目录。这样做可以将他的可访问范围直接限定在他自己的家目录中,如果需要允许用户访问其它目录,就设置为NO

pam_service_name这个选项是指代在进行认证时,使用的认证模块名字。不同的系统环境可能不一样,可以查看/etc/pam.d/目录下有没有与ftp相关的认证模块。

listen这个选项代表监听IPv4地址,如果需要支持IPv6网络的话,需要设置listen_ipv6=YES来开启对IPv6的监听。但需要注意的是,一个vsftpd实例只能监听一个地址,不能同时开启两个地址。需要分别准备两个配置文件,启动两个服务器实例。

另外,vsftpd除了支持本地用户登陆外,也支持以用户数据库的方式进行认证,不过这篇先介绍这种常用的方式。

经常遇到的问题

服务启动失败:一般是配置文件中有错误,查看日志应该能看到INVALIDARGUMENT或者unrecognised variable错误。SSL 证书文件错误也可能报这个问题,要检查两个证书的路径对不对,公钥和私钥是不是写反了等等。修改后可以执行sudo vsftpd -olisten=NO /etc/vsftpd.conf来测试配置是否有问题,能正常跑起来就说明没问题。

vsftpd530login incorrect: 一般是认证出错,检查pam_service_name是否写对,以及对应的认证模块是否存在。检查所登陆的用户是不是在ftp这个组里面。也可以查看journal中的日志看看认证过程为什么失败。

vsftpd500OOPS: config file not owned by correct user, or not a file: 配置文件的所有者或权限不对,修改所有者为root,权限为644。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK