Hadoop生态漏洞修复记录(转)

版权声明:本文为CSDN博主「不会吐丝的蜘蛛侠。」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/manweizhizhuxia/article/details/129809159


Hadoop常用端口介绍

HDFS
    NameNode
        50070   dfs.namenode.http-address   http服务的端口
        50470   dfs.namenode.https-address  https服务的端口
    DataNode
        50010   dfs.datanode.address    datanode服务端口,用于数据传输
        50075   dfs.datanode.http.address   http服务的端口
        50475   dfs.datanode.https.address  https服务的端口
        50020   dfs.datanode.ipc.address    ipc服务的端口
        8020    fs.defaultFS    接收Client连接的RPC端口,用于获取文件系统metadata信息。
    journalnode
        8485    dfs.journalnode.rpc-address     RPC服务
        8480    dfs.journalnode.http-address    HTTP服务
    ZKFC
        8019    dfs.ha.zkfc.port    ZooKeeper FailoverController,用于NN HA
   YARN
    ResourceManager
        8032  yarn.resourcemanager.address    RM的applications manager(ASM)端口
        8030  yarn.resourcemanager.scheduler.address  scheduler组件的IPC端口
        8031  yarn.resourcemanager.resource-tracker.address   IPC
        8033  yarn.resourcemanager.admin.address  IPC
        8088  yarn.resourcemanager.webapp.http.address.rm1     http服务端口
        8090  yarn.resourcemanager.webapp.https.address.rm1     https服务端口
    NodeManager
        8040  yarn.nodemanager.localizer.address  localizer IPC
        8042  yarn.nodemanager.webapp.address     http服务端口
        8041  yarn.nodemanager.address    NM中container manager的端口
    JobHistory Server
        10020     mapreduce.jobhistory.address    IPC
        19888     mapreduce.jobhistory.webapp.address     http服务端口,加个s就是https服务端口https://192.168.56.43:19888/jobhistory/logs


HBase

    Master
        60000     hbase.master.port   IPC
        60010     hbase.master.info.port  http服务端口
    RegionServer
        60020     hbase.regionserver.port     IPC
        60030     hbase.regionserver.info.port    http服务端口


Hive

    Metastore
        9083  metastore默认连接端口
    HiveServer
        10000   hiveserver2 默认连接端口     
        10002   hiveserver2 默认web端口     


ZooKeeper
    Server
        2181  /etc/zookeeper/conf/zoo.cfg  客户端提供服务的端口
        2888  /etc/zookeeper/conf/zoo.cfg  follower用来连接到leader,只在leader上监听该端口。
        3888  /etc/zookeeper/conf/zoo.cfg  用于leader选举的。只在electionAlg是1,2或3(默认)时需要。
        8080  /etc/zookeeper/conf/zoo.cfg  web管理后端,可禁用,添加一行admin.serverPort=0


Hadoop相关漏洞
漏洞一:
端口:8088
协议:TCP
服务:radan-http
漏洞:
Apache Hadoop YARN 资源管理器 REST API未授权访问漏洞【原理扫描】
官方建议修复方案:
临时解决方案:
通过系统内置防火墙只允许端口被业务主机访问
厂商解决方案:
更新Hadoop到2.X以上版本并启用Kerberos认证功能,禁止匿名访问
https://hadoop.apache.org/releases.html

不接受官方建议修复方案:
默认情况下,Hadoop HTTP Web控制台(ResourceManager,NameNode,NodeManagers和DataNodes)是允许无需任何形式的身份验证的访问。
HDFS一般会开启kerberos认证,但是YARN一般不开启kerberos认证
方案一:如果开启了kerberos认证:
就是core-site.xml有以下配置:

<property>
    <name>hadoop.security.authorization</name>
    <value>true</value>
</property>
<property>
   <name>hadoop.security.authentication</name>
   <value>kerberos</value>
</property>

1、yarn 的8088是ResourceManager的web界面
2、hdfs 的50070是NameNode的web界面
3、将yarn的端口8088访问从http改为https端口号8090,
将hdfs的端口50070访问从http改为https端口号50470,
也可以扫不到。
修改hdfs-site.xml,,新增 以下配置。注意是https,和集群名更改

<property>
    <name>dfs.http.policy</name>
    <value>HTTPS_ONLY</value>
</property>
<property>
    <name>dfs.namenode.https-address.bigdata.nn1</name>
    <value>192.168.56.41:50470</value>
</property>
<property>
    <name>dfs.namenode.https-address.bigdata.nn2</name>
    <value>192.168.56.42:50470</value>
</property>
<property>
    <name>dfs.datanode.https.address</name>
    <value>0.0.0.0:50475</value>
</property>

修改yarn-site.xml,,新增 以下配置。注意是https

<!-- resourcemanager配置https -->
<property>
    <name>yarn.resourcemanager.webapp.https.address.rm1</name>
    <value>192.168.56.41:8090</value>
</property>
<property>
    <name>yarn.resourcemanager.webapp.https.address.rm2</name>
    <value>192.168.56.42:8090</value>
</property>
<!-- nodemanager配置https -->
<property>
    <name>yarn.nodemanager.webapp.https.address</name>
    <value>0.0.0.0:8042</value>
</property>
<!-- jobhistory如果之前有配置,只需在原配置http加个s变成https即可 -->
<property>
    <name>yarn.log.server.url</name>
    <value>https://192.168.56.43:19888/jobhistory/logs</value>
</property>
 <!-- 这会为YARN守护程序配置HTTP端点。支持以下值: - HTTP_ONLY:仅在http上提供服务 - HTTPS_ONLY:仅在https上提供服务 -->
<property>
    <name>yarn.http.policy</name>
    <value>HTTPS_ONLY</value>
</property>

3、升级后重启resourcemanager,nodemanager,,访问 https://192.168.56.41:8090/cluster

4、如果使用nginx配置域名访问 https://yarn-test.com/cluster
其中域名证书,通过手动签发生成。生成证书
/etc/nginx/cert/tls-yarn.key;
/etc/nginx/cert/tls-yarn.crt;

server {
  listen    443 ssl;
  server_name yarn-test.com;
  location / {
    deny all;
  }
  ssl_certificate      /etc/nginx/cert/tls-yarn.crt;
  ssl_certificate_key  /etc/nginx/cert/tls-yarn.key;
  ssl_session_timeout  5m;
  location /cluster {
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection $connection_upgrade;
    proxy_http_version 1.1;
    proxy_set_header Host yarn-test.com;
    proxy_set_header X-Forwarded-Proto https;
    proxy_set_header X-Forwarded-Port $server_port;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwaeded-Proto https;
    proxy_pass https://yarn-test.com;
  }
  location /static {
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection $connection_upgrade;
    proxy_http_version 1.1;
    proxy_set_header Host yarn-test.com;
    proxy_set_header X-Forwarded-Proto https;
    proxy_set_header X-Forwarded-Port $server_port;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwaeded-Proto https;
    proxy_pass https://yarn-test.com;
  }
  location /proxy {
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection $connection_upgrade;
    proxy_http_version 1.1;
    proxy_set_header Host yarn-test.com;
    proxy_set_header X-Forwarded-Proto https;
    proxy_set_header X-Forwarded-Port $server_port;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwaeded-Proto https;
    proxy_pass https://yarn-test.com;
  }
}
# yarn-resourcemanager服务器,配active那台
upstream yarn-test.com {
   server 192.168.56.41:8090;
}

方案二:开启Hadoop的伪/简单身份验证
1、修改core-site.xml这几个配置

<!-- -->
<property>
    <name>hadoop.security.authorization</name>
    <value>true</value>
</property>
<!-- 定义用于HTTP web控制台的身份验证。支持的值是:simple | kerberos | #AUTHENTICATION_HANDLER_CLASSNAME# -->
<property>
   <name>hadoop.http.authentication.type</name>
   <value>simple</value>
</property>
<!--初始化类 -->
<property>
   <name>hadoop.http.filter.initializers</name>
   <value>org.apache.hadoop.security.AuthenticationFilterInitializer</value>
</property>
<!-- 
    签名秘密文件,用于对身份验证令牌进行签名。
    对于集群中的每个服务,ResourceManager, NameNode, DataNode和NodeManager,可以使用相同的secret。
    这个文件应该只有运行守护进程的Unix用户可以读。 
    -->
<property>
    <name>hadoop.http.authentication.signature.secret.file</name>
    <value>/opt/hadoop/secret/hadoop-http-auth-signature-secret</value>
</property>
<!-- 指示在使用“简单”身份验证时是否允许匿名请求。 -->
<property>
    <name>hadoop.http.authentication.simple.anonymous.allowed</name>
    <value>false</value>
</property>

2、/opt/hadoop/secret/hadoop-http-auth-signature-secret 文件写入
hadoop
3、重启HDFS和YARN
4、在访问路径后面加user.name参数,,如:
http://192.168.56.41:50070?user.name=hadoop
http://192.168.56.41:8088?user.name=hadoop

zookeeper相关漏洞
漏洞一:
端口:2181
协议:TCP
服务:zookeeper
漏洞:
ZooKeeper 未授权访问【原理扫描】
官方建议修复方案:
为ZooKeeper配置相应的访问权限。
方式一:
1)增加一个认证用户
addauth digest 用户名:密码明文
eg. addauth digest user1:password1
2)设置权限
setAcl /path auth:用户名:密码明文:权限
eg. setAcl /test auth:user1:password1:cdrwa
3)查看Acl设置
getAcl /path
方式二:
setAcl /path digest:用户名:密码密文:权限
不接受官方建议修复方案:
1、zkClish.sh进入zookeeper客户端:
执行命令

setAcl / ip:192.168.56.41:cdrwa,ip:192.168.56.42:cdrwa,ip:192.168.56.43:cdrwa

把所有需要的IP都写上。
2、添加后,连接zkCli.sh客户端,执行命令会出现
[zk: localhost:2181(CONNECTED) 0] ls /
Authentication is not valid : /
执行 connect IP 2181 即可
[zk: localhost:2181(CONNECTED) 1] connect 192.168.56.41 2181
[zk: 192.168.56.41(CONNECTED) 2] ls /
[zookeeper]

漏洞二:
端口:8080
协议:TCP
服务:http
Eclipse Jetty 安全漏洞(CVE-2020-27216)
Eclipse Jetty 安全漏洞(CVE-2022-2048)
Eclipse Jetty拒绝服务漏洞(CVE-2020-27223)
Eclipse Jetty信息泄露漏洞(CVE-2020-27218)
远端WWW服务支持TRACE请求
Eclipse Jetty信息泄露漏洞(CVE-2021-28169)
官方建议修复方案:
太多
不接受官方建议修复方案:
zookeeper的8080端口是管理后端(admin)如果要改端口可以
admin.serverPort=8082
修复漏洞,可以选择禁用此端口。
1、修改zookeeper安装目录中的conf/zoo.cfg文件,添加一行:
admin.serverPort=0
2、重新启动Zookeeper服务。没有8080端口。

hive相关漏洞
漏洞一:
端口:10002
协议:TCP
服务:http
漏洞Eclipse Jetty HTTP请求走私漏洞(CVE-2017-7658)
Eclipse Jetty HTTP请求走私漏洞(CVE-2017-7657)
Eclipse Jetty HTTP请求走私漏洞(CVE-2017-7656)
Eclipse Jetty 安全漏洞(CVE-2020-27216)
Eclipse Jetty 输入验证错误漏洞(CVE-2018-12545)
Eclipse Jetty信息泄露漏洞(CVE-2018-12536)
Eclipse Jetty 信息泄露漏洞(CVE-2019-10246)
Eclipse Jetty跨站脚本执行漏洞(CVE-2019-10241)
Eclipse Jetty 信息泄露漏洞(CVE-2019-10247)
官方建议修复方案:
目前厂商已发布升级补丁以修复漏洞,补丁获取链接:
https://bugs.eclipse.org/bugs/show_bug.cgi?id=535669
不接受官方建议修复方案:
1、10002 为hiveserver2的默认端口,webUI页面,没什么用就禁用掉。
默认是10002.写0或者负数就是禁用,
2、hive-site.xml增加配置:

 <property>
 <name>hive.server2.webui.port</name>
 <value>0</value>
<description>The port the HiveServer2 WebUI will listen on. This can beset to 0 or a negative integer to disable the web UI</description>
</property>

3、重启hiveserver2,就没有10002端口了。

————————————————
版权声明:本文为CSDN博主「不会吐丝的蜘蛛侠。」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/manweizhizhuxia/article/details/129809159

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,242评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,769评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,484评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,133评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,007评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,080评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,496评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,190评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,464评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,549评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,330评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,205评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,567评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,889评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,160评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,475评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,650评论 2 335

推荐阅读更多精彩内容