我已启用SecRuleEngine,以便在本教程之后在apache的mod_security中实现每IP请求突发限制。
https://johnleach.co.uk/words/2012/05/15/rate-limiting-with-apache-and-mod-security/
经过几次测试后,它似乎按照GET和POST请求的方式工作,但是启用SecRuleEngine(没有启用任何规则)似乎会阻止PUT和DELETE请求。这似乎不是预期的行为。
https://github.com/SpiderLabs/ModSecurity/wiki/Reference-Manual#SecRuleEngine
我使用带有mod_security版本2的Apache 2.4,但我愿意放弃mod_security,如果它恰好是它的一个错误,我有一个替代速率限制它。
如何使用或不使用mod_security来修复速率限制系统?
答案 0 :(得分:1)
ModSecurity仅阻止告知阻止的内容。
我的猜测是,尽管说你没有启用任何规则,但你包含了明确阻止这些方法的OWASP CRS。
版本2在其modsecurity_crs_10_setup.conf.example配置文件中具有以下规则,例如:
#
# Set the following policy settings here and they will be propagated to the 30 rules
# file (modsecurity_crs_30_http_policy.conf) by using macro expansion.
# If you run into false positves, you can adjust the settings here.
#
SecAction \
"id:'900012', \
phase:1, \
t:none, \
setvar:'tx.allowed_methods=GET HEAD POST OPTIONS', \
setvar:'tx.allowed_request_content_type=application/x-www-form-urlencoded|multipart/form-data|text/xml|application/xml|application/x-amf|application/json', \
setvar:'tx.allowed_http_versions=HTTP/0.9 HTTP/1.0 HTTP/1.1', \
setvar:'tx.restricted_extensions=.asa/ .asax/ .ascx/ .axd/ .backup/ .bak/ .bat/ .cdx/ .cer/ .cfg/ .cmd/ .com/ .config/ .conf/ .cs/ .csproj/ .csr/ .dat/ .db/ .dbf/ .dll/ .dos/ .htr/ .htw/ .ida/ .idc/ .idq/ .inc/ .ini/ .key/ .licx/ .lnk/ .log/ .mdb/ .old/ .pass/ .pdb/ .pol/ .printer/ .pwd/ .resources/ .resx/ .sql/ .sys/ .vb/ .vbs/ .vbproj/ .vsdisco/ .webinfo/ .xsd/ .xsx/', \
setvar:'tx.restricted_headers=/Proxy-Connection/ /Lock-Token/ /Content-Range/ /Translate/ /via/ /if/', \
nolog, \
pass"
正如您只能看到GET
,HEAD
,POST
和OPTIONS
被设置为允许的方法。
较新的版本3在crs-setup.conf.example中具有类似的配置:
# HTTP methods that a client is allowed to use.
# Default: GET HEAD POST OPTIONS
# Example: for RESTful APIs, add the following methods: PUT PATCH DELETE
# Example: for WebDAV, add the following methods: CHECKOUT COPY DELETE LOCK
# MERGE MKACTIVITY MKCOL MOVE PROPFIND PROPPATCH PUT UNLOCK
# Uncomment this rule to change the default.
#SecAction \
# "id:900200,\
# phase:1,\
# nolog,\
# pass,\
# t:none,\
# setvar:'tx.allowed_methods=GET HEAD POST OPTIONS'"
在这两种情况下,作为后续规则使用此设置来阻止PUT
和DELETE
等方法。
无论您是使用这些规则还是其他规则集,ModSecurity都应记录它为什么阻止Apache错误日志中的请求。检查一下,看看它被阻止的原因。
答案 1 :(得分:0)
将偏执级别更改为 1 或 2 或 3 或 4 在新闻 OWASP CRS - Mod_Security 中无关紧要, 和偏执水平永远不应该是“0”
cd /usr/share/modsecurity-crs
SecAction \
"id:900000,\
phase:1,\
nolog,\
pass,\
t:none,\
setvar:tx.paranoia_level=1"
enter code here
允许客户端使用的 HTTP 方法。 默认值:GET HEAD POST 选项 示例:对于 RESTful API,添加以下方法:PUT PATCH DELETE 示例:对于 WebDAV,添加以下方法:CHECKOUT COPY DELETE LOCK 合并 MKACTIVITY MKCOL MOVE PROPFIND PROPPATCH PUT UNLOCK
只需取消对 HTTP 方法的 HTTP 策略的注释:
sudo nano /usr/share/modsecurity-crs/crs-setup.conf
SecAction \
"id:900200,\
phase:1,\
nolog,\
pass,\
t:none,\
setvar:'tx.allowed_methods=GET HEAD POST OPTIONS PUT PATCH DELETE'"