Рейтинг:0

Как предотвратить отправку несанкционированных писем с моего почтового сервера?

флаг bo

У меня есть сервер Postfix, который обслуживает несколько доменных имен с корректно установленными и протестированными SPF, DMARC, DKIM. Так что никакой подделки не происходит. Однако, несмотря на все мои усилия по настройке конфигурации Postfix, исходящие спам-сообщения, как показано ниже, регулярно просачиваются через сервер:

5 августа 08:37:38 почтовый постфикс/ошибка [9631]: BC96418C10: to=<[email protected]>, relay=none, delay=161913, delays=161238/676/0/0.04, dsn=4.4.2 , status=deferred (доставка временно приостановлена: время ожидания разговора с mx1.comcast.net[96.114.157.80] истекло при получении начального приветствия сервера)
5 августа 10:07:45 почтовый постфикс/ошибка [31924]: BC96418C10: to=<[email protected]>, relay=none, delay=167320, delays=166039/1281/0/0.04, dsn=4.4.3 , status=deferred (доставка временно приостановлена: Хост или имя домена не найдены. Ошибка службы имен для name=comcast.net type=MX: Хост не найден, повторите попытку)
5 августа 11:23:43 почтовый постфикс/ошибка [18751]: BC96418C10: to=<[email protected]>, relay=none, delay=171878, delays=171438/440/0/0.12, dsn=4.4.1 , status=deferred (доставка временно приостановлена: подключитесь к mx2.comcast.net[2001:558:fe21:2a::6]:25: Сеть недоступна)
5 августа 12:54:11 почтовый постфикс/ошибка [8920]: BC96418C10: to=<[email protected]>, relay=none, delay=177306, delays=175938/1367/0/0.06, dsn=4.4.1 , status=deferred (доставка временно приостановлена: подключитесь к mx1.comcast.net[2001:558:fe16:1b::15]:25: Сеть недоступна)
5 августа 14:07:22 почтовый постфикс/ошибка [27186]: BC96418C10: to=<[email protected]>, relay=none, delay=181697, delays=181338/359/0/0.03, dsn=4.4.1 , status=deferred (доставка временно приостановлена: подключитесь к mx2.comcast.net[2001:558:fe21:2a::6]:25: Сеть недоступна)

Вот некоторые настройки Postfix, которые могут иметь значение:

virtual_alias_maps = хеш:/etc/postfix/виртуальный
mailbox_command = /usr/bin/procmail-wrapper -o -a $DOMAIN -d $LOGNAME
smtpd_sasl_auth_enable = да
smtpd_tls_security_level = зашифровать
smtp_tls_security_level = может
почтовый ящик_размер_лимит = 0
smtpd_tls_auth_only = да
smtpd_tls_key_file = /ssl/ssl.key
smtpd_tls_CAfile = /ssl/ssl.ca
smtpd_tls_cert_file = /ssl/ssl.crt
smtp_use_tls = да
smtpd_soft_error_limit = 5
smtpd_hard_error_limit = 10
milter_default_action = принять
smtpd_milters = инет: локальный: 8891
non_smtpd_milters = инет: локальный: 8891
smtpd_helo_required = да
smtpd_sasl_auth_enable = да

smtpd_relay_restrictions = allow_mynetworks

smtpd_recipient_restrictions = allow_sasl_authenticated reject_unauth_destination check_policy_service unix:/var/spool/postfix/postgrey/socket allow_inet_interfaces

smtpd_sender_restrictions = reject_unknown_sender_domain,
    хеш check_sender_access:/etc/postfix/access

Все законные учетные записи электронной почты перечислены в /etc/постфикс/виртуальный и в идеале только они должны иметь возможность отправлять и никто другой. Также я добавил все IP-адреса, на которых фактически размещены эти домены, и, следовательно, должен иметь возможность отправлять почту через этот почтовый сервер с помощью мои сети = параметр.

Итак, если я поставлю:

smtpd_relay_restrictions = allow_mynetworks, отклонить

тогда спам эффективно предотвращается. Однако в этом случае законные пользователи не могут подключаться к своим почтовым учетным записям из программ-клиентов электронной почты, таких как мобильные телефоны. Поэтому я должен немного ослабить приведенное выше правило:

smtpd_relay_restrictions = allow_mynetworks

Может ли кто-нибудь дать мне правильное направление, как разрешить законным пользователям использовать этот почтовый сервер, в то же время не позволяя всем другим сторонам отправлять что-либо с этого почтового сервера?

РЕДАКТИРОВАТЬ № 1:

Благодаря указателю anx я предпринял дальнейшие шаги, и вот метаданные, извлеченные с помощью почтовый кот -vq 3825218E12 команда. Идентификатор сообщения другой, но проблема та же:

посткат: name_mask: все
postcat: inet_addr_local: настроено 2 адреса IPv4
postcat: inet_addr_local: настроено 2 адреса IPv6
*** КОНВЕРТЫ ЗАПИСЕЙ deferred/3/3825218E12 ***
message_size: 8340 682 1 0 8340
message_arrival_time: Чт, 12 августа, 18:31:08 2021
create_time: Чт, 12 августа, 18:31:08 2021
named_attribute: log_ident=3825218E12
named_attribute: rewrite_context = удаленный
named_attribute: sasl_method=ВХОД
named_attribute: sasl_username=root
отправитель: [email protected]
named_attribute: log_client_name = неизвестно
named_attribute: log_client_address=93.122.252.5
named_attribute: log_client_port=8529
named_attribute: log_message_origin = неизвестно [93.122.252.5]
named_attribute: log_helo_name = 213.233.88.90
named_attribute: log_protocol_name = ESMTP
named_attribute: имя_клиента = неизвестно
named_attribute: reverse_client_name = неизвестно
named_attribute: client_address=93.122.252.5
named_attribute: client_port=8529
named_attribute: helo_name=213.233.88.90
named_attribute: имя_протокола = ESMTP
named_attribute: client_address_type=2
named_attribute: dsn_orig_rcpt=rfc822;[email protected]
original_recipient: [email protected]
получатель: [email protected]
указатель_запись: 0
*** СОДЕРЖАНИЕ СООБЩЕНИЯ deferred/3/3825218E12 ***
обычный_текст: Получено: от 213.233.88.90 (неизвестно [93.122.252.5])
обычный_текст: по mail.mydomain.tld (Postfix) с идентификатором ESMTPSA 3825218E12
обычный_текст: для <[email protected]>; Чт, 12 августа 2021 г., 18:31:08 +0000 (UTC)
указатель_запись: 9682
обычный_текст: DKIM-фильтр: OpenDKIM Filter v2.11.0 mail.mydomain.tld 3825218E12
указатель_запись: 9043
обычный_текст: DKIM-подпись: v=1; а=rsa-sha256; c=расслабленный/расслабленный; д=thebriefguy.com;
обычный_текст: s=по умолчанию; т=1628793068;
обычный_текст: bh=2YMB5PSTO3RHAXFabkN43xdUCrxjEQOw0Xw/uLJ1zX8=;
обычный_текст: h=От:Кому:Тема:Дата:От;
обычный_текст: b=edi8WNplYs2gx/aYmKl9vbY1OE3jfVZ284faDviyICbDTm51y5CgBXg3QzcSHuaL6
обычный_текст: PsxGqHaqqXnF32EsA0UnqQ2q71Z8DVeEnQVp1njnqA3ECE3hiWj8UUeobRClZw7eEP
обычный_текст: z2PK95dI6kfHlCcBnEgJph2pr5ilxDv4Brl9s02s7Q/2ikwHHGWh+8Gwr24CQfnBJK
обычный_текст: lXrkBZVgmi65/6b6kVxmto+3oqV9avsd/9ja+CcMRs7+CsKjeHz7GA/9P3yB24/fNT
обычный_текст: sAjWFvQA14zkcEjFpPmZFm/6ZjLkf0pi53vx+JamwdB5C4KzhDSKkgX6rXNYYwMu+o
обычный_текст: jcADLvrnBCDtQ==
обычный_текст: идентификатор сообщения: <[email protected]>
указатель_запись: 936
обычный_текст: От: Xfinity <[email protected]>
обычный_текст: Кому: [email protected]
Regular_text: Тема: Важное обновление
обычный_текст: Дата: Чт, 12 августа 2021 г., 11:31:06 -07:00
обычный_текст: Организация: Xfinity
обычный_текст: MIME-версия: 1.0
обычный_текст: Тип содержимого: текст/html; кодировка = "utf-8"
обычный_текст: Content-Transfer-Encoding: кавычки-для печати
указатель_запись: 0
обычный_текст:

Меня беспокоят эти конкретные строки:

named_attribute: sasl_method=ВХОД
named_attribute: sasl_username=root

Я изменил пароль root с помощью:

корень saslpasswd2

однако я не уверен, как интерпретировать приведенный выше код и как именно они смогли войти в систему как root. Почтовый сервер был недавно настроен, и я никогда не касался пользователя sasl. корень раньше, поэтому мне интересно, есть ли у него какой-то пароль по умолчанию и его всегда нужно менять? Также мне интересно, предприняты ли шаги, достаточные для решения проблемы, или есть еще какие-то рекомендуемые дополнительные шаги?

РЕДАКТИРОВАТЬ № 2:

Вот результат постконф -н команда:

alias_database = хэш:/и т.д./псевдонимы
alias_maps = хеш:/и т.д./псевдонимы
каталог_команд = /usr/sbin
config_directory = /etc/postfix
daemon_directory = /usr/libexec/postfix
data_directory = /var/lib/postfix
debug_peer_level = 2
debugger_command = PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin ddd $daemon_directory/$process_name $process_id & sleep 5
default_destination_concurrency_limit = 1
home_mailbox = Почтовый каталог/
html_directory = нет
inet_interfaces = все
inet_protocols = все
Initial_destination_concurrency = 1
mail_owner = постфикс
mailbox_command = /usr/bin/procmail-wrapper -o -a $DOMAIN -d $LOGNAME
почтовый ящик_размер_лимит = 0
mailq_path = /usr/bin/mailq.postfix
manpage_directory = /usr/share/man
milter_default_action = принять
мой пункт назначения = mail.mydomain.tld, почта, локальный хост
мой домен = мой домен.tld
myhostname = mail.mydomain.tld
mynetworks = УДАЛЕНО БЛОКИ IP-АДРЕСОВ
newaliases_path = /usr/bin/newaliases.postfix
non_smtpd_milters = инет: локальный: 8891
каталог_очередей = /var/spool/postfix
readme_directory = /usr/share/doc/postfix-2.10.1/README_FILES
sample_directory = /usr/share/doc/postfix-2.10.1/samples
sender_bcc_maps = хэш:/etc/postfix/bcc
sender_dependent_default_transport_maps = хеш:/etc/postfix/зависимый
sendmail_path = /usr/sbin/sendmail.postfix
setgid_group = постдроп
smtp_tls_security_level = может
smtp_use_tls = да
smtpd_hard_error_limit = 10
smtpd_helo_required = да
smtpd_helo_restrictions = Permit_MyNetworks Permit_Sasl_аутентифицированный reject_invalid_helo_hostname reject_non_fqdn_helo_hostname reject_unknown_helo_hostname check_helo_access хэш:/etc/postfix/helo_access
smtpd_milters = инет: локальный: 8891
smtpd_recipient_restrictions = permit_mynetworks permit_sasl_authenticated reject_non_fqdn_hostname reject_non_fqdn_sender reject_non_fqdn_recipient reject_unauth_destination reject_unauth_pipelining reject_invalid_hostname reject_unknown_reverse_client_hostname reject_rbl_client bl.spamcop.net reject_rhsbl_helo dbl.spamhaus.org reject_rhsbl_reverse_client dbl.spamhaus.org reject_rhsbl_sender dbl.spamhaus.org reject_rbl_client zen.spamhaus.org permit_dnswl_client swl.spamhaus.org
smtpd_relay_restrictions = Permit_myNetworks Permit_sasl_authenticated reject_unauth_destination reject_rbl_client sbl.spamhaus.org разрешение
smtpd_sasl_auth_enable = да
smtpd_sender_restrictions = Permit_MyNetworks Permit_Sasl_аутентифицированный reject_unknown_sender_domain, check_sender_access hash:/etc/postfix/access reject_unknown_reverse_client_hostname reject_unknown_client_hostname
smtpd_soft_error_limit = 5
smtpd_tls_CAfile = /ssl/ssl.ca
smtpd_tls_auth_only = да
smtpd_tls_cert_file = /ssl/ssl.crt
smtpd_tls_key_file = /ssl/ssl.key
smtpd_tls_security_level = зашифровать
unknown_local_recipient_reject_code = 550
virtual_alias_maps = хеш:/etc/postfix/виртуальный

И вот вывод постконф -M:

smtp inet n - n - - smtpd -o smtpd_sasl_auth_enable=yes -o smtpd_tls_security_level=may
пикап 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 флеш
proxymap unix - - n - - proxymap
proxywrite unix - - n - 1 proxymap
smtp unix - - n - - smtp
реле unix - - n - - smtp
showq unix n - n - - showq
ошибка unix - - n - - ошибка
повторите попытку unix - - n - - ошибка
отбросить unix - - n - - отбросить
локальный unix - n n - - локальный
виртуальный unix - n n - - виртуальный
lmtp unix - - n - - lmtp
наковальня unix - - n - 1 наковальня
архив unix - - n - 1 архив
отправка inet n - n - - smtpd -o smtpd_sasl_auth_enable=yes -o smtpd_tls_security_level=may
smtps inet n - n - - smtpd -o smtpd_sasl_auth_enable=yes -o smtpd_tls_security_level=may -o smtpd_tls_wrappermode=yes
флаг in
Записи в журнале, которые вы разместили, не показывают никаких признаков отправки несанкционированных писем. Это просто общая ошибка сети.
флаг in
В вашем «расслабленном правиле» отсутствуют запятые.
флаг bo
Спасибо за обновления. Я боюсь, что они отправляются с сервера, потому что команда `mailq` становится слишком большой, и мне приходится запускать `postsuper -d ALL`. И ни у кого на размещенных доменах нет ничего с `[email protected]`.
флаг bo
Можно запятую, а можно и нет. Это работает в любом случае.
Michael Hampton avatar
флаг cz
Пожалуйста, опубликуйте _все_ записи журнала, соответствующие такому сообщению, а не только одну строку.
Рейтинг:1
флаг fr
anx

Причина, по которой ваш сервер пытается ретранслировать это сообщение, не кажется очевидной из того, что вы уже опубликовали, но ваш следующий шаг должен быть таким:

Найдите, откуда пришло это сообщение. Этот шестнадцатеричный код (BC96418C10) известный как идентификатор очереди это ключевое слово, которое нужно искать в ваших журналах, чтобы увидеть, кто отправил это сообщение на ваш сервер. Вы также должны использовать почтовый кот чтобы показать сообщение и связанные с ним метаданные.

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


Теперь о вашем обновлении: корень немного странное имя пользователя для аутентификации в почтовой системе. Но если с этим никто не связывался, это учетные данные SASL, используемые для отправки этого сообщения на ваш сервер.

named_attribute: sasl_method=ВХОД
named_attribute: sasl_username=root

Взглянув на вашу конфигурацию постфикса (попробуйте постконф -н и постконф -M) наверное было бы понятнее, какая программа приняла этот логин (cyrus? dovecot?) и где искать, чтобы отключить этого пользователя. Вы, вероятно, хотите собрать информацию о своей базе данных пользователей sasl и опубликовать новый вопрос о проблемах с выяснением этой части.

Если корень у пользователя системы действительно есть пароль, и он использовался для отправки почты. используется для входа на сервер. Во многих системах пользователь также не корень имеют установка пароля, и пароли не должны быть действительным механизмом для получения удаленной оболочки, поэтому есть вероятность, что этот взлом ограничен почтой.

флаг bo
Очень признателен, поскольку я, кажется, на правильном пути для дальнейшего устранения этой проблемы. Я приму это как правильный ответ. Между тем, было бы очень хорошо, если бы вы могли прочитать отредактированную часть обновленного поста выше. Еще раз большое спасибо!
флаг bo
Спасибо за обновленный ответ. Я боюсь, что создание еще одного вопроса приведет к потере всего контекста проблемы. Поэтому я сделал еще одно обновление с выходными данными команд `postconf -n` и `postconf -M`. Не могли бы вы помочь мне определить, какая программа приняла этот логин? Я не думаю, что у нас есть "cyrus", но у нас есть "dovecot". Каким будет ваш следующий шаг для решения этой проблемы? Кстати, системный пользователь root установлен на nologin и у него нет пароля, поэтому пользователь root в журнале другой, возможно, из почтовой системы, но я не уверен.
флаг bo
Хорошо, по вашему предложению я создал еще один вопрос на https://serverfault.com/questions/1075116/how-to-prevent-sasl-username-root-from-loggin-in Не могли бы вы взглянуть?

Ответить или комментировать

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