如何使用Fail2ban保护您的Linux服务器

本教程将向您展示如何安装fail2ban和设置基本配置,以保护您的Linux系统免受暴力攻击。

管理Linux服务器时,提高服务器安全性应该是您的首要任务之一。 通过查看您的服务器日志,您可能经常会发现不同的强力登录,网络泛滥,利用搜索和其他许多尝试。

使用入侵防御软件(如fail2ban),您可以检查服务器日志并添加额外的iptables规则以阻止有问题的IP地址。

本教程将向您展示如何安装fail2ban和设置基本配置,以保护您的Linux系统免受暴力攻击。

要求

Fail2ban是用python编写的,唯一的要求是安装python:

  • Fail2ban分支0.9.x需要Python> = 2.6或Python> = 3.2
  • Fail2ban分支0.8.x需要Python> = 2.4
  • Root访问您的系统
  • 在视觉上,iptables或showewall和sendmail

如何在Linux系统中安装Fail2Ban

fail2ban的安装相对简单:

在CentOS / RHEL 7中安装Fail2Ban

首先更新您的包,启用Epel存储库并安装fail2ban ,如图所示。

# yum update
# yum install epel-release
# yum install fail2ban

在Debian / Ubuntu中安装Fail2Ban

首先更新您的软件包并安装fail2ban ,如图所示。

# apt-get update && apt-get upgrade -y
# apt-get install fail2ban

(可选)如果要启用邮件支持(用于邮件通知),则可以安装sendmail。

# yum install sendmail                   [On CentOS/RHEL]
# apt-get install sendmail-bin sendmail  [On Debian/Ubuntu]

要启用fail2bansendmail,请使用以下命令:

# systemctl start fail2ban
# systemctl enable fail2ban
# systemctl start sendmail
# systemctl enable sendmail

如何在Linux系统中配置Fail2ban

默认情况下, fail2ban使用位于/ etc / fail2ban /中.conf文件,这些文件首先被读取。 但是,这些可以被位于同一目录中的.local文件覆盖。

因此, .local文件不需要包含.conf文件中的所有设置,而只需要包含您要覆盖的设置。 应该在.conf中的.local文件中进行更改。 这将防止在升级fail2ban数据包时覆盖更改。

出于本教程的目的,我们将现有的fail2ban.conf文件复制到fail2ban.local

# cp /etc/fail2ban/fail2ban.conf /etc/fail2ban/fail2ban.local

现在,您可以使用自己喜欢的文本编辑器在.local文件中进行更改。 您可以编辑的值是:

  • loglevel - 这是要记录的详细程度。 可能的选择是:
    • 危急
    • 错误
    • 警告
    • 注意
    • 信息
    • DEBUG
  • logtarget - 记录特定文件中的操作。 默认值为/var/log/fail2ban.log 但是,您可以将其更改为:
    • STDOUT - 输出任何数据
    • STDERR - 输出任何错误
    • SYSLOG - 基于消息的日志记录
    • 文件 - 输出到文件
  • socket - 将放置套接字文件的目录。
  • pidfile - pidfile的位置。

配置Fail2ban jail.local

fail2ban中最重要的文件之一是jail.conf ,它定义了你的jails。 您可以在此处定义应启用fail2ban的服务。

正如我们之前提到的, .conf文件可以在升级过程中更改,因此您应该创建一个jail.local文件,您可以在其中应用修改。

另一种方法是简单地复制.conf文件:

# cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

如果您使用的是CentOSFedora ,则需要将jail.local中后端“auto”更改为“systemd”

在Fail2ban中启用后端

在Fail2ban中启用后端

如果您使用的是Ubuntu / Debian ,则无需进行此修改,即使它们也使用了systemd

jail文件默认为DebianUbuntu启用S​​SH,但不在CentOS上启用。 如果要启用它,只需更改/etc/fail2ban/jail.local中的以下行:

[sshd]
enabled = true
禁止和重试时间

您可以配置阻止IP地址的环境。 为此, fail2ban使用bantimefindtimemaxretry

  • bantime - 这是IP地址将被禁止的秒数(默认为10分钟)。
  • findtime - 禁止主机之前登录尝试之间的时间量。 (默认10分钟)。 换句话说,如果在3次登录尝试失败后将fail2ban设置为阻止IP地址,那么这3次尝试必须在查找时间段内完成( 10分钟)。
  • maxretry - 应用禁令之前尝试的次数。 (默认3 )。
白名单IP地址

当然,您需要将某些IP地址列入白名单。 要配置此类IP地址, 使用您喜欢的文本编辑器打开/etc/fail2ban/jail.local ,并取消注释以下行:

ignoreip = 127.0.0.1/8  ::1

然后,您可以放置​​要忽略的IP地址。 IP地址应使用空格或逗号分隔。

电子邮件提醒

如果您希望在事件时收到邮件警报,则必须在/etc/fail2ban/jail.local中配置以下设置:

  • destemail - 邮件地址,您将收到notificatoin。
  • Sendername - 收到邮件时您将看到的发件人。
  • 发件人 - fail2ban将发送电子邮件的电子邮件地址。

默认mta邮件传输代理 )设置为sendmail

要接收邮件通知,您还需要更改“操作”设置:

Action = %(action_)s

其中一个:

action = %(action_mw)s
action = %(action_mwl)s
  • %(action_mw)s - 将禁止主机并使用whois报告发送邮件。
  • %(action_mwl)s - 将禁止主机,提供whois信息以及日志文件中的所有相关信息。

额外的Fail2ban Jail配置

到目前为止,我们已经查看了基本配置选项。 如果您希望配置jail,则需要在jail.local文件中启用它。 语法非常简单:

[jail_to_enable]
. . .
enabled = true

你应该用实际的jail替换jail_to_enable ,例如“sshd” jail.local文件中,将为ssh服务预定义以下值:

[sshd]

port = ssh
logpath = %(sshd_log)s

您可以启用过滤器,以帮助确定日志中的行是否为失败行。 过滤器值实际上是对服务名称后跟.conf的文件的引用。 例如: /etc/fail2ban/filter.d/sshd.conf

语法是:

filter = service

例如:

filter = sshd

您可以查看以下目录中的现有过滤器: /etc/fail2ban/filter.d/

使用fail2ban-client

Fail2ban附带了一个客户端,可用于查看和更改当前配置。 由于它提供了许多选项,您可以通过以下方式阅读其手册:

# man fail2ban-client 

在这里,您将看到一些可以使用的基本命令。 要查看fail2ban或特定jail的当前状态,您可以使用:

# fail2ban-client status

结果看起来与此类似:

检查Fail2ban状态

检查Fail2ban状态

对于个人监狱,您可以运行:

# fail2ban-client status sshd

在下面的屏幕截图中,您将看到我故意多次登录失败,因此fail2ban可以阻止我尝试连接的IP地址:

检查Fail2ban SSH状态

检查Fail2ban SSH状态

结论

Fail2ban是一个出色的,记录良好的入侵防御系统,可为您的Linux系统提供额外的安全性。 它需要一些时间来习惯它的设置和语法,但是一旦你熟悉它,你就可以随意改变和扩展它的规则。


分享按钮