防止在Debian Etch上使用Fail2ban进行强力攻击
版本1.0
作者:Falko Timme
在本文中,我将介绍如何在Debian Etch系统上安装和配置fail2ban 。 Fail2ban是一种工具,用于观察各种服务(例如SSH,FTP,SMTP,Apache等)的登录尝试,如果从同一个IP地址或主机一次又一次发现登录尝试失败,则fail2ban将停止该IP的进一步登录尝试地址/主机通过使用iptables防火墙规则进行阻止。
本文档不附带任何形式的保证! 我想说,这不是设立这样一个制度的唯一办法。 实现这一目标有很多方法,但这是我所采取的方式。 我不会保证这将为您工作!
初步说明
Fail2ban类似于本教程中涵盖的DenyHosts : http : //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
链接
- Fail2ban: http : //www.fail2ban.org
- Debian: http : //www.debian.org