1. 系统基础安全加固
在CentOS系统层面,需先构建底层安全防线。禁用非必要超级用户:检查并锁定或删除无用的超级用户账户(如/etc/passwd中多余的用户),减少潜在攻击入口;强化密码策略:通过修改/etc/login.defs文件,设置密码复杂度(包含大小写字母、数字、特殊字符)、长度(≥10位)及有效期(如90天),强制用户使用强密码;保护关键密码文件:使用chattr +i命令锁定/etc/passwd、/etc/shadow、/etc/group等文件,防止未授权修改;限制su命令使用:编辑/etc/pam.d/su文件,添加auth required pam_wheel.so use_uid,仅允许wheel组的用户使用su切换到root;设置root自动登出:修改/etc/profile中的TMOUT参数(如TMOUT=300),超时后自动注销root会话,避免长时间未锁定的root账户被滥用。
2. 身份认证:Kerberos集成
Kerberos是HDFS安全的核心身份验证机制,确保只有合法用户能访问集群。部署Kerberos服务:在集群所有节点安装Kerberos客户端(yum install krb5-workstation),配置/etc/krb5.conf文件(设置领域default_realm、KDC服务器地址等);配置KDC:编辑/var/kerberos/krb5kdc/kdc.conf,定义领域参数(如max_life、max_renewable_life),并创建principal(如hdfs/_HOST@EXAMPLE.COM);获取Kerberos票据:用户通过kinit username命令获取TGT(Ticket Granting Ticket),后续访问HDFS时需提供该票据;配置Hadoop使用Kerberos:修改core-site.xml(启用Kerberos认证:hadoop.security.authentication=kerberos)、hdfs-site.xml(指定KDC地址:dfs.namenode.kerberos.principal),重启HDFS使配置生效。
3. 访问控制:精细化权限管理
通过多层级权限机制限制数据访问,防止未授权操作。启用权限检查:修改hdfs-site.xml中的dfs.permissions.enabled=true(默认开启),强制HDFS对文件操作进行权限校验;开启ACL支持:设置dfs.namenode.acls.enabled=true,允许为特定用户或组设置额外权限(如hdfs dfs -setfacl -m user:alice:rwx /data/project);配置POSIX权限:使用chmod(如chmod 750 /data/dir)、chown(如chown hdfs:hadoop /data/dir)命令设置文件/目录的所有者、组及权限,遵循最小权限原则;权限继承:设置dfs.namenode.posix.acl.inheritance.enabled=true(默认开启),子目录/文件自动继承父目录的默认ACL,简化权限管理。
4. 数据加密:传输与存储双重保护
加密是防止数据泄露的关键手段,需覆盖传输和存储两个环节。传输层加密(SSL/TLS):修改core-site.xml,设置hadoop.security.encryption.key.provider.path(如hdfs:///etc/hadoop/conf/encryption.key)、hadoop.security.encryption.region.size(加密块大小,如10MB);修改hdfs-site.xml,启用数据传输加密(dfs.encrypt.data.transfer=true)、指定加密算法(dfs.encrypt.data.transfer.algorithm=AES_CBC)、密钥长度(dfs.encrypt.data.transfer.key.length=256),确保节点间数据传输安全;静态数据加密(透明加密):通过HDFS加密区域(Encryption Zones)实现,首先创建加密密钥(hdfs crypto -createKey -keyName myKey),然后创建加密区域(hdfs crypto -createZone -keyName myKey -path /data/encrypted),后续写入该区域的文件会自动加密,读取时自动解密,无需修改应用程序。
5. 审计与监控:追溯与预警
审计和监控是发现安全事件的重要途径,需记录所有操作并实时预警。启用审计日志:修改core-site.xml,设置审计日志路径(hadoop.security.audit.log.path=/var/log/hadoop-hdfs/audit.log)、最大大小(hadoop.security.audit.log.maxsize=100MB)、备份数量(hadoop.security.audit.log.maxbackupindex=10),记录所有用户操作(如ls、put、delete)及时间戳;实时监控系统:使用rsyslog或systemd-journald收集HDFS日志(/var/log/hadoop-hdfs/*.log),部署监控系统(如Prometheus+Granafa)监控集群状态(NameNode内存、DataNode磁盘使用率),设置告警规则(如磁盘空间超过80%时发送邮件通知);入侵检测:部署IDS(如Snort)监控网络流量,识别异常行为(如大量失败的登录尝试),及时响应潜在攻击。
6. 网络安全:防火墙隔离
通过防火墙限制对HDFS服务的访问,减少暴露面。配置防火墙规则:使用firewalld或iptables,仅开放HDFS关键端口(NameNode默认端口:8020/9000,DataNode默认端口:50010/50020),拒绝其他端口的入站请求(如firewall-cmd --permanent --add-port=8020/tcp、firewall-cmd --reload);限制NFS访问:若使用NFS共享HDFS数据,编辑/etc/exports文件,设置严格的访问权限(如/data 192.168.1.0/24(rw,sync,no_root_squash)),仅允许受信任的IP地址访问。
7. 备份与恢复:数据容灾
定期备份HDFS数据,应对硬件故障或数据丢失。制定备份策略:使用hdfs dfsadmin -saveNamespace命令定期保存NameNode元数据(如每天凌晨2点),将备份存储在异地(如另一台服务器或云存储);数据备份:使用hdfs dfs -cp命令备份重要目录(如hdfs dfs -cp /data/project /backup/project),或使用第三方工具(如DistCp)进行跨集群备份;备份验证:定期测试备份数据的可恢复性(如从备份中恢复一个文件到测试目录,验证内容是否正确)。
8. 其他增强措施
精简超级用户:清理不必要的超级用户账户(如测试账户),仅保留必需的超级用户(如hdfs),降低超级用户权限滥用的风险;SELinux启用:激活SELinux(setenforce 1),并根据HDFS需求定制安全策略(如semanage fcontext -a -t hadoop_hdfs_t "/data/encrypted(/.*)?"),提升系统整体安全性;禁用不必要的服务:通过systemctl disable命令禁用CentOS中不需要的服务(如FTP、Telnet),减少潜在的攻击面。