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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
canarytokens-docker — 나만의 Canarytokens를 빠르게 구축하기 위한 Docker 구성입니다. | Kitploit
도구/GitHubGitHub/thinkst/canarytokens-docker
Defensive ToolsNetwork SecurityIntrusion DetectionIncident Response
GitHubthinkst/canarytokens-docker

canarytokens-docker

나만의 Canarytokens를 빠르게 구축하기 위한 Docker 구성입니다.

저장소 보기
65811941개월 전Kitploit 검토 완료

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

Dockerized Canarytokens

Thinkst Applied Research 제공

개요

Canarytokens는 네트워크에서의 활동과 동작을 추적하는 데 도움을 줍니다.

문제가 발생하면 여기에서 FAQ를 확인하거나 이슈를 생성해 주세요. 최대한 빨리 답변드리겠습니다.

목차

  • 행동 강령
  • 사전 요구 사항
  • v3로 마이그레이션
  • 설정 (Ubuntu)
  • 데이터 유지
  • HTTPS 활성화 방법
  • Canarytokens 사이트에 기본 인증 활성화
  • 새로운 기능
  • FAQ
  • 기여

행동 강령

이 프로젝트와 이 프로젝트에 참여하는 모든 사람은 행동 강령의 적용을 받습니다. 참여함으로써 귀하는 이 강령을 준수할 것에 동의하는 것입니다. 부적절한 행동은 [email protected]으로 신고해 주세요.

사전 요구 사항

  • 최소 하나의 도메인 이름. PDF 열기 추적을 활성화하려면 최소 두 개의 도메인이 필요합니다.
  • 인터넷에 노출된 Docker 호스트. Linux 호스트에 Docker를 설치할 수 있습니다.

v3로 마이그레이션

  • letsencrypt 사용 여부에 따라: docker compose -f docker-compose.yml down 또는 docker compose -f docker-compose-letsencrypt.yml down
  • 이전 버전의 Docker에서 실행 중인 경우 업그레이드해야 합니다.
  • docker-compose는 더 이상 작동하지 않으며, docker compose로 Canarytokens 인스턴스를 실행하기 전에 docker network prune을 실행해야 합니다. Canarytokens v2는 여전히 작동합니다.
  • 최신 버전의 canarytokens-docker 저장소를 가져옵니다.
  • 그리고 이에 맞춰: docker compose -f docker-compose.yml up -d 또는 docker compose -f docker-compose-letsencrypt.yml up -d

참고: 업데이트된 canarytokens-docker 저장소에는 더 이상 Canarytokens v2용 Dockerfile이 포함되어 있지 않으므로, v2를 실행하려면 태그된 이미지 thinkst/canarytokens:v2_latest를 사용해야 합니다. v3로의 전환을 적극 권장합니다. 마이그레이션에 어려움이 있으면 저희에게 연락해 주세요.

설정 (Ubuntu)

  • Docker 호스트를 부팅하고 공용 IP를 기록해 둡니다.
  • 도메인의 네임서버가 Docker 호스트의 공용 IP를 가리키도록 구성합니다. 이는 등록 기관(Registrar)에서 변경해야 합니다. 영역 파일에서 NS 레코드만 변경하는 것으로는 충분하지 않습니다. 도메인의 A 레코드가 공용 IP를 가리켜야 합니다.
  • Docker 설정을 클론합니다:
root@kitploit:~
$ git clone https://github.com/thinkst/canarytokens-docker
$ cd canarytokens-docker
  • Docker compose를 설치합니다 (아직 없는 경우):
root@kitploit:~
$ sudo apt-get install python3-pip python3-dev
$ sudo pip install -U docker-compose
# PyYAML 오류로 중단되면 libyaml 개발 패키지를 설치하세요.
# sudo apt-get install libyaml-dev
  • 구성에 사용할 두 개의 .env 파일, 즉 switchboard.env.dist와 frontend.env.dist를 배포합니다. 이 파일들을 각각 switchboard.env와 frontend.env로 복사/이름 변경해야 합니다 (이렇게 하면 변경 사항을 풀(pull)해도 구성이 날아가지 않습니다). 완료되면 편집할 수 있습니다:
  1. 새로 만든 두 구성 파일 switchboard.env와 frontend.env를 모두 살펴보고 Required Settings 섹션을 채웁니다. Optional Settings는 작동에 필요하지 않으며 합리적인 기본값이 있으므로 필요하지 않으면 변경하지 마세요.

  2. 다음으로 알림을 보내는 데 사용할 이메일 제공업체를 결정합니다. mailgun, SMTP, sendgrid 중에서 선택해야 합니다. 관련 필수 세부 정보는 해당 .env 파일에서 찾을 수 있습니다.

  3. 다음 명령으로 switchboard.env와 frontend.env 양쪽 모두에 CANARY_WG_PRIVATE_KEY_SEED로 설정할 단일 고유 WireGuard 키 시드를 생성합니다:

root@kitploit:~
dd bs=32 count=1 if=/dev/urandom 2>/dev/null | base64
  • 다음은 다음을 사용하는 설정의 예시 파일입니다:
    • canarytoken 트리거용 스위치보드의 도메인 example1.com, example2.com, example3.com (PDF)

    • 스위치보드 트리거용 공용 IP 1.1.1.1

    • 프론트엔드를 제공하는 도메인 'my.domain'

    • Mailgun 도메인 이름 'x.y' 및 API 키 'zzzzzzzzzz'

    • WireGuard 키 시드 vk/GD+frlhve/hDTTSUvqpQ/WsQtioKAri0Rt5mg7dw=

    • frontend.env

root@kitploit:~
#이 도메인들은 일반 목적 토큰에 사용됩니다.
CANARY_PUBLIC_IP=1.1.1.1
CANARY_DOMAINS=example1.com,example2.com

#이 도메인들은 PDF 토큰에만 사용됩니다.
CANARY_NXDOMAINS=example3.com

#히스토리 페이지에서 Maps JavaScript API로 사건 지도를 생성하려면 Google Cloud API 키가 필요합니다.
CANARY_GOOGLE_API_KEY=<grab google maps api key>
LOG_FILE=frontend.log
  • switchboard.env (이메일용 Mailgun 사용 예시)
root@kitploit:~
CANARY_PUBLIC_DOMAIN=mydomain.com
LOG_FILE=switchboard.log
CANARY_MAILGUN_DOMAIN_NAME=x.y
CANARY_MAILGUN_API_KEY=zzzzzzzzzz
[email protected]
CANARY_ALERT_EMAIL_FROM_DISPLAY="Example Canarytokens"
CANARY_ALERT_EMAIL_SUBJECT="Canarytoken"
CANARY_WG_PRIVATE_KEY_SEED=vk/GD+frlhve/hDTTSUvqpQ/WsQtioKAri0Rt5mg7dw=
  • 마지막으로 이미지를 다운로드하고 시작합니다:
root@kitploit:~
$ docker compose up
  • 프론트엔드와 스위치보드가 이제 포그라운드에서 실행됩니다. 프론트엔드는 http://example1.com/generate에서 접근할 수 있습니다. 백그라운드에서 실행하려면 다음을 사용할 수 있습니다.
root@kitploit:~
$ docker compose up -d

참고: 도메인이 하나만 있고 PDF 토큰을 사용하려면 CANARY_NXDOMAINS에 서브도메인을 사용할 수 있습니다. example.com을 도메인으로 사용하는 경우 CANARY_NXDOMAINS를 nx.example.com으로 설정할 수 있습니다. 그런 다음 DNS 관리자 콘솔(도메인 DNS 레코드를 편집할 수 있는 곳)에 로그인하여 nx.example.com의 NS 레코드를 example.com에 매핑하도록 추가합니다.

데이터 유지

토큰은 Docker 컨테이너 외부에 존재하는 Redis 데이터베이스 파일에 저장됩니다. canarytokens-docker/data 디렉터리에서 dump.rdb를 찾으세요.

모든 토큰을 지우려면 dump.rdb를 삭제하세요.

HTTPS 활성화 방법

HTTPS로 Canarytokens 서버를 실행하기 위한 설정을 (대부분) 자동화하는 별도의 docker-compose 파일이 있습니다. 다음을 수행해야 합니다:

  • certbot.env를 편집합니다. 도메인과 이메일 주소를 제공해야 합니다 (certbot 등록 과정에 필요). 예:
root@kitploit:~
# 단일 도메인 이름 지정
MY_DOMAIN_NAME=example.com

# 또는 이 다른 키로 여러 도메인 이름 지정 (위의 MY_DOMAIN_NAME을 주석 처리하세요):
# MY_DOMAIN_NAMES=example.com anotherexample.net thirdexample.org

[email protected]
  • 이제 서버를 시작하려면 docker compose -f docker-compose-letsencrypt.yml up을 사용합니다. 이 명령은 서버를 포그라운드에서 실행하므로 모든 것이 제대로 시작되는지 확인할 수 있습니다.

  • 모든 것이 실행 중이면 CTRL+C를 누르고 docker compose -f docker-compose-letsencrypt.yml down을 실행하여 깨끗한 상태로 만든 다음, -d를 추가하여 docker compose -f docker-compose-letsencrypt.yml up -d를 다시 실행하면 서버가 백그라운드(데몬 모드)에서 실행됩니다.

  • HTTPS 방법을 사용하면 지정한 이메일과 도메인 이름으로 인증서를 등록하게 됩니다. let's encrypt 프로세스(certbot 사용)에 대한 자세한 내용은 여기에서 확인할 수 있습니다. 이 과정에는 지정한 도메인의 소유자임을 확인하고 let's encrypt에 등록하는 작업이 포함됩니다.

  • 속도 제한(RATE LIMIT)이 있습니다. 따라서 서버를 계속 올렸다 내렸다 하지 마세요. 그렇지 않으면 let's encrypt 인증서 생성 한도에 빠르게 도달하게 됩니다. 이를 피하기 위해 테스트 목적으로 cerbot-nginx/start.sh의 ./certbot-auto 명령에 --staging을 추가하여 let's encrypt가 인증서를 발급하는지 테스트할 수 있습니다.

Canarytokens 사이트에 기본 인증 활성화

공개적으로 접근 가능한 canarytokens 사이트를 운영하면서 접근 시 기본 인증을 요구하려면 다음 단계를 따르세요.

  1. git clone https://github.com/thinkst/canarytokens-docker.git
  2. nginx 폴더로 이동합니다:
    • HTTP의 경우:
    root@kitploit:~
    cd canarytokens-docker/nginx
    
    • HTTPS의 경우:
    root@kitploit:~
    cd canarytokens-docker/certbot-nginx
    
  3. sudo htpasswd -c .htpasswd user 여기서 user는 사용하려는 사용자 이름입니다.
  4. sudo chown <user>:<user> .htpasswd 여기서 user는 로컬 Linux 사용자입니다.
  5. 해당 nginx.conf를 편집하고,
root@kitploit:~
server {
    ...
    location ~* (/generate|/manage|/download|/history|/settings|/resources|/legal).* {
        auth_basic           "Basic Auth Restricted Canrytokens"; <---- ADD
        auth_basic_user_file /etc/nginx/.htpasswd;                 <---- ADD
  1. 해당 Dockerfile을 편집하고 COPY nginx.conf ... 아래에 다음을 추가합니다.
root@kitploit:~
COPY .htpasswd /etc/nginx/.htpasswd
  1. 다음을 사용하여 이미지를 다시 빌드합니다:
    • HTTP의 경우:
    root@kitploit:~
    docker compose build
    
    • HTTPS의 경우:
    root@kitploit:~
    docker compose -f docker-compose-letsencrypt.yml build
    

docker 컨테이너를 다시 시작하면 끝입니다!

위 방법을 사용할 때 발생한 사소한 문제를 잡아준 @mamisano에게 감사드립니다 🙏

새로운 기능

최근에 추가된 내용을 빠르고 쉽게 확인할 수 있도록 몇 가지 새로운 기능/추가 사항을 여기에 기록할 예정입니다.

  • "What's new?"를 Github Discussions로 옮겼습니다. 여기에서 확인하세요.

  • 이제 선택한 웹훅으로 오류 로그를 보낼 수 있습니다. 오류가 로그 파일에만 남는 대신 귀하 또는 팀이 실패를 인지할 수 있기를 바랍니다. switchboard.env 파일의 ERROR_LOG_WEBHOOK 값에 해당 웹훅 URI를 입력하기만 하면 됩니다. (2021-04-09)

  • 배포되는 .env 파일의 이름을 switchboard.env.dist와 frontend.env.dist로 변경했습니다. 이렇게 하면 저장소에서 변경 사항을 풀(pull)해도 로컬 구성이 날아가지 않습니다. (구성에는 여전히 switchboard.env와 frontend.env를 사용합니다. 단지 저장소를 새로 클론한 사용자는 dist 파일을 복사/이름 변경해야 한다는 의미입니다.)

  • switchboard.env에 CANARY_IPINFO_API_KEY라는 추가 환경 변수를 추가했습니다. 이를 통해 원하는 경우 ipinfo.io API 키를 사용할 수 있습니다 (ipinfo.io에는 하루 최대 1000건의 무료 요청이 있다는 점을 기억하세요).

  • 이제 slack을 지원합니다. 웹훅을 제공할 때 slack 웹훅 URL을 입력하기만 하면 됩니다. (@shortstack에게 감사드립니다).

  • frontend.env에 CANARY_AWSID_URL이라는 새 환경 변수를 추가했습니다. 이를 통해 AWS ID 토큰에 대해 비공개 또는 다른 URL을 지정할 수 있습니다. 즉, 계정 간 전환을 쉽게 할 수 있습니다. (2018-10-17)

  • 다른 아키텍처의 시스템에서 실행할 이미지를 빌드하려면 docker compose build --build-arg ARCH=<target arch>/로 이미지를 빌드할 수 있습니다. 인수 끝의 슬래시에 유의하세요. 이 슬래시가 포함되지 않으면 이미지가 올바르게 빌드되지 않습니다.

FAQ

FAQ는 여기에서 확인할 수 있습니다.

기여

풀 리퀘스트를 제출하기 전에 행동 강령 및 기여 가이드 문서를 확인해 주세요.

귀중한 기여를 기대합니다.

도구 다운로드