防止在Debian蚀刻的Fail2ban的暴力攻击

防止在Debian Etch上使用Fail2ban进行强力攻击

版本1.0
作者:Falko Timme

在本文中,我将介绍如何在Debian Etch系统上安装和配置fail2ban 。 Fail2ban是一种工具,用于观察各种服务(例如SSH,FTP,SMTP,Apache等)的登录尝试,如果从同一个IP地址或主机一次又一次发现登录尝试失败,则fail2ban将停止该IP的进一步登录尝试地址/主机通过使用iptables防火墙规则进行阻止。

本文档不附带任何形式的保证! 我想说,这不是设立这样一个制度的唯一办法。 实现这一目标有很多方法,但这是我所采取的方式。 我不会保证这将为您工作!

初步说明

Fail2ban类似于本教程中涵盖的DenyHostshttp : //www.youcl.com/preventing_ssh_dictionary_attacks_with_denyhosts ,但与关注SSH的DenyHosts不同,fail2ban可以配置为监视将登录尝试写入日志文件的任何服务,以及而不是使用/etc/hosts.deny来阻止IP地址/主机,fail2ban使用iptables。

在此示例中,我将配置fail2ban以监视对SSH服务器,Proftpd服务器,登录尝试.htaccess / .htpasswd保护的网站,到Courier POP3和Courier IMAP以及SASL(用于发送电子邮件)的登录尝试。 我将安装Debian Etch可用的fail2ban软件包。 它配有默认配置,但不幸的是,配置对于大多数上述服务并不适用。 因此,我将创建一个自定义的fail2ban配置,我已经测试,并为我工作。

安装fail2ban

Debian Etch可以按如下方式安装Fail2ban:

apt-get install fail2ban

之后,您将在/ etc / fail2ban目录中找到所有fail2ban配置文件。

配置fail2ban

fail2ban的默认行为在/etc/fail2ban/jail.conf文件中配置 。 看看它,这不难理解。 有一个[DEFAULT]部分适用于所有其他部分,除非默认选项在其他部分中覆盖。

我在这里解释一些配置选项:

  • ignoreip :这是一个空格分隔的IP地址列表,不能被fail2ban阻止。 例如,如果连接到服务器的计算机具有静态IP地址,则可能需要在此处列出。
  • bantime :如果被fail2ban(600秒= 10分钟)捕获,主机被阻止的时间(秒)。
  • maxretry :最大 主机被fail2ban阻止之前失败的登录尝试次数。
  • 过滤器 :指在/etc/fail2ban/filter.d中的相应过滤器文件。
  • logpath :fail2ban检查失败的登录尝试的日志文件。

如/etc/fail2ban/jail.conf顶部的注释所示 ,我们不会修改/etc/fail2ban/jail.conf本身来将其调整为我们的需要,而是通过创建新的配置文件来覆盖/ etc / fail2ban / jail.local

这是我的/etc/fail2ban/jail.local文件的样子:

vi /etc/fail2ban/jail.local
[DEFAULT]

# "ignoreip" can be an IP address, a CIDR mask or a DNS host
ignoreip = 127.0.0.1 192.168.0.99
bantime  = 600
maxretry = 3

# "backend" specifies the backend used to get files modification. Available
# options are "gamin", "polling" and "auto".
# yoh: For some reason Debian shipped python-gamin didn't work as expected
#      This issue left ToDo, so polling is default backend for now
backend = polling

#
# Destination email address used solely for the interpolations in
# jail.{conf,local} configuration files.
destemail = root@localhost

# Default action to take: ban only
action = iptables[name=%(__name__)s, port=%(port)s]


[ssh]

enabled = true
port    = ssh
filter  = sshd
logpath  = /var/log/auth.log
maxretry = 5


[apache]

enabled = true
port    = http
filter  = apache-auth
logpath = /var/log/apache*/*error.log
maxretry = 5


[apache-noscript]

enabled = false
port    = http
filter  = apache-noscript
logpath = /var/log/apache*/*error.log
maxretry = 5


[vsftpd]

enabled  = false
port     = ftp
filter   = vsftpd
logpath  = /var/log/auth.log
maxretry = 5


[proftpd]

enabled  = true
port     = ftp
filter   = proftpd
logpath  = /var/log/auth.log
failregex = proftpd: \(pam_unix\) authentication failure; .* rhost=<HOST>
maxretry = 5


[wuftpd]

enabled  = false
port     = ftp
filter   = wuftpd
logpath  = /var/log/auth.log
maxretry = 5


[postfix]

enabled  = false
port     = smtp
filter   = postfix
logpath  = /var/log/mail.log
maxretry = 5


[courierpop3]

enabled  = true
port     = pop3
filter   = courierlogin
failregex = courierpop3login: LOGIN FAILED.*ip=\[.*:<HOST>\]
logpath  = /var/log/mail.log
maxretry = 5


[courierimap]

enabled  = true
port     = imap2
filter   = courierlogin
failregex = imapd: LOGIN FAILED.*ip=\[.*:<HOST>\]
logpath  = /var/log/mail.log
maxretry = 5


[sasl]

enabled  = true
port     = smtp
filter   = sasl
failregex = warning: [-._\w]+\[<HOST>\]: SASL (?:LOGIN|PLAIN|(?:CRAM|DIGEST)-MD5) authentication failed
logpath  = /var/log/mail.log
maxretry = 5

我的客户端计算机具有静态IP地址192.168.0.99 ,并且因为我不想被锁定,我已经将它添加到了ignoreip列表。 我设置了最大 所有服务登录尝试次数为5次,我已经创建了两个新的部分[courierpop3][courierimap] ,以便fail2ban可以阻止我的Courier-POP3和Courier-IMAP服务器的登录尝试。

我想控制登录尝试ssh,apache,proftpd,courierpop3,courierimap和sasl,所以我设置为这些服务设置为true ,对所有其他服务为false

如果将文件与/etc/fail2ban/jail.conf进行比较,您还会注意到,由于Debian Etch中的/etc/fail2ban/jail.conf中的日志文件不正确,我已更改了一些日志文件。 除此之外,我已经向某些服务添加了一个failregex行,因为/etc/fail2ban/filter.d目录中的相应过滤器文件中的正则表达式对于Debian Etch不起作用。 failregex行将覆盖/etc/fail2ban/filter.d中相应文件中的过滤器规则。

每当我们修改fail2ban配置时,我们必须重新启动fail2ban,所以这是我们现在所做的:

/etc/init.d/fail2ban restart

已经这样了 Fail2ban登录到/var/log/fail2ban.log ,以便您可以检查该文件,以确定/什么主机被阻止。 如果主机被fail2ban阻止,它看起来像这样:

2007-04-24 17:49:09,466 fail2ban.actions: WARNING [apache] Ban 1.2.3.4
2007-04-24 18:08:33,213 fail2ban.actions: WARNING [sasl] Ban 1.2.3.4
2007-04-24 18:26:37,769 fail2ban.actions: WARNING [courierlogin] Ban 1.2.3.4
2007-04-24 18:39:06,765 fail2ban.actions: WARNING [courierimap] Ban 1.2.3.4

您还可以检查防火墙,看看是否有任何主机被阻止。 只需运行

iptables -L

链接

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏