🐋
Apuntes Sistemas
  • ⚓Presentación
  • 📊Sistemas y Servidores
    • Personalizar el prompt de Windows
    • Utilidad de manejo de apps para Windows
    • PRACTICA: Arranque dual Windows y Ubuntu
    • 🚧SysLinuxOS: el SO para ASIX
    • Comandos Linux
      • PRACTICA - Ejercicio de práctica comandos
      • 🚧Instalación de paquetes
      • Apuntes Linux: blue/red team
      • Ejemplos de bash
      • Listado de comandos de Linux
    • Comandos Windows
      • 🚧Apuntes Powershell
      • Bucles FOR con batch
      • Scripts de práctica de Windows
    • Prácticas con Windows 10
    • Configuración de netplan
    • Terminal shell
      • SSH
      • 🚧Ghostty
      • 🚧Warp: la terminal inteligente
      • tmux: paneles de terminal
      • Tabby: Mejorar terminal
      • Conexión SSH en red NAT con VirtualBox
      • TheFuck!: Corrección de comandos
      • Wave: Mejorar terminal Linux
      • 🚧Registros de sesiones
    • Instalación manual de Wordpress en CDMON
    • 🏗️Proxmox
    • 🚧TrueNAS
    • Docker
      • Instalación de Docker
      • Dockerfiles
      • Volúmenes de docker
      • Deployment web con Docker con ejemplos
        • 🚧PRACTICA: Node.js con docker
      • Docker Compose
        • Ejemplo 1: Implantación de Wordpress
        • Ejemplo 2: Implementación de servidor con Nginx, Flask y mySQL
        • Ejemplo 3: Implantación de onlyoffice
        • 🚧Ejemplo 4: Passbolt
        • 🚧PRACTICA: Creando una web de emulación de juegos con docker-compose
      • Monitorización con Grafana en Docker
      • Pi-hole con docker
      • Actividad clase: Deployment app
      • Proyectos self-hosted de docker
    • 🚧Ansible
      • Configuración de laboratorio de ansible
    • 🚧Monitorización de servicios y redes
      • Servicios y cronjobs
      • 1Panel
      • 🚧WatchYourLAN
      • 🚧Uptime-kuma
      • 🚧Netdata
      • 🚧Prometheus + Grafana + Loki
    • LDAP
      • 🚧Gestión gráfica de LDAP
      • Carpetas compartidas NFS
      • PRACTICA: Infraestructura LDAP
  • 🗃️Servicios
    • 🚧Servidor hosting público
    • DHCP
      • DHCP con Ubuntu
      • 🦖DHCP & DNS script
      • DHCP con Alpine
        • Alpine - configuración de red
    • DNS
      • 😡Comprobación DNS
      • Script para enumeración DNS
      • DNS con ubuntu server
      • 🏗️DNSmasq
      • 🚧Securizar servidor DNS
    • Web
      • IIS con Windows server
      • Apache
        • Instalación de LAMP en Ubuntu
          • Prueba de servidor LAMP
          • 🚧Configuración de seguridad de Ubuntu
          • Creación de un VirtualHost en LAMP
          • Creación de varios VirtualHosts en LAMP
          • 🚧Instalación por script de LAMP
        • Aplicaciones con LAMP
          • Instalación de WP en entorno LAMP
          • 🚧Instalación de MantisBT en LAMP
            • 👷Guía de MantisBT
          • 🚧Instalación de QDPM con LAMP
      • Nginx
        • Virtualhosts
        • Instalando Wordpress en nginx
      • 👷MEAN stack
      • 👷‍♂️Caddy
      • 🚧Plesk
      • 🚧Ajenti -Web interface
    • 🏗️Proxy
      • Nginx como proxy inverso y balanceador
      • 🚧Zoraxy
    • Mailing
      • 🚧Servidor Mail con cloudfare
      • 🚧Reenvío de correos de root
      • 🚧Roundcube como MUA
      • Comprobación ESMTP
      • 🚧Seguridad en mailing
      • 🚧Mailhog
    • 🏗️File transfer
      • 🚧FTP
      • Git
    • Sistemas de comunicación instantánea
      • Comunicación mediante CLI
      • Ejabberd - XMPP
        • 🚧Ejabberd con docker
      • 🚧Openfire - XMPP
      • 🚧Comunicaciones servidor-móvil
    • 🏗️Multimedia services
      • Stremio
      • Ver anime por CLI
      • Jellyfin
      • 🚧HLS sobre Apache
      • 🚧Servicio autohospedado de videoconferencia
      • 🚧Morphos: Conversor docs
      • 🚧Reproductores de música en CLI
      • 🚧Icecast - música en streaming
      • 🚧RTMP-HLS server
      • 🚧Guacamole
  • 🖱️Hardware
    • 🚧Identificando conectores
    • Curso de electrónica analógica
    • Alcanzar los 3200MHz con la RAM
    • Calculadora de cuellos de botella
    • 🚧PXE: Bootear sistemas en red
    • 🚧PRÁCTICA - Clonación de disco con Clonezilla
    • Logitech iFixit
  • 🕸️Redes
    • Apuntes IPv4 Alina
    • ¿Cómo diferenciar tantos elementos de red?
    • 🚧IPv6
    • PRÁCTICA - Subneteo con IPcalc en Linux
    • PRÁCTICA - Comandos de red en Windows
    • 🚧PRÁCTICA - Comandos de red en Linux
    • Herramientas de red
      • 🚧TCPDump: analizado de paquetes en red
      • PRÁCTICA - Netsh
      • 🚧PRÁCTICA - mtr.ping.pe
      • 🚧Netcat
    • Wireshark
    • VPN y escritorio remoto
      • Comunicación punto a punto con ngrok
      • 🚧VPN
    • Escaneo de red
      • PRÁCTICA - Mapeado de red con Draw.io
      • 🚧PRÁCTICA - Nmap/Zenmap
    • Redes inalámbricas
      • Wi-fi
        • 🚧PRÁCTICA - Configuración de router
        • 🚧PRÁCTICA - Como hacer un Wifi Heatmap
        • 🚧Seguridad de redes inalámbricas
        • PRÁCTICA - Crackear la contraseña del Wifi con WPA/WPA2
    • PRÁCTICA - Usar SSH en Cisco packet tracer
  • 🛑Ciberseguridad
    • 🚧Securizando un servidor Linux
      • Protégete de ataques de fuerza bruta con Fail2ban
      • Firewall
        • UFW (uncomplicated firewall)
          • GUFW - Interfaz gráfica de ufw
        • 🚧IPTables
        • 🚧PFsense
          • 🚧DMZ con PFsense
      • 🚧Passbolt: gestor de contraseñas autohospedado
      • 🚧Hashes y encriptación
      • 🚧Certificados SSL/TLS
      • Copias de seguridad
    • 🚧Alerta de escaneo de puertos
    • 🚧Google dorks
    • 🚧Enumeración DNS
    • Comandos destructivos de linux
    • Webs enseñanza cyber
    • Wireless Pentesting CheatSheet Github
    • The password game!
    • Personal Security Checklist
  • 🔌Arduino
    • Termómetro e higrómetros digitales y online con Arduino
    • Construyendo un coche multipropósito
      • Multi
      • Montaje del auto
    • Arduino con Sigfox para IoT
    • 10 proyectos de Arduino
  • 📚Recursos y libros
    • Media library: libros varios
    • Herramientas básicas de sysadmin
  • 🌍Sostenibilidad y digitalización
    • Portfolio curso digitalización MOOC
    • 🚧Explotación de recursos por IA
    • 🚧Nuevas tecnologias y comunicaciones
    • 🚧Enlaces sobre Inteligencia artificial
Con tecnología de GitBook
En esta página
  • Riesgos y amenazas en servidores de correos
  • Spam, phishing y ataques de relé abierto
  • Métodos de autenticación en SMTP
  • Implementación de filtros y reglas de seguridad
  • Configuración de SPF, DKIM y DMARC
  • Cifrado SMTP
  • Configurar autenticación SMTP (smtpd_sasl_auth_enable)
  • Testeo
  • Configurar un RBL en Postfix
  • Verificar que las RBLs están funcionando
  • Spamassassin
  • Configurar SpamAssassin
  • Integrar SpamAssassin con Postfix
  • Verificar que SpamAssassin funciona
  • Seguridad para principiantes
  • Webgrafia
  • 1️⃣ Configuració de Postfix per evitar el relaying obert
  • 2️⃣ Implementació de SPF, DKIM i DMARC per protegir contra suplantació d’identitat
  • 3️⃣ Signatura digital i xifrat de correu amb GPG
  • 4️⃣ Signatura digital i xifrat amb S/MIME
  1. Servicios
  2. Mailing

Seguridad en mailing

AnteriorComprobación ESMTPSiguienteMailhog

Última actualización hace 2 meses

Tal y como estuvimos viendo al crear un servidor de correos, una de las "problematicas" que nos encontramos es la reticencia de los clientes de correos como Thunderbird para aceptar conexiones no cifradas que obviamente pueden vulnerar la seguridad.

Vamos a ver a continuación como solucionar este problema y cifrar nuestro protocolo SMTP para mayor seguridad.

ATENCIÓN: Algunas de las configuraciones pueden hacer dejar de funcionar la utilidad de envio de correos por no tener un certificado autofirmado, asegúrate de hacer instantáneas de la máquina para hacer pruebas.

Riesgos y amenazas en servidores de correos

Los servidores de correo electrónico son objetivos comunes para ataques debido a la información sensible que manejan. Algunos de los riesgos y amenazas más comunes incluyen:

  • Spam: Correos no solicitados que pueden contener enlaces maliciosos o adjuntos.

  • Phishing: Correos fraudulentos que intentan obtener información personal o credenciales.

  • Ataques de relé abierto: Configuraciones incorrectas que permiten a terceros enviar correos a través de tu servidor.

  • Malware: Software malicioso que puede infectar el servidor o los dispositivos de los usuarios.

  • Ataques de denegación de servicio (DoS): Inundación del servidor con tráfico para hacerlo inaccesible.

Spam, phishing y ataques de relé abierto

Para mitigar estos riesgos, es crucial implementar varias capas de seguridad:

  • Filtros antispam: Herramientas como SpamAssassin pueden ayudar a identificar y bloquear correos no deseados.

  • Listas negras y RBLs: Bloquea direcciones IP conocidas por enviar spam.

  • Configuración de SPF, DKIM y DMARC: Ayuda a verificar la autenticidad de los correos entrantes.

Métodos de autenticación en SMTP

La autenticación SMTP es esencial para prevenir el uso no autorizado del servidor de correo. Aquí hay algunos métodos comunes:

  • PLAIN: Envía el nombre de usuario y la contraseña en texto plano (no recomendado sin TLS).

  • LOGIN: Similar a PLAIN, pero más compatible con algunos clientes de correo.

  • CRAM-MD5: Usa un desafío-respuesta para autenticar al usuario sin enviar la contraseña en texto plano.

  • DIGEST-MD5: Similar a CRAM-MD5, pero más seguro.

Implementación de filtros y reglas de seguridad

Configurar filtros y reglas de seguridad puede ayudar a proteger el servidor de correo:

  • Filtros de contenido: Bloquea correos basados en palabras clave o patrones.

  • Reglas de tamaño: Limita el tamaño de los correos para prevenir ataques de denegación de servicio.

  • Reglas de remitente: Bloquea correos de dominios no confiables.

Configuración de SPF, DKIM y DMARC

Estas tecnologías ayudan a prevenir el spoofing de correos:

  • SPF (Sender Policy Framework): Publica una lista de servidores autorizados para enviar correos en nombre de tu dominio.

  • DKIM (DomainKeys Identified Mail): Firma digitalmente los correos para verificar su autenticidad.

  • DMARC (Domain-based Message Authentication, Reporting & Conformance): Define cómo manejar correos que fallan las verificaciones SPF y DKIM.


Habilitaremos el cifrado SMTP al solicitar un certificado TLS gratuito autofirmado de OpenSSL (ya que los certificados oficiales requieren de un dominio de DNS público) para mi dominio local y configuraremos Postfix para que lo utilice al enviar mensajes:

sudo apt install openssl

Cuando se le pida confirmación, escribe la información correcta y el dominio alexdns.local y presiona ENTER.

Primero ejecutaremos para generar la clave privada (RSA 4096 bits):

openssl genpkey -algorithm RSA -out cert.key -pkeyopt rsa_keygen_bits:4096

Ahora ejecutamos OpenSSL para obtener un certificado valido por 365 días:

openssl req -new -x509 -key cert.key -out cert.crt -days 365 -sha256 -subj "/CN=mail.alexdns.local"

Durante este proceso, OpenSSL te pedirá información como el dominio (Common Name, CN), que debe coincidir con tu dominio interno, por ejemplo, mail.alexdns.local.

El certificado (cert.crt) y el archivo de clave privada (cert.key) estarán guardados en la carpeta en la que estés, toca moverlo (sudo mv) al sitio correcto que para este ejemplo puede ser:

/etc/postfix/certs #Deberás crear la carpeta primero si no existe
/usr/local/share/ca-certificates #Por defecto

Actualiza certificados con:

sudo update-ca-certificates

Ahora que tenemos el certificado, abre main.cf para editarlo:

sudo nano /etc/postfix/main.cf

Busca la siguiente sección:

/etc/postfix/main.cf
# TLS parameters
smtpd_tls_cert_file=
smtpd_tls_key_file=
smtpd_tls_security_level=may

smtp_tls_CAfile=/usr/local/share/ca-certificates/cert.crt
smtp_tls_security_level=may
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

Modifícalo para que tenga este aspecto, sustituyendo alexdns.local por tu dominio cuando sea necesario.

Configurar autenticación SMTP (smtpd_sasl_auth_enable)

La autenticación SMTP es un proceso que permite a los servidores de correo verificar la identidad de los usuarios que intentan enviar correos electrónicos a través de ellos. Esto es crucial para prevenir el uso no autorizado del servidor de correo y para asegurar que solo los usuarios legítimos puedan enviar correos.

Para habilitar la autenticación SMTP en Postfix, edita el archivo de configuración principal (/etc/postfix/main.cf) y añade o modifica las siguientes líneas:

smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain = $myhostname
broken_sasl_auth_clients = yes
smtpd_recipient_restrictions =
    permit_mynetworks,
    permit_sasl_authenticated,
    reject_unauth_destination

Testeo

Cuando termines, guarda y cierra el archivo.

Aplica los cambios al reiniciar Postfix:

sudo systemctl restart postfix

Probemos primero la conexión con certificado:

openssl s_client -connect mail.alexdns.local:25 -starttls smtp

Si esto devuelve un resultado tal que:

CONNECTED(00000003)
depth=0 CN = mail.alexdns.local

¡Enhorabuena! Es que ha funcionado el certificado.

Ahora, vuelve a probar a enviar un correo electrónico:

echo "Este mensaje ahora esta cifrado" | mail -s "email cifrado" alex@alexandre.org

Puedes consultar la información técnica sobre el mensaje de correo electrónico en el cliente a partir de More>View source


Configurar un RBL en Postfix

Configurar una Real-time Blackhole List (RBL) en Postfix ayuda a reducir el spam rechazando correos electrónicos provenientes de fuentes conocidas de spam. Sigue estos pasos para activarlo:

Abre el archivo /etc/postfix/main.cf:

sudo nano /etc/postfix/main.cf

Ahora deberás agregar las RBLs a la configuración, recuerda que puedes incluir varias RBLs según sea necesario, en nuestro caso usaremos tres públicas que tienes a continuación:

smtpd_recipient_restrictions = 
    permit_mynetworks,
    permit_sasl_authenticated,
    reject_unauth_destination,
    reject_rbl_client zen.spamhaus.org,
    reject_rbl_client bl.spamcop.net,
    reject_rbl_client b.barracudacentral.org

Explicación:

  • permit_mynetworks: Permite correos desde la red local.

  • permit_sasl_authenticated: Permite usuarios autenticados con SMTP.

  • reject_unauth_destination: Evita que el servidor sea un "open relay".

  • reject_rbl_client: Consulta los servidores RBL especificados y rechaza los correos si la IP está en la lista negra.

Después de guardar los cambios, recarga Postfix para aplicar la nueva configuración:

sudo systemctl reload postfix

Verificar que las RBLs están funcionando

Para asegurarte de que los RBLs se están usando correctamente, revisa los registros de Postfix:

tail -f /var/log/mail.log

Si un correo es rechazado por estar en una RBL, verás una línea similar a esta en los logs:

NOQUEUE: reject: RCPT from unknown[XXX.XXX.XXX.XXX]: 554 5.7.1 Service unavailable; Client host [XXX.XXX.XXX.XXX] blocked using zen.spamhaus.org;

Esto confirma que Postfix está bloqueando emails de IPs en listas negras.

Cómo probar con GTUBE:

  1. Envía un correo desde cualquier cliente SMTP (como Thunderbird o sendmail) con este contenido:

    echo "XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X" | mail -s "Spam Test email" larios@alexdns.local
  2. Postfix debería rechazarlo o marcarlo como spam si tienes SpamAssassin configurado junto con RBLs.

(Esto no me ha funcionado!)

Primero instalamos spamassassin y spamc (el cliente):

sudo apt update && sudo apt install spamassassin spamc -y

Por defecto, SpamAssassin no se ejecuta como un servicio por lo que debemos activarlo editando la configuración del servicio:

sudo nano /etc/default/spamassassin

Ejecuta el siguiente comando (update-rc.d spamassassin enable):

sudo systemctl enable --now spamassassin

Verifica que esté en ejecución:

sudo systemctl status spamassassin

Configurar SpamAssassin

Edita su archivo de configuración principal:

sudo nano /etc/spamassassin/local.cf

Añade o edita estas líneas:

required_score 5.0
rewrite_header Subject ***SPAM***
use_bayes 1
bayes_auto_learn 1
report_safe 0

📌 Explicación:

  • required_score 5.0 → Mensajes con puntaje ≥ 5 serán marcados como spam.

  • rewrite_header Subject ***SPAM*** → Agrega "SPAM" al asunto de los correos detectados.

  • use_bayes 1 → Activa el filtro Bayesiano (aprende con el tiempo).

  • bayes_auto_learn 1 → Habilita el autoaprendizaje.

  • report_safe 0 → Entrega los correos marcados como spam sin modificaciones (en vez de adjuntarlos).

🔹 Reinicia SpamAssassin para aplicar cambios:

sudo systemctl restart spamassassin

Integrar SpamAssassin con Postfix

Edita el archivo de configuración de Postfix:

sudo nano /etc/postfix/master.cf

Vamos a crear un usuario para el spam con el siguiente comando:

sudo useradd -r -s /bin/false -d /var/lib/spamassassin spamd

Después, cambiemos el propietario de los archivos de configuración de SpamAssassin para evitar problemas de permisos:

sudo chown -R spamd:spamd /var/lib/spamassassin

Añade al final:

smtp      inet  n       -       y       -       -       smtpd
  -o content_filter=spamassassin
spamassassin unix -     n       n       -       -       pipe
  user=spamd argv=/usr/bin/spamc -f -e /usr/sbin/sendmail -oi -f ${sender} ${recipient}

Qué hace esta configuración?

  1. Postfix recibe un correo entrante en el servicio SMTP (smtpd).

  2. Antes de entregarlo, lo envía a SpamAssassin (content_filter=spamassassin).

  3. SpamAssassin analiza el correo en busca de spam usando spamc.

  4. Si el correo no es spam, se reenvía a Sendmail, que lo entrega al destinatario final.

  5. Si es spam, SpamAssassin puede marcarlo con un encabezado o descartarlo, según la configuración.

Guarda, cierra y reinicia Postfix para aplicar cambios:

sudo systemctl restart postfix

Verificar que SpamAssassin funciona

Existen servicios en línea que envían correos simulados para probar filtros de spam. Un ejemplo es GTUBE (Generic Test for Unsolicited Bulk Email), un texto de prueba que muchos filtros antispam (incluido SpamAssassin) detectan como spam.

Para probarlo, enviemos un correo de prueba con GTUBE :

echo "XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X" | mail -s "Spam Test" ubuntu@alexdns.local

Luego revisa los logs:

tail -f /var/log/mail.log

Si SpamAssassin funciona correctamente, verás algo como:

SpamAssassin score=1000 hits, marked as SPAM

y el correo debería llegar con el asunto ***SPAM*** Spam Test.


SPF (Sender Policy Framework)

  • Objetivo: Define qué servidores están autorizados a enviar correos en nombre de tu dominio.

  • Cómo funciona:

    • Se configura mediante un registro TXT en la zona DNS de tu dominio.

    • Este registro especifica las direcciones IP o nombres de host permitidos para enviar correos.

  • Ejemplo de registro SPF:

    v=spf1 ip4:192.0.2.1 include:mail.ejemplo.com -all
    • ip4:192.0.2.1: Permite el envío desde esta dirección IPv4.

    • include:mail.ejemplo.com: Autoriza también servidores definidos en ese dominio.

    • -all: Rechaza todos los demás servidores que no estén listados.

  • Pasos para la implementación:

    1. Accede a la administración DNS de tu dominio.

    2. Añade o edita el registro TXT con la política SPF adecuada.

    3. Verifica la correcta propagación usando herramientas en línea.


DKIM (DomainKeys Identified Mail)

  • Objetivo: Añade una firma digital a cada correo saliente para verificar su autenticidad y asegurar que no se haya modificado en tránsito.

  • Cómo funciona:

    • Se genera un par de claves: privada y pública.

    • La clave privada se instala en el servidor de correo (por ejemplo, a través de OpenDKIM integrado con Postfix) y se usa para firmar los mensajes.

    • La clave pública se publica en un registro TXT en la zona DNS del dominio.

  • Ejemplo de registro DKIM:

    default._domainkey.tudominio.com. IN TXT "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC3..."
    • default es el selector, que puedes personalizar.

    • p= contiene la clave pública en formato base64.

  • Pasos para la implementación:

    1. Genera las claves DKIM: Utiliza herramientas como opendkim-genkey.

    2. Configura el MTA: Instala y configura OpenDKIM para que firme los correos salientes.

    3. Actualiza la DNS: Publica la clave pública en un registro TXT en tu DNS.

    4. Prueba la firma: Envía correos de prueba y verifica la firma con herramientas de validación DKIM.


DMARC (Domain-based Message Authentication, Reporting & Conformance)

Utiliza SPF y DKIM para definir una política de autenticación y manejo de mensajes que fallen la verificación, protegiendo contra la falsificación de correos.

  • Cómo funciona:

    • Se configura mediante un registro TXT en la zona DNS, generalmente en el subdominio _dmarc.

    • Especifica qué acción tomar (ninguna, cuarentena o rechazo) si un correo no cumple con las políticas SPF/DKIM.

    • Permite recibir informes (agregados y forenses) sobre el cumplimiento de la política.

  • Ejemplo de registro DMARC:

    _dmarc.alexdns.local. IN TXT "v=DMARC1; p=reject; rua=mailto:reportes@alexdns.local; ruf=mailto:alertas@alexdns.local; pct=100"
    • p=reject: Rechaza los correos que no pasen la validación.

    • rua y ruf: Direcciones de correo donde recibirás los informes agregados y forenses, respectivamente.

    • pct=100: Aplica la política al 100% de los mensajes.

  • Pasos para la implementación:

    1. Define la política que deseas aplicar (p. ej., none, quarantine, reject).

    2. Crea el registro TXT en tu DNS bajo _dmarc.alexdns.local.

    3. Monitorea los informes para ajustar la configuración si es necesario.


Integración en tu servidor de correo

  • Configuración en el servidor:

    • Aunque los registros SPF y DMARC se configuran en el DNS, para DKIM necesitarás instalar y configurar un software (como OpenDKIM) en tu servidor.

    • Postfix es compatible con OpenDKIM, y la integración generalmente implica editar archivos de configuración en /etc/opendkim.conf y /etc/postfix/main.cf para enrutar los correos a través de OpenDKIM.

Webgrafia


1️⃣ Configuració de Postfix per evitar el relaying obert

Objectiu:

Evitar que el servidor de correu permeti l’enviament de correus per a dominis externs sense autenticació (relaying obert).

Passos:

🛠 1. Modificar la configuració de Postfix

  1. Editem el fitxer de configuració de Postfix:

    sudo nano /etc/postfix/main.cf
  2. Verifiquem que existeixen les següents opcions en el fitxer i les configurem correctament:

    smtpd_recipient_restrictions =
        permit_mynetworks
        permit_sasl_authenticated
        reject_unauth_destination
    • permit_mynetworks: Permet l’enviament des de les IPs de confiança.

    • permit_sasl_authenticated: Permet l’enviament si l’usuari s’ha autenticat.

    • reject_unauth_destination: Evita el relaying obert (rebutja enviaments des de fora cap a altres dominis si no s’autentiquen).

  3. Guardar i tancar el fitxer (CTRL + X, Y, Enter).

🔄 2. Reiniciar Postfix per aplicar els canvis

sudo systemctl restart postfix

🕵️ 3. Verificar si el servidor és vulnerable a relaying obert

  1. Fes una prova enviant un correu des d’una IP externa no autoritzada:

    telnet tu_servidor 25

    Escrivim les següents ordres:

    EHLO hacker.com
    MAIL FROM: hacker@hacker.com
    RCPT TO: victima@altracompanyia.com
    • Si el servidor respon amb "Relay access denied", la configuració és correcta.

    • Si accepta l’enviament, el servidor és vulnerable i cal revisar la configuració.


2️⃣ Implementació de SPF, DKIM i DMARC per protegir contra suplantació d’identitat

Implementar mesures de seguretat per evitar que atacants enviïn correus en nom del nostre domini.

Passos:

🔹 1. Configurar SPF (Sender Policy Framework)

SPF permet especificar quins servidors poden enviar correus en nom del nostre domini.

  1. Afegir el següent registre TXT al DNS del domini:

    v=spf1 mx -all
    • mx: Permet només els servidors de correu registrats.

    • -all: Rebutja correus enviats per servidors no autoritzats.

  2. Verificar que el registre SPF està actiu

    dig TXT tu_dominio.com

🔹 2. Configurar DKIM (DomainKeys Identified Mail)

DKIM signa digitalment els correus per validar que realment provenen del nostre domini.

  1. Instal·lar OpenDKIM:

    sudo apt install opendkim opendkim-tools
  2. Configurar les claus DKIM:

    sudo opendkim-genkey -b 2048 -d tu_dominio.com -s default

    Això generarà dos fitxers:

    • default.private: Clau privada per signar els correus.

    • default.txt: Clau pública per afegir al DNS.

  3. Afegir la clau pública TXT al DNS:

    default._domainkey.tu_dominio.com   TXT   "v=DKIM1; k=rsa; p=MIIBIjANBgkqh..."
  4. Reiniciar Postfix i OpenDKIM:

    sudo systemctl restart postfix opendkim

🔹 3. Configurar DMARC

DMARC defineix polítiques sobre què fer amb correus que no passen SPF o DKIM.

  1. Afegir aquest registre TXT al DNS:

    _dmarc.tu_dominio.com   TXT   "v=DMARC1; p=quarantine; rua=mailto:admin@tu_dominio.com"
    • p=quarantine: Els correus sospitosos es marquen com a spam.

    • rua=mailto:admin@tu_dominio.com: Envia informes dels intents de suplantació.

  2. Verificar la configuració


3️⃣ Signatura digital i xifrat de correu amb GPG

Objectiu:

Aprendre a signar i xifrar correus utilitzant GnuPG (GPG) per garantir autenticitat i confidencialitat.

Passos:

🔹 1. Generar claus GPG

gpg --full-generate-key
  1. Escollir:

    • Tipus de clau: RSA

    • Mida: 4096 bits

    • Durada: Recomanable sense caducitat

  2. Introduir nom, correu electrònic i frase de seguretat.

🔹 2. Exportar la clau pública

gpg --export -a tu_usuari > clau_publica.asc

Aquesta clau s’envia als contactes perquè puguin xifrar correus destinats a nosaltres.

🔹 3. Importar la clau pública d’un company

gpg --import clau_publica.asc

🔹 4. Signar un correu electrònic

echo "Aquest és un missatge signat digitalment" | gpg --clearsign > missatge_signat.txt

Enviar missatge_signat.txt per correu.

🔹 5. Xifrar un correu electrònic

echo "Missatge secret" | gpg -e -r usuari@domini.com > missatge_xifrat.gpg

Enviar missatge_xifrat.gpg per correu.

🔹 6. Desxifrar un missatge rebut

gpg -d missatge_xifrat.gpg

4️⃣ Signatura digital i xifrat amb S/MIME

Objectiu:

Utilitzar certificats S/MIME per signar i xifrar correus electrònics.

Passos:

🔹 1. Generar un certificat S/MIME amb OpenSSL

openssl req -new -x509 -days 365 -nodes -out certificat.pem -keyout clau_privada.pem

🔹 2. Importar el certificat a Thunderbird o Evolution

  1. Obrir el client de correu.

  2. Anar a Configuració del compte → Seguretat.

  3. Importar el certificat .pem.

🔹 3. Signar i xifrar un correu

  • En enviar un correu, seleccionar "Signar digitalment".

  • Per xifrar, assegurar-se que el destinatari té el certificat.

: Asegura que solo usuarios autorizados puedan enviar correos a través del servidor.

Cifrado SMTP

A continuación, revisa el correo en el cliente de Thunderbird que configuramos en la . Desde aquí, accede a Settings>Privacy & Security>Certificates>Manage certificates

Más info sobre RBLs:

Spamassassin

Referencia:

Seguridad para principiantes

Utilitzar per comprovar que SPF, DKIM i DMARC funcionen correctament.

👌
👷
🚧
Autenticación SMTP
anterior guía
https://www.icann.org/en/blogs/details/reputation-block-lists-protecting-users-everywhere-1-11-2017-en
https://docs.vultr.com/how-to-install-spamassassin-with-postfix-on-ubuntu
https://esgeeks.com/seguridad-correo-electronico-spf-dkim-dmarc/?feed_id=22344&_unique_id=66dcbee6bfd9b
https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-postfix-as-a-send-only-smtp-server-on-ubuntu-20-04-es
https://www.mail-tester.com
🗃️
🚧
Page cover image