Шифруем почту при помощи Djigzo

Как и большинство современных сервисов протоколы электронной почты разрабатывались для закрытой от всех сети ARPANET, и задачи по защите данных и сервисов изначально не ставилось. Проблемы стали видны позднее, когда появился интернет и при чем не малые. Но как бы то ни было мы сегодня имеем аутентификационные данные и текст передаваемые в открытом виде, то есть любой их может перехватить и прочитать. Последующие изменения, вроде передачи вместо пароля - хэша не на много исправило ситуацию. Мощности современных компов позволяют быстро вычислить пароль на основе хэша, хотя в этом необходимости и нет. Ведь можно вместо пароля и в дальнейшем для аутентификации использовать хэш (pass-the-hash). Единственный выход - шифрование всего и вся.


Поставленную задачу можно реализовать несколькими способами. Самый простой из них - использование возможностей почтового клиента в связке с PGP/GPG или S/MIME. Если клиент изначально не поддерживает одну из технологий, то сегодня доступны специальные расширения под любую задачу - Enigmail, FireGPG, APG (Android Privacy Guard) и так далее. Пользователь самостоятельно контролирует все операции - генерирует и выбирает ключи, шифрует и расшифровывает сообщение, проверяет электронную подпись. Большой плюс такого способа - если письмо случайно попадет не по адресу, то посторонний прочесть его не сможет. Минус - все зависит от самого пользователя и уж очень много мороки с открытыми ключами. Для удобства придется настроить сервер централизованного хранения сертификатов, организовать систему их отзыва и доступ к сообщениям в случае отсутствия пользователя. В итоге даже в относительно небольшой организации предстоит произвести не малую работу, как техническую, так и организационную.


Другой вариант защиты - шифрование всего SMTP/POP3/IMAP трафика. Это как минимум снизит вероятность прослушивания, хотя не убережет от утечки в случае отправки другому адресату. Такую возможность имеют большинство почтовых серверов и поддерживают практически все популярные сегодня клиенты. В особо тяжелых случаях можно использовать VPN соединение любого типа.


Кроме этого реализовано ряд специализированных серверов. Среди OpenSource проектов наиболее активен проект Djigzo (djigzo.com) представляющий шлюз автоматически шифрующий всю проходящую почту с функциями DLP (Data Leak Prevention).


В том случае когда нет возможности изменения текущих настроек почтовых серверов или они не желательны придут на помощь специальные шлюзы автоматически шифрующие исходящий почтовый трафик. Реализованы они по-разному доступны в том числе и софтовые решения. Среди OpenSource проектов популярен Djigzo Email Encryption Gateway, имеющий кроме всего прочего и модуль DLP (Data Leak Prevention) используемый для предотвращения выхода за пределы организации конфиденциальной информации. С его помощью фильтруются номера кредитных карт, банковских счетов, больших списков адресов электронной почты и многое другое. Шлюз можно установить на большинстве *nix систем поддерживающих Java 6 и Postfix. Проект предлагает пакеты для Ubuntu/Debian, RedHat/CentOS, исходные тексты и образы для виртуальных машин VMware, Hyper-V. В качестве клиента выступает аналогичный сервер или любая программа поддерживающая S/MIME. Вложения в виде PDF файлов могут просто закрываться паролем - статическим или динамическим. Отправитель затем просто сообщает пароль получателю любым другим способом (есть функция автоматической отправки SMS). Поддерживается совместная работа с практически любыми центрами сертификации(EJBCA, Microsoft CA) или внешними вроде Verisign или Comodo. Процессом шифрования управляют политики, настраиваемые для доменов и отдельных учетных записей. Также Djigzo может автоматически добавлять к сообщениям электронную подпись, позволяющую получателю удостовериться, что письмо отправлено именно этим корреспондентом. Поддерживается и технология DKIM (DomainKeys Identified Mail).


Проектом предлагаются клиентские приложения для BlackBerry и Android используемые для отправки и получения шифрованных сообщений через Djigzo и проверки S/MIME подписи. Управление сервером производится при помощи простого в использовании веб-интерфейса.


И главное Djigzo это именно шлюз, ставить его на рабочей почтовой системе не следует, почему поймешь чуть позже. Инструкция по установке доступная на сайте хоть и расписана под Ubuntu/Debian, но показывает использование исходных текстов. С deb и rpm пакетами процесс на порядок проще:

$ sudo apt-get install postgresql postfix openjdk-6-jre openjdk-6-jre-headless tzdata-java ant ant-optional mktemp wget libsasl2-modules tomcat6
$ wget -c http://djigzo.com/downloads/djigzo-release-2.1.1-1/djigzo_2.1.1-1_all.deb
$ wget -c http://djigzo.com/downloads/djigzo-release-2.1.1-1/djigzo-web_2.1.1-1_all.deb
$ sudo dpkg -i ./djigzo_2.1.1-1_all.deb ./dpkg -i djigzo-web_2.1.1-1_all.deb
$ sudo apt-get -f install

Последняя команда необязательна, ее даем для подстраховки. По ходу будут созданы все необходимые каталоги, учетные данные и БД, подправлен /etc/sudoers.


В каталоге /etc/postfix появится два шаблона конфигурационных файла, которыми следует оригинальные:

$ sudo mv djigzo-main.cf main.cf
$ sudo mv djigzo-master.cf master.cf

Для отсылки и приема сообщений Djigzo использует Postfix, работая в качестве фильтра. Суть работы понятна по одной строке:

$ cat cat /etc/postfix/main.cf
...
content_filter = djigzo:127.0.0.1:10025

То есть все, что проходит через Postfix отправляется на 10025 порт, где данные обрабатываются Djigzo. К слову использование сетевого порта позволяет вместо Postfix поставить и любой другой почтовый сервер, но это потребует дополнительных усилий и вряд ли имеет смысл.


В принципе Djigzo уже работает, осталось настроить веб-интерфейс, чтобы всем управлять. Нужно просто указать Tomcat где искать файлы:

$ sudo nano /etc/default/tomcat6
JAVA_OPTS="$JAVA_OPTS -Ddjigzo-web.home=/usr/share/djigzo-web"
JAVA_OPTS="$JAVA_OPTS -Djava.awt.headless=true -Xmx256M"
TOMCAT6_SECURITY=no

Во время установки генерируется сертификат, необходимо изменить владельца:

$ sudo chown tomcat6:djigzo /usr/share/djigzo-web/ssl/sslCertificate.p12

Используя заготовки, добавляем HTTPS коннектор к Tomcat:

$ sudo cp /usr/share/djigzo-web/conf/tomcat/server-T6.xml /etc/tomcat6/server.xml

И прописываем путь к файлу для запуска Djigzo:

$ sudo nano /etc/tomcat6/Catalina/localhost/djigzo.xml
<context docBase="/usr/share/djigzo-web/djigzo.war" unpackWAR="false"/>

Перезапускаем сервер:

$ sudo service tomcat6 restart

Набираем в браузере https://localhost:8443/djigzo, принимаем сертификат, для регистрации вводим логин - admin, пароль - admin.

Веб-интерфейс Djigzo сложным назвать нельзя. Пункты меню позволяют добавить домен, пользователя (в терминах Djigzo, на самом деле здесь вводится почтовый адрес), управлять сертификатами, загружать списки отзыва сертификатов (CRL), просматривать очереди и прочие параметры.


Страница сайта http://www.interface.ru
Оригинал находится по адресу http://www.interface.ru/home.asp?artId=29634