Linux服务器安全加固

2026年最新Linux服务器安全加固指南——从零保护你的云服务器

服务器部署上线后,第一件事不是配置业务,而是安全加固


一、SSH安全配置

sed -i 's/#Port 22/Port 22822/' /etc/ssh/sshd_config
sed -i 's/PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config
systemctl restart sshd


二、防火墙配置

#ubuntu系统配置如下:
ufw enable
ufw allow 22822/tcp
ufw allow 80/tcp
ufw allow 443/tcp
ufw default deny incoming
#红帽系统配置如下:
systemctl start firewalld
systemctl enable firewalld.service
firewall-cmd --zone=public --add-port=22/tcp --permanent
firewall-cmd --zone=public --add-port=443/tcp --permanent
firewall-cmd --reload


三、Fail2Ban防暴力破解

#ubuntu类系统
apt install fail2ban
systemctl enable fail2ban
systemctl start fail2ban
#红帽类系统
dnf install fail2ban
systemctl start fail2ban
systemctl enable fail2ban

四、Fail2Ban配置实例

1. 备份原始配置:为了防止操作失误,可以先备份一下默认配置文件

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.conf.bak

2. 创建并配置jail.local

这是整个配置过程的核心。jail.local 文件会覆盖 jail.conf 中的设置,是你进行自定义的地方。

  • 创建文件:你可以复制默认配置作为起点,也可以创建一个全新的文件。推荐直接复制,这样可以看到所有默认选项

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
  • 编辑文件:使用你熟悉的编辑器打开这个文件,例如 vim

sudo vim /etc/fail2ban/jail.local

  • 理解并修改关键参数:配置文件主要分为 [DEFAULT](全局)和各个服务的 [服务名](特定)区块。你需要根据下面的说明来修改。

参数 作用 CentOS 9 推荐值 说明
bantime IP 被封禁的时长 1h 或 3600 常用单位有 m (分钟), h (小时), d (天)。
findtime 检测失败尝试的时间窗口 10m 或 600 maxretry 次失败必须发生在该时间段内。
maxretry 触发封禁的失败尝试次数 5 在 findtime 时间内失败 5 次则触发封禁。
banaction 【重要】 执行封禁的动作 firewallcmd-ipset 这行必须修改,这是 CentOS 9 配合 firewalld 的正确设置。
ignoreip 永不封禁的 IP 白名单 127.0.0.1/8 ::1 强烈建议将你自己的公网IP或公司网络IP段加在这里,避免误封。多个IP用空格隔开。
backend 系统日志的读取方式 systemd CentOS 9 及多数新版 Linux 使用此方式,效率更高。
  • 服务级设置 (以 SSH 为例),这里是你要保护的具体服务,比如 SSH。你需要找到 [sshd] 这部分,并进行配置。

参数 作用 推荐设置 说明
enabled 是否启用此服务的防护 TRUE 这是开启防护的总开关。
port 服务监听的端口 ssh 如果你修改了 SSH 的默认端口(比如 2222),请将 ssh 改为你的端口号。
logpath 该服务的日志文件路径 %(sshd_log)s 这是一个变量,会自动指向正确的 SSH 日志文件。
maxretry 针对 SSH 的失败次数 3 对 SSH 可以设置更严格一些,比如尝试3次就封禁。
  • 配置示例 (jail.local 文件内容)

为了方便你理解,这里提供一个基础的配置示例,你可以参考这个格式进行修改:

sudo vim /etc/fail2ban/jail.local

3.第三步:应用配置并验证

完成配置文件的修改后,你需要重启服务并检查一切是否正常运行。

  • 重启 Fail2ban 服务:

sudo systemctl restart fail2ban

  • 检查服务运行状态:

sudo systemctl status fail2ban

如果看到 active (running) 字样,表示服务启动成功。

  • 验证防护 (Jail) 是否生效:

sudo fail2ban-client status

输出中应该会列出你刚配置的 sshd,说明它已经被成功加载了。

💡 日常管理命令

目的 命令
查看某服务 (如 sshd) 的详细封禁信息 sudo fail2ban-client status sshd
手动解封一个IP sudo fail2ban-client set sshd unbanip <IP地址>
修改配置后重载服务 sudo systemctl restart fail2ban
查看 Fail2ban 自身日志 sudo journalctl -u fail2ban -n 50 或 tail -f /var/log/fail2ban.log

 📌 特别提醒

    关于 jail.d/ 目录:除了使用一个大的 jail.local 文件,你也可以在 /etc/fail2ban/jail.d/ 目录下创建独立的 .conf 文件来分别管理不同服务的配置,这在配置很多服务时更清晰。

    不要遗漏 EPEL 仓库:在 CentOS 9 上安装 Fail2ban 之前,必须先安装并启用 EPEL 仓库,否则默认的软件源里没有它。

    保护关键服务:除了 SSH,Fail2ban 还可以为 Nginx、Apache、Postfix 等服务提供保护,你可以在 jail.local 中找到对应的 [nginx-http-auth] 等区块,将它们 enabled = true 即可

💡 资源下载分类有全套脚本,免费获取。

By admin

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

This website uses cookies to analyze site traffic and improve your experience. By continuing to use this site, you consent to our use of cookies.