中间件安全排查标准
一、Nginx
(1)目录索引是否禁止*
评估目的 |
WEB 目录禁止目录列表显示。 |
安全建议 |
禁止目录列表显示,保护网页目录和文件信息。 |
描述操作 |
修改nginx/conf/nginx.conf 文件中的location部分:autoindex 为offlocation /{# root html;# index index.html index.htm; root /usr/local/src/static/img;#指定实际目录绝对路径; autoindex on; # 目录浏览功能开关 |
判定依据 |
查看配置文件 nginx.conf 有无相关设置。 |
(2)隐藏版本信息*
评估目的 |
防止Nginx版本泄露 |
安全建议 |
禁止在所有自动产生的错误页面中显示版本号,防止泄露敏感信息。 |
描述操作 |
设置操作步骤(1) 修改文件$NGINX_HOME/conf/nginx.conf在 http 模块下添加或则修改为 server_tokens off;(2) 重新启动 Nginx 服务 |
判定依据 |
在地址栏输入一个不存在的页面,验证是否已不显示版本号 |
(3)请求拦截配置*
| 评估目的 | 防止Nginx请求拦截遗漏造成未授权访问 |
|------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----|------|----------------------------------------------------------------------------------------------------------|
| 安全建议 | 白名单配置访问或梳理系统访问url,全部加入黑名单访问 |
| 描述操作 | 设置操作步骤(1) server {listen 80;server_name www.example.com; # 精确匹配根URL,转发到后端的index页面location = / {proxy_pass http://backend_server/index;} # 处理静态文件请求,这是Nginx的强项location ^~ /static/ {root /path/to/static/files;} # 正则匹配图片文件,转发到图片服务器location ~* .(gif | jpg | jpeg | png)$ {proxy_pass http://image_server;} # 通用匹配,转发到后端应用服务器location / {proxy_pass http://backend_server;}} |
| 判定依据 | 查看配置文件 nginx.conf 有无相关设置。 |
(4)超时连接设置
评估目的 |
设置连接超时自动断开,防范DDOS攻击 |
安全建议 |
白名单配置访问或梳理系统访问url,全部加入黑名单访问 |
描述操作 |
设置操作步骤(1) (1)修改文件$NGINX_HOME/conf/nginx.conf 在 http 模块下添加或则修改为 keepalive_timeout 65; (数值根据需要调整) (2)重新启动 Nginx 服务 |
判定依据 |
查看配置文件 nginx.conf 有无相关设置。 |
(5)禁用危险HTTP方法*
| 评估目的 | 防止危险方法访问 |
|------|---------------------------------------------------------------------------------------------------------|------|------------------------------------------------|
| 安全建议 | 拒绝除post/get/head方法外的其他方法请求 |
| 描述操作 | 设置操作步骤(1)修改配置文件#vim /usr/local/nginx/conf/nginx.conf具体设置如下:Server{ ...... if(request_method !\~ \^(GET | HEAD | POST)) { return404; } ......}(2)重新启动 nginx 服务 |
| 判定依据 | 查看配置文件 nginx.conf 有无相关设置。 |
(6)隐藏X-Powered-By
评估目的 |
防止暴露后端语言或框架 |
安全建议 |
隐藏Nginx后端服务指定Header的状态 |
描述操作 |
设置操作步骤(1)修改文件$NGINX_HOME/conf/nginx.conf 在 http 模块下配置proxy_hide_header项;添加或则修改为 proxy_hide_header X-Powered-By; proxy_hide_header Server; (2)重新启动 Nginx 服务。 |
判定依据 |
查看配置文件 nginx.conf 有无相关设置。 |
二、APACHE
(1)目录索引是否禁止*
评估目的 |
WEB 目录禁止目录列表显示。 |
安全建议 |
禁止目录列表显示,保护网页目录和文件信息。 |
描述操作 |
将httpd.conf文件中Options Indexes MultiViews将"Indexes" Options Indexes MultiViews ← 找到这一行,将"Indexes"删除 ↓ Options MultiViews ← 变为此状态(不在浏览器上显示树状目录结构)AllowOverride NoneOrder allow,denyAllow from all |
判定依据 |
查看配置文件 httpd.conf 有无相关设置。 |
(2)隐藏版本信息*
评估目的 |
防止Tomcat版本泄露 |
安全建议 |
禁止在所有自动产生的错误页面中显示版本号,防止泄露敏感信息。 |
描述操作 |
设置操作步骤(1)在 conf/server.xml文件中的 节点下添加如下配置// showReport:默认true,是否显示异常信息// showServerInfo:默认true,是否显示版本号(2) 修改或隐藏响应头的 server 值在 conf/server.xml 文件中的 <Connector > 节点新增 server属性 <Connector port="21058" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="21052" server="smartbi"/> // server 值可以为空或自定义字符串 |
判定依据 |
在地址栏输入一个不存在的页面,验证是否已不显示版本号 |
(3)错误页面处理*
评估目的 |
防止泄露敏感信息 |
安全建议 |
Apache 访问错误页面重定向,防止泄露敏感信息 |
描述操作 |
设置操作步骤 (1) 修改 httpd.conf 配置文件:ErrorDocument 400 /custom400.htmlErrorDocument 401 /custom401.htmlErrorDocument 403 /custom403.htmlErrorDocument 404 /custom404.htmlErrorDocument 405 /custom405.htmlErrorDocument 500 /custom500.htmlCustomxxx.html 为要自建的错误页面。(2)重新启动 Apache 服务 |
判定依据 |
在地址栏输入一个不存在的页面,验证是否已指向错误页面 |
(4)CGI 程序控制
评估目的 |
CGI 程序控制 |
安全建议 |
如果服务器上不需要运行 CGI 程序,建议禁用 CGI |
描述操作 |
设置操作步骤编辑 httpd.conf 配置文件,把 cgi-bin 目录的配置和模块注释掉:#<Directory "/var/www/cgi-bin"># AllowOverride None# Options None# Require all gra# |
判定依据 |
检查配置文件 httpd.conf |
(5)禁用危险HTTP方法
评估目的 |
用危险HTTP方法 |
安全建议 |
只允许get 、post等程序常用方法 |
描述操作 |
设置操作步骤编辑 httpd.conf 配置文件,新增或修改如下配置: Order Allow,Deny Deny from all |
判定依据 |
检查配置文件 httpd.conf |
(6)关闭 TRACE方法
评估目的 |
关闭 TRACE方法 |
安全建议 |
关闭 TRACE,防止 TRACE 方法被访问者恶意利用 |
描述操作 |
设置操作步骤(1)编辑 httpd.conf 配置文件,配置如下内容: TraceEnable Off (2)如果不存在则手动在文件末尾添加。> |
判定依据 |
检查配置文件 httpd.conf |
(7)拒绝服务防御
评估目的 |
拒绝服务防御 |
安全建议 |
防范拒绝服务攻击 |
描述操作 |
设置操作步骤(1) 编辑 httpd.conf 配置文件:Timeout 10 #客户端与服务器端建立连接前的时间间隔KeepAlive OnKeepAliveTimeout 15 #限制每个session的保持时间是15秒AcceptFilter http dataAcceptFilter https data(2)重新启动 Apache 服务。 |
判定依据 |
检查配置文件 httpd.conf |
(8) 请求拦截配置*
三、TOMCAT
(1)目录索引是否禁止*
评估目的 |
WEB 目录禁止目录列表显示。 |
安全建议 |
禁止目录列表显示,保护网页目录和文件信息。 |
描述操作 |
修改conf/web.xml文件中listings项为false default org.apache.catalina.servlets.DefaultServlet debug 0 listings false // 这里改为false 1 |
判定依据 |
查看配置文件 web.xml有无相关设置。 |
(2)隐藏版本信息*
评估目的 |
防止Tomcat版本泄露 |
安全建议 |
禁止在所有自动产生的错误页面中显示版本号,防止泄露敏感信息。 |
描述操作 |
设置操作步骤打开 Apache 配置文件httpd.conf,添加/修改下面的代码,保存后重启Apache服务ServerTokens ProdServerSignature Off |
判定依据 |
在地址栏输入一个不存在的页面,验证是否已不显示版本号 |
(3)禁用危险http方法
评估目的 |
防止危险方法访问 |
安全建议 |
拒绝除post/get/head方法外的其他方法请求 |
描述操作 |
(1)修改文件$TOMCAT_HOME/conf/web.xml,配置org.apache.catalina.servlets.DefaultServlet 的值,内容如 下:readonlyfalsereadonly 参数默认是 true,即允许 delete 和 put 操作,修改 为 false。(2)重新启动 Tomcat 服务。 |
判定依据 |
查看配置文件web.xml 有无相关设置。 |
(4)禁止显示异常调试信息
评估目的 |
禁止显示异常调试信息 |
安全建议 |
当请求处理期间发生运行时错误时,ApacheTomcat将向请求者显示调试信息,存在安全隐患 |
描述操作 |
((1)修改文件$TOMCAT_HOME/conf/web.xml在web-app下添加子节点,配置java.lang.Throwable/error.jsp在webapps目录下创建error.jsp,定义自定义错误信息(2)重新启动 Tomcat 服务。 |
判定依据 |
查看配置文件web.xml 有无相关设置。 |
(5)Tomcat禁止自动部署
评估目的 |
禁止自动部署程序 |
安全建议 |
配置自动部署,容易被部署恶意或未经测试的应用程序,应将其禁用 |
描述操作 |
修改Tomcat 根目录下的配置文件conf/server.xml,将host节点的autoDeploy属性设置为"false",<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="false"> 如果host的deployOnStartup属性(如没有deployOnStartup配置可以忽略)为"true",则也将其更改为"false" |
判定依据 |
查看配置文件web.xml 有无相关设置。 |
(6)删除无关文件和目录*
评估目的 |
删除无关文件和目录 |
安全建议 |
Tomcat安装提供了示例应用程序、文档和其他可能不用于生产程序及目录,存在极大安全风险 |
描述操作 |
删除Tomcat示例程序和目录、管理控制台等,即从Tomcat根目录的webapps目录,移出或删除docs、examples、host-manager、manager目录 |
判定依据 |
确认已删除或移除看配置文件。 |
(7)运行进程权限检测
| 评估目的 | 运行进程权限检测 |
|------|------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------|
| 安全建议 | 在运行Internet服务时,最好尽可能避免使用root用户运行,降低攻击者拿到服务器控制权限的机会 |
| 描述操作 | 新增tomcat用户useradd tomcat--将tomcat目录owner改为tomcatchown -R tomcat:tomcat /opt/tomcat-- 停止原来的tomcat服务--切换到tomcat用户su - tomcat--重新启动tomcat/opt/tomcat/bin/startup.sh |
| 判定依据 | ps -ef | grep tomcat查看运行tomcat的用户 |
(8)错误页面处理
评估目的 |
错误页面处理 |
安全建议 |
Tomcat 访问错误页面重定向,防止泄露敏感信息 |
描述操作 |
(1)查看 tomcat/conf/web.xml 文件,新增或修改如下配置:404/错误页面......java.lang.NullPointerException/error.jsp(2)重新启动 Tomcat 服务 |
判定依据 |
在地址栏输入一个不存在的页面,验证是否已指向错误页面 |
(9) 请求拦截配置*
评估目的 |
防止请求拦截遗漏造成未授权访问 |
安全建议 |
白名单配置访问或梳理系统访问url,全部加入黑名单访问 |
描述操作 |
设置操作步骤修改/conf目录下的 httpd.conf 文件(1)使用 web.xml 配置 Servlet 映射(内部转发) myForwardServlet com.example.ForwardServlet myForwardServlet /old-path/(2)配置 实现访问控制适用场景:拦截 URL 并强制跳转到登录页或其他页面(基于安全约束)。 Protected Area /admin/ admin FORM /login.html /error.html |
判定依据 |
查看配置文件web.xml有无相关设置。 |
四、中间件日志*
(1)Apache HTTP 服务器的日志文件通常位于 /var/log/apache2/ 目录下。主要的日志文件包括:
access.log:记录所有访问请求。
error.log:记录所有错误信息。
(2)Nginx 的日志文件通常位于 /var/log/nginx/ 目录下。主要的日志文件包括:
access.log:记录所有访问请求。
error.log:记录所有错误信息。
(3)Tomcat的日志文件通常位于 /usr/local/tomcat/logs/目录下。
访问日志: /usr/local/tomcat/logs/access.log
错误日志: /usr/local/tomcat/logs/catalina.out
日志标准包括不限于:来源IP、时间、访问地址、访问方式、成功失败等,保存时间必须近6个月、返回结果