版权声明:本文为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