مقیاس‌بندی اتومیشن امنیتی با استفاده از Docker

مقیاس‌بندی اتومیشن امنیتی با استفاده از Docker

Docker چیست؟

Docker یک پلتفرم متن باز است که امکان توسعه، استقرار و مدیریت چندین اپلیکیشن را در یک سیستم عامل برایتان فراهم می آورد. به جای این که چندین سرور جداگانه داشته باشید که هر کدام فقط برای یک اپلیکیشن خاص تنظیم شده و اختصاص یافته‏‌اند، می توانید تمامی اپلیکیشن های خود را در یک سرور اجرا کنید و برای هر یک از این اپلیکیشن ها یک محفظه یا به اصطلاح کانتینر مخصوص به خود اختصاص دهید. برای کسب اطلاعات بیشتر در مورد اینکه Docker چیست و چگونه کار می‌کند، می توانید به مستندات فنی Docker ما مراجعه نمایید.

 

محققان امنیتی در حال حاضر از چه روش هایی برای مقیاس بندی اتومیشن استفاده می‌کنند؟

در حال حاضر اکثر محققان امنیتی، اسکریپت ها و اپلیکیشن هایشان را در در سرورهای خصوصی مجازی (VPS) مستقر می‌کنند. همان‏طور که احتمالاً تصور می کنید، اجرای چندین اسکریپت روی چندین VPS جداگانه، خیلی سریع به یک جریان کاری automation بسیار دشوار منجر می شود. به عنوان مثال، ممکن است شما سه سرور کوچک داشته باشید که در حال اجرای شمارش زیردامنه باشند، سه سرور دیگر در حال اسکن پورت، سه سرور بعدی در حال اجرای ابزار nuclei و سروری دیگر نیز در حال اجرای دیتابیس مرکزی باشد. در این حالت در مجموع باید ده سرور جداگانه داشته باشید.

در چنین شرایطی تنها روشی که با استفاده از آن می‌توان مقیاس automation را افزایش داد، اضافه کردن تعداد سرورهای بیشتر است. هر سرور جدید، سربار محاسباتی بیشتری را هم به همراه خواهد داشت.

مقیاس بندی  اتومیشن امنیتی با استفاده از Docker

در هک قانونی استفاده از اتومیشن کاربرد زیادی برای میکروسرویس ها دارد. مقیاس‌بندی automation با استفاده از Docker به معنی مقیاس بندی automaion با بهره‌‏گیری از معماری میکروسرویس است. در معماری میکروسرویس، سیستمی متشکل از سرویس های کوچک ساخته می شود که هر یک از این سرویس ها به طور مستقل کار می کنند تا در نهایت یک هدف مشترک و نهایی را محقق سازند. هر گام از جریان کاری شما می تواند یک میکروسرویس مجزا با docker image و کانتینر مخصوص به خود باشد. چندین کانتینر Docker می توانند در یک VPS استقرار یابند و از این طریق به سادگی می توان با افزودن تعداد کانتینرها، مقیاس را نیز افزایش داد.

در ادامه مثالی از ایجاد یک معماری میکروسرویس با استفاده از Docker را مشاهده می کنید:

اتومیشن امنتی

در این مثال، ما یک دیتابیس برای ذخیره داده ها، یک صف Redis برای توزیع تسک ها و یک VPS نیز برای میزبانی کانتینرهای Dockerمان داریم. Cron Jobها تسک ها را تا زمانی که کانتینری برای اجرایشان موجود شود، در صف قرار می دهند. سه کانتینر داریم:

  • یک کانتینر برای subdomain enumeration پسیو
  • یک کانتینر برای ریزالو دامنه
  • یک کانتینر برای کشف سرورهای HTTP

تعداد کانتینرها می تواند بسته به نیازهای صف Redis، افزایش یا کاهش یابد. هنگامی که انجام تسک ها به اتمام رسید، نتایج در دیتابیس ذخیره می شود. برای مقیاس بندی، تنها کافی است کانتینرهای بیشتری را اضافه نماییم.

استفاده از Docker Compose به منظور ساده‌‏تر کردن کار

Cocker Compose ابزاری برای اجرای اپلیکیشن های چند کانتینری است. این ابزار برای تعریف تنظیمات کانتینرها از فایل های YAML استفاده می‌کند. به محض این که فایل ایجاد شد، تنها کاری که باید انجام دهید اجرای “docker-compose up” است. برای افزایش مقیاس نیز تنها کافی است تعداد کانتینرهای موجود در فایل YAML را انجام دهید، بقیۀ مراحل را خود Docker Compose برایتان انجام می دهد. در ادامه فایل Docker Compose را مشاهده می نمایید:

اتومیشن امنیتی

چگونه مقیاس automation را افزایش دهیم؟

برای فهمیدن این که چطور می توانید مقیاس automaion را افزایش داد، بیایید محیطی با یک کانتینر بسازیم و تعدادی ابزار را در این کانتینر نصب کنیم. به این منظور از موارد زیر استفاده خواهیم کرد:

  • یک سرور Redis متعلق به Digital Ocean
  • یک VPS برای اجرای کاینتینرها
  • یک سرور hakscale تنظیم شده برای پوش کردن دستورات subfinder

Hakscale دستورات را به صف Redish ما پوش کرده و به ابزار subfinder پاپ می کند. برای راه‏اندازی و کانفیگ، باید سه فایل زیر را در یک دایرکتوری داشته باشید:

  • Dockerfile
  • docker-compose.yaml
  • hakscale-config.yams

 

Dockerfile

FROM golang:1.19.2-alpine

# اضافه کردن git به منظور نصب ابزار

RUN apk update && apk add bash git

# کپی کردن فایل کانفیگ Hakscale با اطلاعات صف Redis:

COPY hakscale-config.yaml /root/.config/haktools/hakscale-config.yml

# نصب Hakscale متعلق به Hakluke:

RUN go install github.com/hakluke/hakscale@latest

# نصب subfinder متعلق به Project Discovery:

RUN go install -v github.com/projectdiscovery/subfinder/v2/cmd/subfinder@latest

ENTRYPOINT hakscale pop -q blogDemo

docker-compose.yaml

version: “3.9”
services:
subdomain_worker:
image: subdomain_worker
build:
context: .
dockerfile: Dockerfile
network_mode: host

hakscale-config.yaml

redis:
host: <your-redis-host>
port: <your-redis-port>
password: <your-redis-password>

به محض این که صف Redis شما استقرار یافت، سه فایل مربوطه در یک دایرکتوری ایجاد گشت و Hakscale کانفیگ شد، با اجرای “docker-compose up” می توانید ورکر نمونه ای را ایجاد نمایید. به محض اینکه روند build کامل شد، می توانید دستورات موردنظر را به آن پوش کنید:

ساخت کانتینر

در ادامه یک فایل از دامین هایی که قصد تست آن ها را دارید ایجاد کنید، به عنوان نمونه:

cat testdomains.txt
bugcrowd.com
hackerone.com

دستور hakscale push -p “host:./testdomains.txt” -c “subfinder -d _host_” -t 20 -q blogDemo را اجرا نمایید. با این کار دو دستور به صف پوش خواهد شد. ورکر این دستورها را برداشته و شروع به پردازش آن ها می نماید. وقتی این کار به اتمام رسید، مشابه تصویر زیر ورکر باید نتیجه را دوباره به صف پوش کند.

خروجی ورکر:

خروجی subdomain

خروجی صف:

خروجی صف

ورکر تا هنگامی که دیگر کاری باقی نماند، به اجرای کارهای موجود در صف ادامه خواهد داد. سپس تا زمانی که کارهای دیگری برای اجرا وجود داشته باشد، به نظرسنجی (poll) می پردازد. برای این که با استفاده از این روش کانتینربندی، مقیاس اتومیشن را به طور سریع و چشمگیر افزایش دهید، می توانید هر تعداد از این کانتینرها را که نیاز باشد، به کار گیرید.

نتیجه‏‌گیری:

امیدوارم این راهنما شما را متقاعد کرده باشد تا هنگام راه‌‏اندازی زیرساخت اتومیشن خود، حداقل برای یک بار هم که شده از Docker استفاده نمایید. ممکن است در نگاه اول استفاده از Docker سخت و ترسناک به نظر برسد، ولی می توانم به شما این اطمینان را بدهم که استفاده از آن، روند استقرار و توسعۀ automation شما را تا حد زیادی بهبود خواهد داد. من شخصاً از این معماری برای automation خود استفاده می کنم.

 

منبع

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *