Давно установившаяся установка постфикса превратилась в открытый ретранслятор; как мне понять и остановить это?
Эта серверная система обслуживает услуги электронной почты с тех пор.Red Hat v 1.1
(думаю, примерно в 1997 году), и сейчас он находится на Fedora Core 37; благодаря множеству обновлений оборудования и ОС, которые постоянно обновлялись. И мы с самого начала выбрали их и до сих пор используем. И все это время я был системным менеджером.
Завтра неделю назад наше дерево было уничтожено из-за ошибки в скрипте резервного копирования — ого! И это требовало полного ребилда ОС "с нуля" до той же версии. Все программное обеспечение, не входящее в комплект поставки.Fedora Server 37
дистрибутив был загружен заново черезdnf install
. И мы получили полную конфигурацию из хороших резервных копий.
В понедельник, два дня назад, я заметил, что система работает заметно медлительно, но не успел разобраться в этом. И я также заметил, что наше соединение с Интернетом, похоже, имеет проблемы с производительностью. Это была подсказка...
Затем я решил получитьspamassassin
снова работаю — для настройки такой зрелой среды требуется время! ИSA
был инвалидом до потери/var
, так что это не просто началось снова. И вообще, когда я пошел проверить/etc/var/log/maillog
Чтобы проверить, выполняет ли он свою работу, я обнаружил, что все эти пересылаемые сообщения?! Виски Танго Фокстрот?!
Затем я проверил почтовые очереди — только на Gmail сотни тысяч! УХ ТЫ!
На данный момент я отключил ВСЕ исходящие электронные письма с помощью:
default_transport = error: Sorry spammers, we're not sending your email! So sue us!
И начал пытаться понять, что пошло не так.
Я ДЕЙСТВИТЕЛЬНО обнаружил, что НЕКОТОРЫЕ справлялись, заявляя, что они127.0.0.1
, поэтому я закрыл это. И я методично перебрал все разнообразные (и обильные)postfix
параметры конфигурации и не нашел ничего плохого...
Итак, я пошел использовать один из этих веб-сайтов тестирования сценариев с открытой ретрансляцией, которые пробуют около дюжины различных хаков, которые спамеры используют, чтобы убедить в остальном хорошо сконфигурированные серверы ретранслировать свою почту, но я не смог найти ни одного - В прошлый раз, когда я заглядывал, таких веб-сайтов было около полдюжины! (Что с ними случилось?! Если вы знаете такой, пожалуйста, скажите мне!)
И поэтому я использовалnmap
. Он НЕ выполняет комплексную работу, а если и может, то я не знаю, как это сделать. Но я повернулся, чтобы отправить обратно и протестировать. При тестировании пишет:
Host is up (0.00027s latency).
rDNS record for <ip-addr>: <reverse-lookup-map>
PORT STATE SERVICE
25/tcp open smtp
|_smtp-open-relay: Server doesn't seem to be an open relay, all tests failed
465/tcp filtered smtps
587/tcp open submission
|_smtp-open-relay: Server isn't an open relay, authentication needed
MAC Address: [its mac address] (controller's mfg name)
Nmap done: 1 IP address (1 host up) scanned in 22.03 seconds
ЕДИНСТВЕННЫЕ два веб-сайта, которые я смог найти, чтобы посмотреть на него и сообщить об этом, не отвечали: один загружался, но не отвечал, а затем, когда я пытался перезагрузить страницу, она не перезагружалась, а второй продолжал говорить, что занят. Попробуйте позже.
Итак… вернемся к разбиранию «вручную».
Хорошо, что же нам делать СЕЙЧАС?
ВСЕ запросы на настройку информации будут с радостью удовлетворены, но файл конфигурации, во-первых, огромен, а во-вторых, он содержит много личной информации, которую мы не хотим разглашать.
Дополнительная информация - по запросу anx выводpostconf -n
:
alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
broken_sasl_auth_clients = yes
command_directory = /usr/sbin
compatibility_level = 3.6
daemon_directory = /usr/libexec/postfix
data_directory = /var/lib/postfix
debug_peer_level = 10
debug_peer_list = <past-not-current-external-ip>
debugger_command = PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin ddd $daemon_directory/$process_name $process_id & sleep 5
default_transport = error: <our-middle-finger-to-spammers>
disable_vrfy_command = yes
html_directory = no
inet_interfaces = all
inet_protocols = all
local_recipient_maps = unix:passwd.byname $alias_maps
mail_owner = postfix
mailbox_size_limit = 1073741824
mailq_path = /usr/bin/mailq.postfix
manpage_directory = /usr/share/man
message_size_limit = 536870912
meta_directory = /etc/postfix
milter_default_action = accept
mydestination = $myhostname, localhost.$mydomain, localhost, <list-of-60ish-domain-names>
mydomain = <primary-domain>
myhostname = mail.<primary-domain>
mynetworks = <list-of-5-internal-ips>
mynetworks_style = subnet
newaliases_path = /usr/bin/newaliases.postfix
proxy_interfaces = <a-non-extant-external-ip-we-used-to-have>
queue_directory = /var/spool/postfix
readme_directory = /usr/share/doc/postfix/README_FILES
relay_domains = $mydestination, <list-of-11-internal-ips-most-don't-exist-now>
sample_directory = /usr/share/doc/postfix/samples
sendmail_path = /usr/sbin/sendmail.postfix
setgid_group = postdrop
shlib_directory = /usr/lib64/postfix
smtp_tls_CAfile = /etc/pki/tls/certs/ca-bundle.crt
smtp_tls_CApath = /etc/pki/tls/certs
smtp_tls_security_level = may
smtpd_helo_required = yes
smtpd_helo_restrictions = permit_mynetworks, check_helo_access hash:/etc/postfix/helo_access, reject_invalid_helo_hostname, reject_non_fqdn_helo_hostname
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_pipelining, reject_non_fqdn_recipient, reject_unknown_recipient_domain, reject_unauth_destination, check_sender_access hash:/etc/postfix/sender_access, check_client_access hash:/etc/postfix/pop-before-smtp, permit_mynetworks
smtpd_sasl_auth_enable = yes
smtpd_sasl_path = /var/spool/postfix/private/auth
smtpd_sasl_security_options = noanonymous
smtpd_sasl_tls_security_options = noanonymous
smtpd_sasl_type = dovecot
smtpd_sender_restrictions = permit_mynetworks, permit_sasl_authenticated, check_client_access hash:/etc/postfix/pop-before-smtp, reject_non_fqdn_sender, reject_unknown_sender_domain
smtpd_tls_cert_file = /etc/letsencrypt/live/<primary-domain-name>/fullchain.pem
smtpd_tls_dh1024_param_file = $config_directory/dh2048.pem
smtpd_tls_dh512_param_file = $config_directory/dh512.pem
smtpd_tls_key_file = /etc/letsencrypt/live/<primary-domain-name>/privkey.pem
smtpd_tls_security_level = may
soft_bounce = no
strict_mailbox_ownership = no
unknown_local_recipient_reject_code = 550
Дополнительная информация - большая часть также по запросу anx:
использует порты 25 (
smtp
) и 587 (submission
илиmsa
).Dovecot
использует порты 993 (imaps
) и 995 (pop3s
), пока он слушает 143 и 110 (imap
/pop
), которые блокируются (несколько) брандмауэрами.постконф -М
smtp inet n - n - - smtpd
inet отправки n - n - - smtpd -o syslog_name=postfix/submission -o smtpd_tls_security_level=encrypt -o smtpd_sasl_auth_enable=yes
пикап unix n - n 60 1 пикап
очистка unix n - n - 0 очистка
qmgr unix n - n 300 1 qmgr
tlsmgr unix - - n 1000? 1 тлсмгр
переписать unix - - n - - тривиально-переписать
отскок unix - - n - 0
отложить unix - - n - 0 отказов
трассировка unix - - n - 0 отказов
проверить unix - - n - 1 проверить
сбросить unix n - n 1000? 0 флеш
проксимап unix - - n - - проксимап
proxywrite unix - - n - 1 прокси-карта
smtp unix - - n - - smtp
реле unix - - n - - smtp -o syslog_name=postfix/$service_name
showq unix n - n - - showq
ошибка unix - - n - - ошибка
повторить попытку unix - - n - - ошибка
отбросить unix - - n - - отбросить
локальный unix - nn - - локальный
виртуальный unix - nn - виртуальный
lmtp unix - - n - - lmtp
наковальня unix - - n - 1 наковальня
scache unix - - n - 1 scache
postlog unix-dgram n - n - 1 postlogd
Информация еще не получена:
- Что находится в «локально добавленном полученном заголовке».
- Анализ «стека» постфиксного журнала для заданного идентификатора очереди.
ДЕРЖАТЬ ПРОГРАММУ!
Просто НУЖНО отправить несколько важных писем, но не желая давать спамерам ни единого шанса использовать наши системы, я решил попробовать просто отключить... Я обнаружил, что выключение и восстановлениеdefault_transport
настройка позволила исходящим сообщениям работать нормально иPostfix
НЕ стало открытым реле! УРА!
УВЕРЕНО, это не сработает для наших нелокальных пользователей (число которых > 1 и < 100), но эй, «ты должен делать то, что должен делать...»
Я думаю, что это значительно смещает фокус ;
dovecot
это проблема.
1 ответ
Теперь я убежден, что это была не проблема, а проблема. Однако этот ответ вполне может быть полезен другим.
В частности, то, как определить, что это, скорее всего, не проблема, потребовало большего обучения, чем я ожидал, поскольку я был человеком, который использовал одну и ту же систему (в качестве системного администратора) буквально в течение двух десятилетий, а затем еще несколько.
Чего я не осознавал, так это того, что при такой конфигурации он сам «отдает контроль над полномочиями» . И, что ж, на данный момент способность получать действительные соединения от тех из нас, кто не находится во внутренней сети, за исключением случаев, когда мы находимся на месте, стала важной особенностью нашего функционирования.
К счастью, для нас это менее важно, чем для многих других организаций, поскольку у нас есть другие альтернативы, но реальность такова, что большинство из них не хотят входить в систему через командную строку только для того, чтобы иметь дело с почтой — я подозреваю, что это самый популярный способ. позиция! - в данном случае! Но это ничего не мешает признать то, чего у меня не было:
Вы не можете просто остановить после настройки и ожидать, что сможете отправлять БЕЗ перенастройки, чтобы не использовать . И вы даже не можете просто заблокировать порты снаружи, потому что все равно будете звонить напрямую!
В конечном итоге, насколько я понимаю (рад, что оказался не прав!) после настройки, он отказывается от почти всех полномочий безопасности для любого соединения, которое выдает себя за действительного пользователя, хотя все «внутренние» отправки и получения функционируют нормально с запуском и блокировкой. от отправки (как описано в вопросе).
Я считаю, что бесполезно и неуместно использовать этот вопрос, чтобы задавать вопросы о проблемах пользователя, и хотя я думаю, что эти комментарии представляют собой правильный ответ, мне нужно будет задать еще один вопрос оDovecot
потому что «Будь я проклят, если смогу найти, что не так!»
Я сильно подозреваю, что либо я делаю оплошность (вероятно, нередкую), ИЛИ в той версии, которая у нас есть сейчас, после перестройки есть ошибка, поскольку конфигурация перед перезагрузкой НЕ рассылала спам, и это то, что мы использовали в течение нескольких дней. до того, как спамеры начали использовать нашу систему! Примечательно, что когда мы не остановились
Postfix
начиная с отправки, НИ ОДНА внешняя система, которую мы нашли/использовали для тестирования нашей системы, не считает, что наша система является открытой ретрансляцией почты, но НЕТ отрицания того, что она неправильно ретранслировала сотни тысяч электронных писем!Кроме того, открытие его резервной копии (разрешение Postfix отправлять) быстро позволило
Здесь стоит упомянуть, что я проверил журналы и, учитывая ограниченное время, которое у меня есть, учитывая все требования ко мне в настоящее время, я с уверенностью 90%+ подтвердил, что никаких «украденных учетных данных» нет, но это еще предстоит сделать. доказано. Я, конечно, не вижу доказательств в журналах, хотя я не хочу снова открываться спамерам с новой конфигурацией журналов, чтобы получить больше данных. ВОЗМОЖНО, именно по этой причине стоит всегда иметь максимальную авторизацию!