1.ftp的定义
ftp:// ##文件传输协议
2.ftp协议提供的软件
在rhel7中:vsftpd
3.部署ftp服务
ftp(文件传输协议)是Internet上常用的最老的网络协议之一,它的系统提供了通过网络与远程服务器进行传输的简单方法。ftp服务器包的名称为vsftpd,它代表Very Secure File Transfer Protocol Damon,服务器名称也叫做vsftpd。
默认配置文件让anonymous用户(匿名用户)只能下载位于chroot目录中的内容。
/var/ftp/这意味着远程ftp客户端能以anonymous用户或ftp身份连接到服务器(无需密码),并从ftp服务器上的/var/ftp/目录下载文件(其本地ftp用户可以读取这些文件)
一、建立ftp服务
步骤:
1、下载ftp服务
命令:
yum install vsftpd -y ##需要本地yum源,如没有详情见《linux中yum源搭建及软件管理》
systemctl start vsftpd
systemctl enable vsftpd
systemctl status vsftpd
2、关闭内核级的加强形火墙(编辑 /etc/sysconfig/selinux 文件并重启虚拟机)
vim /etc/sysconfig/selinux ##disabled
getenforce ##查看状态并未改变
reboot
3、设置火墙永久允许ftp服务
firewall-cmd --permanent --add-service=ftp
firewall-cmd --reload
4、启动服务
5、在浏览器服务端输入需要连接的ftp服务的ip
(显示页面说明ftp服务设置成功)
6、测试服务:在真机里打开一个shell
二、ftp服务的基本信息
软件安装包:vsftpd
默认发布目录:/var/ftp
协议接口:21/tcp
服务配置文件: /etc/vsftpd/vsftpd.conf
报错id解析:
500 | 文件系统权限过大 |
530 | 用户认证失败 |
550 | 服务本身功能未开放 |
553 | 本地文件系统权限过小 |
三、匿名用户的登录
1、禁止匿名用户登录
编辑文件 /etc/vsftpd/vsftpd.conf
匿名用户:
anonymous_enable=YES/NO ##匿名用户是否可以登录
(注:wq保存退出后一定要重启服务否则修改的内容不会生效)
检测:
匿名用户不可以登陆:
本地用户可以登录:
2、匿名用户上传:
1、vim /etc/vsftpd/vsftpd.conf
2、systemctl restar vsftpd ##重启服务
3‘chgrp ftp /var/ftp/pub
4、chmod 775 /var/ftp/pub
(1)、编辑文件
编辑内容:
anon_upload_enable=YESwrite_enable=YES
anon_upload_enable=YES
(2)、修改权限
(3)、测试
3、匿名用户上传文件的权限
将匿名用户上传文件的权限修改为600
anon_umask=077
4、匿名用户建立目录的权限
anon_mkdir_write_enable=YES|NO
(1)、没有设置前(匿名用户不可建立目录)
(2)、设置匿名用户可以建立目录
(3)、测试:
(匿名用户可以建立目录)
5、匿名用户的下载
anon_world_readable_only=YESdd|NO ##no表示匿名用户可以下载
(1)、编辑文件
(2)、测试:
下载文件
查看下载好的文件
6、匿名用户的删除
anon_other_write_enable=YES|NO
(1)、没有设置前
(2)、编辑文件
(3)、测试:
(删除成功)
7、匿名用户使用的用户身份修改
chown_uploads=YES
chown_username=student
chown_upload_mode=0644
(1)、编辑文件
(2)、测试:
(上传的文件用户身份为student用户)
8、最大的上传速率
anon_max_rate=102400
(1)、没有设置前
(2)、编辑文件
(3)、测试
(网速和设定的值相似)
9、允许的最大链接数
max_clients=1
(1)、编写文件
(2)、测试:
(只能登录一个用户)
四、本地用户
1、本地用户是否可以登录
local_enable=YES/NO ##本地用户是否可以登录
(1)编辑文件
(2)、测试:
2、write_enable=YES/NO ##ftp是否对登录用户可写
(1)、没有设置前可以进行读写
(2)、编辑文件
(3)、测试:
(设置后读写无效)
3、本地用户上传文件的权限
local_umask=077
(1)、编辑文件
(2)、测试:
(上传文件一定要在上传功能开启后才可以上传)
4、限制本地用户浏览 / 目录
chroot_local_user=YES ##所有用户被锁定到自己的家目录中
(1)、设置前本地用户可以浏览 / 目录
(2)、编辑文件
(3)、修改权限
chmod ugo-w /home/*
(4)、测试
(用户不能浏览名 / 目录)
五、用户黑名单的建立
chroot_local_user=NO ##黑名单
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
(1)、编辑文件
(2)、建立 /etc/vsftpd/chroot_list (黑名单自己建立)
(3)、测试
六、用户白名单的建立
chroot_local_user=YES ##白名单
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
方法一:
(1)、编辑文件
(2)、创建chroot_list 文件
(3)、测试
方法二:
(1)、编辑文件
(2)、编辑 user_list 文件
(3)、测试
七、限制本地用户登录用户黑名单
vim /etc/vsftpd/ftpusers ##用户黑名单
(一)、ftpusers(永久黑名单建立)
(1)、编辑文件
(2)、测试
(二)、user_list (临时黑名单)
vim /etc/vsftpd/user_list ##用户临时黑名单
1、编辑文件
(2)、测试
八、ftp虚拟用户的设定
vim /vim /etc/vsftpd/www ##文件名称任意
(1)、创建虚拟帐号身份:
(2)、编辑文件内容
格式:用户名
密码
(3)、生成加密文件
命令:db_load -T -t hash -f www www.db ##加密
(4)、建立虚拟用户认证文件输入认证的匹配文件
(5)、编辑 /etc/vsftpd/vsftpd.conf 文件
(6)测试:
九、虚拟帐号家目录独立设定:用户只能查看自己的目录
(1)
(2)、
(3)、测试
9、虚拟帐号配置独立
(1)、关闭匿名用户上传文件的权限
(2)、测试:
(3)、建立用户可以上传的文件
(4)创建目录和文件
写入:anon_upload_enable=YES
此文件中设定配置文件中的所有参数,此文件的优先级高
(5)重启服务
(6)测试:只有qq1能上传文件
十、实验结束后还原原来的环境
十一、排错
(1)服务出现问题
(2)根据提示的错误找到问题所在
(3)问题解决
十二、SELinux安全策略
(一)、SELINUX=permissive(警告不强制)
(1)建立文件
(2)、测试:可以登录查看
(二)、SELINUX=enforcing ##强制执行selinux安全策略
(1)、登录/etc/sysconfig/selinux 文件
(2)保存后重启
(3)测试:登录不可看到上传文件
(访问被拒绝)
(三)、setenforce 0 将selinux安全策略设置为警告模式(用户登录可以访问)
(1)、时入命令setenforce 0
测试:用户可登录查看
(四)、setenforce 1 将selinux安全策略设置为强制模式(用户登录不可以访问)
(1)、输入命令:setenforce 1
(2)测试:登录不可见
(3)将setenforce 1 改为 setenforce 0
测试:
(五)、chcon -t public _content_t filename ##修改selinux安全策略的等级 (临时修改)
(1)、输入:chcon -t public _content_t filename
测试:登录可见
(六)、chcon -t public _content_t filename -R ##表示登录后该目录下的所有文件可见 (临时修改)
(1)建立目录以及文件
(2)、设置访问的家目录
(3)、输入chcon -t public _content_t filename -R 并查看文件信息
测试:
十三、setsebool -P tftp ome_dir on ##修改用户登录权限的参数(永久修改)
(1)输入:setsebool -P tftp ome_dir on
(2)、测试: