//Certificado Let\’s Encrypt y protegiendo nuestro servidor contra suplantación de identidad.
Aprovechando que tenemos tanto un dominio real como IP pública, vamos a generar un certificado válido para nuestro servidor Zimbra. Esto además de añadir protección a nuestro servidor, significa credibilidad y seguridad para nuestros usuarios.
Antes de comenzar por supuesto debemos tener nuestro sistema Zimbra instalado y funcionando, en la siguiente entrada podrá encontrar los pasos.
1- Certificado Let\’s Encrypt
Es importante remover cualquier indicio de certbot, aunque si hemos realizado una instalación limpia no tendremos problema:
# sudo apt remove certbot
Vamos a utilizar snap para instalar certbot, así que con los siguientes comandos instalamos y ponemos en marcha el paquete:
# sudo snap install core; sudo snap refresh core
# sudo snap install --classic certbot
# sudo ln -s /snap/bin/certbot /usr/bin/certbot
Listo, ya podemos generar nuestro certificado para el dominio en este caso ntw.nat.cu con el siguiente comando:
# sudo /snap/bin/certbot certonly --standalone --agree-tos --staple-ocsp --email admin@ntw.nat.cu -d mail.ntw.nat.cu -d webmail.ntw.nat.cu --preferred-chain \'ISRG Root X1\'
UPDATE (16-5-2023)
Para solventar el error de match:
** Verifying \'/etc/letsencrypt/live/mail.ntw.nat.cu/cert.pem\' against \'/opt/zimbra/ssl/zimbra/commercial/commercial.key\'
140489956476224:error:0607907F:digital envelope routines:EVP_PKEY_get0_RSA:expecting an rsa key:crypto/evp/p_lib.c:474:
ERROR: Certificate \'/etc/letsencrypt/live/mail.ntw.nat.cu/cert.pem\' and private key \'/opt/zimbra/ssl/zimbra/commercial/commercial.key\' do not match.
Debe generar su certificado de la siguiente forma:
sudo /snap/bin/certbot certonly --standalone --agree-tos --staple-ocsp --email admin@ntw.nat.cu -d mail.ntw.nat.cu -d webmail.ntw.nat.cu --preferred-chain \'ISRG Root X1\' --key-type rsa
Lo que hemos agregado es: –key-type rsa esto se debe a que Zimbra hace la comprobación de la llave mediante rsa. Evite otras soluciones como modificar el código de \»zmcertmgr\» para sustituir la comprobación mediante rsa, ya que en posibles actualizaciones, Zimbra volverá seguramente a establecer dicho archivo a sus valores originales y obtendrás nuevamente el error, así que lo mejor es obtener los archivos de certificado y llave como Zimbra los necesita.
Es muy importante, poner como primer dominio, el FQDN del servidor Zimbra, en este caso mail.ntw.nat.cu, luego podemos añadir otras url, por ejemplo generamos el mismo certificado para webmail.ntw.nat.cu, pero también podemos añadir otras como imap.ntw.nat.cu o smtp.ntw.nat.cu, solo es cuestión de agregarlos con el parámetro -d.
Lo siguiente es para asignar algunos permisos:
# sudo apt install acl
# sudo setfacl -R -m u:zimbra:rwx /etc/letsencrypt/
Nos logueamos como Zimbra y copiamos el privkey.pem hacia el directorio de Zimbra:
# sudo su - zimbra
# cp /etc/letsencrypt/live/mail.ntw.nat.cu/privkey.pem /opt/zimbra/ssl/zimbra/commercial/commercial.key
Descargamos el Root X1:
# wget -O /tmp/isrgrootx1.pem https://letsencrypt.org/certs/isrgrootx1.pem.txt
Combinamos los dos archivos:
# cat /etc/letsencrypt/live/mail.ntw.nat.cu/chain.pem /tmp/isrgrootx1.pem > /opt/zimbra/ssl/zimbra/commercial/commercial_ca.crt
Aplicamos el deploy del certificado:
# /opt/zimbra/bin/zmcertmgr deploycrt comm /etc/letsencrypt/live/mail.ntw.nat.cu/cert.pem /opt/zimbra/ssl/zimbra/commercial/commercial_ca.crt
Opcionalmente podemos verificar que se realizó con éxito:
# /opt/zimbra/bin/zmcertmgr viewdeployedcrt
Nos queda reiniciar los servicios de Zimbra para que todo comience a funcionar:
# zmcontrol restart
# exit
2- Verificar la configuración de mynetworks
# postconf mynetworks
Este archivo solo debe contener la direccion local, tanto para IPv4 como IPv6, y la red a la cual pertenece Zimbra, por ejemplo, si la IP de nuestro Zimbra es 192.168.1.10/24 entonces mynetworks debería contener: mynetworks = 127.0.0.0/8 [::1]/128 192.168.1.0/24.
En este caso me devuelve: mynetworks = 127.0.0.0/8 [::1]/128 152.206.85.0/24
En un servidor de correo postfix, el parámetro mynetworks declara uno o varios hosts o incluso redes enteras que no van a pasar por las reglas del servidor, entonces cualquier cliente que pertenezca a la red declarada aquí, podrá enviar correo sin autenticar entre otras cosas. Por tal motivo es necesario cerciorarse que solamente aparezca aquí la red interna del Zimbra.
3- Suplantación de identidad y envío de correo sin autentificación.
Lo siguiente lo ejecutamos con el fin de evitar la suplantación de identidad, esto significa que un usuario autenticado en el servidor, aún estando autenticado no puede enviar correo a nombre de otro. En el video sobre esta entrada veremos como se comporta esto y podrás entender mejor.
# su zimbra
zmprov mcf zimbraMtaSmtpdSenderLoginMaps proxy:ldap:/opt/zimbra/conf/ldap-slm.cf +zimbraMtaSmtpdSenderRestrictions reject_authenticated_sender_login_mismatch
Luego editamos el archivo smtpd_sender_restrictions.cf y agregamos lo siguiente justo después de: permit_mynetworks
# nano /opt/zimbra/conf/zmconfigd/smtpd_sender_restrictions.cf
permit_mynetworks, reject_sender_login_mismatch
Pasado unos minutos estos cambios surten efecto, o podemos también forzarlos reiniciando los servicios.
Ademas vamos a ejecutar los siguientes comandos que también son necesarios para el envío sin autentificación o a nombre de usuarios inexistentes en el servidor:
# zmprov mcf zimbraMtaSmtpdRejectUnlistedRecipient yes
# zmprov mcf zimbraMtaSmtpdRejectUnlistedSender yes
# zmmtactl restart
# zmconfigdctl restart
Una vez realizados todos estos pasos podemos verificar que todo funciona correctamente, a continuación les dejo algunas herramientas online que le servirá para las pruebas. Si no dispone de acceso desde internet al servidor Zimbra, siempre puede usar Telnet.
https://dnschecker.org/smtp-test-tool.php
Para dudas o comentarios utilizar el grupo en Telegram o la Comunidad.
Hola, y saludos gracias por compartir conocimiento sobre el tema de zimbra, respecto a la creciaon de los certificados tengo el siguiente error si me puedes ayudar
certbot: error: unrecognized arguments: –preferred-chain ISRG Root X1 –key-type rsa
no reconoce el comando de creación
sistema operativo ubuntu 20.04
zimbra 8.8.15
gracias
saludos
Hola colega, voy a revisar personalmente para comprobar que el comando sigue funcional, pero no debería existir error, le comentaré por aquí y se actualizará de ser necesario el artículo.
Saludos
Colega, se ha actualizado el artículo, el comando queda: sudo /snap/bin/certbot certonly –standalone –agree-tos –staple-ocsp –email admin@ntw.nat.cu -d mail.ntw.nat.cu -d webmail.ntw.nat.cu –preferred-chain ‘ISRG Root X1’ –key-type rsa
Saludos, he seguido todos los pasos de suplantación de identidad, comprobé por los enlaces que ocurría; luego, realizando las pruebas en las url del articulo pude comprobar como efectivamente se evita que envíen correos; pero, toda mi red deja de funcionar incluido el zimbra. Por favor ayuda!!! Gracias de antemano.
Hola colega, puedes explicar un poco más? no entiendo muy bien la información de que toda la red deja de funcionar, le recomiendo usar nuestro grupo en Telegram para poder ayudarlo mejor: https://t.me/networldgroup