一、ftp介绍
FTP(File Transfer Protocol,文件传输协议) 是 TCP/IP 协议组中的协议之一。FTP协议包括两个组成部分,其一为FTP服务器,其二为FTP客户端。其中FTP服务器用来存储文件,用户可以使用FTP客户端通过FTP协议访问位于FTP服务器上的资源。在开发网站的时候,通常利用FTP协议把网页或程序传到Web服务器上。此外,由于FTP传输效率非常高,在网络上传输大的文件时,一般也采用该协议。FTP能操作任何类型的文件而不需要进一步处理,但有着极高的延时,从开始请求到第一次接收需求数据之间的时间较长,并不时地执行一些冗长的登录进程,是互联中最老牌的文件传输协议
二、服务端vsftpd和客户端lftp安装及启用
服务端:
172.25.42.2 主机为p2
dnf install vsftpd -y
systemctl start vsftpd.service
firewall-cmd --permanent --add-service=ftp
firewall-cmd --reload
setenforce 0 临时关闭selinux
客户端:
172.25.42.1 主机为p1
dnf install lftp -y
vim /etc/hosts 写地址解析
setenforce 0 关闭selinux
三、vsftpd基本信息
服务名称:
vsftpd.service
配置目录:
/etc/vsftpd
主配置文件:
/etc/vsftpd/vsftpd.conf
默认发布目录:
/var/ftp
报错信息:
550 ##程序本身拒绝
553 ##文件系统权限限制
500 ##权限过大
530 ##认证失败
#########################
四、匿名用户访问控制
(1)客户端登陆方式
在浏览器中:ftp://172.25.42.2 输入用户的名称和密码即可效果如下
显示需要登陆的账户和密码
客户端shell窗口里可以直接用 lftp 172.25.42.2
因为目前ftp没有允许匿名用户可以登陆,所以查看不到文件内容
(2)控制匿名用户访问
上个小单元(1)已经展示了ftp服务默认不支持匿名用户访问,必须指定安装有ftp服务的主机的本地用户才能访问,因此,我们需要修改vsftp服务的配置文件/etc/vsftpd/vsftpd.conf。
1、 进入主配置文件修改,允许匿名用户访问
/etc/vsftpd/vsftpd.conf
2、重启服务,查看效果
systemctl restart vsftpd
(3)匿名用户家目录控制
服务端
1.、创建一个/westos目录,和子文件westosfile作为实验对象
mkdir /westos
2、 用selinux给予其/westos公共目录的安全上下文(只有当目录权限是公共目录的时候,才能被ftp发布读取)
(selinux开启的情况下才能赋予文件公共目录的安全上下文)
chcon -t public_content_t /westos/
touch /westos/westosfile
给予安全上下文后,显示为公共目录
(此处注意一定要在建立目录后给予安全上下文的权限,这样建立的子文件才能也拥有和目录一样的安全上下文权限,或者给予被访问的文件直接给其上下安全文)
3、更改匿名用户的家目录,重启服务
(4)上传控制
1、 匿名用户上传时,会出现550表示程序本身拒绝
2、进入配置文件,更改匿名用户上传权限,重启
vim /etc/vsftpd/vsftpd.conf
systemctl restart vsftpd.service
再进入lftp上传文件会发现报553错误,文件权限限制
3、对默认发布的目录给予权限,改变组的身份。
chmod 775 /var/ftp/pub
chgrp ftp /var/ftp/pub
4、再次登陆上传
lftp 172.25,254,120
cd pub
put /etc/passwd
5、 此时仍然权限拒绝,对selinux的高级防火墙进行修改
6、成功上传
五、匿名用户访问控制进阶
(1)匿名用户在ftp里目录创建
vim /etc/vsftpd/vsftpd.conf
systemctl restart vsftpd.service
完成,匿名用户可以创建目录
(2)匿名用户pub目录里下载控制
vim /etc/vsftpd/vsftpd.conf
systemctl restart vsftpd.service
(3)删除重命令控制
同上
anon_other_write_enable=YES|NO
(4)匿名用户上传文件权限设定
同上
anon_umask=022 上传文件权限=777-022-111=644,目录权限=777-022=755
(5) 匿名用户上传文件的用户身份设定
vim /etc/vsftpd/vsftpd.conf
systemctl restart vsftpd.service
(6)登陆数量控制:
同上
max_clients=2
多余用户会报错
(7)上传速率控制
同上
上传速率控制
anon_max_rate=102400 单位是字节 1024=1字节,这里代表100kb/s
六、本地用户的访问
(1)登陆控制
建立两个用户westos,ck。可以分别登陆lftp,但是lftp里面没有任何文件
vim /etc/vsftpd/vsftpd.conf
systemctl restart vsftpd.service
即可允许本地用户登陆
(2)家目录控制
注意:其他步骤同上,但是westos1一定是要有安全上下文的公共目录
local_root=/westos1/
(3)写权限控制(能否上传文件的控制)
其他步骤同上
write_enable=NO|YES ##不能上传/能上传
(4) 上传文件权限控制
local_umask=077 ##文件的权限为666-077=600
(5)用户登陆黑名单控制
/etc/vsftpd/ftpusers 永久黑名单,不管什么操作,都不能访问ftp
etc/vsftpd/user_list 临死黑名单
(6)用户登陆白名单
1、 将westos加入原本的临时黑名单
此时的临时黑名单已经变为临时白名单。只有在白名单里面的才能登陆
vim /etc/vsftpd/user_list
2、更改配置文件,将拒绝黑名单的功能关闭,此时黑名单变为白名单。
vim /etc/vsftpd/vsftpd.conf
systemctl restart vsftpd.service
结果westos用户登陆正常,ck用户无法登陆,加入永久黑名单的,即使在临时白名单里面的也不能登陆
(7)锁定用户只能访问自己的家目录
1、开启家目录锁定
systemctl restart vsftpd.service
2、去掉用户读的权限,即可完成锁定
chmod u-w /home/*
(8)锁定用户到自己的家目录中的黑名单
1、 手动建立黑名单
touch /etc/vsftpd/chroot_list
vim /etc/vsftpd/chroot_list
2、更改配置文件
vim /etc/vsftpd/vsftpd.conf
systemctl restart vsftpd.service
3、结果显示westos可以访问根目录,ck用户不能访问根目录。
(9)锁定用户到自己的家目录中的白名单
1、步骤同上,配置文件改为如下
108 chroot_local_user=YES
109 chroot_list_enable=YES
111 chroot_list_file=/etc/vsftpd/chroot_list
2、 建立白名单用户即可
七、虚拟用户访问
(1)建立虚拟用户过程
1、vim /etc/vsftpd/ftp_auth_file #建立认证文件模板
2、 对刚才生成的的模板转换为认证文件
db_load -T -t hash -f ftp_auth_file ftp_auth_file.db ##加密认证文件 -T 转换 -t hash加密方式 type -f 指定转换文件
3、进入认证密码管理目录,在其目录下创建认证规则
cd /etc/pam.d/
vim /etc/pam.d/westos_auth
4、将认证规则加入到vsftp的配置文件中
vim /etc/vsftpd/vsftpd.conf
systemctl restart vsftpd.service
5、登陆,认证完成
(2)虚拟用户家目录的独立设定
1、创建虚拟家目录
mkdir /ftphpme/{westos1,westos2}/pub -p ##一定要是之前创建的虚拟用户
mkdir /ftphpme/westos1/westos1file
mkdir /ftphpme/westos2/westos2file
chmod 7 /ftphpme/{westos1,westos2}/pub
2、 更改配置文件,设定虚拟用户的家目录
vim /etc/vsftpd/vsftpd.conf
systemctl restart vsftpd
3、 完成家目录更改
八、虚拟用户配置(上传,删除)独立,且设定which用户能做独立设置
1、 注释掉之前匿名用户的所有配置
systemctl restart vsftpd.service
2、 对配置文件进行更改
vim /etc/vsftpd/vsftpd.conf
systemctl restart vsftpd.service
3、对配置文件里面的用户进行控制,规定谁能上传文件
mkdir /etc/vsftpd/user_config
vim /etc/vsftpd/user_config/westos2
4、设定完成后westos2用户可以上传文件
westos1和westos3不行
九、总结
当改组为ftp后,家目录的权限一般为755,但是里面的文件的权限可以更改为其他的。