前言
FTP(File Transfer Protocol,文件传输协议)是一种用于在计算机网络中传输文件的标准协议。它允许用户从一个计算机(称为FTP客户端)向另一个计算机(称为FTP服务器)发送和接收文件。
以下是FTP服务的一些关键特点和功能:
1. 文件传输:FTP允许用户在客户端和服务器之间传输文件。用户可以上传(将文件从客户端发送到服务器)和下载(将文件从服务器下载到客户端)文件。
2. 目录操作:FTP提供了一系列的命令,用户可以使用这些命令来浏览服务器上的目录结构、创建新目录、重命名文件或目录、删除文件或目录等。
3. 权限控制:FTP服务器可以实施权限控制机制,以保护文件的安全性。管理员可以为用户分配特定的权限级别,包括读取、写入、删除等。
4. 匿名访问:FTP服务器通常支持匿名访问,这意味着用户可以无需登录就可以访问公共文件库。
5. 端口控制:FTP使用两个端口进行通信,一个用于控制连接(命令交互)和另一个用于数据传输。这种分离使得FTP可以更高效地传输大型文件。
6. 加密支持:为了增强安全性,FTP还提供了通过SSL/TLS进行加密传输的选项。这样可以防止敏感数据在传输过程中被窃听或篡改。
尽管FTP是一种古老的协议,但它仍然被广泛用于文件传输和共享,特别是在需要可靠而高效的传输的场景中,例如网站维护、软件分发等。然而,随着时间的推移,由于安全性和性能方面的限制,FTP现在也逐渐被更现代的协议(如SFTP、FTPS或WebDAV)所取代。
一、DFP概述
(1)概述:
FTP:linux下最常见的文件服务器,工作于应用层,实现文件传输
FTP:file transfer protocol 文件传输协议
(2)FTP连接类型:
命令连接:客户端发起请求,服务器响应默认一直保持连接
数据连接: 按需打开,按需关闭,与命令连接相关联有可能同时打开多个数据连接
(3)端口:
控制连接 TCP/21
数据连接 20/随机端口
二、工作模式
主动模式
1、客户端用端口n连接服务器端的21号端口,建立连接并使用PORT命令告知服务器开启了n+1端口
2、连接建立后,服务器使用20端口主动向客户端的n+1端口发送连接,以建立数据连接
被动模式
1、客户端使用端口n连接FTP的21号端口,告知服务器使用被动模式
2、控制连接建立后,服务器建立端口P,使用PASV命令并告知客户端
3、客户端收到端口P后,使用n+1端口连接FTP的P端口,建立数据连接
三、安装配置
1.概述
1)服务名 vsftpd
2)主配置文件/etc/vsftpd/vsftpd.conf
3)用户控制文件 /etc/vsftpd/ftpusers /etc/vsftpd/user_list
4)用户验证类型:
匿名用户:是一种最不安全的模式,任何人都可无需密码验证而直接登录到FTP服务器
本地用户:是通过linux系统本地的账号密码进行验证登录,相比较匿名开放模式更安全,配置也比较简单。
虚拟用户
2.安装
1)首先配置我们服务器和客户端的环境关闭防火墙、setlinux、配置yum源、IP这里服务器设置为192.168.1.1客户端为192.168.1.2
同理配置客户机
2)安装
服务器安装vsftpd软件
安装好可以用rpm -qc vsftpd 查看它的文件位置
客户端安装ftp,否则无法使用ftp命令
登录时,直接使用ftp命令加上服务器IP地址
可以输入?查看当前可用的命令
3.匿名用户验证
1)匿名用户的用户名可以是ftp或者anonymous 密码无
2)工作目录/var/ftp、/var/ftp/pub
3)目录权限: 更改工作目录pub/的权限,使匿名用户能够进行写入的操作
4)可选配置项(在FTP服务器的/etc/vsftpd/vsftpd.conf)
anon_upload_enable=[YES|NO] //是否允许匿名用户上传文件 anon_mkdir_write_enable=[YES|NO] // 是否允许匿名用户创建目录 anon_other_write_enable=[YES|NO] // 是否开放匿名用户的其他写入权限(删除、改名)
我们想要让匿名用户上传文件就就修改
anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES
此外还要修改服务器/var/ftp/pub/目录的权限
4.本地用户验证
1)用户名:服务器本地用户
密码: 本地用户密码
工作目录:本地用户的家目录
2)可选配置项
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
3)本地用户访问控制
userlist_enable=YES userlist_deny=YES
不允许/etc/vsftpd/user_list文件中出现的用户名登录FTP
userlist_enable=YES userlist_deny=NO
仅允许/etc/vsftpd/user_list文件中出现的用户名登录FTP
ftpusers
不允许/etc/vsftpd/ftpusers文件中出现的用户名登录FTP,无论user_list如何设置
4)本地用户使用被动模式传输
配置项
pasv_enable=YES //启用被动模式 pasv_min_port=2001 // 被动模式使用的最小端口号 pasv_max_port=2005 //被动模式使用的最大端口号
验证
服务器主配置文件添加上述3条记录
客户端下载文件时,查看端口号