Spring Boot Actuator 开放
Spring Boot 提供了安全限制功能。比如要禁用/env
接口,则可设置如下:
endpoints.env.enabled= false
如果只想打开一两个接口,那就先禁用全部接口,然后启用需要的接口:
endpoints.enabled = false
endpoints.metrics.enabled = true
另外也可以引入spring-boot-starter-security
依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
在application.properties
中指定 actuator 的端口以及开启 security 功能,配置访问权限验证,这时再访问 actuator 功能时就会弹出登录窗口,需要输入账号密码验证后才允许访问。
management.port=8099
management.security.enabled=true
security.user.name=admin
security.user.password=admin
K8S API 未授权访问
在使用 kubernetes 的时候一定要进行身份的校验,K8S 的 APi 其实有非常严格的认证和授权。
最简单的是在 Authentication 增加静态的 password,或者 token,可以的话关闭 Web 端口的服务,保持最小化原则,避免安全风险的产生。参考:官方文档
CouchDB未授权访问
(1)漏洞详情
CouchDB默认在5984端口开放Restful的API接口
,用于数据库的管理功能。其HTTP Server默认开启时没有进行验证,而且绑定在0.0.0.0
,所有用户均可通过API访问导致未授权访问。
(2)漏洞危害【高危】
任何连接到服务器端口上的人,都可以调用相关API对服务器上的数据进行任意的增删改查,其中通过API修改local.ini
配置文件,可进一步导致执行任意系统命令,获取服务器权限.
(3)修复建议
1、指定CouchDB绑定的IP (需要重启CouchDB才能生效) 在 /etc/couchdb/local.ini
文件中找到 “bind_address = 0.0.0.0”
,把 0.0.0.0 修改为 127.0.0.1 ,然后保存。注:修改后只有本机才能访问CouchDB
2、设置访问密码 (需要重启CouchDB才能生效) 在 /etc/couchdb/local.ini
中找到“[admins]”
字段配置密码
Hadoop YARN Resource Manager 未授权访问
自检
在yarn-site.xml
配置文件中查找如下检查项:
- 检查
yarn.resourcemanager.webapp.address
,即 ResourceManager 对外 Web UI 地址。用户可通过该地址在浏览器中查看集群各类信息,默认为 8088 - 检查
yarn.resourcemanager.webapp.https.address
,即 ResourceManager 对外 Web UI HTTPS 地址。用户可通过该地址在浏览器中查看集群各类信息,默认为 8090
修复
- 通过 iptables 或者安全组配置访问策略,限制对 8088 等端口的访问,如无必要,不要将接口开放在公网,改为本地或者内网调用
- 升级 Hadoop 到 2.x 版本以上,并启用 Kerberos 认证功能,禁止匿名访问
Hadoop未授权访问
(1)漏洞详情
由于服务器直接在开放了Hadoop机器HDFS的50070 web端口及部分默认服务端口,黑客可以通过命令行操作多个目录下的数据。
(2)漏洞危害【高危】
攻击者可以进行删除,下载,目录浏览甚至命令执行等操作,产生极大的危害。
其中比较重要的是DataNode 默认端口50075
开放的话,攻击者可以通过hdsf提供的restful api对hdfs存储数据进行操作。
(3)修复建议
1、如无必要,关闭Hadoop Web管理页面
2、开启身份验证,防止未经授权用户访问
3、设置“安全组”访问控制策略,将Hadoop默认开放的多个端口对公网全部禁止或限制可信任的IP地址才能访问包括50070以及WebUI等相关端口,详细端口列表如下:
HDFS
NameNode 默认端口 50070
DataNode 默认端口 50075
httpfs默认端口14000
journalnode默认端口 8480
YARN(JobTracker)
ResourceManager 默认端口8088
JobTracker 默认端口 50030
TaskTracker 默认端口 50060
Hue
默认端口 8080
YARN(JobTracker)
master默认端口 60010
regionserver默认端口60030
hive-server2
默认端口 10000
spark-jdbcserver
默认端口 10003
Zookeeper未授权访问
(1)漏洞详情
Zookeeper的默认开放端口是2181。Zookeeper安装部署之后默认情况下不需要任何身份验证,造成攻击者可以远程利用Zookeeper。
(2)漏洞危害【中危】
通过服务器收集敏感信息或者在Zookeeper集群内进行破坏(比如:kill命令),攻击者能够执行所有只允许由管理员运行的命令。
执行以下命令即可远程获取该服务器的环境:
echo envi | nc ip port
(3)修复建议
1、禁止把Zookeeper直接暴露在公网
2、添加访问控制,根据情况选择对应方式(认证用户,用户名密码)
3、绑定指定IP访问
MongoDB未授权访问
(1)漏洞详情
开启MongoDB服务时不添加任何参数时,默认是没有权限验证的,而且可以远程访问数据库,登录的用户可以通过默认端口无需密码对数据库进行增、删、改、查等任意高危操作。
(2)漏洞危害 【高危】
执行任意数据库操作。
(3)修复建议
1.添加mongodb认证
MongoDB启动时添加—auth参数,给MongoDB添加用户:
use admin
db.addUser("root", "123456") #添加用户名root密码123456的用户
db.auth("root","123456") #验证下是否添加成功,返回1说明成功
2.若只在本地使用,绑定本地IP(or 内网IP
)。
启动时加入参数
--bind_ip 127.0.0.1
或在/etc/mongodb.conf
文件中添加以下内容:
bind_ip = 127.0.0.1
Elasticsearch未授权访问
(1)漏洞详情
Elasticsearch是一款java编写的企业级搜索服务。公司使用ELK作为日志分析,启动此服务默认会开放9200端口,可被非法操作数据。
(2)漏洞危害 【高危】
默认开放端口9200
相当于一个API,任何人访问这个地址,就可以调用api,进行数据的增删改操作。
http://x.x.x.x:9200/_plugin/head/
web管理界面
http://x.x.x.x:9200/_cat/indices
http://x.x.x.x:9200/_river/_search
查看数据库敏感信息
http://x.x.x.x:9200/_nodes
查看节点数据
(3)修复建议
1、防火墙上设置禁止外网访问9200端口;
2、使用Nginx搭建反向代理,通过配置Nginx实现对Elasticsearch的认证(或者安装x-pack模块
);
3、限制IP访问,绑定固定IP;
4、在config/elasticsearch.yml中为9200端口设置认证:
http.basic.enabled true #开关,开启会接管全部HTTP连接
http.basic.user "admin" #账号
http.basic.password "admin_pw" #密码
http.basic.ipwhitelist ["localhost", "127.0.0.1"]
Memcache 未授权访问
(1)漏洞详情
Memcached是一套常用的key-value缓存系统,由于它本身没有权限控制模块,所以对公网开放的Memcache服务很容易被攻击者扫描发现。
(2)漏洞危害【中危】
攻击者通过命令交互可直接读取Memcached中的敏感信息,泄露公司敏感数据。
可做为DRDoS的放大器,导致公司出口大量带宽消耗,危害公共网络安全。
PoC:
nc -vv <target> <port>
>stats
(3)修复建议(三选一)
1、设置memchached只允许本地访问,并重启
# vim /etc/sysconfig/memcached
OPTIONS="-l 127.0.0.1" #设置本地为监听
2、禁止外网访问Memcached 11211端口(iptables)
3、编译时加上–enable-sasl,启用SASL认证
转载请注明:SuperIT » 常见安全漏洞修复建议-3