整理安扫漏洞及修复记录

维护系统项目验收前需要做安全扫描,检测主机、web等安全漏洞,现把发现的漏洞修复整理记录一下

主机漏洞

1. ICMP timestamp请求响应漏洞

描述:
远程主机会回复ICMP_TIMESTAMP查询并返回它们系统的当前时间。这可能允许攻击者攻击一些基于时间认证的协议。

修复:
在您的防火墙上过滤外来的ICMP timestamp(类型 13)报文以及外出的ICMP timestamp回复报文。

sudo iptables -A INPUT -p ICMP --icmp-type timestamp-request -j DROPsudo iptables -A INPUT -p ICMP --icmp-type timestamp-reply -j DROPsudo iptables -A OUTPUT -p ICMP --icmp-type timestamp-reply -j DROP

2. 允许Traceroute探测

描述:
本插件使用Traceroute探测来获取扫描器与远程主机之间的路由信息。攻击者也可以利用这些信息来了解目标网络的网络拓扑。

修复:
在防火墙出站规则中禁用echo-reply(type 0)、time-exceeded(type 11)、destination-unreachable(type 3)类型的ICMP包。

 sudo iptables -A INPUT -p ICMP --icmp-type time-exceeded -j DROP sudo iptables -A OUTPUT -p ICMP --icmp-type time-exceeded -j DROPsudo iptables -A INPUT -p ICMP --icmp-type echo-reply -j DROPsudo iptables -A OUTPUT -p ICMP --icmp-type echo-reply -j DROPsudo iptables -A INPUT -p ICMP --icmp-type destination-unreachable -j DROPsudo iptables -A OUTPUT -p ICMP --icmp-type destination-unreachable -j DROP

3. 远端WEB服务器上存在/robots.txt文件

描述:
一些WEB服务器通过设置/robots.txt使得一些搜索引擎或者索引工具更方便有效地工作。但/robots.txt中往往存在一些系统信息,可能使攻击者获得该系统的额外信息。

修复:
如果您的robots.txt中包含敏感信息,删除该文件。

#查找文件位置find / -name robots.txt#以下是我自己系统文件所在的为主/usr/share/cups/www/robots.txt /usr/share/nginx/html/robots.txt#分别进入目录后删除文件:cd /usr/share/cups/www/ rm -rf robots.txtcd /usr/share/nginx/html/rm -rf robots.txt

4. SSH版本信息可被获取

描述:
SSH服务允许远程攻击者获得ssh的具体信息,如版本号等等。这可能为攻击者发动进一步攻击提供帮助。

修改:
修改源代码或者配置文件改变SSH服务的缺省banner。

#创建banner文件;如果有就不需要创建了touch /etc/ssh/ssh_banner#写入登陆时要显示的banner信息echo "Wecome to use system" > /etc/ssh/ssh_banner#编辑文件,添加banner文件路径vim /etc/ssh/sshd_config#找到 #Banner none在下面添加路径;#Banner noneBanner /etc/ssh/ssh_banner#重启sshsystemctl restart sshd

5. 21端口 SolarWinds Serv-U FTP Server漏洞,高危14、中危12、低危3

这个端口的漏洞比较多,我是每天同步数据到模拟环境的所以防火墙只需要放行单一的IP地址即可;我自己的服务器只允许119访问本机21端口

#放行地址策略sudo iptables -A INPUT -s x.x.x.119 -p tcp --dport 21 -j ACCEPT sudo iptables -A OUTPUT -d x.x.x.119 -p tcp --sport 21 -j ACCEPT#拒绝所有流量访问本机的21端口sudo iptables -A INPUT -p tcp --dport 21 -j DROP#保存配置service iptables save

注:以上凡是添加的iptables策略完成以后,最后记得保存配置,否则重启服务器配置就没有了;或者也可以自己编辑iptables文件,直接在文件里写配置,然后重启iptables服务;

web漏洞

我这边使用的是Nginx,因此所有的配置都是在nginx.conf文件中做配置。

1. Host头攻击

描述:
弱点描述: 很多场景下,开发者都相信HTTP Host header传递的参数值用来更新链接导出脚本或者一些敏感操作。但该参数是可控的,若没有对其进行处理,就有可能造成恶意代码的传入。

建议:
一般性的建议: 使用SERVER_NAME代替host header

修复:
编辑nginx.conf文件,在对应的server下添加配置内容:

if ($host != "10.144.117.194") {return 403;}

如图:

2. 不安全的Referrer Policy

描述:
Referrer Policy控制 Referer 头的行为,该请求头指示发出请求的来源或网页 URL。 Web 应用程序使用不安全的 Referrer Policy 配置,可能会将用户信息泄露给第三方站点

建议:
建议将 Referrer-Policy 标头设置为”strict-origin-when-cross-origin”或更严格的值

修复:

add_header Referrer-Policy "strict-origin-when-cross-origin";

3. 不安全的Referrer Policy

描述:
Web 服务器对于 HTTP 请求的响应头中缺少 Referrer-Policy,这将导致浏览器提供的安全特性失效。 当用户在浏览器上点击一个链接时,会产生一个 HTTP 请求,用于获取新的页面内容,而在该请求的报头中,会包含一个 Referrer,用以指定该请求是从哪个页面跳转页来的,常被用于分析用户来源等信息。但是也成为了一个不安全的因素,所以就有了 Referrer-Policy,用于过滤 Referrer 报头内容,其可选的项有: no-referrer no-referrer-when-downgrade origin origin-when-cross-origin same-origin strict-origin strict-origin-when-cross-origin unsafe-url 漏洞危害: Web 服务器对于 HTTP 请求的响应头中缺少 Referrer-Policy,这将导致浏览器提供的安全特性失效,更容易遭受 Web 前端黑客攻击的影响。

建议:
1)修改服务端程序,给 HTTP 响应头加上 Referrer-Policy 如果是 java 服务端,可以使用如下方式添加 HTTP 响应头 response.setHeader(“Referrer-Policy”, “value”) 如果是 php 服务端,可以使用如下方式添加 HTTP 响应头 header(“Referrer-Policy:value”) 如果是 asp 服务端,可以使用如下方式添加 HTTP 响应头Response.AddHeader “Referrer-Policy”, “value” 如果是 python django 服务端,可以使用如下方式添加 HTTP 响应头 response = HttpResponse()response[“Referrer-Policy”] = “value” 如果是 python flask 服务端,可以使用如下方式添加 HTTP 响应头 response = make_response()response.headers[“Referrer-Policy”] = “value”;
2)修改负载均衡或反向代理服务器,给 HTTP 响应头加上 Referrer-Policy 如果使用Nginx、Tengine、Openresty 等作为代理服务器,在配置文件中写入如下内容即可添加 HTTP 响应头: add_header Referrer-Policy value; 如果使用 Apache 作为代理服务器,在配置文件中写入如下内容即可添加 HTTP 响应头: Header addReferrer-Policy “value”。

修复:

add_header Referrer-Policy "strict-origin-when-cross-origin";

4. HTTP Content-Security-Policy缺失

描述:
内容安全策略 (CSP) 是一个额外的安全层,用于检测并削弱某些特定类型的攻击,包括跨站脚本 (XSS) 和数据注入攻击等。无论是数据盗取、网站内容污染还是散发恶意软件,这些攻击都是主要的手段。CSP 的实质就是白名单制度,开发者明确告诉客户端,哪些外部资源可以加载和执行,等同于提供白名单。它的实现和执行全部由浏览器完成,开发者只需提供配置。CSP 大大增强了网页的安全性。攻击者即使发现了漏洞,也没法注入脚本,除非还控制了一台列入了白名单的可信主机。CSP开启可能会导致js、css出现报错。

建议:启用 CSP方法:一种是通过 HTTP 头信息的Content-Security-Policy的字段,另一种是通过网页的meta标签。

修复:
后面的网址和地址写自己的

add_header Content-Security-Policy "connect-src 'self''*.sh.ctc.com' '10.144.117.194'"; 

5. HTTP X-Content-Type-Options缺失

描述:
通过设置”X-Content-Type-Options: nosniff”响应标头,对 script 和 styleSheet 在执行是通过MIME 类型来过滤掉不安全的文件。设置X-Content-Type-Options,可能导致IE9、IE11拒绝加载没有返回Content-Type的相关资源。

建议:
响应中添加X-Content-Type-Options: nosniff。

修复:

add_header X-Content-Type-Options nosniff always;

6. HTTP X-XSS-Protection缺失

描述:
HTTP X-XSS-Protection 响应头是 Internet Explorer,Chrome 和 Safari 的一个特性,当检测到跨站脚本攻击 (XSS)时,浏览器将停止加载页面。若网站设置了良好的 Content-Security-Policy 来禁用内联 JavaScript (‘unsafe-inline’),现代浏览器不太需要这些保护, 但其仍然可以为尚不支持 CSP 的旧版浏览器的用户提供保护。

建议:
将您的服务器配置X-XSS-Protection头。 X-XSS-Protection值为: 0 禁止XSS过滤。 1 启用XSS过滤(通常浏览器是默认的)。 如果检测到跨站脚本攻击,浏览器将清除页面(删除不安全的部分)。 1;mode=block 启用XSS过滤。 如果检测到攻击,浏览器将不会清除页面,而是阻止页面加载。 1; report= (Chromium only) 启用XSS过滤。 如果检测到跨站脚本攻击,浏览器将清除页面并使用CSP report-uri指令的功能发送违规报告。

修复:

add_header X-XSS-Protection 1 always;

7. HTTP X-Download-Options缺失

描述:
Web 服务器对于 HTTP 请求的响应头中缺少 X-Download-Options,这将导致浏览器提供的安全特性失效。Web 服务器对于 HTTP 请求的响应头中缺少 X-Download-Options,这将导致浏览器提供的安全特性失效,更容易遭受 Web 前端黑客攻击的影响。

建议:
1)修改服务端程序,给 HTTP 响应头加上 X-Download-Options 如果是 java 服务端,可以使用如下方式添加 HTTP 响应头 response.setHeader(“X-Download-Options”, “value”) 如果是 php 服务端,可以使用如下方式添加 HTTP 响应头 header(“X-Download-Options: value”) 如果是 asp 服务端,可以使用如下方式添加 HTTP 响应头 Response.AddHeader “X-Download-Options”, “value” 如果是 python django 服务端,可以使用如下方式添加 HTTP 响应头 response = HttpResponse() response[“X-Download-Options”] = “value” 如果是 python flask 服务端,可以使用如下方式添加 HTTP 响应头 response = make_response() response.headers[“X-Download-Options”] = “value”;
2)修改负载均衡或反向代理服务器,给 HTTP 响应头加上 X-Download-Options 如果使用 Nginx、Tengine、Openresty 等作为代理服务器,在配置文件中写入如下内容即可添加 HTTP 响应头: add_header X-Download-Options value; 如果使用 Apache 作为代理服务器,在配置文件中写入如下内容即可添加 HTTP 响应头: Header add X-Download-Options “value”。

修复:

add_header X-Download-Options noopen;

8. HTTP X-Permitted-Cross-Domain-Policies缺失

描述:
Web 服务器对于 HTTP 请求的响应头中缺少 X-Permitted-Cross-Domain-Policies,这将导致浏览器提供的安全特性失效。 当一些在线的 Web Flash 需要加载其他域的内容时,很多 Web 会通过设置一个 crossdomain.xml 文件的方式来控制其跨域方式。很有可能有些开发者并没有修改 crossdomain.xml 文件的权限,但是又有和跨域的 Flash 共享数据的需求,这时候可以通过设置 X-Permitted-Cross-Domain-Policies 头的方式来替代 crossdomain.xml 文件,其可选的值有: none master-only by-content-type by-ftp-filename all。Web 服务器对于 HTTP 请求的响应头中缺少 X-Permitted-Cross-Domain-Policies,这将导致浏览器提供的安全特性失效,更容易遭受 Web 前端黑客攻击的影响。

建议:
1)修改服务端程序,给 HTTP 响应头加上 X-Permitted-Cross-Domain-Policies 如果是 java 服务端,可以使用如下方式添加 HTTP 响应头 response.setHeader(“X-Permitted-Cross-Domain-Policies”, “value”) 如果是 php 服务端,可以使用如下方式添加 HTTP 响应头 header(“X-Permitted-Cross-Domain-Policies: value”) 如果是 asp 服务端,可以使用如下方式添加 HTTP 响应头 Response.AddHeader “X-Permitted-Cross-Domain-Policies”, “value” 如果是 python django 服务端,可以使用如下方式添加 HTTP 响应头 response = HttpResponse() response[“X-Permitted-Cross-Domain-Policies”] = “value” 如果是 python flask 服务端,可以使用如下方式添加 HTTP 响应头 response = make_response() response.headers[“X-Permitted-Cross-Domain-Policies”] = “value”;
2)修改负载均衡或反向代理服务器,给 HTTP 响应头加上 X-Permitted-Cross-Domain-Policies 如果使用 Nginx、Tengine、Openresty 等作为代理服务器,在配置文件中写入如下内容即可添加 HTTP 响应头: add_header X-Permitted-Cross-Domain-Policies value; 如果使用 Apache 作为代理服务器,在配置文件中写入如下内容即可添加 HTTP 响应头: Header add X-Permitted-Cross-Domain-Policies “value”。

修复:

 add_header X-Permitted-Cross-Domain-Policies none;

9. 错误页面Web应用服务器版本泄露

描述:
弱点描述: Web服务器未能正确处理异常请求导致Web服务器版本信息泄露,攻击者收集到服务器信息后可进行进一步针对性攻击。

建议:
一般性的建议:
[1]关闭Web服务器错误提示。
[2]关闭运行平台的错误提示。
[3]建立错误机制,不要把真实的错误反馈给访问者。

修复:
这里我只做了隐藏nginx的版本信息;

server_tokens off;#关闭显示Nginx版本号

10. X-Frame-Options Header未配置

描述:
弱点描述: X-Frame-Options HTTP响应头可以指示浏览器是否允许当前网页在“frame”或“iframe”标签中显示,以此使网站内容不被其他站点引用和免于点击劫持攻击。

建议:
一般性的建议: 给您的网站添加X-Frame-Options响应头,赋值有如下三种,
1、DENY:无论如何不在框架中显示;
2、SAMEORIGIN:仅在同源域名下的框架中显示;
3、ALLOW-FROM uri:仅在指定域名下的框架中显示。如Apache修改配置文件添加“Header always append X-Frame-Options SAMEORIGIN”;Nginx修改配置文件“add_header X-Frame-Options SAMEORIGIN;”。

修复:

add_header X-Frame-Options SAMEORIGIN;

11. 点击劫持:CSP frame-ancestors未设置

描述:
点击劫持(UI 覆盖攻击)是一种恶意技术,它诱使Web用户点击与用户认为他们正在点击的内容不同的内容,从而可能泄露机密信息或控制他们的计算机,同时点击看似无害的网页。服务器没有在Content-Security-Policy标头中返回frame-ancestors指令,这意味着该网站可能面临点击劫持攻击的风险。frame-ancestors 指令可用于指示是否应允许浏览器在框架内呈现页面。网站可以使用它来避免点击劫持攻击,确保他们的内容没有嵌入到其他网站中。

建议:
配置您的Web服务器以包含带有frame-ancestors指令和X-Frame-Options头的CSP标头。

修复:

add_header Content-Security-Policy "frame-ancestors 'none'"; 

到此漏洞修复完成;
以下两个漏洞是需要部署HTTPS,因我们服务器所在的环境为内网环境,无需外网访问,不需要买证书部署HTTPS,因此以下两个漏洞未做修复,安装和部署HTTPS可自行百度;
12. 无HTTP重定向
13. 未加密的连接