limit 与日志的关系
ufw limit 对同一来源的新建连接做速率限制(默认约每 30 秒 6 次),超限的连接被丢弃,天然削弱 SSH 口令爆破;同时 ufw 的日志级别决定被拒与限速事件的记录量。两者搭配,才能既减噪又留下证据。
基本信息
| 适用平台 | Linux(Ubuntu/Debian 系,ufw) |
|---|---|
| 限速命令 | ufw limit <端口或应用名> |
| 日志命令 | ufw logging low|medium|high,落点 /var/log/ufw.log |
| 基线 | 管理端口启用 limit,日志级别 medium 起步 |
典型使用场景
- 公网 SSH 入口:limit 是零成本的第一层缓解,配合密钥登录效果更好
- 日志留存:开启日志后可按来源 IP 统计失败尝试,识别持续爆破的来源
- 变更验证:新放行规则上线后,通过日志确认命中情况
- 与 fail2ban 分工:limit 做无状态限速,fail2ban 做基于日志的封禁,两者可以叠加
- 容器宿主:容器会自行改写 iptables,ufw 规则在这些机器上容易失真,需要单独确认
限速与日志
限速与日志
# 管理端口启用限速(对 IPv4 与 IPv6 分别生效)
sudo ufw limit ssh
sudo ufw logging medium
sudo ufw status verbose
# 观察拒绝与限速记录
tail -f /var/log/ufw.log
grep -c 'BLOCK' /var/log/ufw.log日志级别读法
| 级别 | 记录内容 | 适用建议 |
|---|---|---|
| off | 不记录 | 排除故障时临时用 |
| low | 记录被策略拒绝的包(含限速命中) | 默认值,噪声最小 |
| medium | 额外记录部分被放行的连接与无效包 | 生产推荐起步级别 |
| high | 几乎记录每个包,含未匹配规则的流量 | 仅排障短时启用,日志量极大 |
日志默认写 /var/log/ufw.log,请确认 logrotate 覆盖该文件:公网机在 high 级别下一天能产生数 GB 日志。
limit 在 IPv4 与 IPv6 上独立计数:只放行 SSH 的 v4 规则而漏掉 v6,限速对 IPv6 来源不生效,双栈主机要分别确认。
日志留存周期要提前定:按等保要求日志至少留存六个月,ufw.log 需要单独做 logrotate 与集中采集,否则本地文件会被覆盖。
限速要有可观测证据:开启后从外部做一次高频连接测试,确认连接被拒且日志出现对应记录,比只看配置回显更可信。