目录
FTP协议简介
FTP服务端软件:
vsftpd服务介绍
一、部署vsftpd服务
1.安装服务
2.启用服务并设置开机自启
3.相关参数
二、FTP用户设置
1.匿名用户设置
##重启服务使其生效
2.本地用户设置
(1)创建用户
选项:
(2)更改配置文件
(3)重启服务
3.虚拟用户设置
(1)创建虚拟用户文件
(2)生成Vsftpd虚拟用户数据库认证文件,设置权限700
(3)配置PAM认证文件
(4)创建需要映射的普通用户
(5)编辑配置文件
(6)为每个虚拟用户创建配置文件
(7)增加读写目录权限
(8)重启服务
(9)验证:客户端访问测试
FTP协议简介
FTP(File Transfet Protocol):文件传输协议,在互联网中基于TCP协议进行数据传输
默认端口:20(数据端口)用于数据传输、21(命令端口)用于接收客户端发出的FTP相关命令
FTP服务端软件:
Linux系统:vsftpd系统安全、稳定和高性能,配置灵活,支持多种认证方式,如匿名访问、本地用户认证等
Windows系统:使用 IIS(Internet Information Services)来搭建 FTP 服务。IIS 是 Windows 系统自带的 Web 服务器组件,提供了图形化的管理界面,便于配置和管理 FTP 站点
客户端软件:
Linux系统:ftp、lftp(推荐)
vsftpd服务介绍
vsftpd(very secure ftp daemon)一款开源免费安全可靠的FTP服务
vsftpd用户模式:本地用户、匿名用户(默认)、虚拟用户
环境准备:
Linux系统安装与配置指南:新手必读的保姆级教程,-CSDN博客文章浏览阅读447次。关闭并禁用防火墙,not running---防火墙处于关闭状态 running-----防火墙处于启用状态https://blog.csdn.net/weixin_72819498/article/details/136589044
一、部署vsftpd服务
1.安装服务
yum -y install vsftpd
2.启用服务并设置开机自启
systemctl enable vsftpd --now
3.相关参数
/var/ftp #文件共享目录
/etc/vsftpd/vsftpd.conf #主配置文件
/etc/vsftpd/ftpusers #设置黑名单
/var/log/xferlog #日志文件
二、FTP用户设置
1.匿名用户设置
vsftpd默认设置为匿名用户登录。在CentOS中,FTP匿名用户为ftp其匿名访问的目录为/var/ftp,/var/ftp/目录下默认设置了一个pub的文件夹,可供用户匿名访问FTP时实现上传文件的作用。FTP根目录不允许匿名用户或其他用户有写入权限。
vim /etc/vsftpd/vsftpd.conf12 anonymous_enable=YES #是否允许匿名用户访问,yes允许 no不允许 注释掉‘#’默认为允许29 anon_upload_enable=YES #是否允许匿名用户上传,需要更改文件目录的属主属组。注释掉默认为no33 anon_mkdir_write_enable=YES #是否允许匿名用户创建新目录,注释掉默认为no
...........
anon_other_write_enable=yes #是否允许匿名用户拥有写或删除权限(需手动添加)
##重启服务使其生效
systemctl restart vsftpd
——————————————————————————————————
注意:
如果启用上面其他选项需要检查pub(公共)目录的属主属组,才能有权限
chown -R ftp.ftp /var/ftp/pub
——————————————————————————————————————
2.本地用户设置
本地模式ftp默认共享目录为本地用户的家目录,但也可以在配置文件中更改其共享位置
(1)创建用户
useradd ftpuser -s /sbin/nologin
echo ftpser:123.com|chpasswd
选项:
-s #指定要使用的shell。本次案例指定/sbin/nologin,不能通过ssh登录但可以正常通过此用户运行 FTP 服务
(2)更改配置文件
vim /etc/vsftpd/vsftpd.conf
12 anonymous_enable=NO #如不需要匿名登录,安全起见可禁用
16 local_enable=YES #是否开启本地用户模式(默认启用)
19 write_enable=YES #是否启用本地用户拥有写权限(默认启用)
23 local_umask=022 #本地用户文件权限为755需反写,例如777减755=022
----------------------------------- ----------------------------------------------------------
##以下为可选功能,增加自定义设置
37 dirmessage_enable=YES #用户第一次登录时显示提示信息,(默认启用)
40 xferlog_enable=YES #启用日志记录功能,/var/log/xferlog可记录用户上传下载(默认启用)
49 chown_username=whoever #改变上传文件的属主属组
60 idle_session_timeout=600 #设置客户端超时时间
63 data_connection_timeout=120 #设置数据超时时间,传输数据中断所等待的时间
101 chroot_list_enable=YES #是否禁用本地用户可切换目录
114 listen=YES #是否监听ipv4连接,注意不可和ipv6同时启用
123 listen_ipv6=NO #是否监听ipv6连接,注意不可和ipv4同时启用
126 userlist_enable=YES #是否启用/etc/vsftpd/user_list控制名单,userlist控制名单优先级大于ftpusers黑名单文件(默认启用)
127 userlist_deny=NO #是否将/etc/vsftpd/user_list设置为黑名单,NO会将其设置为白名单(此项需手动添加)
max_clients=100 #限制最大并发连接数为100(手动添加)
(3)重启服务
systemctl restart vsftpd
3.虚拟用户设置
vsftpd 虚拟用户是 vsftpd 这款 FTP 服务器软件中不依赖系统真实用户账号,仅用于 FTP 服务访问控制,且更安全、灵活,可单独设置权限的专用 FTP 用户。
(1)创建虚拟用户文件
mkdir /etc/vsftpd/vuser
vim /etc/vsftpd/vuser/ftpuser.txt
test01
123
tets02
111
(2)生成Vsftpd虚拟用户数据库认证文件,设置权限700
cd /etc/vsftpd/vuser
db_load -T -t hash -f ftpuser.txt vsftpd_login.db
chmod 700 vsftpd_login.db
(3)配置PAM认证文件
sed -i 's/^[^#]/#&/' /etc/pam.d/vsftpd #使用sed注释掉所有行
vim /etc/pam.d/vsftpd
##/etc/pam.d/vsftpd行尾加入如下两行,其余行注释掉
auth required pam_userdb.so db=/etc/vsftpd/vuser/vsftpd_login
account required pam_userdb.so db=/etc/vsftpd/vuser/vsftpd_login
(4)创建需要映射的普通用户
所有Vsftpd虚拟用户需要映射到一个系统用户,该系统用户不需要密码,也不需要登录,主要用于虚拟用户映射使用,创建命令如下
useradd vuserftp -s /sbin/nologin
tail -2 /etc/passwd
(5)编辑配置文件
vim /etc/vsftpd/vsftpd.conf12 anonymous_enable=NO
##最后一行手动添加
130 guest_enable=YES #启用vsftpd虚拟用户功能
131 guest_username=vuserftp #指定映射的本地用户
132 user_config_dir=/etc/vsftpd/vuser/conf #指定虚拟用户的配置文件目录
133 virtual_use_local_privs=YES #让虚拟用户使用本地用户权限
(6)为每个虚拟用户创建配置文件
mkdir /etc/vsftpd/vuser/conf
vim /etc/vsftpd/vuser/conf/test01
local_root=/home/ftpuser/test01 #指定ftp共享根目录
write_enable=YES #基于写权限,虚拟用户可以执行修改、上传、删除等操作
anon_mkdir_write_enable=YES #允许创建新目录
##创建test02虚拟用户配置文件
vim /etc/vsftpd/vuser/conf/test02
local_root=/home/ftpuser/test02
write_enable=YES
anon_mkdir_write_enable=YES
(7)增加读写目录权限
mkdir /home/vuserftp/test0{1..3}
chmod 777 /home/vuserftp/test0*
(8)重启服务
systemctl restart vsftpd