如何设置 IPS (Fail2ban) 以防御不同的攻击
IPS(入侵防御系统)是一种用于网络安全的技术,用于检查网络流量并通过检测恶意输入来防止不同的攻击。除了像入侵检测系统那样检测恶意输入之外,它还可以防止网络受到恶意攻击。它可以防止网络遭受暴力破解、DoS(拒绝服务)、DDoS(分布式拒绝服务)、漏洞利用、蠕虫、病毒和其他常见攻击。 IPS 放置在防火墙后面,它们可以发送警报、丢弃恶意数据包并阻止违规 IP 地址。在本教程中,我们将使用 Fail2ban(入侵防御软件包)来添加针对不同暴力攻击的安全层。
Fail2ban 如何运作
Fail2ban 读取日志文件(例如 /var/log/apache/error_log)并获取尝试过多失败密码或寻求漏洞利用的违规 IP。基本上,Fail2ban 会更新防火墙规则以阻止服务器上的不同 IP。 Fail2ban 还提供过滤器,我们可以将其用于特定服务(例如 apache、ssh 等)。
安装 Fail2ban
Ubuntu 上没有预装 Fail2ban,因此在使用它之前,我们必须先安装它。
ubuntu@ubuntu:~$ sudo apt-get install fail2ban
安装 Fail2ban 后,使用命令行启动并启用 Fail2ban 服务。
ubuntu@ubuntu:~$ sudo systemctl enable fail2ban
现在检查fail2ban服务的状态以确认它是否启动。
为 SSH 配置 Fail2ban
我们可以通过修改/etc/fail2ban/jail.conf文件来配置Fail2ban。在修改之前,请备份该文件。
现在我们将配置 Fail2ban 以防止 sshd 服务受到恶意输入。在您喜欢的编辑器中打开 /etc/fail2ban/jail.local 文件。
转至 [default] 部分并在 [default] 部分下输入配置参数。
ignoreip = 127.0.0.1/8 192.168.18.10/32
bantime = 300
maxretry = 2
findtime = 600
ignoreip 是由空格字符分隔的 cidr 掩码、IP 地址或 DNS 主机的列表。将您信任的IP添加到此列表中,这些IP将被列入白名单,即使它们对服务器进行暴力攻击也不会被fail2ban阻止。
bantime 是指在对服务器进行特定次数的失败尝试后,IP 将被阻止的时间。
maxretry 是 IP 被 failed2ban 阻止一段特定时间后的最大失败尝试次数。
findtime 是主机进行maxretry 失败尝试的时间量,它将被阻止。
配置完上述参数后,现在我们将配置要应用上述规则的服务。默认情况下,Fail2ban针对不同的服务预定义了过滤器,因此我们不需要为服务输入任何特定条目。我们只在配置文件中启用或禁用不同的服务。在您喜欢的编辑器中打开 /etc/fail2ban/jail.local 文件。
在文件中找到 [sshd] 部分,并在该部分中输入以下参数。
enable = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
enabled 定义此服务是否受fail2ban 保护。如果enabled为true,则该服务受到保护;否则,它不受保护。
port 定义服务端口。
filter 指的是fail2ban将使用的配置文件。默认情况下,它将使用 /etc/fail2ban/filter.d/sshd.conf 文件进行 ssh 服务。
logpath定义了日志的路径,fail2ban将进行监控以保护服务免受不同的攻击。对于 ssh 服务,身份验证日志可以在 /var/log/auth.log 中找到,因此,fail2ban 将监视此日志文件,并通过检测失败的登录尝试来更新防火墙。
maxretry 定义在被fail2ban阻止之前尝试登录失败的次数。
对fail2ban应用上述配置后,重新启动服务以保存更改。
ubuntu@ubuntu:~$ sudo systemctl status fail2ban.service
测试 Fail2ban
我们配置了fail2ban来保护我们的系统免受对ssh服务的暴力攻击。现在我们将从另一个系统在我们的系统上进行失败的登录尝试,以检查fail2ban是否正常工作。现在进行一些失败的登录尝试后,我们将检查fail2ban 日志。
我们可以看到,登录尝试失败后,该IP已被fail2ban封锁。
我们可以使用以下命令获取启用了fail2ban的所有服务的列表。
上图显示我们只对sshd服务启用了fail2ban。我们可以通过在上面的命令中指定服务名称来获取有关 sshd 服务的更多信息。
Fail2ban 在 bantime 后会自动解封被封禁的 IP 地址,但我们可以使用命令行随时解封任何 IP。这将为fail2ban提供更多控制。使用以下命令取消禁止 IP 地址。
如果您尝试取消禁止fail2ban未阻止的IP地址,它只会告诉您该IP未被阻止。
结论
对于系统管理员或者安全工程师来说,维护服务器的安全是一个很大的挑战。如果您的服务器受密码保护,而不是受公钥和私钥对保护,那么您的服务器更容易受到暴力攻击。他们可以通过应用不同的密码组合进入您的系统。 Fail2ban 是一个可以限制攻击者对您的服务器发起不同类型攻击的工具,包括暴力攻击和 DDoS 攻击。在本教程中,我们讨论了如何使用 Fail2ban 来保护我们的服务器免受不同的攻击。我们还可以使用Fail2ban来保护其他服务,例如apache、nginx等。