Securizar Postfix: TLS+SASL+PAM

Queremos dejar nuestro puerto SMTP de postfix abierto a internet, sin correr el riesgo de espionajes, ni de que spammers utilicen nuestro servicio para enviar correos masivos.

Para utilizar el servicio los usuarios deberán autenticarse user/pswd y además hacerlo mediante TLS (encriptando las conexiones hacia él).

Para cumplir este requsito configuraremos las tres tecnologías siguientes:

  • TLS: Encriptación SSL de la conexión.
  • SASL: Sistema de autenticación.
  • PAM: Autenticación hacia el sistema de usuario de linux.

Podemos ver que en Etch el TLS viene completamente activado (cat /usr/share/doc/postfix/README.Debian):

  • Es importante notar (para un futuro cuando se compre un certificado real) que los certificados que toma por defecto en main.cf son:
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key

Instalamos Cyrus-sasl para autenticación:

elite:~# apt-get install libsasl2-modules sasl2-bin
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias... Hecho
Paquetes sugeridos:
   libsasl2-modules-otp libsasl2-modules-ldap libsasl2-modules-sql libsasl2-modules-gssapi-mit
Se instalarán los siguientes paquetes NUEVOS:
   libsasl2-modules sasl2-bin
0 actualizados, 2 se instalarán, 0 para eliminar y 1 no actualizados.
Se necesita descargar 0B/271kB de archivos.
Se utilizarán 733kB de espacio de disco adicional después de desempaquetar.
  • Configuramos postfix para que autentique en SASL en main.cf:
  • # Configuración para que autentique en SASL
    ## Configuración de la Autentificación
    smtpd_sasl_auth_enable = yes
    smtpd_sasl_security_options = noanonymous
    smtpd_sasl_local_domain = $myhostname
    broken_sasl_auth_clients = yes
    ## Acciones a seguir para autentificar:
    ## permit_sasl_autenticated: permitir mandar mail a los autentificados por sasl
    ## permit_mynetworks: permite saltear el control a los de mynetworks
    smtpd_recipient_restrictions =
    permit_sasl_authenticated,
    permit_mynetworks,
    reject_unauth_destination,
    check_relay_domains

Seguimos las instrucciones /usr/share/doc/sasl2-bin/README.Debian para configurar postfix:

  • Activamos el Demonio de SASL para que este avizor para autenticar cuando postfix se lo pida. Como postfix se ejecuta en una jaula, debemos decir que el demonio se ejecute en ella. En /etc/default/saslauthd ponemos:
  • START=yes
    OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd -r"
  • Para crear ese directorio ejecutamos este commando como root:
  • elite:~# dpkg-statoverride --add root sasl 710 /var/spool/postfix/var/run/saslauthd
  • Añadimos el usuario Postfix al grupo sasl, para que pueda mandar autenticaciones al demonio:
  • elite:~# adduser postfix sasl

Hacemos las conexiones postfix-sasl-pam

  • Decimos a Postfix como queremos que valide SASL, creamos /etc/postfix/sasl/smtpd.conf:
  • pwcheck_method: saslauthd
    mech_list: login plain
  • El método de autenticación de SASL es PAM, por tanto le tenemos que decir a PAM como tiene que reaccionar ante autenticaciones SMTP /etc/pam.d/smtp
  • #%PAM-1.0
    @include common-auth
    @include common-account
    @include common-session
  • Reiniciamos los servicios:
  • elite:~# /etc/init.d/saslauthd start
    elite:~# /etc/init.d/postfix restart

En /etc/postfix/main.cf

  • Solo tengo mi localhost como zona de confianza, fuera de ahí, todos a autenticarse.:
  • mynetworks = 127.0.0.0/8

2 thoughts on “Securizar Postfix: TLS+SASL+PAM

  1. Una consulta, como puedo hacer la comunicacion del eclipse con la autenticacion pam, osea estoy desarrollando una aplicacion que nesecita leer los usuarios y los pasword desde un archivo plano con autenticacion pam como logro que mi eclipse con servidor apache se comunique

  2. hola buenas tardes me gustaria preguntarle una cosa y es que estoy trabajando en un servidor de correo en debian, para una practica de grado medio y he seguido los pasos uno a uno pero al enviar un mail a parte de que tarda mucho me sale:

    ERROR:
    Message not sent. Server replied:

    Estoy trabajando con postfix, squirrelmail, apache2, courier-imap etc.. espero su respuesta lo antes posible.

    Gracias

Leave a Reply

Your email address will not be published. Required fields are marked *