vsftpd服务

ftp服务简介

ftp只支持tcp连接,不支持udp连接.
ftp使用两个端口:

  • 21端口(控制端口, 命令端口) : 用来控制用户验证, 连接的建立和关闭:open/close/bye
  • 20端口(数据端口): 用来传输数据.

两个连接: 命令连接(控制连接) , 数据连接

ftp协议使用的端口是21(也称为控制端口),其实还有一个数据端口20,根据FTP工作方式的不同,数据端口也不都是20,主动模式的被动模式使用的数据端口是不一样的.


主动模式和被动模式

主动模式:FTP服务器主动向客户端发起连接请求。

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


RHEL7安装vsftpd

# 安装vsftpd
yum install -y vsftpd

# 开机自启
systemctl enable --now vsftpd

防火墙放行FTP服务

# 防火墙放行FTP服务
firewall-cmd --permanent --zone=public --add-service=ftp
firewall-cmd --reload

配置SELinux

# ①、查看ftp的Selinux状态:
sestatus -b | grep ftp

# ②、在结果中可以看到: 
ftp_home_dir  off

# ③、将状态改为on:
##  "-P" 标志使更改在重启后仍然有效
setsebool -P  ftp_home_dir  on

# ④、重启vsftp服务:
systemctl restart vsftpd.service

# 启用 FTP 服务器的完全访问权限
##  "-P" 标志使更改在重启后仍然有效
setsebool -P ftpd_full_access on

配置vsftpd

ftp配置文件里的参数一定要大写


备份并过滤主配置文件vsftpd.conf

在这里插入图片描述

# 备份vsftpd配置文件
mv /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf_bak

# 过滤vsftpd配置文件
grep -v "#" /etc/vsftpd/vsftpd.conf_bak > /etc/vsftpd/vsftpd.conf

# 查看过滤后的配置文件
[root@linuxprobe ~]# cat /etc/vsftpd/vsftpd.conf
# 是否允许匿名登陆
anonymous_enable=yes

# 是否允许本地账户访问
local_enable=YES
# 是否允许本地账户进行写入操作
write_enable=YES
# 设置新建文件和目录的权限
local_umask=022
# 是否显示欢迎语
dirmessage_enable=YES
# 是否启用上传/下载日志记录。
xferlog_enable=YES
# 指定FTP使用20端口进行数据传输,默认值为YES。
connect_from_port_20=YES
# 如果启用,则日志文件将会写成xferlog的标准格式,如同wu-ftpd 一般。默认值为关闭。
xferlog_std_format=YES
# 设置vsftpd服务器是否以standalone(独立)模式运行(建议yes,很多服务都依赖这个选项)
listen=YES
# 是否支持IPV6
# listen_ipv6=YES
# 设置PAM使用的名称,默认值为/etc/pam.d/vsftpd。--可插拔认证模块
pam_service_name=vsftpd
# 是否使用黑名单文件
userlist_enable=YES
# 是否受到tcp_wrappers防火墙限制
tcp_wrappers=YES

配置参数

在这里插入图片描述


vsftpd服务主配置文件和子配置文件

ne&style=none&width=606)


vsftpd.conf是主配置文件


配置匿名用户登陆

匿名用户登陆后默认访问的是/var/ftp目录

# 编辑主配置文件
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	#允许匿名用户修改目录名称或删除目录

# 给匿名目录/var/ftp/pub设置777权限
chmod -Rf 777 /var/ftp/pub

# 修改完配置文件需要重启vsftpd服务
systemctl restart vsftpd

# 将布尔值 ftpd_anon_write 的状态开启,加上 -P 参数永久生效
setsebool -P ftpd_anon_write on

## 或者开启ftpd的所有SELinux权限
setsebool -P ftpd_full_access=on

# 可以看到再次查看时,ftpd_anon_write 已开启
getsebool -a |egrep 'ftpd_anon'
ftpd_anon_write --> on

查看SeLinux的布尔值

在这里插入图片描述


修改Selinux的布尔值

在这里插入图片描述


配置本地用户登陆

本地用户登陆ftp后,默认访问的是对应账户home/user目录

# 编辑主配置文件
vim /etc/vsftpd/vsftpd.conf

# 配置本地用户登陆
anonymous_enable=NO	# 禁止匿名访问模式
local_enable=YES	  # 允许本地用户登陆
write_enable=YES	  # 设置可写权限
local_umask=022	    # 本地用户模式创建文件的umask值
userlist_deny=YES	  # 启用“禁止用户名单”,名单文件为ftpusers和user_list
userlist_enable=YES	# 开启用户作用名单文件功能

# 修改完配置文件需要重启vsftpd服务
systemctl restart vsftpd

配置完本地用户登陆模式后,root用户却无法登陆。是因为ftpusersuser_list文件中存在root用户。想要root登陆ftp,必须将root从这两个文件删除


ftpusers禁止登录ftp的用户列表

ftpusers文件里面的用户是不允许登录ftp的,这些用户拥有高权限,可以遍历Linux目录,包括password文件可以下载
用户名写入这个文件中,该用户就不能登陆ftp了。

# 每个被禁止FTP访问的用户名应该单独占据一行。
[root@linuxprobe ~]# cat /etc/vsftpd/ftpusers 
# Users that are not allowed to login via ftp
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
news
uucp
operator
games
nobody

user_list黑白名单

user_list黑白名单,即可以配置黑名单,也可以配置白名单.

[root@linuxprobe ~]# cat /etc/vsftpd/user_list 
# 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
bin
daemon
adm
lp
sync
shutdown
halt
mail
news
uucp
operator
games
nobody

配置白名单登陆

/etc/vsftpd/user_list中的userlist_deny参数值改成NOuser_list列表就变成了强制白名单,功能完全是反过来的,只允许列表内的用户访问,拒绝其他人登录。

# 修改user_list为白名单模式
vim /etc/vsftpd/user_list

# 设置为白名单模式
userlist_deny=NO

配置虚拟用户登陆–生产环境

最安全的FTP用户管理模式,生产环境下推荐该方案。
虚拟用户登陆ftp,默认访问的是:映射用户的home目录


1.新建虚拟用户列表

# 新建虚拟用户列表
vim /etc/vsftpd/vuser.list

# 添加虚拟用户
## 奇数行是账号,偶数行是密码
zhangsan
123456

1.1生成ftp加密数据库文件

用户名列表文件不能直接被ftp读取,要进行加密后才能读取
在这里插入图片描述

# 生成ftp加密数据库文件
## 固定格式
db_load -T -t hash -f /etc/vsftpd/vuser.list /etc/vsftpd/vuser.db

# 设置vuser.db权限为600
chmod 600 vuser.db

# 删除明文文件,或将权限设小
rm -f vuser.list

2.添加映射用户

# 添加用户并指定home路径,不允许登陆
## -d <登入目录>
## -s 指定用户登入后所使用的shell
useradd -d /var/ftproot -s /sbin/nologin ftpvuser

# 设置ftpvuser用户的home目录权限为755
chmod -Rf 755 /var/ftproot

3.建立用于支持虚拟用户的PAM文件

# 新建一个用于虚拟用户认证的PAM文件vsftpd.vu
vim /etc/pam.d/vsftpd.vu

## 配置认证信息为自己生成的vuser.db文件(不要带db后缀)
auth required pam_userdb.so db=/etc/vsftpd/vuser
account required pam_userdb.so db=/etc/vsftpd/vuser

4.修改主配置文件为PAM认证

# 编辑主配置文件
vim /etc/vsftpd/vsftpd.conf

## 编辑对应参数

# 禁止匿名开放模式
anonymous_enable=NO
# 允许本地用户模式
local_enable=YES
# 开启虚拟用户模式
guest_enable=YES	
# 指定虚拟用户账户   
guest_username=ftpvuser	 
# 指定PAM文件
pam_service_name=vsftpd.vu	 
# 允许对禁锢的FTP根目录执行写入操作,而且不拒绝用户的登录请求
allow_writeable_chroot=YES	 
# 上传文件的默认权限掩码,022=644权限
local_umask=022
# 启用目录提示消息功能,用户进入目录会提示
dirmessage_enable=YES

# 传输日志记录
xferlog_enable=YES
# 使用标准格式记录日志
xferlog_std_format=YES

# 使用20端口来进行数据传输(默认)
# connect_from_port_20=YES

listen=YES
# 监听IPV6
# listen_ipv6=YES

5.为每个虚拟用户独立设置权限

# 对每个用户单独设置权限,需要新建

# 指定用户特定配置文件所在的目录
## 将搜索该目录下与FTP用户同名的文件,将其用作该用户的特定配置文件
user_config_dir=/etc/vsftpd/vusers_dir 

# 启用用户列表功能
userlist_enable=YES
# 检查网络流量来保护主机安全
## 使用TCP包装器来过滤连接请求和数据传输
tcp_wrappers=YES

5.1示例:为zhangsan添加独立控制权限

比如,允许张三上传创建修改查看删除文件,只允许李四查看文件

# 新建虚拟用户权限控制文件 目录
mkdir -p /etc/vsftpd/vusers_dir/

# 新建lisi独立权限控制文件
vim /etc/vsftpd/vusers_dir/lisi

# 新建zhangsan独立权限控制文件
vim /etc/vsftpd/vusers_dir/zhangsan

## 为zhangsan添加权限
anon_upload_enable=YES  #允许上传文件
anon_mkdir_write_enable=YES  #允许创建和写入权限
anon_other_write_enable=YES  #允许删除重命名权限

6.修改SELinux的安全上下文值

# 查看ftp的SELinux安全上下文值
getsebool -a | gerp ftp

# 设置ftp的SELinux安全上下文值
setsebool -P ftpd_full_access=on

7.重启vsftpd服务

# 重启vsftpd服务
systemctl restart vsftpd
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
vsftpd(Very Secure FTP Daemon)是一个用于Linux/Unix系统的FTP服务器软件。下面是设置vsftpd服务器的步骤: 1. 安装vsftpd软件包:使用适合你的Linux发行版的包管理器安装vsftpd软件包。例如,在Ubuntu上可以使用以下命令进行安装: ``` sudo apt-get install vsftpd ``` 2. 配置vsftpd:编辑vsftpd的配置文件,该文件通常位于`/etc/vsftpd.conf`。你可以使用任何文本编辑器打开该文件。 3. 启用匿名访问(可选):如果你希望允许匿名用户访问FTP服务器,找到以下行并确保其值为`YES`: ``` anonymous_enable=YES ``` 4. 禁用匿名上传(可选):如果你不希望匿名用户能够上传文件到FTP服务器,找到以下行并确保其值为`NO`: ``` anon_upload_enable=NO ``` 5. 配置本地用户访问:如果你希望允许本地用户访问FTP服务器,找到以下行并确保其值为`YES`: ``` local_enable=YES ``` 6. 配置用户目录:如果你希望每个用户只能访问自己的主目录,找到以下行并确保其值为`YES`: ``` chroot_local_user=YES ``` 7. 配置监听端口(可选):如果你希望更改FTP服务器的监听端口,默认为21,找到以下行并修改端口号: ``` listen_port=21 ``` 8. 保存并关闭配置文件。 9. 重启vsftpd服务:使用以下命令重启vsftpd服务以使配置更改生效: ``` sudo service vsftpd restart ``` 现在,你的vsftpd服务器已经设置完成。你可以使用FTP客户端连接到服务器并进行文件传输。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

识途老码

赞赏是第一生产力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值