美文网首页
CentOS搭建及配置VSFTPD实录

CentOS搭建及配置VSFTPD实录

作者: 三汪 | 来源:发表于2020-04-15 13:57 被阅读0次

说明

环境

  • 系统:CentOS 7.6 64位
  • VSFTPD:vsftpd-3.0.2-25.el7.x86_64

其他

  • 本文由作者三汪首发于简书。
  • 本文不包含防火墙、安全组配置部分。

步骤

安装

安装

yum install -y vsftpd

安装成功后查看软件版本

rpm -qa | grep vsftpd

OpenSSL自签证书

说明

这一步是为了给FTP over TLS提供证书。如果不配置SSL,可以跳过这一步。

命令

openssl req -newkey rsa:2048 -nodes -keyout /etc/vsftpd/vsftpd.key -x509 -days 365 -out /etc/vsftpd/vsftpd.pem -subj "/C=CN/ST=SC/L=CD/O=SYSIT/OU=sa/CN=sysit.cn/emailAddress=sa@sysit.cn"

参数说明

  • -newkey rsa:2048:使用RSA算法生成长度2048byte的key
  • -days 365 :证书有效期365天
  • -keyout /etc/vsftpd/vsftpd.key:指定私钥文件输出
  • -out /etc/vsftpd/vsftpd.pem:指定证书文件输出

配置vsftpd.conf

方式一、手动配置

命令

vim /etc/vsftpd/vsftpd.conf

内容

# 限制匿名登录
anonymous_enable=NO

# 允许local user登录
local_enable=YES

# 禁止写操作
write_enable=NO

# 设置local user的umask
local_umask=022

# 发送目录信息
dirmessage_enable=YES

# 上传/下载日志记录(默认位置/var/log/xferlog)
xferlog_enable=YES
#xferlog_file=/var/log/xferlog
xferlog_std_format=YES

# 以 nobody 作为此一服务执行者的权限
# 因为 nobody 的权限相当的低
# 因此即使被入侵,入侵者仅能取得nobody的权限
nopriv_user=nobody

# 欢迎消息
ftpd_banner=Hey.

# 限制local user在用户主目录下
chroot_local_user=YES
allow_writeable_chroot=YES

# 监听
listen=NO
listen_ipv6=YES

# pam认证模块
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES

# CONTROL PORT控制端口
listen_port=12345

# PASV模式
pasv_enable=YES
pasv_min_port=12346
pasv_max_port=12356

# 不要求使用20端口传输数据
connect_from_port_20=NO

# SSL
ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
force_anon_logins_ssl=YES
force_anon_data_ssl=YES
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
require_ssl_reuse=NO
ssl_ciphers=HIGH
rsa_cert_file=/etc/vsftpd/vsftpd.pem
rsa_private_key_file=/etc/vsftpd/vsftpd.key

方式二、直接上传配置文件

说明

该方式要求系统已安装lrzsz。
若lrzsz不存在,使用yum -y install lrzsz命令安装即可使用。

命令

rz
mv vsftpd.conf /etc/vsftpd/vsftpd.conf

配置/etc/services

说明

如果没有修改默认的控制端口21,可以跳过这一步。

命令

vi /etc/services

内容

相关行修改成

ftp             12345/tcp
ftp             12345/udp

启动

设置开机自启

systemctl enable vsftpd

服务操作

systemctl start vsftpd.service # 启动服务
systemctl restart vsftpd.service # 重启服务
systemctl status vsftpd.service # 服务状态查看

遇到的坑

530 Login incorrect

描述

在确认账号密码没问题的前提下,出现530。

原因

在我的情况里是因为/etc/pam.d/vsftpd这个文件里的配置导致的。
该文件中有一行内容为:auth required pam_shells.so
这一行的含义是:仅允许用户的登录shell为/etc/shells文件内的shell命令时,才能登录。
而我登录的用户配置的shell是/sbin/nologin
但是/etc/shells文件中不存在该项,导致用户登录被拒绝。

解决

解决方式一

执行vim /etc/shells,在这个文件里添加/sbin/nologin即可。

解决方式二

当然,直接把/etc/pam.d/vsftpd中的auth required pam_shells.so注释掉,绕过校验也能成功登录。
怎么处理,各位自己权衡。

参考

相关文章

网友评论

      本文标题:CentOS搭建及配置VSFTPD实录

      本文链接:https://www.haomeiwen.com/subject/arrcvhtx.html