chargen 字符发生器
19 是 chargen(Character Generator Protocol,RFC 864)的注册端口,一种用于测试的字符流生成服务。TCP 模式下连接建立后会持续输出字符流直到断开,UDP 模式下每收到一个报文就回一段数据。它几乎没有正当的生产用途,却因为响应远大于请求而成为历史上最经典的 UDP 放大反射源之一。
基本信息
| 服务 | chargen(RFC 864) |
|---|---|
| 协议 | TCP 与 UDP |
| 用途 | 字符流生成、链路测试 |
| 风险 | UDP 放大攻击高倍率反射源 |
| 现状 | 现代系统默认关闭 |
典型使用场景
- 测试链路连通性与吞吐的老式方法
- 教学中理解放大攻击原理的典型案例
- 安全基线核查时确认该服务已关闭
- 分析异常 UDP 流量时识别放大来源
- 加固边界设备时确认默认拒绝策略覆盖它
TCP 字符流与检查
TCP 字符流与检查
timeout 3 nc 192.0.2.10 19 | head -n 5 # 截取前 5 行
# UDP 模式(仅授权测试环境)
echo test | nc -u -w2 192.0.2.10 19 | wc -c
grep -i chargen /etc/services # 对照本机服务清单反射类服务对照
| 端口 | 服务 | 说明 |
|---|---|---|
| 19 | chargen TCP | 持续输出字符流,可被用于耗尽带宽 |
| 19 | chargen UDP | 单个请求换回较大应答,放大攻击的基础 |
| 7 | echo | 同样具备反射特性,常与它一起关闭 |
| 加固方式 | 边界与主机防火墙 | 默认拒绝,只对明确需要的服务放行 |
chargen 与 echo、DNS、NTP 等同为 UDP 放大攻击常用反射面。边界防火墙与主机防火墙都应默认拒绝,只对明确需要的服务放行,不要指望服务自身去限制访问。
排查价值:内网抓到大量目的端口为 19 的 UDP 报文,通常意味着有人在探测或利用放大攻击。这类报文的源地址很可能是伪造的,追查方向应落在被利用的反射目标上,而不是报文里写的源。
加固建议:清单里应把这类测试服务与 echo、daytime 等一并列为默认关闭项,并让边界设备按目的端口直接丢弃,减少被当作反射源的机会。
台账提示:这类测试服务通常由系统自带套件引入,清理时除了关服务,还要确认启动项与软件包是否需要一并处理,否则升级或重启后会再次出现。