nas*_*spy 3 java security tomcat ddos spring-mvc
我们用于安全测试的第三方工具是在Tomcat 8 上提供慢速HTTP POST漏洞。我们在应用程序中有一个简单的Spring Controller 和JSP。
现有的 Tomcat 连接器配置如下:
<Connector port="8643" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true" compression="on"
clientAuth="false" sslProtocol="TLS" maxPostSize="20480"
maxSwallowSize="20480" maxHeaderCount="25" maxParameterCount="100"/>
Run Code Online (Sandbox Code Playgroud)
请注意,我们在 tomcat 前面没有 Apache 或 Nginx。请建议我们可以直接在 Tomcat 上使用的配置。
慢速 HTTP 攻击的一个例子是SLOWLORIS
为了使用 Tomcat 缓解它,解决方案是使用NIO 连接器,如本教程中所述。
您的问题不清楚的是,Tomcat 已经在 Tomcat 8 上默认使用了 NIO 连接器,这是您的配置:
默认值为 HTTP/1.1,它使用自动切换机制来选择基于 Java NIO 的非阻塞连接器或基于 APR/本机的连接器。
也许您应该设置一些其他连接器参数来专门限制POST滥用,我建议:
maxPostSize="1048576" (1 MByte)
connectionTimeout="10000" (10 seconds between the connection and the URI request)
disableUploadTimeout="false" (activate the POST maximum time allowed)
connectionUploadTimeout="20000" (maximum POST of 20 seconds)
Run Code Online (Sandbox Code Playgroud)
一个选项也是限制标头数量(默认为 100),但这会对使用智能手机的人产生副作用(众所周知,智能手机会发送许多标头):
maxHeaderCount="25"
Run Code Online (Sandbox Code Playgroud)
但这取决于您的流量是来自 Internet,还是具有已知用户的专业内部网。在后一种情况下,您可以将设置调整为更宽松。
编辑 1:使用 MultipartConfig 进行强化
正如其他一些帖子所述, maxPostSize 可能无法用于限制上传。使用Java 7 内置的 uploads 时,可以通过对 Servlet 的注释或配置来配置限制。正如您所问的,这不是纯粹的 Tomcat 配置,但有必要了解它并与 DEV 团队交谈,因为从开发的早期阶段就必须考虑安全性。
编辑 2:禁用分块传输编码
一些慢速 HTTP POST攻击基于使用Transfer-Encoding : chunked标头发送的请求,然后发送许多或无限数量的块。为了对抗这种攻击,我建议配置一个Rewrite Valve。
要实现这一点,请在您的主机定义中添加阀门server.xml:
<Valve className="org.apache.catalina.valves.rewrite.RewriteValve" />
Run Code Online (Sandbox Code Playgroud)
假设您的主机名是默认的(localhost),您需要$CATALINA_BASE/conf/Catalina/localhost/rewrite.config使用以下内容创建文件:
RewriteCond %{HTTP:Transfer-Encoding} chunked
RewriteRule ^(.*)$ / [F]
Run Code Online (Sandbox Code Playgroud)
如有必要,您可以调整 RewriteRule 以使用除 F 标志导致的 403 Forbidden 之外的其他内容进行回复。这是纯 Tomcat 配置且灵活。
| 归档时间: |
|
| 查看次数: |
6456 次 |
| 最近记录: |