【Linux相关】安全漏洞处理

一、前言

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

  • 修改服务端口号
  • 修改软件版本号或者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