HBase与CentOS的安全设置
导读:HBase与CentOS安全设置指南 一、CentOS系统级安全基础 1. 系统更新与补丁管理 定期通过sudo yum update命令更新CentOS系统及所有已安装软件包,及时修补已知安全漏洞,降低被攻击风险。 2. 防火墙配置 使用...
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.COM、kdc.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.xml、krb5.conf),存储到异地或云存储,防止数据丢失。
2. 监控与告警
使用Prometheus+Granafa监控HBase集群状态(如RegionServer内存、请求延迟),设置异常告警(如认证失败次数激增),及时发现安全威胁。
通过以上步骤,可实现CentOS系统与HBase的全面安全防护,覆盖认证、授权、加密、审计等关键环节,保障数据的安全性与完整性。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: HBase与CentOS的安全设置
本文地址: https://pptw.com/jishu/737153.html
