
Cowrie, Loki, Promtail, और Grafana के साथ निर्मित मध्यम-अंतःक्रिया SSH/Telnet हनीपॉट - Terraform के माध्यम से DigitalOcean पर स्थापित, GitLab CI सत्यापन पाइपलाइन के साथ।
एक SSH/Telnet हनीपॉट स्टैक जिसे Terraform का उपयोग करके DigitalOcean droplet पर तैनात किया गया है। हमलों को Cowrie द्वारा कैप्चर किया जाता है, Loki में संग्रहीत किया जाता है, और हमले के स्रोतों के लाइव विश्व मानचित्र के साथ Grafana में विज़ुअलाइज़ किया जाता है।
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 तक DigitalOcean Basic Droplet योजना पर आधारित हैं और प्रोजेक्ट चलाने के लिए न्यूनतम आवश्यकताएँ हैं।
- प्रदाता: DigitalOcean
- योजना: Basic Droplet - 1 Intel vCPU
- RAM: 1 GB (+2 GB swap)
- स्टोरेज: 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` निर्देशिका पर जाएँ फिर वेरिएबल्स फ़ाइल को कॉपी और संपादित करें:
> नोट: `do_token`, `ssh_public_key_path`, और `grafana_admin_password` को लागू करने से पहले `terraform.tfvars` में कम से कम कॉन्फ़िगर किया जाना चाहिए।```bash
cd terraform
cp terraform.tfvars.example terraform.tfvars
नोट: Terraform को आपकी स्थानीय मशीन पर स्थापित होना चाहिए। निर्देशों के लिए Terraform Installation Guide पर जाएँ।```bash terraform init # Initialize Terraform and download providers terraform apply
5. यदि परीक्षण - प्रतिस्थापन के साथ पुनः तैनाती करें:```bash
terraform apply -replace="digitalocean_droplet.honeypot"
### मैन्युअल परिनियोजन (पुराना)
1. उपरोक्त हार्डवेयर आवश्यकताओं और अपनी SSH कुंजी के साथ एक DigitalOcean ड्रॉपलेट बनाएं।
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.tfstateमें स्टेट लिखता है। इस फ़ाइल में संवेदनशील आउटपुट मान (droplet IP, Grafana पासवर्ड, SSH कुंजी फ़िंगरप्रिंट) होते हैं और इसे कभी कमिट नहीं किया जाना चाहिए।.gitignore*.tfstateऔर*.tfstate.*को कवर करता है।
स्थानीय स्टेट के जोखिम:
apply रन फ़ाइल को दूषित कर सकते हैंव्यक्तिगत प्रयोगशाला से परे किसी भी चीज़ के लिए, रिमोट बैकएंड पर स्विच करें। terraform/backend.tf में एक कमेंटेड-आउट DigitalOcean Spaces कॉन्फ़िगरेशन (S3-संगत) है।
रिमोट बैकएंड सक्षम करने के लिए:
terraform.tfvars में न डालें): ```bash
export AWS_ACCESS_KEY_ID=
export AWS_SECRET_ACCESS_KEY=
terraform/backend.tf में backend "s3" ब्लॉक को अनकमेंट करें और अपना बकेट नाम और क्षेत्र एंडपॉइंट भरें।terraform init -migrate-state चलाएँ।.gitlab-ci.yml हर पुश पर एकल validate चरण में तीन कार्य चलाता है: