Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

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

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

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
Cowrie and Grafana Honeypot using Terraform on DigitalOcean — 중간 상호작용 SSH/Telnet 허니팟 - Cowrie, Loki, Promtail, Grafana로 구축, Terraform을 통해 DigitalOcean에 프로비저닝, GitLab CI 검증 파이프라인 포함 | Kitploit
도구/GitLabGitLab/oseguera12/cowrie-honeypot-digitalocean
Cloud Infrastructure SecurityNetwork SecurityDevSecOpsThreat IntelligenceLog Analysis
GitLaboseguera12/cowrie-honeypot-digitalocean

Cowrie and Grafana Honeypot using Terraform on DigitalOcean

중간 상호작용 SSH/Telnet 허니팟 - Cowrie, Loki, Promtail, Grafana로 구축, Terraform을 통해 DigitalOcean에 프로비저닝, GitLab CI 검증 파이프라인 포함

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
저장소 보기
웹사이트
1234개월 전아직 검토되지 않음

DigitalOcean에서 Terraform을 사용한 Cowrie 및 Grafana Honeypot

데모 비디오

목차

  • 목차
  • 시스템 개요
  • 기술 스택
  • 프로젝트 디렉토리 구조
  • 하드웨어 요구사항
  • 설치 및 설정
  • Terraform 상태 관리
  • CI/CD 파이프라인
  • 시스템 아키텍처
  • 관찰 결과
  • 사용 방법
  • 프로젝트 문서
    • 아키텍처 설계 및 절충점
    • 시스템 실행 과정
    • 발생한 문제점 및 한계
    • 향후 개선 사항
  • 보안 고려 사항
  • 기여자
  • 라이선스

시스템 개요

Terraform을 사용하여 DigitalOcean 드롭렛에 배포된 SSH/Telnet 허니팟 스택입니다. 공격은 Cowrie에 의해 수집되고, Loki에 저장되며, Grafana에서 공격 출처의 실시간 세계 지도로 시각화됩니다.

기술 스택

  • DigitalOcean
  • Terraform
  • Docker
  • Cowrie
  • Loki
  • Grafana
  • Promtail
  • DB-IP (City Lite 다운로드)

프로젝트 디렉토리 구조```

honeypot/ ├── cowrie/ │ └── etc/ │ ├── cowrie.cfg # Cowrie honeypot configuration │ └── userdb.txt # Accepted and rejected fake credentials ├── geoip/ │ └── .gitkeep # Placeholder - MMDB files are gitignored ├── grafana/ │ ├── provisioning/ │ │ ├── dashboards/ │ │ │ ├── dashboards.yml # Provisioning: dashboard provider │ │ │ └── honeypot-dashboard.json # Pre-built Attack Monitor dashboard │ │ └── datasources/ │ │ └── loki.yml # Auto-provisioned Loki datasource │ └── grafana.ini # Grafana server settings ├── loki/ │ └── config.yml # Loki single-binary config and retention ├── promtail/ │ └── config.yml # Promtail scrape and GeoIP pipeline ├── scripts/ │ ├── geoip-update.sh # Download or refresh GeoIP database │ └── setup-firewall.sh # Host UFW rules for honeypot ports ├── terraform/ │ ├── templates/ │ │ ├── cloud-init.yaml.tftpl # Droplet first-boot script (Terraform-templated) │ │ └── env.tftpl # .env lines embedded via Terraform │ ├── backend.tf # Terraform backend config │ ├── main.tf # Droplet, SSH key, firewall, cloud-init │ ├── outputs.tf # IPs and helpful post-apply values │ ├── terraform.tfvars.example # Example variable values (copy to terraform.tfvars) │ ├── variables.tf # Terraform input variables │ └── versions.tf # Terraform and provider version constraints ├── .env.example # Example environment file for manual setup ├── .gitignore # Ignored paths and files ├── .gitlab-ci.yml # CI/CD pipeline: fmt, validate, Checkov ├── docker-compose.yml # Docker Compose file for the honeypot stack ├── LICENSE # GPLv2 license ├── manual-deployment.sh # Legacy VM bootstrap without Terraform └── README.md # Project documentation

## 하드웨어 요구 사항

> 참고: 이러한 요구 사항은 2026년 5월 기준 DigitalOcean Basic Droplet 플랜을 기반으로 하며, 프로젝트를 실행하기 위한 최소 요구 사항입니다.

- 제공자: DigitalOcean
- 플랜: Basic Droplet - 1 Intel vCPU
- RAM: 1 GB (+2 GB 스왑)
- 스토리지: 35 GB NVMe SSD
- OS: Ubuntu 24.04 LTS

## 설치 및 설정

>참고: 설치 후, 새 터미널을 열고 `ADMIN_SSH_PORT`(기본값: 2022)에서 여전히 SSH가 가능한지 확인한 후 원래 세션을 종료하는 것이 좋습니다.

### Terraform 배포 (권장)

1. DigitalOcean API 토큰을 읽기/쓰기 권한으로 생성합니다:

- DigitalOcean에 로그인하고 Account > API > Tokens > Generate New Token으로 이동합니다.
- 토큰 이름(예: "Cowrie Honeypot")을 지정하고 "Full Access" 권한을 선택합니다.
- "Generate Token"을 클릭하고 토큰 값을 안전한 위치에 복사합니다(다시 볼 수 없습니다).

2. 로컬 머신에서 SSH 키 쌍을 생성하고 공개 키 경로를 복사합니다.

3. `terraform` 디렉토리로 이동한 후 변수 파일을 복사하고 편집합니다:

> 참고: 적용 전에 `terraform.tfvars`에서 `do_token`, `ssh_public_key_path`, `grafana_admin_password`를 최소한으로 구성해야 합니다.```bash
cd terraform
cp terraform.tfvars.example terraform.tfvars
  1. 구성을 적용하고 배포를 시작합니다:

참고: Terraform이 로컬 머신에 설치되어 있어야 합니다. 자세한 내용은 Terraform 설치 가이드를 참조하십시오.```bash terraform init # Initialize Terraform and download providers terraform apply

5. 테스트 시 - 교체하여 재배포:```bash
terraform apply -replace="digitalocean_droplet.honeypot" 
  1. 정리 - 작업이 끝나면 인프라를 파괴하세요:```bash terraform destroy
### 수동 배포 (레거시)

1. 위의 하드웨어 요구 사항을 충족하는 DigitalOcean 드롭렛을 생성하고 SSH 키를 추가합니다.

2. 드롭렛에 SSH로 접속하거나 DigitalOcean 웹 콘솔을 사용하여 다음 명령을 실행합니다:```bash
ssh root@<your-droplet-ip> # If using DigitalOcean web console, skip this command
git clone https://gitlab.com/Oseguera12/cowrie-honeypot-digitalocean.git /opt/honeypot
cd /opt/honeypot
cp .env.example .env
nano .env
bash manual-deployment.sh

Terraform 상태 관리

참고: 기본적으로 Terraform은 로컬 머신의 terraform/terraform.tfstate에 상태를 기록합니다. 이 파일에는 민감한 출력 값(Droplet IP, Grafana 비밀번호, SSH 키 지문)이 포함되어 있으며 절대 커밋해서는 안 됩니다. .gitignore는 *.tfstate 및 *.tfstate.*를 포함하고 있습니다.

로컬 상태의 위험:

  • 머신이 손실되거나 파일이 삭제되면 유실됨
  • 팀 구성원 간 공유 불가
  • 잠금 기능 없음 — 두 개의 동시 apply 실행이 파일을 손상시킬 수 있음

개인 실습 환경을 넘어서는 경우 원격 백엔드로 전환하십시오. terraform/backend.tf에는 (S3 호환) DigitalOcean Spaces 설정이 주석 처리되어 있습니다.

원격 백엔드를 활성화하려면:

  1. DigitalOcean 계정에서 Spaces 버킷 생성
  2. API > Spaces Keys에서 Spaces 액세스 키 생성
  3. 환경 변수로 키를 내보내기 (terraform.tfvars에 넣지 마십시오): ```bash export AWS_ACCESS_KEY_ID= export AWS_SECRET_ACCESS_KEY=
  4. terraform/backend.tf 파일에서 backend "s3" 블록의 주석을 해제하고 버킷 이름과 리전 엔드포인트를 입력하세요.
  5. terraform init -migrate-state를 실행하여 기존 로컬 스테이트를 Spaces로 마이그레이션하세요.

CI/CD 파이프라인

.gitlab-ci.yml은 모든 푸시 시 validate 단계에서 세 가지 작업을 실행합니다.

작업도구목적
terraform:fmthashicorp/terraform:1.8포맷팅: terraform fmt이 필요한 파일이 있으면 실패
terraform:validatehashicorp/terraform:1.8DigitalOcean에 접촉하지 않고 구성 유효성 검사
checkov:scanbridgecrew/checkov:latestTerraform 코드에서 IaC 설정 오류 검사

참고: terraform:fmt 및 terraform:validate는 실패 시 파이프라인을 차단합니다. checkov:scan은 일부 결과가 의도적인 절충안이므로 allow_failure: true로 설정되어 있습니다. 작업 자체를 비활성화하기보다는 인라인 # checkov:skip=CKXXX 주석을 사용하여 특정 수용 가능한 결과를 억제하세요.

알려진 수용된 위험

CKV_DIO_4("방화벽 인그레스가 완전히 열려 있지 않은지 확인")는 전체 digitalocean_firewall 리소스에 대해 한 번 발생합니다. terraform/main.tf의 리소스 블록 내부에 # checkov:skip=CKV_DIO_4: 주석 하나를 넣어 억제했습니다. 아래 표는 각 열린 포트가 의도적인 이유를 설명합니다.

도구 다운로드