Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
FencePost — Tableau de bord de pare-feu UFW multi-hôtes — explique les règles en langage clair, détecte les failles de sécurité et fournit des diagnostics de connexion | Kitploit
Outils/GitHubGitHub/seriocomic/fencepost
Sécurité des ConteneursAnalyse des VulnérabilitésAudit de ConfigurationSécurité RéseauSécurité CloudDevSecOpsRenseignement sur les MenacesRéponse aux IncidentsAnalyse de Journaux
GitHubseriocomic/fencepost

FencePost

Tableau de bord de pare-feu UFW multi-hôtes — explique les règles en langage clair, détecte les failles de sécurité et fournit des diagnostics de connexion

2il y a 4 moisPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager
Voir le dépôt

FencePost

Tableau de bord de pare-feu UFW multi-hôtes. Se connecte aux hôtes Linux via SSH, analyse les règles de pare-feu et les ports en écoute, explique tout en langage clair et signale les failles de sécurité.

Python FastAPI License

Fonctionnalités

  • Vue multi-hôtes -- voir l'état d'UFW, les politiques par défaut et les services actifs sur tous les hôtes en un coup d'œil
  • Explications en langage clair -- chaque règle de pare-feu est traduite en descriptions lisibles avec les noms de VLAN et de services
  • Détection des failles -- détecte les ports en écoute sans règle UFW allow correspondante, répartis entre exposition externe et locale
  • Diagnostics de connexion -- suit une IP source + un port de destination à travers la chaîne de règles pour voir si le trafic serait autorisé, bloqué ou rejeté
  • Détection de changements -- compare l'état actuel à la dernière capture et envoie les événements (règles ajoutées/supprimées, UFW activé/désactivé, hôtes injoignables) à un webhook
  • Sensible à Docker -- signale les hôtes Docker où iptables peut contourner UFW

Captures d'écran

Home Rule List Rule Detail

Pages

RouteDescription
/Tableau de bord avec cartes hôtes, pastilles de services, compteurs de failles

Architecture

root@kitploit:~
Browser --> Cloudflare Tunnel --> Reverse Proxy --> FencePost (:8890)
  FastAPI container
    |-- SSH --> Host 1 (ufw status, ss -tlnp)
    |-- SSH --> Host 2
    |-- SSH --> Host N
    '-- POST --> Notification webhook

FencePost est en lecture seule -- il ne modifie jamais les règles de pare-feu, il se contente de les rapporter.

Démarrage rapide

Prérequis

  • Python 3.12+ (développement local) ou Docker (production)
  • Paire de clés SSH (ed25519) avec clé publique déployée sur les hôtes cibles
  • Entrée sudoers sur chaque hôte pour l'utilisateur SSH :
    root@kitploit:~
    <user> ALL=(ALL) NOPASSWD: /usr/sbin/ufw status verbose, /usr/sbin/ufw status numbered, /usr/bin/ss -tlnp
    

1. Cloner et configurer

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

# Add your SSH key
cp ~/.ssh/your_key ssh/id_ed25519
chmod 600 ssh/id_ed25519

# Create your environment file from the template
cp .env.example .env
# Edit .env with real credentials

2. Modifier config.yaml

root@kitploit:~
timezone: Australia/Melbourne

hosts:
  - name: My Server
    hostname: 192.168.1.10
    ssh_user: deploy
    ssh_port: 22
    is_docker_host: false

networks:
  "192.168.1.0/24": "LAN"

3. Exécuter

Développement local

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

# Load env vars (bash/zsh)
export $(grep -v '^#' .env | xargs)

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

Ouvrez http://localhost:8890.

Remarque : le mode local utilise la clé SSH au chemin spécifié dans config.yaml (ssh.key_path). Pour le développement local, vous voudrez peut-être le remplacer pour pointer vers votre ssh/id_ed25519 local :

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

Docker (production)

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

Ouvrez http://localhost:8890. Le conteneur lit les identifiants depuis .env automatiquement via compose.yaml.

Configuration

config.yaml

Variables d'environnement (.env)

Les identifiants sont stockés dans .env (ignoré par git) et référencés par compose.yaml. Ne committez jamais de secrets dans le dépôt.

Pile technologique

  • Backend : Python 3.12 / FastAPI / Uvicorn
  • SSH : Paramiko avec authentification par clé ed25519
  • Templates : Jinja2 (rendu serveur, sans framework JS)
  • Client HTTP : httpx (notifications webhook)
  • Styles : CSS personnalisé, thème sombre, sans framework
  • Polices : DM Mono (données), Anybody (titres)

Structure du projet

root@kitploit:~
app/
  main.py           # FastAPI routes and auth
  models.py         # HostFirewallState, UFWRule, ListeningPort dataclasses
  parser.py         # Parses ufw status and ss output
  explainer.py      # Translates rules to plain English
  diagnose.py       # Connection diagnostic engine
  gap_detector.py   # Finds uncovered listening ports
  ssh_client.py     # Paramiko wrapper, parallel host fetching
  eventfeed.py      # Change detection and webhook posting
  templates/
    base.html       # Layout, CSS, navigation
    overview.html   # Host dashboard grid
    host_detail.html # Per-host tabbed detail view
    diagnose.html   # Connection diagnostic form and results
    login.html      # Authentication page
config.yaml         # Host definitions, VLANs, devices, timezone
compose.yaml        # Docker Compose service definition
Dockerfile          # Python 3.12 slim image
.env.example        # Template for environment variables
ssh/                # SSH key directory (key not committed)
data/               # Runtime state (last_state.json, not committed)

Ajouter un hôte

  1. Ajoutez une entrée dans config.yaml sous hosts:
  2. Copiez la clé publique SSH sur l'hôte : ssh-copy-id -i ssh/id_ed25519.pub user@host
  3. Créez /etc/sudoers.d/fencepost sur l'hôte avec les règles NOPASSWD requises
  4. Reconstruisez : docker compose up -d --build

Notifications

Lorsqu'il est configuré dans config.yaml avec une variable d'environnement NOTIFICATIONS_API_KEY, FencePost publie les événements de changement à chaque actualisation du tableau de bord :

  • UFW activé / désactivé
  • Règles ajoutées / supprimées (avec détails des règles)
  • Nouveaux ports externes non couverts
  • Hôte devenu injoignable / rétabli

Les événements incluent des clés d'idempotence pour éviter les doublons.

Licence

MIT

Télécharger l’outil
/host/{name}Détail de l'hôte avec vue à onglets : règles expliquées, ports non couverts, ports en écoute, sortie brute
/diagnoseOutil de diagnostic de connexion avec visualisation de la trace règle par règle
/loginAuthentification par session
SectionDescription
timezoneFuseau horaire IANA pour les horodatages affichés (par ex. Australia/Melbourne, UTC)
hostsTableau des cibles SSH : name, hostname, ssh_user, ssh_port, is_docker_host
sshkey_path (chemin vers la clé privée) et timeout en secondes
networksMappage CIDR-à-nom pour les VLAN -- utilisé dans les explications de règles et les diagnostics
devicesIP nommées pour les boutons de sélection rapide de la page de diagnostic
notificationsWebhook facultatif : url, channel (clé API définie via une variable d'environnement)
VariableDéfautDescription
FENCEPOST_USERNAMEadminNom d'utilisateur de connexion
FENCEPOST_PASSWORDfencepostMot de passe de connexion
FENCEPOST_SECRET_KEYchange-meClé de signature des cookies de session
FENCEPOST_CONFIGconfig.yamlChemin vers le fichier de configuration
NOTIFICATIONS_API_KEYJeton Bearer pour le webhook de notification