evasive 模块保护您的网站免受应用层 DOS 攻击

news/2024/5/15 6:43:15/文章来源:https://blog.csdn.net/weixin_34277853/article/details/91971016

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

有多种可以导致网站下线的攻击方法,比较复杂的方法要涉及数据库和编程方面的技术知识。一个更简单的方法被称为“拒绝服务Denial Of Service”(DOS)攻击。这个攻击方法的名字来源于它的意图:使普通客户或网站访问者的正常服务请求被拒绝。

evasive 模块保护您的网站免受应用层 DOS 攻击evasive 模块保护您的网站免受应用层 DOS 攻击

一般来说,有两种形式的 DOS 攻击:

  1. OSI 模型的三、四层,即网络层攻击
  2. OSI 模型的七层,即应用层攻击

第一种类型的 DOS 攻击——网络层,发生于当大量的垃圾流量流向网页服务器时。当垃圾流量超过网络的处理能力时,网站就会宕机。

第二种类型的 DOS 攻击是在应用层,是利用合法的服务请求,而不是垃圾流量。当页面请求数量超过网页服务器能承受的容量时,即使是合法访问者也将无法使用该网站。

本文将着眼于缓解应用层攻击,因为减轻网络层攻击需要大量的可用带宽和上游提供商的合作,这通常不是通过配置网络服务器就可以做到的。

通过配置普通的网页服务器,可以保护网页免受应用层攻击,至少是适度的防护。防止这种形式的攻击是非常重要的,因为 Cloudflare[1] 最近 报告称[2] 网络层攻击的数量正在减少,而应用层攻击的数量则在增加。

本文将介绍如何使用 zdziarski[3] 开发的 Apache2 的模块 mod_evasive[4]。

另外,mod_evasive 会阻止攻击者通过尝试数百个用户名和密码的组合来进行猜测(即暴力攻击)的企图。

mod_evasive 会记录来自每个 IP 地址的请求的数量。当这个数字超过相应 IP 地址的几个阈值之一时,会出现一个错误页面。错误页面所需的资源要比一个能够响应合法访问的在线网站少得多。

在 Ubuntu 16.04 上安装 mod_evasive

Ubuntu 16.04 默认的软件库中包含了 mod_evasive,名称为 “libapache2-mod-evasive”。您可以使用 apt-get 来完成安装:

apt-get update
apt-get upgrade
apt-get install libapache2-mod-evasive

现在我们需要配置 mod_evasive。

它的配置文件位于 /etc/apache2/mods-available/evasive.conf。默认情况下,所有模块的设置在安装后都会被注释掉。因此,在修改配置文件之前,模块不会干扰到网站流量。

<IfModule mod_evasive20.c>#DOSHashTableSize    3097#DOSPageCount        2#DOSSiteCount        50#DOSPageInterval     1#DOSSiteInterval     1#DOSBlockingPeriod   10#DOSEmailNotify      you@yourdomain.com#DOSSystemCommand    "su - someuser -c '/sbin/... %s ...'"#DOSLogDir           "/var/log/mod_evasive"
</IfModule>

第一部分的参数的含义如下:

  • DOSHashTableSize - 正在访问网站的 IP 地址列表及其请求数的当前列表。
  • DOSPageCount - 在一定的时间间隔内,每个页面的请求次数。时间间隔由 DOSPageInterval 定义。
  • DOSPageInterval - mod_evasive 统计页面请求次数的时间间隔。
  • DOSSiteCount - 与 DOSPageCount 相同,但统计的是来自相同 IP 地址对网站内任何页面的请求数量。
  • DOSSiteInterval - mod_evasive 统计网站请求次数的时间间隔。
  • DOSBlockingPeriod - 某个 IP 地址被加入黑名单的时长(以秒为单位)。

如果使用上面显示的默认配置,则在如下情况下,一个 IP 地址会被加入黑名单:

  • 每秒请求同一页面超过两次。
  • 每秒请求 50 个以上不同页面。

如果某个 IP 地址超过了这些阈值,则被加入黑名单 10 秒钟。

这看起来可能不算久,但是,mod_evasive 将一直监视页面请求,包括在黑名单中的 IP 地址,并重置其加入黑名单的起始时间。只要一个 IP 地址一直尝试使用 DOS 攻击该网站,它将始终在黑名单中。

其余的参数是:

  • DOSEmailNotify - 用于接收 DOS 攻击信息和 IP 地址黑名单的电子邮件地址。
  • DOSSystemCommand - 检测到 DOS 攻击时运行的命令。
  • DOSLogDir - 用于存放 mod_evasive 的临时文件的目录。

配置 mod_evasive

默认的配置是一个很好的开始,因为它不会阻塞任何合法的用户。取消配置文件中的所有参数(DOSSystemCommand 除外)的注释,如下所示:

<IfModule mod_evasive20.c>DOSHashTableSize   3097DOSPageCount       2DOSSiteCount       50DOSPageInterval    1DOSSiteInterval    1DOSBlockingPeriod  10DOSEmailNotify       JohnW@example.com#DOSSystemCommand    "su - someuser -c '/sbin/... %s ...'"DOSLogDir            "/var/log/mod_evasive"
</IfModule>

必须要创建日志目录并且要赋予其与 apache 进程相同的所有者。这里创建的目录是 /var/log/mod_evasive ,并且在 Ubuntu 上将该目录的所有者和组设置为 www-data ,与 Apache 服务器相同:

mkdir /var/log/mod_evasive
chown www-data:www-data /var/log/mod_evasive

在编辑了 Apache 的配置之后,特别是在正在运行的网站上,在重新启动或重新加载之前,最好检查一下语法,因为语法错误将影响 Apache 的启动从而使网站宕机。

Apache 包含一个辅助命令,是一个配置语法检查器。只需运行以下命令来检查您的语法:

apachectl configtest

如果您的配置是正确的,会得到如下结果:

Syntax OK

但是,如果出现问题,您会被告知在哪部分发生了什么错误,例如:

AH00526: Syntax error on line 6 of /etc/apache2/mods-enabled/evasive.conf:
DOSSiteInterval takes one argument, Set site interval
Action 'configtest' failed.
The Apache error log may have more information.

如果您的配置通过了 configtest 的测试,那么这个模块可以安全地被启用并且 Apache 可以重新加载:

a2enmod evasive
systemctl reload apache2.service

mod_evasive 现在已配置好并正在运行了。

测试

为了测试 mod_evasive,我们只需要向服务器提出足够的网页访问请求,以使其超出阈值,并记录来自 Apache 的响应代码。

一个正常并成功的页面请求将收到如下响应:

HTTP/1.1 200 OK

但是,被 mod_evasive 拒绝的将返回以下内容:

HTTP/1.1 403 Forbidden

以下脚本会尽可能迅速地向本地主机(127.0.0.1,localhost)的 80 端口发送 HTTP 请求,并打印出每个请求的响应代码。

你所要做的就是把下面的 bash 脚本复制到一个文件中,例如 mod_evasive_test.sh:

#!/bin/bash
set -efor i in {1..50}; docurl -s -I 127.0.0.1 | head -n 1
done

这个脚本的部分含义如下:

  • curl - 这是一个发出网络请求的命令。
    • -s - 隐藏进度表。
    • -I - 仅显示响应头部信息。
  • head - 打印文件的第一部分。
    • -n 1 - 只显示第一行。

然后赋予其执行权限:

chmod 755 mod_evasive_test.sh

在启用 mod_evasive 之前,脚本运行时,将会看到 50 行 “HTTP / 1.1 200 OK” 的返回值。

但是,启用 mod_evasive 后,您将看到以下内容:

HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
...

前两个请求被允许,但是在同一秒内第三个请求发出时,mod_evasive 拒绝了任何进一步的请求。您还将收到一封电子邮件(邮件地址在选项 DOSEmailNotify 中设置),通知您有 DOS 攻击被检测到。

mod_evasive 现在已经在保护您的网站啦!

via: https://bash-prompt.net/guides/mod_proxy/

作者:Elliot Cooper[5] 译者:jessie-pang[6] 校对:wxy[7]

本文由 LCTT[8] 原创编译,Linux中国[9] 荣誉推出

原文来自:https://www.linuxprobe.com/evasive-website-attack.html

转载于:https://my.oschina.net/ssdlinux/blog/1622002

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_769125.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一步一步SharePoint 2007之八:允许所有域用户访问网站

特别提醒的是&#xff0c;这里不是逐个逐个地允许域用户访问&#xff0c;而是一次性允许所有域用户都可以访问网站。  这里说的一次性允许所有域用户都可以访问&#xff0c;实际上就是允许域用户组可以访问网站。这样做的好处嘛&#xff0c;哈哈&#xff0c;我只要加一次用户…

javaweb高并发量网站解决方案

为什么80%的码农都做不了架构师&#xff1f;>>> 一个小型的网站&#xff0c;可以使用最简单的html静态页面就实现了&#xff0c;配合一些图片达到美化效果&#xff0c;所有的页面均存放在一个目录下&#xff0c;这样的网站对系统架构、性能的要求都很简单。随着互联…

Web网站服务

“Apache”服务器是针对之前出现的若干个Web服务器程序进行整合&#xff0c;完善后形成的软件&#xff0c;其主要的特点&#xff1a;开放源代码、跨平台应用、支持各种Web编程语音、模块化设计、良好的安全性。 安装http服务器1、卸载原来已经存在的httpd2、插入光盘&#xff1…

基于Tomcat构建LNMT架构的网站并实现Session保持

简介 LNMTLinuxNginxMySQLTomcat&#xff1b; Tomcat 服务器是一个免费的开放源代码的Web 应用服务器&#xff0c;属于轻量级应用服务器&#xff1b; 在中小型系统和并发访问用户不是很多的场合下被普遍使用&#xff0c;是开发和调试JSP 程序的首选&#xff1b; 架构需求 Tomca…

网站安全服务应该如何安全储存用户数据

这几天AcFun数据库泄露的消息一大早就沸沸扬扬地传开了&#xff0c;所幸从AcFun的公告里可以看出泄露的用户密码均经过「加密」&#xff08;实际上指哈希&#xff09;&#xff0c;所以我们仍然是安全的。 网站安全代码 从泄露出的部分信息可以看到&#xff0c;在存储密码这件事…

python:scrapy 一个网站爬虫库

Scrapy是一个用于抓取网站和提取结构化数据的应用框架&#xff0c;可用于广泛的有用应用&#xff0c;如数据挖掘、信息处理或历史档案。也可以使用api提取数据&#xff0c;或者作为一个通用的web爬虫。 安装 C:\Users\lifeng01>pip install scrapy Collecting scrapyDownl…

百度熊掌号SEO指南1.0,seo重点摘录

百度熊掌号seo指南6月6号发布&#xff0c;一直没有时间去研读&#xff0c;今天粗略的看了一下&#xff0c;内容包含对seo的要求&#xff0c;对网站的要求&#xff0c;对运营的支持&#xff0c;和对熊掌号功能的介绍。由于自己比较注重seo方面&#xff0c;所以今天就先摘了了&am…

mflac格式_免费的在线音视频格式转换网站汇总

1、.mov转换为.mp4.mov是QuickTime影片格式&#xff0c;是Apple公司开发的一种音频、视频文件格式。我们只需要iMovie打开相关文件&#xff0c;然后重新导出即可&#xff0c;iMovie默认导出的视频格式就是.mp42、.mp4转换为.gifconvertio&#xff1a;https://convertio.co/zh/m…

大型网站系统与Java中间件实践 02 Java中间件

01 认识分布式02 Java中间件03 分布式框架 3 构建Java中间件 3.1 什么事中间件&#xff1f; 中间件不是最上层的应用也不是最底层的支撑系统&#xff0c;中间件在项目中起到桥梁作用&#xff0c;特定中间件是解决特定的场景问题的组件。让开发聚焦于自己的业务。 常用中间件的分…

使用hexo做博客网站

2019独角兽企业重金招聘Python工程师标准>>> hexo有什么用&#xff1f; hexo 可以把md文件生成html静态网页。 hexo官网&#xff1a;https://hexo.io/zh-cn/ 本地安装hexo。 npm install -g hexo-cli #生成blog&#xff08;名字任意&#xff09;文件夹&#xff0c;并…

网市场云建站 v4.8 增加私有模版库,开放 Mysql 配置、在线客服源码

网市场云建站系统&#xff0c;结合各种产品&#xff0c;将一个网站的服务器成本降低到0.1元&#xff01;打破传统建站的高成本&#xff0c;让价格不再是阻碍的门槛&#xff0c;让每个人都能有自己的网站&#xff01; 延续了帝国CMS、织梦CMS优秀的模板流程&#xff0c;模板页面…

python大佬常去网站

常用网站&#xff1a; 1.StackOverflow &#xff08;https://stackoverflow.com/&#xff09; 2.github &#xff08;https://github.com/&#xff09; 3.Awesome Python &#xff08;https://github.com/&#xff09; 4.python中文学习大本营 &#xff08;http://www.pythondo…

前嗅ForeSpider教程:网站登录配置

当我们在采集中碰到&#xff1a;所采集的网站数据需要登录&#xff0c;才可以看到所需信息时&#xff0c;则需要在软件中模拟登陆环境&#xff0c;采集数据&#xff0c;此时需要配置登录信息。今天小编就教大家&#xff1a;如何进行网站登录配置&#xff0c;具体步骤如下&#…

HBaseOnOSS冷数据存储

本期直播Topic:HBaseOnOSS冷数据存储 讲师&#xff1a;陆豪——阿里多模型数据库专家 视频回看地址&#xff1a;https://yq.aliyun.com/live/709/ PPT下载地址&#xff1a;https://yq.aliyun.com/download/3137 往期直播资料&#xff1a; 第四期&#xff1a;hbase 备份恢复资料…

阿里云ECS建站超详细全套完整图文教程

第一步&#xff1a;如何以最低价格快速买到阿里云服务器&#xff1f; 1.1 如果我是学生&#xff0c;我如何通过&#xffe5;9.9买到价值&#xffe5;117的服务&#xff1f; 答&#xff1a;用&#xffe5;9.9购买云服务器ECS是阿里云学生专属活动。首先&#xff0c;你需要在阿里…

网站502与504错误分析

为什么80%的码农都做不了架构师&#xff1f;>>> 一. 戏说 不管你是做运维还是做开发&#xff0c;哪怕你是游客&#xff0c;时不时会遇到502 Bad Gateway或504 Gateway Time-out。出现这页面&#xff0c;把服务重启下&#xff0c;再实在不行重启下服务器&#xff0c…

360WiFi的服务器网站,360随身无线wifi怎么搭建web认证网页

如果只有360随身无线wifi&#xff0c;那你知道怎么使用360无线wifi来免费搭建web认证网页吗?下面是学习啦小编给大家整理的一些有关360随身无线wifi搭建web认证网页的方法&#xff0c;希望对大家有帮助!360随身无线wifi搭建web认证网页的方法首先&#xff0c;打开360随身wifi官…

python抓取网站图片_python爬虫基础教程:手把手教你网页图片的抓取方法

原标题&#xff1a;python爬虫基础教程&#xff1a;手把手教你网页图片的抓取方法 今天小编给大家分享基于python写的一个爬虫程序&#xff0c;能实现简单的网页图片下载&#xff0c;具体实例代码大家参考下本文 学习python、python爬虫过程中有不懂的可以加入我的python零基础…

json格式生成器_VuePress - Vue驱动的静态网站生成器

还在烦恼怎么做一个简单又美观的文档或博客网站吗&#xff1f;VuePress&#xff0c;让你十分钟就能搭建一个静态网站&#xff01;Vue.js简介VuePress&#xff0c;是 vuejs 在 Github 上开源的静态网站生成器&#xff0c;项目仓库位于 https://github.com/vuejs/vuepress&#x…

sqlmap自动扫描注入点_sqlmap,扫描网站数据库并得到用户名及密码!

接着上篇文章&#xff0c;你已经对sqlmap有了了解。那么我们今天就进一步了解sqlmap&#xff0c;使用sqlmap对一个网站解剖分析&#xff01;SqlMap的程序允许检查网站的SQL注入漏洞&#xff0c;XSS漏洞的存在&#xff0c;并且可以还利用SQL注入。支持多种SQL注入类型和多种数据…