目录
FTP的简介
FTP是FileTransferProtocol(文件传输协议)的英文简称,而中文简称为“文传协议”。用于Internet上的控制文件的双向传输。
同时,它也是一个应用程序(Application)。
基于不同的操作系统有不同的FTP应用程序,而所有这些应用程序都遵守同一种协议以传输文件。
FTP服务器默认使用TCP协议的20、21端口与客户端进行通信
20端口用于建立数据连接,并传输文件数据
21端口用于建立控制连接,并传输FTP控制命令
FTP的数据连接模式
主动模式:服务器主动发起数据连接
在第1步中,客户端的命令端口与FTP服务器的命令端口建立连接,并发送命令“PORT 1027”。然后在第2步中,FTP服务器给客户端的命令端口返回一个"ACK"。在第3步中,FTP服务器发起一个从它自己的数据端口(20)到客户端先前指定的数据端口(1027)的连接,最后客户端在第4步中给服务器端返回一个"ACK"。
被动模式:服务器被动等待数据连接
在第1步中,客户端的命令端口与服务器的命令端口建立连接,并发送命令“PASV”。然后在第2步中,服务器返回命令"PORT 2024",告诉客户端(服务器)用哪个端口侦听数据连接。在第3步中,客户端初始化一个从自己的数据端口到服务器端指定的数据端口的数据连接。最后服务器在第4 步中给客户端的数据端口返回一个"ACK"响应。
svftpd的安装和配置
svftpd的安装和配置
cd /etc/vsftpd
ls //切换到安装好vsftpd目录下查看文件
cp vsftpd.conf vsftpd.conf.bak //将vsftpd的配置文件进行备份
vsftpd初始化全局配置
vim /etc/vsftpd/vsftpd.conf
重启vsftpd服务,关闭安全防护
[root@localhost vsftpd]#systemctl restart vsftpd
[root@localhost vsftpd]#systemctl stop firewalld
[root@localhost vsftpd]#setenforce 0
chmod 777 /var/ftp/pub/ 这是匿名用户的默认根目录
echo ‘hello world!’ > test.txt
匿名访问测试
在Windows系统打开开始菜单,输入cmd 命令打开命令提示符
#建立ftp连接
#匿名访问,用户名为ftp,密码为空,直接回车即可完成登录
ftp> cd pub #切换到pub目录ftp
ftp> ls
ftp> get test.txt #获取目录中的文件下载到电脑
ftp> put test2.txt
存在的缺点:匿名用户权限过高,存在安全隐患
设置本地用户可以访问ftp,禁止匿名用户登录
对本地用户访问切换目录进行限制
添加切换目录的限制配置 :
vim /etc/vsftpd/vsftpd.conf
chroot_local_user=YES #将访问禁锢在用户的宿主目录中 取消注释即可
allow_writeable_chroot=YES #允许被限制的用户主目录具有写权限
更改用户登录的默认根目录
anon_root=/var/www/html #anon_root 针对匿名用户
local_root=/var/www/html #local_root 针对本地用户
vim vsftpd.conf
chmod 777 /var/www/html #赋予目录可读可写可执行权限
然后重启vsftpd服务器
黑名单和白名单的使用
在安装vsftpd服务后,官方贴心的为我们在服务目录中提供了user_list (其中就是为了我们更好利用黑名单和白名单的手册)。
黑名单:在黑名单上标记的用户,是我们禁止访问的对象。
白名单:在白名单上标记的用户是我们允许访问的对象,从某种意义上来讲,白名单比黑名单的制定更为严格和安全。
user_list 本身就是黑名单,加入了之后就不能登录
userlist_enable=YES #启用user_list用户列表文件
userlist_deny=NO #设置白名单,仅允许user_list用户列表文件的用户访问。默认为YES,为黑名单,禁用
systemctl restart vsftpd
root登录不了是因为约定俗成
vim ftpusers #注释root保存退出重启vsftpd