侧边栏壁纸
  • 累计撰写 11 篇文章
  • 累计创建 6 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

SSH安全工具—— Fail2Ban

Joe
Joe
2025-02-02 / 0 评论 / 0 点赞 / 27 阅读 / 0 字

前言

有时候我们遇到一些不法分子对我们的VPS进行ssh扫描爆破,为了防止暴力破解ssh,我们可以用到一款很好的防止暴力破解工具——Fail2Ban

安装 Fail2Ban 主要是为了增强系统的安全性,防止暴力破解攻击和其他恶意行为:

  1. 防止暴力破解攻击:Fail2Ban 会监控系统日志,检测到反复失败的登录尝试(如 SSH、FTP、Web 应用登录等),并自动将这些恶意 IP 地址封禁,避免攻击者通过暴力破解密码进入系统。

  2. 提高安全性:它为服务器提供额外的安全防护层,减少系统暴露给网络攻击者的机会,尤其是在常见的弱密码攻击面前,Fail2Ban 能有效减少风险。

  3. 自动化防护:Fail2Ban 可以自动响应和阻止攻击,避免了管理员手动阻止攻击的麻烦。它能根据预设的规则快速识别并应对攻击行为,降低人工干预的需求。

  4. 实时反应:Fail2Ban 能实时监控系统日志文件,一旦发现异常登录或恶意行为,它会立即采取措施,将攻击者的 IP 封禁在防火墙中,从而防止攻击的扩展。

  5. 灵活配置和扩展:Fail2Ban 支持针对不同服务进行单独配置,可以根据不同的需求自定义规则和封禁策略。比如,针对 SSH 登录、Web 服务(如 Apache 或 Nginx)等,都能进行个性化防护设置。

  6. 减少系统负担:通过自动封禁攻击 IP,Fail2Ban 有助于减轻服务器负担。它减少了暴力破解攻击带来的登录压力,防止攻击者浪费服务器资源,确保系统性能不受影响。

  7. 开源且低资源消耗:作为一款开源工具,Fail2Ban 不仅免费,而且对系统资源的占用非常少,适合用于各种规模的服务器,既能保障安全,又不影响服务器的性能。


本文以Debian12系统举例,Ubuntu系统也差不多类似的操作,其他系统自行搜索网上教程。

升级系统安装包

apt update -y

apt upgrade -y

安装rsyslog

sudo apt install rsyslog -y

Debian12默认没有安装rsyslog,没有它可能会无法启动Fail2Ban。rsyslog 是一种日志管理工具,主要用于在 Unix 和 Linux 系统中收集、存储和转发日志信息。它是一个强大的日志系统,常用于系统监控、安全审计、故障排查等。

修改ssh配置文件

nano /etc/ssh/sshd_config

/etc/ssh/sshd_config中找到PermitRootLogin,如果其后是no,改为yes。并确保PermitRootLogin前无#,已被启用。

重启 ssh 服务

sudo service sshd restart

安装UFW

sudo apt install ufw -y

启动UFW

sudo ufw enable

允许SSH登录

sudo ufw allow ssh     #默认22端口

如果修改过ssh登录端口

sudo ufw allow 端口/tcp comment 'SSH'

重启UFW

sudo ufw reload

安装Fail2ban

sudo apt install fail2ban -y

配置Fail2ban

在Debian12中,Fail2ban使用的是jail.local,可以在/etc/fail2ban/中创建jail.local文件,然后使用vi或nano等工具,把下方配置信息填入其中。或者直接输入nano /etc/fail2ban/jail.local,把下方配置信息复制进去并保存退出。配置信息根据自身需求调整。

[DEFAULT]
backend = systemd
banaction = ufw
bantime  = 15m
findtime  = 15m

[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 3

以下是配置信息的解释:

[DEFAULT] 部分

这个部分包含 Fail2Ban 的全局默认设置,适用于所有监控的服务,除非在单个服务配置中被覆盖。

  1. backend = systemd

    • 这个参数指定了日志后端的类型。在这里,systemd 表示 Fail2Ban 会使用 systemd 的日志系统来跟踪系统日志。

    • 如果使用的是其他日志系统(如 syslog),可以将其更改为相应的后端。

  2. banaction = ufw

    • 这个配置指定了当 Fail2Ban 检测到攻击时,采取的封禁措施。ufw 表示使用 Uncomplicated Firewall (UFW) 工具来阻止恶意 IP 地址。

    • 其他可选的封禁方法包括 iptables(如果未使用 UFW)等。

  3. bantime = 15m

    • 封禁时间,即 Fail2Ban 在发现恶意 IP 地址后,会将其封禁多长时间。这里设置为 15m,表示封禁 15 分钟。

    • 你可以根据需要将其更改为 m(分钟)、h(小时)或 d(天)。

  4. findtime = 15m

    • 这是 查找时间窗口,它定义了 Fail2Ban 在多长时间内监测指定数量的失败登录尝试(由 maxretry 定义)。在这里,15m 表示在 15 分钟内,如果检测到超过 maxretry 次的失败尝试,将触发封禁。

    • 如果在此时间窗口内失败的尝试次数超过 maxretry,Fail2Ban 就会采取行动。

[sshd] 部分

这是针对 SSH 服务(sshd)的配置,定义了 SSH 登录尝试的限制和封禁规则。

  1. enabled = true

    • 这个参数启用了 SSH 服务的 Fail2Ban 监控。如果设置为 false,则 Fail2Ban 不会监控 SSH 服务的日志。

    • 这里设置为 true,表示启用对 SSH 服务的监控。

  2. port = ssh

    • 这个参数指定了监控的服务端口。ssh 是一个预定义的端口名,指的是默认的 SSH 端口(22)。

    • 如果你使用的是非默认端口(比如 2222),可以改为 port = 2222

  3. filter = sshd

    • 这个配置指定了 Fail2Ban 用于过滤 SSH 服务的日志文件的过滤器。sshd 是预定义的过滤器,用于匹配与 SSH 登录相关的日志条目。

    • 过滤器会基于日志中出现的特定关键字(如 Failed password)来识别失败的登录尝试。

  4. logpath = /var/log/auth.log

    • 日志路径,指定了 Fail2Ban 需要监控的日志文件。在这里,它指定了 /var/log/auth.log,这是大多数基于 Debian 系统(如 Ubuntu)中保存认证相关日志的文件。

    • 如果你使用的是其他日志文件,可以修改为相应的路径。

  5. maxretry = 3

    • 最大重试次数,这个参数定义了在 findtime 时间窗口内允许的最大失败登录尝试次数。这里设置为 3,意味着如果在 15 分钟内尝试 SSH 登录失败 3 次以上,Fail2Ban 会认为这是恶意攻击并封禁该 IP 地址。

设置开机启动

sudo systemctl enable fail2ban

启动Fail2ban

sudo systemctl start fail2ban

查看Fail2ban状态

sudo systemctl status fail2ban

查看日志和活动

tail -f /var/log/fail2ban.log

解除被禁封的IP

sudo fail2ban-client set sshd unbanip 需要解禁的IP

一些Fail2ban的命令

sudo service fail2ban restart #重启
sudo fail2ban-client status #查看状态
sudo fail2ban-client status sshd #查看sshd的详细状态

总结

至此,已经成功安装Fail2ban。简单来说,安装 Fail2Ban 可以帮助你抵御常见的网络攻击,增加安全性并减轻维护负担,是任何需要保护的服务器的必备工具。

0

评论区