1. 系统级安全基础配置
在配置HDFS安全前,需强化CentOS系统的基础安全,降低集群被攻击的风险:
cat /etc/passwd | awk -F ':' '{print$1,$3}' | grep ' 0$'检测超级用户账户,备份后锁定(passwd -l <用户名>)或删除不必要的账户(如adm、lp)。/etc/login.defs文件,设置PASS_MIN_LEN 10(密码长度≥10位),要求包含大小写字母、数字和特殊字符;使用chattr +i锁定/etc/passwd、/etc/shadow等关键文件,防止未授权修改。/etc/pam.d/su文件,添加auth required pam_wheel.so use_uid,仅允许wheel组成员使用su切换至root。2. Kerberos身份认证配置
Kerberos是HDFS安全的核心认证机制,确保用户身份的真实性:
sudo yum install krb5-server krb5-admin-server krb5-workstation安装组件;编辑/etc/krb5.conf文件,配置领域(default_realm = YOUR.REALM.COM)和KDC信息(kdc = kdc.your.realm.com:88、admin_server = kdc.your.realm.com:749)。sudo systemctl start krb5kdc(KDC服务)和sudo systemctl start kadmind(管理服务器),并设置开机自启。kadmin.local命令添加HDFS主体(addprinc -randkey hdfs/kdc.your.realm.com@YOUR.REALM.COM),并生成密钥表(ktadd -k /etc/krb5kdc/hdfs.keytab hdfs/kdc.your.realm.com),将密钥表复制到所有HDFS节点。3. HDFS特定安全配置
hdfs-site.xml,设置dfs.permissions.enabled=true(默认开启),强制HDFS校验用户权限。hdfs-site.xml中添加dfs.namenode.acls.enabled=true,允许为目录/文件设置更灵活的访问策略(如hdfs dfs -setfacl -m user:alice:rwx /data)。fs.permissions.umask-mode参数调整新创建文件/目录的默认权限(如umask 022对应权限755,umask 007对应770),避免使用777等宽松权限。core-site.xml中的hadoop.ssl.enabled=true,并生成证书(如使用keytool)。hdfs crypto -createKey -keyName myKey;hdfs crypto -createZone -keyName myKey -path /secure_data;hdfs crypto -encrypt -path /user/data -keyName myKey。hdfs dfs -chmod(修改权限)、hdfs dfs -chown(修改所有者)命令设置目录/文件权限,例如将/user目录权限设为755(hdfs dfs -chmod -R 755 /user),所有者设为hadoop(hdfs dfs -chown -R hadoop:hadoop /user)。hdfs dfsadmin -freezeDir /critical_path冻结重要目录,防止误删;开启回收站功能(dfs.namenode.delete.enable=true、dfs.namenode.recycle.bin.enabled=true),保留被删文件7天(默认)。4. 防火墙与网络隔离
使用firewalld或iptables限制对HDFS关键端口(NameNode默认50070、DataNode默认50010)的访问,仅允许受信任的IP地址接入。例如,通过firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port port="50070" protocol="tcp" accept'添加规则,然后firewall-cmd --reload生效。
5. 审计与监控
hdfs-site.xml中设置dfs.audit.logger参数,记录用户操作(如读、写、删除),日志默认存储在$HADOOP_HOME/logs/hadoop-hdfs-audit.log中。6. 数据备份与恢复
hdfs dfs -cp命令备份关键数据(如/user、/data)到异地存储(如另一台服务器或云存储),例如hdfs dfs -cp /user /backup/user。hdfs dfs -put /backup/user /user),确保在数据丢失或损坏时能快速恢复。7. 高级安全增强(可选)
setenforce 1开启SELinux,编辑/etc/selinux/config设置SELINUX=enforcing,并根据HDFS需求定制策略(如允许Hadoop进程访问特定目录)。/public目录),支持审计和策略回溯。