一、文件传输协议
1.FTP协议
FTP是一种在互联网中进行文件传输的协议,基于客户端/服务器模式,默认使用20、21号端口,其中端口20(数据端口)用于进行数据传输,端口21(命令端口)用于接受客户端发出的相关FTP命令与参数。
2.工作模式
FTP协议有以下两种工作模式:
主动模式:FTP服务器主动向客户端发起连接请求
被动模式:FTP服务器等待客户端发起连接请求(FTP的默认工作模式)
二、vsftpd服务程序
1.常用的vsftpd服务参数
2.vsftpd服务程序模式
匿名开放模式:一种不安全的认证模式,任何人都可以无需密码验证而直接登陆到FTP服务器
本地用户模式:是通过Linux系统本地的账户密码信息进行认证的模式,相较于匿名开放模式更安全,而且配置起来也很简单。但是如果被黑客破解了账户的信息,就可以畅通无阻地登录FTP服务器,从而完全控制整台服务器
虚拟用户模式:是这三种模式中最安全的一种认证模式,它需要为FTP服务单独建立用户数据库文件,虚拟出用来进行口令验证的账户信息,而这些账户信息在服务器系统中实际上是不存在的,仅供FTP服务程序进行认证使用。这样,即使黑客破解了账户信息也无法登录服务器,从而有效降低了破坏范围和影响
3.部署vsftpd
①yum install vsftpd //安装vsftpd服务
②yum install ftp //安装ftp命令行工具
③在firewalld图形界面下开启ftp端口
(1)匿名开放模式
将以上参数写入/etc/vsftpd/vsftpd.conf:
重启vsftpd服务,将vsftpd服务加入开机启动项:
systemctl restart vsftpd //重启vsftpd
systemctl enable vsftpd //将vsftpd加入开机启动项
此刻,匿名开放模式已经部署成功,现在尝试一下连接,连接格式如下:
ftp 服务器IP地址
为了保证实验效果明显,本地再开一个虚拟机B,去连接配置好的虚拟机A:(两台机器需要配置好环境,A需要关闭SELinux,开启http 21端口,B需要安装ftp命令行工具)
匿名开放模式中name是 anonymous,密码为空。
登陆成功之后默认访问的目录是/var/ftp,此刻想要有写入权限,需要将/var/ftp 目录的所属组改为ftp,初始所属组是root,连接上来的人没有权限。
(2)本地用户模式
修改配置文件如下:
将anonymous_enable=no,是用来关闭匿名开放模式。
此刻用原有的默认账户无法登陆,用正常账户就能登陆。
使用本地用户登陆之后,默认访问的是该用户的家目录,所以不必再修改目录的权限,但是这些的前提都是在关闭SELinux之下。
(3)虚拟用户模式
①创建用于进行FTP认证的用户数据库文件,奇数行为用户名,偶数行为密码。
cd /etc/vsftpd/ //进入vsftpd服务配置文件目录
vim vuser.list //新建虚拟用户名单
②加密虚拟用户列表
db_load -T -t hash -f vuser.list vuser.db
②创建vsftpd服务程序用于存储文件的根目录以及虚拟用户映射的系统本地用户
由于Linux系统中的每一个文件都有所有者、所属组属性,例如使用虚拟账户“张三”新建了一个文件,但是系统中找不到账户“张三”,就会导致这个文件的权限出现错误。为此,需要再创建一个可以映射到虚拟用户的系统本地用户。简单来说,就是让虚拟用户默认登录到与之有映射关系的这个系统本地用户的家目录中,虚拟用户创建的文件的属性也都归属于这个系统本地用户,从而避免Linux系统无法处理虚拟用户所创建文件的属性权限。
为了安全起见,把这个账户设置为不能登陆服务器,避免被黑客得到去做坏事情。
useradd -d /var/ftproot -s /sbin/nologin virtual //添加用户,设置其家目录为/var/ftproot,并设置为不能登陆
chmod -Rf 755 /var/ftproot //为家目录添加其他用户权限
③建立用于支持虚拟用户的PAM文件
PAM(可插拔认证模块)是一种认证机制,通过一些动态链接库和统一的API把系统提供的服务与认证方式分开,使得系统管理员可以根据需求灵活调整服务程序的不同认证方式。
通俗来讲,PAM是一组安全机制的模块,系统管理员可以用来轻易地调整服务程序的认证方式,而不必对应用程序进行任何修改。PAM采取了分层设计(应用程序层、应用接口层、鉴别模块层)的思想,其结构如图所示。
vim /etc/pam.d/vsftpd.vu
④在vsftpd服务程序的主配置文件中通过pam_service_name参数将PAM认证文件的名称修改为vsftpd.vu,PAM作为应用程序层与鉴别模块层的连接纽带,可以让应用程序根据需求灵活地在自身插入所需的鉴别功能模块。当应用程序需要PAM认证时,则需要在应用程序中定义负责认证的PAM配置文件,实现所需的认证功能。
需要用到的参数如下:
vim /etc/vsftpd/vsftpd.conf
⑤为虚拟用户设置不同的权限,想要让用户A有更多的权限,读写修改,用户B只有读权限
在/var/vsftpd下建立用户权限文件目录vuser_dir,在user_dir中建立文件,以帐户名为文件名
配置文件中写入
anon_upload_enable=YES或NO
anon_mkdir_write_enable=YES或NO
anon_other_write_enable=YES或NO
并在主配置文件/etc/vsftpd/vsftpd.conf中添加:
user_config_dir=/etc/vsftpd/vusers_dir
重启vsftpd服务,并关闭SELinux,
systemctl restart vsftpd
setenforce 0
用虚拟账户张三、李四分别登陆:
4.简单文件传输协议
简单文件传输协议是一种基于UDP协议在客户端和服务器之间进行简单文件传输的协议,占用端口69。
缺点:不如ftp功能强大,不能遍历目录,在安全性方面也比较弱。
优点:减少了无谓的系统和带宽消耗
部署TFTP:
(1)安装tftp
yum install tftp-server tftp -y
(2)修改配置文件/etc/xinetd.d/tftp
(3)重启tftp服务,加入开机启动项,并开启相应防火墙端口
systemctl restart xinetd
systemctl enable xinetd
TFTP的根目录/var/lib/tftproot,当用tftp服务登陆时候默认访问该目录。