类别:CentOS / 日期:2026-07-30 / 浏览:2167 / 评论:0

        以CentOS7为例。要求新建一个bigboy普通用户作日常ssh远程登录,禁用root远程ssh登录,安装Fail2ban,限制10分钟内失败3次,封禁3小时,并记录到日志中。

#实时查看系统扫描命令:
sudo tail -f /var/log/secure
#查看最近n行记录
sudo tail -n 100 /var/log/secure

        下面是一套完整的 CentOS 7 安全加固方案,按您的要求逐步执行。建议您在操作前先保持一个已连接的 SSH 窗口不要关闭,以防配置失误导致自己无法登录。

整体操作流程:

1、新建普通用户 bigboy并配置 sudo 权限

2、测试 bigboy用户 SSH 登录是否正常

3、禁用 root 用户的远程 SSH 登录

4、安装并配置 Fail2ban(规则:10分钟失败3次,封禁3小时,记录日志)


第1步:新建 bigboy普通用户

# 创建用户 bigboy,并自动创建家目录
useradd bigboy

# 设置密码(输入两次确认,建议使用强密码)
passwd bigboy

# 将 bigboy 添加到 wheel 组,使其拥有 sudo 权限
usermod -aG wheel bigboy

# 验证 sudo 权限是否配置正确(默认 wheel 组已有 sudo 权限)
# 如果之前修改过 sudoers 文件,请检查:
# visudo 确认以下行未被注释:
# %wheel  ALL=(ALL)       ALL

第2步:测试 bigboy用户 SSH 登录

关键步骤:务必先测试成功再继续!

保持当前 root 的 SSH 窗口保持打开状态(不要关闭)

打开一个新的终端窗口,尝试用 bigboy用户登录:

ssh bigboy@你的服务器IP -p 22

输入刚刚设置的密码,确认能正常登录

登录成功后,测试 sudo 权限:

sudo whoami
# 应该输出 root,表示 sudo 工作正常

如果登录失败,先排查问题再继续,否则您可能会把自己锁在门外!

第3步:禁用 root 远程 SSH 登录

用 bigboy 用户登录后,通过 sudo 编辑 SSH 配置文件:

sudo vi /etc/ssh/sshd_config

找到以下行并修改(如果找不到则直接添加):

# 禁止 root 通过 SSH 登录
PermitRootLogin no
# 仅允许 bigboy 用户登录(可选,增加安全性)
# 在文件末尾添加:
AllowUsers bigboy

保存退出后,先不要重启 SSH 服务,先检查配置语法:

sudo sshd -t

如果没有报错(无任何输出),则重启 SSH 服务:

sudo systemctl restart sshd

验证:打开另一个新终端,尝试用 root 直接 SSH 登录:

ssh root@你的服务器IP

应该会提示 Permission denied,说明禁用成功。

第4步:安装并配置 Fail2ban

4.1 安装 EPEL 仓库和 Fail2ban

# 安装 EPEL 源(CentOS 7 需要)
sudo yum install epel-release -y
# --------------------------
# 如果是Debian/Ubuntu系统
# apt install fail2ban 
# --------------------------
# 安装 fail2ban
sudo yum install fail2ban -y
# 启动 (先不启动,后面配置规则后再启动)
#systemctl start fail2ban
# 设置开机自启
sudo systemctl enable fail2ban

4.2 配置 Fail2ban(按您的规则)

Fail2ban 的主配置文件不建议直接修改,推荐创建本地配置文件覆盖默认设置。

# 创建本地配置文件
sudo vi /etc/fail2ban/jail.local

写入以下内容:

[DEFAULT]
# 封禁时间:3小时 = 10800秒
bantime = 10800
# 查找失败次数的时间窗口:10分钟 = 600秒
findtime = 600
# 失败次数阈值:3次
maxretry = 3
# 日志记录级别
loglevel = INFO
logtarget = /var/log/fail2ban.log
# 启用防火墙操作(CentOS 7 使用 firewall-cmd)
banaction = firewallcmd-rich-rules
action = %(action_mwl)s
[sshd]
# 启用 SSH 防护
enabled = true
port = ssh
filter = sshd
logpath = /var/log/secure

配置参数说明:

参数含义
bantime10800封禁 3 小时(单位:秒)
findtime600统计失败次数的时间窗口为 10 分钟
maxretry3在 findtime 内失败 3 次即触发封禁
banactionfirewallcmd-rich-rules使用 firewall-cmd 添加封禁规则

以下是ubuntu版本的规则,只是防火墙部分不用,可供参考:

[DEFAULT]
# 封禁时间:3小时 = 10800秒
bantime = 10800

# 查找失败次数的时间窗口:10分钟 = 600秒
findtime = 600

# 失败次数阈值:3次
maxretry = 3

# 日志记录级别
loglevel = INFO
logtarget = /var/log/fail2ban.log

# ---------- 关键差异:防火墙配置 ----------
# Ubuntu 默认使用 ufw,但 fail2ban 对 ufw 支持有限
# 推荐使用 iptables-multiport(几乎所有 Ubuntu 版本都支持)
banaction = iptables-multiport

# 动作配置:发送邮件通知(可选,需要配置邮件服务)
# 如果不需要邮件通知,可以简化为:
action = %(action_mwl)s

[sshd]
# 启用 SSH 防护
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log

4.3 启动 Fail2ban 并验证

# 启动 fail2ban
sudo systemctl start fail2ban
# 如果需要重启 fail2ban
#sudo systemctl restart fail2ban
# 查看运行状态
sudo systemctl status fail2ban
# 查看 SSH 防护状态(能看到当前被封禁的 IP 列表)
sudo fail2ban-client status sshd

4.4 验证封禁规则是否生效

可以用以下命令手动模拟测试(不要用您的正常登录 IP 测试,否则会把自己封掉):

# 查看当前封禁的 IP
sudo fail2ban-client status sshd
# 查看 fail2ban 日志
sudo tail -f /var/log/fail2ban.log
# 查看 firewall 封禁规则(被封禁的 IP 会在这里显示)
sudo firewall-cmd --list-rich-rules

测试您的配置是否生效

模拟攻击测试(从另一台机器执行):

# 用错误的密码连续尝试 SSH 登录 3 次以上
ssh bigboy@你的服务器IP
# 连续输入错误密码 3 次

观察日志:

# 在服务器上实时查看 secure 日志
sudo tail -f /var/log/secure
# 会看到 Failed password 的记录
# 查看 fail2ban 日志
sudo tail -f /var/log/fail2ban.log
# 会看到类似 "Ban 192.168.x.x" 的记录

image.png

查看防火墙规则确认封禁:

sudo firewall-cmd --list-rich-rules
# 应该能看到类似:
# rule family="ipv4" source address="被封IP" reject

image.png

? 查看封禁日志记录

您的规则已经将日志记录到 /var/log/fail2ban.log,可用以下命令查看:

# 查看所有封禁记录
sudo grep "Ban" /var/log/fail2ban.log
# 查看所有解封记录
sudo grep "Unban" /var/log/fail2ban.log
# 查看某个 IP 的封禁历史
sudo grep "193.32.162.26" /var/log/fail2ban.log

? 常用 Fail2ban 管理命令

命令作用
sudo fail2ban-client status查看所有启用的服务状态
sudo fail2ban-client status sshd查看 SSH 防护详细状态(含封禁 IP 列表)
sudo fail2ban-client set sshd unbanip <IP>手动解封某个 IP
sudo fail2ban-client reload重载配置文件(修改配置后使用)
sudo systemctl restart fail2ban重启 Fail2ban 服务

完成。

打赏

感谢您的赞助~

打开支付宝扫一扫,即可进行扫码打赏哦~

版权声明 : 本文未使用任何知识共享协议授权,您可以任何形式自由转载或使用。

 可能感兴趣的文章