Web Server 配置安全
Posted RickyShilx
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Web Server 配置安全相关的知识,希望对你有一定的参考价值。
常见 Web Server:Apache Httpd、nginx、LightHttp。Web Server 安全:自身是否安全 + 是否提供了可用的安全功能。
Apache 安全
Apache 的漏洞大多是 Apache 的 module 造成,其核心高危漏洞几乎没有。默认启动的 Module 出现过的高危漏洞很少,大多数高危漏洞集中在默认没有安装或启用的 Module 上。
检查 Apache 安全的第一件事就是检查 Module 的安装情况,根据 “最小权限原则”,应该尽可能减少不必要的 Module;对于要使用的 Module 则检查其对应版本是否存在已知的安全漏洞。
定制好了 Apache 的安装包后,需要为 Apache 单独建立一个 user/group,然后指定 Apache 进程以单独的用户身份运行。禁止使用高权限身份运行!运行 Apache 的用户不应该具备 shell。
要保护好 Apache Log,比如实时地发送到远程的 syslog 服务器,以防攻击者入侵后删除痕迹。
Nginx 安全
Nginx 高性能,高并发。出现较多高危漏洞,在官网 http://nginx.org/en/security_advisories.html 公布已发现的安全问题。要紧密关注漏洞信息,及时更新到安全版本。
Nginx 的配置灵活,在对抗 DDOS 和 CC 攻击方面也能起到一定的缓解作用;在 Nginx 的配置中还可以做一些简单的条件判断,比如客户端 User_Agent 具有什么特征,或者来自某个特定 referer、IP 等条件,定制特别的响应动作,比如返回错误号或重定向。
jBoss 远程命令执行
jBoss 是 J2EE 环境中流行的 Web 容器,如果配置不当可能造成远程命令执行。
jBoss 在默认安装时由一个管理后台,JMX-Console。该后台给管理员一些高级功能,包括配置 MBeans。通过 8080 端口访问 /jmx-console 能够进入管理界面,默认安装时访问 JMX-Console 是没有任何认证的。
在 JMX-Console 中,有多种可以远程执行命令的方法:
通过 DeploymentScanner 远程加载一个 war 包:默认 DeploymentScanner 将检查 URL 是否是 file:/[JBOSSHOME]/server/default/deploy/,但通过 addURL() 方法却可以添加一个远程 war 包。
通过 BSH(Bean Shell)Deployment 也能部署 war 包:BSH 能够执行一次性的脚本或创建服务。
出于安全防御的目的,在做安全加固的时候,应该删除 JMX-Console 后台:删除 jmx-console.war 和 web-console.war。如果业务上不得不使用 JMX-Console,则应该使用一个强密码,并且运行 JMX-Console 的端口不应该向 Internet 开放。
Tomcat 远程命令执行
Apache Tomcat 与 jBoss 一样,默认运行在 8080 端口。提供的 Tomcat Manager 的操作与 JMX-Console 类似,管理员可以在 Tomcat Manager 中部署 war 包(需要有 manager 权限,该权限在配置文件 tomcat-users.xml 中定义)
虽然 Tomcat 有后台密码认证,但仍然建议删除这个后台,以免被攻破后带来安全隐患。
HTTP Parameter Pollution
通过 GET 或 POST 向服务器发起请求时,提交两个相同的参数,例如:/?a=value1&a=value2。在某些服务端环境中只会取第一个或最后一个参数;而在另一些环境中,比如 .NET,则会变成 a=value1,value2。这种特性在绕过一些服务器端的逻辑判断时很有用。
以上是关于Web Server 配置安全的主要内容,如果未能解决你的问题,请参考以下文章