文件传输协议
FTP是一种在互联网中进行文件传输的协议,基于客户端/服务器模式,默认使用20、21号端口,其中端口20(数据端口)用于进行数据传输,端口21(命令端口)用于接受客户端发出的相关FTP命令与参数。
FTP服务器是按照FTP协议在互联网上提供文件存储和访问服务的主机,FTP客户端则是向服务器发送连接请求,以建立数据传输链路的主机。
FTP协议有下面两种工作模式:
主动模式:FTP服务器主动向客户端发起连接请求。
被动模式:FTP服务器等待客户端发起连接请求(FTP的默认工作模式)
Vsftpd服务程序
vsftpd是一款运行在Linux操作系统上的FTP服务程序,不仅完全开源而且免费,此外,还具有很高的安全性、传输速度,以及支持虚拟用户验证等其他FTP服务程序不具备的特点。
安装vsftpd,因为iptables防火墙管理工具默认禁止了FTP传输协议的端口号,清空iptables防火墙的默认策略并永久生效,以避免被这些默认策略影响vsftpd服务的配置。
安装vsftpd服务程序,清空iptables防火墙策略并保存
匿名访问模式
在vsftpd服务程序中,匿名开放模式是最不安全的一种认证模式。任何人都可以无需密码验证而直接登录到FTP服务器。这种模式一般用来访问不重要的公开文件。
编辑vim /etc/vsftpd/vsftpd.conf
重启服务并加入开机启动项
更改pub目录的属主为ftp
修改SELinux域策略ftpd_full_access为永久允许
用客户端执行“ftp 服务端ip地址”登录ftp服务器。登录帐号为anonymous,密码为空。
安装ftp再登录,可以创建和删除
本地用户模式
相较于匿名开放模式,本地用户模式要更安全,而且配置起来也很简单。但是如果被黑客破解了账户的信息,就可以畅通无阻地登录FTP服务器,从而完全控制整台服务器。
安装httpd服务,关闭防火墙状态并保存。编辑vsftpd服务的主配置文件,使其开启本地用户模式。完成后重启并加入启动项。
root默认在ftpusers和user_list中(上面配置使得user_list是黑名单),因此不能登录。要修改这两个文件。注释或者删除。
此时客户端就能以root身份登录ftp服务器了,默认访问的是该用户的家目录,而且该目录的默认所有者、所属组都是该用户自己,因此不存在写入权限不足的情况。但是当前的操作仍然会因为SELinux域策略的设置而被拒绝,需要在服务端把相关域策略设置为允许。
此时就可以登录ftp,如果ftp不存在需要安装
虚拟用户模式
虚拟用户模式是这三种模式中最安全的一种认证模式,因为安全性较之于前面两种模式有了提升,所以配置流程也会稍微复杂一些。
安装httpd服务,关闭防火墙状态并保存
转到vsftpd目录,创建用于进行FTP认证的用户数据库文件,其中奇数行为账户名,偶数行为密码
这样创建的文件都是明文信息,不安全,也不符合让vsftpd服务程序直接加载的格式,需要使用db_load命令用哈希算法将原始的明文信息文件转换成数据库文件。可以将其用rm删除
由于Linux系统中的每一个文件都有所有者、所属组属性,为此需要创建一个可以映射到虚拟用户的系统本地用户,让虚拟用户默认登录到与之有映射关系的这个系统本地用户的家目录中,虚拟用户创建的文件的属性也都归属于这个系统本地用户,从而避免Linux系统无法处理虚拟用户所创建文件的属性权限。
设置权限保证其他用户能对该目录进行相关操作。转到pam.d目录下查看
建立用于支持虚拟用户的PAM文件,编辑配置文件
为虚拟用户设置不同权限。创建一个目录,在目录里生成与虚拟用户同名的权限参数配置文件
编辑配置文件bbb
编辑vsftpd服务的主配置文件,开启虚拟用户模式。完成后重启并加入启动项
设置SELinux域允许策略,重启并加入启动项
安装ftp服务,登录可以查看文件
配置TFTP服务
简单文件传输协议(Trivial File Transfer Protocol,TFTP)是一种基于UDP协议在客户端和服务器之间进行简单文件传输的协议。顾名思义,它提供不复杂、开销不大的文件传输服务(可将其当作FTP协议的简化版本)。
安装tftp-server.x86_64服务,编辑配置文件。完成后重启并加入启动项,手动将UDP协议的69端口加入到防火墙的允许策略中,显示success表示成功。
创建一个文件并输入内容,关闭防火墙并保存,登录tftp,没有就安装tftp服务。登录后可以查看文件内容