Блог

Гайд по GoPhish - часть 1

Экспертные материалы
Компьютерные атаки социальной направленности остаются одной из самых
распространённых угроз, ориентированных на кражу конфиденциальной информации
пользователей. Для специалистов по безопасности и пентестеров важным является
возможность моделировать такие воздействия с целью выявления уязвимостей
и повышения осведомлённости сотрудников. В этой статье мы подробно рассмотрим
процесс настройки популярного фреймворка GoPhish на базе VPS и его интеграции
с почтовым сервером Postfix, что обеспечит надёжную отправку фишинговых писем
и позволит создавать реалистичные сценарии атак. Вы узнаете, как настроить
все необходимые компоненты для эффективного проведения социальных экспериментов
по оценке уровня безопасности вашей организации.

Для демонстрации работоспособности фреймворка будет сконфигурирован стенд,
где в его основе – виртуальный сервер с экземпляром GoPhish и почтовиком для отправки
корреспонденции (Рисунок 1). Клиентские устройства, имитирующие конечных
пользователей, будут получать электронные письма и переходить по ссылкам, что позволит
отслеживать эффективность кампании и поведение спам-фильтров. Такая архитектура
обеспечивает полный цикл моделирования фишинговой атаки – от рассылки до сбора статистики, что делает её удобной и наглядной для обучения и тестирования.
Отдельное внимание уделим механизмам повышения доверия к собственному SMTP-серверу, что критично для успешной доставки писем и обхода блокировок.
Рассмотрим методы настройки SPF, DKIM и DMARC – стандартных технологий аутентификации электронной почты, которые подтверждают легитимность отправителя и уменьшают вероятность попадания писем в спам. Также посмотрим, как правильно настроить обратную зону DNS (PTR-запись) и обеспечить корректную конфигурацию почтового сервера Postfix для повышения репутации и доверия со стороны получателей. Эти меры помогут обеспечить максимальную эффективность фишинговых кампаний и реалистичность тестирования.

Кроме того, подробно остановимся на процессе создания фишингового сайта, максимально точно имитирующего целевую веб-страницу. Рассмотрим методы клонирования внешнего вида и функционала оригинального ресурса, адаптацию форм для сбора введённых пользователями данных и их интеграцию в систему GoPhish. Такой подход позволяет создавать убедительные фишинговые страницы, которые значительно повышают реализм кампаний и помогают выявлять слабые места в осведомленности сотрудников.

В итоге, настройка фреймворка GoPhish в связке с почтовым сервером Postfix на VPS откроет широкие возможности для проведения реалистичных фишинговых кампаний. Правильная конфигурация всех компонентов, включая механизмы повышения доверия к SMTP-серверу и создание убедительных фишинговых сайтов, позволит не только тестировать уязвимости, но и значительно повысить уровень киберграмотности сотрудников. Впереди вас ждёт много интересного – детальное изучение всех этапов настройки и практическая реализация задуманного, которые помогут сделать ваши тестирования максимально результативными и информативными. Пришло время приступить к работе и воплотить эти знания в жизнь!.

Регистрация домена

С введением покончено, пора приступать к реализации задуманного.

Так как в предстоящих экспериментах подразумевается взаимодействие с реальными людьми и злыми SMTP-серверами, особое внимание следует уделить выбору доменного имени. Внешний облик не должен вызывать никаких подозрений у пользователя, а TLD (Top-Level Domain) по возможности совпадать с целевым, чтобы на принимающей стороне было как можно меньше вопросов к легитимности нашего почтовика.

В качестве регистратора выбран Nic.ru. Процесс создания аккаунта оставим за кадром и сразу перейдём к каталогу свободных имен. В форме поиска указываем целевой домен (Рисунок 1) и пытаемся подобрать максимально похожий.
Выбираем понравившийся, переходим к оформлению и оплате. В нашем случае взгляд пал на gophish.fun и приятным бонусом оказались уже готовые SSL-сертификаты. Немного терпения и спустя короткий промежуток времени в личном кабинете отобразятся активные услуги (Рисунок 2).

В качестве демонстрации здесь умышленно выбран домен верхнего уровня FUN. При настройке SMTP-сервера мы покажем, что анти-спам фильтры ревностно относятся к подобным TLD.
К сертификатам безопасности вернемся несколько позже, когда будем настраивать сам фреймворк GoPhish, а пока необходимо указать NS-записи для приобретённого домена.
Для этого переходим к активным доменам и в раскрывшемся окне для gophish.fun указываем сторонние DNS.
Поскольку в дальнейшем ожидается настройка виртуального сервера на ресурсах хостинг-провайдера RUVDS, сразу указываем его NS-сервера: ns1.ruvds.com, ns2.ruvds.com (Рисунок 4). Сохраняем изменения, регистрация доменного имени для экспериментов с фишинговой рассылкой писем завершена. Позднее вернемся к активным услугам за любезно предоставленными Nic.ru SSL-сертификатами.

Оформление VPS

Как сказал один мудрец: «Без VPS и жизнь не та!». Так и нам, для работы необходимо арендовать выделенный виртуальный сервер у любого удобного хостинг- провайдера. Основными критериями в данном случае являются:

  • наличие «белого» IP-адреса;

  • право создания и редактирования DNS-записей;

  • возможность добавление PTR-записи для сервера.

В качестве хостинг-провайдера выступит уже упомянутая площадка RUVDS. По сложившейся традиции процесс регистрации оставим за кадром и перейдем к заказу конфигурации будущего сервера.

Первое, выбираем расположение сервера по аналогии с доменным именем – стараемся сделать всё максимально похожим на целевую систему. Если компания расположена в России и использует соответствующие почтовые сервера, остановимся на дата-центре в Москве (Рисунок 1).
Физические параметры сервера задаем из своих предпочтений (Рисунок 2). Имейте в виду, при выборе минимально возможных значений RUVDS скорее всего назначит один из стандартных тарифов (например, Старт). В этом нет ничего плохого за исключением невозможности задания PTR-записи для данной категории серверов. Это критично при повышении доверия к SMTP-серверу.

В качестве операционной системы выступит Ubuntu 22.04 LTS. При желании можно сразу сгенерировать пару SSH-ключей для последующего доступа к серверу. Оплачиваем выбранную конфигурацию и ожидаем создания.

Первоначальная конфигурация VPS

Всего пара мгновений и получаем ответ от RUVDS о готовности сервера. Переходим в личный кабинет, обращаемся на вкладку Домены и связываем VPS с приобретенным ранее доменным именем gophish.fun (Рисунок 1, 2).

Здесь же встречаем адреса NS-серверов RUVDS, которые указывали в настройках доменного имени на Nic.ru.
Далее, переходим на вкладку Мои Серверы (Рисунок 3), узнаём назначенный внешний IP-адрес и меняем пароль пользователю root (если конечно на этапе оформления заказа заранее не позаботились о генерации ключевых файлов).

Первое подключение

Все готово для подключения к виртуальному серверу по SSH (Рисунок 4).
Добро пожаловать!
Листинг 1.
ssh root@194.87.103.2
В качестве hostname установим приобретённый домен gophish.fun. Перезагрузим сетевые службы для применения изменений.
Листинг 2.
sudo hostnamectl set-hostname gophish.fun
sudo systemctl restart networking
Сейчас мы работаем с «чистой» операционной системой и в дальнейшем нам понадобятся дополнительные компоненты, установим часть из них.
Листинг 3.
sudo apt update
sudo apt install wget unzip net-tools iptables-persistent

Приватный во всех смыслах (настройка VPN)

Повышаем секьюрность нашего сервера – сконфигурируем VPN и спрячем за него SSH. С этой задачей отлично справится готовый скрипт настройки OpenVPN. Создаем рабочий каталог и сохраняем исполняемый файл в openvpn-install.sh.
Листинг 4.
sudo mkdir /root/OpenVPN
sudo wget https://git.io/vpn -O /root/OpenVPN/openvpn-install.sh
Устанавливаем права для пользователя root и запускаем исполняемый файл. В процессе установки отвечаем на 4 простых вопроса:
  • транспортный протокол для работы OpenVPN (на вкус и цвет, оставим UDP – 1);

  • порт для прослушивания входящих подключений (почему бы и нет – 1194);

  • DNS-сервер для клиентов VPN-сети (отдадим предпочтение Google – 2);

  • имя первого VPN-клиента для которого сгенерируется сертификат.
Листинг 5.
cd /root/OpenVPN
sudo chmod 700 /root/OpenVPN/openvpn-install.sh
sudo ./ openvpn-install.sh
В конечном итоге в каталоге /root/OpenVPN появится конфигурационный файл .ovpn, который необходимо загрузить к себе на хостовую машину.
По умолчанию openvpn-install.sh назначает виртуальному сетевому адаптеру tun0 IP-адрес 10.8.0.1/24. При желании данные параметры всегда можно изменить в конфигурационных файлах OpenVPN или в самом openvpn-install.sh перед первым запуском. Сейчас же оставим все как есть (Рисунок 6).

Инкапсулируемся (подключение к VPS по SSH внутри VPN)

Настала пора получить доступ к VPN выделенного виртуального сервера, а для этого необходимо загрузить сгенерированный на предыдущем этапе конфигурационный файл OpenVPN. Сделать это можно, например, с помощью WinSCP или через консоль хостовой машины утилитой SCP.
Листинг 6.
scp root@194.87.103.2:/root/OpenVPN/gophish_owner.ovpn /home/<user>/conf.ovpn
Отлично, инициируем подключение по протоколу OpenVPN к VPS gophish.fun с хостовой машины.
Листинг 7.
openvpn --config /home/<user>/conf.ovpn
Следующим шагом, в новом окне терминала подключаемся уже по протоколу SSH на VPN-интерфейс (Рисунок 6) виртуального сервера gophish.fun (IP-адрес – 10.8.0.1, TCP-порт – 22).
Листинг 8.
ssh –p 22 root@10.8.0.1

Руки прочь от SSH

Чтобы лишить злых хакеров возможности атаковать SSH методами грубой силы, перевесим его на VPN-интерфейс. В конфигурационном файле /etc/ssh/sshd_config указываем значение 10.8.0.1 для параметра ListenAddress (Рисунок 8).
После того как изменения в конфигурационном файле сохранены, перезапускаем службу sshd.
Листинг 9.
sudo systemctl restart sshd.service
Теперь подключиться к виртуальному серверу gophish.fun возможно только находясь внутри VPN (Рисунок 9).
Листинг 10.
sudo netstat -aon | grep -E 'LISTEN' -w –i

Установка и конфигурирование фреймворка GoPhish

Виртуальный сервер поднят, доменное имя зарегистрировано. Самое время приступать к установке и настройке ключевого компонента для проведения фишинговых кампаний – фреймворку GoPhish.

Подключение к gophish.fun

С использованием полученного ранее сертификата .ovpn подключаемся к VPN-сети gophish.fun. Далее, в новом окне терминала открываем SSH-сессию с нашим VPS.
Листинг 1.
openvpn --config conf.ovpn
Листинг 2.
ssh root@10.8.0.1

Создание пользователя gophish

Если верить методичкам по информационной безопасности, то любой пользовательский сервис должен работать с минимально необходимым набором прав и привилегий. Не будем отступать от этого правила и создадим нового непривилегированного пользователя для экземпляра GoPhish.
Листинг 3.
sudo adduser -c "Gophish user" gophish
sudo su – gophish

Загрузка бинарного пакета GoPhish

Для получения актуальной сборки фреймворка обратимся к официальному репозиторию. Находясь в контексте пользователя gophish загружаем в домашний каталог архив со всем необходимым
Листинг 4.
curl -L https://github.com/gophish/gophish/releases/download/v0.12.1/gophish-
v0.12.1-linux-64bit.zip -o gophish-v0.12.1-linux-64bit.zip
После, создаем директорию для извлечения и распаковываем полученный архив (при желании после получения данных его можно удалить).
Листинг 5.
mkdir gophish-v0.12.1
unzip gophish-v0.12.1-linux-64bit.zip –d ./gophish-v0.12.1
rm gophish-v0.12.1-linux-64bit.zip
Мы настроены на длительное сотрудничество, поэтому заведём символическую ссылку на актуальный каталог GoPhish. Так мы не заморочимся с переназначением путей, когда придёт время обновляться.
Листинг 6.
ln -s /home/gophish/gophish-v0.12.1 /home/gophish/gophish

Создание каталога и соответствующего файла для сохранения журнала работы GoPhish

Думаю, не нужно объяснять важность ведения журнала событий любой системы. Из контекста суперпользователя выполняем команды по созданию и изменению прав на каталог и файл будущего журнала GoPhish.
Листинг 7.
sudo mkdir /var/log/gophish
sudo touch /var/log/gophish/gophish.log
sudo chown gophish:gophish –R /var/log/gophish
sudo chmod 600 /var/log/gophish/gophish.log
В данном случае нужно самостоятельно отслеживать объем логов и периодически очищать содержимое файла, чтобы не съесть все свободное место файловой системы.
Или же автоматизировать этот процесс.

Внесение изменений в конфигурационный файл GoPhish

Возвращаемся в контекст пользователя gophish и приводим конфигурационный файл /home/gophish/gophish/config.json к следующему виду.
Листинг 8.
sudo su - gophish
Содержимое конфигурационного файла GoPhish
{
"admin_server": {
"listen_url": "127.0.0.1:16000",
"use_tls": true,
"cert_path": "pwn3d.crt",
"key_path": "pwn3d.key",
"trusted_origins": []
},
"phish_server": {
"listen_url": "127.0.0.1:16001",
"use_tls": true,
"cert_path": "gophish.crt",
"key_path": "gophish.key"
},
"db_name": "sqlite3",
"db_path": "gophish.db",
"migrations_prefix": "db/db_",
"contact_address": "",
"logging": {
"filename": "/var/log/gophish/gophish.log",
"level": ""
}
}
Секция admin_server (административная веб-панель фреймворка GoPhish):

  • listen_url – IP-адрес одного из интерфейсов и свободный TCP-порт по которому будет доступна веб-панель администратора;

  • use_tls – для обеспечения шифрованного канала указываем значение true;

  • cert_path – путь до SSL-сертификата (сгенерируем пару pwn3d.crt и pwn3d.key на следующем шаге);

  • key_path – путь до закрытого ключа SSL;

  • trusted_origins – при желании доступ к веб-панели может быть ограничен списком доверенных источников, разделенных запятыми.

Секция phish_server (фишинговый веб-сервер, где размещаются целевые страницы):

  • listen_url – IP-адрес/TCP-порт для прослушивания входящих запросов целевых страниц и приема аутентификационных данных;

  • use_tls – для снижения подозрений пользователей к фишинговым страницам будем устанавливать защищенный канал с использованием сертификатов предоставленных Nic.ru при регистрации доменного имени;

  • cert_path и key_path – аналогично секции admin_server за исключением того, что в нашем случае они будут получены в личном кабинете Nic.ru.

Настройки БД оставляем как есть. В секции logging указываем абсолютный путь до ранее созданного файла gophish.log после чего сохраняем изменения и переходимк генерации сертификатов.

Генерация самоподписанных SSL сертификатов для административной панели GoPhish

Из контекста gophish с использованием утилиты openssl в каталоге фреймворка (/home/gophish/gophish) сгенерируем пару файлов pwn3d.key и pwn3d.crt. Ранее мы уже указывали, что именно эти ребята обеспечат нам шифрованный канал до административной панели GoPhish.
Листинг 9.
openssl req -newkey rsa:2048 -nodes -keyout pwn3d.key -x509 -days 365 -out
pwn3d.crt
chmod 600 pwn3d.key
chmod 644 pwn3d.crt

Загрузка сертификата безопасности для фишингово веб-сервера с сайта Nic.ru

Если для доступа к административной панели GoPhish достаточно иметь самоподписанный SSL-сертификат, то в случае с фишинговым сайтом такое не пройдет.
Добьёмся ситуации, когда при переходе по предложенной ссылке у пользователя не возникнет никаких сомнений в том, что он все делает правильно (в этом случае любые уведомления о проблемах с сертификатами совсем ни к чему). В личном кабинете Nic.ru в активных услугах обращаемся к Сертификатам безопасности (Рисунок 1).
Из списка выбираем доступный и загружаем Сертификат и Приватный ключ (Рисунок 2, 3).
Обратите внимание, что ссылка на загрузку приватного ключа приходит на почту. Проверяем входящие письма и забираем ключ (Рисунок 4).
С регистратором доменных имен покончено. Далее необходимо из каталога загрузок (Рисунок 5) переместить полученные файлы на виртуальный сервер gophish.fun.
Сделать это можно из консоли хостовой машины с использованием SCP.
Листинг 10.
scp /home/user/downloads/key.txt
root@10.8.0.1:/home/gophish/gophish/gophish.key
scp /home/user/downloads/www_gophish_fun_2026_03_27.crt
root@10.8.0.1:/home/gophish/gophish/gophish.crt
Возвращаемся на виртуальный сервер и из-под суперпользователя меняем владельца и разрешения на файлы gophish.key, gophish.crt.
Листинг 11.
sudo chown gophish:gophish /home/gophish/gophish/gophish.key
sudo chown gophish:gophish /home/gophish/gophish/gophish.crt
sudo chmod 600 /home/gophish/gophish/gophish.key
sudo chmod 640 /home/gophish/gophish/gophish.crt

Запуск сервера GoPhish в качестве сервиса

До первого запуска всего один шаг. Мы хотим, чтобы GoPhish стартовал вместе с системой после включения или перезагрузки виртуального сервера. Создадим файл Unit для подсистемы Systemd, отвечающей за инициализации и управления службами в Linux.
Листинг 12.
sudo touch /etc/systemd/system/gophish.service
sudo chmod 744 gophish.service
Содержимое файла gophish.service
[Unit]
Description=Gophish application server
Documentation=https://github.com/gophish/gophish
After=network.target
[Service]
Type=simple
ExecStart=/home/gophish/gophish/gophish
Restart=always
User=gophish
Group=gophish
WorkingDirectory=/home/gophish/gophish
[Install]
WantedBy=network-online.target
Внесем немного ясности в содержимое представленного Unit-файла.

Блок Unit:

  • Description – описание службы;

  • Documentation – ссылка на официальный репозиторий фреймворка GoPhish;

  • After – служба должна быть запущена после того, как была настроена сеть.

Блок Service:

  • Type – тип службы (simple означает, что процесс из ExecStart является основным);

  • ExecStart – команда для запуска службы;

  • Restart –служба должна быть перезапущена автоматически при любом завершении;

  • User – служба должна запускаться от имени пользователя gophish;

  • Group – от имени группы gophish;

  • WorkingDirectory – рабочий каталог GoPhish.

Блок Install:

  • WantedBy – служба должна быть запущена после достижения цели network-online.target (более поздняя цель, чем network.target – сеть не только настроена, но и онлайн).

Обновляем список служб и включаем вновь созданную gophish.service.
Листинг 13.
sudo systemctl daemon-reload
sudo systemctl enable gophish.service
Чуть не забыл. Перед стартом службы добавим разрешений пользователю gophish на запуск соответствующего бинарного файла.
Листинг 14.
sudo su - gophish
chmod 744 /home/gophish/gophish/gophish
Финалим, из-под суперпользователя стартуем службу gophish.
Листинг 15.
sudo systemctl start gophish.service
Проверяем состояние и приступаем к пробросу порта (Рисунок 6).
Листинг 16.
sudo systemctl status gophish.service

Настройка правил Iptables

На текущий момент GoPhish доступен только на интерфейсе localhost. Для административной панели это хорошо, но вот в случае с фишинговым веб-сервером, с которым будут взаимодействовать клиенты – нет. Исправим это недоразумение и пробросим TCP-порт 16001 с localhost на внешний интерфейс и 443/TCP.

Перед созданием правил вспомним текущие настройки сетевых интерфейсов виртуального сервера gophish.fun (Рисунок 7).
Вначале разрешим переадресацию пакетов между интерфейсами eth0 и lo. Для этого в каталоге /etc/sysctl.d создадим два файла 99-ipforward.conf и 99-route-localnet.conf.
Листинг 17.
sudo echo "net.ipv4.ip_forward=1" > /etc/sysctl.d/99-ipforward.conf
sudo echo "net.ipv4.conf.eth0.route_localnet=1" > /etc/sysctl.d/99-route-
localnet.conf
Когда net.ipv4.ip_forward установлено в 1, ядро Linux начинает действовать как маршрутизатор – это означает, что оно может получать пакеты, предназначенные для других хостов, и пересылать их дальше, к месту назначения.

В случае с route_localnet, операционная система позволяет перенаправлять пакеты с локальных адресов (127.0.0.0/8) обратно на интерфейс eth0. Экземпляр GoPhish прослушивает localhost, а наивные пользователи должны обращаться к нему через публичный IP-адрес. Без этих настроек, пакеты, предназначенные для localhost, никогда бы не достигли интерфейса eth0 и не вернулись пользователям.

Применяем изменения.
Листинг 18.
sudo sysctl –p /etc/sysctl.d/99-ipforward.conf
sudo sysctl –p /etc/sysctl.d/99-route-localnet.conf
В каталоге суперпользователя создадим файл rules.sh c правилами Iptables.
Листинг 19.
sudo touch /root/rules.sh
sudo chmod 744 /root/rules.sh
Содержимое файла rules.sh
#!/bin/bash
# Внешний сетевой интерфейс
EXT_INT="eth0"
# Публичный IP-адрес сервера
EXT_IP="194.87.103.2"
# Внешний порт, на котором сервер будет принимать входящие соединения
EXT_PORT="443"
# Интерфейс loopback
INT_INT="lo"
# Внутренний IP-адрес, на который будет перенаправляться трафик
INT_IP="127.0.0.1"
# Внутренний порт, на котором работает экземпляр GoPhish
INT_PORT="16001"
# Удаляет все правила из таблиц nat и filter
iptables -t nat -F
iptables -t filter -F
# Удаляет все пользовательские цепочки (chains) из таблиц nat и filter
iptables -t nat -X
iptables -t filter -X
# Основное правило перенаправления портов
# добавляется в цепочку PREROUTING (-A PREROUTING) таблицы nat (-t nat).
# PREROUTING обрабатывает пакеты сразу после их поступления на сервер.
# -i "$EXT_INT": правило применяется только к пакетам,
# пришедшим через внешний интерфейс (eth0).
# -p tcp: правило применяется только к TCP-пакетам.
# --dport "$EXT_PORT": правило применяется только к пакетам,
# пришедшим на порт 443.
# -j DNAT: используется действие DNAT (Destination NAT).
# --to-destination "$INT
IP":"$INT
PORT": куда перенаправлять пакеты.
_
_
iptables -t nat -A PREROUTING -i "$EXT
INT" -p tcp --dport "$EXT
_
_
PORT" -j
DNAT --to-destination "$INT
IP:$INT
PORT"
_
_
# Правило добавляется в цепочку POSTROUTING таблицы nat.
# Изменяет ответы от внутренней службы на порту 16001 так, чтобы они
# казались исходящими с внешнего IP-адреса сервера.
# POSTROUTING обрабатывает пакеты после того, как было принято решение
# о маршрутизации, непосредственно перед их отправкой.
# -s "$INT_IP": правило применяется к пакетам, исходящим с $INT_IP
# -o "$EXT_INT": правило применяется к пакетам, исходящим с $EXT_INT.
# -j SNAT: будет изменен исходный IP-адрес пакета.
# --to-source "$EXT_IP": на какой IP-адрес заменить исходный IP-адрес пакета.
iptables -t nat -A POSTROUTING -s "$INT_IP" -o "$EXT_INT" -j SNAT --to-source
"$EXT_IP"
# Правило добавляется в цепочку FORWARD таблицы filter
# (используется по умолчанию, если не указана опция -t).
# Разрешает прохождение трафика через сервер
# FORWARD используется для пакетов, маршрутизируемых между интерфейсами.
# -i "$EXT_INT": правило применяется к пакетам, входящим на eth0.
25
# -o "$INT_INT": правило применяется к пакетам, выходящим через lo.
# -p tcp: правило применяется только к TCP-пакетам.
# --dport "$INT_PORT": правило применяется к пакетам, идущим на порт 16001.
# -m state --state NEW,ESTABLISHED,RELATED: использует модуль state.
# Для отслеживания состояний соединений.
# NEW - новое соединение.
# ESTABLISHED - уже установленное соединение.
# RELATED - соединение, связанное с существующим.
# -j ACCEPT: пакет должен быть принят (пропущен через сервер).
iptables -A FORWARD -i "$EXT_INT" -o "$INT_INT" -p tcp --dport "$INT_PORT" -m
state --state NEW,ESTABLISHED,RELATED -j ACCEPT
# Правило разрешает трафик, который является частью уже установленных
# или связанных соединений, возвращающийся с внутреннего интерфейса
# на внешний.
# -o "$EXT_INT": правило применяется к пакетам, выходящим через
# внешний интерфейс (eth0).
# -i "$INT_INT": правило применяется к пакетам, входящим через
# интерфейс обратной петли (lo).
# -m state --state ESTABLISHED,RELATED: пропускает пакеты,
# которые относятся к установленным
# или связанным соединениям.
# -j ACCEPT: пакет должен быть принят.
iptables -A FORWARD -o "$EXT
INT" -i "$INT
_
_
INT" -m state --state
ESTABLISHED,RELATED -j ACCEPT
Запускаем созданный файл и сохраняем правила Iptables в /etc/iptables/rules.v4 для их автоматического повторного воспроизведения после запуска или перезагрузки виртуального сервера. Теперь наш фишинговый веб-сервер доступен со стороны сети Интернет по протоколу HTTPS.
Листинг 20.
sudo ./iptables.sh
sudo iptables-save > /etc/iptables/rules.v4

Установка и конфигурирование SMTP

В качестве агента передачи почтовых сообщений настроим Postfix так, чтобы только локальные приложения (в нашем случае экземпляр GoPhish) могли осуществлять отправку электронной корреспонденции. Также запросим бесплатные сертификаты TLS для шифрования исходящих Email-сообщений.

Установка Postfix

Быстрее всего будет установить пакет mailutils, включающий Postfix и несколько дополнительных программ, которые можно использовать для тестирования отправки почты.
Листинг 1.
sudo apt update
sudo apt install mailutils
В репозиториях дистрибутива DebianPostfix не входит в состав пакета mailutils. В таком случае придется установить его отдельной командой.
Листинг 1.1.
sudo apt install postfix
Перед окончанием установки в консоли отобразится окно конфигурации. По умолчанию используется опция Internet Site (Рисунок 1), под предстоящие задач это наиболее подходящий вариант.

Если по каким-либо причинам опция не отображается автоматически, необходимо запустить процесс переконфигурирования Postfix. Это также окажется полезным при смене целевой компании в отношении которой проводится эксперимент.
Листинг 2.
sudo dpkg-reconfigure postfix
После этого откроется еще один диалог с запросом на указание System mail name. Имя системной почты должно совпадать с hostname виртуального сервера, заданного при первоначальной настройке (Рисунок 2).

Конфигурирование Postfix

На этом шаге настроим сетевую доступность Postfix исключительно для локальных служб. Чтобы реализовать задуманное почтовик должен прослушивать интерфейс виртуальной сети loopback. Внесем изменения и отредактируем главный файл конфигурации Postfix с именем main.cf (Рисунок 3) в каталоге etc/postfix (параметру inet_interfaces укажем значение loopback-only, а inet_protocolsipv4).
В этом же файле необходимо изменить директиву mydestination, указывающую список доменов, почта с которых доставляется через транспорт local_transport.
Значение параметра mydestination в main.cf
mydestination = localhost.$mydomain, localhost, $myhostname
Зададим основное доменное имя, используемое для отправки электронной почты, и FQDN виртуального сервера gophish.fun.
Значения параметров mydomain, myhostname в main.cf
mydomain = gophish.fun
myhostname = gophish.fun
Cохраняем изменения, закрываем файл main.cf и перезапускаем Postfix.
Листинг 3.
sudo systemctl restart postfix

Включение шифрования Postfix

Для обеспечения конфиденциальности передаваемых данных и повышения доверия к SMTP-серверу, включим шифрование исходящих Email-сообщений. Устанавливаем Certbot и запрашиваем бесплатный сертификат TLS от Let’s Encrypt
Листинг 4.
sudo apt install certbot
sudo certbot certonly --standalone --rsa-key-size 4096 --agree-tos --
preferred-challenges http -d gophish.fun
Утилита Certbot выдаёт сертификаты с размером ключа RSA 4096 бит, запускает временный отдельный веб-сервер для проверки (--standalone) и выполняет её через HTTP на 80 порту (--preferred-challenges http).

Как будет указано в консоли терминала, сертификат и закрытый ключ сохранены в каталоге /etc/letsencrypt/live/gophish.fun. Открываем файл main.cf и заменяем значения параметров smtpd_tlscert__file и smtpd_tls_key_file (Рисунок 4).
Значения параметров smtpd_
tls
cert
_
_
file, smtpd_tls_key_file в main.cf
smtpd_tls_cert_file = /etc/letsencrypt/live/gophish.fun/fullchain.pem
smtpd_tls_key_file = /etc/letsencrypt/live/gophish.fun/privkey.pem
В очередной раз сохраняем изменения, закрываем файл main.cf и перезапускаем экземпляр Postfix.
Листинг 5.
sudo systemctl restart postfix