Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
FencePost — 多主机 UFW 防火墙面板 — 用通俗易懂的英文解释规则,检测安全漏洞,并提供连接诊断功能 | Kitploit
工具/GitHubGitHub/seriocomic/fencepost
容器安全漏洞分析配置审计网络安全云安全DevSecOps威胁情报事件响应日志分析
GitHubseriocomic/fencepost

FencePost

多主机 UFW 防火墙面板 — 用通俗易懂的英文解释规则,检测安全漏洞,并提供连接诊断功能

查看仓库
245个月前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

FencePost

多主机 UFW 防火墙仪表板。通过 SSH 连接 Linux 主机,解析防火墙规则和监听端口,以通俗易懂的语言进行解释,并标记安全缺口。

Python FastAPI License

功能特性

  • 多主机概览 —— 一目了然查看所有主机的 UFW 状态、默认策略和活跃服务
  • 通俗易懂的解释 —— 每条防火墙规则都被翻译成可读的描述,包含 VLAN 和服务名称
  • 安全缺口检测 —— 发现没有匹配 UFW 允许规则的监听端口,按外部暴露和本地暴露分类
  • 连接诊断 —— 追踪源 IP + 目标端口经过规则链的过程,查看流量会被允许、阻止还是拒绝
  • 变更检测 —— 将当前状态与上次快照进行比较,并将事件(规则添加/删除、UFW 开关、主机不可达)发布到 Webhook
  • Docker 感知 —— 标记那些 iptables 可能绕过 UFW 的 Docker 主机

截图

首页 规则列表 规则详情

页面

路由描述
/概览仪表板,含主机卡片、服务标签、缺口计数
/host/{name}主机详情,带标签页视图:解释的规则、未覆盖端口、监听端口、原始输出
/diagnose连接诊断工具,带逐规则追踪可视化

架构

root@kitploit:~
浏览器 --> Cloudflare Tunnel --> 反向代理 --> FencePost (:8890)
  FastAPI 容器
    |-- SSH --> 主机 1 (ufw status, ss -tlnp)
    |-- SSH --> 主机 2
    |-- SSH --> 主机 N
    '-- POST --> 通知 webhook

FencePost 是只读的 —— 它从不修改防火墙规则,仅做报告。

快速开始

前提条件

  • Python 3.12+(本地开发)或 Docker(生产环境)
  • SSH 密钥对(ed25519),公钥已部署到目标主机
  • 为每个主机上的 SSH 用户添加 sudoers 条目:
    root@kitploit:~
    <user> ALL=(ALL) NOPASSWD: /usr/sbin/ufw status verbose, /usr/sbin/ufw status numbered, /usr/bin/ss -tlnp
    

1. 克隆并配置

root@kitploit:~
git clone <仓库-url> && cd fencepost

# 添加你的 SSH 密钥
cp ~/.ssh/your_key ssh/id_ed25519
chmod 600 ssh/id_ed25519

# 从模板创建环境文件
cp .env.example .env
# 编辑 .env 填入真实凭据

2. 编辑 config.yaml

root@kitploit:~
timezone: Australia/Melbourne

hosts:
  - name: 我的服务器
    hostname: 192.168.1.10
    ssh_user: deploy
    ssh_port: 22
    is_docker_host: false

networks:
  "192.168.1.0/24": "LAN"

3. 运行

本地开发

root@kitploit:~
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt

# 加载环境变量(bash/zsh)
export $(grep -v '^#' .env | xargs)

uvicorn app.main:app --reload --port 8890

打开 http://localhost:8890。

注意:本地模式使用 config.yaml 中指定的 SSH 密钥路径(ssh.key_path)。本地开发时你可能想覆盖此路径,使其指向本地的 ssh/id_ed25519:

root@kitploit:~
ssh:
  key_path: ssh/id_ed25519
  timeout: 10

Docker(生产环境)

root@kitploit:~
docker compose up -d --build

打开 http://localhost:8890。容器通过 compose.yaml 自动从 .env 读取凭据。

配置

config.yaml

环境变量(.env)

凭据存储在 .env(已加入 .gitignore)中,由 compose.yaml 引用。切勿将密钥提交到仓库。

技术栈

  • 后端: Python 3.12 / FastAPI / Uvicorn
  • SSH: Paramiko 配合 ed25519 密钥认证
  • 模板: Jinja2(服务器端渲染,无 JS 框架)
  • HTTP 客户端: httpx(webhook 通知)
  • 样式: 自定义 CSS,深色主题,无框架
  • 字体: DM Mono(数据)、Anybody(标题)

项目结构

root@kitploit:~
app/
  main.py           # FastAPI 路由和认证
  models.py         # HostFirewallState、UFWRule、ListeningPort 数据类
  parser.py         # 解析 ufw status 和 ss 输出
  explainer.py      # 将规则翻译成通俗易懂的中文
  diagnose.py       # 连接诊断引擎
  gap_detector.py   # 查找未覆盖的监听端口
  ssh_client.py     # Paramiko 封装,并行获取主机信息
  eventfeed.py      # 变更检测和 webhook 发布
  templates/
    base.html       # 布局、CSS、导航
    overview.html   # 主机仪表板网格
    host_detail.html # 每个主机的标签页详情视图
    diagnose.html   # 连接诊断表单及结果
    login.html      # 认证页面
config.yaml         # 主机定义、VLAN、设备、时区
compose.yaml        # Docker Compose 服务定义
Dockerfile          # Python 3.12 slim 镜像
.env.example        # 环境变量模板
ssh/                # SSH 密钥目录(密钥不提交)
data/               # 运行时状态(last_state.json,不提交)

添加主机

  1. 在 config.yaml 的 hosts: 下添加条目
  2. 将 SSH 公钥复制到主机:ssh-copy-id -i ssh/id_ed25519.pub user@host
  3. 在主机上创建 /etc/sudoers.d/fencepost,包含所需的 NOPASSWD 规则
  4. 重新构建:docker compose up -d --build

通知

当在 config.yaml 中配置且设置 NOTIFICATIONS_API_KEY 环境变量时,FencePost 会在每次仪表板刷新时发布变更事件:

  • UFW 启用 / 禁用
  • 规则添加 / 删除(附带规则详情)
  • 新的未覆盖外部端口
  • 主机变为不可达 / 恢复

事件包含幂等键以防止重复。

许可证

MIT

下载工具
/login基于会话的身份认证
部分用途
timezone显示时间戳所用的 IANA 时区(例如 Australia/Melbourne、UTC)
hostsSSH 目标数组:name、hostname、ssh_user、ssh_port、is_docker_host
sshkey_path(私钥路径)和 timeout(超时秒数)
networksCIDR 到名称的映射(用于 VLAN)—— 在规则解释和诊断中使用
devices已命名的 IP 地址,用于诊断页面的快速选择按钮
notifications可选的 webhook:url、channel(API 密钥通过环境变量设置)
变量默认值描述
FENCEPOST_USERNAMEadmin登录用户名
FENCEPOST_PASSWORDfencepost登录密码
FENCEPOST_SECRET_KEYchange-me会话 Cookie 签名密钥
FENCEPOST_CONFIGconfig.yaml配置文件路径
NOTIFICATIONS_API_KEY通知 webhook 的 Bearer 令牌