CentOS7 安装配置 vsftpd

安装依赖

安装 Berkeley DB 的命令行工具,用于生产虚拟用户文件数据库:

sudo yum -y install libdb-utils

安装 PAM,用于虚拟用户认证:

sudo yum -y install pam

安装 vsftpd

检查是否已安装:

rpm -qa | grep vsftpd

如果无,则安装:

sudo yum -y install vsftpd

如果有,则更新:

sudo yum -y update vsftpd

查看版本信息:

vsftpd -v

vsftpd: version 3.0.2

生成 SSL 证书

检查当前版本 vsftpd 是否支持 SSL:

​ libssl.so.10 => /lib64/libssl.so.10 (0x00007fa9662c2000)

使用 openssl 生成 SSL 证书:

过程中需要输入的证书信息可随意填写,在使用 FTP 工具连接时,会显示填写的证书信息。

修改文件权限:

Tips: 使用 FTP 工具连接时,需要设置使用 显式 SSL/TLS 方式连接。

创建宿主用户

创建宿主用户:

Tips: vsftpd 为宿主用户名。

修改主配置文件

备份默认的主配置文件:

重新创建主配置文件:

插入配置信息:

Tip:

配置项等号两边不能有空格。

pasv_min_portpasv_max_port 为被动模式端口起始范围。

guest_username 为上面创建的宿主用户,是 FTP 操作的目录和文件的真正所有者。

pam_service_name 为 PAM 认证配置文件名。

user_config_dir 为存放虚拟用户独立配置文件的目录。

保存退出。

虚拟用户配置

添加虚拟用户

添加虚拟用户:

在文件中添加虚拟用户名和密码:

Tips: 奇数行为用户名,偶数行为密码。

保存退出,并修改文件权限:

生成虚拟用户认证使用的数据库文件:

Tips:

每次修改 /etc/vsftpd/vuser 文件内容后需重新生成一次认证文件。

如果出现以下错误:

db_load: unexpected end of input data or key/data pair、db_load: odd number of key/data pairs

/etc/vsftpd/vuser 最后添加一行空行,再重新生成用户认证文件。

修改认证文件权限:

PAM 认证配置

备份 vsftpd 默认的 PAM 认证文件:

重新创建 PAM 文件:

插入配置(64 位系统):

Tips:

如果是 32 位系统:

保存退出。

独立配置文件

新建用于存放虚拟用户独立配置文件的目录:

创建虚拟用户独立配置文件:

TIps: test 为虚拟用户的用户名,一个虚拟用户,一个单独的配置文件。

写入该用户的独立配置:

Tips: local_root 为该虚拟用户 FTP 主目录。

保存退出。

创建该虚拟用户的主目录:

修改目录所有者:

修改目录权限:

虚拟用户白名单

备份 vsftpd 默认的允许访问 FTP 的用户白名单文件:

重新创建白名单文件,并添加允许访问 FTP 的用户名:

Tips: 一行一个用户名。

保存退出。

chroot 白名单

创建允许执行 chroot 操作的虚拟用户白名单文件,根据需要添加用户名:

Tips:

正常虚拟用户会被限制在自己的主目录之内,允许执行 chroot 表示可以切换到主目录之外的目录。

一行一个用户名。

保存退出。

启动 vsftpd

启动 vsftpd 服务:

设置开机启动:

FirewallD 配置

查看 FirewallD 当前默认区域永久配置:

public target: default icmp-block-inversion: no interfaces: sources: services: ssh ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:

可见 services 没有添加了 ftp 服务,ports 中也没有添加 FTP 相关端口(20,21 等)。

永久添加 ftp 服务当当前默认区域:

ftp 服务添加额外的 FTP 相关端口:

查看重载 FirewallD 规则之后永久生效的服务:

ssh ftp

查看重载 FirewallD 规则之后永久生效的 ftp 服务的信息:

ftp ports: 21/tcp 20/tcp 18000-19000/tcp protocols: source-ports: modules: ftp destination:

重载 FirewallD 规则:

Tips: 阿里云主机需要在安全组规则中添加入方向的 20/tcp, 21/tcp, 18000-19000/tcp 端口。

日志管理

如需开启日志功能,先取消掉主配置文件中的 #log_ftp_protocol=YES 注释。

创建日志文件:

设置文件权限:

重启 vsftpd 服务:

FTP 客户端

推荐使用免费开源全平台支持的 FileZilla:FileZilla 官方下载

第一次连接的时候会提示 “未知证书”,并显示之前填写的证书信息,勾选 “在以后的会话中始终信任该证书“ 并确定即可。

参考文献

Last updated

Was this helpful?