Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
FencePost — 다중 호스트 UFW 방화벽 대시보드 — 규칙을 평이한 영어로 설명하고, 보안 취약점을 탐지하며, 연결 진단을 제공합니다 | Kitploit
도구/GitHubGitHub/seriocomic/fencepost
Container SecurityVulnerability AnalysisConfiguration AuditingNetwork SecurityCloud SecurityDevSecOpsThreat IntelligenceIncident ResponseLog Analysis
GitHubseriocomic/fencepost

FencePost

다중 호스트 UFW 방화벽 대시보드 — 규칙을 평이한 영어로 설명하고, 보안 취약점을 탐지하며, 연결 진단을 제공합니다

245개월 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
저장소 보기

FencePost

다중 호스트 UFW 방화벽 대시보드. SSH를 통해 Linux 호스트에 연결하고, 방화벽 규칙 및 수신 대기 포트를 파싱하여 모든 것을 쉬운 영어로 설명하고 보안 취약점을 표시합니다.

Python FastAPI License

기능

  • 다중 호스트 개요 -- 모든 호스트의 UFW 상태, 기본 정책, 활성 서비스를 한눈에 확인
  • 쉬운 영어 설명 -- 모든 방화벽 규칙을 VLAN 및 서비스 이름과 함께 읽기 쉬운 설명으로 변환
  • 갭 탐지 -- 일치하는 UFW 허용 규칙이 없는 수신 대기 포트를 찾아 외부/로컬 노출로 구분
  • 연결 진단 -- 규칙 체인을 따라 소스 IP + 대상 포트를 추적하여 트래픽이 허용, 차단 또는 거부되는지 확인
  • 변경 감지 -- 현재 상태를 마지막 스냅샷과 비교하고 이벤트(규칙 추가/제거, UFW 토글, 호스트 연결 불가)를 웹훅에 게시
  • Docker 인지 -- iptables가 UFW를 우회할 수 있는 Docker 호스트를 표시

스크린샷

홈 규칙 목록 규칙 상세

페이지

경로설명
/호스트 카드, 서비스 배지, 갭 수를 포함한 개요 대시보드
/host/{name}탭 뷰가 있는 호스트 상세: 설명된 규칙, 보호되지 않은 포트, 수신 대기 포트, 원시 출력

아키텍처

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는 읽기 전용입니다 -- 방화벽 규칙을 수정하지 않으며, 보고만 합니다.

빠른 시작

필수 조건

  • 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 <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. 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. 실행

로컬 개발

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

http://localhost:8890을 엽니다.

참고: 로컬 모드는 config.yaml(ssh.key_path)에 지정된 경로의 SSH 키를 사용합니다. 로컬 개발에서는 이를 로컬 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: ed25519 키 인증을 사용하는 Paramiko
  • 템플릿: Jinja2 (서버 렌더링, JS 프레임워크 없음)
  • HTTP 클라이언트: httpx (웹훅 알림)
  • 스타일링: 커스텀 CSS, 다크 테마, 프레임워크 없음
  • 글꼴: DM Mono (데이터), Anybody (제목)

프로젝트 구조

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)

호스트 추가

  1. config.yaml의 hosts: 아래에 항목을 추가하십시오.
  2. SSH 공개 키를 호스트에 복사: ssh-copy-id -i ssh/id_ed25519.pub user@host
  3. 호스트에 필요한 NOPASSWD 규칙으로 /etc/sudoers.d/fencepost 생성
  4. 다시 빌드: docker compose up -d --build

알림

config.yaml에서 NOTIFICATIONS_API_KEY 환경 변수로 구성하면 FencePost는 대시보드를 새로 고칠 때마다 변경 이벤트를 게시합니다:

  • UFW 활성화 / 비활성화
  • 규칙 추가 / 제거 (규칙 세부 정보 포함)
  • 새로 보호되지 않은 외부 포트
  • 호스트 연결 불가 / 복구

이벤트에는 중복 방지를 위한 멱등성 키가 포함됩니다.

라이선스

MIT

도구 다운로드
/diagnose
규칙별 추적 시각화가 포함된 연결 진단 도구
/login세션 기반 인증
섹션용도
timezone표시된 타임스탬프의 IANA 시간대 (예: Australia/Melbourne, UTC)
hostsSSH 대상 배열: name, hostname, ssh_user, ssh_port, is_docker_host
sshkey_path(개인 키 경로) 및 timeout(초)
networksVLAN에 대한 CIDR-이름 매핑 -- 규칙 설명 및 진단에 사용
devices진단 페이지 빠른 선택 버튼용 명명된 IP
notifications선택적 웹훅: url, channel(환경 변수로 설정되는 API 키)
변수기본값설명
FENCEPOST_USERNAMEadmin로그인 사용자 이름
FENCEPOST_PASSWORDfencepost로그인 비밀번호
FENCEPOST_SECRET_KEYchange-me세션 쿠키 서명 키
FENCEPOST_CONFIGconfig.yaml구성 파일 경로
NOTIFICATIONS_API_KEY알림 웹훅용 Bearer 토큰