fail2ban安装和配置

时间:2019-04-29 03:17:38  来源:igfitidea点击:

如何在Linux上安装和配置fail2ban

Fail2ban

Fail2ban是可以安装以限制暴力攻击尝试次数的程序。Fail2ban允许管理员配置所谓的jail。这些监狱是各种程序(例如ssh)的特定设置。这些监狱可以指定在将初始IP地址添加到阻止列表之前允许登录的尝试次数。可以规定关于单个禁令持续多长时间的时间限制。在下面的示例中,我们将在CentOS 7服务器上安装fail2ban。

在CentOS 7 上安装fail2ban

在安装fail2ban软件​​包之前,我们需要安装一个称为EPEL的必备软件包。Enterprise Linux的额外软件包是Fedora的一个基于开源社区的免费开源存储库项目,该项目为Linux发行版提供了高质量的附加软件包,包括RHEL(Red Hat Enterprise Linux),CentOS和Scientific Linux。

首先,我们可以使用命令yum list epel-release检查EPEL软件包是否可用,

使用yum安装fail2ban

一旦安装了必要的必备软件包,我们就可以安装fail2ban软件​​包。使用的命令只是yum install fail2ban。以下是install命令的输出:

[root@centos07a ~]# yum install fail2ban

Fail2ban配置文件

一旦安装了必要的软件包,就可以查看位于/etc/fail2ban /的配置区域。

[root@centos07a ~]# cd /etc/fail2ban/
[root@centos07a fail2ban]# ls
action.d       filter.d   paths-common.conf  paths-freebsd.conf
fail2ban.conf  jail.conf  paths-debian.conf  paths-osx.conf
fail2ban.d     jail.d     paths-fedora.conf

主要配置文件是jail.conf。建议您不要手动编辑此文件。可以在名为jail.local的文件中创建任何自定义项。在下面的示例中,我创建了一个非常基本的文件。您可能希望复制原始文件jail.conf,然后根据需要进行编辑。

创建一个基本的自定义文件-jail.local

下面是一个非常基本的自定义配置文件。本地文件将覆盖jail.conf文件中的设置。

[DEFAULT]
bantime = 600
banaction = firewallcmd-ipset
backend = systemd
ignoreip = 127.0.0.1
findtime = 600
maxretry = 3

[sshd]
enabled = true

在上面的文件中,指定了以下属性:

bantime禁止时间

禁令将持续的时间(以秒为单位)。例如,值600等于10分钟的时间段。

ignoreip

允许指定要从任何禁止中忽略的IP地址列表。CIDR掩码格式可用于指定地址范围。

findtime

这是当前时间之前的时间间隔(以秒为单位),故障将计入禁令。

maxretry

这是在最后的查找时间(秒)内禁止IP地址所必须发生的故障数。

**backend
**
指定用于检测日志路径更改的后端。默认为auto,将在polling之前尝试pyinotifygaminsystemd。在此示例中,我指定了systemd

有关与任何这些参数有关的更多信息,请参见手册页jail.conf

配置fail2ban在系统重新启动时自动启动

创建jail.local配置后,需要将fail2ban设置为在系统重新启动时自动启动。为此,您必须执行以下命令:

systemctl enable fail2ban

启动和停止fail2ban

要启动fail2ban,请执行以下命令:

systemctl start fail2ban

要停止fail2ban,请执行以下命令:

systemctl stop fail2ban

要查看fail2ban的当前状态,请执行以下命令:

systemctl status fail2ban 

查看失败文件的日志文件

可以在以下位置找到与fail2ban相关的消息:/var/log/fail2ban.log

测试fail2ban

测试我们配置的最简单方法是实际尝试登录到运行fail2ban的服务器。为此,只需简单地ssh到服务器并尝试使用错误的密码登录。我们的配置指定` maxRetry = 3。这意味着在分配的时间内第三次尝试后,我们将收到指定时间段的禁止。

以下是我们的远程服务器尝试使用错误密码登录的输出:

john@ubuntu01-pc:~$ ssh [email protected]
[email protected] password: 
Permission denied, please try again.
[email protected] password: 
Permission denied, please try again.
[email protected] password: 
Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
john@ubuntu01-pc:~$ ssh [email protected]
ssh: connect to host 192.168.0.16 port 22: Connection refused
john@ubuntu01-pc:~$ ssh [email protected]
ssh: connect to host 192.168.0.16 port 22: Connection refused

从上面我们可以看到,该禁令是在第三次尝试失败后才实施的。

下面是fail2ban.log文件中的视图:

2015-03-07 16:19:28,685 fail2ban.filter         [21434]: INFO    Set jail log file encoding to UTF-8
2015-03-07 16:19:28,686 fail2ban.jail           [21434]: INFO    Initiated 'polling' backend
2015-03-07 16:19:28,696 fail2ban.filter         [21434]: INFO    Added logfile = /var/log/secure
2015-03-07 16:19:28,697 fail2ban.filter         [21434]: INFO    Set maxRetry = 3
2015-03-07 16:19:28,698 fail2ban.filter         [21434]: INFO    Set jail log file encoding to UTF-8
2015-03-07 16:19:28,699 fail2ban.actions        [21434]: INFO    Set banTime = 600
2015-03-07 16:19:28,700 fail2ban.filter         [21434]: INFO    Set findtime = 600
2015-03-07 16:19:28,701 fail2ban.filter         [21434]: INFO    Set maxlines = 10
2015-03-07 16:19:28,744 fail2ban.server         [21434]: INFO    Jail sshd is not a JournalFilter instance
2015-03-07 16:19:28,857 fail2ban.jail           [21434]: INFO    Jail 'sshd' started
2015-03-07 16:26:02,414 fail2ban.filter         [21434]: INFO    [sshd] Found 192.168.0.9
2015-03-07 16:26:11,456 fail2ban.filter         [21434]: INFO    [sshd] Found 192.168.0.9
2015-03-07 16:26:16,478 fail2ban.filter         [21434]: INFO    [sshd] Found 192.168.0.9
2015-03-07 16:26:17,589 fail2ban.actions        [21434]: NOTICE  [sshd] Ban 192.168.0.9

如果查看输出的最后4行,则可以清楚地看到该禁令是在第三次尝试失败后应用的。禁令的持续时间将持续指定的时间(600秒)。

在这段时间之后,该禁令将从IP地址中删除。从fail2ban.log的最后一个条目中可以看出:

2015-03-07 16:26:17,589 fail2ban.actions        [21434]: NOTICE  [sshd] Ban 192.168.0.9
2015-03-07 16:36:18,420 fail2ban.actions        [21434]: NOTICE  [sshd] Unban 192.168.0.9