Hadoop在Linux上的安全设置指南
yum update(CentOS)或apt upgrade(Ubuntu)更新Linux内核、Hadoop组件及依赖软件,及时修补已知安全漏洞。systemctl list-unit-files --type=service查看运行中的服务,停止并禁用无关服务(如FTP、Telnet),减少攻击面。passwd命令强制用户设置包含大小写字母、数字和特殊字符的复杂密码;或配置PAM模块(如pam_pwquality.so)限制密码长度、复杂度及重复使用次数。ssh-keygen -t rsa生成密钥对,默认保存在~/.ssh/id_rsa(私钥)和~/.ssh/id_rsa.pub(公钥)。ssh-copy-id hadoop@datanode1(hadoop为集群通用用户),实现主节点到其他节点的无密码SSH登录。/etc/ssh/sshd_config文件,设置PermitRootLogin no(禁止root远程登录)、Port 2222(更改默认SSH端口,避免暴力破解)、PasswordAuthentication no(禁用密码登录,仅允许密钥认证),修改后重启SSH服务:systemctl restart sshd。hadoop),并设置密码:useradd -m -s /bin/bash hadoop;通过chown -R hadoop:hadoop /opt/hadoop将Hadoop安装目录的所有权赋予该用户,避免使用root用户运行Hadoop服务。chmod、chown)限制用户对Hadoop关键目录(如/opt/hadoop/logs、/data/hdfs)的访问;若集成LDAP/Active Directory,可通过hadoop.security.authentication参数配置Hadoop使用LDAP进行统一身份认证。krb5-server和krb5-libs软件包;在Hadoop节点上安装krb5-workstation。/etc/krb5.conf文件,设置default_realm(如EXAMPLE.COM)、kdc(KDC服务器地址)和admin_server(KDC管理服务器地址);创建Kerberos数据库:kdb5_util create -s(-s表示创建stash文件存储master key)。kadmin.local: addprinc -randkey hdfs/namenode.example.com(服务Principal)、kadmin.local: addprinc hadoopuser(用户Principal);导出keytab文件:kadmin.local: ktadd -k /etc/security/keytabs/hdfs.keytab hdfs/namenode.example.com。core-site.xml、hdfs-site.xml、yarn-site.xml),添加Kerberos相关参数(如hadoop.security.authentication=kerberos、hadoop.security.authorization=true);启动Hadoop服务前,使用kinit命令获取Kerberos票据:kinit -kt /etc/security/keytabs/hdfs.keytab hdfs/namenode.example.com。hadoop.security.group.mapping.ldap.url参数配置Hadoop连接LDAP服务器,实现用户和组的统一管理。keytool -genkeypair -alias hdfs -keyalg RSA -keystore hdfs.keystore;导出证书:keytool -exportcert -alias hdfs -file hdfs.cer -keystore hdfs.keystore;将证书导入所有节点的信任库:keytool -importcert -alias hdfs -file hdfs.cer -keystore truststore;修改core-site.xml,设置hadoop.ssl.enabled=true、hadoop.ssl.keystores.factory.class=org.apache.hadoop.security.ssl.FileBasedKeyStoresFactory、hadoop.ssl.server.conf=ssl-server.xml(需创建ssl-server.xml配置证书路径)。hdfs crypto -createZone -keyName mykey -path /encrypted_data(mykey为KMS中预先创建的加密密钥);后续写入/encrypted_data目录的文件将自动加密,读取时需解密。firewalld或iptables限制对Hadoop服务的访问。例如,允许NameNode的RPC端口(默认8020)、YARN的ResourceManager端口(默认8032)、HDFS的Web UI端口(默认9870):firewall-cmd --permanent --add-port=8020/tcp、firewall-cmd --permanent --add-port=8032/tcp、firewall-cmd --permanent --add-port=9870/tcp;然后重新加载防火墙规则:firewall-cmd --reload。iptables设置访问控制规则:iptables -A INPUT -s 192.168.1.0/24 -p tcp --dport 2222 -j ACCEPT(允许192.168.1.0/24网段访问SSH)。log4j.properties文件(位于$HADOOP_HOME/etc/hadoop/),增加审计日志配置,例如log4j.logger.org.apache.hadoop.security=INFO, audit;或在core-site.xml中设置hadoop.security.audit.logger参数,记录用户操作(如文件读写、权限变更、服务启动/停止)。hadoop distcp命令定期备份HDFS中的关键数据到异地存储(如S3、NAS);测试备份数据的恢复流程,确保在数据丢失或损坏时能快速恢复。