Centos7搭建简单vsftpd服务

第一次在centos上搭建vsftpd服务,故在此记录一下,以加深印象
什么是vsftpd呢?
简介
vsftpd 是“very secure FTP daemon”的缩写,安全性是它的一个最大的特点。vsftpd 是一个 UNIX 类操作系统上运行的服务器的名字,它可以运行在诸如 Linux、BSD、Solaris、 HP-UNIX等系统上面,是一个完全免费的、开放源代码的ftp服务器软件,支持很多其他的 FTP 服务器所不支持的特征。比如:非常高的安全性需求、带宽限制、良好的可伸缩性、可创建虚拟用户、支持IPv6、速率高等。

两种连接模式
FTP(File Transfer Protocol)是一种文件传输协议,基于客户端/服务器架构,支持以下两种工作模式:
主动模式:客户端向FTP服务器发送端口信息,由服务器主动连接该端口。
被动模式:FTP服务器开启并发送端口信息给客户端,由客户端连接该端口,服务器被动接受连接。

三种认证模式
FTP支持以下三种认证模式:
匿名用户模式:任何人无需密码验证就可以直接登录到FTP服务器。这种模式最不安全,一般只用来保存不重要的公开文件,不推荐在生产环境中使用。
本地用户模式:通过Linux系统本地账号进行验证的模式,相较于匿名用户模式更安全。
虚拟用户模式:FTP服务器的专有用户。虚拟用户只能访问Linux系统为其提供的FTP服务,而不能访问Linux系统的其它资源,进一步增强了FTP服务器的安全性。

1:安装

yum install -y vsftpd

2:运行以下命令设置FTP服务开机自启动。

systemctl enable vsftpd.service

3:运行以下命令启动FTP服务

systemctl start vsftpd.service

说明 执行该命令时如果提示错误信息Job for vsftpd.service failed because the control process exited with error code,请排查是否存在下述问题。
网络环境不支持IPv6时,运行命令vim /etc/vsftpd/vsftpd.conf将内容listen_ipv6=YES修改为listen_ipv6=NO。
MAC地址不匹配时,运行命令ifconfig查看MAC地址,并在/etc/sysconfig/network-scripts/ifcfg-xxx配置文件中新增或修改HWADDR=

在这里插入图片描述
启动成功后我们看看vsftpd相文件,有很多

Centos7搭建简单vsftpd服务_第1张图片
重点是/etc/vsftpd这个目录,这里以本地用户登录为例子讲解
Centos7搭建简单vsftpd服务_第2张图片
主配置文件vsftpd.conf

# Allow anonymous FTP? (Beware - allowed by default if you comment this out).
#禁止匿名用户登陆
anonymous_enable=NO
# 允许本地用户登陆
local_enable=YES
# 设置本地用户登录后所在目录,看需求自行设置
#local_root=/opt/ftp/
# 全部用户被不限制在主目录,如果为YES标识全部限制在主目录
chroot_local_user=NO
# 启用例外名单
chroot_list_enable=YES
# (default follows)
#用户例外名单位置
chroot_list_file=/etc/vsftpd/chroot_list
#允许写权限
allow_writeable_chroot=YES 
# 监听IPv4 sockets                
listen=YES
#ipv6一般关闭
#listen_ipv6=YES       
# userlist_enable为YES标识启用userlist生效,为NO则标识userlist不生效
userlist_enable=NO
tcp_wrappers=YES
#开启被动模式
pasv_enable=YES          
 #本教程中为Linux实例公网IP   
pasv_address=<FTP服务器公网IP地址> 
#设置被动模式下,建立数据传输可使用的端口范围的最小值
pasv_min_port=<port number>
#设置被动模式下,建立数据传输可使用的端口范围的最大值          
pasv_max_port=<port number>          

ftpusers是黑名单文件,此文件中的用户不允许访问FTP服务器,里面有一些系统用户

# Users that are not allowed to login via ftp
root
bin
daemon

userlist是白名单文件,此文件中的用户允许访问FTP服务器,当vsftpd.conf中配置了userlist_enable为YES表示启用这文件,为NO则表示不启用这文件,当启用这文件时,又分两种情况
1: userlist_deny=NO,表示此文件中的用户可以登录ftp服务
2: userlist_deny=YES(default),表示此文件中的用户禁止登录ftp服务

# vsftpd userlist
# If userlist_deny=NO, only allow users in this file
# If userlist_deny=YES (default), never allow users in this file, and
# do not even prompt for a password.
# Note that the default vsftpd pam config also checks /etc/vsftpd/ftpusers
# for users that are denied.
root

chroot_list是用户例外名单,
1:当vsftpd.conf中配置chroot_local_user=NO,表示全部用户被不限制在主目录,则chroot_list里的用户则表示用户被限制在主目录
2:当vsftpd.conf中配置chroot_local_user=YES,表示全部用户被限制在主目录,则chroot_list里的用户则表示用户不被限制在主目录

xxx

添加用户
1:添加用户命令

useradd -d /home/ftp -s /sbin/nologin test

-d /home/ftp表示用户登录后的目录,如果不设置,则默认是/home/test ,比如单纯执行一下命令useradd test,这样test用户的登录目录为家目录/home/test,而且test用户可以登录shell,所以这里为了安全不应该单纯执行useradd test命令

-s /sbin/nologin 表示禁止用户登录shell
添加后在passwd文件中即可查看到添加的用户

2:设置密码

passwd test

密码长度建议八位以上,且密码应包括大小写字母、特殊字符、数字混合体,且不要使用生日、姓名拼音等常见字符串作为密码,输入两次后会提示成功。

3:删除用户

userdel test

尝试登录
协议选ftp,端口默认21,防火墙,安全组别忘记开启21端口,若登录后显示如下,是因为默认以被动模式连接,有两种方式解决:
1:在设置里把使用被动模式的√取消
Centos7搭建简单vsftpd服务_第3张图片
只需设置一下即可,把使用被动模式的√取消即可
Centos7搭建简单vsftpd服务_第4张图片
2:在vsftpd.conf文件末尾添加以下配置,并在firewall,云端安全组开放端口pasv_min_port和pasv_max_port,并开放20/21端口

#开启被动模式
pasv_enable=YES
#实例公网IP
pasv_address=xxx
#设置被动模式下,建立数据传输可使用的端口范围的最小值
pasv_min_port=50000
#设置被动模式下,建立数据传输可使用的端口范围的最大值
pasv_max_port=50010

3:如果连接ftp时出现如下提示

Centos7搭建简单vsftpd服务_第5张图片
则vim /etc/pam.d/vsftpd,把auth required pam_shells.so这一行注释掉即可。

参考:https://help.aliyun.com/document_detail/92048.html?spm=a2c4g.11174283.6.1172.616952few4HY8Q

你可能感兴趣的:(ftp)