Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
FencePost — Panel de control de firewall UFW multihost — explica las reglas en inglés sencillo, detecta brechas de seguridad y proporciona diagnósticos de conexión | Kitploit
Herramientas/GitHubGitHub/seriocomic/fencepost
Seguridad de ContenedoresAnálisis de VulnerabilidadesAuditoría de ConfiguraciónSeguridad de RedesSeguridad en la NubeDevSecOpsInteligencia de AmenazasRespuesta a IncidentesAnálisis de Registros
GitHubseriocomic/fencepost

FencePost

Panel de control de firewall UFW multihost — explica las reglas en inglés sencillo, detecta brechas de seguridad y proporciona diagnósticos de conexión

2hace 4 mesesAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir
Ver Repositorio

FencePost

Panel de control de firewall UFW para múltiples hosts. Se conecta a hosts Linux por SSH, analiza las reglas de firewall y los puertos en escucha, explica todo en lenguaje sencillo y señala brechas de seguridad.

Python FastAPI License

Características

  • Visión general multi-host — ve el estado de UFW, las políticas predeterminadas y los servicios activos en todos los hosts de un vistazo
  • Explicaciones en lenguaje sencillo — cada regla de firewall se traduce a descripciones legibles con nombres de VLAN y servicios
  • Detección de brechas — encuentra puertos en escucha que no tienen una regla de permiso UFW coincidente, separados por exposición externa vs local
  • Diagnóstico de conexión — rastrea una IP de origen + puerto de destino a través de la cadena de reglas para ver si el tráfico sería permitido, bloqueado o rechazado
  • Detección de cambios — compara el estado actual con la última instantánea y publica eventos (reglas añadidas/eliminadas, UFW activado/desactivado, hosts inalcanzables) en un webhook
  • Consciente de Docker — señala hosts Docker donde iptables puede omitir UFW

Capturas de pantalla

Inicio Lista de reglas Detalle de regla

Páginas

RutaDescripción
/

Arquitectura

root@kitploit:~
Navegador --> Túnel Cloudflare --> Proxy Inverso --> FencePost (:8890)
  Contenedor FastAPI
    |-- SSH --> Host 1 (ufw status, ss -tlnp)
    |-- SSH --> Host 2
    |-- SSH --> Host N
    '-- POST --> Webhook de notificaciones

FencePost es solo lectura — nunca modifica las reglas del firewall, solo informa sobre ellas.

Inicio rápido

Prerrequisitos

  • Python 3.12+ (desarrollo local) o Docker (producción)
  • Par de claves SSH (ed25519) con la clave pública desplegada en los hosts de destino
  • Entrada de sudoers en cada host para el usuario SSH:
    root@kitploit:~
    <usuario> ALL=(ALL) NOPASSWD: /usr/sbin/ufw status verbose, /usr/sbin/ufw status numbered, /usr/bin/ss -tlnp
    

1. Clonar y configurar

root@kitploit:~
git clone <url-del-repositorio> && cd fencepost

# Añade tu clave SSH
cp ~/.ssh/tu_clave ssh/id_ed25519
chmod 600 ssh/id_ed25519

# Crea tu archivo de entorno a partir de la plantilla
cp .env.example .env
# Edita .env con las credenciales reales

2. Editar config.yaml

root@kitploit:~
timezone: Australia/Melbourne

hosts:
  - name: Mi servidor
    hostname: 192.168.1.10
    ssh_user: deploy
    ssh_port: 22
    is_docker_host: false

networks:
  "192.168.1.0/24": "LAN"

3. Ejecutar

Desarrollo local

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

# Cargar variables de entorno (bash/zsh)
export $(grep -v '^#' .env | xargs)

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

Abrir http://localhost:8890.

Nota: el modo local utiliza la clave SSH en la ruta especificada en config.yaml (ssh.key_path). Para desarrollo local, quizás quieras sobrescribir esto para apuntar a tu ssh/id_ed25519 local:

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

Docker (producción)

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

Abrir http://localhost:8890. El contenedor lee las credenciales de .env automáticamente a través de compose.yaml.

Configuración

config.yaml

Variables de entorno (.env)

Las credenciales se almacenan en .env (gitignorado) y son referenciadas por compose.yaml. Nunca confirmes secretos en el repositorio.

Stack

  • Backend: Python 3.12 / FastAPI / Uvicorn
  • SSH: Paramiko con autenticación de clave ed25519
  • Plantillas: Jinja2 (renderizado del servidor, sin framework JS)
  • Cliente HTTP: httpx (notificaciones webhook)
  • Estilo: CSS personalizado, tema oscuro, sin framework
  • Fuentes: DM Mono (datos), Anybody (encabezados)

Estructura del proyecto

root@kitploit:~
app/
  main.py           # Rutas y autenticación de FastAPI
  models.py         # Dataclasses HostFirewallState, UFWRule, ListeningPort
  parser.py         # Analiza la salida de ufw status y ss
  explainer.py      # Traduce reglas a lenguaje sencillo
  diagnose.py       # Motor de diagnóstico de conexiones
  gap_detector.py   # Encuentra puertos en escucha sin cubrir
  ssh_client.py     # Envoltorio de Paramiko, obtención paralela de hosts
  eventfeed.py      # Detección de cambios y publicación en webhook
  templates/
    base.html       # Diseño, CSS, navegación
    overview.html   # Cuadrícula del panel de hosts
    host_detail.html # Vista detallada por host con pestañas
    diagnose.html   # Formulario de diagnóstico de conexión y resultados
    login.html      # Página de autenticación
config.yaml         # Definiciones de host, VLANs, dispositivos, zona horaria
compose.yaml        # Definición del servicio Docker Compose
Dockerfile          # Imagen slim de Python 3.12
.env.example        # Plantilla para variables de entorno
ssh/                # Directorio de claves SSH (la clave no está confirmada)
data/               # Estado en tiempo de ejecución (last_state.json, no confirmado)

Añadir un host

  1. Añade una entrada a config.yaml bajo hosts:
  2. Copia la clave pública SSH al host: ssh-copy-id -i ssh/id_ed25519.pub usuario@host
  3. Crea /etc/sudoers.d/fencepost en el host con las reglas NOPASSWD requeridas
  4. Reconstruye: docker compose up -d --build

Notificaciones

Cuando está configurado en config.yaml con una variable de entorno NOTIFICATIONS_API_KEY, FencePost publica eventos de cambio en cada actualización del panel:

  • UFW activado / desactivado
  • Reglas añadidas / eliminadas (con detalles de la regla)
  • Nuevos puertos externos sin cubrir
  • Host se volvió inalcanzable / recuperado

Los eventos incluyen claves de idempotencia para evitar duplicados.

Licencia

MIT

Descargar herramienta
Panel de control general con tarjetas de host, píldoras de servicio, contadores de brechas
/host/{nombre}Detalle del host con vista de pestañas: reglas explicadas, puertos descubiertos, puertos en escucha, salida sin procesar
/diagnosticarHerramienta de diagnóstico de conexión con visualización de rastreo regla por regla
/iniciar-sesionAutenticación basada en sesión
SecciónPropósito
timezoneZona horaria IANA para las marcas de tiempo mostradas (ej. Australia/Melbourne, UTC)
hostsArray de destinos SSH: name, hostname, ssh_user, ssh_port, is_docker_host
sshkey_path (ruta a la clave privada) y timeout en segundos
networksMapeo de CIDR a nombre para VLANs — usado en explicaciones de reglas y diagnósticos
devicesIPs con nombre para los botones de selección rápida de la página de diagnóstico
notificationsWebhook opcional: url, channel (clave API se establece mediante variable de entorno)
VariablePredeterminadoDescripción
FENCEPOST_USERNAMEadminNombre de usuario para inicio de sesión
FENCEPOST_PASSWORDfencepostContraseña de inicio de sesión
FENCEPOST_SECRET_KEYchange-meClave de firma de cookies de sesión
FENCEPOST_CONFIGconfig.yamlRuta al archivo de configuración
NOTIFICATIONS_API_KEYToken Bearer para el webhook de notificaciones