Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
Cowrie and Grafana Honeypot using Terraform on DigitalOcean — Cowrie, Loki, Promtail, और Grafana के साथ निर्मित मध्यम-अंतःक्रिया SSH/Telnet हनीपॉट - Terraform के माध्यम से DigitalOcean पर स्थापित, GitLab CI सत्यापन पाइपलाइन के साथ। | 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 हनीपॉट - Terraform के माध्यम से DigitalOcean पर स्थापित, GitLab CI सत्यापन पाइपलाइन के साथ।

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें
रिपॉजिटरी देखें
वेबसाइट
13 महीने पहलेअभी तक समीक्षित नहीं

डिजिटलओशन पर टेराफॉर्म का उपयोग करके Cowrie और Grafana हनीपॉट

डेमो वीडियो

विषय सूची

  • विषय सूची
  • सिस्टम अवलोकन
  • प्रौद्योगिकियाँ
  • प्रोजेक्ट निर्देशिका संरचना
  • हार्डवेयर आवश्यकताएँ
  • इंस्टॉलेशन और सेटअप
  • टेराफॉर्म स्टेट प्रबंधन
  • CI/CD पाइपलाइन
  • सिस्टम आर्किटेक्चर
  • अवलोकन
  • उपयोग
  • प्रोजेक्ट दस्तावेज़ीकरण
    • आर्किटेक्चर डिज़ाइन और ट्रेड-ऑफ
    • सिस्टम निष्पादन वॉकथ्रू
    • सामने आई समस्याएँ और सीमाएँ
    • भविष्य में सुधार
  • सुरक्षा संबंधी विचार
  • योगदानकर्ता
  • लाइसेंस

सिस्टम अवलोकन

एक SSH/Telnet हनीपॉट स्टैक जिसे Terraform का उपयोग करके DigitalOcean droplet पर तैनात किया गया है। हमलों को 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

root@kitploit:~
## हार्डवेयर आवश्यकताएँ

> नोट: ये आवश्यकताएँ मई 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
  1. कॉन्फ़िगरेशन लागू करें और डिप्लॉयमेंट शुरू करें:

नोट: Terraform को आपकी स्थानीय मशीन पर स्थापित होना चाहिए। निर्देशों के लिए Terraform Installation Guide पर जाएँ।```bash terraform init # Initialize Terraform and download providers terraform apply

root@kitploit:~
5. यदि परीक्षण - प्रतिस्थापन के साथ पुनः तैनाती करें:```bash
terraform apply -replace="digitalocean_droplet.honeypot" 
  1. सफाई - जब आपका काम पूरा हो जाए तो बुनियादी ढांचे को नष्ट करें:```bash terraform destroy
root@kitploit:~
### मैन्युअल परिनियोजन (पुराना)

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-संगत) है।

रिमोट बैकएंड सक्षम करने के लिए:

  1. अपने DigitalOcean खाते में एक Spaces बकेट बनाएं
  2. API > Spaces Keys के तहत एक Spaces एक्सेस कुंजी जनरेट करें
  3. कुंजियों को पर्यावरण चर के रूप में निर्यात करें (उन्हें terraform.tfvars में न डालें): ```bash export AWS_ACCESS_KEY_ID= export AWS_SECRET_ACCESS_KEY=
    root@kitploit:~
  4. terraform/backend.tf में backend "s3" ब्लॉक को अनकमेंट करें और अपना बकेट नाम और क्षेत्र एंडपॉइंट भरें।
  5. मौजूदा स्थानीय स्थिति को Spaces में ले जाने के लिए terraform init -migrate-state चलाएँ।

CI/CD पाइपलाइन

.gitlab-ci.yml हर पुश पर एकल validate चरण में तीन कार्य चलाता है:

नोट: 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: टिप्पणी के साथ दबाया जाता है। नीचे दी गई तालिका दस्तावेज़ित करती है कि प्रत्येक खुला पोर्ट क्यों जानबूझकर है।

सिस्टम आर्किटेक्चर```mermaid

flowchart TB internet((Internet))

subgraph tf["Terraform"] fw[DigitalOcean Cloud Firewall] droplet[Ubuntu 24.04 droplet] fw --> droplet end

subgraph compose["Docker Compose on droplet"] cowrie["Cowrie honeypot — SSH on port 22, Telnet on port 23"] promtail[Promtail with GeoIP labels] loki[Loki log store] grafana["Grafana — host :3000"] cowrie -->|JSON logs from ./data/cowrie-logs| promtail --> loki --> grafana end

internet -->|22/23 honeypot| fw internet -->|Admin SSH :2022| fw internet -->|Grafana :3000| fw droplet --> compose

root@kitploit:~
## अवलोकन

5 दिनों के लाइव परिनियोजन (2026-05-05 से 2026-05-09) में कैप्चर किया गया डेटा:

| मीट्रिक                    | मान  |
|---------------------------|--------|
| कुल कनेक्शन               | 41,700 |
| लॉगिन प्रयास              | 15,400 |
| सफल लॉगिन                 | 868    |
| निष्पादित कमांड           | 836    |
| डाउनलोड की गई फ़ाइलें     | 6      |
| अद्वितीय स्रोत देश        | 106    |

### शीर्ष हमला करने वाले देश

| देश               | कनेक्शन |
|-------------------|----------|
| जर्मनी            | 9,768    |
| नीदरलैंड         | 9,110    |
| संयुक्त राज्य     | 7,706    |
| यूनाइटेड किंगडम  | 3,858    |
| सिंगापुर          | 1,770    |
| बेल्जियम          | 1,422    |

### क्रेडेंशियल पैटर्न

सबसे सामान्य प्रयास किया गया उपयोगकर्ता नाम `root` था जिसमें 3,866 प्रयास हुए, उसके बाद `admin` (728) और `user` (494), जो डिफ़ॉल्ट क्रेडेंशियल और ज्ञात सेवा खातों को लक्षित करने वाले स्वचालित स्कैनर को दर्शाता है। सबसे सामान्य पासवर्ड `123456` (1,480 प्रयास) था, उसके बाद `123` और `12345`, जो शब्दकोश-आधारित ब्रूट-फोर्स टूलिंग के अनुरूप है।

### नकली शेल के अंदर हमलावर का व्यवहार

नकली क्रेडेंशियल सेट के खिलाफ 868 लॉगिन प्रयास सफल हुए। उन सत्रों में से, 836 कमांड निष्पादित किए गए। सबसे सामान्य कमांड `uname -s -v -n -r -m` (360 निष्पादन) था — एक मानक सिस्टम फिंगरप्रिंटिंग कमांड जो पेलोड तैनात करने से पहले लक्ष्य OS और आर्किटेक्चर की पहचान करने के लिए स्वचालित पोस्ट-एक्सप्लॉइटेशन स्क्रिप्ट द्वारा चलाया जाता है। अन्य देखे गए कमांड में शेल हिस्ट्री लॉगिंग को अक्षम करने के लिए `export HISTFILE=/dev/null` और `export HISTSAVE=/dev/null` शामिल थे, जो दर्शाता है कि हमलावर उस प्रणाली में भी अपने निशान छिपाने का प्रयास कर रहे थे जिसे वे समझौता किया हुआ मानते थे।

### मुख्य निष्कर्ष

स्वचालित स्कैनिंग ट्रैफ़िक की मात्रा — 106 देशों से 5 दिनों में 41,700 कनेक्शन — यह पुष्टि करती है कि कोई भी सार्वजनिक रूप से सुलभ SSH सेवा, एक्सपोज़र के घंटों के भीतर लगातार ब्रूट-फोर्स प्रयासों का सामना करती है। तुरंत `uname` चलाने और उसके बाद हिस्ट्री-दमन कमांड का व्यवहारिक पैटर्न, न्यूनतम मानवीय भागीदारी के साथ संचालित स्वचालित पोस्ट-एक्सप्लॉइटेशन फ्रेमवर्क के अनुरूप है।

## उपयोग

### Grafana डैशबोर्ड का उपयोग

> ध्यान दें: डैशबोर्ड क्रेडेंशियल्स terraform.tfvars या .env (मैन्युअल परिनियोजन के लिए) में सेट किए गए हैं।

डैशबोर्ड निम्नलिखित पर एक्सेस किया जा सकता है:```
http://<your-droplet-ip>:3000

admin / <GRAFANA_ADMIN_PASSWORD> से लॉगिन करें।

काउरी हनीपॉट स्वीकृत क्रेडेंशियल

cowrie/etc/userdb.txt - हनीपॉट के लिए स्वीकृत क्रेडेंशियल शामिल हैं।

  • हनीपॉट क्रेडेंशियल को ट्यून करने के लिए इस फ़ाइल को संपादित करें

  • स्वीकृत लॉगिन हमलावर को एक नकली शेल में डाल देते हैं जहाँ सभी कमांड लॉग हो जाते हैं

  • अस्वीकृत प्रविष्टियाँ असफल प्रयासों के रूप में लॉग होती हैं

परियोजना दस्तावेज़ीकरण

यह खंड इस परियोजना के विकास के दौरान किए गए निर्णयों और सामने आई समस्याओं का विवरण देता है। यह परियोजना की विकास प्रक्रिया और सीखे गए पाठों के प्रतिबिंब के रूप में कार्य करता है। यदि आप केवल यह जानना चाहते हैं कि परियोजना का उपयोग कैसे करें, तो सुरक्षा संबंधी विचार पर जाएँ।

वास्तुकला डिज़ाइन और व्यापार-बंद

क्लाउड होस्टिंग क्यों?

  • हनीपॉट को चौबीसों घंटे डेटा कैप्चर और विश्लेषण करने के लिए उच्च उपलब्धता वाला डिज़ाइन किया गया है। जबकि हनीपॉट को वर्चुअल मशीनों या कंटेनरों का उपयोग करके स्थानीय मशीन पर तैनात किया जा सकता है, उस मशीन को चौबीसों घंटे ऑनलाइन और सुलभ रखना व्यावहारिक नहीं है। क्लाउड होस्टिंग हनीपॉट को होस्ट करने और निरंतर डेटा कैप्चर करने के लिए अधिक व्यावहारिक और विश्वसनीय समाधान प्रदान करती है।
  • इसके अतिरिक्त, क्योंकि क्लाउड होस्टिंग आपको विशिष्ट संसाधनों और सेवाओं का चयन करने देती है, ऐसा कोडबेस बनाना और बनाए रखना आसान है जिसे तैनात और विस्तारित किया जा सके। कोई भी व्यक्ति जो अपना स्वयं का हनीपॉट तैनात करने में रुचि रखता है, बिना अतिरिक्त चरणों के ऐसा कर सकता है, जब तक परियोजना काम करती है और प्रदान किया गया वातावरण वही है जो परियोजना अपेक्षा करती है।

डिजिटलओशन क्यों?

  • जबकि AWS, GCP और Azure जैसे अन्य प्रदाता उपलब्ध हैं, डिजिटलओशन इस परियोजना के लिए अधिक किफायती विकल्प प्रदान करता है। क्योंकि हनीपॉट को ऑनलाइन रहना चाहिए और चौबीसों घंटे ड्रॉपलेट में और बाहर डेटा भेजना चाहिए, डिजिटलओशन का मूल्य निर्धारण मॉडल लागत को अनुमानित रखने में मदद करता है। यह अन्य प्रदाताओं के प्रचारों जैसे नए उपयोगकर्ताओं या दीर्घकालिक प्रतिबद्धताओं के लिए मुफ्त क्रेडिट या छूट को ध्यान में नहीं रखता है।

टेराफॉर्म क्यों?

  • विकल्प, manual-deployment.sh, उन उपयोगकर्ताओं के लिए है जो टेराफॉर्म में अनुभवी नहीं हैं या इसका उपयोग नहीं करना पसंद करते हैं। उस पथ में एक ड्रॉपलेट प्रावधान करना, उससे कनेक्ट करना, रेपो को क्लोन करना और स्क्रिप्ट चलाना शामिल है। टेराफॉर्म तेजी से पुनरावृत्ति की अनुमति देता है: कोडबेस को संपादित करें और अपनी स्थानीय मशीन से प्रत्येक मैन्युअल चरण को दोहराए बिना पुनः तैनात करें। यह बुनियादी ढांचे को ध्वस्त करना और नए सिरे से शुरू करना भी आसान बनाता है। यदि परियोजना एक एकल हनीपॉट से हनीनेट में बढ़ती है, तो टेराफॉर्म मैन्युअल प्रावधान या लीगेसी स्क्रिप्ट की तुलना में अधिक साफ-सुथरा स्केल करता है।

काउरी क्यों?

  • काउरी एक प्रसिद्ध, सक्रिय रूप से बनाए रखा जाने वाला मध्यम-अंतःक्रिया हनीपॉट है। यह हल्के जालों की तुलना में अधिक संसाधनों का उपयोग कर सकता है, लेकिन इसकी विशेषताओं और बाकी स्टैक के साथ फिट ने इसे एक स्वाभाविक विकल्प बना दिया। विशिष्ट उपयोग के मामलों के लिए अन्य हनीपॉट को बदला जा सकता है, हालांकि कई अनचाहे हैं या और भी अधिक संसाधनों की आवश्यकता है।

लोकी क्यों?

  • मुख्य बाधा हार्डवेयर थी: 1 GB RAM ड्रॉपलेट पर कई अन्य सेवाओं के साथ लॉग एग्रीगेशन और खोज। इलास्टिकसर्च बहुत भारी था। ग्रेलॉग अभी भी हुड के नीचे इलास्टिकसर्च पर निर्भर करता है और सीमाओं के भीतर ठीक से नहीं चलेगा। अन्य विकल्प समान रूप से संसाधन-भूखे थे। ग्राफाना लोकी स्टैक से मेल खाता था और बहुत भारी प्रश्नों को छोड़कर बजट के भीतर रहता था। कुछ क्वेरी सुविधाओं का त्याग किया गया: यदि डैशबोर्ड बहुत अधिक डेटा खींचते हैं, तो लोकी धीमा हो जाता है, UI अनुत्तरदायी लगता है, और हनीपॉट डेटा को मिस या विलंबित कर सकता है।

ग्राफाना क्यों?

  • मैंने मूल रूप से एक कस्टम डैशबोर्ड पर विचार किया था, लेकिन ग्राफाना पूर्ण, अनुकूलन योग्य और अच्छी तरह से प्रलेखित है, जिसने सेटअप को गति दी ताकि मैं लॉग एकत्र करने और शिप करने पर ध्यान केंद्रित कर सकूं। यह न्यूनतम कस्टम UI जितना हल्का नहीं है, लेकिन एक छोटे ड्रॉपलेट अपग्रेड के बाद यह हार्डवेयर सीमाओं के भीतर आराम से चलता है। पूर्व-निर्मित डैशबोर्ड वाले अन्य उपकरण इस उपयोग के मामले के लिए स्पष्ट लाभ के बिना अधिक संसाधनों का उपयोग करते।

प्रोमटेल क्यों?

  • प्रोमटेल स्थापित लोकी लॉग शिपर है (ग्राफाना अलॉय नया उत्तराधिकारी है)। प्रोमटेल RAM पर हल्का है और पाइपलाइन चरणों (JSON पार्सिंग, जियोआईपी, लेबल) का समर्थन करता है जो इस परियोजना से मेल खाते हैं। फ्लुएंटड या लॉगस्टैश जैसे विकल्प 1 GB ड्रॉपलेट के लिए बहुत भारी थे।

जियोआईपी क्यों?

  • अटैक मैप को स्रोत IP से शहर और देश के संदर्भ की आवश्यकता होती है। परियोजना scripts/geoip-update.sh के माध्यम से DB-IP सिटी लाइट का उपयोग करती है: कोई खाता या API कुंजी नहीं, जो रेपो को क्लोन करने वाले किसी भी व्यक्ति के लिए तैनाती को सरल रखता है। प्रोमटेल का अंतर्निहित जियोआईपी चरण स्थानीय MMDB फ़ाइल को पढ़ता है और ग्राफाना जियोमैप पैनल के लिए लेबल जोड़ता है।

सिस्टम निष्पादन वॉकथ्रू

टेराफॉर्म या मैन्युअल तैनाती स्क्रिप्ट का उपयोग करके हनीपॉट सेट करते समय होने वाली प्रक्रियाओं का चरण-दर-चरण अवलोकन।

टेराफॉर्म (अनुशंसित)

आपकी मशीन पर:

  1. terraform/terraform.tfvars कॉन्फ़िगर करें: API टोकन, SSH सार्वजनिक कुंजी पथ, ग्राफाना पासवर्ड, रेपो URL/ब्रांच, वैकल्पिक manage_do_firewall
  2. terraform init चलाएँ: स्थानीय रूप से डिजिटलओशन प्रदाता स्थापित करता है
  3. terraform apply चलाएँ: टेराफॉर्म एक योजना बनाता है, फिर संसाधन बनाता या अपडेट करता है

डिजिटलओशन में:

  1. SSH सार्वजनिक कुंजी आपके खाते में अपलोड हो जाती है
  2. आपके टेराफॉर्म वेरिएबल से ड्रॉपलेट बनाया जाता है:
    • इमेज (उबंटू), आकार और क्षेत्र droplet_image, droplet_size, region आदि से आते हैं
    • चरण 4 से SSH कुंजी संलग्न होती है
    • user_data रेंडर किए गए क्लाउड-इनिट पर सेट होता है: पहले बूट पर VM को व्यवस्थापक SSH पोर्ट, git repo_url / repo_branch, और जनरेट किए गए .env (ग्राफाना पासवर्ड और ADMIN_SSH_PORT env.tftpl से) की बेस64-एन्कोडेड प्रतिलिपि मिलती है
  3. क्लाउड फ़ायरवॉल (केवल जब manage_do_firewall सत्य है):
    • टेराफॉर्म एक डिजिटलओशन फ़ायरवॉल बनाता है और इसे इस ड्रॉपलेट से संबद्ध करता है
    • इनबाउंड TCP: आपका व्यवस्थापक SSH पोर्ट, 22, 23, और 3000 (terraform/main.tf देखें)
    • आउटबाउंड: व्यापक TCP/UDP और ICMP ताकि ड्रॉपलेट पैकेज अपडेट कर सके, इमेज खींच सके, और जियोआईपी डेटा डाउनलोड कर सके

ड्रॉपलेट पर, क्लाउड-इनिट स्वचालित रूप से चलता है:

  1. क्लाउड-कॉन्फ़िग: package_update / package_upgrade, फिर सूचीबद्ध पैकेज (curl, git, ufw, …) स्थापित करें। बूट के शुरुआत में, write_files /root/honeypot.env बनाता है (टेराफॉर्म-रेंडर env.tftpl बेस64 के रूप में: ग्राफाना पासवर्ड, ADMIN_SSH_PORT, आदि)
  2. runcmd बूटस्ट्रैप स्क्रिप्ट (terraform/templates/cloud-init.yaml.tftpl में ऑर्डर): iptables / ip6tables को लीगेसी बैकएंड पर सेट करें
  3. स्वैप: 2 GB फ़ाइल यदि गायब है (/swapfile, fstab, swappiness)

डॉकर कंपोज़ के अंदर:

  1. लोकी शुरू होता है और उसे अपना स्वास्थ्य जांच पास करना होगा (कंटेनर के अंदर पोर्ट 3100 पर /ready; होस्ट पर केवल 127.0.0.1:3100)
  2. प्रोमटेल और ग्राफाना लोकी के स्वस्थ होने की प्रतीक्षा करते हैं (docker-compose.yml में depends_on), फिर शुरू होते हैं
  3. काउरी स्वतंत्र रूप से शुरू हो सकता है: यह होस्ट पोर्ट 22 और 23 को कंटेनर में प्रकाशित करता है और प्रोमटेल के लिए data/cowrie-logs के अंतर्गत JSON लॉग लिखता है

मैन्युअल सेटअप (लीगेसी)

उपयोगकर्ता VM बनाता है, SSH करता है, और क्लोन किए गए रेपो से स्क्रिप्ट चलाता है।

manual-deployment.sh निम्नलिखित करता है:

  1. .env लोड और मान्य करें
  2. सिस्टम अपडेट: apt update और apt upgrade
  3. पैकेज स्थापित करें: उपकरण और ufw और iptables
  4. स्वैप कॉन्फ़िगर करें: 2 GB फ़ाइल यदि गायब है
  5. डॉकर स्थापित करें: इंजन + कंपोज़ प्लगइन, सेवाएँ सक्षम करें
  6. SSH कॉन्फ़िगर करें: sshd ADMIN_SSH_PORT पर और ssh.socket अक्षम करें
  7. फ़ायरवॉल कॉन्फ़िगर करें: scripts/setup-firewall.sh
  8. जियोआईपी कॉन्फ़िगर करें: scripts/geoip-update.sh और मासिक क्रॉन
  9. स्टैक प्रारंभ करें: docker compose pull / up -d, फिर स्क्रिप्ट लोकी और ग्राफाना स्वास्थ्य जांच की प्रतीक्षा करती है और सारांश प्रिंट करती है

सामने आई समस्याएँ

हार्डवेयर सीमाएँ

  • सीमित हार्डवेयर संसाधनों के परिणामस्वरूप धीमा प्रदर्शन और कभी-कभी टाइमआउट हुआ। इसने डैशबोर्ड को प्रभावित किया जो डेटाबेस को तेज़ी से क्वेरी करने पर निर्भर करता है, कभी-कभी एक ही समय में कई उपकरणों द्वारा डैशबोर्ड तक पहुँचने पर।

विचार किए गए समाधान:

  • अधिक संसाधनों के लिए लंबवत स्केल करें
  • डेटाबेस पर लोड कम करने के लिए कम पैनल वाला कस्टम डैशबोर्ड
  • एक ही समय में डैशबोर्ड तक पहुँच सकने वाले उपकरणों की संख्या सीमित करना
  • मुख्य डेटाबेस पर तनाव कम करने के लिए डैशबोर्ड द्वारा पढ़ने के लिए एक अलग डेटाबेस में लॉग एकत्र करना

समाधान:

  • बेहतर प्रदर्शन वाले थोड़े बड़े ड्रॉपलेट पर स्केल किया गया

व्यापार-बंद:

  • जबकि लागत प्रति माह लगभग $1-2 बढ़ गई, उपलब्ध संसाधन दोगुने हो गए। एनवीएमई एसएसडी स्टोरेज और बेसिक ड्रॉपलेट की तुलना में अधिक RAM तक पहुँच ने अधिक स्थिर और प्रदर्शनकारी डैशबोर्ड की अनुमति दी। इसने कम पैनल और कम उत्तरदायी अनुभव वाला कस्टम डैशबोर्ड बनाने में समय बिताने से बचा लिया।

सीखे गए पाठ:

  • प्रचार, छूट और मूल्य निर्धारण स्तरों का लाभ उठाकर बजट में रहते हुए अधिक से अधिक संसाधन प्राप्त करना। सबसे बुनियादी ड्रॉपलेट और लागत में थोड़ी वृद्धि के बीच के अंतर ने उपलब्ध संसाधनों को दोगुना कर दिया, जिससे अधिक संपूर्ण उत्पाद की अनुमति देकर समय की बचत हुई। इसके अतिरिक्त, हनीपॉट को जल्दी चालू करने का मतलब था डेटा कैप्चर और विश्लेषण जल्दी शुरू करना।

टाइमआउट समस्याएँ

  • ड्रॉपलेट में व्यवस्थापक पहुँच के लिए SSH करने का प्रयास करते समय, कनेक्शन टाइमआउट हो गए। अलग से, docker compose up विफल रहा क्योंकि पोर्ट 22 पहले से ही उपयोग में था और काउरी द्वारा बाइंड नहीं किया जा सका।

विचार किए गए समाधान:

  • sshd गलत तरीके से कॉन्फ़िगर किया गया था या गलत पोर्ट पर सुन रहा था
  • व्यवस्थापक SSH पोर्ट को स्थानांतरित करने के बाद फ़ायरवॉल नियम इसे ब्लॉक कर रहे थे
  • कोई अन्य प्रक्रिया पहले से ही पोर्ट 22 पकड़े हुए थी

समाधान:

  • संचालन के क्रम को सही किया गया: sshd को ADMIN_SSH_PORT (डिफ़ॉल्ट 2022) पर ले जाया जाता है और पहले पुनरारंभ किया जाता है, फिर डॉकर के लिए काउरी को बाइंड करने के लिए पोर्ट 22 को मुक्त करने के लिए ssh.socket को रोका और अक्षम किया जाता है। दोनों चरणों के बाद नए व्यवस्थापक पोर्ट की अनुमति देने के लिए UFW नियम लागू किए जाते हैं।

व्यापार-बंद:

  • कोई कार्यात्मक व्यापार-बंद नहीं। यह एक कॉन्फ़िगरेशन और ऑर्डरिंग फिक्स था।

सीखे गए पाठ:

  • किसी भी सेवा से अवगत होना महत्वपूर्ण है जिसे शुरू करने से पहले एक विशिष्ट क्रम में मुक्त किए जाने वाले विशिष्ट संसाधनों की आवश्यकता होती है। इस मामले में उबंटू 24.04 पर, ssh.socket एक systemd सॉकेट यूनिट है जो ऑन-डिमांड SSH सक्रियण के लिए पोर्ट 22 आरक्षित रखता है। डॉकर को काउरी के लिए होस्ट पोर्ट 22 बाइंड करने की अनुमति देने से पहले इसे रोका और अक्षम किया जाना चाहिए। यदि यह अभी भी सक्रिय है, तो docker compose up "पता पहले से उपयोग में है" के साथ विफल हो जाता है।

भविष्य में सुधार

जियोआईपी कार्यक्षमता

  • शहर-स्तरीय जियोआईपी अनुमानित है। मैप पैनल DB-IP डेटाबेस पर निर्भर करते हैं और कुछ IP (मोबाइल, VPN, पुराना डेटा) को मिस या गलत लेबल कर सकते हैं। स्टैक को बाद में भूगोल में उच्च विश्वास के लिए एक अलग डेटाबेस या एनरिचमेंट पाइपलाइन के साथ बढ़ाया जा सकता है।

ग्राफाना HTTPS

  • ग्राफाना वर्तमान में HTTP पर चलता है। भविष्य में सुधार टीएलएस प्रमाणपत्र के साथ इसे रिवर्स प्रॉक्सी (nginx या कैडी) के पीछे रखना होगा, जो ग्राफाना पोर्ट को लोकलहोस्ट तक सीमित करने और 443 के माध्यम से प्रॉक्सी करने की भी अनुमति देगा।

प्रॉक्सी सर्वर कार्यक्षमता

  • हनीपॉट को अधिक वैध दिखाने के लिए, इसे किसी भिन्न क्षेत्र के सर्वर के माध्यम से प्रॉक्सी किया जा सकता है। इससे हमलावरों के लिए इसके IP या भू-स्थान के आधार पर इसे हनीपॉट के रूप में पहचानना कठिन हो जाएगा।

सुरक्षा संबंधी विचार

  • ग्राफाना HTTP का उपयोग करता है। TLS के बिना पोर्ट 3000 का अर्थ है क्रेडेंशियल स्पष्ट पाठ में प्रसारित होते हैं।
  • लोकी केवल 127.0.0.1 पर सुनता है (एक्सपोज़ नहीं)
  • terraform.tfvars gitignored है और इसे कभी प्रतिबद्ध नहीं किया जाना चाहिए
  • काउरी अपने कंटेनर के अंदर एक विशेषाधिकार रहित उपयोगकर्ता के रूप में चलता है
  • यदि परीक्षण वातावरण से परे एक्सपोज़ किया गया है, तो ग्राफाना को HTTPS के साथ एक रिवर्स प्रॉक्सी के पीछे रखा जाना चाहिए

योगदानकर्ता

  • Oseguera12

लाइसेंस

GNU जनरल पब्लिक लाइसेंस संस्करण 2.0 (GPLv2) पूर्ण लाइसेंस पाठ LICENSE फ़ाइल में देखें।

टूल डाउनलोड करें
कार्यउपकरणउद्देश्य
terraform:fmthashicorp/terraform:1.8फ़ॉर्मेटिंग: यदि किसी फ़ाइल को terraform fmt की आवश्यकता है तो विफल हो जाता है
terraform:validatehashicorp/terraform:1.8DigitalOcean से संपर्क किए बिना कॉन्फ़िग वैधता
checkov:scanbridgecrew/checkov:latestTerraform कोड में IaC गलत कॉन्फ़िगरेशन
चेक आईडीसंसाधनखोजनिर्णय
CKV_DIO_4digitalocean_firewall.honeypot — एडमिन SSH इनबाउंडएडमिन SSH पोर्ट 0.0.0.0/0 के लिए खुलास्वीकृत — पोर्टेबल लैब के लिए एक निश्चित IP तक सीमित करना अव्यावहारिक है; उत्पादन में अनुशंसित
CKV_DIO_4digitalocean_firewall.honeypot — पोर्ट 22 इनबाउंडपोर्ट 22 0.0.0.0/0 के लिए खुलाजानबूझकर — यह SSH हनीपॉट सतह है; स्रोत को प्रतिबंधित करना उद्देश्य को विफल करता है
CKV_DIO_4digitalocean_firewall.honeypot — पोर्ट 23 इनबाउंडपोर्ट 23 0.0.0.0/0 के लिए खुलाजानबूझकर — टेलनेट हनीपॉट सतह; पोर्ट 22 के समान तर्क
CKV_DIO_4digitalocean_firewall.honeypot — पोर्ट 3000 इनबाउंडGrafana HTTP 0.0.0.0/0 के लिए उजागरलैब पहुंच के लिए स्वीकृत — ज्ञात सीमा सुरक्षा विचार में दस्तावेज़ित; उत्पादन परिनियोजन को पोर्ट 443 पर HTTPS के माध्यम से ज्ञात IP या प्रॉक्सी तक सीमित करना चाहिए
पैनलविवरण
अटैक वर्ल्ड मैपजियोमैप जिसमें हीटमैप + मार्कर लेयर्स हैं, जो हर कनेक्शन की उत्पत्ति दिखाते हैं
कुल कनेक्शनचयनित समय सीमा में इनबाउंड हनीपॉट सत्रों की गिनती
लॉगिन प्रयासक्रेडेंशियल ब्रूट-फोर्स के कुल प्रयास
सफल लॉगिनवे हमलावर जिन्होंने userdb.txt क्रेडेंशियल से मेल खाया
निष्पादित कमांडनकली शेल के अंदर निष्पादित शेल कमांड
डाउनलोड की गई फ़ाइलेंwget/curl के माध्यम से कैप्चर किए गए मालवेयर/स्क्रिप्ट
कनेक्शन दरसमय श्रृंखला: कनेक्शन/सेकंड, असफल लॉगिन/सेकंड, सफलताएँ/सेकंड
शीर्ष उपयोगकर्ता नामसबसे अधिक प्रयास किए गए SSH उपयोगकर्ता नाम
शीर्ष पासवर्डसबसे अधिक प्रयास किए गए पासवर्ड
शीर्ष कमांडसबसे अधिक निष्पादित शेल कमांड
देशों द्वारा हमलेदेश-स्तरीय कनेक्शन तालिका
हाल की घटनाएंनवीनतम घटनाओं की लाइव लॉग स्ट्रीम
फ़ाइल डाउनलोडहर उस फ़ाइल की तालिका जिसे हमलावर खींचने का प्रयास करता है
  • डॉकर: डॉकर के apt रेपो से इंजन और कंपोज़ प्लगइन स्थापित करें; systemctl enable --now docker
  • रियल SSH: sshd ADMIN_SSH_PORT पर; ssh.socket को अक्षम करें ताकि होस्ट पोर्ट 22 काउरी के लिए खाली हो
  • एप्लिकेशन रेपो: git clone repo_url / repo_branch से /opt/honeypot में (इसमें docker-compose.yml और कॉन्फ़िग शामिल होना चाहिए)
  • .env डिस्क पर: /root/honeypot.env को /opt/honeypot/.env पर ले जाएँ (मोड 600)
  • होस्ट फ़ायरवॉल: scripts/setup-firewall.sh (UFW व्यवस्थापक SSH, 22, 23, 3000 के लिए)
  • जियोआईपी: scripts/geoip-update.sh (DB-IP सिटी लाइट geoip/ में); उसी स्क्रिप्ट के लिए मासिक क्रॉन लाइन जोड़ें
  • काउरी बाइंड माउंट: data/cowrie-logs और data/cowrie-dl उन अनुमतियों के साथ बनाएँ जिनकी कंपोज़ अपेक्षा करता है
  • स्टैक प्रारंभ: /opt/honeypot से, docker compose pull फिर docker compose up -d