Пропатчил Exim — пропатчь еще раз. Свежее Remote Command Execution в Exim 4.92 в один запрос / Хабр

Пропатчил Exim — пропатчь еще раз. Свежее Remote Command Execution в Exim 4.92 в один запрос / Хабр Сертификаты

Для чего необходим tls/ssl сертификат при рассылке писем, влияет ли он на доставляемость писем?

У меня несколько вопросов, на которые ищу ответ.

1. Для чего необходим TLS/SSL сертификат при рассылке писем?

2. Письмо подписывается SSL сертификатом только при рассылке методом SMTP или же при всех видах (mail, sendmail, smtp) ?

3. Влияет ли он на доставляемость писем?

4. Стоит Exim, пользуюсь PHP mailer(последняя версия). Необходимо ли дополнительно указывать на сертификат в настройках PHP mailer, или же он подгружается из настроек exim?

Как изменить ip-адрес, с которого отправляется почта

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

Как изменить порты

Узнать, какие порты Exim слушает по умолчанию, можно с помощью команды:

root@bug17815:~# netstat -anp|grep exim

tcp        0      0 0.0.0.0:465             0.0.0.0:*               LISTEN      3068/exim4      
tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      3068/exim4      
tcp        0      0 0.0.0.0:587             0.0.0.0:*               LISTEN      3068/exim4      
tcp6       0      0 :::465                  :::*                    LISTEN      3068/exim4      
tcp6       0      0 :::25                   :::*                    LISTEN      3068/exim4      
tcp6       0      0 :::587                  :::*                    LISTEN      3068/exim4 

Чтобы изменить прослушиваемые порты, откройте файл конфигурации Exim. За порты отвечают строки:

daemon_smtp_ports = 25 : 465 : 587
tls_on_connect_ports = 465

Внесите необходимые изменения и перезапустите почтовый сервер одной из команд:

systemctl restart exim
systemctl restart exim4

Снова проверяем список прослушиваемых портов, чтобы убедиться, что изменения приняты. 

root@bug17815:/etc/exim4# netstat -anp|grep exim

tcp        0      0 0.0.0.0:464             0.0.0.0:*               LISTEN      3813/exim4      
tcp        0      0 0.0.0.0:24              0.0.0.0:*               LISTEN      3813/exim4      
tcp        0      0 0.0.0.0:584             0.0.0.0:*               LISTEN      3813/exim4      
tcp6       0      0 :::464                  :::*                    LISTEN      3813/exim4      
tcp6       0      0 :::24                   :::*                    LISTEN      3813/exim4      
tcp6       0      0 :::584                  :::*                    LISTEN      3813/exim4

Как ограничить количество исходящих писем

Чтобы не попасть в спам за рассылку большого количества писем, вы можете установить лимит на отправку исходящей почты.

Про сертификаты:  Уголок стальной горячекатаный равнополочный ГОСТ 8509 93 - Москва

Количество потенциально уязвимых публичных серверов

По статистике крупного хостинг-провайдера E-Soft Inc на 1 сентября, на арендованных серверах версия 4.92 используется в более чем 70% хостов.

Статистика компании E-Soft Inc

Если обратиться к поисковой системе Shodan, то из 5,250,000 в базе серверов:

Таким образом, публично известных и доступных Exim потенциально уязвимых серверов насчитывается порядка 1.5 млн.

Поиск Exim-серверов в Shodan

Один ip-адрес для всех доменов сервера

В файле конфигурации в секции transports добавьте строку:

interface = 188.120.24.34

Где 188.120.24.34 — необходимый IP-адрес. 

После внесения изменений перезапустите почтовый сервер одной из команд:

systemctl restart exim
systemctl restart exim4

Разные ip-адреса для разных доменов

В файле конфигурации в секции transports должна быть строка следующего вида:

interface = <;${lookup{$sender_address_domain}lsearch{/etc/exim4/domainips}}

Откройте файл, указанный в пути:

/etc/exim4/domainips

Укажите IP-адреса для нужных доменов:

Уязвимость

Уязвимость присутствует при использовании библиотек как GnuTLS, так и OpenSSL при установке защищенного TLS-соединения.

По словам разработчика Heiko Schlittermann, файл конфигурации в Exim по умолчанию не использует TLS, однако многие дистрибутивы во время установки создают необходимые сертификаты и включают защищенное соединение. Также более новые версии Exim устанавливают опцию tls_advertise_hosts=* и генерируют необходимые сертификаты.

depends on the configuration. Most distros enable it by default, but Exim needs a certificate key to work as a TLS server. Probably Distros create a Cert during setup. Newer Exims have the tls_advertise_hosts option defaulting to “*” and create a self signed certificate, if none is provided.

Сама же уязвимость заключается в некорректной обработке SNI (Server Name Indication, технология, введенная в 2003 в RFC 3546 для запроса клиентом корректного сертификата для доменного имени, Распространение стандарта TLS SNI / Блог компании WEBO Group / Хабр) в ходе TLS-рукопожатия. Злоумышленнику достаточно отправить SNI, оканчивающийся бэкслешем (“”) и нулл-символом (“”).

Про сертификаты:  Сертификация обуви - сертификат соответствия на обувь

Исследователи из компании Qualys обнаружили баг в функции string_printing(tls_in.sni), который заключается в некорректном экранировании “”. В результате происходит запись обратного слеша в неэкранированном виде в файл заголовков print spool. Далее этот файл с привилегированными правами считывается функцией spool_read_header(), что ведет к переполнению кучи (heap overflow).

Стоит отметить, что на данный момент разработчики Exim создали PoC уязвимости с выполнением команд на удаленном уязвимом сервере, но в публичном доступе он пока отсутствует. В силу простоты эксплуатации бага это всего лишь вопрос времени, причем довольно короткого.

С более детальным исследованием компании Qualys можно ознакомиться здесь.

Использование SNI в TLS

Файл конфигурации

Основные настройки почтового сервера Exim находятся в конфигурационном файле. Вы можете найти его по одному из путей:

/etc/exim4/exim4.conf
/etc/exim/exim.conf
/etc/exim/configure

Если там его нет, проверьте наличие файла exim4.conf.template / exim.conf.template. Перейдите в директорию с этим файлом, после чего скопируйте его в правильный файл конфигурации:

cp -pr exim4.conf{.template,} / cp -pr exim.conf{.template,}

Через панель управления ispmanager 5 business

ISPmanager Business (в Lite данного функционала нет) позволяет указать для каждого пользователя максимальное количество писем, которое может быть отправлено с каждого почтового ящика этого пользователя в час. 

Заходим в раздел Учетные записи — Пользователи — выделяем нужного пользователя и нажимаем кнопку Изменить. В поле Количество отправляемых писем выставляем ограничение и нажимаем кнопку Ок, чтобы применить изменения.

Через терминал

Откройте файл конфигурации и настройте директиву следующим образом:

acl_not_smtp = acl_not_smtp
begin acl
        acl_not_smtp:
                deny message = Sender rate overlimit - $sender_rate / $sender_rate_period
                ratelimit = 50 / 1h / leaky
                accept
        acl_check_rcpt:
                deny message = Sender rate SMTP overlimit - $sender_rate / $sender_rate_period
                ratelimit = 100 / 1h / leaky
                accept  hosts = net-lsearch;/etc/exim/whitelist

Перезагрузите почтовый сервер, чтобы изменения вступили в силу:

systemctl restart exim
systemctl restart exim4

В итоге выставляется ограничение в 50 писем в час для почты, отправленной не по SMTP (например, через PHP mail), и в 100 писем для отправки через SMTP. В файле /etc/exim/whitelist создается белый список хостов, на которые лимит не действует.

Про сертификаты:  ПЦР-тест при коронавирусе

Если вы хотите ограничить отправку писем от определённых почтовых доменов, в конфигурационном файле необходимо добавить раздел перед begin acl:

Оцените статью
Мой сертификат
Добавить комментарий