Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

フィードお問い合わせプライバシー© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
Cowrie and Grafana Honeypot using Terraform on DigitalOcean — Cowrie、Loki、Promtail、Grafanaを使用して構築された中程度の対話型SSH/Telnetハニーポット - GitLab CI検証パイプラインを使用してTerraform経由でDigitalOcean上にプロビジョニング。 | Kitploit
ツール/GitLabGitLab/oseguera12/cowrie-honeypot-digitalocean
クラウドインフラストラクチャセキュリティネットワークセキュリティDevSecOps脅威インテリジェンスログ分析
GitLaboseguera12/cowrie-honeypot-digitalocean

Cowrie and Grafana Honeypot using Terraform on DigitalOcean

Cowrie、Loki、Promtail、Grafanaを使用して構築された中程度の対話型SSH/Telnetハニーポット - GitLab CI検証パイプラインを使用してTerraform経由でDigitalOcean上にプロビジョニング。

リポジトリを見る

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有
ウェブサイト
13426日前未レビュー

Terraform を使用した DigitalOcean 上の Cowrie & Grafana ハニーポット

デモ動画

目次

  • システム概要
  • 技術
  • プロジェクトディレクトリ構造
  • ハードウェア要件
  • インストールとセットアップ
  • 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 ├── docs/ │ └── ttp-to-runtime-rules.md # Observed attacker TTPs → Falco rules (eks-gitops, platform-engineering-lab) ├── 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 ├── metrics/ │ ├── runtime-metrics.schema.json # Shared schema — identical across all 4 portfolio projects │ └── runtime-metrics.json # Generated by scripts/export-honeypot-metrics.sh; gitignored, not committed ├── 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 │ ├── export-honeypot-metrics.sh # Queries Grafana/Loki, writes attacker_telemetry │ └── emit-runtime-metrics.py # Wraps attacker_telemetry in the shared metrics schema ├── 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, metrics schema/export ├── 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

> **コンテナバージョン更新後のメモリ余裕について:** `docker-compose.yml` は、このドロップレットサイズが当初調整されていたものよりも新しい Grafana (12.0.0)、Loki、Promtail (3.6.13) イメージを固定しています。サービスごとの `mem_limit`/`memswap_limit` の値は変更されていません — 初回デプロイ後に `docker stats` を監視し、いずれかのコンテナが常に制限に近い場合は、ドロップレットプランを引き上げる(または Loki の `retention_period` / Grafana のキャッシュを削減する)ことを検討してください。

## インストールとセットアップ

>注: インストール後、元のセッションを閉じる前に、新しいターミナルを開いて `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. 上記のハードウェア要件とSSHキーを使用してDigitalOceanドロップレットを作成します。

2. ドロップレットにSSH接続するか、DigitalOceanのWebコンソールを使用して、以下のコマンドを実行します:```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.* を対象としています。

ローカル状態のリスク:

  • マシンを失うかファイルが削除されると失われる
  • チームメンバー間で共有できない
  • ロックがない — 2 つの同時 apply 実行がファイルを破損する可能性がある

個人用ラボを超える用途では、リモートバックエンドに切り替えてください。terraform/backend.tf には、コメントアウトされた DigitalOcean Spaces 設定(S3 互換)が含まれています。

リモートバックエンドを有効にするには:

  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 を実行して、既存のローカル state を Spaces に移行します。

CI/CD パイプライン

.gitlab-ci.yml は、プッシュごとに validate ステージで 4 つのジョブを実行し、さらに metrics ステージで 1 つの手動ジョブを実行します。

ツールをダウンロード