원문 캡처 · github.com
원문 캡처 · github.com

Stop Bots는 NGINX·Apache 설정과 nftables·iptables 방화벽을 함께 관리해 악성 봇을 막는 Rust 기반 터미널 UI(TUI)·명령줄 도구다. CDN이나 클라우드 서비스에 트래픽 정보를 보내지 않고 서버에서 직접 운영하려는 사람을 대상으로 한다.

알려진 봇 목록과 IP 대역을 내려받아 차단하고, 접근 로그를 감시해 공격자를 탐지하는 두 가지 방식으로 작동한다. 로그 기반 탐지는 공격을 알아채기 전 요청 몇 개가 서버에 도달할 수 있다. 국가별 차단, 평판 목록, 호스팅 사업자 차단은 기본적으로 꺼져 있다. 기본 설정에서는 검색 엔진을 허용하고 스캐너·AI 크롤러 범주를 차단하며, SSH 스캐너·웹 스캐너·위조 크롤러·비밀정보 탐색·인젝션 시도·프로토콜 탐지·로그인 무차별 대입 탐지기를 켠다.

설치만으로는 작업이 시작되지 않고, 변경 사항은 적용 전에 검토할 수 있다. --dry-run으로 적용 전 변경 내역을 확인하며, 자동 적용은 기본적으로 꺼져 있다. 방화벽 규칙을 적용할 때는 현재 SSH 접속을 끊을 수 있는 규칙을 거부하는 확인 절차를 거친다. 다만 방화벽 규칙을 처음 적용할 때는 SSH에 의존하지 않는 서버 접속 수단을 확보하라고 안내한다.

Debian·Ubuntu에서 시험했으며 NGINX와 Apache를 지원한다. Apache 지원은 NGINX보다 새롭고, 속도 제한 등 일부 기능은 NGINX에서만 쓸 수 있다. Caddy, Traefik, HAProxy는 지원하지 않는다. 설치는 APT 저장소, Rust 1.88 이상을 이용한 cargo install, 또는 x86_64·aarch64용 정적 바이너리로 할 수 있다. 도구를 계속 실행하려면 터미널 UI를 열어 두거나 cron 작업을 설정해야 한다.

제품 설명에 따르면 트래픽 정보는 외부로 전송되지 않는다. 프록시 뒤에서 로그에 방문자 IP가 아닌 프록시 IP가 남는 환경에서는 서버의 실제 IP 설정을 먼저 구성해야 로그 기반 탐지가 방문자를 차단할 수 있다. iptables는 차단 주소마다 규칙을 추가하므로 대규모 목록에는 nftables를 권장한다. 요청별 처리 비용은 벤치마크하지 않았으므로 중요하다면 직접 측정해야 한다. 성능 수치는 GitHub CI 실행 환경 기준으로, 1GB 로그의 첫 읽기에 약 1분과 메모리 200MB 미만, 이후 10MB 추가분 처리에 약 15초와 80MB 미만이 든다고 프로젝트는 밝힌다.

릴리스 목록에서 바이너리를 받을 수 있다. 서버 없이 체험하려면 저장소를 복제한 뒤 Podman 또는 Docker와 Rust 도구 모음을 이용해 데모를 실행할 수 있다. 데모 컨테이너 안에 적용한 방화벽 규칙은 컨테이너 밖에 영향을 주지 않으며, 종료하면 컨테이너가 삭제된다.