
Fail2Ban UI는 여러 리눅스 호스트에서 실행되는 Fail2Ban을 한 대시보드에서 관리하는 도구다. 차단 현황을 확인하고 IP 주소를 검색·차단 해제하거나 감옥(jail)과 필터를 관리할 수 있으며, 차단 판단 자체는 각 호스트의 Fail2Ban 데몬이 계속 담당한다.
Swissmakers GmbH가 관리하며 AGPL-3.0으로 배포한다. 대시보드는 실시간 차단·해제 활동, 서버별 감옥 상태, 이벤트 기록을 보여준다. 설정에 따라 이메일(SMTP), 웹훅, Elasticsearch 알림을 받을 수 있고, MikroTik·pfSense·OPNsense·UniFi Network 방화벽과 연동해 반복 공격자를 영구 차단하는 기능도 제공한다. 원격 감옥·필터 관리 등 일부 기능은 연결 방식의 지원 범위에 따라 달라진다.
연결 방식은 세 가지다. 로컬 연결은 UI와 Fail2Ban이 같은 호스트에 있을 때 사용하며 Unix 소켓과 로컬 파일에 접근한다. SSH 연결은 에이전트 설치 없이 원격 호스트를 관리하며, 키 기반 SSH와 최소 권한의 전용 계정이 필요하다. 에이전트 연결은 UI 호스트에서 SSH 접속을 원하지 않는 환경을 위한 방식으로, 관리 대상 호스트에서 HTTP 에이전트를 실행한다. 자세한 내용은 fail2ban-ui-agent와 사전 빌드 이미지를 참고하면 된다.
컨테이너로 시작하려면 Podman 또는 Docker가 설치된 리눅스 호스트가 필요하다. 로컬 Fail2Ban 인스턴스를 연결할 경우 컨테이너가 /etc/fail2ban과 /var/run/fail2ban에 접근할 수 있어야 한다. 저장소 안내에 나온 실행 명령은 다음과 같다.
podman run -d --name fail2ban-ui --network=host \\
-v /opt/fail2ban-ui:/config:Z \\
-v /etc/fail2ban:/etc/fail2ban:Z \\
-v /var/run/fail2ban:/var/run/fail2ban \\
-v /var/log:/var/log:ro \\
swissmakers/fail2ban-ui:latest
실행한 뒤 http://localhost:8080을 열고, UI의 Settings -> Manage Servers에서 로컬 연결을 활성화한 다음 Test connection을 누른다. Compose, systemd, SELinux 및 원격 연결 설정은 설치 안내와 문서를 확인할 수 있다.
Fail2Ban UI는 단일 Go 바이너리로 실행되며 컨테이너 또는 systemd 서비스를 사용할 수 있다. 관리 명령을 주고받는 연결과 차단·해제 이벤트를 전달하는 경로는 별개다. 이벤트 경로에서는 각 호스트의 Fail2Ban 액션이 공유 콜백 비밀키로 인증해 UI에 HTTP 요청을 보낸다.
보안상 UI를 공용 인터넷에 직접 노출하지 말고 리버스 프록시, VPN 또는 방화벽 규칙 뒤에 두라고 프로젝트는 안내한다. 가능하면 OIDC 로그인을 활성화하고, SSH 연결에는 최소한의 sudo 권한만 부여해야 한다. 보안 안내와 리버스 프록시 가이드에서 배포 조건을 확인할 수 있다. 소스 저장소는 GitHub에서 볼 수 있다.
댓글 (0)
로그인하면 이 기사에 내 생각을 남길 수 있어요