0

我在 Linux 6.6 上通过 Apache 2.4.18 配置了 SVN。接下来我必须为我的 svn url 禁用跨框架脚本。SVN url 就像https://servername/svn/projectA。我已经编译了 mod_security2.so 并复制到 /modules 目录,然后在 virtualHost 中加载了以下行。

LoadFile /usr/lib64/libxml2.so
LoadFile /usr/lib64/liblua-5.1.so
LoadModule security2_module modules/mod_security2.so

    httpd-vhosts.conf 
    <VirtualHost *:80>
    ServerAdmin email@domain.com
    DocumentRoot "/var/local/apache/httpd2.4.18/htdocs"
    ServerName servername.fqdn.com
    # For http to https redirect    
    Redirect / https://servername
    TraceEnable off
    RewriteEngine on
    RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK)
    RewriteRule .* - [F]
    SecRuleEngine On 
    #SecFilterEngine On
    #SecFilterForceByteRange 32 126
    #SecFilterScanPOST On
    #SecFilter "<( |\n)*script"
    SecRequestBodyAccess On
    SecResponseBodyAccess On
    ErrorLog "logs/error_log"
    CustomLog "logs/access_log" common
</VirtualHost>

Apache 不支持的规则是

SecFilterEngine SecFilterForceByteRange SecFilterScanPOST SecFilter Blockquote

而不是 SecFilterEngine,它采用 SecRuleEngine。但我不知道其他规则的替代规则。我正在使用 modsecurity-2.9.0 源代码编译。我看到的错误如下。[root@server extra]# /var/local/apache/httpd2.4.18/bin/apachectl configtest AH00526: /var/local/apache/httpd2.4.18/conf/extra/httpd-vhosts.conf 第 45 行的语法错误:无效的命令“SecFilterForceByteRange”,可能拼写错误或由服务器配置中未包含的模块定义。任何人都知道 SecFilterForceByteRange、SecFilterScanPOST 和 SecFilter 的 mod_security2 支持模块。我还阅读了有关 mod_security 的文档,但无法弄清楚并解决问题。我按照下面的网址。

http://www.unixpearls.com/how-to-block-xss-vulnerability-cross-site-scripting-in-apache-2-2-x/

[编辑] 它通过添加标题响应来解决。

4

1 回答 1

0

所有这些不受支持的命令都是 ModSecurity v1 命令,并且已针对 ModSecurity2 完全重写。

你想要的规则是这样的:

SecRule ARGS "<( |\n)*script" "phase:2,id:1234,deny"

这基本上会扫描您的任何参数(作为参数或正文)以查找以下项目:

<script

或者

< script

或者

<
script

这对于尝试保护 XSS 来说并不是一个糟糕的开始,但有点基础。

OWASP 有一个 ModSecurity 规则的核心规则集,它们的 XSS 规则要复杂得多,可以在这里看到:https ://github.com/SpiderLabs/owasp-modsecurity-crs/blob/master/base_rules/modsecurity_crs_41_xss_attacks.conf

XSS 可以通过多种方式被利用,其中一些会进入您的服务器(这种事情可能会被捕获),而另一些甚至可能根本无法进入您的服务器(因此这无法保护反对)。

防止 XSS 的最佳方法是查看内容安全策略,它允许您明确说明您希望在您的网站上允许哪些 javascript,以及不允许哪些 javascript,如果您愿意,还可以明确拒绝内联脚本。这可能需要对您的站点进行一些清理以删除内联脚本,并且设置起来并不总是最容易的,尤其是在您的站点上加载第三方资产和小部件时,但这是最强大的保护。

X-Frame-Options 标题可用于阻止您的网站被框住,并且有人覆盖内容以使您认为您正在单击真实的站点按钮和字段,但实际上是单击它们的按钮。它不是真正的 XSS 形式,因为您更多地将脚本放在站点顶部的不可见窗口上,而不是直接放在站点上,但可以产生类似的效果。这是一个很好的标题。

于 2016-02-04T19:09:46.530 回答