vsftpd服务传输文件

vsftpd服务传输文件

vsftp传输的三种认证模式

匿名用户模式、本地用户模式、虚拟用户模式

ftp的端口使用

默认使用端口为20、21号端口,其中端口20(数据端口)用于进行数据传输,端口21(命令端口)用于客户端口发出的相关的FTP命令和参数。

FTP的两种工作模式

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

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

vsftp安装配置

安装vsftpd

yum -y install vsftpd
​
systemctl start vsftpd
systemctl enable vsftpd
​
vsftpd 的主配置文件
在件/etc/vsftpd/vsftpd.conf下

vsftpd服务程序的常用参数

listen=[YES|NO]                             ##  是否以独立运行的方式监听服务
listen_address=IP地址                       ##    设置要监听大的IP地址 
listen_port=21                              ##   设置FTP服务的监听端口
download_enable = [YES|NO]                  ##  是否允许下载文件
userlist_enable = [YES|NO]                  ##  设置用户列表为“允许”还是“禁止”操作
userlist_deny = [YES|NO]
max_client=0                                ##  最大客户端的连接数,0为不限制
max_per_ip=0                                ##  同一个IP地址最大连接数,0为不限制
anonymous_enable=[YES|NO]                   ##  是否允许匿名用户访问
anon_upload_enable=[YES|NO]                 ##  是否允许匿名用户上传文件
anon_umask=022                              ##  匿名用户上传文件的umask值
anon_root=/var/ftp                          ##  匿名用户的FTP根权限
anon_mkdri_write_enable=[YES|NO]            ##  是否允许匿名用户创建目录
anon_other_write_enable=[YES|NO]            ##  是否开放匿名用户的其他人权限(包括重命名、删除等操作权限)
anon_max_rate=0                             ##  匿名用户的最大传输速率(字节/秒),0为不限制
local_enable=[YES|NO]                       ##  是否允许本地用户登录FTP
local_umask=022                             ##  本地用户上传文件的umask值
local_root=/var/ftp                         ##  本地用户的FTP根目录
chroot_local_user=[YES|NO]                  ##  是否将用户权限禁锢在FTP目录,以确保安全
local_max_rate=0                            ##  本地用户最大传输速率(字节/秒),0为不限制

匿名开发模式

在主配置文件下添加

anonymous_enable=YES                    ##  允许匿名用户访问
anon_umask=022                              ##  匿名用户上传文件的umask值
anon_upload_enable=YES              ##  是否允许匿名用户上传文件
anon_mkdri_write_enable=YES         ##  允许匿名用户创建目录
anon_other_write_enable=YES         ##  开放匿名用户的其他人权限(包括重命名、删除等操作权限)

重启服务

systemctl restart vsftpd
systemctl eanble vsftpd

修改/var/ftp/pub文件的属主和属组为ftp

chown  -Rf  ftp /var/ftp/pub

修改selinu域策略

## 查看ftp相关的selinux域策略
[root@localhost ~]# getsebool -a | grep ftp
ftpd_anon_write --> off
ftpd_connect_all_unreserved --> off
ftpd_connect_db --> off
ftpd_full_access --> off                    ## 修个这个为on
ftpd_use_cifs --> off
ftpd_use_fusefs --> off
ftpd_use_nfs --> off
ftpd_use_passive_mode --> off
httpd_can_connect_ftp --> off
httpd_enable_ftp_server --> off
tftp_anon_write --> off
tftp_home_dir --> off
​
[root@localhost ~]# setsebool -P ftpd_full_access=on
-P 参数让修改过的策略永久生效

本地用户模式

在主配置文件内添加以下内容

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

重新启动ftp服务

systemctl restart vsftpd
systemctl enable vsftpd

在vsftpd服务程序所在的目录存放着两个名为“用户名单”(ftpusers和user_list)。这要里面有着本地用户的名单则不能登录ftp上。

两个名单路径
/etc/vsftpd/ftpuser
/etc/vsftpd/user_list

在采用本地用户模式登录FTP服务器后,默认访问的是该用户的家目录(/home/用户名)。而且该目录的默认所有者、所属组是该用户自己,因此不存在写入权限不足的情况。但是当前操作仍热被拒绝,是因为seliunx域中对FTP服务的允许策略。

getrebool -a | grep ftp   ##查看ftp的selinuxde域策略
​
setsebool -P ftpd_full_access=on

虚拟用户模式

第一步:创建用于FTP认证的用户数据库文件,奇数行账户名、偶数行密码。

[root@localhost vsftpd]#  vim /etc/vsftpd/vuser.txt
hjk
666
hxd
888

由于这样的明文信息很不安全,且vsftpd也无法加载该格式的数据,因此得用db_load命令对vuser.txt文件数据加密,且设置权限使得普通用户无法访问

#创建加密文件  -T 和-t参数必须加上,用于转化普通文本为vsftpd识别的数据库文件
[root@localhost vsftpd]# db_load -T -t hash -f /etc/vsftpd/vuser.txt /etc/vsftpd/vuser.db
[root@localhost vsftpd]# file vuser.db 
vuser.db: Berkeley DB (Hash, version 9, native byte-order)
[root@localhost vsftpd]# ll vuser.db
-rw-r--r-- 1 root root 12288 6月   7 15:46 vuser.db
[root@localhost vsftpd]# chmod 600 vuser.db 
[root@localhost vsftpd]# ll vuser.db 
-rw-------. 1 root root 12288 6月   7 15:04 vuser.db
[root@localhost vsftpd]# rm -rf vuser.txt

第二步:创建当虚拟用户登录后默认访问的文件夹路径,且和linux中的一个本地用户做一个映射关系,防止匿名用户登录后,创建了文件夹,但是系统没有此用户报错权限问题

#创建一个新用户,指定用户家目录,且禁止登陆
[root@localhost vsftpd]# useradd -a /var/ftproot -s /sbin/nologin virtual
#检查此ftproot的属性
[root@localhost vsftpd]# ls -ld /var/ftproot/
drwxr-----. 3 virtual virtual 78 6月   7 15:32 /var/ftproot/
#更改文件夹权限
[root@localhost vsftpd]# chmod -Rf 755 /var/ftproot/

第三步:建立用于支持虚拟用户的PAM文件( PAM是一组安全机制的模块,默认编辑认证文件/etc/pam.d/vsftpd),我们添加一个文件为vsftpd.vu.

[root@localhost vsftpd]# vim /etc/pam.d/vsftpd.vu 
auth required pam_userdb.so db=/etc/vsftpd/vuser
account required pam_userdb.so db=/etc/vsftpd/vuser
​
### 新建一个用于虚拟用户认证的PAM文件vsftpd.vu,其中PAM文件内“db=”参数为使用db_load命令形成的账户密码数据库文件的路径,但不用写数据库文件的后缀。

第四步:修改主配置文件

anonymous_enable=NO             ##   禁止匿名开发模式
local_enable=YES                ##   允许本地用户模式
guset_enable=YES                ##   开启虚拟用户模式
guest_username=virtual          ##   指定虚拟用户账户   (为前面创建不可登录的用户账户)
pam_service_name=vsftpd.vu      ##   指定PAM文件(默认为vsftpd)
allow_writeable_chroot=YES      ##   允许对禁锢的FTP根目录执行写入操作,而且不拒绝用户的登录请求

第五步:为虚拟用户设置不同的权限。

hjk 可以上传、创建、修改、查看、删除文件

hxd 只可以查看

## 新建管理虚拟用户权限的文件夹
[root@localhost vsftpd]# mkdir /etc/vsftpd/vusers_dir/
[root@localhost vsfptd]# cd /etc/vsftpd/vusers_dir/
​
## 设置hjl的权限 为可以上传、创建、修改、查看、删除文件
[root@localhost vusers_dir]# touch hjk
[root@localhost vusers_dir]# vim hjk
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
​
## 设置hxd的权限 为只可以查看
[root@localhost vusers_dir]# touch hxd
[root@localhost vusers_dir]# vim hxd
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO

再次修改主配置文件,通过添加user_config_dir参数来定义这两个虚拟用户不同权限的配置文件所存放的路径。

### 在主配置文件下添加
user_config_dir=/etc/vsftpd/vusers_dir
​
### 重启服务
systemctl restart vsftpd
systemctl enable vsftpd

第六步:设置selinux域允许策略。

getrebool -a | grep ftp   ##查看ftp的selinuxde域策略
​
setsebool -P ftpd_full_access=on

 

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值