Linux syslog 与 Kerberos 集成指南
一 架构与前提
二 服务端准备 Kerberos 与 rsyslog
sudo yum install krb5-server krb5-libs krb5-workstation。sudo kdb5_util create -r EXAMPLE.COM -s;创建管理员主体(如 admin/admin@EXAMPLE.COM),启动 krb5kdc 与 kadmin 服务并设为开机自启。syslog/collector.example.com@EXAMPLE.COM(用于 TCP/TLS 接收)与 syslog-udp/collector.example.com@EXAMPLE.COM(用于 UDP 接收,若启用 GSSAPI)。sudo kadmin.local -q "addprinc -randkey syslog/collector.example.com@EXAMPLE.COM";sudo kadmin.local -q "ktadd -k /etc/krb5.keytab syslog/collector.example.com@EXAMPLE.COM";设置权限(如 600)并确认属主为 root。module(load="imtcp")、module(load="imgssapi")ruleset(name="gssapi") {
action(type="omfile" file="/var/log/secure-gssapi")
}
input(type="imtcp" port="514" ruleset="gssapi")
input(type="imgssapi"
port="514"
ruleset="gssapi"
permit.gssapi.principal="syslog/collector.example.com@EXAMPLE.COM"
# 可选:仅允许指定主体
# permit.gssapi.keytab="/etc/krb5.keytab"
)
sudo firewall-cmd --permanent --add-port=514/tcp --add-port=88/tcp;如需 UDP 514,亦放行 UDP。三 客户端配置 rsyslog 发送日志
sudo yum install krb5-workstation krb5-libs(Debian/Ubuntu 可用 krb5-user 等)。kinit -k -t /etc/krb5.keytab syslog/collector.example.com@EXAMPLE.COM,klist 应显示有效票据。module(load="omgssapi")
action(type="omgssapi"
target="collector.example.com"
port="514"
# 可选:指定本地主体与密钥表
# my.principal="syslog/collector.example.com@EXAMPLE.COM"
# my.keytab="/etc/krb5.keytab"
# 可选:失败时回退本地文件
# action.resumeRetryCount="-1"
# action.resumeInterval="10"
)
omtls 模块进行加密传输(不涉及 Kerberos 认证)。四 验证与排错
sudo tail -f /var/log/secure-gssapi 观察是否出现经过 GSSAPI 认证的日志;sudo journalctl -u rsyslog -f 查看 rsyslog 自身日志。logger -p authpriv.info "test gssapi syslog" 触发日志;klist 确认票据有效;必要时使用 tcpdump port 514 or 88 抓包确认 GSSAPI 握手与 AP-REQ/AP-REP 流程。permit.gssapi.principal 一致,且 /etc/krb5.keytab 包含对应主体且权限为 600。五 安全与运维建议
syslog/collector.example.com@EXAMPLE.COM),不同传输方式(TCP/TLS 与 UDP)可使用不同主体以便精细化授权。action.resumeRetryCount、action.resumeInterval),避免短暂网络抖动导致日志丢失。