CentOS 8配置搭建vsftpd

记录配置vsftpd过程,和遇到的问题。

安装

#安装并同意所有询问(-y)
yum -y install vsftpd 
systemctl start vsftpd #启动
systemctl enable vsftpd #设置开机自启

配置防火墙开放21端口

firewall-cmd --zone=public --add-port=21/tcp --permanent 
systemctl restart firewalld.service  #重启防火墙
firewall-cmd --reload #重载防火墙

–permanent 永久生效
–zone=public 区域:公共区
–add-port=21/tcp 添加端口
显示success则成功,如果防火墙未开启?->systemctl start firewalld.service开启防火墙。(建议开启)

创建用于ftp登录的账户

创建用户用于登录ftp的方式有两种,一种是创建虚拟用户依赖宿主用户进行登录,另一种是直接使用真实用户登录,因为不常使用ftp,打算使用完毕就关闭又不想使用匿名登录,所以选择较为简单的真实用户登录方式。(虚拟用户登录方式更安全)


useradd -s /sbin/nologin yourftpuser
passwd yourftpuser #修改密码

添加用户并禁止用户登录(/sbin/nologin),因为添加的用户是/sbin/而不是shell,vsftpd的pam模块会不通过导致无法登录,所以需要修改以下pam的配置。

vim /etc/pam.d/vsftpd

把第四行pam_shells.so注释:

#%PAM-1.0
session    optional     pam_keyinit.so    force revoke
auth       required     pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
#auth       required    pam_shells.so
auth       include      password-auth
account    include      password-auth
session    required     pam_loginuid.so
session    include      password-auth

检查端口

#查看已开启的端口
firewall-cmd --list-ports
#查看21端口被哪一个进程占用
netstat -lnpt |grep 21

能看到21端口和占用程序为vsftpd说明开放状态正常

配置vsftpd.conf

vsftpd的配置文件默认在/etc/vsftpd/vsftpd.conf ,vsftp的配置中某些YES/NO的定义和平时的[开启/关闭]又有些不太一样,参考添加以下配置:

anonymous_enable=NO         # 不允许匿名访问
local_enable=YES            # 允许使用本地帐户进行FTP用户登录验证
chroot_local_user=YES       # 启用限定用户在其主目录下
userlist_deny=YES       # 否认/etc/vsftpd/userlist下的用户登录
  • 注意这里的userlist_deny为YES时,/etc/vsftpd/userlist的用户不能登陆,为NO时,只有/etc/vsftpd/userlist的用户才能登陆。
    这里我设置了yes,所以需要往/etc/vsftpd/userlist添加除了yourftpuser用户以外的其他用户,当然也可以改为NO,然后只存yourftpuser用户。

systemctl restart vsftpd #重启vsftpd

到这一步,基本上的配置已经完成,ftp当前的状态是:

  • 不能匿名登录
  • 本地用户只有yourftpuser可以登陆
  • 不允许切换目录
    接下来就可以使用ftp工具进行登录测试。

报错分析

530登陆失败
  • 账号或密码错误
  • vsftpd配置限制登录
Request time out连接超时
  • 网速差,设置了超时
  • 安全组/防火墙过滤了21端口
  • vsftpd配置有误,启动失败
    如果使用nmap host -p 21扫描端口状态为filtered,且防火墙已经开放了21端口,则是云服务器供应商安全组过滤,需要登陆云服务器控制台设置。
systemctl start vsftpd 失败
  • 建议修改vsftpd.conf前先备份
  • vsftpd.conf配置中有些空格, 或一行有效的配置中带有注释符号#,等格式错误

相关文章

Vsftpd安装与配置(虚拟用户) 2022-03
Centos7.5搭建FTP服务-vsftpd(详细)2019-01
Vsftpd服务配置、ftp命令、错误代码、日志格式 2021-10

如有写错,欢迎指出!![输入图片描述]

, — 2022 / 06/01