Postfix de endurecimiento para ISPConfig 3
Autor:Jesús Córdoba
Email:j.cordoba [arroba] gmx [punto] net
Usuario del foro:pititis
Versión:1.2
El objetivo de este tutorial es reforzar el sufijo del servidor de correo que utiliza ISPConfig para los servidores de correo de Internet en los que se confía en los usuarios autenticados. Con esta configuración, rechazará una gran cantidad de spam antes de que pase a su cola de correo, ahorrando una gran cantidad de recursos del sistema y fortaleciendo su servidor de correo contra los spammers y las botnets de spam. Vamos.
DNS inverso, (Registro DNS PTR)
Para configurar rdns encontrarás dos situaciones:
- Tu ISP te permite cambiarlo tú mismo. Echa un vistazo a tu panel de control.
- Tu ISP no te permite cambiarlo. Simplemente envíe un correo electrónico con su solicitud.
Pregunte o apunte su registro rdns a su servidor. es decir server.example.com Puede verificar sus rdns con el comando host:[email protected] / # host 149.20.4.69
69.64-27.4.20.149.in-addr.arpa domain name pointer pub2.kernel.org.
Recuerde que dns debe propagar los cambios.
SPF para su dominio (registro DNS TXT)
SPF es un sistema de validación de correo electrónico diseñado para evitar el correo no deseado mediante la detección de la suplantación de correo electrónico, una vulnerabilidad común, mediante la verificación de las direcciones IP del remitente.
Para configurar spf, deberá agregar un registro TXT a su zona dns, pero primero puede generar su registro aquí:http://www.mailradar.com/spf/
Copie el resultado spf, luego vaya a ISPConfig -> dns -> zonas -> haga clic en su nombre de dominio -> haga clic en la pestaña de registros -> y haga clic en TXT
Nombre de host -> ejemplo.com. (¡con un punto al final!)
Texto -> Pegue aquí el resultado spf (sin " ").
Ejemplo:v=spf1 a mx ptr ip4:11.222.333.444 -all …y haga clic en Guardar.
Recuerde que dns debe propagar los cambios.
Postfijo principal.cf
Agreguemos/cambiemos algo a /etc/postfix/main.cf
Restricciones de Helo:
smtpd_helo_required = yes smtpd_helo_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_non_fqdn_helo_hostname, reject_invalid_helo_hostname
Restricciones de Helo en acción:
Jan 12 01:57:08 server postfix/smtpd[4687]: NOQUEUE: reject: RCPT from unknown[186.43.77.153]: 450 4.7.1 Client host rejected: cannot find your hostname, [186.43.77.153]; from= <[email protected]> to=<[email protected]> proto=ESMTP helo=<[186.43.77.153]> Jan 8 00:32:22 server postfix/smtpd[17504]: NOQUEUE: reject: RCPT from 201-93-87-2.dial-up.telesp.net.br[201.93.87.2]: 504 5.5.2 <lan-32204df3031>: Helo command rejected: need fully-qualified hostname; from=<[email protected]> to=<[email protected]> proto=ESMTP helo=<lan-32204df3031>
Estricto rfc:
strict_rfc821_envelopes = yes
Restricciones de clientes:
smtpd_client_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unknown_client_hostname, check_client_access mysql:/etc/postfix/mysql-virtual_client.cf
Restricciones de destinatarios:
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination, check_recipient_access mysql:/etc/postfix/mysql-virtual_recipient.cf, reject_unknown_recipient_domain
Restricciones de datos:
smtpd_data_restrictions = reject_unauth_pipelining
Retraso smtpd:
smtpd_delay_reject = yes
No olvides recargar el postfijo:
/etc/init.d/postfix reload
Comprobación de SPF para Postfix (Debian y Ubuntu)
Instalar paquete spf:
apt-get install postfix-policyd-spf-python
o
apt-get install postfix-policyd-spf-perl
Agregue esto a /etc/postfix/main.cf :
policy-spf_time_limit = 3600s
y agregue check_policy_service unix:private/policy-spf al final de smtpd_recipient_restrictions:
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, check_recipient_access mysql:/etc/postfix/mysql-virtual_recipient.cf, reject_unauth_destination, reject_unknown_recipient_domain, check_policy_service unix:private/policy-spf
Ahora edite master.cf y agregue al final esto (para la versión de python):
policy-spf unix - n n - - spawn user=nobody argv=/usr/bin/policyd-spf
o esto para la versión perl:
policy-spf unix - n n - - spawn user=nobody argv=/usr/sbin/postfix-policyd-spf-perl
…recargar postfijo.
/etc/init.d/postfix reload
Comprobación de SPF en acción:
Jan 4 15:50:11 server postfix/smtpd[19096]: NOQUEUE: reject: RCPT from g230068165.adsl.alicedsl.de[92.230.68.165]: 550 5.7.1 <[email protected]>: Recipient address rejected: Message rejected due to: SPF fail - not authorized. Please see http://www.openspf.org/Why?s=helo;id=paxxxxxn.com;ip=92.230.68.165;[email protected]; from=<[email protected]> to=<[email protected]> proto=ESMTP helo= <paxxxxxn.com>
Lista gris
Greylisting es un método para defender a los usuarios de correo electrónico contra el spam. Un agente de transferencia de correo (MTA) que utilice listas grises "rechazará temporalmente" cualquier correo electrónico de un remitente que no reconozca. Si el correo es legítimo, el servidor de origen lo intentará de nuevo después de un retraso y, si ha transcurrido suficiente tiempo, se aceptará el correo electrónico.
Instalación de postgrey (Debian, Ubuntu):
apt-get install postgrey
Las opciones de configuración están en /etc/default/postgrey (el retraso predeterminado es de 5 min).
Edite main.cf y agregue check_policy_service inet:127.0.0.1:10023 al final de smtpd_recipient_restrictions:
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, check_recipient_access mysql:/etc/postfix/mysql-virtual_recipient.cf, reject_unauth_destination, reject_unknown_recipient_domain, check_policy_service unix:private/policy-spf,check_policy_service inet:127.0.0.1:10023
…recargar sufijo:
/etc/init.d/postfix reload
Lista gris en acción:
Jan 10 17:38:57 server postfix/smtpd[21302]: NOQUEUE: reject: RCPT from mailout-de.gmx.net[213.165.64.22]: 451 4.7.1 <[email protected]>: Recipient address rejected: Greylisting in effect, please come back later; from=<[email protected]> to=<[email protected]> proto=SMTP helo=<mailout-de.gmx.net>
DNSBL (lista negra/lista de bloqueo basada en DNS)
Un DNSBL es una lista de direcciones IP publicadas a través del Servicio de nombres de dominio (DNS) de Internet, ya sea como un archivo de zona que puede usar el software del servidor DNS o como una zona DNS activa que se puede consultar en tiempo real. Los DNSBL se utilizan con mayor frecuencia para publicar las direcciones de las computadoras o redes vinculadas al spam; la mayoría del software del servidor de correo se puede configurar para rechazar o marcar los mensajes que se han enviado desde un sitio incluido en una o más de esas listas. Estos pueden incluir enumerar las direcciones de computadoras zombies u otras máquinas que se utilizan para enviar spam, enumerar las direcciones de los ISP que voluntariamente alojan a los spammers o enumerar las direcciones que han enviado spam a un sistema trampa. Simplemente agregue alguna zona de dns en vivo para consultas en el archivo main.cf.
En mi ejemplo usaré dos listas con muy buena reputación (agregadas al final de smtpd_client_restrictions):
smtpd_client_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unknown_client_hostname, check_client_access mysql:/etc/postfix/mysql-virtual_client.cf, reject_rbl_client cbl.abuseat.org, reject_rbl_client b.barracudacentral.org
rbl en acción:
Jan 12 01:52:42 server postfix/smtpd[4616]: NOQUEUE: reject: RCPT from 89.pool85-49-26.dynamic.orange.es[85.49.26.89]: 554 5.7.1 Service unavailable; Client host [85.49.26.89] blocked using cbl.abuseat.org; Blocked - see http://cbl.abuseat.org/lookup.cgi?ip=85.49.26.89; from=<[email protected]> to=<[email protected]> proto=SMTP helo=<colossus.home> Jan 11 20:13:58 server postfix/smtpd[29591]: NOQUEUE: reject: RCPT from 93-87-122-56.dynamic.isp.telekom.rs[93.87.122.56]: 554 5.7.1 Service unavailable; Client host [93.87.122.56] blocked using b.barracudacentral.org; http://www.barracudanetworks.com/reputation/?pr=1&ip=93.87.122.56; from= <[email protected]> to=<[email protected]> proto=ESMTP helo=
Postscreen
Nota:esta función está disponible en Postfix 2.8 y versiones posteriores
El demonio postscreen de Postfix brinda protección adicional contra la sobrecarga del servidor de correo. Un proceso posterior a la pantalla maneja múltiples conexiones SMTP entrantes y decide qué clientes pueden comunicarse con un proceso de servidor SMTP de Postfix. Al mantener alejados a los robots de spam, la función de filtrado posterior deja más procesos de servidor SMTP disponibles para clientes legítimos y retrasa la aparición de condiciones de sobrecarga del servidor.
El principal desafío para la evaluación posterior es tomar una decisión de si es un zombi basada en una sola medición. Esto es necesario porque muchos zombis intentan pasar desapercibidos y evitan enviar spam al mismo sitio repetidamente. Una vez que Postscreen decide que un cliente no es un zombi, lo incluye temporalmente en la lista blanca para evitar más demoras en el correo legítimo.
Usaremos para este tutorial la configuración predeterminada con una excepción. Estos ajustes están bien para la mayoría de las situaciones
Primero, agregamos una línea a main.cf con el comando:
postscreen_greet_action = enforce
En segundo lugar, agregamos postscreen y algunos servicios nuevos a master.cf. Nota:esta configuración ya puede existir, simplemente elimine el comentario. También asegúrese de que la línea "smtp inet ... smtpd", incluidos los parámetros, esté comentada (si los hay, los parámetros deben moverse al nuevo servicio smtpd).
# Postfix master process configuration file. For details on the format # of the file, see the master(5) manual page (command: "man 5 master"). # # Do not forget to execute "postfix reload" after editing this file. # # ========================================================================== # service type private unpriv chroot wakeup maxproc command + args # (yes) (yes) (yes) (never) (100) # ========================================================================== #smtp inet n - - - - smtpd # -o ... smtpd pass - - n - - smtpd -o ... # Parameters moved from smtp service to the new smtpd service.(if any) smtp inet n - n - 1 postscreen tlsproxy unix - - n - 0 tlsproxy dnsblog unix - - n - 0 dnsblog
Ahora, recargamos postfix:
/etc/init.d/postfix reload