一、FTP相关知识
1、文件传输协议(File Transfer Protocol)是用于在网络上进行文件传输的一套标准协议,使用客户/服务器模式。专门用来文件的协议
2、端口:20/21
20:(数据端口)用于进行数据传输,
21:(命令端口)用于接受客户端发出的相关FTP命令与参数
二、工作原理
FTP的连接模式有两种:
1)主动模式
FTP服务器主动向客户端发起连接请求
客户端从一个任意的非特权端口N(N>1024)连接到FTP服务器的命令端口(即tcp 21端口)。紧接着客户端开始监听端口N+1,并发送FTP命令“port N+1”到FTP服务器。最后服务器会从它自己的数据端口(20)连接到客户端指定的数据端口(N+1),这样客户端就可以和ftp服务器建立数据传输通道了。
2)被动模式
FTP服务器等待客户端发起连接请求(FTP的默认工作模式)
在被动方式FTP中,命令连接和数据连接都由客户端。当开启一个FTP连接时,客户端打开两个任意的非特权本地端口(N > 1024和N+1)。第一个端口连接服务器的21端口,客户端不会提交PORT命令并允许服务器来回连它的数据端口,而是提交 PASV命令。这样做的结果是服务器会开启一个任意的非特权端口(P > 1024),并发送PORT P命令给客户端。然后客户端发起从本地端口N+1到服务器的端口P的连接用来传送数据。
三、认证模式
服务器端(192.168.76.204)客户端(192.168.76.136)
1)关闭防火墙和selinux
systemctl stop firewalld
setenforce 0
2 ) 安装服务器端和客户端
yum install vsftpd(服务器端)
yum install ftp(客户端)
FTP服务器允许用户以三种认证模式登录到FTP服务器上:
1、匿名开放模式:是一种最不安全的认证模式,任何人都可以无需密码验证而直接登录到FTP服务器。
3)#开放匿名用户的上传、下载文件的权限,以及让匿名用户创建、删除、更名文件的权限
vi /etc/vsftpd/vsftpd.conf #vsftpd主配置文件
将如下行的注释去掉:
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
4 ) 在服务器端
[root@wq ~]# ls -ld /var/ftp/pub/
drwxr-xr-x. 2 root root 6 Aug 3 2017 /var/ftp/pub/
[root@wq ~]# chown -Rf ftp /var/ftp/pub/
5)重启服务
systemctl restart vsftpd
systemctl enable vsftpd
6)在客户端开始测试
ftp 192.168.76.204
[root@xx ~]# ftp 192.168.76.204
Connected to 192.168.76.204 (192.168.76.204).
220 (vsFTPd 3.0.2)
Name (192.168.76.204:root): ftp
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> cd pub
250 Directory successfully changed.
ftp> mkdir dir
257 "/pub/dir" created
ftp> rename dir dir1
350 Ready for RNTO.
250 Rename successful.
ftp> rmdir dir1
250 Remove directory operation successful.
ftp> exit
221 Goodbye.
2、本地用户模式:是通过Linux系统本地的账户密码信息进行认证的模式,相较于匿名开放模式更安全,配置起来也很简单。
3 )
vi /etc/vsftpd/vsftpd.conf
4 ) 在客户端测试
不能使用root等系统用户登陆
vi /etc/vsftpd/ftpusers
#vsftpd服务所在目录中存放着两个用户名单ftpusers,user_list,出于安全原因,root默认不允许登录,编辑
这两个文件注释root即可。
新建一个用户:alice
ftp 192.168.76.204
3、虚拟用户模式:是这三种模式中最安全的一种认证模式,它需要为FTP服务单独建立用户数据库文件,虚拟出用来进行口令验证的账户信息,而这些账户信息在服务器系统中实际上是不存在的
3)
vi /etc/vsftpd/vuser.list
4 )创建vsftpd服务程序用于存储文件的根目录以及虚拟用户映射的系统本地用户。FTP服务用于存储文件的根目录指的是,当虚拟用户登录后所访问的默认位置。
cd /etc/vsftpd
db_load -T -t hash -f vuser.list vuser.db #db_load命令用哈希算法将原始的明文信息文件装换成数据库文件
file vuser.db
chmod 600 vuser.db
rm-rf vuser.list
5 )建立用于支持虚拟用户的PAM文件
useradd -d /var/ftproot -s /sbnin/nologin virtual
ls -ld /var/ftproot/
chmod -Rf 755 /var/ftproot/
6 )
vi /etc/pam.d/vsftpd
将里面的内容全部注释,并添加红线包括的两行
7)
vi /etc/vsftpd/vsftpd.conf
8 )为虚拟用户创建不同的权限
[root@wq ~]# mkdir /etc/vsftpd/vusers_dir
[root@wq ~]# cd /etc/vsftpd/vusers_dir
[root@wq ~]# touch user1
[root@wq~] vi user1
9 )
vi /etc/vsftpd/vsftpd.conf
添加红线那一行
10 )重启服务
systemctl restart vsftpd
11 ) 在客户端测试
ftp 192.168.76.204
创建目录,文件,重命名,删除都可以