最近项目部署之后,有些客户开始进行系统系统漏洞扫描,其中出现问题多的一个就是我们项目所依赖的Elasticsearch(es检索服务),很容易就被扫出来各种高危漏洞,而且这些漏洞我们在处理起来是很棘手的,毕竟这个是依赖于开源的一些服务,我们不可能等到厂商直接解决这些问题,那么我们只能自己尝试解决这些问题喽!
1、解决思路
(1)问题现象描述
(2)问题解决思路
好多问题,这解决起来根本无从下手啊,这要是解决起来,难不成我们还要去改人家的源码吗?想想都不现实。好在最后想到了一个思路:既然这些漏洞是通过访问特定的端口,从而获取到一些用户安全方面的信息,那么我们直接将这个Elasticsearch所依赖的端口给他禁用掉不就行了吗,而且一劳永逸。我们在指定当前Elasticsearch所占用的端口只允许特定的IP或者只允许本机访问,那么这样我们系统对于Elasticsearch的依赖不也能正常使用了嘛。
2、限制特定端口只允许特定IP访问
因为我们的项目基本都是基于docker环境部署的,所以以下操作在docker环境下是可行的,其他环境部署的可以试一试
(1)知识点
默认情况下 docker 会在 iptables 里创建优先级比 firewalld 高的规则。使用 firewalld 创建的规则对 docker 的容器就不会产生作用。 所以就会出现我们在firewalld设置端口访问控制,并不能完成限制特定IP访问的目的。
(2)操作步骤
-- 查看DOCKER 开放的规则
iptables --line -nvL DOCKER
-- 禁用9200端口
iptables -I DOCKER -p tcp --dport 9200 -j DROP
-- 允许10.4.56.13可以访问本机9200端口
iptables -I DOCKER -s 10.4.56.13 -p tcp --dport 9200 -j ACCEPT
-- 删除防火墙规则,需指定规则序号,规则序号通过命令:iptables --line -nvL DOCKER 查询
iptables -D DOCKER 规则序号 4
-- 保存规则(如果保存失败,或者防火墙不能重启,下次操作系统重启以后已配置规则会失效)
systemctl save iptables 或者 service iptables save
-- 重启防火墙
systemctl iptables restart
(3)注意
-- 如果执行service iptables save
报如下错误:
The service command supports only basic LSB actions (start, stop, restart, try-restart, reload, force-reload, status). For other actions, please try to use systemctl.
-- 原因:
从 CentOS 7.x 开始,CentOS 开始使用 systemd 服务来代替 daemon,原来管理系统启动和管理系统服务的相关命令全部由 systemctl 命令来代替。service 命令之保留了极少部分使用,大部分命令都要改用 systemctl 命令来使用。
-- 解决方法:
-- 首先停止防火墙,再禁用firewalld:
systemctl stop firewalld
systemctl mask firewalld
yum install iptables-services
service iptables start
chkconfig iptables on