Что такое Docker?
Docker – это платформа с открытым исходным кодом, позволяющая разрабатывать, развертывать и управлять несколькими приложениями в рамках одной операционной системы.
Вместо того чтобы иметь множество отдельных серверов, настроенных и предназначенных для работы с конкретными приложениями, можно запускать все приложения с одного сервера, причем каждое приложение будет находиться в собственном контейнере.
Более подробную информацию о том, что такое Docker и как он работает, можно найти тут
🐳 Сканирование образов контейнеров на наличие уязвимостей с помощью Docker Scout
Как в настоящее время хакеры масштабируют автоматизацию
Сейчас многие хакеры размещают скрипты и приложения на виртуальных частных серверах (VPS).
Как вы можете себе представить, запуск нескольких скриптов на нескольких VPS быстро приводит к тому, что процесс автоматизации становится очень сложным.
Например, у вас может быть три небольших сервера, на которых выполняется перечисление поддоменов, три – сканирование портов, три – ядра и один – центральная база данных.
Таким образом, всего остается 10 серверов.
Единственный способ увеличения масштаба – это добавление новых серверов.
Каждый сервер увеличивает операционные накладные расходы.
Масштабирование автоматизации Docker
Автоматизация для этичного хакинга – отличный вариант использования микросервисов.
Масштабирование автоматизации с помощью Docker – это приближение к масштабированию автоматизации с помощью микросервисной архитектуры.
Микросервисная архитектура – это построение системы из небольших сервисов, которые работают независимо друг от друга для достижения общей цели.
Каждый этап рабочего процесса может быть изолированным микросервисом со своим собственным образом и контейнером Docker.
На одном VPS может быть развернуто несколько контейнеров Docker, что позволяет легко масштабировать систему путем развертывания большего количества контейнеров.
Рассмотрим пример построения микросервисной архитектуры с использованием Docker.
Например мы имеем базу данных для хранения данных, очередь Redis для распределения задач и VPS для размещения наших контейнеров Docker.
Задания Cron отправляют задачи в очередь до тех пор, пока не появится контейнер для их выполнения.
У нас есть 3 контейнера: один для пассивного перечисления поддоменов, один для резолва доменов и один для обнаружения HTTP-серверов.
Количество контейнеров может быть увеличено или уменьшено в зависимости от потребностей очереди Redis.
После выполнения задач результаты сохраняются в базе данных.
Для увеличения масштаба достаточно добавить дополнительные контейнеры.
Упрощение работы с Docker Compose
Docker Compose – это инструмент для запуска мультиконтейнерных приложений.
Он использует YAML-файлы для определения конфигурации контейнеров. После создания файла достаточно выполнить команду “docker-compose up”.
Для увеличения масштаба достаточно увеличить количество контейнеров в YAML-файле, а все остальное сделает Docker Compose.
Вот как выглядит файл Docker Compose.
Как масштабировать автоматизацию
Чтобы показать, как можно масштабировать автоматизацию, давайте создадим среду с одним контейнером и установим в него некоторые инструменты.
Мы будем использовать следующее:
Hakscale забрасывает команды в нашу очередь Redis и пересылает их в subfinder.
Для настройки нужны три файла в каталоге:
- Dockerfile
- docker-compose.yaml
- hakscale-config.yaml
Dockerfile
FROM golang:1.19.2-alpine # Adding git to install tools! RUN apk update && apk add bash git # Copy hakscale config file with Redis queue info! COPY hakscale-config.yaml /root/.config/haktools/hakscale-config.yml # Install hakscale from hakluke! RUN go install github.com/hakluke/hakscale@latest # Install subfinder from 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`.
После завершения сборки можно отправить на него команды.
Далее создайте файл с доменами, которые вы хотите протестировать, например:
Выполните команду `hakscale push -p “host:./testdomains.txt” -c “subfinder -d _host_” -t 20 -q blogDemo`.
В результате в очередь будут отправлены две команды.
Воркер подхватит их и начнет обрабатывать.
По окончании обработки он должен вывести результат обратно в очередь.
Воркер будет продолжать выполнять задания из очереди, пока не останется ни одного.
Затем он будет опрашивать, пока не появятся новые задания.
Чтобы быстро и эффективно масштабировать автоматизацию с помощью контейнерного метода, можно легко запустить столько контейнеров, сколько потребуется.
Заключение
Надеюсь, этот пример убедил вас в необходимости использования Docker при создании инфраструктуры автоматизации.
см. также:
- 🐳 Запуск OpenVPN-сервера одной командой Docker
- 🐳 Проверка образов и контейнеров Docker с помощью VirusTotal: пошаговое руководство
- 📜 Запуск Greenbone Community Edition в контейнерах Docker
- 🐳 Обзор лучших практик безопасности Dockerfile для более безопасного контейнера
- ☸️ Vesta: Анализ конфигурации кластеров Docker и Kubernetes и анализ уязвимостей
- 🐳 Расширенная безопасность Docker Часть II
- 🐳 Расширенная безопасность Docker