Kafka在CentOS上的安全设置建议
server.properties中的security.protocol为sasl_ssl或sasl_plaintext,sasl.mechanism.inter.broker.protocol为对应机制(如SCRAM-SHA-256),并通过kafka-configs.sh工具创建用户凭证(如--entity-type users --entity-name kafka-user --alter --add-config SCRAM-SHA-256=[password]=true)。同时,创建JAAS配置文件(如kafka_server_jaas.conf),指定用户名和密码,并在启动脚本中通过-Djava.security.auth.login.config参数加载。kinit命令获取票据并配置Kafka支持Kerberos认证。keytool命令导出证书并导入信任库(如keytool -export -alias kafka-server -file kafka.server.crt -keystore kafka.server.keystore.jks和keytool -import -alias kafka-server -file kafka.server.crt -keystore kafka.server.truststore.jks)。配置server.properties中的listeners为SSL://:9093,security.protocol为SSL,并指定密钥库和信任库的路径、密码(如ssl.keystore.location=/etc/kafka/kafka.server.keystore.jks、ssl.truststore.password=password)。客户端配置需对应设置security.protocol=SSL和信任库参数。kafka-acls.sh工具为用户或用户组设置细粒度的主题访问权限(如--authorizer-properties zookeeper.connect=localhost:2181 --add --allow-principal User:kafka-user --operation Read --topic test-topic)。配置server.properties中的authorizer.class.name为kafka.security.auth.SimpleAclAuthorizer,启用ACL授权功能。firewall-cmd命令开放Kafka必要端口(默认9092用于SASL_PLAINTEXT,9093用于SSL),并限制访问源IP(如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)。建议将Kafka部署在CentOS的VPC或专用子网中,增强网络隔离。passwd -l <用户名>锁定不必要的超级账户,或修改/etc/passwd中的shell为/sbin/nologin),设置复杂口令(包含大小写字母、数字、特殊字符,长度大于10位)。使用chattr +i命令锁定/etc/passwd、/etc/shadow等关键文件,防止未授权修改。permissive模式(setenforce 0)记录安全事件;防火墙需开启并配置严格规则,避免直接关闭。server.properties中启用详细日志记录(如log.level=INFO),记录客户端访问、认证失败、授权操作等活动。结合ELK、Splunk等日志管理系统,实时分析日志中的异常行为(如频繁的认证失败)。/etc/security/limits.conf中的文件描述符限制(如kafka - nofile 65536)和进程数限制(如kafka - nproc 65536),防止DoS攻击导致资源耗尽。