CrowdSec

CrowdSec 비공식 플러그인(CrowdSec과 무관): EmDash 관리자 화면에서 Local API의 경고, 차단, 주요 위협을 확인합니다.

플러그인

CrowdSec

CrowdSec 비공식 플러그인(CrowdSec과 무관): EmDash 관리자 화면에서 Local API의 경고, 차단, 주요 위협을 확인합니다.

  • 카테고리: crowdsec
  • 상태: 사용 가능
  • 버전: 0.1.3
  • 가격: 미확인
  • 출처: 공식 플러그인 레지스트리
  • 설치 방식: 레지스트리 샌드박스 플러그인
  • 확인일: 2026-10-21

설명

비공식 플러그인입니다. CrowdSec과 제휴 관계가 없으며 CrowdSec의 승인이나 지원을 받지 않습니다.

EmDash 관리자 화면에서 CrowdSec을 확인합니다. 전용 머신 로그인을 사용해 CrowdSec Local API에서 데이터를 읽어 옵니다.

대시보드: 최근 24시간의 경고를 그 이전 24시간과 비교하고, 현재 적용 중인 차단, 종류별 경고(WAF, 봇 챌린지, 행동), 상위 시나리오를 보여 주는 CrowdSec 카드.

CrowdSec 페이지: 7일, 30일 또는 90일 동안의 종류별 경고와 하루 단위 차단 발행 수, 그리고 상위 시나리오, 출발지 주소, 국가, AS 조직, 공격 대상 경로.

경고: 저장된 경고의 탐색기입니다. 한 시간부터 보관된 전체 기간 또는 마지막 방문 이후까지의 기간, 종류별 탭, 히스토그램이 있는 두 가지 분류, 주소 범위·국가·시나리오·행동·네트워크·경로·엔진별 필터, 주소별로 묶은 경고, 각 경고의 실시간 상세 정보를 제공합니다.

결정: LAPI가 현재 적용 중인 결정을 만료 시점 순으로 정렬해 실시간으로 읽어 옵니다.

트래픽 차트: 방화벽 바운서가 폐기한 악성 트래픽을 커뮤니티 차단 목록, 자체 탐지, 수동 차단으로 나누어 보여 주고, 전체 트래픽에서 차지하는 비율, 검사 및 차단된 웹 요청, 봇 챌린지, 출처별 활성 차단도 보여 줍니다. 데이터는 자신의 엔진과 바운서의 메트릭에서 가져오며 CrowdSec 클라우드에서는 가져오지 않습니다.

MCP 도구: 요약, 주요 위협, 경고 탐색기, 트래픽, 활성 결정, 단일 주소의 경고, 그리고 변경을 수행하는 도구 세 개.

선택적 변경: “변경 허용”을 켜면 관리자가 주소나 범위를 정해진 시간 동안 차단하고, 결정을 제거하고, 오래된 경고를 삭제할 수 있습니다. 차단 대상에는 자신의 주소, 사이트의 주소, LAPI 호스트의 주소, 보호 대상 주소, 사설 주소 공간, 허용 목록에 있는 주소가 절대 포함되지 않습니다.

날짜는 사용자의 시간대 기준으로 계산됩니다. 사이트가 접근할 수 있는 CrowdSec LAPI가 필요합니다.

설치

필요한 것: 공개 HTTPS 호스트 이름에 Local API가 있는 CrowdSec 1.7 이상(EmDash는 사설 주소를 거부함), 그리고 사이트에 설정한 EMDASH_ENCRYPTION_KEY(npx emdash secrets generate로 생성할 수 있음).

  1. CrowdSec 호스트에서 플러그인용 머신을 만듭니다: sudo cscli machines add emdash-crowdsec --auto -f /root/emdash-crowdsec.yaml. 이 파일에 ID와 비밀번호가 들어 있습니다.
  2. LAPI를 리버스 프록시 뒤에 공개하되, EmDash 서버의 주소만 허용하고 다음 라우트만 열어 두세요: POST /v1/watchers/login, GET /v1/alerts, GET /v1/alerts/. 변경 기능을 쓰려면 POST /v1/alerts, DELETE /v1/alerts/, DELETE /v1/decisions/, POST /v1/allowlists/check도 허용하세요. id 없는 DELETE /v1/decisions는 절대 허용하지 마세요. 이 경로는 모든 봇 챌린지에서 제외하세요. README에 단일 호스트용 nginx 및 Traefik 예제가 있습니다.
  3. 레지스트리에서 플러그인을 설치합니다. 필요한 권한은 네트워크 접근 하나뿐이며, LAPI URL과 변경 기능이 켜져 있는 동안 cloudflare-dns.com에 접근합니다.
  4. Plugins에서 플러그인 설정을 엽니다. LAPI URL(/v1 제외), 머신 ID와 비밀번호, 시간대를 입력하고 저장합니다.
  5. Plugins, CrowdSec을 열고 Check setup을 선택합니다. 지적된 항목을 모두 수정하세요.
  6. 차단과 차단 해제를 허용하려면 “변경 허용”을 켜고 서버와 집 주소를 “보호 대상 주소”에 추가하세요.

Cloudflare Workers에서는 동기화에 EmDash 배포 가이드의 Cron 트리거가 필요합니다. MCP 도구를 사용하려면 Plugins에서 이 플러그인의 Agent 접근을 켜세요.

자주 묻는 질문

이 플러그인이 제 CrowdSec LAPI를 공개하나요? 아니요. EmDash는 플러그인이 공개 HTTPS 호스트 이름만 호출하도록 허용하므로 LAPI는 그중 하나의 경로를 통해 접근하지만, 앞단의 프록시는 EmDash 서버의 주소와 플러그인이 사용하는 라우트만 허용합니다. 그 외에는 모두 403을 받으며, 모든 요청에는 플러그인 자체의 머신 로그인도 필요합니다. LAPI 자체는 계속 127.0.0.1에서 수신합니다. 설정 방법은 README에 나와 있습니다.

비밀번호가 맞는데도 “incorrect Username or Password”로 로그인에 실패합니다. LAPI는 name/version 형식이 아닌 User-Agent를 거부합니다. 플러그인의 User-Agent를 교체하는 프록시가 있으면 이런 일이 생깁니다.

설정 점검에서 라우트가 거부되었다고(403) 나옵니다. 프록시가 EmDash 서버에 대해 해당 라우트를 허용하지 않은 것입니다. README에 나온 대로 추가하세요.

처음 며칠의 수치가 낮은 이유는 무엇인가요? 기록은 최신 순으로 한 번에 한 구간씩 읽어 옵니다. 아직 읽는 중이면 페이지에 그렇게 표시됩니다.

결정 목록이 cscli decisions list보다 짧은 이유는 무엇인가요? 자신의 결정만 나열하기 때문입니다. 커뮤니티 차단 목록과 목록에는 수천 개가 더 있으며, 목록 위에 하나의 개수로 표시됩니다.

상위 목록이 근사치인 이유는 무엇인가요? 하루마다 가장 빈번한 25개 값만 유지하므로, 드문 값은 실제보다 적게 집계됩니다.

평판 배지는 어디에 있나요? 플러그인은 CrowdSec 클라우드에 절대 질의하지 않습니다. 탐색기에는 “Banned now”와 “Seen before”라는 로컬 힌트가 표시됩니다.

제 LAPI는 여러 호스트의 경고를 수집합니다. 각 경고에는 이를 발생시킨 엔진이 기록됩니다. Engine names 설정에서 이름을 지정하세요.

이 경고를 삭제할 수 없는 이유는 무엇인가요? 삭제하면 바운서가 알지 못하는 채로 해당 결정도 삭제되기 때문입니다. 결정을 먼저 제거하고 2분 뒤에 경고를 삭제하세요.

제 차단이 거부된 이유는 무엇인가요? 메시지에 해당 규칙이 표시됩니다. README에 모든 규칙이 나열되어 있습니다.

트래픽 차트의 데이터는 어디서 오나요? 자신의 엔진과 방화벽 바운서의 메트릭에서 오며 CrowdSec 클라우드에서는 오지 않습니다. 설정에서 해당 URL을 지정하세요.

날짜는 어느 시간대 기준인가요? Time zone 설정을 따르며, 변경하지 않으면 Australia/Sydney입니다. 알 수 없는 이름이면 동기화가 일시 중지되고 기록은 유지됩니다.

보안

보안 문제는 저장소의 보안 권고 양식을 통해 비공개로 신고해 주세요: https://github.com/shanelord01/emdash-crowdsec/security/advisories/new

플러그인이 접근할 수 있는 것

네트워크 요청뿐이며, 두 곳으로만 갑니다. 입력한 LAPI URL, 그리고 “변경 허용”이 켜져 있는 동안 사이트와 LAPI 호스트의 주소를 조회하기 위한 cloudflare-dns.com입니다. 콘텐츠, 사용자, 미디어에는 접근할 수 없습니다. README에 나열된 LAPI 라우트만 사용하며, 필터가 있는 DELETE /v1/decisions나 경고 일괄 삭제는 절대 하지 않고, 리디렉션도 따르지 않으므로 비밀번호가 다른 호스트로 전송되는 일이 없습니다. 평문 HTTP와 자격 증명이 포함된 URL은 거부됩니다.

자격 증명

머신 비밀번호는 EMDASH_ENCRYPTION_KEY로 암호화되어 저장됩니다. LAPI 토큰은 저장되지 않으며, 실행할 때마다 로그인하고 메모리에만 보관합니다. 플러그인 전용 머신을 만들고, EmDash 서버와 플러그인의 라우트만 통과하도록 LAPI를 공개하세요.

누가 무엇을 할 수 있나

편집자와 관리자는 카드, 페이지, 읽기 도구를 볼 수 있습니다. 변경은 관리자만 할 수 있으며, “변경 허용”이 켜져 있을 때만 가능합니다. 페이지에서는 플러그인이 직접 역할을 확인합니다. 쓰기 도구의 라우트는 EmDash가 관리자로 제한합니다.

차단 보호

차단 대상에 다음 중 하나라도 포함되면 해당 규칙을 알려 주며 거부됩니다. 요청자의 주소(MCP 도구의 경우 클라이언트의 송신 주소), 사이트 또는 LAPI 호스트의 주소, “보호 대상 주소” 항목, 사설·루프백·링크 로컬·CGNAT(Tailscale의 100.64.0.0/10 포함)·멀티캐스트·예약 주소 공간, /16 또는 /48보다 넓은 범위, CrowdSec 허용 목록 항목(수동 차단에서는 LAPI가 이를 건너뛰므로 가장 먼저 확인됨). IPv4를 담은 IPv6는 그 IPv4 주소로 판단하며, Teredo는 거부됩니다. 잘못된 보호 항목이 하나라도 있으면 모든 변경이 거부됩니다.

경고 삭제

경고는 해당 결정이 종료된 지 2분이 넘은 경우에만 삭제됩니다. 경고를 삭제하면 바운서가 알지 못하는 채로 그 결정도 함께 삭제되기 때문입니다.

변경 내역

0.1.3

  • EmDash 1.2 이상에서는 페이지가 사이드바의 하나의 CrowdSec 폴더(Overview, Alerts, Decisions)에 묶입니다. 주소는 바뀌지 않으며, 이전 EmDash에서는 하나씩 나열됩니다.
  • 출처별 활성 차단에는 엔진의 Prometheus level: full이 필요합니다. README의 Metrics 섹션에 설명되어 있습니다.
  • 새 권한은 없으며 MCP 도구도 변경되지 않았습니다.

0.1.2

  • 경고 탐색기의 필터가 한 줄로 배치되고, 선택하는 즉시 적용됩니다.

0.1.1

  • CrowdSec 경고 페이지가 탐색기가 되었습니다. 한 시간부터 전체 기록까지 또는 마지막 방문 이후까지의 기간, 종류별 탭, 전환 가능한 히스토그램이 있는 두 가지 분류, 칩 형태의 필터, 주소별로 묶은 경고(각 주소 보기와 각 경고의 실시간 상세 포함), “Banned now” 및 “Seen before” 힌트를 제공합니다.
  • 엔진: 각 경고가 이를 발생시킨 CrowdSec 에이전트를 분류와 필터로 기록하며, 둘 이상일 때는 열과 차트도 표시됩니다. 이름은 Engine names 설정에서 지정합니다.
  • 새 MCP 도구 alerts_explorer. 업데이트 시 EmDash가 Agent 접근을 다시 요청합니다.
  • 저장된 경고는 처음 몇 번의 동기화 동안 간결한 경고 로그로 옮겨집니다.
  • 데모 데이터를 제거했습니다. 플러그인에는 접근 가능한 LAPI가 필요합니다. 데모 데이터를 사용하던 설치 환경은 LAPI 설정을 요청하며, 설정이 끝나면 데모 행이 삭제됩니다.
  • 더 짧아진 시간 표시, 더 좁아진 표, 3일 단위 막대로 된 90일 페이지, 대시보드를 방문하지 않아도 설정에 따라 동작하는 메트릭 샘플러.

0.1.0

최초 릴리스: 대시보드 카드, CrowdSec 페이지, 경고 및 결정 페이지, 설정 점검, 트래픽 차트, MCP 도구 8개, 그리고 관리자를 위한 선택적 차단, 차단 해제, 경고 삭제(자신의 주소를 지키는 보호 장치 포함).

전체 기록: CHANGELOG.md.