如何在Ubuntu 12.04上使用fail2ban保护SSH

fail2ban提供了一种自动保护虚拟服务器免受恶意行为的方法。本教程将介绍如何安装Fail2Ban,复制配置文件,配置fail2ban默认值,以及如何配置ssh默认值。 Th

关于Fail2Ban

服务器不是孤立存在的,那些只有最基本SSH配置的虚拟专用服务器可能容易受到强力攻击。 fail2ban提供了一种自动保护虚拟服务器免受恶意行为的方法。 该程序通过扫描日志文件并对违反的操作(例如重复的失败登录尝试)做出反应来工作。

第一步 - 安装Fail2Ban

使用apt-get安装Fail2Ban

sudo apt-get install fail2ban

第二步 - 复制配置文件

缺省fail2ban配置文件位于/etc/fail2ban/jail.conf。 不过,不应该在该文件中完成配置工作,而是应该对其进行本地复制。

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

复制文件后,您可以在新的jail.local文件中进行所有更改。 许多可能需要保护的可能服务已经在文件中。 每个都位于其自己的部分,配置和关闭。

第三步 - 在Jail.Local中配置默认​​值

打开新的fail2ban配置文件:

sudo nano /etc/fail2ban/jail.local

第一部分的默认值包括fail2ban将遵循的基本规则。 如果要在虚拟服务器上设置更详细的保护,可以自定义每个部分中的详细信息。

您可以看到下面的默认部分。

[DEFAULT]

# "ignoreip" can be an IP address, a CIDR mask or a DNS host
ignoreip = 127.0.0.1/8
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 = auto

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

写你的个人IP地址输入到ignoreip线。 您可以使用空格分隔每个地址。 IgnoreIP允许您列出某些IP地址的白名单,并确保它们没有被锁定。 包括您的地址将保证您不会意外地禁止自己从自己的服务器。

下一个步骤是在一个bantime,那主机将从VPS被阻止,如果他们发现违反任何规则的秒数决定。 这在机器人的情况下特别有用,一旦被禁止,将简单地移动到下一个目标。 默认值设置为10分钟 - 如果愿意,您可以将其提高到一个小时(或更高)。

Maxretry是一个主机可能有他们得到禁赛的禁令时间长度不正确之前的登录尝试的数量。

您可以将后端为自动。

Destemail是,警报被发送到电子邮件。 如果您在您的Droplet上设置了邮件服务器,Fail2Ban可以在禁止IP地址时向您发送电子邮件。

其他详细信息 - 操作

“操作”部分位于默认值下方。 开头是这样的:

#
# ACTIONS
#

# Default banning action (e.g. iptables, iptables-new,
# iptables-multiport, shorewall, etc) It is used to define
# action_* variables. Can be overridden globally or per
# section within jail.local file
banaction = iptables-multiport

# email action. Since 0.8.1 upstream fail2ban uses sendmail
# MTA for the mailing. Change mta configuration parameter to mail
# if you want to revert to conventional 'mail'.
mta = sendmail

# Default protocol
protocol = tcp
[...]

Banaction描述的fail2ban将采取禁止匹配的IP地址的步骤。 这是config if所在的文件扩展名的较短版本。 默认禁止动作“iptables-multiport”可以在/etc/fail2ban/action.d/iptables-multiport.conf找到

MTA指的fail2ban将用来发送电子邮件,提醒人们注意恶意IP电子邮件程序。

您可以在此行中,从TCP 协议更改为UDP为好,这取决于你想要的fail2ban监控哪一个。

第四步(可选) - 在Jail.Local中配置ssh-iptables节

SSH详细信息部分只是在配置中更进一步,它已经设置并打开。 虽然您不需要在此部分中进行任何更改,但您可以在下面找到有关每行的详细信息。

[ssh]

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

简单地使指这样的事实,SSH保护上。 你可以用“false”这个词关闭它。

端口指定了的fail2ban监控端口。 如果已在非标准端口上设置虚拟专用服务器,请将端口更改为与您正在使用的端口匹配:

 eg. port=30000

过滤器时,默认被设置为sshd的,是指含有的fail2ban用途找到匹配规则的配置文件。 sshd是指/etc/fail2ban/filter.d/sshd.conf。

日志路径指的fail2ban将跟踪日志的位置。

在SSH部分中的最大重试线具有相同的定义默认选项。 但是,如果您启用了多个服务并希望为每个服务指定特定的值,则可以在此处为SSH设置新的最大重试量。

第五步 - 重新启动Fail2Ban

对fail2ban配置进行任何更改后,请务必重新启动Fail2Ban:

sudo service fail2ban restart

您可以在IP表中查看fail2ban投入生效的规则:

sudo iptables -L
作者Etel Sverdlov