Articles of mod security

curl来源的DDoS:如何检测和如何停止?

好的,我pipe理的Ubuntu服务器今天成为DDoS攻击的受害者。 通常这是不愉快的,但没有那么大的交易。 几个高服务器负载时刻,然后通过。 今天显然不同。 为了logging,我有多年的服务器攻击疤痕。 但今天感觉不一样。 阅读。 该解决scheme通过重新启用ModSecurity规则来解决,该规则防止通过调用纯IP地址进行curl访问。 这意味着如果主机名是mygreatsite.com ,IP地址是123.456.78.90并且我为mygreatsite.com启用了虚拟主机。 而且ModSecurity是通过调用纯IP地址阻止curl访问的规则来激活的,那么当访问者访问mygreatsite.com ,访问者将获得正确的内容,但是如果他们尝试访问,则被ModSecurity阻止403: Forbidden该网站通过123.456.78.90 。 大问题解决了! 但是在袭击发生的时候,有三件事情是清楚的: Apache通过屋顶进行处理: Munin反映的Apache处理负载高于平常水平,持续高出3倍。 没有logging相应的networkingstream量:通过Apachelogging没有相应的stream量,反映在AWStats中。 这是几个小时的情况。 这是跨服务器上所有虚拟主机上的所有日志,包括将连接到裸IP地址的默认虚拟主机。 服务器负载适度高,但不是典型的攻击级别:虽然总体服务器负载很高,但只有单个数字 – 4,5,6,7等等 – 而不是一个典型的DDoS,负载可能会增加一倍三位数像20,30甚至120(!!!)。 对我而言,第3项是这次攻击中最不寻常的部分。 我还没有经历过一个DDoS的服务器负载基本相当于一个繁忙的交通日,而不是一个疯狂的服务器负载连接到攻击。 另外,运行elinks获取Apache server-status显示连接池在重新启动的几分钟内就像疯了一样充满: elinks http://localhost/server-status?refresh=1 而过去的任何一件事 ,我只是注意到一个Ubuntu安全补丁今天专门为curl问题。 这个具体的问题引起了我的兴趣: libcurl不正确地validation包含文字IP地址的通配符SSL证书。 所以这里是一个问题:发生了什么? 我知道重新启用一个ModSecurity规则阻止了攻击,但它可以以任何方式连接到libcurl问题 ? 如果是这样,我该如何检测或certificate? 而过去,如果问题出在libcurl – 我假设这个问题是来自使用这个缺陷的武器化客户端 – 那么这是否意味着有人可以简单地把一个黑客老旧的版本curl到DDoS中去呢? 而且写下来,任何黑客都可以下载源代码并修补它,以便今天为什么洪灾呢? 我的猜测是, curl的补丁让更多人意识到全球脚本小子的缺陷和“热情”,在发现漏洞的几个小时内就带来了大量的扫描。 但是,这又让我困惑,因为它在客户端curl安装,正确? 我无法想象curl在服务器端将是这个受害者。

Apache mod_security crs阻止PDF文件

我刚刚为Apache mod_security安装了CRS,它将报告所有PDF文件为可能的攻击。 具体而言,这是modsecurity_crs_20_protocol_violations.conf导致这些文件以0开头的麻烦。 当用户试图下载任何PDF文件,我得到这个日志(域名更改): [Tue Jul 08 15:02:40.695235 2014] [ratelimit:error] [pid 6875:tid 140072931452672] [client 149.255.82.154:57722] AH01457: rl: brigade pass failed., referer: http://example.com/downloads/ [Tue Jul 08 15:02:41.081811 2014] [:error] [pid 6875:tid 140072923059968] [client 149.255.82.154] ModSecurity: Warning. String match "bytes=0-" at REQUEST_HEADERS:Range. [file "/etc/httpd/crs/activated_rules /modsecurity_crs_20_protocol_violations.conf"] [line "428"] [id "958291"] [rev "2"] [msg "Range: field exists and begins […]

正确的SSLconfigurationSSL – Apache2忽略DocumentRoot

所以这里是我目前的configuration: <VirtualHost *:443> DocumentRoot "/var/www/keypad" ServerName keypad.io SSLOptions +StrictRequire <Directory /> SSLRequireSSL </Directory> SSLProtocol -all +TLSv1 SSLEngine on SSLCertificateFile /cert/cert.crt SSLCertificateKeyFile /cert/key.key SSLCACertificateFile /cert/inter.crt </VirtualHost> <VirtualHost *:80> ServerName keypad.io ServerAlias www.keypad.io DocumentRoot /var/www/keypad Redirect permanent / https://keypad.io/ </VirtualHost> 其结果是能够访问该网站在http://和https:// 由于某种原因,我最终得到了一个无限的redirect循环,在地址栏中inputhttps://。 如果我完全删除*:80主机,http://退出工作,并且https://忽略DocumentRoot属性并给我apache欢迎页面。 无论我在*:443主机模块中做什么,我都会得到一个到欢迎页面的encryption连接。 我希望同时使用http://和https://将客户端指向我的站点的SSLencryption版本。 我的apache2.conf是默认的。 我没有做到这一点。 输出apache -version Server version: Apache/2.4.7 (Ubuntu) Server built: Jul 22 […]

mod_security RBL – 明显的误报

我正在apache 2.2下的mod_security中使用RBL规则,这似乎给了我一个错误的肯定。 我在审计日志(IP地址编辑)中看到以下内容: 消息:4.3.2.1.sbl-xbl.spamhaus.org的RBL查找在REMOTE_ADDR成功。 [file“/etc/httpd/modsecurity.d/activated_rules/modsecurity_crs_42_comment_spam.conf”] [line“21”] [id“981138”] [msg“垃圾邮件来源的RBL匹配”] [严重性“CRITICAL”] [自动化/ MALICIOUS“] 驱动我坚持的部分是,如果我对日志消息中指定的名称执行nslookup ,则会得到一个不存在的结果。 据我所知,这意味着这个地址不在列表中。 那么为什么mod_security获得成功呢? 我也使用spamhaus上的查询服务来确认IP地址没有被列入黑名单。 我错过了什么? 感觉好像有东西被caching,但我不知道在哪里。 更多的背景,最初主机使用的DNS服务器是(帮助)返回地址,即使查找失败。 我已经切换configuration使用谷歌服务器(8.8.8.8和8.8.4.4),现在host和nslookup工作正如我所料。 我重新启动了服务器,理论上没有内存caching。 我也确保将保留IP地址的mod_security数据文件被清除。 我知道这是工作,因为地址的初始查找如上所示,后来的,在最初的假成功后,显示地址为已知的垃圾邮件地址。 有关规则: SecRule REMOTE_ADDR "@rbl sbl-xbl.spamhaus.org" \ "phase:1,id:'981138',t:none,pass,nolog,auditlog,msg:'RBL Match for SPAM Source',\ tag:'AUTOMATION/MALICIOUS',severity:'2',setvar:'tx.msg=%{rule.msg}',\ setvar:tx.automation_score=+%{tx.warning_anomaly_score},\ setvar:tx.anomaly_score=+%{tx.warning_anomaly_score},\ setvar:tx.%{rule.id}-AUTOMATION/MALICIOUS-%{matched_var_name}=%{matched_var},\ setvar:ip.spammer=1,expirevar:ip.spammer=86400,setvar:ip.previous_rbl_check=1,\ expirevar:ip.previous_rbl_check=86400,skipAfter:END_RBL_CHECK"

Apache标题顺序

我正在一个私人服务器应用程序的基于Web的手机游戏,使用PHP来生成响应。 为了做到这一点,我试图尽可能地复制主服务器的行为。 主服务器包括标准的Apache响应标头Date和Server ,但是这些标头总是在标头authorize , Content-Encoding和Content-Type 。 我在Centos 6上运行apache 2.4.12,无论我尝试什么,服务器总是先发送Date和Server头。 因此,例如,当前标题顺序: HTTP/1.1 200 OK Date: Mon, 18 May 2015 15:48:33 GMT Server: Apache authorize: <authToken> Content-Encoding: gzip 需要发送为: HTTP/1.1 200 OK authorize: <authToken> Content-Encoding: gzip Content-Type: application/json; charset=utf-8 Date: Sat, 16 May 2015 02:59:12 GMT Server: Apache 我意识到,服务器领域的顺序应该不重要,但是为了不呈现任何可以用来识别服务器的不同于原来的东西,我想保留原始服务器的行为。 我的第一印象是,这可能是modsecurity可以改变的东西,但是我已经在这种方法上陷入了一个死胡同,因为响应头文件看起来不可改变(如响应正文),而不是重写服务器标签如同生成一样好)。 Mod_headers似乎也无法触及Server标题。 它也似乎没有提供任何可能会改变设置的标题的顺序。 有谁知道任何方式,将允许标头添加在这两个头在http响应? 我怀疑需要一些第三方工具。

如何安装PHP 5.4,mod_security和mod_evasive在一起没有冲突

我需要使用PHP 5.4创buildWeb服务器,并安装mod_security和mod_evasive。 但是当我尝试joinphp 5.4和mod2在EC2服务器上时,它会返回版本httpd之间的冲突错误。 我跟着教程链接试图做正确的方式。 但即使这与PHP 5.3。 我的应用程序与许多filter_input工作。 我如何安装PHP 5.4(最低),mod_security和mod_evasive在一起没有冲突? 我切换到Ubuntu或Linux可以继续与EC2?

我如何降低防伪安全严重性?

实际上模块阻止“通知”级别的呼叫。 我怎样才能降低严重程度并把它带到“警告”?

为Nginx安装Mod_Security,无需重新编译

我有LEMP所有设置。 现在我想添加mod_security 。 我试图研究,但我能find的是如何重新编译nginx的说明。 有没有办法添加mod_security而不需要重新编译? 我目前正在运行安装了PPA的nginx / 1.9.15,因为我是在HTTP / 2之后的。 我没有在编译nginx的经验,我不知道是否我重新编译我会打破nginx,因为我从PPA得到它。 希望你能帮忙。 谢谢。

mod-security2无法重启

好的我在使用debian安装modsecurity的时候遇到了问题可用的7个使用规则的esyo使用规则SpiderLabs-owasp-modsecurity-crs当apache-2.2下的模块向我显示错误/ etc / modsecurity / activated_rules的第35行的语法错误在线23 SecRule REQUEST_HEADERS:Content-Type“text / xml”\“阶段1,t:无,t:小写,传递,nolog,ctl:requestBodyProcessor = XML”

ModSecurity和自定义标题

我们如何使用ModSecurity规则中的“msg”值添加自定义标题,以便触发所有规则? 我基本上是基于Apache的响应,在边缘点(Varnish)跟踪ModSec块的原因。 例如,我想: SecRule REQUEST_URI "/modsectest" "log,deny,status:406,phase:1,t:none,id:9084310,msg:'ModSec Log Test'" 在这种情况下,添加一个'X-ModSec-Block'响应头,其值为'ModSec Log Test' 。 我知道这可能更适合setenv + mod_headers由于块在不同的阶段完成,并发现Modsecurity:从SecRule创build一个新的请求头,这似乎与这种情况相似,只是它不是我的工作。 任何帮助是极大的赞赏!