Конфигурация и сценарии настройки CuckooMX
Ниже приведена пошаговая установка связки Postfix (приём SMTP), OPNsense (межсетевой экран и NAT) и CuckooMX с отправкой образцов в Cuckoo Sandbox по REST API. Скрипт cuckoomx.pl и пример cuckoomx.conf следует брать из каталога cuckooMX modified репозитория Arachnid.UTM.
Иллюстрации воспроизводят рабочую конфигурацию из внутренней инструкции: адреса, доменные имена и подсети на скриншотах относятся к лабораторному стенду; на продакшене замените их на свои значения.
Команды, где явно не указано иное, выполняются с правами суперпользователя (sudo) в оболочке на узле с Postfix.
Установка Postfix и сопутствующих пакетов
Установите пакеты (пример для Debian или Ubuntu):
-
postfix— почтовый агент; -
postfix-pcre— поддержка выражений PCRE в конфигурации Postfix; -
mailutils— утилиты для работы с почтовыми ящиками из командной строки.
В ходе настройки Postfix откроется диалог выбора типа конфигурации.
Рекомендуется тип Internet Site: Postfix принимает почту в вашей сети как полноценный сервер. Вариант Local only ограничивает приём локальным узлом (или интерфейсом loopback) и для сценария приёма почты из сети обычно не подходит.
Укажите основной домен почты (FQDN зоны, в которой будут адреса получателей). После завершения установки убедитесь, что служба Postfix активна и слушает TCP-порт 25.
Для проверки сокета используйте, например, ss -lntp и убедитесь, что процесс master Postfix слушает порт 25.
Настройка main.cf
Отредактируйте /etc/postfix/main.cf и задайте параметры в соответствии с вашей топологией, в частности:
-
myhostname— имя узла в почтовой системе; -
inet_protocols— при необходимости ограничьте доipv4, если IPv6 не используется; -
mynetworks— перечислите доверенные подсети (например сегмент DMZ), через запятую после существующих значений; -
inet_interfaces— для приёма из сети укажитеallили явный список интерфейсов вместоloopback-only.
Проверьте синтаксис и просмотрите только изменённые параметры:
sudo postfix check
postconf -n
После правок перезапустите или перезагрузите Postfix согласно политике изменений.
Сетевые параметры узла с Postfix
На узле с Postfix настройте адресацию интерфейсов (пример: адрес в подсети VLAN и шлюз сегмента DMZ). Значения на скриншоте иллюстративны.
Публикация SMTP через OPNsense
Если перед Postfix расположен шлюз OPNsense, настройте правила межсетевого экрана и переадресацию порта 25 на внутренний адрес сервера Postfix.
Правило межсетевого экрана
Создайте правило на внешнем интерфейсе (пример — WAN_1): направление входящий (In), протокол TCP, порт SMTP (25), источник согласно политике безопасности, назначение — адрес Postfix в DMZ.
При необходимости создайте аналогичные правила для других внешних интерфейсов или зон.
Переадресация порта SMTP (NAT port forward)
Настройте переадресацию внешнего TCP/25 на внутренний IP узла Postfix (Redirect target IP). Диапазон портов назначения задайте 25:25, если пробрасывается только SMTP.
Дополнительно: NAT one-to-one и ARP
При использовании внешнего адреса, отличного от адреса интерфейса, может потребоваться согласованная настройка one-to-one NAT и прокси ARP (зависит от топологии).
Проверьте доставку тестового сообщения с внешнего клиента (например с отдельной рабочей станции в другой подсети).
Проверка приёма и содержимого почты
Отправьте тестовое сообщение на адрес на вашем Postfix. Убедитесь, что ящик получателя обновляется, а ответы сервера соответствуют ожиданиям (в том числе для несуществующих локальных получателей, если такая проверка входит в регламент).
Извлечение вложений утилитой ripmime
Postfix передаёт в контент-фильтр MIME-тело сообщения, а не отдельный файл вложения. Для ручной проверки из файла ящика можно применить ripmime:
sudo apt install ripmime
ripmime -i /path/to/mailbox -d /path/to/extract/dir
Параметр -i задаёт файл ящика (или Maildir), -d — каталог для извлечённых частей.
Установка CuckooMX
Зависимости Perl и утилита ripmime
Перед размещением скрипта установите перечисленные в вашей ревизии cuckoomx.pl модули Perl (часто пакетируются в дистрибутиве отдельными пакетами lib*-perl). Установите также ripmime, если используете его для отладки.
Размещение скрипта и конфигурации
Создайте каталог для конфигурации (пример: /data/cuckoo/conf) и скопируйте в него cuckoomx.conf из поставки. Скрипт cuckoomx.pl разместите в выбранном каталоге (пример: /data/cuckoo/). Пути могут отличаться при согласовании с политикой размещения ПО.
Сделайте скрипт исполняемым:
sudo chmod +x /data/cuckoo/cuckoomx.pl
Права доступа
Пользователь, указанный в user= для сервиса pipe в master.cf, должен иметь возможность читать cuckoomx.conf, записывать в каталог карантина (outputdir в XML) и вызывать sendmail. Настройте владельца и группу, либо ACL, вместо широких прав на всех.
На лабораторных стендах иногда выставляют полные права на каталог и файлы для ускорения отладки; на промышленной эксплуатации такой подход не рекомендуется.
Редактирование cuckoomx.conf
Откройте файл конфигурации в редакторе, например:
sudo nano /data/cuckoo/conf/cuckoomx.conf
Задайте:
-
в элементе
api-url— базовый URL REST API Cuckoo Sandbox (пример на скриншоте:http://192.168.30.53:8090); -
в элементе
api-token— токен изcuckoo.confна стороне песочницы; вводите значение без лишних пробелов; не путайте латинскую букву «O» с цифрой «0»; -
в элементе
guest— имя гостевой виртуальной машины в Cuckoo, на которой выполняется анализ.
Сохраните файл и выйдите из редактора (в nano: запись — Ctrl+O, выход — Ctrl+X).
Интеграция с Postfix: файл master.cf
cd /etc/postfix
sudo nano master.cf
В сервисе smtp для smtpd добавьте опцию content_filter=cuckoomx в той же многострочной записи, что и smtpd, с корректным отступом столбцов. Ошибка в этом месте приводит к сообщению об ошибке при выполнении postfix check.
В конец master.cf добавьте сервис типа pipe с именем cuckoomx, совпадающим с content_filter. Укажите непривилегированного пользователя (например cuckoomx, cuckoo или отдельную учётную запись) и путь к cuckoomx.pl в argv. Не используйте пользователя root. Макросы Postfix в конце строки argv — -f ${sender} ${recipient} — оставьте без изменений (подстановку выполняет Postfix, не оболочка).
Пользователь не обязан совпадать с учётной записью процесса Cuckoo на другом узле: постановка задач выполняется по API.
Перезагрузите конфигурацию Postfix:
sudo systemctl reload postfix
Проверка доступности API
Перед приёмом боевой почты проверьте с узла Postfix доступ к API (при необходимости установите пакет curl). Базовый URL должен совпадать с api-url в cuckoomx.conf (без слэша в конце). Типовая проверка состояния Cuckoo 2.x:
curl "http://АДРЕС_API:8090/cuckoo/status"
Если ответ имеет код 401, включена проверка токена; укажите тот же токен, что в api-token:
curl -H "Authorization: Bearer ВАШ_ТОКЕН" "http://АДРЕС_API:8090/cuckoo/status"
Подробнее о путях /tasks/create/file и заголовке Bearer см. справочник CuckooMX и справочник Cuckoo Sandbox.
После отправки письма с вложением при корректной настройке в каталоге данных (например под /data/cuckoo/) появляется рабочий каталог карантина, а в веб-интерфейсе Cuckoo — новые задачи анализа.
Для просмотра сообщений фильтра в журнале почты выполните:
sudo tail -f /var/log/mail.log | grep cuckoomx
Сообщения об ошибках в журнале Postfix
Если postfix check указывает на строку с content_filter, убедитесь, что опция продолжает запись сервиса smtp … smtpd, а не оформлена отдельной строкой без привязки к сервису (подробнее — устранение неисправностей).
При ошибках вида «не найден модуль Perl» установите недостающие пакеты модулей и снова выполните sudo systemctl reload postfix.
Следующая страница: Анализ производительности и варианты оптимизации CuckooMX.