Ubuntu HDFS配置安全设置
导读:Ubuntu 上 HDFS 安全配置实操指南 一 前置准备与基础加固 主机与解析:为所有节点配置静态主机名与**/etc/hosts**,主机名建议使用小写,避免集成 Kerberos 时出错。 时间同步:部署 NTP 保证集群时钟同步(...
Ubuntu 上 HDFS 安全配置实操指南
一 前置准备与基础加固
- 主机与解析:为所有节点配置静态主机名与**/etc/hosts**,主机名建议使用小写,避免集成 Kerberos 时出错。
- 时间同步:部署 NTP 保证集群时钟同步(Kerberos 对时间敏感)。
- 防火墙:使用 ufw 仅放行必要端口(如 8020/9000、50070/9870、50075、50010、22),最小化暴露面。
- 系统加固:启用 AppArmor,强化 SSH(禁用 root 登录、限制可登录用户、改端口),并保持系统与安全补丁及时更新(如 unattended-upgrades)。
- 账号与目录:为 Hadoop 服务创建专用系统用户(如 hdfs),数据与日志目录设置最小权限与属主。
二 启用 Kerberos 身份认证
- 安装与配置 KDC(MIT Kerberos)
- 安装:sudo apt-get install -y krb5-kdc krb5-admin-server krb5-user。
- 配置 /etc/krb5.conf(示例):
- [libdefaults] 中设定 default_realm,如 EXAMPLE.COM;设置 ticket_lifetime / renew_lifetime(如 24h/7d)、forwardable=true、合理的 clockskew。
- [realms] 指定 kdc 与 admin_server 主机名(FQDN)。
- 初始化数据库:sudo kdb5_util create -r EXAMPLE.COM -s;编辑 /var/lib/krb5kdc/kadm5.acl 授予管理员权限(如 ***/admin@EXAMPLE.COM ***)。
- 启动服务:sudo systemctl enable --now krb5-kdc kadmind。
- 创建主体与导出 keytab
- 服务主体(每个节点):kadmin.local -q “addprinc -randkey hdfs/$(hostname -f)@EXAMPLE.COM”;kadmin.local -q “addprinc -randkey HTTP/$(hostname -f)@EXAMPLE.COM”。
- 导出 keytab(权限 600,属主 hdfs):kadmin.local -q “ktadd -k /etc/security/keytabs/hdfs.keytab hdfs/$(hostname -f)@EXAMPLE.COM”;kadmin.local -q “ktadd -k /etc/security/keytabs/spnego.keytab HTTP/$(hostname -f)@EXAMPLE.COM”。
- Hadoop 启用 Kerberos
- core-site.xml:
- hadoop.security.authenticationkerberos
- hadoop.security.authorizationtrue
- hdfs-site.xml(示例,按节点替换 _HOST 为 FQDN):
- dfs.namenode.kerberos.principal:hdfs/_HOST@EXAMPLE.COM;dfs.namenode.keytab.file:/etc/security/keytabs/hdfs.keytab
- dfs.datanode.kerberos.principal:hdfs/_HOST@EXAMPLE.COM;dfs.datanode.keytab.file:/etc/security/keytabs/hdfs.keytab
- dfs.namenode.http-authentication.kerberos.principal:HTTP/_HOST@EXAMPLE.COM;dfs.namenode.http-authentication.kerberos.keytab:/etc/security/keytabs/spnego.keytab
- dfs.web.authentication.kerberos.principal:HTTP/_HOST@EXAMPLE.COM;dfs.web.authentication.kerberos.keytab:/etc/security/keytabs/spnego.keytab
- 分发 keytab 与 krb5.conf 到所有节点,统一 /etc/krb5.conf。
- core-site.xml:
- 启动与验证
- 使用 hdfs 用户重启 HDFS:stop-dfs.sh & & start-dfs.sh。
- 客户端获取票据:kinit hdfs/NN_FQDN@EXAMPLE.COM 或 kinit -kt /path/hdfs.keytab hdfs/NN_FQDN@EXAMPLE.COM;klist 查看票据;用 hdfs dfs -ls / 验证访问。
三 授权与访问控制
- 文件系统权限与属主
- 建议:hdfs dfs -chown hdfs:hadoop /;hdfs dfs -chmod 755 /;为用户家目录:hdfs dfs -mkdir -p /user/;hdfs dfs -chown : /user/;hdfs dfs -chmod 700 /user/。
- 启用 HDFS ACL(细粒度授权)
- 在 hdfs-site.xml 启用:dfs.namenode.acls.enabled true。
- 示例:hdfs dfs -setfacl -m user:alice:r-x /data;hdfs dfs -setfacl -m group:dev:rwx /data;hdfs dfs -getfacl /data。
- 启用服务级授权(可选)
- 在 hdfs-site.xml 开启 dfs.permissions.enabled true(默认开启),并配置 dfs.permissions.superusergroup(如 hadoop)。
四 加密与数据保护
- 传输加密(RPC/HTTP)
- 启用 SASL 与 HTTPS:在 hdfs-site.xml 设置 dfs.http.policy HTTPS_ONLY;为 NameNode/DataNode/JournalNode 配置 SSL/TLS(证书、密钥、信任库),并开放 9870/9864/9866/9867 等 HTTPS 端口。
- 透明数据加密(TDE)
- 创建加密区域:hdfs crypto -createZone -keyName myKey -path /secure。
- 使用加密区域:hdfs dfs -mkdir /secure/project;hdfs crypto -listZones;如需迁移数据,先 put 到加密区或按官方流程导入。
- 数据完整性与备份
- HDFS 自身通过校验和保障块完整性;关键数据建议定期备份与异地容灾,并制定恢复演练计划。
五 审计监控与运维安全
- 审计与日志
- 启用 HDFS 审计日志(AccessAudit),集中到 Ranger/Solr/ELK 做留存与检索;NameNode/DataNode 日志与 audit log 设置合适的保留周期与访问控制。
- 监控与告警
- 监控关键指标(如 BlockMissing、UnderReplicatedBlocks、FailedVolumes、NameNode RPC latency),对异常(如权限突变、频繁 403/401、异常访问源)配置告警。
- 安全运维
- 定期轮换 keytab 与 Kerberos 密码;限制 keytab 分发范围;为运维操作使用最小权限与跳板机;变更前后进行配置审计与回归测试。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Ubuntu HDFS配置安全设置
本文地址: https://pptw.com/jishu/771814.html
