Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
Ferramentas/GitHubGitHub/seriocomic/fencepost
Segurança de ContêineresAnálise de VulnerabilidadesAuditoria de ConfiguraçãoSegurança de RedeSegurança na NuvemDevSecOpsInteligência de AmeaçasResposta a IncidentesAnálise de Logs
GitHubseriocomic/fencepost

FencePost

Painel de firewall UFW para múltiplos hosts — explica regras em linguagem simples, detecta lacunas de segurança e fornece diagnósticos de conexão.

24há 5 mesesAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar
Ver Repositório

FencePost

Painel de firewall UFW para múltiplos hosts. Conecta-se a hosts Linux via SSH, analisa regras de firewall e portas de escuta, explica tudo em português claro e sinaliza lacunas de segurança.

Python FastAPI License

Funcionalidades

  • Visão geral de múltiplos hosts — veja o status do UFW, políticas padrão e serviços ativos em todos os hosts de uma só vez
  • Explicações em português claro — cada regra de firewall é traduzida para descrições legíveis com nomes de VLAN e serviços
  • Detecção de lacunas — encontra portas de escuta que não possuem uma regra de permissão UFW correspondente, separadas por exposição externa vs. local
  • Diagnóstico de conexão — rastreie um IP de origem + porta de destino através da cadeia de regras para ver se o tráfego seria permitido, bloqueado ou rejeitado
  • Detecção de alterações — compara o estado atual com o último instantâneo e publica eventos (regras adicionadas/removidas, UFW ativado/desativado, hosts inacessíveis) em um webhook
  • Ciente de Docker — sinaliza hosts Docker onde o iptables pode contornar o UFW

Capturas de tela

Home Lista de regras Detalhe da regra

Páginas

RotaDescrição
/Painel de visão geral com cartões de host, pílulas de serviço, contagens de lacunas

Arquitetura

root@kitploit:~
Navegador --> Cloudflare Tunnel --> Proxy Reverso --> FencePost (:8890)
  Container FastAPI
    |-- SSH --> Host 1 (ufw status, ss -tlnp)
    |-- SSH --> Host 2
    |-- SSH --> Host N
    '-- POST --> Webhook de notificação

O FencePost é somente leitura — ele nunca modifica regras de firewall, apenas as reporta.

Início rápido

Pré-requisitos

  • Python 3.12+ (desenvolvimento local) ou Docker (produção)
  • Par de chaves SSH (ed25519) com chave pública implantada nos hosts de destino
  • Entrada no sudoers em cada host para o usuário SSH:
    root@kitploit:~
    <user> ALL=(ALL) NOPASSWD: /usr/sbin/ufw status verbose, /usr/sbin/ufw status numbered, /usr/bin/ss -tlnp
    

1. Clonar e configurar

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

# Adicione sua chave SSH
cp ~/.ssh/your_key ssh/id_ed25519
chmod 600 ssh/id_ed25519

# Crie seu arquivo de ambiente a partir do modelo
cp .env.example .env
# Edite .env com credenciais reais

2. Editar config.yaml

root@kitploit:~
timezone: Australia/Melbourne

hosts:
  - name: Meu Servidor
    hostname: 192.168.1.10
    ssh_user: deploy
    ssh_port: 22
    is_docker_host: false

networks:
  "192.168.1.0/24": "LAN"

3. Executar

Desenvolvimento local

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

# Carregar variáveis de ambiente (bash/zsh)
export $(grep -v '^#' .env | xargs)

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

Abra http://localhost:8890.

Nota: o modo local usa a chave SSH no caminho especificado em config.yaml (ssh.key_path). Para desenvolvimento local, talvez você queira sobrescrever isso para apontar para o seu ssh/id_ed25519 local:

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

Docker (produção)

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

Abra http://localhost:8890. O container lê as credenciais automaticamente do .env via compose.yaml.

Configuração

config.yaml

Variáveis de ambiente (.env)

As credenciais são armazenadas em .env (ignorado pelo git) e referenciadas pelo compose.yaml. Nunca envie segredos para o repositório.

Stack tecnológica

  • Backend: Python 3.12 / FastAPI / Uvicorn
  • SSH: Paramiko com autenticação por chave ed25519
  • Templates: Jinja2 (renderizado no servidor, sem framework JS)
  • Cliente HTTP: httpx (notificações via webhook)
  • Estilização: CSS customizado, tema escuro, sem framework
  • Fontes: DM Mono (dados), Anybody (títulos)

Estrutura do projeto

root@kitploit:~
app/
  main.py           # Rotas e autenticação do FastAPI
  models.py         # Dataclasses: HostFirewallState, UFWRule, ListeningPort
  parser.py         # Analisa a saída do ufw status e ss
  explainer.py      # Traduz regras para português claro
  diagnose.py       # Motor de diagnóstico de conexão
  gap_detector.py   # Encontra portas de escuta descobertas
  ssh_client.py     # Wrapper para Paramiko, busca paralela de hosts
  eventfeed.py      # Detecção de alterações e postagem em webhook
  templates/
    base.html       # Layout, CSS, navegação
    overview.html   # Grade do painel de hosts
    host_detail.html # Visualização detalhada por host com abas
    diagnose.html   # Formulário e resultados do diagnóstico de conexão
    login.html      # Página de autenticação
config.yaml         # Definições de hosts, VLANs, dispositivos, fuso horário
compose.yaml        # Definição do serviço Docker Compose
Dockerfile          # Imagem Python 3.12 slim
.env.example        # Modelo para variáveis de ambiente
ssh/                # Diretório de chaves SSH (a chave não é commitada)
data/               # Estado em tempo de execução (last_state.json, não commitado)

Adicionar um host

  1. Adicione uma entrada em config.yaml sob hosts:
  2. Copie a chave pública SSH para o host: ssh-copy-id -i ssh/id_ed25519.pub user@host
  3. Crie /etc/sudoers.d/fencepost no host com as regras NOPASSWD necessárias
  4. Reconstrua: docker compose up -d --build

Notificações

Quando configurado em config.yaml com uma variável de ambiente NOTIFICATIONS_API_KEY, o FencePost envia eventos de alteração a cada atualização do painel:

  • UFW ativado / desativado
  • Regras adicionadas / removidas (com detalhes da regra)
  • Novas portas externas descobertas
  • Host ficou inacessível / recuperado

Os eventos incluem chaves de idempotência para evitar duplicatas.

Licença

MIT

Baixar ferramenta
/host/{name}Detalhe do host com visualização em abas: regras explicadas, portas descobertas, portas de escuta, saída bruta
/diagnoseFerramenta de diagnóstico de conexão com visualização de rastreio regra por regra
/loginAutenticação baseada em sessão
SeçãoFinalidade
timezoneFuso horário IANA para os carimbos de data/hora exibidos (ex.: Australia/Melbourne, UTC)
hostsArray de alvos SSH: name, hostname, ssh_user, ssh_port, is_docker_host
sshkey_path (caminho para a chave privada) e timeout em segundos
networksMapeamento CIDR para nome das VLANs — usado nas explicações de regras e diagnósticos
devicesIPs nomeados para os botões de seleção rápida na página de diagnóstico
notificationsWebhook opcional: url, channel (chave de API definida via variável de ambiente)
VariávelPadrãoDescrição
FENCEPOST_USERNAMEadminNome de usuário para login
FENCEPOST_PASSWORDfencepostSenha para login
FENCEPOST_SECRET_KEYchange-meChave de assinatura do cookie de sessão
FENCEPOST_CONFIGconfig.yamlCaminho para o arquivo de configuração
NOTIFICATIONS_API_KEYToken Bearer para o webhook de notificações