fail2ban安装和配置
如何在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
之前尝试pyinotify
,gamin
,systemd
。在此示例中,我指定了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