入侵检测与防御
设置并配置 Fail2Ban 等入侵检测系统(IDS),了解入侵防御系统(IPS)的原理,主动保护服务器。
入侵检测与防御 是 CoddyKit 上的免费 Linux Server Deployment & SSH Mastery 课时。 这是第 3 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Linux Server Deployment & SSH Mastery 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Linux Server Deployment & SSH Mastery 课程共包含 4 节课。
超越防火墙:主动防御
欢迎来到服务器安全的最后一课!我们已经学习了防火墙和审计,它们对于预防攻击至关重要。但如果攻击者执意尝试绕过这些防御措施,该怎么办?
本课将介绍入侵检测系统(IDS)和入侵防御系统(IPS)。这些工具提供额外的主动防御层,帮助您发现并阻止服务器上的恶意活动。
什么是 IDS
入侵检测系统(IDS)就像一名持续监视可疑活动的保安。它会监控服务器的网络流量或系统日志,查找表明攻击的模式。
- 被动监控:IDS 会检测威胁并向您发出警报。
- 不进行阻止:它不会主动阻止或防止入侵,其工作只是发出通知。
- 示例:Snort 或 Suricata 等工具可以充当基于网络的 IDS,分析传入和传出的数据。
什么是 IPS
入侵防御系统(IPS)将 IDS 的概念又推进了一步。IPS 不只是发出警报,还会主动介入以阻止检测到的威胁。
- 主动防护:它可以自动阻止恶意 IP 地址、终止可疑连接或丢弃有害数据包。
- 防御重点:目标是实时阻止入侵成功。
- Fail2Ban:这是基于主机的 IPS 的常见示例,也是我们今天重点学习的工具。
认识 Fail2Ban
Fail2Ban 是一款功能强大的开源基于主机的 IPS。它会扫描日志文件(例如 SSH、Web 服务器或邮件服务器的日志),查找重复的登录失败尝试或其他可疑模式。
当 Fail2Ban 检测到同一个 IP 地址在指定时间内尝试失败次数过多时,它会自动更新服务器的防火墙规则,暂时或永久禁止该 IP 地址。
Fail2Ban 的工作方式
Fail2Ban 使用三个核心概念:
- 过滤器:这些是正则表达式,用于定义要在日志文件中查找的模式(例如“root 的密码错误”)。
- 监狱:监狱将过滤器与操作结合起来。它会指定要监控的日志文件、要使用的过滤器,以及过滤器条件满足时要执行的操作。
- 操作:这些是 IP 被禁止时执行的命令,通常会修改防火墙规则(例如
iptables或ufw),以阻止源 IP。
安装 Fail2Ban
大多数 Linux 发行版的默认软件仓库中都提供 Fail2Ban。下面我们将在基于 Debian 的系统(例如 Ubuntu)上安装它。
首先更新软件包列表,然后安装 fail2ban 软件包:
sudo apt update
sudo apt install fail2ban基本配置:jail.local
Fail2Ban 的主配置文件是 /etc/fail2ban/jail.conf。但是,您绝不要直接编辑此文件,因为它可能会在更新过程中被覆盖。
请改为创建一个名为 /etc/fail2ban/jail.local 的副本,并在那里进行修改。此文件会覆盖 jail.conf 中的设置。
下面是您可能会在 jail.local 中配置的一些重要全局设置:
bantime:IP 被禁止的时长(例如,10m表示 10 分钟)。findtime:统计失败尝试的时间窗口(例如10m)。maxretry:IP 被禁止前允许的失败尝试次数(例如5)。
启用 SSH 防护
Fail2Ban 最常见的用途之一是保护 SSH 免受暴力破解攻击。在您的 /etc/fail2ban/jail.local 文件中,您会看到针对不同服务的部分,这些部分称为“监狱”。
要启用 SSH 监狱,通常只需在 [sshd] 部分下设置 enabled = true。您还可以自定义其 bantime、findtime 和 maxretry 值。
编辑完成后,重启 Fail2Ban 使更改生效:
[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 1h
sudo systemctl restart fail2ban监控 Fail2Ban
配置并启动 Fail2Ban 后,您需要检查其状态,确认它是否正在主动禁止 IP。您可以使用 fail2ban-client 命令完成此操作。
要检查 Fail2Ban 的总体状态:
sudo systemctl status fail2ban快速检查:Fail2Ban 配置
您已配置 Fail2Ban 来保护 SSH 服务,并设置了 maxretry = 3 和 bantime = 1h。
攻击者尝试通过 SSH 登录:
- 10:00:00 登录失败
- 10:00:30 登录失败
- 10:01:00 登录失败
- 10:01:30 登录失败
假设 findtime 设置为 10 分钟,攻击者的 IP 地址会发生什么?
回顾:IDS、IPS 和 Fail2Ban
做得很好!您已经学会了如何为服务器添加主动防御层:
- IDS(入侵检测系统)会检测可疑活动并发出警报。
- IPS(入侵防御系统)会检测并报告威胁,还会主动阻止威胁。
- Fail2Ban 是一种基于主机的 IPS,它会扫描日志中的恶意模式,并通过更新防火墙规则来禁止相关的 IP 地址。
- 您已经学会安装 Fail2Ban、在
jail.local中配置全局设置、启用特定监狱(例如 SSH),以及监控其状态。
实施 Fail2Ban 可以显著增强服务器抵御暴力破解攻击和其他自动化威胁的能力。请继续练习这些技能,构建真正稳健且安全的系统!
常见问题解答
「入侵检测与防御」课时是免费的吗?
是的 — 「入侵检测与防御」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Linux Server Deployment & SSH Mastery 课程的其余内容,请升级到 CoddyKit PRO。 Linux Server Deployment & SSH Mastery 课程共包含 4 节课。
「入侵检测与防御」这节课中我会学到什么?
设置并配置 Fail2Ban 等入侵检测系统(IDS),了解入侵防御系统(IPS)的原理,主动保护服务器。 你通过在浏览器中直接运行的动手代码来练习 Linux Server Deployment & SSH Mastery,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Linux Server Deployment & SSH Mastery 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Linux Server Deployment & SSH Mastery 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 3 节课,共 4 节。
「入侵检测与防御」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Linux Server Deployment & SSH Mastery 课中编写并运行代码吗?
能。每节 Linux Server Deployment & SSH Mastery 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。