【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