一、前言

参考文章如下:
不专业的“漏洞扫描软件”,是否吓到你?
安全厂家漏洞扫描机制

近期甲方使用漏洞软件扫描网络环境下所有主机,扫描出一大堆安全漏洞,最好的处理方式当然是升级系统相关组件至最新的软件版本。
然而,整个软件系统引用了部分第三方开源组件,且操作系统官方源提供的软件版本相对陈旧,生产环境贸然升级这么多组件动作太大,与此同时,甲方使用的是内网网络环境,安全系数相对较高。
综合以上因素考虑,考虑使用以下几种方式规避安全漏洞处理:

  • 修改服务端口号
  • 修改软件版本号或者banner信息
  • 通过防火墙封禁不相关的外部访问

二、常见漏洞处理

1、ftp服务

1.1、漏洞信息
  • 漏洞名称
    FTP服务器版本信息可被获取(CVE-1999-0614)

  • 解决办法
    建议您采取以下措施以降低威胁:
    修改源代码或者配置文件改变缺省banner信息。

1.2、检测手段

使用telnet访问主机21端口,可探测到主机使用ftp软件版本(vsftpd 3.0.3)

[root@node111 ~]# telnet 172.16.21.61 21
Trying 172.16.21.61...
Connected to 172.16.21.61.
Escape character is '^]'.
220 (vsFTPd 3.0.3)
1.3、处理措施

处理措施有以下两种:

  • 如不使用ftp服务,可关闭vsftpd服务,此时使用telnet连接超时
systemctl stop vsftpd
systemctl disable vsftpd
  • 如需要使用ftp服务,可尝试修改vsftpd服务banner信息,此时无法使用telnet探测到软件版本号
    注:不同操作系统,软件配置文件路径有所不同(可能为/etc/vsftpd.conf/etc/vsftpd/vsftpd.conf
echo "ftpd_banner=this is vsftpd" >> /etc/vsftpd.conf
systemctl restart vsftpd

2、nfs服务

2.1、漏洞信息
  • 漏洞名称
    目标主机showmount -e信息泄露(CVE-1999-0554)

  • 详细描述
    可以对目标主机进行"showmount -e"操作,此操作将泄露目标主机大量敏感信息,比如目录结构。更糟糕的是,如果访问控制不严的话,攻击者有可能直接访问到目标主机上的数据。

  • 解决办法
    建议您采取以下措施以降低威胁:
    限制可以获取NFS输出列表的IP和用户。
    除非绝对必要,请关闭NFS服务、MOUNTD。

2.2、检测手段

使用任意一个客户端对主机IP进行showmount -e <nfs-server-ip>操作,可以查看到nfs共享信息

root@node111:~# showmount -e 172.16.21.62
Export list for 172.16.21.62:
/cephfuse/test5 *
2.3、处理措施

默认情况下,nfs服务端未做任何限制,任意主机都可以对nfs服务端进行"showmount -e"操作。
一个IP请求连入,linux的检查策略是先看/etc/hosts.allow中是否允许,如果允许直接放行;如果没有,则再看/etc/hosts.deny中是否禁止,如果禁止那么就禁止连入。
两个配置文件的关系为:/etc/hosts.allow 的设定优先于/etc/hosts.deny
service_name 必须与/etc/rc.d/init.d/* 里面的程序名称要相同

  • 1、修改/etc/hosts.deny配置文件,默认不允许任何客户端rpcbind服务
echo "rpcbind:ALL:deny" >> /etc/hosts.deny
  • 2、修改/etc/hosts.allow配置文件,添加允许访问rpcbind服务的客户端IP地址
    注:添加完成后,在白名单的客户端可以正常进行showmount -e <nfs-server-ip>操作,而不在白名单的客户端禁止访问
echo "rpcbind:172.16.21.62,172.16.21.86:allow" >> /etc/hosts.allow

3、nginx服务

3.1、漏洞信息
  • 漏洞名称
    可通过HTTP获取远端WWW服务信息(CVE-1999-0633)

  • 详细描述
    本插件检测远端HTTP Server信息。这可能使得攻击者了解远程系统类型以便进行下一步的攻击。

3.2、检测手段

使用任意一个客户端对主机IP进行curl -i <server-ip>操作,可以获取到nginx版本信息(nginx/1.10.3 (Ubuntu))

[root@node111 ~]# curl -i 172.16.21.62
HTTP/1.1 200 OK
Server: nginx/1.10.3 (Ubuntu)
3.3、处理措施

隐藏nginx版本信息

cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak
sed -i  '29i server_tokens off;' /etc/nginx/nginx.conf
systemctl restart nginx

4、ICMP

4.1、漏洞信息
  • 漏洞名称
    ICMP timestamp请求响应漏洞(CVE-1999-0524)

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

  • 解决方法
    在您的防火墙上过滤外来的ICMP timestamp(类型 13)报文以及外出的ICMP timestamp回复报文。

  • 返回信息
    初始时间戳:00000000
    接收时间戳:01da0ff0
    传递时间戳:01da0ff0

4.2、检测手段
  • 客户端编译timestamp软件程序(存放于./unp/program/icmp/icmptime/timestamp)
git clone https://gitee.com/ivan_allen/unp.git
cd unp/program
yum install lksctp-tools-devel.x86_64 -y
make
  • 客户端执行./timestamp <server-ip>,服务端可以响应icmp请求
[root@node134 icmptime]# ./timestamp 172.16.21.62
orig = 19375242, recv = 20757775, send = 20757775, rtt = 0 ms, diff = 1382533 ms, from 172.16.21.62
4.3、处理措施
  • 开启防火墙,过滤外来的ICMP timestamp(类型 13)报文以及外出的ICMP timestamp回复报文
firewall-cmd --permanent --direct --add-rule ipv4 filter INPUT 0 -p ICMP --icmp-type timestamp-request -m comment --comment "deny ICMP timestamp" -j DROP
firewall-cmd --permanent --direct --add-rule ipv4 filter INPUT 0 -p ICMP --icmp-type timestamp-reply -m comment --comment "deny ICMP timestamp" -j DROP
firewall-cmd --reload
  • 查看防火墙规则
root@node63:~# iptables -L -n
Chain INPUT_direct (1 references)
target     prot opt source               destination         
DROP       icmp --  0.0.0.0/0            0.0.0.0/0            icmptype 13 /* deny ICMP timestamp */
DROP       icmp --  0.0.0.0/0            0.0.0.0/0            icmptype 14 /* deny ICMP timestamp */
  • 查看添加的防火墙规则
root@node63:~# firewall-cmd --direct --get-all-rules
ipv4 filter INPUT 0 -p ICMP --icmp-type timestamp-request -m comment --comment 'deny ICMP timestamp' -j DROP
ipv4 filter INPUT 0 -p ICMP --icmp-type timestamp-reply -m comment --comment 'deny ICMP timestamp' -j DROP

5、Traceroute

5.1、漏洞信息
  • 漏洞名称
    允许Traceroute探测

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

  • 解决方法
    在防火墙出站规则中禁用echo-reply(type 0)、time-exceeded(type 11)、destination-unreachable(type 3)类型的ICMP包。

  • 返回信息
    Traceroute Lists::
    4.21.1.72

5.2、处理措施
  • 开启防火墙,出站规则中禁用echo-reply(type 0)、time-exceeded(type 11)、destination-unreachable(type 3)类型的ICMP包。
firewall-cmd --permanent --direct --add-rule ipv4 filter INPUT 0 -p ICMP --icmp-type 11 -m comment --comment "deny traceroute" -j DROP
firewall-cmd --reload
  • 查看防火墙规则
root@node63:~# iptables -L -n
Chain INPUT_direct (1 references)
target     prot opt source               destination         
DROP       icmp --  0.0.0.0/0            0.0.0.0/0            icmptype 11 /* deny traceroute */
  • 查看添加的防火墙规则
root@node63:~# firewall-cmd --direct --get-all-rules
ipv4 filter INPUT 0 -p ICMP --icmp-type 11 -m comment --comment 'deny traceroute' -j DROP

三、防火墙控制

对于无法升级软件版本的情况下,通常可通过防火墙限制某一个端口访问,规避漏洞软件扫描访问
参考示例如下,通过iptables限制80端口只有特定IP地址可访问

a、允许172.16.21.91节点访问80端口
iptables -A INPUT -p tcp -s 172.16.21.91  --dport 80 -j ACCEPT
b、设置所有节点无法访问80端口
iptables -A INPUT -p tcp --dport 80 -j DROP 

注:如需删除新添加防火墙规则,可通过以下方式处理

查看所有规则编号
iptables -L -n --line-number
删除IINPUT策略第10条规则
iptables -D INPUT 10
Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐