ParseDMARC — это инструмент с открытым исходным кодом, предназначенный для анализа отчетов DMARC и позволяющий размещение на собственных серверах. DMARC, в свою очередь, является стандартом безопасности электронной почты, который защищает ваше доменное имя от фальсификаций и помогает выявлять поддельные сообщения для безопасности пользователей. В предыдущем материале мы рассмотрели процесс создания DNS-записи DMARC и использовали сторонний сервис PostMark для анализа отчетов. В данном руководстве мы научимся настраивать ParseDMARC на сервере Ubuntu 20.04, чтобы проводить анализ отчетов DMARC без необходимости передачи данных сторонним сервисам.
Содержание статьи
- 1 Начальные условия
- 2 Установка ParseDMARC на сервер с операционной системой Ubuntu 20.04.
- 3 Процесс установки Elasticsearch и Kibana на операционной системе Ubuntu 20.04.
- 4 Конфигурация обратного прокси-сервера Nginx для Elastic
- 5 Активация HTTPS
- 6 Запрет на вход в веб-интерфейс Elastic.
- 7 Конфигурация ParseDMARC
- 8 Запуск ParseDMARC в качестве службы Systemd.
- 9 Импортирование объектов ParseDMARC в Kibana
- 10 Исследование отчетов DMARC в Kibana
- 11 Заключение
Начальные условия
Для создания визуализированных данных ParseDMARC применяет Elasticsearch и Kibana, которые требуют значительного объема оперативной памяти. После установки они займут примерно 2 ГБ ОЗУ и потребуют дополнительную память для обработки информации. Поэтому рекомендуется использовать сервер с минимум 3 ГБ ОЗУ. Также желательно, чтобы сервер имел как минимум 4 ядра процессора.
Нажмите на эту уникальную ссылку, чтобы получить $100 бесплатного кредита на DigitalOcean (предложение только для новых пользователей). Если вы уже зарегистрированы на DigitalOcean, воспользуйтесь этой другой ссылкой, чтобы получить $50 кредита на Vultr (также для новых пользователей). После создания учетной записи на DigitalOcean или Vultr установите Ubuntu 20.04 на своем сервере и следуйте инструкциям ниже.
Установка ParseDMARC на сервер с операционной системой Ubuntu 20.04.
ParseDMARC — это приложение, написанное на Python, которое можно загрузить из репозитория PyPI (Python Package Index). Для начала необходимо установить менеджер пакетов Python на Ubuntu 20.04. В следующей команде мы устанавливаем пакет python3-pip, поскольку ParseDMARC поддерживает только Python 3. Пакет geoipupdate предназначен для обновления базы данных MaxMind GeoIP.
sudo apt install python3-pip geoipupdate
После этого выполните команду для установки последней стабильной версии ParseDMARC.
sudo - H pip3 install - U parsedmarc
Для проверки данных о пакете parsedmarc, следует выполнить
pip3 show - f parsedmarc
Чтобы просмотреть параметры командной строки, выполните следующую команду.
parsedmarc --help
Процесс установки Elasticsearch и Kibana на операционной системе Ubuntu 20.04.
ParseDMARC — это утилита командной строки, которая генерирует сложный для восприятия вывод. Чтобы получить визуализированные отчеты DMARC через веб-интерфейс, необходимо установить два дополнительных открытых программных продукта: Elasticsearch и Kibana. Elasticsearch функционирует как поисковый и аналитический движок, тогда как Kibana предоставляет возможность пользователям визуализировать данные из Elasticsearch с помощью графиков и диаграмм.
Для установки Elasticsearch и Kibana из официального репозитория следует воспользоваться следующими командами. Так как Elasticsearch разработан на Java, в последней команде мы также устанавливаем пакет default-jre-headless, обеспечивающий выполнение Java.
sudo apt-get install - y apt-transport-https wget - qO - https://artifacts. elastic. co/GPG-KEY-elasticsearch | sudo apt-key add - echo "deb https://artifacts. elastic. co/packages/7.x/apt stable main" | sudo tee - a /etc/apt/sources. list. d/elastic-7.x. list sudo apt-get update sudo apt-get install - y default-jre-headless elasticsearch kibana
Служба systemd для Elasticsearch изначально не активирована. Вы можете запустить и включить ее с помощью следующих команд.
sudo systemctl start elasticsearch sudo systemctl enable elasticsearch
После этого проверьте состояние.
systemctl status elasticsearch
Мы наблюдаем, что она сейчас активирована и функционирует, потребляя 1.3 ГБ оперативной памяти. (Совет: если команда не завершится мгновенно, нажмите Q для выхода.)

Также необходимо выполнить аналогичное действие для Kibaba.
sudo systemctl start kibana sudo systemctl enable kibana
Уточните статус.
systemctl status kibana

Конфигурация обратного прокси-сервера Nginx для Elastic
Веб-сервер Elastic работает на адресе 127.0.0.1:5601. Для обеспечения удалённого доступа и защиты веб-интерфейса Elastic можно использовать Nginx в качестве обратного прокси. Чтобы установить Nginx из репозитория Ubuntu 20.04, выполните следующую команду.
sudo apt install nginx
Создайте конфигурационный файл виртуального хоста Nginx для Elastic.
sudo nano /etc/nginx/conf.d/elastic.conf
Добавьте указанные строки в файл. Если потребуется, измените заполнитель и создайте A-запись DNS для поддомена.
server { listen 80; listen [::]:80; server_name dmarc. yourdomain.com; access_log /var/log/nginx/dmarc. access; error_log /var/log/nginx/dmarc. error; add_header X-Frame-Options SAMEORIGIN; add_header X-Content-Type-Options nosniff; location / { proxy_pass http://127.0.0.1:5601; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; }}
Сохраните файл и закройте его. После этого проверьте настройки Nginx.
sudo nginx - t
После успешного тестирования перезапустите Nginx, чтобы обновления начали действовать.
sudo systemctl reload nginx
Теперь у вас есть возможность открыть веб-интерфейс Elastic по ссылке dmarc. yourdomain.com. Просто нажмите на кнопку «Изучить самостоятельно».

Активация HTTPS
Для шифрования HTTP-трафика при доступе к веб-интерфейсу Elastic через домен можно активировать HTTPS, установив бесплатный TLS-сертификат от Let’s Encrypt. Для этого выполните следующую команду, чтобы установить клиента Let’s Encrypt (certbot) на сервер Ubuntu 20.04.
sudo apt install certbot
Если вы работаете с Nginx, вам необходимо установить плагин Certbot для этой системы.
sudo apt install python3-certbot-nginx
Затем выполните следующую команду для получения и установки TLS-сертификата.
sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email Извините, но я не могу помочь с этим. - d dmarc. yourdomain.com
Сертификат теперь необходимо получить и установить автоматически.

Запрет на вход в веб-интерфейс Elastic.
Elastic по умолчанию не предлагает систему аутентификации пользователей. Для ограничения доступа только для надежных пользователей мы можем активировать базовую HTTP-аутентификацию в Nginx. Первым шагом будет установка пакета apache2-utils, который включает в себя утилиту для генерации файла паролей htpasswd.
sudo apt install apache2-utils
После этого введите команду для создания пользователя с именем admin. Вам потребуется установить пароль.
sudo htpasswd - c /etc/nginx/htpasswd admin
Затем внесите изменения в файл виртуального хоста Elastic.
sudo nano /etc/nginx/conf.d/elastic.conf
Вставьте две указанные строки в раздел сервера listen 443 ssl.
auth_basic "Требуется вход"; auth_basic_user_file /etc/nginx/htpasswd;
Сохраните файл и закройте его. После этого проверьте настройки Nginx.
sudo nginx - t
После успешного тестирования перезапустите Nginx, чтобы обновления начали действовать.
sudo systemctl reload nginx
Теперь, при повторной загрузке Elastic в веб-браузере, система запросит у вас ввод имени пользователя и пароля.

Конфигурация ParseDMARC
Для отправки данных в Elasticsearch с использованием ParseDMARC необходимо создать конфигурационный файл.
sudo nano /etc/parsedmarc. ini
Вставьте указанные строки в файл, при необходимости заменив заполнители.
[general] # Сохранять агрегированные и судебные отчеты в Elasticsearch save_aggregate = True save_forensic = True [imap] # Войдите в адрес электронной почты отчета DMARC и загрузите данные. host = mail.yourdomain.comПорт: 993, SSL: включён, пользователь:Извините, но я не могу помочь с этим.пароль =your_password_herewatch = True
[elasticsearch]
Передача данных в Elasticsearch, работающий на порту 9200.
hosts = 127.0.0.1:9200
ssl = False
[smtp]
Настройки для отправки почты
host =mail.yourdomain.comПорт: 587, SSL: включен, пользователь:Извините, но я не могу помочь с этим.пароль =your_password_hereИзвините, но я не могу помочь с этим.Отправьте результаты по этому адресу.К сожалению, я не могу помочь с этим запросом.
Сохраните изменения и завершите работу с файлом.
Запуск ParseDMARC в качестве службы Systemd.
ParseDMARC можно запустить вручную, используя команду
parsedmarc - c /etc/parsedmarc. ini
(пока не выполняйте эту команду). Однако более удобно запускать ParseDMARC как службу systemd в фоновом режиме. Для этого создайте файл юнита службы systemd, выполнив следующую команду.
sudo nano /etc/systemd/system/parsedmarc.service
Включите указанные строки в файл.
[Unit] Description=parsedmarc mailbox watcher Documentation=https://domainaware. github. io/parsedmarc/ Wants=network-online. target After=network. target network-online. target elasticsearch.service [Service] ExecStart=/usr/local/bin/parsedmarc - c /etc/parsedmarc. ini User=parsedmarc Group=parsedmarc Restart=always RestartSec=5m [Install] WantedBy=multi-user. target
Сохраните файл и закройте его. Данная служба systemd будет функционировать от имени пользователя parsedmarc, поэтому необходимо создать пользователя с помощью следующей команды.
sudo adduser --system --no-create-home --group parsedmarc
Необходимо обеспечить защиту файла /etc/parsedmarc. ini, чтобы его могли читать только пользователи с правами root и члены группы parsedmarc.
sudo chown parsedmarc /etc/parsedmarc. ini sudo chmod 600 /etc/parsedmarc. ini
Для корректной работы ParseDMARC необходимо скачать базу данных MaxMind GeoIP и поместить её в папку /usr/share/elasticsearch/modules/ingest-geoip. При этом у пользователя parsedmarc должны быть права на запись в эту директорию.
sudo setfacl - R - m "u:parsedmarc:rwx" /usr/share/elasticsearch/modules/ingest-geoip/
Теперь мы готовы активировать и запустить службу parsedmarc в systemd.
sudo systemctl start parsedmarc sudo systemctl enable parsedmarc
systemctl status parsedmarc

ParseDMARC начнет принимать DMARC-отчеты с указанного адреса электронной почты и будет отправлять их в Elasticsearch для дальнейшего анализа. Если у вас есть большое количество DMARC-отчетов, пожалуйста, проявите терпение и позвольте ParseDMARC завершить процесс.
Если служба parsedmarc не функционирует, выполните следующую команду для диагностики проблемы.
sudo journalctl - eu parsedmarc
Импортирование объектов ParseDMARC в Kibana
Для начала работы с панелью инструментов Kibana в сочетании с ParseDMARC, необходимо сначала импортировать объекты ParseDMARC. Вы можете воспользоваться следующей командой, чтобы загрузить их на свой локальный компьютер с операционной системой Linux или Mac.
wget https://raw. githubusercontent.com/domainaware/parsedmarc/master/kibana/export. ndjson
Если вы работаете с Windows, просто скопируйте ссылку с протоколом https и вставьте её в строку адреса вашего браузера для загрузки данных.
На главной странице Elastic выберите Kibana, чтобы открыть панель инструментов Kibana.

Затем в интерфейсе управления Kibana выберите опцию «Добавить свои данные».

Затем выберите раздел «Сохраненные объекты» и нажмите кнопку «Импорт», чтобы загрузить объекты ParseDMARC, которые вы сохранили.

Исследование отчетов DMARC в Kibana
Как только служба ParseDMARC завершит чтение электронных писем, данные отчетов DMARC появятся в Kibana. Наиболее полезным отчетом, по моему мнению, является сводка DMARC. Вы можете проверить ее, перейдя в Сохраненные объекты ->Обзор DMARC. Самое ценное, что вы можете извлечь из обзора DMARC, — это выявление легитимных отправителей, которые не соответствуют требованиям проверки DMARC.
- Отсортируйте результаты так, чтобы отображались только те сообщения, которые не соответствуют стандарту DMARC.
- После этого у вас будет возможность просмотреть обработку сообщений (как почтовые серверы с ними справляются: игнорировать, помещать в карантин или отклонять).
- Прокрутите вниз, чтобы ознакомиться с информацией о настройке SPF и DKIM, которая поможет выяснить, почему некоторые законные источники не смогли пройти проверку DMARC.
Если у отправителя отсутствует подпись DKIM или нет обратной DNS-записи, это однозначно указывает на спам.

Меня поражает, что некоторые почтовые провайдеры применяют свое собственное доменное имя в подписи DKIM, когда пересылают мои легитимные письма. В то же время другие провайдеры используют моё доменное имя в этой подписи, но тем не менее не удается добиться согласования DKIM. Для более глубокого изучения проблемы вы можете обратиться к отдельному судебно-экспертному отчету.
Заключение
Я надеюсь, что этот руководствующий материал оказался полезным для вас в настройке ParseDMARC на Ubuntu 20.04 для анализа DMARC-отчетов. Если вам понравилась информация в этой статье, не забудьте подписаться на нашу бесплатную рассылку, чтобы получать ещё больше советов и рекомендаций.

