0、总体要求:
- ftp服务器只能本地用户访问。
- 支持互联网数据传输,【即必须使用被动模式】。
- ftp用户访问权限必须限定在
/data/ftpDir
目录下。- 登录ftp服务后,可以上传、下载文件,创建目录。
- 通过Nginx以http的方式将
/data/ftpDir
目录下的静态文件对外提供服务,方便浏览器解析。
一、目录配置:
# 创建目录并为目录赋予写权限
mkdir /data/ftpDir
chmod -R 777 /data/ftpDir
二、本地用户配置
useradd ftpuser
passwd ftpuser
禁止ftpuser用户登录系统
vim /etc/passwd
ftpuser❌1001:1001::/home/ftpuser:/bin/bash # 找到用户ftpuser所在的行,将行末的【bash】改为【nologin】
三、firewall配置:
firewall-cmd --zone=public --add-port=21/tcp --permanent
firewall-cmd --zone=public --add-port=3000-3099/tcp --permanent
firewall-cmd --reload
四、SeLinux配置:
getsebool -a | grep ftp # 查看ftp相关功能项
--------------------------------------------
ftpd_anon_write --> off
ftpd_connect_all_unreserved --> off
ftpd_connect_db --> off
ftpd_full_access --> on
ftpd_use_cifs --> off
ftpd_use_fusefs --> off
ftpd_use_nfs --> off
ftpd_use_passive_mode --> on
httpd_can_connect_ftp --> off
httpd_enable_ftp_server --> off
tftp_anon_write --> off
tftp_home_dir --> on
--------------------------
# 打开必要的ftp功能项
setsebool -P ftpd_full_access on
setsebool -P tftp_home_dir on
setsebool -P ftpd_use_passive_mode on
五、vsftpd配置:
- 禁止匿名访问:
anonymous_enable=NO # 修改
- 启用本地用户访问:
local_enable=YES # 默认已启用
- 指定访问目录,因为本地用户的默认访问目录是其home:
# 创建目录并为目录赋予写权限
mkdir /data/ftpDir
chmod -R 777 /data/ftpDir
local_roo=/data/ftpDir # 手动新增
- 本地用户通过ftp登录系统后,默认允许访问OS的整个文件系统的,存在安全隐患,必须限制:
chroot_local_user=YES # 打开注释
allow_writeable_chroot=YES # 手动添加
- 被动模式端口范围指定:
port_enable=NO # 关闭主动模式
pasv_enable=YES # 开启被动模式,才能通过互联网传输
pasv_min_port=3000
pasv_max_port=3099
grep -v "^#" /etc/vsftpd/vsftpd.conf # 查看最终生效的全部配置
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
chroot_local_user=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
port_enable=NO
pasv_enable=YES
local_root=/data/ftpDir
allow_writeable_chroot=YES
pasv_min_port=3000
pasv_max_port=3099
六、Nginx部分:
很简单,待续....