问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何配置fail2ban保护Apache HTTP服务器

发布网友 发布时间:2022-04-12 20:21

我来回答

2个回答

热心网友 时间:2022-04-12 21:50

生产环境中的Apache HTTP服务器可能会遭到各种不同方式的攻击。攻击者可能采用蛮力攻击或执行恶意脚本,企图访问未经授权的目录或禁止访问的目录。一些恶意机器人程序可能会扫描你的网站,查找任何可能存在的安全漏洞,或者收集电子邮件地址或网站表单,以便发送垃圾邮件。

Apache HTTP服务器随带全面的日志功能,可以捕获及记录表明此类攻击的异常事件。不过,系统性地分析详细的Apache日志,并迅速应对潜在攻击(比如禁止/取消禁止冒犯性的IP地址)仍然很重要。这时候fail2ban派得上用场,可以简化系统管理员的工作。

fail2ban是一款开源入侵预防工具,可以根据系统日志来检测各种各样的攻击,并且自动采取预防行动,比如说使用iptables禁止IP地址,通过/etc/hosts.deny阻止连接,或者通过电子邮件通知事件。fail2ban随带一组预先定义的“jail”(暂译“监狱”),这些jail使用针对特定应用程序的日志过滤器来检测常见攻击。你还可以编写自定义的jail,阻止针对任意应用程序的任何特定的攻击。

我在本教程中将演示你如何可以配置fail2ban,以保护Apache HTTP服务器。我假设你事先已经安装好了Apache HTTP服务器和fail2ban。至于fail2ban的安装,请参阅另一篇教程:http://xmolo.com/how-to-protect-ssh-server-from-brute-force-attacks-using-fail2ban.html。

fail2ban Jail是什么?

首先允许我比较详细地介绍一下fail2ban jail。jail定义了针对特定应用程序的策略,fail2ban根据该策略来触发保护某个应用程序的行动。针对Apache、Dovecot、Lighttpd、MySQL、Postfix和SSH之类的流行应用程序,fail2ban随带几个在/etc/fail2ban/jail.conf中预先定义的jail。每个jail依靠针对特定应用程序的日志过滤器(位于/etc/fail2ban/fileter.d)来检测常见攻击。不妨看一个示例性的jail:SSH jail。

[ssh]

enabled = true

port = ssh

filter = sshd

logpath = /var/log/auth.log

maxretry = 6

banaction = iptables-multiport

这个SSH jail的配置由几个参数来定义:

•[ssh]:jail的名称,带方括号。

•enabled:该jail是不是激活。

•port:要保护的端口号(数字编号或公共名)。

•filter:用来检测攻击的分析日志的规则。

•logpath:要仔细分析的日志文件。

•maxretry:禁止之前最多失败次数。

•banaction:禁止动作。

jail配置中定义的任何参数将覆盖对应的适用整个fail2ban范围的默认参数。反过来,任何遗漏的参数会被赋予在[DEFAULT]部分中定义的默认值。

预先定义的日志过滤器位于/etc/fail2ban/filter.d,可用的动作位于/etc/fail2ban/action.d。

如果你想覆盖fail2ban默认参数或者定义任何自定义的jail,只要通过创建/etc/fail2ban/jail.local文件就能实现。我在本教程中将使用/etc/fail2ban/jail.local。

启用预先定义的Apache Jail

默认安装的fail2ban为Apache HTTP服务器提供了几种预先定义的jail和过滤器。我准备启用那些内置的Apache jail。由于Debian配置和红帽配置略有差异,我为它们单独提供了fail2ban jail配置。

在Debian或Ubuntu上启用Apache Jail

想在基于Debian的系统上启用预先定义的Apache jail,就要创建/etc/fail2ban/jail.local,如下所示。

$ sudo vi /etc/fail2ban/jail.local

# 检测密码验证失败

[apache]

enabled = true

port = http,https

filter = apache-auth

logpath = /var/log/apache*/*error.log

maxretry = 6

# 检测搜索安全薄弱环节和php漏洞的潜在行为

[apache-noscript]

enabled = true

port = http,https

filter = apache-noscript

logpath = /var/log/apache*/*error.log

maxretry = 6

# 检测Apache溢出企图

[apache-overflows]

enabled = true

port = http,https

filter = apache-overflows

logpath = /var/log/apache*/*error.log

maxretry = 2

# 检测未能在服务器上找到主目录的活动

[apache-nohome]

enabled = true

port = http,https

filter = apache-nohome

logpath = /var/log/apache*/*error.log

maxretry = 2

由于上述没有一个jail指定动作,所有这些jail被触发后将执行默认动作。想弄清楚默认动作,寻找/etc/fail2ban/jail.conf中[DEFAULT]部分下面的“banaction”。

banaction = iptables-multiport

在这个情况下,默认动作是iptables-multiport(在/etc/fail2ban/action.d/iptables-multiport.conf中定义)。该动作使用iptables以及multiport模块禁止IP地址。

启用jail后,你必须重启fail2ban,以便装入jail。

$ sudo service fail2ban restart

在CentOS/RHEL或Fedora上启用Apache jail

想在基于红帽的系统上启用预先定义的Apache jail,就要创建/etc/fail2ban/jail.local,如下所示。

$ sudo vi /etc/fail2ban/jail.local

# 检测密码验证失败

[apache]

enabled = true

port = http,https

filter = apache-auth

logpath = /var/log/httpd/*error_log

maxretry = 6

# 检测搜索电子邮件地址的垃圾邮件机器人程序

[apache-badbots]

enabled = true

port = http,https

filter = apache-badbots

logpath = /var/log/httpd/*access_log

bantime = 172800

maxretry = 1

#检测搜索安全薄弱环节和php漏洞的潜在行为vulnerabilities

[apache-noscript]

enabled = true

port = http,https

filter = apache-noscript

logpath = /var/log/httpd/*error_log

maxretry = 6

# 检测Apache溢出企图

[apache-overflows]

enabled = true

port = http,https

filter = apache-overflows

logpath = /var/log/httpd/*error_log

maxretry = 2

# 检测未能在服务器上找到主目录的活动

[apache-nohome]

enabled = true

port = http,https

filter = apache-nohome

logpath = /var/log/httpd/*error_log

maxretry = 2

# 检测未能执行与几种流行Web服务

# (比如webmail,phpMyAdmin,WordPress)

# 有关的不存在脚本

port = http,https

filter = apache-botsearch

logpath = /var/log/httpd/*error_log

maxretry = 2

请注意:所有这些jail的默认动作是iptables-multiport(定义为/etc/fail2ban/jail.conf中[DEFAULT]下面的“banaction”)。该动作使用iptable以及multiport模块禁止IP地址。

启用jail后,你必须重启fail2ban,将jail装入到fail2ban中。

在Fedora或CentOS/RHEL 7上:

$ sudo systemctl restart fail2ban

在CentOS/RHEL 6上:

$ sudo service fail2ban restart

检查和管理Fail2ban禁止状态

一旦jail被激活,你可以使用fail2ban-client命令行工具,监控当前的禁止状态。

想查看活动jail列表:

$ sudo fail2ban-client status

想查看某一个jail的状态(包括被禁止IP列表):

$ sudo fail2ban-client status [name-of-jail]

你还可以手动禁止或取消禁止IP地址。

想让某一个jail禁止IP地址:

$ sudo fail2ban-client set [name-of-jail] banip [ip-address]

想取消禁止某个jail阻止的IP地址:

$ sudo fail2ban-client set [name-of-jail] unbanip [ip-address]

结束语

这篇教程介绍了fail2ban jail是如何工作的,以及如何使用内置的Apache jail保护Apache HTTP服务器。你可能需要改动现有的jail,或者编写自定义的jail和日志过滤器,这要看你的环境以及需要保护的Web服务的具体类型。参阅outfail2ban的官方Github页面:https://github.com/fail2ban/fail2ban,即可了解jail和过滤器的最新例子。

你是否在任何生产环境中使用fail2ban?欢迎交流经验和心得。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
win7不能浏览网页,但用搜狗浏览器高速模式能上网,兼容就不行???求 ... ...64位 IE浏览器无法打开网页 搜狗浏览器可以打开 类似的新窗口网页都... 千牛工作台子账号怎么开权限?子账号的安全设置在哪里? 千牛怎么设置子账号-千牛设置子账号步骤 怎么把CD里的歌曲改成MP3格式? ...戴眼镜吗?想给孩子去检查一下,哪里比较推荐,渭南这块的 Windows Media Player将CD音乐转换为MP3 最简单的方法将CD转换为MP3音频文件(一步一步教你将CD音乐转换为MP3格 ... 孩子最近视力下降了有可能是近视吗?渭南哪里可以免费检查视力啊 奥运会跳远世界纪录 N卡820M和N卡gtx750哪个强?820是笔记本750是台式机 有卡贴的iphone5s手机升级后不能用了,怎么办? 请问,gt740显卡好还是gt820m好,同学说他的gt820m相当于gtx750,到底哪个好些呢 为什么我的电脑里的文件不能复制到U盘? 禁毒征文比赛,求写作思路谢谢。 校园无毒阳光生活七年级禁毒征文 观看禁毒微电影《重生》观后感 - 百度 禁毒作文200字 有关禁毒的小品 怎样演好女毒贩(学校禁毒话剧) 老山檀如何味道持久 请问这是真的印度老山檀香么?0.6*108颗,卖家说沉水级,450一串。0.8*108的650一串 急需一个有关“宣传禁毒”的小品或话剧!大概时间不少于5分钟!最好是有幽默感的! 关于中小学生演的禁毒小品剧本搞笑 老山檀脖挂108颗点8的珠子怎么盘可以用刷子吗? 108颗老山檀和1.6老山檀香能一起戴吗,意思就是大珠和小珠的一起戴可以吗? 108颗小叶紫檀有老山檀味道什么意思 老山檀香精油的使用方法 老山檀的功效有哪些 Linux如何过滤apache 日志 升学教育自考是自学好还是助学好 网络工程师要学习的内容? iphone6是日版的卡贴机,不能升级,不知道是不是不小心升级了 手机有一个进度条和苹果图案 红帽企业版Linux的宣传语 笔记本电脑启动到桌面密码确认后蓝屏 想学电脑,我是新手 电脑,当填写完用户名和密码进入桌面怎么突然就蓝屏,怎么回事啊? 键壮的人适合什么样的包呢? (大学生) 农商银行日均存款如何计算 通过《园林史》的学习,谈谈你对园林的理解?不少于800字,求解 我读园林专业的感受作文600 门上油漆没刷好,流门上油漆流了,怎么洗掉? 烤漆门漆掉了一点点怎么办 学习中外园林史对园林设计有哪些方面的提升 房间的门上油漆掉了一块怎么办 什么是牛市,什么又是熊市 其实,园林,桥梁等不仅仅是一种建筑,更体现了一种文化,请你谈谈你学习后的感受 学中外园林史的意义 什么是熊市?什么是牛市? 如何欣赏中国园林之美