在管理Linux服务器时,提高服务器安全性应该是您的首要任务之一。 通过查看您的服务器日志,您可能经常会发现不同的强力登录,网络泛滥,利用搜索和其他许多尝试。
使用入侵防御软件(如fail2ban),您可以检查服务器日志并添加额外的iptables规则以阻止有问题的IP地址。
本教程将向您展示如何安装fail2ban和设置基本配置,以保护您的Linux系统免受暴力攻击。
要求
Fail2ban是用python编写的,唯一的要求是安装python:
- Fail2ban分支0.9.x需要Python> = 2.6或Python> = 3.2
- Fail2ban分支0.8.x需要Python> = 2.4
- Root访问您的系统
- 在视觉上,iptables或showewall和sendmail
如何在Linux系统中安装Fail2Ban
fail2ban的安装相对简单:
在CentOS / RHEL 7中安装Fail2Ban
首先更新您的包,启用Epel存储库并安装fail2ban ,如图所示。
# yum update # yum install epel-release # yum install fail2ban
在Debian / Ubuntu中安装Fail2Ban
首先更新您的软件包并安装fail2ban ,如图所示。
# apt-get update && apt-get upgrade -y # apt-get install fail2ban
(可选)如果要启用邮件支持(用于邮件通知),则可以安装sendmail。
# yum install sendmail [On CentOS/RHEL] # apt-get install sendmail-bin sendmail [On Debian/Ubuntu]
要启用fail2ban和sendmail,请使用以下命令:
# systemctl start fail2ban # systemctl enable fail2ban # systemctl start sendmail # systemctl enable sendmail
如何在Linux系统中配置Fail2ban
默认情况下, fail2ban使用位于/ etc / fail2ban /中的.conf
文件,这些文件首先被读取。 但是,这些可以被位于同一目录中的.local
文件覆盖。
因此, .local
文件不需要包含.conf
文件中的所有设置,而只需要包含您要覆盖的设置。 应该在.conf
中的.local
文件中进行更改。 这将防止在升级fail2ban数据包时覆盖更改。
出于本教程的目的,我们将现有的fail2ban.conf文件复制到fail2ban.local 。
# cp /etc/fail2ban/fail2ban.conf /etc/fail2ban/fail2ban.local
现在,您可以使用自己喜欢的文本编辑器在.local
文件中进行更改。 您可以编辑的值是:
- loglevel - 这是要记录的详细程度。 可能的选择是:
- 危急
- 错误
- 警告
- 注意
- 信息
- DEBUG
- logtarget - 记录特定文件中的操作。 默认值为/var/log/fail2ban.log 。 但是,您可以将其更改为:
- STDOUT - 输出任何数据
- STDERR - 输出任何错误
- SYSLOG - 基于消息的日志记录
- 文件 - 输出到文件
- socket - 将放置套接字文件的目录。
- pidfile - pidfile的位置。
配置Fail2ban jail.local
fail2ban中最重要的文件之一是jail.conf
,它定义了你的jails。 您可以在此处定义应启用fail2ban的服务。
正如我们之前提到的, .conf
文件可以在升级过程中更改,因此您应该创建一个jail.local文件,您可以在其中应用修改。
另一种方法是简单地复制.conf文件:
# cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
如果您使用的是CentOS或Fedora ,则需要将jail.local中的后端从“auto”更改为“systemd” 。
在Fail2ban中启用后端
如果您使用的是Ubuntu / Debian ,则无需进行此修改,即使它们也使用了systemd 。
jail文件默认为Debian和Ubuntu启用SSH,但不在CentOS上启用。 如果要启用它,只需更改/etc/fail2ban/jail.local中的以下行:
[sshd] enabled = true
禁止和重试时间
您可以配置阻止IP地址的环境。 为此, fail2ban使用bantime , findtime和maxretry 。
- bantime - 这是IP地址将被禁止的秒数(默认为10分钟)。
- findtime - 禁止主机之前登录尝试之间的时间量。 (默认10分钟)。 换句话说,如果在3次登录尝试失败后将fail2ban设置为阻止IP地址,那么这3次尝试必须在查找时间段内完成( 10分钟)。
- maxretry - 应用禁令之前尝试的次数。 (默认3 )。
白名单IP地址
当然,您需要将某些IP地址列入白名单。 要配置此类IP地址, 请使用您喜欢的文本编辑器打开/etc/fail2ban/jail.local ,并取消注释以下行:
ignoreip = 127.0.0.1/8 ::1
然后,您可以放置要忽略的IP地址。 IP地址应使用空格或逗号分隔。
电子邮件提醒
如果您希望在事件时收到邮件警报,则必须在/etc/fail2ban/jail.local中配置以下设置:
- destemail - 邮件地址,您将收到notificatoin。
- Sendername - 收到邮件时您将看到的发件人。
- 发件人 - fail2ban将发送电子邮件的电子邮件地址。
默认mta ( 邮件传输代理 )设置为sendmail 。
要接收邮件通知,您还需要更改“操作”设置:
Action = %(action_)s
其中一个:
action = %(action_mw)s action = %(action_mwl)s
- %(action_mw)s - 将禁止主机并使用whois报告发送邮件。
- %(action_mwl)s - 将禁止主机,提供whois信息以及日志文件中的所有相关信息。
额外的Fail2ban Jail配置
到目前为止,我们已经查看了基本配置选项。 如果您希望配置jail,则需要在jail.local文件中启用它。 语法非常简单:
[jail_to_enable] . . . enabled = true
你应该用实际的jail替换jail_to_enable ,例如“sshd” 。 在jail.local文件中,将为ssh服务预定义以下值:
[sshd] port = ssh logpath = %(sshd_log)s
您可以启用过滤器,以帮助确定日志中的行是否为失败行。 过滤器值实际上是对服务名称后跟.conf的文件的引用。 例如: /etc/fail2ban/filter.d/sshd.conf 。
语法是:
filter = service
例如:
filter = sshd
您可以查看以下目录中的现有过滤器: /etc/fail2ban/filter.d/ 。
使用fail2ban-client
Fail2ban附带了一个客户端,可用于查看和更改当前配置。 由于它提供了许多选项,您可以通过以下方式阅读其手册:
# man fail2ban-client
在这里,您将看到一些可以使用的基本命令。 要查看fail2ban或特定jail的当前状态,您可以使用:
# fail2ban-client status
结果看起来与此类似:
检查Fail2ban状态
对于个人监狱,您可以运行:
# fail2ban-client status sshd
在下面的屏幕截图中,您将看到我故意多次登录失败,因此fail2ban可以阻止我尝试连接的IP地址:
检查Fail2ban SSH状态
结论
Fail2ban是一个出色的,记录良好的入侵防御系统,可为您的Linux系统提供额外的安全性。 它需要一些时间来习惯它的设置和语法,但是一旦你熟悉它,你就可以随意改变和扩展它的规则。