目录
一.FTP简介
FTP是FileTransferProtocol(文件传输协议)的英文简称,而中文简称为“文传协议”。用于Internet
上的控制文件的双向传输。同时,它也是一个应用程序(Application)基于不同的操作系统有不同
的FTP应用程序,而所有这些应用程序都遵守同一种协议以传输文件
- FTP服务器默认使用TCP协议的20、21端口与客户端进行通信
- 20端口用于建立数据连接,并传输文件数据
- 21端口用于建立控制连接,并传输FTP控制命令
二.FTP的数据模式
1.主动模式
- 服务器主动发起数据连接
在主动模式下,FTP客户端随机开启一个大于1024的端口N向服务器的21号端口发起连接,发送
FTP用户名和密码,然后开放N+1号端口进行监听,并向服务器发出PORT N+1命令,告诉服务端
客户端采用主动模式并开放了端口。FTP服务器接收到PORT命令后,会用其本地的FTP数据端口
(通常是20)来连接客户端指定的端口N+1,进行数据传输
2.被动模式
- 服务器被动等待数据连接
在被动模式下,FTP客户端随机开启一个大于1024的端口N向服务器的21号端口发起连接,发送用
户名和密码进行登陆,同时会开启N+1端口。然后向服务器发送PASV命令,通知服务器自己处于
被动模式。服务器收到命令后,会开放一个大于1024的端口P(端口P的范围是可以设置的,后面
会说到这个是很重要的)进行监听,然后用PORT P命令通知客户端,自己的数据端口是P。客户
端收到命令后,会通过N+1号端口连接服务器的端口P,然后在两个端口之间进行数据传输
3.两种模式比较
- 主动模式传送数据时是“服务器”连接到“客户端”的端口(客户端开启数据端口)
- 被动模式传送数据是“客户端”连接到“服务器”的端口(服务端开启数据端口)
- 主动模式需要客户端必须开放端口给FTP服务端,很多客户端都是在防火墙内,开放端口给FTP服务器访问比较困难
- 被动模式只需要服务器端开放端口给客户端连接就行了
三.安装配置vsftpd
1.安装vsftpd
1.1.安装前关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
vim /etc/selinux/config
1.2.安装vsftpd
rpm -qc vsftpd
yum install -y vsftpd
1.3.查看
cd /etc/vsftpd
ls
1.4.备份
cp vsftpd.conf{,.bak}
2.配置
vim /etc/vsftpd/vsftpd.conf
3.重启后生效
systemctl restart vsftpd
systemctl enable vsftpd
netstat -lntp
四.相关实验
1.以win为例
1.1.设置并测试测试连通性
1.2.在终端里创建目录
cd /var/ftp
ls
pwd
mkdir xx01
ls

1.3.在虚拟机win里查看
1.4.在终端里创建文件
echo 'zx like xuexi' > zx.txt
ls
1.5.更改路径并下载
2.设置匿名用户(win为例)
2.1.关闭匿名用户
2.2.创建匿名用户
useradd xx
echo 123456 | passwd --stdin xx
useradd xy
echo 123456 | passwd --stdin xy
systemctl restart vsftpd
2.3.匿名用户无法登录
2.4.非匿名用户可以登录
3.设置白名单黑名单
3.1.进入设置
vim /etc/vsftpd/vsftpd.conf
3.2.设置白名单
3.3.添加用户
vim user_list