在RHEL / CentOS 6.3 / 5.8,Fedora 17/12上安装Fail2ban(入侵防御)系统

本文介绍如何在RedHat 6.3 / 6.2 / 6.1 / 6.0 / 5.8 CentOS 6.3 / 6.2 / 6.1 / 6.0 / 5.8和Fedora 17,16,15,14,13,12下安装和配置Fail2ban

的fail2ban是Python编程语言开发的一个开源免费的入侵防御框架。 的fail2ban通过监控日志文件例如/ var /日志/ pwdfail,/var/log/auth.log, 在/ var /日志/安全等工作 并禁止太多的密码失败尝试后的IP地址。 它用于更新iptable的防火墙规则拒绝的IP地址指定的时间量。

本文将告诉您如何安装和RHEL下配置的fail2ban 6.3 / 6.2 / 6.1 / 6.0 / 5.8 的CentOS 6.3 / 6.2 / 6.1 / 6.0 / 5.8Fedora 17,16,15,14,13,12系统。运行的fail2ban作为使用Python脚本来分析日志系统的入侵企图文件,并添加自定义规则,iptables的配置文件,守护进程,禁止访问某些IP地址。

Install Fail2ban in Centos

在RedHat / CentOS / Fedora中安装Fail2ban

标题为的fail2ban的安装和配置之前,我想告诉你,大部分攻击者试图获得通过SSH root访问权限。 所以,我建议你密切关注的事情,如禁用SSH root用户登录使用对SSH密钥的认证等。

在RHEL,CentOS和Fedora中安装Fail2Ban

默认情况下的fail2ban是不是Linux系统下,所以你需要添加和启用第三方RPMForge软件库EPEL软件库在你的Linux系统 一旦你添加存储库,使用以下命令YUM安装它。

# yum install fail2ban

为Fail2Ban配置默认部分

的fail2ban的配置文件位于/etc/fail2ban/jail.conf。 因此,使用VI编辑器,或者你觉得舒服的编辑器打开它。

# vi /etc/fail2ban/jail.conf

现在,您将看到默认部分,其中包含一些基本规则,然后是fail2ban本身。 如果要为服务器添加一些额外的保护,则可以根据需要自定义每个规则部分。

[DEFAULT]
# "ignoreip" can be an IP address, a CIDR mask or a DNS host. Fail2ban will not
# ban a host which matches an address in this list. Several addresses can be
# defined using space separator.
ignoreip = 127.0.0.1
# "bantime" is the number of seconds that a host is banned.
bantime = 600
# A host is banned if it has generated "maxretry" during the last "findtime"
# seconds.
findtime = 600
# "maxretry" is the number of failures before a host get banned.
maxretry = 3

让我描述每个规则部分及其描述和我们使用这些规则的目的。

  1. ignoreip:IgnoreIP部分可让您白名单某些IP地址阻塞。 在这里,你可以指定分隔空间的IP地址列表,并确保您包括您的地址。
  2. bantime:一台主机会从服务器上被禁止的秒数。 默认设置为600(600秒= 10分钟 ),你可能会增加这一个小时,如果你喜欢高。
  3. findtime:时间,一个主机有登录的量的默认值设置为10分钟 ,这意味着,如果一个主机尝试,并失败,对以上的次数maxretry数登录,它们将被禁止。
  4. maxretry:失败的登录尝试的主机前面的数字被阻止禁令的时间长度。

为Fail2Ban配置ssh-iptables部分

以下部分是默认的ssh-iptables的部分,它是默认打开的 因此,您不需要对此部分进行任何更改,

[ssh-iptables]
enabled  = true
filter   = sshd
action   = iptables[name=SSH, port=ssh, protocol=tcp]
sendmail-whois[name=SSH, dest=root, sender=fail2ban@example.com]
logpath  = /var/log/secure
maxretry = 5

您可以找到下面描述的每个规则的详细信息。

  1. 启用 :本节涉及的SSH保护上。 您可以通过更改字“ ”“ ”将其关闭。
  2. 过滤 :这种默认设置部分sshd的 ,指含有的fail2ban用于查找匹配规则的配置文件(/etc/fail2ban/filter.d/sshd.conf)。
  3. 动作 :这个动作告诉的fail2ban一次过滤器在/etc/fail2ban/action.d/iptables.conf文件相匹配,禁止匹配的IP地址。 如果你的服务器有邮件设置 ,您可以添加电子邮件地址 ,其中的fail2ban送你时,它禁止IP地址的电子邮件警报。 发送器部分是指文件/etc/fail2ban/action.d/sendmail-whois.conf文件。
  4. 日志路径 :日志路径是日志,其中的fail2ban将跟踪的位置。
  5. maxretry:最大重试部分是相同的定义,我们上面讨论的默认选项。

重新启动Fail2Ban服务

对fail2ban配置文件进行更改后,请务必重新启动Fail2Ban服务。

# chkconfig --level 23 fail2ban on
# service fail2ban start
Starting fail2ban:                                         [  OK  ]

验证Fail2Ban iptables规则

检查在IP表部分中生效的fail2ban添加的规则。

# iptables -L

我做了一些失败的登录尝试从我们的服务器到服务器fail2ban安装和它的工作原理。 您看到我的服务器的禁止的IP地址。

Message from syslogd@howtoing at Nov 23 13:57:53 ...
fail2ban.actions: WARNING [ssh-iptables] Ban 15.13.14.40
iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
fail2ban-SSH  tcp  --  anywhere             anywhere            tcp dpt:ssh
ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED
ACCEPT     icmp --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:ssh
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:http
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp multiport dports 5901:5903,6001:6003
REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited
Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited
Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
Chain fail2ban-SSH (1 references)
target     prot opt source               destination
DROP all -- 15.13.14.40 anywhere
RETURN     all  --  anywhere             anywhere

观看SSH登录尝试失败

要查看当前ssh失败的登录尝试,请运行以下命令,它将显示主机尝试的失败尝试的列表。

# cat /var/log/secure | grep 'Failed password' |  sort | uniq -c
1 Nov 19 16:53:37 howtoing sshd[28185]: Failed password for root from 172.16.25.125 port 1302 ssh2
1 Nov 23 13:57:43 howtoing sshd[19079]: Failed password for root from 115.113.134.40 port 57599 ssh2
1 Nov 23 13:57:46 howtoing sshd[19079]: Failed password for root from 115.113.134.40 port 57599 ssh2
1 Nov 23 13:57:50 howtoing sshd[19079]: Failed password for root from 115.113.134.40 port 57599 ssh2
1 Oct 18 14:11:58 howtoing sshd[8711]: Failed password for root from 172.16.18.249 port 4763 ssh2
1 Oct 18 14:12:03 howtoing sshd[8711]: Failed password for root from 172.16.18.249 port 4763 ssh2
1 Oct 18 14:12:11 howtoing sshd[8711]: Failed password for root from 172.16.18.249 port 4763 ssh2
1 Oct 18 14:12:16 howtoing sshd[8711]: Failed password for root from 172.16.18.249 port 4763 ssh2
1 Oct 18 14:12:22 howtoing sshd[8711]: Failed password for root from 172.16.18.249 port 4763 ssh2
1 Oct 18 14:12:28 howtoing sshd[8711]: Failed password for root from 172.16.18.249 port 4763 ssh2
1 Oct 18 14:12:47 howtoing sshd[10719]: Failed password for root from 172.16.18.249 port 4774 ssh2

从Fail2Ban中删除IP地址

从fail2ban iptable规则中删除禁止的IP地址。 运行以下命令。

# iptables -D fail2ban-ssh 1

对于任何其他信息,请访问的fail2ban官方页面。 如果您对本文有任何疑问,请通过评论告诉我们。