Fail2ban 监控与 InfluxDB 和 Telegraf
作者:社区 / 产品, 用例, 开发者
2021 年 1 月 26 日
导航至
本文由 Robert Hajek 撰写,他是 Bonitoo 的开发主管,Bonitoo 是一家位于布拉格的软件咨询公司,也是 InfluxData 咨询合作伙伴。
如果您的服务器在端口 22(SSH 服务器的默认端口)上对互联网开放,那么很常见的是,您会在 auth.log(日志文件)中每分钟发现多个“密码错误”,这是因为机器人不断浏览互联网,寻找容易使用常用密码破解的服务器。
但是,如果您的 auth.log 增长非常快,并且 SSH 守护程序随机拒绝创建新连接,那么可能有人将您的服务器标记为协同 SSH 暴力攻击的目标。我经历过一天内来自 10k 多个唯一 IP 的此类攻击。在这种负载下,SSH 守护程序变得不可靠,并开始随机拒绝新连接。这对于其他依赖服务和管理任务(如自动备份、rsync 等)来说可能是危险的。
一种替代方法是从互联网访问中禁用端口 22,并且仅允许选定的 IP,但这样做会失去灵活性。更好的替代方法是使用 Fail2ban 入侵防御软件框架,并监控其指标。这就是我创建 Fail2ban 监控模板的原因。以下是 Fail2ban 和此监控模板的概述。
使用 Fail2ban 加强服务器安全性
Fail2ban 帮助保护您的服务器免受未经授权的访问尝试。借助 Fail2ban,您可以将服务器配置为自动阻止从事可疑活动的 IP 地址。Fail2ban 监控服务器日志文件以查找入侵尝试,并且在来自主机的预设数量的失败后,自动阻止该主机的 IP 地址一段特定时间。
虽然 Fail2ban 在降低脚本攻击和僵尸网络风险方面特别有效,但它无法消除弱身份验证带来的风险。可视化 Fail2ban 指标的一种简单方法是 Fail2ban 监控模板,这是一种 InfluxDB 模板。
介绍 Fail2ban 监控模板
与其他 InfluxDB 模板一样,此模板是免费的且 易于设置。它允许您在一个易于共享的开源文本文件中快速定义您的整个监控配置(数据源、仪表板和警报),该文件可以使用单个命令导入到 InfluxDB 中。我喜欢从 Git 使用以下命令轻松设置模板:
influx apply -f https://raw.githubusercontent.com/influxdata/community-templates/master/fail2ban/fail2ban-template.yml -o my-org -t my-token
您所要做的就是将 URL 复制并粘贴到 InfluxDB 2.0 UI 中,即可启动并运行。要安装此模板,请下载 InfluxDB 或注册您的免费 InfluxDB Cloud 帐户。
Fail2ban 监控模板的工作原理
该模板的仪表板显示每个服务和主机的 2 个指标
- 失败的访问尝试次数 - 在这里我们可以看到失败的登录活动
- 被禁止的 IP 数 - 每个被禁止的 IP 地址都是防火墙中的一个规则。后来我们发现,大量此类规则(在我们的例子中,超过 20k 个唯一 IP)会导致网络问题,因此您需要稍微调整 jail.d/sshd.local 中的 Fail2ban 配置,如下所示:
[sshd]
enabled = true
maxretry = 3
findtime = 1d
bantime = 3d
ignoreip = 127.0.0.1/8
这意味着在 1 天窗口期内尝试 3 次未经授权的尝试后,IP 地址将被禁止 3 天,并且 127.0.0.1/8 被排除在禁止之外。
Telegraf Fail2ban 输入插件 将允许您收集和监控您随时间指定的失败和被禁止的 IP 地址。它使用 Fail2ban 收集失败和被禁止的 IP 地址的计数。插件收集的数据在模板的仪表板中可视化。
使用此插件可能需要权限调整,这在 Linux 平台上可能有所不同。运行 Telegraf 的用户必须有权运行“fail2ban-client status”命令。在我们的例子中,我们必须修改 systemd 设置。
关于如何使用开放 SSH 端口的一些技巧
SSH 允许您登录到远程计算机或服务器,并通过命令行界面控制它。但是,由于 SSH 对互联网开放,攻击者可能会尝试通过尝试各种用户名和密码组合来登录。以下是一些关于如何更好地保护您的 SSH 端口的技巧:
- 使用基于 SSH 公钥的登录,在 sshd_config 中禁用基于密码的登录
- 使用强密钥并使用强密码保护您的私钥
- 监控 ssh 守护程序
- 监控 auth.log 的大小
- 始终设置 Fail2ban(默认设置适用于大多数设置)
- 如果您想知道攻击者位于何处,请参阅此 Jupyter 笔记本,该笔记本按国家/地区对来自“fail2ban-client status”的 IP 列表进行分组。