CentOS7搭建vsftpd服务

简介

FTP,即:文件传输协议(File Transfer Protocol),基于客户端/服务器模式,默认使用20、21端口号,其中端口20(数据端口)用于进行数据传输,端口21(命令端口)用于接受客户端发出的相关FTP命令与参数。FTP服务器普遍部署于局域网中,具有容易搭建、方便管理的特点。而且有些FTP客户端工具还可以支持文件的多点下载以及断点续传技术,因此FTP服务得到了广大用户的青睐。
FTP协议有以下两种工作模式:

  • 主动模式(PORT):FTP服务器主动向客户端发起连接请求。
  • 被动模式(PASV):FTP服务器等待客户端发起连接请求(FTP的默认工作模式)。

vsftpd是一款运行在Linux操作系统上的FTP服务程序,具有很高的安全性和传输速度。
vsftpd有以下三种认证模式:

  • 匿名开放模式:是一种最不安全的认证模式,任何人都可以无需密码验证而直接登陆。
  • 本地用户模式:是通过Linux系统本地的账户密码信息进行认证的模式,相较于匿名开放模式更安全,而且配置起来简单。
  • 虚拟用户模式:是这三种模式中最安全的一种认证模式,它需要为FTP服务单独建立用户数据库文件,虚拟出用来进行口令验证的账户信息,而这些账户信息在服务器系统中实际上是不存在的,仅供FTP服务程序进行认证使用。

常用配置
常用配置

全局操作

  1. 安装vsftpd服务
yum -y install vsftpd
  1. 去掉配置文件里的注释行
mv /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak
grep -v "#" /etc/vsftpd/vsftpd.conf.bak > /etc/vsftpd/vsftpd.conf
  1. 配置firewalld防火墙开放2231和45000-49000端口
firewall-cmd --permanent --add-port=2231/tcp
firewall-cmd --permanent --add-port=45000-49000/tcp
firewall-cmd --reload
  1. 配置selinux允许FTP服务(SElinux跟linux系统安全有关)
    注:没有selinux相关命令的话,需要安装policycoreutils-python包
yum -y install policycoreutils-python.x86_64
setsebool -P ftpd_full_access=on

匿名开放模式

1.修改配置文件,带注释的是需要修改和新增的配置

vim /etc/vsftpd/vsftpd.conf

anonymous_enable=YES   #启用匿名访问模式
anon_umask=022   #匿名用户上传文件的umask值
anon_upload_enable=YES   #允许匿名用户上传文件
anon_mkdir_write_enable=YES   #允许匿名用户创建目录
anon_other_write_enable=YES   #允许匿名用户重命名、删除等操作
anon_root=/data/anon   #匿名用户的FTP根目录
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
pasv_min_port=45000   #PASV模式最小端口号
pasv_max_port=49000   #PASV模式最大端口号

2.创建并授权匿名用户FTP根目录

mkdir -p /data/anon/pub
chown -R ftp /data/anon/pub/

3.启动vsftpd服务,并加入开机启动

systemctl start vsftpd
systemctl enable vsftpd

4.测试

ftp 192.168.208.3
...
ftptest
123456
...
mkdir files
.........

本地用户模式

  1. 修改配置文件,删除之前的匿名模式配置内容,带注释的是需要修改和新增的配置

vim /etc/vsftpd/vsftpd.conf

anonymous_enable=NO   #关闭匿名访问模式
local_enable=YES
write_enable=YES
local_umask=022
local_root=/data/user   #指定本地用户的FTP根目录
chroot_local_user=YES   #将用户权限禁锢在FTP目录
allow_writeable_chroot=YES   #允许对FTP根目录执行写入操作
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
pasv_min_port=45000
pasv_max_port=49000
  1. 创建本地用户,并指定家目录
useradd -d /data/user -s /sbin/nologin user
echo "123456" | passwd --stdin user
  1. 检查/etc/pam.d/vsftpd
    注释掉下面这行
#auth    required pam_shells.so
  1. 重启vsftpd服务
    systemctl restart vsftpd

虚拟用户模式

  1. 创建用于FTP认证的用户数据库文件

vim /etc/vsftpd/vuser.txt

注:第一行用户名,第二行密码,依此类推

ftpuser
123456
ftptest
123456

明文信息不安全,需要使用db_load命令用哈希(hash)算法将明文信息转换成数据文件,然后将明文信息文件删除。

db_load -T -t hash -f /etc/vsftpd/vuser.txt /etc/vsftpd/vuser.db
chmod 600 /etc/vsftpd/vuser.db
rm -f /etc/vsftpd/vuser.txt

在这里插入图片描述
2. 创建虚拟用户映射的系统本地用户和FTP根目录

useradd -d /data/ftproot -s /sbin/nologin virtual
-d 用户的家目录
-s 指定用户的登录shell   /sbin/nologin  该用户不能用于登录系统

chmod -Rf 755 /data/ftproot/
-R 对目前目录下的所有档案与子目录进行相同的权限变更(即以递回的方式逐个变更)(迭代添加权限)
-f 若该档案权限无法被更改也不要显示错误讯息

在这里插入图片描述
3. 建立用于支持虚拟用户的PAM文件

PAM(可插拔认证模块)是一种认证机制,通过一些动态链接库和统一的API把系统提供的服务与认证方式分开,使得系统管理员可以根据需求灵活调整服务程序的不同认证方式。PAM采用了分层设计(应用程序层、应用接口层、鉴别模块层)的思想,其结构如下图所示。

在这里插入图片描述
新建一个用于虚拟用户认证的PAM文件vsftpd.vu,其中PAM文件内的“db=”参数为使用db_load命令生成的账户密码数据文件的路径,但不用写数据文件的后缀
vim /etc/pam.d/vsftpd.vu

auth     required     pam_userdb.so  db=/etc/vsftpd/vuser
account  required     pam_userdb.so  db=/etc/vsftpd/vuser
  1. 为两个虚拟用户设置不同的权限,ftpuser拥有所有权限,而ftptest只有读取权限。
mkdir /etc/vsftpd/vusers_dir
touch /etc/vsftpd/vusers_dir/ftptest
vim /etc/vsftpd/vusers_dir/ftpuser
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
  1. 修改配置文件,删除之前的匿名模式配置内容,带注释的是需要修改和新增的配置

vim /etc/vsftpd/vsftpd.conf

anonymous_enable=NO
anon_umask=022
local_enable=YES
guest_enable=YES   #开启虚拟用户模式
guest_username=virtual   #指定虚拟用户对应的系统用户
allow_writeable_chroot=YES   #允许对FTP根目录执行写入操作
write_enable=YES
local_umask=022
local_root=/data/ftproot
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd.vu   #指定PAM文件
userlist_enable=YES
tcp_wrappers=YES
user_config_dir=/etc/vsftpd/vusers_dir   #指定虚拟用户配置文件目录pasv_min_port=45000
pasv_max_port=49000
  1. 重启vsftpd服务
    systemctl restart vsftpd
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值