Hadoop在Ubuntu上的安全设置指南
为隔离Hadoop进程与系统其他用户,需创建专用用户和组。执行以下命令:
sudo groupadd hadoop # 创建hadoop用户组
sudo useradd -r -g hadoop hadoop # 创建系统用户hadoop并加入该组
sudo passwd hadoop # 设置hadoop用户密码(可选但建议)
将Hadoop安装目录(如/usr/local/hadoop)的所有权赋予该用户,确保其有足够权限管理Hadoop服务:
sudo chown -R hadoop:hadoop /usr/local/hadoop
Hadoop集群节点间需通过SSH通信,无密码登录可避免手动输入密码的麻烦及潜在泄露风险。
ssh-keygen -t rsa -P '' # 生成无密码RSA密钥对(默认保存在~/.ssh/)
authorized_keys文件,实现本地无密码登录:cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys # 限制文件权限,仅所有者可读写
ssh localhost,若无需密码即可登录,则配置成功。编辑hadoop-env.sh文件(位于$HADOOP_HOME/etc/hadoop/目录),设置Java环境变量(需替换为实际Java路径):
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64 # Ubuntu常用OpenJDK路径
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
使环境变量生效:source $HADOOP_HOME/etc/hadoop/hadoop-env.sh。
使用ufw(Uncomplicated Firewall)限制访问,仅开放Hadoop必需端口,拒绝非法访问。
sudo ufw allow 9000/tcp # NameNode默认RPC端口
sudo ufw allow 50070/tcp # NameNode Web UI端口
sudo ufw allow 50010/tcp # DataNode数据传输端口
sudo ufw allow 50020/tcp # DataNode IPC端口
sudo ufw deny 23
sudo ufw deny 135
sudo ufw deny 137
sudo ufw deny 138
sudo ufw deny 139
sudo ufw deny 445
192.168.1.0/24)访问关键端口:sudo ufw default deny incoming
sudo ufw allow from 192.168.1.0/24 to any port 9000
sudo ufw enable # 启用防火墙
Kerberos是Hadoop默认的安全认证机制,可实现强身份验证,防止未授权访问。
sudo apt-get install krb5-user
/etc/krb5.conf文件,设置KDC(Key Distribution Center)和Realm(领域)信息(需根据实际Kerberos服务器调整)。kinit hadoop@YOUR-REALM.COM # 输入密码获取TGT
klist # 查看票据是否有效
core-site.xml、hdfs-site.xml等文件,添加Kerberos相关参数(如hadoop.security.authentication=kerberos)。通过HDFS权限和第三方工具实现数据访问的细粒度控制。
hdfs dfs命令修改文件/目录权限(如750表示所有者可读写执行,组用户可读执行,其他用户无权限):hdfs dfs -mkdir -p /user/hadoop
hdfs dfs -chown hadoop:hadoop /user/hadoop
hdfs dfs -chmod 750 /user/hadoop
保护数据在传输和存储过程中的安全,防止泄露。
core-site.xml中的hadoop.ssl.enabled为true,并指定证书路径。hdfs-site.xml中的hadoop.hdfs.encryption.zone参数,指定加密目录。记录用户对Hadoop集群的操作,便于事后追溯和问题排查。
log4j.properties文件(位于$HADOOP_HOME/etc/hadoop/目录),开启审计日志记录。例如,添加以下内容:log4j.logger.org.apache.hadoop.security=INFO, audit
log4j.additivity.org.apache.hadoop.security=false
log4j.appender.audit=org.apache.log4j.RollingFileAppender
log4j.appender.audit.File=${hadoop.log.dir}/audit.log
log4j.appender.audit.MaxFileSize=100MB
log4j.appender.audit.MaxBackupIndex=10
log4j.appender.audit.layout=org.apache.log4j.PatternLayout
log4j.appender.audit.layout.ConversionPattern=%d{ISO8601} %p %c{2}:%L - %m%n
$HADOOP_HOME/logs/audit.log,可通过tail -f命令实时查看。保持Hadoop及相关组件(如Java、SSH)为最新版本,及时修复已知安全漏洞。
sudo apt update && sudo apt upgrade -y
将Hadoop集群部署在内网环境,限制外部直接访问;使用监控工具(如Zabbix、Prometheus)监控集群状态,及时发现异常行为。
tcpdump或Wireshark监控集群网络流量,检测异常连接或数据传输。