¿Cómo evitar que se envíen correos no autorizados desde mi servidor de correo?

¿Cómo evitar que se envíen correos no autorizados desde mi servidor de correo?

Tengo un servidor Postfix que sirve varios nombres de dominio con SPF, DMARC, DKIM correctamente configurados y probados muchas veces. Por lo tanto, no se está produciendo ninguna suplantación de identidad. Sin embargo, a pesar de todos mis esfuerzos por modificar la configuración de Postfix, mensajes de spam salientes como los que se muestran a continuación pasan regularmente por el servidor:

Aug  5 08:37:38 mail postfix/error[9631]: BC96418C10: to=<[email protected]>, relay=none, delay=161913, delays=161238/676/0/0.04, dsn=4.4.2, status=deferred (delivery temporarily suspended: conversation with mx1.comcast.net[96.114.157.80] timed out while receiving the initial server greeting)
Aug  5 10:07:45 mail postfix/error[31924]: BC96418C10: to=<[email protected]>, relay=none, delay=167320, delays=166039/1281/0/0.04, dsn=4.4.3, status=deferred (delivery temporarily suspended: Host or domain name not found. Name service error for name=comcast.net type=MX: Host not found, try again)
Aug  5 11:23:43 mail postfix/error[18751]: BC96418C10: to=<[email protected]>, relay=none, delay=171878, delays=171438/440/0/0.12, dsn=4.4.1, status=deferred (delivery temporarily suspended: connect to mx2.comcast.net[2001:558:fe21:2a::6]:25: Network is unreachable)
Aug  5 12:54:11 mail postfix/error[8920]: BC96418C10: to=<[email protected]>, relay=none, delay=177306, delays=175938/1367/0/0.06, dsn=4.4.1, status=deferred (delivery temporarily suspended: connect to mx1.comcast.net[2001:558:fe16:1b::15]:25: Network is unreachable)
Aug  5 14:07:22 mail postfix/error[27186]: BC96418C10: to=<[email protected]>, relay=none, delay=181697, delays=181338/359/0/0.03, dsn=4.4.1, status=deferred (delivery temporarily suspended: connect to mx2.comcast.net[2001:558:fe21:2a::6]:25: Network is unreachable)

Aquí hay algunas configuraciones de Postfix que podrían ser relevantes:

virtual_alias_maps = hash:/etc/postfix/virtual
mailbox_command = /usr/bin/procmail-wrapper -o -a $DOMAIN -d $LOGNAME
smtpd_sasl_auth_enable = yes
smtpd_tls_security_level = encrypt
smtp_tls_security_level = may
mailbox_size_limit = 0
smtpd_tls_auth_only = yes
smtpd_tls_key_file = /ssl/ssl.key
smtpd_tls_CAfile = /ssl/ssl.ca
smtpd_tls_cert_file = /ssl/ssl.crt
smtp_use_tls = yes
smtpd_soft_error_limit = 5
smtpd_hard_error_limit = 10
milter_default_action = accept
smtpd_milters = inet:localhost:8891
non_smtpd_milters = inet:localhost:8891
smtpd_helo_required = yes
smtpd_sasl_auth_enable = yes

smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated reject_unauth_destination

smtpd_recipient_restrictions = permit_sasl_authenticated reject_unauth_destination check_policy_service unix:/var/spool/postfix/postgrey/socket permit_inet_interfaces

smtpd_sender_restrictions = reject_unknown_sender_domain,
    check_sender_access hash:/etc/postfix/access

Todas las cuentas de correo electrónico legítimas están enumeradas /etc/postfix/virtuale idealmente sólo ellas deberían poder enviar y nadie más. También agregué todas las direcciones IP donde esos dominios están realmente alojados y, por lo tanto, debería poder enviar correo a través de este servidor de correo con mynetworks =configuración.

Entonces si pongo:

smtpd_relay_restrictions = permit_mynetworks, reject

entonces se previene eficazmente el spam. Sin embargo, en ese caso los usuarios legítimos no pueden conectarse a sus cuentas de correo desde programas de clientes de correo electrónico como teléfonos móviles. Entonces tengo que flexibilizar un poco la regla anterior como:

smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated reject_unauth_destination

¿Alguien podría darme la dirección correcta sobre cómo permitir que los usuarios legítimos puedan utilizar este servidor de correo y al mismo tiempo evitar que todas las demás partes envíen algo desde este servidor de correo?

EDITAR #1:

Gracias al puntero de anx, tomé más medidas y aquí están los metadatos extraídos con el postcat -vq 3825218E12comando. El ID del mensaje es diferente, pero el problema es el mismo:

postcat: name_mask: all
postcat: inet_addr_local: configured 2 IPv4 addresses
postcat: inet_addr_local: configured 2 IPv6 addresses
*** ENVELOPE RECORDS deferred/3/3825218E12 ***
message_size:            8340             682               1               0            8340
message_arrival_time: Thu Aug 12 18:31:08 2021
create_time: Thu Aug 12 18:31:08 2021
named_attribute: log_ident=3825218E12
named_attribute: rewrite_context=remote
named_attribute: sasl_method=LOGIN
named_attribute: sasl_username=root
sender: [email protected]
named_attribute: log_client_name=unknown
named_attribute: log_client_address=93.122.252.5
named_attribute: log_client_port=8529
named_attribute: log_message_origin=unknown[93.122.252.5]
named_attribute: log_helo_name=213.233.88.90
named_attribute: log_protocol_name=ESMTP
named_attribute: client_name=unknown
named_attribute: reverse_client_name=unknown
named_attribute: client_address=93.122.252.5
named_attribute: client_port=8529
named_attribute: helo_name=213.233.88.90
named_attribute: protocol_name=ESMTP
named_attribute: client_address_type=2
named_attribute: dsn_orig_rcpt=rfc822;[email protected]
original_recipient: [email protected]
recipient: [email protected]
pointer_record:               0
*** MESSAGE CONTENTS deferred/3/3825218E12 ***
regular_text: Received: from 213.233.88.90 (unknown [93.122.252.5])
regular_text:   by mail.mydomain.tld (Postfix) with ESMTPSA id 3825218E12
regular_text:   for <[email protected]>; Thu, 12 Aug 2021 18:31:08 +0000 (UTC)
pointer_record:            9682
regular_text: DKIM-Filter: OpenDKIM Filter v2.11.0 mail.mydomain.tld 3825218E12
pointer_record:            9043
regular_text: DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=thebriefguy.com;
regular_text:   s=default; t=1628793068;
regular_text:   bh=2YMB5PSTO3RHAXFabkN43xdUCrxjEQOw0Xw/uLJ1zX8=;
regular_text:   h=From:To:Subject:Date:From;
regular_text:   b=edi8WNplYs2gx/aYmKl9vbY1OE3jfVZ284faDviyICbDTm51y5CgBXg3QzcSHuaL6
regular_text:    PsxGqHaqqXnF32EsA0UnqQ2q71Z8DVeEnQVp1njnqA3ECE3hiWj8UUeobRClZw7eEP
regular_text:    z2PK95dI6kfHlCcBnEgJph2pr5ilxDv4Brl9s02s7Q/2ikwHHGWh+8Gwr24CQfnBJK
regular_text:    lXrkBZVgmi65/6b6kVxmto+3oqV9avsd/9ja+CcMRs7+CsKjeHz7GA/9P3yB24/fNT
regular_text:    sAjWFvQA14zkcEjFpPmZFm/6ZjLkf0pi53vx+JamwdB5C4KzhDSKkgX6rXNYYwMu+o
regular_text:    jcADLvrnBCDtQ==
regular_text: Message-ID: <[email protected]>
pointer_record:             936
regular_text: From: Xfinity <[email protected]>
regular_text: To: [email protected]
regular_text: Subject: Important Update
regular_text: Date: Thu, 12 Aug 2021 11:31:06 -0700
regular_text: Organization: Xfinity
regular_text: MIME-Version: 1.0
regular_text: Content-Type: text/html; charset="utf-8"
regular_text: Content-Transfer-Encoding: quoted-printable
pointer_record:               0
regular_text:

Me preocupan estas líneas en particular:

named_attribute: sasl_method=LOGIN
named_attribute: sasl_username=root

Cambié la contraseña de root con:

saslpasswd2 root

sin embargo, no estoy seguro de cómo interpretar el código anterior y cómo exactamente pudieron iniciar sesión como root. El servidor de correo estaba recién configurado y nunca antes toqué al usuario sasl root, así que me pregunto si viene con algún tipo de contraseña predeterminada y es necesario cambiarla siempre. También me pregunto si se han tomado medidas suficientes para resolver el problema o si se recomiendan algunos pasos adicionales.

EDITAR #2:

Aquí está el resultado del postconf -ncomando:

alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
command_directory = /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 = Maildir/
html_directory = no
inet_interfaces = all
inet_protocols = all
initial_destination_concurrency = 1
mail_owner = postfix
mailbox_command = /usr/bin/procmail-wrapper -o -a $DOMAIN -d $LOGNAME
mailbox_size_limit = 0
mailq_path = /usr/bin/mailq.postfix
manpage_directory = /usr/share/man
milter_default_action = accept
mydestination = mail.mydomain.tld, mail, localhost
mydomain = mydomain.tld
myhostname = mail.mydomain.tld
mynetworks = REDACTED IP ADDRESS BLOCKS
newaliases_path = /usr/bin/newaliases.postfix
non_smtpd_milters = inet:localhost:8891
queue_directory = /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 = hash:/etc/postfix/bcc
sender_dependent_default_transport_maps = hash:/etc/postfix/dependent
sendmail_path = /usr/sbin/sendmail.postfix
setgid_group = postdrop
smtp_tls_security_level = may
smtp_use_tls = yes
smtpd_hard_error_limit = 10
smtpd_helo_required = yes
smtpd_helo_restrictions = permit_mynetworks permit_sasl_authenticated reject_invalid_helo_hostname reject_non_fqdn_helo_hostname reject_unknown_helo_hostname check_helo_access hash:/etc/postfix/helo_access
smtpd_milters = inet:localhost: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 permit
smtpd_sasl_auth_enable = yes
smtpd_sender_restrictions = permit_mynetworks permit_sasl_authenticated 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 = yes
smtpd_tls_cert_file = /ssl/ssl.crt
smtpd_tls_key_file = /ssl/ssl.key
smtpd_tls_security_level = encrypt
unknown_local_recipient_reject_code = 550
virtual_alias_maps = hash:/etc/postfix/virtual

Y aquí está el resultado de postconf -M:

smtp       inet  n       -       n       -       -       smtpd -o smtpd_sasl_auth_enable=yes -o smtpd_tls_security_level=may
pickup     unix  n       -       n       60      1       pickup
cleanup    unix  n       -       n       -       0       cleanup
qmgr       unix  n       -       n       300     1       qmgr
tlsmgr     unix  -       -       n       1000?   1       tlsmgr
rewrite    unix  -       -       n       -       -       trivial-rewrite
bounce     unix  -       -       n       -       0       bounce
defer      unix  -       -       n       -       0       bounce
trace      unix  -       -       n       -       0       bounce
verify     unix  -       -       n       -       1       verify
flush      unix  n       -       n       1000?   0       flush
proxymap   unix  -       -       n       -       -       proxymap
proxywrite unix  -       -       n       -       1       proxymap
smtp       unix  -       -       n       -       -       smtp
relay      unix  -       -       n       -       -       smtp
showq      unix  n       -       n       -       -       showq
error      unix  -       -       n       -       -       error
retry      unix  -       -       n       -       -       error
discard    unix  -       -       n       -       -       discard
local      unix  -       n       n       -       -       local
virtual    unix  -       n       n       -       -       virtual
lmtp       unix  -       -       n       -       -       lmtp
anvil      unix  -       -       n       -       1       anvil
scache     unix  -       -       n       -       1       scache
submission 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

Respuesta1

La razón por la que su servidor está intentando transmitir este mensaje no parece obvia por lo que haya publicado hasta ahora, pero su próximo paso debería ser:

Encuentra de dónde vino este mensaje.Ese código hexadecimal ( BC96418C10) conocido comoidentificación de la colaes la palabra clave que debe buscar en sus registros para ver quién envió este mensaje a su servidor. También debes usar postcatpara mostrar el mensaje y sus metadatos asociados.

Ambos aspectos deberían ayudar a aclarar cuándo y cómo llegó este mensaje a su servidor, y si tiene un usuario abusivo, credenciales de usuario comprometidas, un agujero en sus conjuntos de restricciones o un servidor completamente comprometido.


Ahora con respecto a su actualización: rootes un nombre de usuario un poco extraño para autenticarse en un sistema de correo. Pero si nadie se metió con eso, esas son las credenciales SASL utilizadas para enviar este mensaje a su servidor.

named_attribute: sasl_method=LOGIN
named_attribute: sasl_username=root

Con un vistazo a su configuración de postfix (pruebe postconf -ny postconf -M), probablemente quedará más claro qué programa aceptó ese inicio de sesión (¿cyrus? ¿dovecot?) y dónde buscar para deshabilitar a ese usuario. Probablemente desee recopilar información sobre su base de datos de usuarios de sasl y publicar una nueva pregunta sobre los problemas para descubrir esa parte.

Si el rootusuario del sistema efectivamente tiene una contraseña y fue utilizada para enviar correo... puede que también haya sidoutilizado para iniciar sesión en el servidor. En muchos sistemas, el usuario tampocoroot teneruna configuración de contraseña, ni las contraseñas deberían ser un mecanismo válido para obtener un shell remoto, por lo que existe la posibilidad de que este compromiso se limite a los correos electrónicos.

información relacionada