shell 与 syslog 共用一个端口号
514 的 TCP 归 shell(rsh,r-services 之一),UDP 归经典 BSD syslog。rsh 依赖 .rhosts 与 hosts.equiv 的主机信任,没有可靠的身份认证,现代发行版默认不安装;UDP syslog 至今仍是交换机、防火墙、网络设备上报日志的主流方式,特点是明文、无确认、来源可伪造。
基本信息
| 服务 | shell(514/tcp)、syslog(514/udp) |
|---|---|
| 协议 | TCP / UDP |
| 规范 | RFC 3164(传统 syslog 格式) |
| 现状 | rsh 已弃用;日志链路逐步迁向 TLS |
| 安全等级 | 仅内网,收集链路需做来源校验 |
典型使用场景
- 网络与安全设备把日志上报到集中日志服务器,多数设备只支持 UDP 514
- 服务器系统日志集中归档,满足审计留存要求
- 排障:抓包确认设备是否真在发日志、发送频率与格式是否符合预期
- 迁移改造:明文与 TLS 两条链路并行收集,对比丢包与格式差异后再切换
- 安全事件复盘:核对日志来源 IP 与主机名是否一致,识别伪造注入
接收端监听与流量判读
接收端监听与流量判读
sudo ss -lunp | grep ':514'
sudo tcpdump -ni eth0 'udp port 514' -A -c 10
# 伪造痕迹:来源 IP 与日志里的主机名不一致
# 丢弃观察:同一设备日志序号断续,说明 UDP 丢包
sudo journalctl -u rsyslog --since '10 min ago' | tail -n 20日志链路端口对照
| 端口 | 用途 | 特点 |
|---|---|---|
| 514/udp | 传统 syslog | 明文、无确认,链路抖动即丢日志 |
| 514/tcp | rsh(r-services) | 基于主机信任,应下线 |
| 601/tcp | syslog-conn | 老实现的 TCP 采集 |
| 6514/tcp | syslog over TLS | RFC 5425,有加密与完整性保护 |
rsyslog 转发与加密替代
rsyslog 转发与加密替代
# /etc/rsyslog.conf
*.* @log.example.com:514 # UDP 转发,设备兼容性最好
*.* @@log.example.com:514 # TCP 转发,减少丢包但仍是明文
# 加密:加载 imtcp 并配置 gtls 驱动与证书,走 6514
# $DefaultNetstreamDriver gtls
# $ActionSendStreamDriverMode 1UDP 514 无认证也无完整性校验:任何能发包到收集端的主机都能写入伪造日志,污染审计与告警结论;跨网段收集日志应启用加密与来源校验。
rsh 与 512 的 rexec、513 的 rlogin 同属 .rhosts 信任模型,资产中发现 514/tcp 监听时,应同时检查 .rhosts 与 hosts.equiv 残留文件,而不是只关服务。
日志链路加固清单
- 收集端做来源白名单,只接受已知设备与网段的报文
- 关键设备优先走 TCP 或 TLS 采集,减少链路抖动导致的关键事件丢失
- 核对日志里的时间戳与来源解析,避免设备名与 IP 长期对不上
- 留存周期与磁盘容量同步规划,避免写满后新日志被静默丢弃