centos kafka安全设置
导读:CentOS环境下Kafka安全设置指南 在CentOS上部署Kafka时,需通过认证、加密、授权、网络隔离及监控等多层措施保障集群安全。以下是具体实施步骤: 一、账户与系统级安全加固 禁用多余超级用户:通过/etc/passwd排查id...
CentOS环境下Kafka安全设置指南
在CentOS上部署Kafka时,需通过认证、加密、授权、网络隔离及监控等多层措施保障集群安全。以下是具体实施步骤:
一、账户与系统级安全加固
- 禁用多余超级用户:通过
/etc/passwd
排查id=0
的账户(除root外),使用passwd -l < 用户名>
锁定无用超级账户,或将其shell改为/sbin/nologin
(如usermod -s /sbin/nologin testuser
),防止未授权root访问。 - 强化口令策略:要求用户口令包含大小写字母、数字、特殊字符中的至少三种,长度大于10位(可通过
authconfig --passminlen=10 --passcomplexity=1 --update
设置)。使用chattr +i /etc/shadow
锁定口令文件,防止篡改。
二、认证配置(SASL/SSL)
1. SASL认证(用户名/密码或Kerberos)
-
SCRAM-SHA-256机制(推荐):
- 创建用户凭证:通过
kafka-configs.sh
添加用户及SCRAM密码(如kafka-configs.sh --zookeeper localhost:2181 --entity-type users --entity-name kafka-user --alter --add-config SCRAM-SHA-256=[iterations=8192,password=test123]
)。 - 配置JAAS文件(
/etc/kafka/kafka_server_jaas.conf
):指定SCRAM登录模块及用户信息(如KafkaServer { org.apache.kafka.common.security.scram.ScramLoginModule required username="kafka-user" password="test123"; } ;
)。 - 修改
server.properties
:启用SASL,指定机制及JAAS文件路径(如security.inter.broker.protocol=SASL_SSL
、sasl.enabled.mechanisms=SCRAM-SHA-256
、sasl.mechanism.inter.broker.protocol=SCRAM-SHA-256
、sasl.jaas.config=file:/etc/kafka/kafka_server_jaas.conf
)。
- 创建用户凭证:通过
-
PLAIN机制(测试用,不推荐生产):
JAAS文件配置示例:KafkaServer { org.apache.kafka.common.security.plain.PlainLoginModule required username="admin" password="admin-secret" user_admin="admin-secret"; } ;
,server.properties
中设置sasl.mechanism.inter.broker.protocol=PLAIN
。
2. SSL/TLS加密(传输层安全)
- 生成证书:使用OpenSSL创建密钥库(JKS)和信任库(如
keytool -genkey -alias kafka-server -keystore kafka.server.keystore.jks -storepass kafka123 -validity 365 -keysize 2048
;导出证书并导入信任库:keytool -export -alias kafka-server -file kafka.server.crt -keystore kafka.server.keystore.jks -storepass kafka123
;keytool -import -alias kafka-server -file kafka.server.crt -keystore kafka.server.truststore.jks -storepass kafka123
)。 - 配置SSL参数:在
server.properties
中启用SSL,指定证书路径及密码(如listeners=SSL://:9093
、ssl.keystore.location=/etc/kafka/kafka.server.keystore.jks
、ssl.keystore.password=kafka123
、ssl.truststore.location=/etc/kafka/kafka.server.truststore.jks
、ssl.truststore.password=kafka123
、ssl.enabled.protocols=TLSv1.2
、ssl.cipher.suites=TLS_AES_128_GCM_SHA256,TLS_AES_256_GCM_SHA384
)。
三、授权控制(ACL)
- 启用ACL:修改
server.properties
,设置授权器为AclAuthorizer
,禁止无ACL时的全局访问(如authorizer.class.name=kafka.security.authorizer.AclAuthorizer
、allow.everyone.if.no.acl.found=false
)。 - 创建用户与组:使用
kafka-configs.sh
添加用户(如kafka-configs.sh --zookeeper localhost:2181 --entity-type users --entity-name user1 --alter --add-config SCRAM-SHA-256=[password=test123]
);创建用户组并添加成员(如kafka-configs.sh --zookeeper localhost:2181 --entity-type groups --entity-name group1 --alter --add-config Members=user1,user2
)。 - 配置ACL规则:通过
kafka-acls.sh
定义权限(如允许user1
向topic1
生产消息:kafka-acls.sh --authorizer-properties zookeeper.connect=localhost:2181 --add --allow-principal User:user1 --operation Produce --topic topic1
;允许group1
从topic1
消费消息:kafka-acls.sh --authorizer-properties zookeeper.connect=localhost:2181 --add --allow-principal Group:group1 --operation Consume --topic topic1
)。
四、网络隔离与防火墙
- 配置防火墙:使用
firewall-cmd
开放Kafka端口(默认9092用于SASL_PLAINTEXT,9093用于SSL;若使用Zookeeper,需开放2181端口),并限制访问源(如firewall-cmd --permanent --zone=public --add-port=9093/tcp
;firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port port="9093" protocol="tcp" accept'
;firewall-cmd --reload
)。 - 限制访问IP:在
server.properties
中配置listeners
为具体IP(如listeners=SASL_SSL://192.168.1.100:9093
),而非0.0.0.0
,避免暴露给无关网络。
五、审计与监控
- 启用审计日志:在
server.properties
中配置日志路径(如log.dirs=/var/log/kafka
),通过log4j.properties
调整日志级别(如log4j.logger.kafka.authorizer.logger=WARN
),记录用户访问、权限变更等活动。 - 定期检查日志:使用
grep
、awk
等工具分析日志(如grep "Unauthorized" /var/log/kafka/server.log
),及时发现未授权访问尝试。
六、其他安全最佳实践
- 禁用不必要的服务:关闭SELinux(
setenforce 0
)或调整其策略(如setsebool -P kafka_connect_any 0
);避免使用默认的Zookeeper端口(2181),修改为非标准端口。 - 定期更新与备份:升级Kafka至最新稳定版(如
yum update kafka
),修复已知漏洞;定期备份/var/lib/kafka
数据目录(如使用rsync
或tar
),防止数据丢失。 - 资源限制:修改
/etc/security/limits.conf
,增加Kafka进程的文件描述符(如kafka hard nofile 65536
)和进程数限制(如kafka hard nproc 65536
),防止DoS攻击。
通过以上步骤,可构建CentOS环境下Kafka的多层安全防护体系,满足生产环境的基本安全需求。需根据实际场景调整配置(如使用Kerberos替代SCRAM-SHA-256实现更高级的身份认证)。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: centos kafka安全设置
本文地址: https://pptw.com/jishu/721241.html