
나만의 Canarytokens를 빠르게 구축하기 위한 Docker 구성입니다.
Thinkst Applied Research 제공
Canarytokens는 네트워크에서의 활동과 동작을 추적하는 데 도움을 줍니다.
문제가 발생하면 여기에서 FAQ를 확인하거나 이슈를 생성해 주세요. 최대한 빨리 답변드리겠습니다.
이 프로젝트와 이 프로젝트에 참여하는 모든 사람은 행동 강령의 적용을 받습니다. 참여함으로써 귀하는 이 강령을 준수할 것에 동의하는 것입니다. 부적절한 행동은 [email protected]으로 신고해 주세요.
docker compose -f docker-compose.yml down
또는 docker compose -f docker-compose-letsencrypt.yml downdocker-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로의 전환을 적극 권장합니다. 마이그레이션에 어려움이 있으면 저희에게 연락해 주세요.
$ git clone https://github.com/thinkst/canarytokens-docker
$ cd canarytokens-docker
$ sudo apt-get install python3-pip python3-dev
$ sudo pip install -U docker-compose
# PyYAML 오류로 중단되면 libyaml 개발 패키지를 설치하세요.
# sudo apt-get install libyaml-dev
switchboard.env.dist와 frontend.env.dist를 배포합니다. 이 파일들을 각각 switchboard.env와 frontend.env로 복사/이름 변경해야 합니다 (이렇게 하면 변경 사항을 풀(pull)해도 구성이 날아가지 않습니다). 완료되면 편집할 수 있습니다:새로 만든 두 구성 파일 switchboard.env와 frontend.env를 모두 살펴보고 Required Settings 섹션을 채웁니다. Optional Settings는 작동에 필요하지 않으며 합리적인 기본값이 있으므로 필요하지 않으면 변경하지 마세요.
다음으로 알림을 보내는 데 사용할 이메일 제공업체를 결정합니다. mailgun, SMTP, sendgrid 중에서 선택해야 합니다. 관련 필수 세부 정보는 해당 .env 파일에서 찾을 수 있습니다.
다음 명령으로 switchboard.env와 frontend.env 양쪽 모두에 CANARY_WG_PRIVATE_KEY_SEED로 설정할 단일 고유 WireGuard 키 시드를 생성합니다:
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
#이 도메인들은 일반 목적 토큰에 사용됩니다.
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
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=
$ docker compose up
$ 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로 Canarytokens 서버를 실행하기 위한 설정을 (대부분) 자동화하는 별도의 docker-compose 파일이 있습니다. 다음을 수행해야 합니다:
certbot.env를 편집합니다. 도메인과 이메일 주소를 제공해야 합니다 (certbot 등록 과정에 필요).
예:# 단일 도메인 이름 지정
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 사이트를 운영하면서 접근 시 기본 인증을 요구하려면 다음 단계를 따르세요.
git clone https://github.com/thinkst/canarytokens-docker.gitcd canarytokens-docker/nginx
cd canarytokens-docker/certbot-nginx
sudo htpasswd -c .htpasswd user 여기서 user는 사용하려는 사용자 이름입니다.sudo chown <user>:<user> .htpasswd 여기서 user는 로컬 Linux 사용자입니다.nginx.conf를 편집하고,server {
...
location ~* (/generate|/manage|/download|/history|/settings|/resources|/legal).* {
auth_basic "Basic Auth Restricted Canrytokens"; <---- ADD
auth_basic_user_file /etc/nginx/.htpasswd; <---- ADD
Dockerfile을 편집하고 COPY nginx.conf ... 아래에 다음을 추가합니다.COPY .htpasswd /etc/nginx/.htpasswd
docker compose build
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는 여기에서 확인할 수 있습니다.
풀 리퀘스트를 제출하기 전에 행동 강령 및 기여 가이드 문서를 확인해 주세요.
귀중한 기여를 기대합니다.