Вопрос или проблема
Как указано в заголовке, мне было интересно, существует ли режим, чтобы избежать отображения почтой postfix открытых паролей и имен пользователей в файлах логов.
В моей текущей простой настройке postfix настроен как ретранслятор на сервер почтового провайдера, и каждый раз, когда с моего сервера отправляется письмо на внешний адрес, пароль для аккаунта, используемого для ретрансляции, отображается в логах.
...
2025-03-01T00:00:02.084680+01:00 <myhostname> postfix/smtp[493231]: maps_find: smtp_sasl_password_maps: hash:/etc/postfix/sasl_passwd(0,lock|fold_fix|utf8_request): <ISP-smtp-server-fqdn>:465 = <ISP-mail-account-user>:<ISP-mail-account-password>
2025-03-01T00:00:02.084713+01:00 <myhostname> postfix/smtp[493231]: smtp_sasl_passwd_lookup: host `<ISP-smtp-server-fqdn>' user `<ISP-mail-account-user>' pass `<ISP-mail-account-password>'
2025-03-01T00:00:02.084746+01:00 <myhostname> postfix/smtp[493231]: starting new SASL client
2025-03-01T00:00:02.084781+01:00 <myhostname> postfix/smtp[493231]: name_mask: noanonymous
2025-03-01T00:00:02.084822+01:00 <myhostname> postfix/smtp[493231]: smtp_sasl_authenticate: <ISP-smtp-server-fqdn>[ISP-smtp-server-ip]:465: SASL mechanisms PLAIN LOGIN
2025-03-01T00:00:02.084856+01:00 <myhostname> postfix/smtp[493231]: > <ISP-smtp-server-fqdn>[ISP-smtp-server-ip]:465: AUTH LOGIN
2025-03-01T00:00:02.108178+01:00 <myhostname> postfix/smtp[493231]: < <ISP-smtp-server-fqdn>[ISP-smtp-server-ip]:465: 334 **********
2025-03-01T00:00:02.108331+01:00 <myhostname> postfix/smtp[493231]: xsasl_cyrus_client_next: decoded challenge: Username:
2025-03-01T00:00:02.108397+01:00 <myhostname> postfix/smtp[493231]: xsasl_cyrus_client_get_user: <ISP-mail-account-user>
2025-03-01T00:00:02.108439+01:00 <myhostname> postfix/smtp[493231]: xsasl_cyrus_client_next: uncoded client response <ISP-mail-account-user>
2025-03-01T00:00:02.108478+01:00 <myhostname> postfix/smtp[493231]: > <ISP-smtp-server-fqdn>[ISP-smtp-server-ip]:465: ***********
2025-03-01T00:00:02.132351+01:00 <myhostname> postfix/smtp[493231]: < <ISP-smtp-server-fqdn>[ISP-smtp-server-ip]:465: 334 ***********
2025-03-01T00:00:02.132634+01:00 <myhostname> postfix/smtp[493231]: xsasl_cyrus_client_next: decoded challenge: Password:
2025-03-01T00:00:02.132697+01:00 <myhostname> postfix/smtp[493231]: xsasl_cyrus_client_get_passwd: <ISP-mail-account-password>
...
Я осознал, что забыл про настройку в main.cf
, которую вставил в начальной фазе конфигурации postfix: debug_peer_list = <ISP-mail-server-fqdn>
. Как только эта настройка удалена, пароль больше не отображается. В любом случае было бы полезно, если бы существовала возможность вести лог обмена паролями SASL без отображения паролей.
.
Ответ или решение
Как заставить Postfix скрывать (SASL) пароли и имена пользователей в текстовом виде в лог-файлах
Теория:
Postfix — это мощный и широко используемый почтовый сервер, который предоставляет многочисленные возможности для настройки, включая поддержку аутентификации через SASL (Simple Authentication and Security Layer). Одним из важных аспектов безопасности является защита конфиденциальных данных, таких как пароли и логины, от попадания в лог-файлы в открытом виде.
Логи Postfix, как правило, создаются для облегчения диагностики и устранения неполадок, но они могут подвергать вас риску, если содержат чувствительные данные. Это происходит особенно в случае, если задействованы ненадежные сети или сторонние системы.
Пример:
Представленный фрагмент лога показывает, что пароли и логины хранятся в текстовом виде, что создает потенциальную уязвимость:
2025-03-01T00:00:02.084680+01:00 <myhostname> postfix/smtp[493231]: smtp_sasl_password_maps: hash:/etc/postfix/sasl_passwd(0,lock|fold_fix|utf8_request): <ISP-smtp-server-fqdn>:465 = <ISP-mail-account-user>:<ISP-mail-account-password>
...
Здесь видно, что изначально в конфигурации main.cf
была включена отладочная настройка debug_peer_list = <ISP-mail-server-fqdn>
, из-за чего и происходило логирование чувствительной информации. Удалив эту настройку, можно предотвратить запись открытого текста паролей в логи, однако это не решает проблему всесторонне.
Применение:
Вот как можно минимизировать риск и оптимально настроить Postfix для предотвращения записи открытого текста паролей в логи:
-
Удаление
debug_peer_list
:
Убедитесь, что в вашем конфигурационном файлеmain.cf
отсутствуют такие отладочные настройки, какdebug_peer_list
, которые могут преднамеренно раскрывать конфиденциальную информацию.# main.cf # Убедитесь, что выключена следующая строка или подобная ей: # debug_peer_list = <ISP-mail-server-fqdn>
-
Конфиденциальность логгирования:
Используйте настройки, которые уменьшают детализированное логгирование. Включитеsoft_bounce
на этапе тестирования для безопасного отслеживания ошибок без массового отказа сообщений. -
Защита папки
sasl_passwd
:
Убедитесь, что файл/etc/postfix/sasl_passwd
имеет корректные разрешения для ограничения доступа. Обычно разрешения должны быть такими:sudo chmod 600 /etc/postfix/sasl_passwd
-
Шифрование:
Используйте TLS для шифрования передаваемых данных между вашим почтовым сервером и сервером вашего провайдера. Это может не снивелировать логирование открытых паролей, но защитит данные в передаче. -
Аутентификационные механизмы:
Поначалу выберите такие механизмы аутентификации, которые минимизируют риск — например, CRAM-MD5 или SCRAM-SHA, при условии, что ваш почтовый провайдер это поддерживает. -
Мониторинг и аудит:
Регулярно проводите аудит файлов логов и прав доступа. Используйте системы мониторинга для отслеживания изменений в конфигурации серверов.
Заключение:
Хотя снятие отладочных параметров решает проблему отображения паролей и имен пользователей в текстовом виде, важно поддерживать всесторонние меры безопасности для защиты всей вашей почтовой инфраструктуры. Это включает регулярное обновление программного обеспечения, настройку корректных прав доступа и использование шифрования где возможно. Таким образом, ваша почтовая система останется защищенной от несанкционированного доступа и потенциальных угроз.