目录
概述
FTP:linux下最常见的文件服务器,工作于应用层,实现文件传输
FTP:file transfer protocol 文件传输协议
FTP连接类型
命令连接:客户端发起请求,服务器响应 默认一直保持连接
数据连接:按需打开,按需关闭,与命令连接相关联 有可能同时打开多个数据连接
工作模式
主动模式
1、客户端用端口n连接服务器端的21号端口,建立连接并使用PORT命令告知服务器开启了 n+1端口
2、连接建立后,服务器使用20端口主动向客户端的n+1端口发送连接,以建立数据连接
被动模式
1、客户端使用端口n连接FTP的21号端口,告知服务器使用被动模式
2、控制连接建立后,服务器建立端口P,使用PASV命令并告知客户端
3、客户端收到端口P后,使用n+1端口连接FTP的P端口,建立数据连接
基本配置
端口:控制连接 TCP/21
数据连接 20/随机端口
服务名:vsftpd
主配置文件:/etc/vsftpd/vsftpd.conf
用户控制文件: /etc/vsftpd/ftpusers
/etc/vsftpd/user_list
匿名用户验证
用户名:ftp或者anonymous
密码:无
工作目录: /var/ftp、/var/ftp/pub
可选配置项
anon_upload_enable=[YES|NO] 是否允许匿名用户上传文件
anon_mkdir_write_enable=[YES|NO] 是否允许匿名用户创建目录
anon_other_write_enable=[YES|NO] 是否开放匿名用户的其他写入权限(删除、改名)
匿名用户验证
首先在服务器安装 vsftpd
命令为:yum -y install vsftpd
然后在客户机上安装 ftp
命令为:yum -y install ftp
1:匿名用户向服务器上传文件
在服务器主配置文件中进行修改
命令:vim /etc/vsftpd/vsftpd.conf 进入到主配置文件中进行修改
找到anon_upload_enable=yes把注释取消掉
保存退出 并重启服务:systemctl restart vsftpd
下面进入客户机输入 ftp 加上服务器的IP地址 并在输入用户名阶段输入 ftp 表示匿名登录
注意匿名用户不需要用密码可以直接回车
下面在家目录创建一个文件对其进行上传
上传之前需要用服务器并进入到 /var/ftp 下给到工作目录 /pub 最大权限才可以完成以下步骤
再次用匿名进入到 ftp 192.168.50.50 服务器 并cd进入到工作目录pub下再能进行上传 进行上传 上传命令为:put
2:是否允许匿名用户创建目录同样进入到服务器主配置文件中 找anon_mkdir_write_enable=YES
并取消注释随后保存退出 并重启服务:systemctl restart vsftpd
随后打开客户机 重复以上步骤进入 ftp 192.168.50.50 服务器当中先查看是否在工作目录再尝试创建目录
3.是否开放匿名用户的其他写入权限(删除、改名) 相同的进入服务器的主配置文件中
写入:anon_other_write_enable=YES
随后保存退出 并重启服务器 systemctl restart vsftpd
进入客户机之后要 exit 退出 重新进入 ftp 192.168.50.50 随后删除一个目录看一下
命令:rm (目录名称)
本地用户验证
可选配置项
local_enable=[YES|NO] 是否允许本地用户登录FTP
local_umask=022 本地用户上传文件的umask值
local_root=/var/ftp 本地用户的FTP根目录
chroot_local_user=[YES|NO] 是否将用户权限禁锢在FTP目录,确保安全
allow_writeable_chroot=YES 是否允许写入
chroot_list_enable=YES|NO 是否启用chroot_list_file
在/etc/vsftpd/chroot_list文件中列出被不限制的用户的列表chroot_list_file=/etc/vsftpd/chroot_list
用户名: 服务器本地用户
密码:本地用户密码
工作目录:本地用户的家目录
首先在服务器创建一个测试用的用户 并设置密码
1:是否允许本地用户登录FTP
命令:vim /etc/vsftpd/vsftpd.conf
进入服务器打开配置文件找到 local_enable=YES
对其取消注释 并查看是否是yes 表示允许本地用户登录
在进入到客户机依旧输入 ftp 192.168.50.50 并在选择用户阶段输入我们新创建的用户名“qq”
2:本地用户上传文件的umask值(法码值)
local_umask=022
一般情况下不做修改
3:本地用户的FTP根目录
local_root=/var/ftp
我们创建的用户通过 cd 那都能去对我们的网络环境的安全很不利所以需要配合
【chroot_local_user=[YES|NO] 是否将用户权限禁锢在FTP目录,确保安全】
【allow_writeable_chroot=YES 是否允许写入】
通过这两条配置文件可以把用户紧固在 local_root=/var/ftp 本地用户的ftp根目录下
在服务器主配置文件中找到 chroot_local_user=YES并在其上下 写入
【local_root=/var/ftp 本地用户的FTP根目录】
【allow_writeable_chroot=YES 是否允许写入】
完成以上步骤之后把
【chroot_list_enable=YES 是否启用】
【chroot_list_file=/etc/vsftpd/chroot_list】
在/etc/vsftpd/chroot_list文件中列出被不限制的用户的列表chroot_list_file=/etc/vsftpd/chroot_list
解除注释 随后保存退出
退出之后用vim进入 /etc/vsftpd/chroot_list 去添加可以不被禁锢的用户
:vim /etc/vsftpd/chroot_list 直接编辑即可 随后保存退出
然后我们切换到客户机验证一下 进入客户机之后要 exit 退出 重新进入 ftp 192.168.50.50
先看一下不被禁锢的用户 cjf 可以自由切换路径
再来看一下收禁锢的用户 qq 则切换不了
本地用户访问控制
1:userlist_enable=YES
userlist_deny=YES
不允许/etc/vsftpd/user_list文件中出现的用户名登录FTP
2:userlist_enable=YES
userlist_deny=NO
仅允许/etc/vsftpd/user_list文件中出现的用户名登录FTP
3:ftpusers
不允许/etc/vsftpd/ftpusers文件中出现的用户名登录FTP,无论user_list如何设置
1:userlist_enable=YES
userlist_deny=YES
不允许/etc/vsftpd/user_list文件中出现的用户名登录FTP
在服务器主配置文件中找到 userlist_enable=YES 下方写入 userlist_deny=YES 并保存退出并重启服务器
退出之后vim进入 /etc/vsftpd/user_list 写下不允许登录的用户名 他就登录不了FTP了
下面我们打开客户机尝试用“qq”用户登录一下 发现登录不了
2:userlist_enable=YES
userlist_deny=NO
仅允许/etc/vsftpd/user_list文件中出现的用户名登录FTP
进入到服务器主配置文件中把 userlist_deny=YES 改成 NO 随后保存退出 重启系统
然后用 vim 打开/etc/vsftpd/user_list 把 “qq” 再次添加到里面
打开客户机尝试登录发现qq可以进入
换一个用户尝试 发现连密码都没有输入直接显示登录不了
3:ftpusers
不允许/etc/vsftpd/ftpusers文件中出现的用户名登录FTP,无论user_list如何设置
在服务器用vim打开/etc/vsftpd/ftpusers 填入用户名
只要在/etc/vsftpd/ftpusers 填写了用户名 无论上两条怎么设置 那么这个用户都登录不了
打开客户机登录qq进行尝试 发现登录不了