怎样确保Ubuntu HDFS配置安全
小樊
41
2025-12-08 22:05:58
Ubuntu 上 HDFS 安全配置清单
一 身份与传输安全
- 启用 Kerberos 强认证:在 Ubuntu 安装 Kerberos 客户端(如包 krb5-user),配置 /etc/krb5.conf 的 default_realm 等;在 Hadoop 配置中将 hadoop.security.authentication=kerberos,并为 NameNode/DataNode 等设置主体(例如 dfs.namenode.kerberos.principal=nn/_HOST@EXAMPLE.COM),完成后用 kinit 获取票据验证。
- 启用 TLS/SSL 传输加密:为 HDFS RPC、HTTP(WebHDFS/HTTPS) 等启用 SSL/TLS,确保客户端与服务端、服务与服务之间的数据传输机密性与完整性。
- 加固节点间通信:仅开放必要端口,使用 SASL 保护 RPC 与 DataTransferProtocol,并限制管理端口的暴露面。
二 访问控制与权限模型
- 启用权限检查:在 hdfs-site.xml 设置 dfs.permissions.enabled=true,确保基于用户/组/其他的 POSIX 权限生效。
- 合理设置 umask:通过 fs.permissions.umask-mode 控制新建文件/目录的默认权限,遵循最小权限原则。
- 使用 ACL 做细粒度授权:对敏感目录设置用户/组额外权限,如:
- 设置 ACL:hdfs dfs -setfacl -m user:alice:rwx /data/sensitive
- 查看 ACL:hdfs dfs -getfacl /data/sensitive
- 目录与粘滞位:对共享目录(如 /user)设置 1777(含 sticky bit),防止非拥有者删除他人文件。
- 超级用户与最小权限:默认 HDFS 超级用户为 hdfs,仅授予必要人员 sudo/hdfs 权限,日常业务以最小权限运行。
三 加密与数据保护
- 传输加密:全链路启用 SSL/TLS,覆盖 RPC、HTTP/HTTPS 与管理接口。
- 存储加密:启用 透明数据加密(TDE) 对落盘数据进行加密,读取时透明解密,降低介质泄露风险。
- 数据完整性与备份:启用 校验和 校验(如 MD5/SHA-1)保障传输/存储完整性;制定并实施 定期备份与异地容灾 策略,定期演练恢复流程。
四 网络安全与主机加固
- 边界与主机防火墙:使用 ufw 仅放行 SSH(22)、NameNode RPC(8020/9000 等)、DataNode 数据端口(50010/50020)、JournalNode(8485)、HTTPS(9871) 等必要端口,默认拒绝其他入站。
- 服务最小化暴露:将 WebHDFS/HTTP 绑定到内网地址或管理网段,必要时通过反向代理与鉴权网关接入。
- SSH 安全:禁用 root 登录、使用 密钥登录、限制可登录用户与来源网段。
- 强制访问控制:启用 AppArmor(Ubuntu 默认),按需配置 SELinux 策略,限制 NameNode/DataNode/JVM 等进程的访问面。
五 审计监控与运维
- 启用审计日志:在 core-site.xml 配置审计日志路径与滚动策略,例如:
- hadoop.security.audit.log.path=/var/log/hadoop-hdfs/audit.log
- hadoop.security.audit.log.maxsize=1000000
- hadoop.security.audit.log.maxbackupindex=10
集中采集并长期保留审计日志,用于合规与溯源。
- 监控与告警:对 NameNode/DataNode 进程、安全模式、块报告、异常访问 等建立监控与阈值告警,及时发现入侵与异常。
- 补丁与配置基线:使用 unattended-upgrades 自动安装安全补丁;统一 JDK/OS/Hadoop 版本与配置基线,定期核查 superuser 列表与 ACL 变更。
- 快速核查命令示例:
- 查看目录权限与属主:hdfs dfs -ls -d /user/hive/warehouse
- 设置目录权限:hdfs dfs -chmod 770 /user/hive/warehouse
- 配置 ACL:hdfs dfs -setfacl -m user:bob:rwx /user/hive/warehouse
- 查看 ACL:hdfs dfs -getfacl /user/hive/warehouse
- 检查安全模式:hdfs dfsadmin -safemode get
以上有助于快速验证权限、ACL 与安全状态。