运维

运维

Products

当前位置:首页 > 运维 >

如何通过kafka安全设置在Ubuntu上提升数据传输安全性?

96SEO 2026-05-19 15:50 15


ubuntu上kafka安全设置怎么做

Kafka 已经成为实时流处理的“血脉”。只是若不做好平安防护,敏感信息就像娱乐的电线一样随时可能被窃取或篡改。本文将手把手带你在 Ubuntu 系统上为 Kafka 装上“防弹衣”, 不如... 从证书生成到 SASL 认证、ACL 权限细粒度控制,一路敲出最可靠的数据通道。

一、整体平安思路与架构概览

先把大局想清楚:加密 + 认证 + 授权 + 网络隔离 四层防护缺一不可。下面这张简图帮你快速定位每一层的职责:

层级技术实现关键配置文件常见错误
传输加密自签或 CA 签发证书 + 双向认证server.properties、 ssl-keystore.jks、truststore.jks证书链不完整导致握手失败
SASL 认证JAAS 配置 + SCRAM 用户管理kafka_server_jaas.conf、kafka_client_jaas.conf用户名/密码写错或未同步到 Zookeeper/KRaft
细粒度授权Kafka Authorizerauthorizer.properties、kafka-acls.sh 脚本Acl 未生效时忘记重启 Broker 或未打开 authorizer.enable=true
网络隔离仅放通内部节点和可信客户端端口/etc/ufw/applications.d/kafka.rules /etc/iptables/rules.v4误放通公网 9092 导致明文泄露

二、准备工作:安装依赖与创建专用系统用户

# 更新系统并安装 JDK
sudo apt update && sudo apt install -y openjdk-11-jdk
# 创建运行用户,降低权限风险
sudo groupadd kafka
sudo useradd -r -g kafka -s /sbin/nologin kafka
# 为 Kafka 指定目录
sudo mkdir -p /opt/kafka/{config,logs,data}
sudo chown -R kafka:kafka /opt/kafka

别小看这一步,很多漏洞都是主要原因是 Kafka 直接跑在 root 下导致的,精辟。。

三、 生成 TLS/SSL 证书

以下示例使用 OpenSSL 手动创建根 CA 与服务端/客户端证书,生产环境请换成内部 CA 或商业证书。

# 创建存放证书的目录
mkdir -p /etc/kafka/ssl/{ca,server,client}
cd /etc/kafka/ssl
# 1️⃣ 根 CA
openssl req -new -x509 -days 3650 \
   -keyout ca/ca-key.pem -out ca/ca-cert.pem \
   -subj "/CN=Kafka-Root-CA"
# 2️⃣ Broker 密钥 & CSR
openssl req -newkey rsa:2048 -nodes \
   -keyout server/server-key.pem \
   -out server/server.csr \
   -subj "/CN=kafka-broker"
# 用根 CA 为 Broker 签名
openssl x509 -req -in server/server.csr \
   -CA ca/ca-cert.pem -CAkey ca/ca-key.pem \
   -CAcreateserial -days 3650 \
   -out server/server-cert.pem
# 同理生成 client/client-key.pem 与 client/client-cert.pem
# 
# 合并为 JKS
keytool -importcert -trustcacerts \
   -alias kafka-ca \
   -file ca/ca-cert.pem \
   -keystore truststore.jks \
   -storepass changeit \
   -noprompt
keytool -importkeystore \
   -srckeystore server/server-keystore.p12 \
   -srcstoretype PKCS12 \
   -srcstorepass changeit \
   -destkeystore keystore.jks \
   -deststoretype JKS \
   -deststorepass changeit

*温馨提示*: 为了避免 “找不到信任库” 的尴尬,请务必把根 CA 导入所有节点的 truststore 中,总的来说...。

四、 配置 SASL 身份验证

SASL 能让每个生产者和消费者都拥有独立的凭据,失窃后也能快速吊销。

# 在 /opt/kafka/config/kafka_server_jaas.conf 中写入:
KafkaServer {
    org.apache.kafka.common.security.scram.ScramLoginModule required;
};
# 客户端 JAAS 示例
KafkaClient {
    org.apache.kafka.common.security.scram.ScramLoginModule required
    username="writer"
    password="WriterPass!2024";
};

SASL 配置完成后 需要在 broker 的 s 推倒重来。 erver.properties 中打开对应协议:

# 启用双向加密 + SASL
listeners=SASL_SSL://0.0.0.0:9093
advertised.listeners=SASL_SSL://your.host.com:9093
security.inter.broker.protocol=SASL_SSL
sasl.mechanism.inter.broker.protocol=SCRAM-SHA-512
# 指定 JAAS 文件路径,让 JVM 能加载它
KAFKA_OPTS="-Djava.security.auth.login.config=/opt/kafka/config/kafka_server_jaas.conf"
export KAFKA_OPTS
# SSL 基础参数
ssl.keystore.location=/opt/kafka/config/keystore.jks
ssl.keystore.password=changeit
ssl.key.password=changeit
ssl.truststore.location=/opt/kafka/config/truststore.jks
ssl.truststore.password=changeit
# 强制使用 TLSv1.2+ 与平安套件
ssl.enabled.protocols=TLSv1.2,TLSv1.3
ssl.cipher.suites=TLS_AES_128_GCM_SHA256,TLS_AES_256_GCM_SHA384
require.ssl.client.auth=true          # 双向认证必须开启!
authorizer.class.name=kafka.security.authorizer.AclAuthorizer
allow.everyone.if.no.acl.found=false # 没有 ACL 时拒绝访问!
super.users=User:admin                # 超级管理员账号, 可自行添加多条,用逗号分隔。
principal.builder.class=org.apache.kafka.common.security.auth.DefaultPrincipalBuilder
enable.sasl=true                       # 必须打开!
sasl.enabled.mechanisms=SCRAM-SHA-512,PASSWORD,PLAIN     # 根据需求增删。
listener.name.sasl_ssl.scram-sha-512.sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required;
listener.name.sasl_ssl.plain.sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required;
listener.name.sasl_ssl.gssapi.sasl.jaas.config=com.sun.security.auth.module.Krb5LoginModule required;
listener.name.sasl_ssl.oauthbearer.sasl.jaas.config=org.apache.kafka.common.security.oauthbearer.OAuthBearerLoginModule required;
listener.name.sasl_ssl.oauthbearer.sasl.server.callback.handler.class=org.apache.kafka.server.auth.oauthbearer.secured.OAuthBearerValidatorCallbackHandler;
listener.name.sasl_ssl.oauthbearer.token.endpoint.uri=https://your-idp.example.com/oauth/token;
producer.ssl.truststore.location=/opt/kafka/config/truststore.jks 
producer.ssl.truststore.password=changeit 
consumer.ssl.truststore.location=/opt/kafka/config/truststore.jks 
consumer.ssl.truststore.password=changeit 
client.id=my-producer-client-id               # 为每个客户端设定唯一 ID,有助于审计。
group.id=my-consumer-group                     # 消费组同理。
offsets.topic.replication.factor=3             # 高可用,防止单点故障。
transaction.state.log.replication.factor=3     # 开启事务时必备。
transaction.state.log.min.isr=2                # 保持足够 ISR。
log.retention.hours=168                        # 默认保留一周,可根据业务调节。
log.segment.bytes=1073741824                   # 每段文件约 1GB,有利于磁盘回收。
num.partitions=6                               # 初始分区数,可根据吞吐量调优。
## ==== 将上述内容复制进 server.properties ====
## 注意:不要遗漏等号两侧的空格,否则启动会报错! 
## 如果你仍然使用 Zookeeper, 请把 zookeeper.connect 加进来;如果迁移到 KRaft,则不需要此项。

五、 细粒度 ACL 权限管理——只让该来的进,只让该走的出!

看好你哦! SASL 验证完身份后还要决定它能干什么。下面演示如何为生产者 & 消费者分别授予写读权限:

# 创建 SCRAM 用户
$KAFKA_HOME/bin/kafka-configs.sh --zookeeper localhost:2181 \ 
      --alter --add-config 'SCRAM-SHA-512=' \ 
      --entity-type users --entity-name writer
$KAFKA_HOME/bin/kafka-configs.sh --zookeeper localhost:2181 \ 
      --alter --add-config 'SCRAM-SHA-512=' \ 
      --entity-type users --entity-name reader
# 为 writer 添加写权限 & 创建 topic 权限
$KAFKA_HOME/bin/kafka-acls.sh --authorizer-properties zookeeper.connect=localhost:2181 \ 
      --add --allow-principal User:writer \ 
      --operation Write --operation Create \ 
      --topic orders
# 为 reader 添加读权限 & 描述权限
$KAFKA_HOME/bin/kafka-acls.sh --authorizer-properties zookeeper.connect=localhost:2181 \ 
      --add --allow-principal User:reader \ 
      --operation Read --operation Describe \ 
      --topic orders
# 为 consumer group 授权读取偏移量 
$KAFKA_HOME/bin/kafka-acls.sh --authorizer-properties zookeeper.connect=localhost:2181 \ 
      --add --allow-principal User:reader \ 
      --operation Read --operation Describe \ 
      --group my-consumer-group
# 查看已配置 ACL 列表
$KAFKA_HOME/bin/kafka-acls.sh --authorizer-properties zookeeper.connect=localhost:2181 \ 
      --list –topic orders

出道即巅峰。 小贴士:如果你看到 “AuthorizationException” 报错, 请先检查是否忘记打开 authorizer.enable=true,并确认 super.users 包含 admin。

六、网络层面加固——只让可信 IP 踏进来!

  • UFW 防火墙规则:
  • # 打开内部通信端口, 仅限内部网段访问  
    sudo ufw allow from 10.0.0.0/16 to any port 9093 proto tcp comment 'Kafka SSL'  
    # 禁止明文端口  
    sudo ufw deny 9092/tcp  
    # 启动 UFW  
    sudo ufw enable  
    sudo ufw status verbose  
    
  • Iptables 高级过滤:
  • # 保存到 /etc/iptables/rules.v4  
    *filter  
    -A INPUT –p tcp –m tcp –dport 9093 –s 10.0.0.0/16 –j ACCEPT  
    -A INPUT –p tcp –m tcp –dport 9093 –j DROP  
    COMMIT  
    iptables-restore 
  • 云平台平安组:
  • 如果你的机器跑在 AWS、阿里云或 GCP,请同样只开放内部 VPC 子网 IP 段; 说到底。 外部访问只能走 VPN 或跳板机。

    \

    七、 验证与排错——让每一步都有回声

    SASL+SSL 握手测试

    # 使用内置 console producer 测试写入   
    KAFKA_OPTS="-Djava.security.auth.login.config=/opt/kafka/config/kafka_client_jaas.conf" \\
    $KAFKA_HOME/bin/kafka-console-producer.sh \\   
    --broker-list localhost:9093 \\   
    --topic orders \\   
    --producer-property security.protocol=SASL_SSL \\   
    --producer-property sasl.mechanism=SCRAM-SHA-512  
    # 同理,用 console consumer 拉取   
    KAFKA_OPTS="-Djava.security.auth.login.config=/opt/kafka/config/kafka_client_jaas.conf" \\
    $KAFKA_HOME/bin/kafka-console-consumer.sh \\   
    --bootstrap-server localhost:9093 \\   
    --topic orders \\   
    --from-beginning \\   
    --consumer-property security.protocol=SASL_SSL \\   
    --consumer-property sasl.mechanism=SCRAM-SHA-512    
    \end{verbatim}
    

    未来可期。 If you see “Auntication failed”, double‑check password in JAAS file and ensure SCRAM credentials have been added to Zookeeper/KRaft.

    Acl 生效检查

    $KAFKA_HOME/bin/kafka-acls.sh --authorizer-properties zookeeper.connect localhost:2181 --list –topic orders  
    输出示例:
    Current ACLs for resource `TopicPattern:`orders`:
        Principal    Host    Operation    PermissionType    PatternType    
        User:writer   *       Write           Allow                 Literal    
        User:writer   *       Create         Allow                  Literal    
        User:reader   *       Read            Allow                 Literal    
        User:reader   *       Describe        Allow                 Literal    
        Group:*        *       Read            Allow               Literal    
    若缺失某行,请重新施行对应 kafka-acls.sh 命令。 
    

    八、日常运维与监控建议

    • The broker’s logs are your first line of defence—set log.level = INFO for production and keep an eye on “SASL auntication failed” or “Failed to verify SSL certificate”. Use tools like Filebeat or Loki to ship logs centrally.
    • Migrate to KRaft mode when possible; it eliminates Zookeeper as a single point of failure and lets you store ACL/SCRAM data in same quorum.
    • If you have multiple data centers, enable inter‑cluster replication over SASL_SSL with separate keystores per region—this avoids cross‑region credential leakage.
    • Create automated scripts that rotate keystores every six months and purge old SCRAM passwords via cron jobs.
    • The easiest way to audit who accessed which topic is to enable broker’s audit logging , n push it into Elasticsearch for quick queries.
    • If you notice spikes in latency after enabling TLS, consider enabling hardware offload or using NGINX/TCP Proxy as a TLS terminator—但记得仍保留双向认证!​
    • 永远不要把密码硬编码进脚本或 Docker 镜像中,而是使用 Vault 或 Kubernetes Secret 来动态注入。

    九、 ——从“开门见山”到“闭门严锁”只差一步之遥

    Kakfa 本身已经足够强大,但没有平安装甲,它就是暴露在外的易碎玻璃。通过本文所述四层防护, 你可以确保:

    • 所有网络流量都经过 TLS 加密,不会被抓包。
    • 每个客户端必须,即使拿到了网络包也无从下手。
    • ACL 精准控制谁能读写哪些 Topic,杜绝横向越权。
    • 只允许受信任 IP 接入,彻底封锁外部攻击面。

    ©2026 技术分享站 | 本文基于个人实践撰写,仅供参考。

    若用于生产,请结合实际环境进行充分测试。


标签: ubuntu

SEO优化服务概述

作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。

百度官方合作伙伴 白帽SEO技术 数据驱动优化 效果长期稳定

SEO优化核心服务

网站技术SEO

  • 网站结构优化 - 提升网站爬虫可访问性
  • 页面速度优化 - 缩短加载时间,提高用户体验
  • 移动端适配 - 确保移动设备友好性
  • HTTPS安全协议 - 提升网站安全性与信任度
  • 结构化数据标记 - 增强搜索结果显示效果

内容优化服务

  • 关键词研究与布局 - 精准定位目标关键词
  • 高质量内容创作 - 原创、专业、有价值的内容
  • Meta标签优化 - 提升点击率和相关性
  • 内容更新策略 - 保持网站内容新鲜度
  • 多媒体内容优化 - 图片、视频SEO优化

外链建设策略

  • 高质量外链获取 - 权威网站链接建设
  • 品牌提及监控 - 追踪品牌在线曝光
  • 行业目录提交 - 提升网站基础权威
  • 社交媒体整合 - 增强内容传播力
  • 链接质量分析 - 避免低质量链接风险

SEO服务方案对比

服务项目 基础套餐 标准套餐 高级定制
关键词优化数量 10-20个核心词 30-50个核心词+长尾词 80-150个全方位覆盖
内容优化 基础页面优化 全站内容优化+每月5篇原创 个性化内容策略+每月15篇原创
技术SEO 基本技术检查 全面技术优化+移动适配 深度技术重构+性能优化
外链建设 每月5-10条 每月20-30条高质量外链 每月50+条多渠道外链
数据报告 月度基础报告 双周详细报告+分析 每周深度报告+策略调整
效果保障 3-6个月见效 2-4个月见效 1-3个月快速见效

SEO优化实施流程

我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:

1

网站诊断分析

全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。

2

关键词策略制定

基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。

3

技术优化实施

解决网站技术问题,优化网站结构,提升页面速度和移动端体验。

4

内容优化建设

创作高质量原创内容,优化现有页面,建立内容更新机制。

5

外链建设推广

获取高质量外部链接,建立品牌在线影响力,提升网站权威度。

6

数据监控调整

持续监控排名、流量和转化数据,根据效果调整优化策略。

SEO优化常见问题

SEO优化一般需要多长时间才能看到效果?
SEO是一个渐进的过程,通常需要3-6个月才能看到明显效果。具体时间取决于网站现状、竞争程度和优化强度。我们的标准套餐一般在2-4个月内开始显现效果,高级定制方案可能在1-3个月内就能看到初步成果。
你们使用白帽SEO技术还是黑帽技术?
我们始终坚持使用白帽SEO技术,遵循搜索引擎的官方指南。我们的优化策略注重长期效果和可持续性,绝不使用任何可能导致网站被惩罚的违规手段。作为百度官方合作伙伴,我们承诺提供安全、合规的SEO服务。
SEO优化后效果能持续多久?
通过我们的白帽SEO策略获得的排名和流量具有长期稳定性。一旦网站达到理想排名,只需适当的维护和更新,效果可以持续数年。我们提供优化后维护服务,确保您的网站长期保持竞争优势。
你们提供SEO优化效果保障吗?
我们提供基于数据的SEO效果承诺。根据服务套餐不同,我们承诺在约定时间内将核心关键词优化到指定排名位置,或实现约定的自然流量增长目标。所有承诺都会在服务合同中明确约定,并提供详细的KPI衡量标准。

SEO优化效果数据

基于我们服务的客户数据统计,平均优化效果如下:

+85%
自然搜索流量提升
+120%
关键词排名数量
+60%
网站转化率提升
3-6月
平均见效周期

行业案例 - 制造业

  • 优化前:日均自然流量120,核心词无排名
  • 优化6个月后:日均自然流量950,15个核心词首页排名
  • 效果提升:流量增长692%,询盘量增加320%

行业案例 - 电商

  • 优化前:月均自然订单50单,转化率1.2%
  • 优化4个月后:月均自然订单210单,转化率2.8%
  • 效果提升:订单增长320%,转化率提升133%

行业案例 - 教育

  • 优化前:月均咨询量35个,主要依赖付费广告
  • 优化5个月后:月均咨询量180个,自然流量占比65%
  • 效果提升:咨询量增长414%,营销成本降低57%

为什么选择我们的SEO服务

专业团队

  • 10年以上SEO经验专家带队
  • 百度、Google认证工程师
  • 内容创作、技术开发、数据分析多领域团队
  • 持续培训保持技术领先

数据驱动

  • 自主研发SEO分析工具
  • 实时排名监控系统
  • 竞争对手深度分析
  • 效果可视化报告

透明合作

  • 清晰的服务内容和价格
  • 定期进展汇报和沟通
  • 效果数据实时可查
  • 灵活的合同条款

我们的SEO服务理念

我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。

提交需求或反馈

Demand feedback