防火墙使用说明

Linux(SSH 直连) / Windows(Agent) 两套防火墙工具 · 一文讲清

本说明覆盖 Linux 主机(SSH 直连)与 Windows 主机(通过 BandwidthAgent)两套防火墙工具,按「每个版块的功能 / 操作方法 / 注意事项」逐块说明。窗口统一是「一个窗 + 多个页签」,每个页签互相独立,窗口也不锁主程序 —— 主窗口和这些窗口可以各自最小化、互不干扰。

一、两条路线,怎么选

  • Linux 主机(类型 = SSH):走 SSH 直连,不需要在被控端装任何东西。右键主机 → 「🛡 防火墙(Linux)…」。
  • Windows 主机(类型 = RDP):需要在被控端装 BandwidthAgent(Windows 服务),然后在主机里填 Agent 端口 + Token。右键主机 → 「🛡 防火墙(Windows Agent)…」。
  • 入口统一在主机列表右键菜单;Linux 的防火墙窗里同时包含「端口规则 / 登录日志 / 防爆破」三个页签。

二、准备工作

2.1 添加 / 编辑主机

Windows 主机要额外填两项:Agent 端口 和 Token(装了 agent 才有);Linux 主机填 SSH 的端口和账号即可。

图 1:编辑连接 —— 「Agent端口」填 BandwidthAgent 的监听端口,「Token」填安装时打印的那串(0 = 禁用)
图 1:编辑连接 —— 「Agent端口」填 BandwidthAgent 的监听端口,「Token」填安装时打印的那串(0 = 禁用)
  • 名称 / 主机 / 端口 / 类型:类型决定走哪条路线(RDP → Windows agent;SSH → Linux 直连)。
  • 用户名 / 密码:SSH 或 RDP 的登录凭据;密码留空表示沿用已保存的。
  • Agent端口:BandwidthAgent 的监听端口(如 8080)。填 0 = 禁用这条线路。
  • Token:安装 agent 时打印/复制的那串;只在「防火墙控制(Agent)」等安全功能里用。
  • 测试连接 / 保存:先测试再保存,省得配错排查半天。
⚠️ Token 和端口一定要和 agent 端完全一致,不一致的表现是:防火墙窗连不上、提示「无响应」。

2.2 Windows 端安装 BandwidthAgent

把 agent 包解压到被控机,右键 service-manager.bat → 以管理员身份运行(它会自动请求提权),然后选 1 安装。

图 2:agent 安装菜单与安装输出(会打印监听端口和 token,并自动复制到剪贴板)
图 2:agent 安装菜单与安装输出(会打印监听端口和 token,并自动复制到剪贴板)
  • 1 安装并启动服务(自动放行端口):装服务 + 自动在防火墙放行 agent 自己那个端口。
  • 2 卸载服务(删服务 + 清防火墙) / 3 查看状态 / 4 启动服务 / 5 停止服务。
  • 6 显示 token(客户端要用):忘了 token 就选它。
  • 7 查看防火墙规则(本机) / 8 查看已封 IP / 9 开关自动封禁(本机):本机自测,不依赖客户端。
  • 0 退出。
⚠️ 🔴 Windows 10 / Server 2016 及以上:一定要把 BandwidthAgent 目录加入杀毒软件白名单(Defender:设置 → 病毒和威胁防护 → 排除项 → 添加文件夹)。否则杀软会拦 powershell.exe,表现为:防火墙规则拉不下来 / 连 agent 提示「无响应」/ 登录日志与自动封禁不工作。
⚠️ 换新版 agent:替换 publish\BandwidthAgent.exe 后必须 sc stop BandwidthAgent & sc start BandwidthAgent;只换文件不重启服务 = 跑的还是旧版。

三、Windows 防火墙(Agent)

窗口标题形如「防火墙控制(Agent) — 主机名」。顶部是地址 / 端口 / token 概要(端口和 token 在「主机编辑」页填,这里只看不改),以及「重新连接」「刷新」。

3.1 顶部与页签

  • 重新连接:断线时手动重连(打开窗口会自动连一次)。
  • 刷新:按当前页签刷新内容 —— 端口规则/封禁 IP = 全量刷新;登录日志 = 重拉日志;攻击来源 = 重读防火墙日志。
  • 一键开启防火墙 / 停用:开关 Windows 防火墙(域/专用/公用一起);开关前会二次确认。
  • 防火墙: 域✓ 专✓ 公✓:三个配置档的当前状态,哪个关着就显示 ✗。
  • 页签:端口规则 / 封禁 IP / 登录日志 / 攻击来源。

3.2 端口规则

列出本机入站、允许的端口规则(含已禁用的),用于看清"哪些口开着、哪些该关"。

图 3:端口规则 —— 列:端口 / 协议 / 分组 / 配置 / 状态 / 名称
图 3:端口规则 —— 列:端口 / 协议 / 分组 / 配置 / 状态 / 名称
  • 配色图例(窗口右上):🟩 启用(生效中) / 🟨 建议禁用(网络发现、文件共享这类) / ⬜ 已禁用(规则还在但不生效) / 🟦 本工具建的规则。
  • 停用选中 / 启用选中:批量开关选中的规则(只改"启用状态",不删规则)。
  • 🧹 停用无用端口:把黄色(网络发现/共享类)的规则一次性停用;随时可再启用回来。
  • 放行端口:在底部「放行端口」填端口(可填 80、80,443、39000-40000)、选 TCP/UDP,点「+ 放行」。
  • 右键/选中可删:只能删本工具创建的规则(RdpManager-* / RdpBlock-*);系统自带规则删不掉(这是安全阀)。
⚠️ 停用 ≠ 删除。停用只是让规则不生效,随时能启用回来;想彻底删要先确认自己不会再用。

3.3 封禁 IP

管理 Windows 防火墙里的封禁规则:每条封禁 = 一条 入站阻止规则,名字是 RdpBlock-<IP>。

图 4:封禁 IP —— 列:IP / 归属地 / 规则名
图 4:封禁 IP —— 列:IP / 归属地 / 规则名
  • 封 IP:在「封 IP」框里填单个 IP,点「封禁」;也可在「攻击来源/登录日志」页右键 → 封禁。
  • 解封选中:选中一条点它即删掉对应防火墙规则(解封会回读确认,删不掉会明确报错)。
  • 归属地:客户端自动查询并缓存(只显示,不联网也能看已缓存的)。
⚠️ 封禁是防火墙层的事 —— 前提是 Windows 防火墙处于开启状态,防火墙没跑时规则存在也不过滤。
⚠️ 封禁只拦新连接,已经建立的会话不会立刻断开,断开重连才准。

3.4 登录日志

拉取 Windows 安全日志里的远程登录记录:4625(失败) 与 4624(成功,只取远程桌面),按来源 IP 汇总。

图 5:登录日志 —— 列:来源 IP / 归属地 / 失败 / 成功 / 最后时间 / 用户
图 5:登录日志 —— 列:来源 IP / 归属地 / 失败 / 成功 / 最后时间 / 用户
  • 右键 → 封禁 / 解封 / 复制 IP / 加入白名单。
  • 状态栏会显示条数:失败 N 条 / 成功 M 条(近 24h)。
  • 「机器名/无IP」是什么:NTLM 网络登录(LogonType=3)Windows 只记来源机器名、不记 IP,所以这类失败没有 IP 可封 —— 要 IP 就看「攻击来源」页(防火墙日志里有)。

3.5 攻击来源

读 Windows 防火墙日志 pfirewall.log,把打本机端口的外网来源 IP 按次数汇总 —— 这是拿"爆破源 IP"最靠谱的地方。

图 6:攻击来源 —— 列:来源 IP / 归属地 / 次数 / 拦截 / 目标端口 / 最后
图 6:攻击来源 —— 列:来源 IP / 归属地 / 次数 / 拦截 / 目标端口 / 最后
  • 只看拦截(默认勾选):只统计被防火墙 DROP 的;取消勾选连放行的连接也列出来。
  • 读取来源:重新读取并汇总;「端口」框留空 = 全部端口,填 3389 就只看打 RDP 的。
  • ⚙ 启用日志记录:打开防火墙日志(netsh advfirewall set allprofiles logging ...);必须先开防火墙,日志才有内容。
  • 🔍 自动封诊断:一次性告诉你自动封禁现在看到了什么(开关/阈值/窗口/RDP 端口/白名单、4625 计数、防火墙日志连接数、当前封禁记录、规则实况、环境)。排障先点它。
⚠️ 日志只记"开启之后"的连接,没有历史。想看谁在打,就让它挂着,有扫描就会冒出来。

3.6 底部操作区(放行 / 改端口 / 限 IP / 自动封禁)

版块功能操作方法注意
放行端口开放一个入站端口填端口(单口/逗号多口/区间)+ 选 TCP/UDP → 「+ 放行」规则名以 RdpManager-Port- 开头,便于识别与删除
远程桌面端口把 RDP 监听的端口改掉填新端口 → 「改端口」先改新端口、验证能连之后再删旧规则;改端口会重启 TermService,当前 RDP 会话会断;云安全组/Hyper-V ACL 那层也要放行新端口
限指定 IP只允许某个 IP 访问远程桌面填 IP(可逗号多个 / 可写 1.2.3.0/24)→ 「应用」;要恢复点「解除」会把其它允许该端口的规则停用(不是删);填错不要紧,点「解除」能恢复
自动封禁(登录失败)登录失败达到阈值自动封 IP勾选「自动封禁」→ 设阈值/窗口(分)/封禁(分)→ 「💾 保存」未保存 = 没生效;封禁到期自动解封
连接速率也封不看登录,只看连接频率(读防火墙日志)默认勾选,与上面共用阈值/窗口/白名单RDP 爆破常常 4625 里没有 IP,靠这条兜底
永封(白名单)这些 IP 永不自动封填 IP(逗号分隔,支持 1.2.3. / 1.2.3.0/24)→ 保存一定要把你自己的出口 IP 加进去,否则打错密码够了次数会把自己封了
⚠️ 自动封禁读的是登录失败(4625),正常登录不会触发;但连续输错密码够阈值照样会封 —— 所以白名单很重要。

四、Linux 防火墙

通过 SSH 直连操作被控机的防火墙(自动识别 firewalld / ufw / nftables)。窗口也是「一个窗 + 三个页签」:端口规则 / 登录日志 / 防爆破。

4.1 端口规则

图 7:Linux 端口规则 —— 列:动作 / 端口(服务) / 协议 / 来源 / 区域 / 备注
图 7:Linux 端口规则 —— 列:动作 / 端口(服务) / 协议 / 来源 / 区域 / 备注
  • 顶部状态行:当前用的防火墙组件、是否在运行、当前 SSH 端口、共多少条规则。
  • 刷新:重新读取规则。
  • 放行 SSH 端口:开防火墙前的安全阀 —— 先确保当前 SSH 端口被放行,避免把自己关在门外。
  • + 添加规则 / 删除选中:加/删端口规则。
  • 启用防火墙 / 停用防火墙:起停 firewalld/ufw(启用前会自动先放行 SSH 和在听端口)。
  • 改 SSH 端口:三步式(检查 → 应用(保留旧端口)→ 验证后再移除旧端口);改前备份 sshd_config,sshd -t 不过自动回滚。
  • 变更记录 / 原始输出:查看改动留痕(~/.rdp-manager/fw-changelog.log)和防火墙原始输出。
⚠️ 🔒 当前 SSH 端口对应的规则是锁死的,不可删除(备注里带锁标记)—— 这是防把你锁在门外。
⚠️ 删除端口规则后"居然还能访问"多半是已建立的连接:防火墙放行 ESTABLISHED,reload 不会掐老连接,新连接才断。

4.2 登录日志

读被控机的 /var/log/secure、auth.log 或 journalctl(取最近 5000 行),按 IP 汇总成功/失败登录。

图 8:Linux 登录日志 —— 列:来源 IP / 失败 / 成功 / 最后时间 / 归属地
图 8:Linux 登录日志 —— 列:来源 IP / 失败 / 成功 / 最后时间 / 归属地
  • 读取日志:拉取并解析。
  • 按 IP 汇总 / 逐条明细:两种视图切换(汇总看"谁在打",明细看"每一次")。
  • 导出 CSV:留档或给别人看。
  • 右键 → 封禁 / 解封:已封的 IP 会标「已封」。
  • 归属地:自动查询并缓存(~/.rdp-manager/ipgeo2.cache),只查出现最多的前 60 个,避免卡顿。
⚠️ 解封 ≠ 加白名单:解封只是"这一波不算",这个 IP 下次再扫照样会被封。

4.3 防爆破

下发一个轻量脚本到目标机(默认走 cron 每分钟一次),按登录失败频率自动封 IP。命令会直接打到 SSH 终端里执行,输出自己在终端看。

图 9:防爆破 —— 参数、部署方式、部署状态与最近日志
图 9:防爆破 —— 参数、部署方式、部署状态与最近日志
  • 失败阈值 / 窗口(分钟) / 封禁(分钟):同一 IP 在窗口内失败 ≥ 阈值 → 封禁,到期自动解封。
  • 白名单:空格分隔;你自己的 IP 一定要放进去(窗口打开时会自动预填当前连接 IP)。
  • 目标机没装 ipset 时自动安装(装失败回退 iptables):有 ipset 用 ipset(O(1) 查表),没有就退到 iptables。
  • 常驻守护(可选):勾 = 装 systemd 常驻(每 5 秒、开机自启、崩溃自愈);不勾 = 每分钟 cron 一次(更轻量,默认)。
  • 预检:只检查不部署(看环境支持情况);查看脚本:看将要下发的脚本内容;
  • 部署:真正下发(改完参数要重新点部署才覆盖);卸载:删脚本 + cron/服务 + 封禁链;
  • 状态:看"已部署/未部署、脚本版本、运行方式、上次运行、已封 IP 数、近期异常、最近日志"。
⚠️ 🔴 只点「预检/状态」不会生效 —— 改完参数必须点「部署」才覆盖脚本。
⚠️ 封禁走 ipset/iptables/nft 原生链,不依赖 firewalld;后端优先级 ipset → iptables → nft。

五、通用注意事项(两套都适用)

  1. 先开防火墙,规则才有意义。Windows 点「一键开启防火墙」;Linux 点「启用防火墙」(会先放行 SSH)。
  2. Windows 10/2016+ 必须给 BandwidthAgent 目录加杀软白名单,否则 PowerShell 被拦 → 规则/日志拉不到、连接"无响应"。
  3. 改 agent 后要重启服务(sc stop BandwidthAgent & sc start BandwidthAgent)。
  4. 封禁/解封只影响新连接;已建立的会话不会立刻断。
  5. 端口和 token 必须与 agent 端一致,不一致就是"无响应"。
  6. 改 SSH 端口 / RDP 端口这类操作,云安全组、Hyper-V ACL 那层也要同步放行,否则外网连不上(本机防火墙已放行也没用)。
  7. 白名单是你的保险:自动封禁前把常用出口 IP 加进白名单,避免把自己关在门外。
  8. 排障顺序:Windows 先点「🔍 自动封诊断」;Linux 先点「状态」;再看终端/日志输出。

六、常见问题(FAQ)

现象原因处理
防火墙窗连不上、提示「无响应」端口/token 不对,或那个端口被别的程序占用(如 8080);也可能是 agent 没跑核对 agent 的监听端口与 token;换一个不常用的端口重装 agent;确认服务是 RUNNING
登录日志能读,但端口规则拉不下来agent 调 PowerShell 被安全软件拦/太慢给 BandwidthAgent 目录和 powershell.exe 加白名单;升级到最新 agent(带超时与 netsh 兜底)
列表页「流量」列一直是 0主程序旧版读取带宽 JSON 被截断升级主程序(新版本改成读完整数据)
自动封禁不生效没保存/没勾选;或白名单里有它;或规则创建失败点「🔍 自动封诊断」看:是否已开、阈值与计数、白名单、是否有"记录有规则无"的 IP
解封了但防火墙里规则还在旧版本解封"假成功"升级 agent(新版解封会回读确认,删不掉会报错)
封了 IP 却还能连防火墙没开;或只是已建立的连接先确认防火墙开启;断开重连再试
⚠️ Windows 版 agent 的自测命令(在被控机执行,排障很好用):--status 看状态、--diag 看环境、--selftest 逐条自测、--bw 看带宽数据。
↑