Конфигурация и сценарии настройки CuckooMX
Ниже приведены сценарии настройки связки Postfix (приём SMTP), OPNsense (межсетевой экран и NAT) и CuckooMX с отправкой образцов в Cuckoo Sandbox по REST API.
Перед настройкой установите Postfix и разместите cuckoomx.pl с cuckoomx.conf (см. установку CuckooMX).
Иллюстрации воспроизводят рабочую конфигурацию из внутренней инструкции: адреса, доменные имена и подсети на скриншотах относятся к лабораторному стенду; на продакшене замените их на свои значения.
Настройка 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
Права доступа
Пользователь, указанный в 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.