FTP是FileTransferProtocol(文件传输协议)的英文简称,而中文简称为“文传协议”。用于Internet上的控制文件的双向传输。同时,它也是一个应用程序(Application)。基于不同的操作系统有不同的FTP应用程序,而所有这些应用程序都遵守同一种协议以传输文件。
FTP服务器默认使用TCP协议的20、21端口与客户端进行通信
20端口用于建立数据连接,并传输文件数据
21端口用于建立控制连接,并传输FTP控制命令
在主动模式下,FTP客户端随机开启一个大于1024的端口N向服务器的21号端口发起连接,发送FTP用户名和密码,然后开放N+1号端口进行监听,并向服务器发出PORT N+1命令,告诉服务端客户端采用主动模式并开放了端口。FTP服务器接收到PORT命令后,会用其本地的FTP数据端口(通常是20)来连接客户端指定的端口N+1,进行数据传输
在被动模式下,FTP客户端随机开启一个大于1024的端口N向服务器的21号端口发起连接,发送用户名和密码进行登陆,同时会开启N+1端口。然后向服务器发送PASV命令,通知服务器自己处于被动模式。服务器收到命令后,会开放一个大于1024的端口P(端口P的范围是可以设置的,后面会说到这个是很重要的)进行监听,然后用PORT P命令通知客户端,自己的数据端口是P。客户端收到命令后,会通过N+1号端口连接服务器的端口P,然后在两个端口之间进行数据传输
主动模式和被动模式的不同简单概述为:
rpm -qc vsftpd //检查vsftpd安装包是否存在,存在即不需要安装
yum install -y vsftpd //yum 安装vsftpd
cd /etc/vsftpd
ls //切换到安装好vsftpd目录下查看文件
cp vsftpd.conf vsftpd.conf.bak //将vsftpd的配置文件进行备份
vim /etc/vsftpd/vsftpd.conf
anonymous_enable=YES #开启匿名用户访问。默认已开启
local_enable=YES #允许系统用户进行访问
write_enable=YES #开放服务器的写权限(若要上传,必须开启)。默认已开启
anon_umask=022 #设置匿名用户所上传数据的权限掩码(反掩码)。
本次实验运用ftp服务,模拟实际运用场景,分别针对匿名用户访问,本地用户访问不同的管控方式和权限设置。实现安全场景下,也能进行双方传输的操作环境
简单设置,让匿名用户拥有访问本机和各种权限
anon_umask=022 #设置匿名用户所上传数据的权限掩码(反掩码)。
anon_upload_enable=YES #允许匿名用户上传文件。默认已注释,需取消注释
anon_mkdir_write_enable=YES #允许匿名用户创建(上传)目录。默认已注释,需取消注释
anon_other_write_enable =YES #允许删除、重命名、覆盖等操作。需添加
修改配置vim /etc/vsftpd/vsftpd.conf
重启vsftpd服务,关闭安全防护
[root@localhost vsftpd]#systemctl restart vsftpd
[root@localhost vsftpd]#systemctl stop firewalld
[root@localhost vsftpd]#setenforce 0
本访问端放入一个a.txt的文件
访问端获取文件
为了发送的畅通,可以修改一下匿名用户访问的根目录权限
chmod 777 /var/ftp
访问端准备一个文件,写入信息
显示为接受
存在的缺点:匿名用户权限过高,存在安全隐患
vim /etc/vsftpd/vsftpd.conf
local_enable=Yes #启用本地用户
anonymous_enable=NO #关闭匿名用户访问
write_enable=YES #开放服务器的写权限(若要上传,必须开启)
local_umask=077 #可设置仅宿主用户拥有被上传的文件的权限(反掩码)
systemctl restart vsftpd
重启服务,后进行验证
匿名用户无法登录
本地用户test可用登录
安全隐患
本机用户登录可用随意切换目录
添加切换目录的限制配置
vim /etc/vsftpd/vsftpd.conf
chroot_local_user=YES #将访问禁锢在用户的宿主目录中
allow_writeable_chroot=YES #允许被限制的用户主目录具有写权限
切换失败,限制成功
除此之外我们还能修改ftp服务访问时,宿主家目录,让它的家目录成为我们指定的地方
同样是修改 vsftpd.conf (在响应的版块添加即可,保存退出重启服务)
修改匿名用户、本地用户登录的默认根目录
anon_root=/var/www/html #anon_root 针对匿名用户
local_root=/var/www/html #local_root 针对系统用户
在安装vsftpd服务后,官方贴心的为我们在服务目录中提供了user_list (其中就是为了我们更好利用黑名单和白名单的手册)
黑名单:在黑名单上标记的用户,是我们禁止访问的对象
白名单:在白名单上标记的用户是我们允许访问的对象,从某种意义上来讲,白名单比黑名单的制定更为严格和安全
userlist_enable=YES #启用user_list用户列表文件
userlist_deny=YES #默认为YES,为黑名单,禁止user_list名单上的用户进行访问
vim /etc/vsftpd/user_list
重启服务,用访问端进行测试
userlist_enable=YES #启用user_list用户列表文件
userlist_deny=NO #设置白名单,仅允许user_list用户列表文件的用户访问。
再次查看微调user_list
重启服务进行测试
通过“我的电脑”或者“网页” 输入 ftp://[email protected] 回车即可进入
1. ftp的服务中有两个端口,一个20用于数据连接,一个21用户ftp传输控制指令。同时它使用的是TCP传输协议
2. ftp运用中可以又匿名登录和本地用户登录。匿名登录,没有密码限制,无法看清来访者,存在安全风险比较高。本地用户登录,也可以通过修改vsftp.conf 限制其切换目录。
3.黑名单,是名单上的用户被拒绝访问。白名单是只有名单上的用户才可以进行访问