Note
创建 test 普通用户,然后给其设置一个密码,并修改该登录 shell 为 /bin/sh;最后将该用户禁用。
修改 /etc/vsftpd.conf 配置文件,关闭匿名用户。
修改 /etc/vsftpd.conf 配置文件,限制本地用户只能在自己的家目录中活动。
修改 /etc/vsftpd.conf 配置文件,设置每个 IP 的最大客户端连接数目为 5。
修改 /etc/vsftpd.conf 配置文件,设置服务监听端口为 2121。
设置客户端同时最大连接数为 100。
设置匿名用户的家目录为 /ftphome。
禁止所有用户进行写操作
CentOS 7 FTP 服务安全防护操作步骤
一、创建并禁用 test 用户
1. 创建普通用户
useradd test
2. 设置用户密码
passwd test
3. 修改登录 Shell 为 /bin/sh
usermod -s /bin/sh test
4. 禁用 test 用户
usermod -L test
usermod -e 1970-01-02 test
5. 验证用户配置
grep '^test:' /etc/passwd
passwd -S test
chage -l test
二、配置 FTP 服务
6. 安装 vsftpd
yum install -y vsftpd
7. 创建匿名用户家目录
mkdir -p /ftphome
8. 备份配置文件
CentOS 7 默认配置文件路径为 /etc/vsftpd/vsftpd.conf。
cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak
9. 修改配置文件
vi /etc/vsftpd/vsftpd.conf
按 i 进入编辑模式,找到对应配置项进行修改,没有的则添加。
# 关闭匿名用户
anonymous_enable=NO
# 允许本地用户登录
local_enable=YES
# 限制本地用户只能在自己的家目录中活动
chroot_local_user=YES
# 禁止所有用户进行写操作
write_enable=NO
# 每个IP最大客户端连接数为5
max_per_ip=5
# FTP服务监听端口为2121
listen_port=2121
# 最大客户端同时连接数为100
max_clients=100
# 匿名用户家目录
anon_root=/ftphome
# 启用IPv4监听
listen=YES
listen_ipv6=NO
注意:anonymous_enable=NO 表示匿名用户无法登录,但仍按考试要求配置 anon_root=/ftphome。
如果本地用户登录时出现 500 OOPS: vsftpd: refusing to run with writable root inside chroot(),可在本题禁止写入的前提下增加:
allow_writeable_chroot=YES
编辑完成后按 Esc,输入:
:wq
三、重启 FTP 服务
10. 启动并设置开机自启
systemctl restart vsftpd
systemctl enable vsftpd
11. 查看服务运行状态
systemctl status vsftpd
显示 active (running) 表示服务运行正常。
12. 查看监听端口
ss -lntp | grep 2121
四、配置防火墙和 SELinux
13. 开放2121端口
firewall-cmd --permanent --add-port=2121/tcp
firewall-cmd --reload
14. 允许 SELinux 使用2121端口
如果系统启用了 SELinux,执行:
yum install -y policycoreutils-python
semanage port -a -t ftp_port_t -p tcp 2121
如果提示该端口已存在于 SELinux 规则中,应先检查已有端口类型,再决定是否修改。