1 ftp介绍
1.1 ftp服务器安装
dnf install vsftpd-3.0.3-31.el8.x86_64 -y # 安装ftp服务
systemctl enable --now vsftpd # 启动ftp服务
systemctl stop --now firewalld.service # 关闭防火墙,允许客户端访问
anonymous_enable=YES #启动匿名用户访问功能
1.2 客户端访问ftp
dnf install lftp -y # 在Linux中可以安装此服务,在终端访问ftp
ftp://ip # 客户端访问ftp服务器
1.3 ftp服务器配置文件
- 服务名称:
vsftpd.service
- 配置目录:
/etc/vsftpd
- 主配置文件:
/etc/vsftpd/vsftpd.conf
- 默认发布目录:
/var/ftp
- 报错信息:
550 ##程序本身拒绝
553 ##文件系统权限限制
500 ##权限过大
530 ##认证失败
2 ftp匿名用户访问控制
注意,关闭此功能需要重启系统
2.1 匿名用户访问
anonymous_enable=YES #启动匿名用户访问功能,默认情况不允许登录
2.2 访问家目录控制
默认情况向访问的是/var/ftp
anon_root=/westosdir # 增加此信息
2.3 上传控制
anon_upload_enable=YES|NO # 运行匿名用户上传文件
chmod 775 /var/ftp/pub # 修改文件权限,使得匿名用户可以写入文件
chgrp ftp /var/ftp/pub
2.4 建立目录
anon_mkdir_write_enable=YES|NO
报错
出现以下问题是在设置权限时候,误将ftp根目录设置为775权限,实际上应在/var/ftp/pub
中设置权限。
2.5 下载权限
anon_world_readable_only=NO ##匿名用户可以下载不能读的文件,需要添加
2.6 删除权限
anon_other_write_enable=YES|NO
2.7 上传文件权限设定
2.7.1 上传文件权限设定
anon_umask=022 ##当设定chown_username之后上传文权限将不是用此参数设定
2.7.2 上传文件用户身份设定
chown_upload=YES
chown_username=lee
chown_upload_mode=0644
2.8 控制登录用户数量
max_clients=2 # 同时登录用户最大两个
2.9 控制文件上传速度
anon_max_rate=102400 # 100M
3 ftp本地用户的访问
3.1 登陆控制
local_enable=NO|YES #默认本地用户可以登录
3.2 家目录控制
local_root=/software # 增添内容
3.3 写权限控制
write_enable=NO|YES # 是否可以写入文件
3.4 上传文件权限控制
local_umask=077 # 控制上传文件的权限,预留权限
3.5 用户登陆控制
/etc/vsftpd/ftpusers
永久黑名单用户
/etc/vsftpd/user_list
默认情况下该名单是临时黑名单,修改参数后为白名单用户。
3.6 用户锁定自己家目录(安全隐患)
默认情况下,用户可以访问根目录,这样对于系统是不安全的,需要进行限制。
3.6.1 锁定用户到自己的家目录中
chroot_local_user=YES # 开启此功能后,所有用户被锁定在家目录中
chmod u-w /home/* # 删除写权限
3.6.2 锁定用户到自己的家目录中的白名单
默认用户是不可以访问根目录等位置,名单中的人可以访问
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list # 白名单
3.6.3 锁定用户到自己的家目录中的黑名单
默认用户是可以访问根目录等位置,名单中的人不可以访问
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list # 黑名单
4 ftp虚拟用户访问
rpm -qc vsftpd # 显示程序的配置文件
4.1 虚拟用户介绍
对于ftp服务安全问题,应该只能让他访问相应的文件,而不是访问文件的同时也具备本地用户相应的资源,所以需要创建虚拟用户。
4.1.1 虚拟用户认证文件
/etc/vsftpd/xxx # 自定义虚拟用户文件,第一行用户名,下一行密码
db_load -T -t hash -f ftp_auth_file ftp_auth_file.db ##加密认证文件
4.1.2 虚拟用户认证机制
/etc/pam.d/xxx # 自定义认证机制文件
pam_service_name=xxx ##指定认证策略文件
guest_enable=YES ##指定虚拟用户功能开启
guest_username=ftp ##指定虚拟用户在ftp服务器上的用户身份
4.2 虚拟用户家目录的独立设定
vim /etc/vsftpd/vsftpd.conf
local_root=/ftpfile/$USER
user_sub_token=$USER
4.3 用户配置独立
mkdir /etc/vsftpd/user_config # 虚拟用户独立的设置文件
user_config_dir=/etc/vsftpd/user_config #在此目录中与用户名称相同的文件为用户配置文件,在主配置文件中添加此信息