看完本篇文章可以学习到的内容:①理解FTP协议的作用,②安装 vsftpd 服务程序并了解配置文件参数,③完整演示vsftpd 服务匿名访问模式、本地用户模式、虚拟用户模式的配置方法,④了解 PMA可插拔式认证模块的原理与认证流程,⑤通过配置vsftpd 服务程序加强对 SELinux 服务策略、安全上下文的配置与排错能力。
FTP 文件传输协议:能够让用户在互联网中上传、下载文件的文件协议。
FTP 协议端口号:
21端口:命令控制,用于接收客户端执行的FTP命令。
20端口:数据传输,用于上传、下载文件数据。
FTP数据传输的类型:
主动模式:FTP服务端主动向FTP客户端发起连接请求。
被动模式:FTP服务端等待FTP客户端的连接请求。
安装 vdftpd 服务程序 yum install vsftpd -y
清空默认的防火墙默认规则
保存清空后的防火墙规则表
使用 cat 命令查看vsftpd 程序的主配置文件
备份 vsftpd 的主配置文件
# 号是注释行,可以使用 grep 过滤掉这些注释,让配置文件的内容看起来更加直观
Vsftpd 程序配置文件参数的作用:
参数 作用
Listen=[YES/NO] 是否以独立运行的方式监听服务
Listen_address=IP地址 设置要监听的IP地址
Listen_port=21 设置FTP 服务的监听端口
Download_enable=[YES/NO] 是否允许下载文件
Userlist_enable=[YES/NO] (Userlist_deny=[YES/NO] ) 是否启用“禁止登陆用户名单”
Max_clients=[YES/NO] 最大客户端连接数,0为不限制
Max_per_ip=0 通一IP地址最大连接数,0为不限制
Anomymous_enable=[YES/NO] 是否允许匿名用户访问
Anon_upload_enable=[YES/NO] 是否允许匿名用户上传文件
Anon_umask=220 匿名用户上传文件的umask值
Anon_root=/var/ftp 匿名用户的FTP根目录
Anon_mkdir_write_enable=[YES/NO] 是否允许匿名用户创建目录
Anon_other_write_enable=[YES/NO] 是否开放匿名用户其他写入权限
Anon_max_rate=0 匿名用户最大传输速率(字节),0为不限制
Local_enable=[YES/NO] 是否允许本地用户登录FTP
Local_umask=022 本地用户上传文件的umask值
Local_root=/var/ftp 本地用户的FTP根目录
Chroot_local_user=[YES/NO] 是否将用户权限禁锢在FTP目录,更加的安全
Local_max_rate=0 本地用户最大传输速率(字节),0为不限制
vdftpd 的验证方式
vsftp 程序提供的FTP服务认证方式有:匿名访问、本地用户、虚拟用户
①匿名用户:任何人无需验证口令即可登入FTP客户端(用于存放公开的数据)
②本地用户:使用FTP服务器中的用户、密码和资料
③虚拟用户:创建独立的FTP账号资料
本地用户和虚拟用户需要用户提供账号和密码后才能登入FTP服务,更加的安全,而虚拟用户则是最安全的。
匿名访问模式 比较不安全的访问模式
使用 vim 打开vsftpd.conf 配置文件,填写下面方框内参数后保存退出
重启 vsftpd 服务程序并设置为开机启动
ftp 命令用于FTP服务, 格式为:ftp [参数] [FTP主机]
如果出现拒接连接,请在配置文件末尾添加下图指定用户的权限配置文件存放的目录
设置之后就可以使用匿名用户登入FTP服务了,可以切换目录但是不能创建目录
查看所有与 ftp 相关的SELinux 规则
设置SELinux 服务对 ftp 服务的访问规则策略为允许
因为FTP根目录所有者/组都是 root,匿名用户没有写入权限,所有还要将所有者改为 ftp
经过上面的操作之后匿名用户登入FTP服务后就可以写入、修改和删除目录了。
本地用户模式 比匿名用户模式更安全
vsftpd 服务程序默认已经允许本地用户模式,我们要做的事添加设置本地用户模式权限的参数:
填写好参数之后保存退出 vsftpd.conf 文件,然后重启 vsftpd 服务程序并设置为开机自启动
查看本地用户:
在客户端登入FTP服务
虚拟用户模式 比本地用户模式更安全
虚拟用户模式的账号口令都不是真实系统中存在的,配置虚拟用户模式的操作步骤相对复杂一些:
①建立虚拟FTP用户数据库文件
②创建FTP根目录及虚拟用户映射的系统用户
③建立支持虚拟用户的PAM认证文件
④在 vsftpd.conf 文件中添加支持配置
⑤为虚拟用户设置不同的权限
⑥重启 vsftpd 服务,验证
第一步:建立虚拟 FTP 用户数据库文件
切换到 vsftpd 程序目录:
创建用于生成 FTP 用户数据库的原始账号和密码文件(奇数为账号,偶数为密码)
使用 db_load 命令用 HASH算法生成 FTP 用户数据库文件 vuser.db
第2步:创建 FTP根目录及虚拟用户映射的系统用户
为保证其他用户可以访问,给与 读取和可执行权限(rwxr-xr-x)
第3步:建立支持虚拟用户的 PAM 认证文件
第4步:在 vsftpd.conf 文件中添加支持的配置
第5步:创建空白的 chd 的配置文件,指定 chuid 用户的具体权限
第6步:重启 vsftpd 服务,验证
可插拔认证模块 PAM
PAM 是一种认证安全机制的模块(插件),通过一些动态链接库和统一的 API 将系统提供的服务与认证方式分开,使得管理员可以根据需求灵活的调整服务程序的不同认证方式。
PAM采取了分层设计的思想:①应用程序层②应用接口层③鉴别模块层
PAM模块的重要目录:
/lib/security:pam 认证模块
/etc/pam.d:针对不同服务而定义好的 pam 配置文件
例:vsftpd 程序会在主配置文件(/etc/vsftpd/vsftpd.conf)中写入下面的参数:
pam_service_name=vsftpd
表示登录FTP服务器时是根据 /etc/pam.d/vsftpd 的文件内容进行安全认证的。