温馨提示×

HBase与CentOS的安全设置

小樊
45
2025-10-28 13:44:23
栏目: 智能运维

HBase与CentOS安全设置指南

一、CentOS系统级安全基础

1. 系统更新与补丁管理

定期通过sudo yum update命令更新CentOS系统及所有已安装软件包,及时修补已知安全漏洞,降低被攻击风险。

2. 防火墙配置

使用firewalld(CentOS默认防火墙)限制对HBase相关端口的访问,仅允许可信IP地址连接。例如:

# 允许SSH(22端口)、HBase Master(16000)、RegionServer(16020)等端口
sudo firewall-cmd --permanent --zone=public --add-service=ssh
sudo firewall-cmd --permanent --zone=public --add-port=16000/tcp
sudo firewall-cmd --permanent --zone=public --add-port=16020/tcp
# 重新加载防火墙规则
sudo firewall-cmd --reload

3. 用户与口令策略

  • 禁用空口令与root直接登录:通过awk -F: '($2=="")' /etc/shadow检查空口令账号,使用passwd <用户名>设置密码;修改/etc/ssh/sshd_config,将PermitRootLogin yes改为PermitRootLogin no,禁止root用户直接SSH登录。
  • 设置强口令复杂度:编辑/etc/pam.d/system-auth,添加password requisite pam_pwquality.so try_first_pass local_users_only retry=3 minlen=14 lcredit=-1 ucredit=-1 dcredit=-1 ocredit=-1 enforce_for_root,要求密码长度≥14位,包含大小写字母、数字和特殊字符。
  • 限制su权限:编辑/etc/pam.d/su,添加auth required pam_wheel.so group=admin,仅允许admin组用户使用su切换到root。

4. SELinux配置

若无需SELinux的强制访问控制,可将其设为disabled(需重启系统):

sudo sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
sudo reboot

二、HBase特有安全配置

1. 启用Kerberos认证

Kerberos是HBase安全的核心认证机制,需完成以下步骤:

  • 安装Kerberos客户端sudo yum install krb5-workstation krb5-libs
  • 配置Kerberos客户端:编辑/etc/krb5.conf,添加Realm和KDC信息(替换YOUR-REALM.COMkdc.yourdomain.com):
    [libdefaults]
        default_realm = YOUR-REALM.COM
    [realms]
        YOUR-REALM.COM = {
            kdc = kdc.yourdomain.com:88
            admin_server = kdc.yourdomain.com:749
        }
    [domain_realm]
        .yourdomain.com = YOUR-REALM.COM
        yourdomain.com = YOUR-REALM.COM
    
  • 创建HBase Principal与Keytab:使用kadmin.local工具创建HBase服务的Principal(hbase/_HOST@YOUR-REALM.COM),并导出Keytab文件:
    kadmin.local -q "addprinc -randkey hbase/_HOST@YOUR-REALM.COM"
    kadmin.local -q "ktadd -k /etc/security/keytabs/hbase.service.keytab hbase/_HOST@YOUR-REALM.COM"
    chmod 600 /etc/security/keytabs/hbase.service.keytab  # 限制Keytab文件权限
    

2. 配置HBase安全参数

编辑/etc/hbase/conf/hbase-site.xml,启用认证、授权及Kerberos:

<property>
    <name>hbase.security.authentication</name>
    <value>kerberos</value>
</property>
<property>
    <name>hbase.security.authorization</name>
    <value>true</value>
</property>
<property>
    <name>hbase.master.kerberos.principal</name>
    <value>hbase/_HOST@YOUR-REALM.COM</value>
</property>
<property>
    <name>hbase.regionserver.kerberos.principal</name>
    <value>hbase/_HOST@YOUR-REALM.COM</value>
</property>
<property>
    <name>hbase.coprocessor.master.classes</name>
    <value>org.apache.hadoop.hbase.security.access.AccessController</value>
</property>
<property>
    <name>hbase.coprocessor.region.classes</name>
    <value>org.apache.hadoop.hbase.security.access.AccessController</value>
</property>

重启HBase服务使配置生效:

sudo systemctl restart hbase-master
sudo systemctl restart hbase-regionserver

3. 访问控制列表(ACL)

通过HBase Shell或API设置细粒度的表级权限:

  • Shell命令示例
    # 授权用户user1对table1的读权限
    hbase> grant 'user1', 'R', 'table1'
    # 授权用户user2对table2的读写权限
    hbase> grant 'user2', 'RW', 'table2'
    # 撤销用户user1对table1的权限
    hbase> revoke 'user1', 'R', 'table1'
    
  • API示例(Java):
    Configuration conf = HBaseConfiguration.create();
    Connection connection = ConnectionFactory.createConnection(conf);
    Admin admin = connection.getAdmin();
    AccessControlList acl = new AccessControlList("table2");
    acl.addPermission(new Permission(TableName.valueOf("table2"), "user2", "RW"));
    admin.setAccessControlList(acl, "default");
    admin.close();
    connection.close();
    

4. 数据加密

  • 传输加密(SSL/TLS):为HBase客户端与服务端之间的通信配置SSL证书,编辑hbase-site.xml
    <property>
        <name>hbase.ssl.enabled</name>
        <value>true</value>
    </property>
    <property>
        <name>hbase.ssl.keystore.path</name>
        <value>/path/to/keystore.jks</value>
    </property>
    <property>
        <name>hbase.ssl.keystore.password</name>
        <value>your_keystore_password</value>
    </property>
    
  • 存储加密(TDE):启用HBase透明数据加密,保护数据在磁盘上的安全(需HBase 1.1+版本),配置hbase-site.xml
    <property>
        <name>hbase.regionserver.thrift.http.ssl.enabled</name>
        <value>true</value>
    </property>
    <property>
        <name>hbase.coprocessor.region.classes</name>
        <value>org.apache.hadoop.hbase.security.token.TokenAuthenticationProvider</value>
    </property>
    

5. 日志审计

启用HBase审计日志,记录用户操作(如读、写、授权),便于事后追溯。编辑hbase-site.xml

<property>
    <name>hbase.security.audit.log.enabled</name>
    <value>true</value>
</property>
<property>
    <name>hbase.security.audit.log.file</name>
    <value>/var/log/hbase/audit.log</value>
</property>
<property>
    <name>hbase.security.audit.log.maxfilesize</name>
    <value>1073741824</value> <!-- 1GB -->
</property>
<property>
    <name>hbase.security.audit.log.maxbackupindex</name>
    <value>10</value>
</property>

确保/var/log/hbase目录权限正确(chown -R hbase:hbase /var/log/hbase),避免日志被篡改。

三、其他安全措施

1. 定期备份

定期备份HBase数据(如使用hbase snapshot命令)及配置文件(hbase-site.xmlkrb5.conf),存储到异地或云存储,防止数据丢失。

2. 监控与告警

使用Prometheus+Granafa监控HBase集群状态(如RegionServer内存、请求延迟),设置异常告警(如认证失败次数激增),及时发现安全威胁。

通过以上步骤,可实现CentOS系统与HBase的全面安全防护,覆盖认证、授权、加密、审计等关键环节,保障数据的安全性与完整性。

0