vsftpd服务的部署及优化
1.介绍
ftp:// 文件传输协议
互联网中最老牌的
2.实验环境(部署ftp服务)
安装vsftpd、lftp服务,前者是服务器,后者是测试软件,相当于浏览器。
安装完之后一定要setenforce 0
或者编辑/etc/sysconfig/selinux 改为disabled,然后重启系统。(内核级别的)
安装完成后启动服务
1.systemctl enable --now vsftpd 启动服务
2.firewall-config 图形方式控制火墙
火墙设置:要允许ftp服务,然后重新加载火墙
firewall-cmd --permanent --add-service=ftp
firewall-cmd --reload 命令方式控制火墙
然后查看是否被允许:firewall-cmd --list-all
3.测试:真机连接虚拟机:lftp 192.168.1.110 (这是我的虚拟机ip)
4.查看ftp涉及到的文件有哪些:rpm -ql vsftpd
5.ftp服务的基本信息
软件安装包:vsftpd
默认发布目录:/var/ftp 里面新建文件后,别人可以访问到
默认配置目录:/etc/vsftpd/vsftpd.conf
查看数据访问端口:netstat -antlupe | grep vsftpd
主动访问,我访问21端口,数据传输端口是20
被动访问,我访问21端口,被访问端随即开启一个大于1024的端口
默认使用的是被动访问模式,这种模式安全一点
2.1 测试
网页中输入:ftp://xxx.xxx.xxx.xxx
shelle中输入:lftp xxx.xxx.xxx.xxx
3.基本安全部署示例
-vim /etc/vsftpd/vsftpd.conf
-vim /etc/vimrc 设置个行号不然不好看
-vim /etc/sysconfig/selinux ##做实验之前要修改文件为disabled,不然会影响实验效果
也相当于setenforce 0 ##改为警告模式,不改可能会出现553错误,权限不够。
-每次修改配置文件后必须重启服务。systemctl restart vsftpd.server
-首先解释匿名用户:匿名用户就是使用ftp服务器时没有指定任何身份信息的用户(比如浏览淘宝,但没有登陆的用户,就是匿名用户)
-参数内容:
anonymous_enable=YES ##匿名用户可以登陆
local_enable=YES ##本地用户登陆
write_enable=YES ##ftp是否对登陆用户可写,也可以上传删除文件,put /etc/passwd 表示上传passwd文件
-报错ip解析:
500 ##文件系统权限过大
530 ##用户认证失败
550 ##服务本身功能未开启
553 ##本地文件系统权限过小
anonymous_enable=YES(修改之后一定要重启服务systemctl restart vsftp.service)
local_enable=YES(本地用户(搭载了ftp服务器的主机下的本地用户)可以登陆)
local_enable=NO
write_enable=YES(本地用户可以进行读写)
write_enable=NO
4.匿名用户参数设定
4.1匿名用户的读写
-匿名用户上传
vim /etc/vsftpd/vsftpd.conf
write_enable=YES
anon_upload_enable=YES ##如果不开,读写时会提示500功能没开启
##开启后仍然不可以读写,提示553本地文件系统权限过小
##查看/var/ftp文件权限,只有root用户可以写
##但是如果chmod 777 /var/ftp ,在登陆会提示500错误,权限过大,安全性太差
匿名用户在ftp下使用的是ftp这个用户身份
chgrp ftp /var/ftp/pub ##在哪个目录上传,就给哪个目录一个ftp权限(匿名用户默认使用ftp身份)
chmod 775 /var/ftp/pub ##设置权限
-匿名用户下载
get passwd ##出现550错误,服务本身没有开启
man 5 vsftpd.conf ##查看配置文件的帮助文档
下载相当于是一个复制过程,查询read
anon_world_readable_only=YES(只能下载可读文件)| NO(全部文件都可以下载)
-匿名用户建立目录
anon_mkdir_write_enable=YES
-匿名用户删除和重命名功能
anon_other_write_enable=YES
这条参数默认没有,自己写进去
rm ##删除
mv ##重命名
-匿名用户上传文件的用户身份设定(上传的文件所有者是指定用户)
chown_uploads=YES
chown_username=westos
chown_upload_mode=0644 ##权限设定,有特殊位的设定
匿名用户上传
匿名用户下载
匿名用户建立目录,删除和重命名
匿名用户上传文件的用户身份设定
4.2关于匿名用户的其他设定参数
4.2.1修改上传文件的权限anon_umask
-anon_umask=022
文件777-022-111=644 目录777-022=755
4.2.2修改登陆目录anon_root
默认登陆后是登陆/var/ftp目录中
修改:anon_root=修改的目录
4.2.3修改匿名用户的文件上传速度anon_max_rate
- 进行测试
dd if=/dev/zero of=/mnt/westosfile bs=1M count=1000 ##做一个1000M的文件
然后匿名用户登陆ftp进行上传,put /mnt/westosfile
查看速度 - 修改速度参数
anon_max_rate=102400 ##相当于100k(代表102400字节) - 检验速度
匿名用户登陆测试速度。
4.2.4最大客户端连接max_clients
-
测试
max_clients=2
5本地用户的设定(服务器上的用户)
5.1本地用户默认登陆地址(自己的家目录)
5.2修改本地用户登录目录修改
将本地用户默认登陆目录设置为/westos
修改文件内容: local_root=/westosdir
修改之后还未修改的话,可能是权限的问题,执行权限。
做完换回到原来默认家目录
5.3将用户限制在家目录
5.3.1为什么要限制
5.3.2限制所有普通用户
-1.开启功能(chroot_local_user=YES | NO )(YES表示所有人都出不去,NO表示所有人都能出去)
-2.限制权限,去掉写权限
-3.成功
5.3.3限制指定普通用户
5.3.3.1白名单
5.3.3.2黑名单
5.3.4限制本地用户登陆
5.3.4.1黑名单
永久黑名单: /etc/vsftpd/ftpusers 里的用户,ftp对这些用户永不开放,root用户也不例外!!!
临时黑名单:/etc/vsftpd/user_list 这俩个文件都是改了就生效,不需要重启!
永久黑名单
临时黑名单
5.3.4.2临时黑名单转为白名单
需要设置参数!!!
userlist_enable=YES 表示读取/etc/vsftpd/user_list文件
6虚拟用户的认证设定
6.1虚拟用户的简单认证设定(用户名和密码)
1.在/etc/vsftpd建立虚拟用户文件
2.对文件进行加密,采用db的加密方式
3.创建pam.d下的用户认证策略文件,pam负责询问用户是谁,密码是啥,进行用户认证。
required:通过认证就继续,不通过认证直接终止
pam_userdb.so:用户认证(检测)程序
db=/etc/vsftpd/vuserlist 要识别的文件,默认识别文件会自动加db后缀,不需要手动添加。
4.编辑主配置文件/etc/vsftpd/vsftpd.conf,打开虚拟用户功能
pam_service_name=vuserlist 指定用户策略文件
guest_enable=YES
guest_username=ftp 相当于法人名字,真实身份
1. 进行用户和密码的创建
2. 进行pam认证
3. 编辑主配置文件/etc/vsftpd/vsftpd.conf
然后重启服务
4. 测试
6.2虚拟用户的家目录设定及授权独立
6.2.1家目录建立
1.建立虚拟用户的家目录,这个目录可以自己选择建立在哪里
2.书写配置文件,让vsftpd.conf可以沿用shell里面的$USER命令
3.重启服务
4.测试能否看到自己的文件
6.2.2授权操作
-man 5 vsftpd 搜索config
-主配置文件中写入:user_config_dir=/etc/vsftpd/user_config
-user_config 目录是不存在的需要自己建立,目录名称可以自定义,并且优先级要高于主配置文件中直接设置
-配置每一个用户的授权项,如给user2建立一个上传功能,vim /etc/vsftpd/user_config/user2