Mostrando entradas con la etiqueta correo electronico. Mostrar todas las entradas
Mostrando entradas con la etiqueta correo electronico. Mostrar todas las entradas

lunes, 9 de noviembre de 2015

Envío de correos desde scripts


¡Hola de nuevo!
Esta vez traigo una entrada muy interesante y útil (como todas XD) para poder mandar mails desde scripts.
Esta misma semana me he tenido que repasar como hacerlo dado que quería desarrollar un script y desde él a través del comando mail mandar correos.
¿Cómo lo vamos a hacer? Ante todo fácil, sólo para mandar correos no necesitamos configurar un servidor de correo completo, ni configurar las DNS para el correo entrante con un dominio propio, etc.
Existen varias opciones para poder satisfacer la necesidad de envío de correos, me centraré en dos opciones que considero las más fáciles como son Exim4 y sSMTP. Exim4 sólo lo configuraremos para envíar correos.
Configuraremos tanto sSMTP como Exim4 para que envíen correos a través de otro servidor de correo. Básicamente configuraremos sSMTP y Exim4 como configuramos por ejemplo nuestras cuentas de correos en nuestros smartphones a través de una app de gestión de correos, en las que les proporcionamos los parámetros de envío y recepción de correos del servidor.En nuestro caso, en esta entrada los configuraremos través de gmail, usando una cuenta ficticia info.ejemplo@gmail.com cuya contraseña será Passcuentainfo.ejemplo.
En vez de a través de gmail podríamos configurarlos con cualquier otro servidor de correo, por ejemplo, uno que tengamos montado en nuestras empresas.

sSMTP

sSMTP es MTA simple (no es un servidor de correo completo) para enviar correos desde una máquina a través de otro servidor de correos. Es una herramienta sencilla, liviana, segura (cuando se utiliza adecuadamente) y no hace uso de demonios con el consiguiente ahorro de recursos. A diferencia de Exim4, sSMTP no recibe correo, no hace uso de alias ni administra colas.
De forma general un componente importante de la seguridad del correo electrónico, además del uso de la firma digital y el cifrado, es la protección de sus intercambios de autenticación para las conexiones con los servidores de correo, sSMTP proporciona funcionalidad para el uso de TLS / SSL para proteger las conexiones con el servidor SMTP.


Exim4

Exim4 a grandes rasgos es un servidor de correo monolítico completo con un formato de configuración sencillo por lo que resulta más fácil de configurar que otros servidores de correo como Sendmail. Con un dominio propio y las DNS correctamente configuradas Exim4 puede gestionar el envío y  la recepción de correos desde/ hacia dicho dominio. Exim4 sí hace uso de demonios para su funcionamiento.

Instalación, configuración sSMTP

La instalación y configuración la llevaremos a cabo en una máquina Gnu/Linux con Debian. En la Red hay muchos recursos al respecto pero quería hacer "mi versión" con mis palabras para quizás hacerlo si cabe más claro.

Instalamos ssmtp y mailutils
#apt-get install ssmtp mailutils

A continuación configuraremos sSMTP editando el fichero de configuración /etc/ssmtp/ssmtp.conf. Antes es de "buena educación" hacer una copia de dicho fichero por si nos liamos y algo va mal, siempre podamos contar con el original.

Hacemos una copia del fichero de configuración
#cp /etc/ssmtp/ssmtp.conf /etc/ssmtp/ssmtp.conf_original
Editamos /etc/ssmtp/ssmtp.conf con nuestro editor favorito, yo utilizaré nano
#nano /etc/ssmtp/ssmtp.conf

Ahora se muestra el contenido del fichero comentando/ aclarando un poco cada parámetro

#
# Config file for sSMTP sendmail
#
# The person who gets all mail for userids < 1000
# Make this empty to disable rewriting.

#Esta cuenta es la que recibiría los correos, pondremos la cuenta de gmail que configuraremos o la dejamos #en blanco ya que no gestionaremos con ssmtp la recepción de correos
root=info.ejemplo@gmail.com

# The place where the mail goes. The actual machine name is required no
# MX records are consulted. Commonly mailhosts are named mail.domain.com

#Servidor de correos que usaremos para enviar los correos
mailhub=smtp.gmail.com:587
AuthUser=info.ejemplo@gmail.com
AuthPass=Passcuentainfo.ejemplo

#Añadiremos las siguientes dos líneas para decirle a ssmtp que cifre las comunicaciones con el server
UseTLS=Yes
UseSTARTTLS=Yes


# Where will the mail seem to come from?

#Es el nombre del dominio que queremos mostrar como enviador, pero sólo será visible si abrimos el correo #con las cabeceras de lo contrario veremos la cuenta de gmail que configuremos para el envío
#Ejemplo de correo de pueba X-Google-Original-From: "root" <root@micasa.com>rewriteDomain=micasa.com
# The full hostname

#Si abrimos el correo original con las cabeceras veremos una línea que hace referencia a este parámetro
#Ejemplo línea mensaje original correo de prueba Received: from sysinfo
hostname=sysinfo


Hasta aquí lo relacionado con el contenido de ssmtp.conf

Esta configuración tiene un problema claro de seguridad tanto en cuanto la clave de la cuenta que utilizaremos para enviar correos aparece en claro. Realmente no es lo suyo, sería más adecuado que se le pudiera pasar un fichero con la clave cifrada en él. Una vez más debemos alcanzar un equilibrio entre funcionalidad y seguridad.
Para asegurarlo un poco, lo protegeremos por permisos y cambiaremos su propietario a root y su grupo a mail.

#chmod 640 /etc/ssmtp/ssmtp.conf
#chown root:mail /etc/ssmtp/ssmtp.conf


Hay que tener en cuenta que tendremos que añadir al grupo mail los usuarios del sistema a los que queramos permitir enviar correos, por ejemplo, si quisiéramos permitir al usuario josemaria enviar correos deberíamos ademas ejecutar:

#adduser josemaria mail


Instalación, configuración Exim4

La instalación y configuración de Exim4 la llevaremos a cabo en una máquina Gnu/Linux con Ubuntu Server en esta ocasión. En la Red hay muchos recursos al respecto pero quería hacer también con Exim4 "mi versión".
Una cuestión importante a la hora de hacer uso y antes de instalar Exim4, es que si tenemos instalado Sendmail debemos desinstalarlo porque pueden surgir problemas de incompatibilidades.
#apt-get purge sendmail

Instalamos Exim4
#apt-get install -f exim4

Configuramos Exim4
#dpkg-reconfigure exim4-config
 
 


Seleccionamos enviar a través de smarthost porque haremos uso de otro server para enviar los correos.

Establecemos nombre de sistema de correo por ejemplo correo.prueba.es.


Aceptamos las direcciones ipv4 e ipv6 que aparecen.

Otros dominios con los que se configura el correo lo dejamos en blanco.

Otras máquinas a las que reenviar correo lo dejamos también en blanco.

Aquí configuramos la dirección y el puerto del servidor a través del que enviaremos los correos, en este caso es gmail pero podríamos configurar otro.

Decimos No a ocultar la dirección de los correos salientes.


Seleccionamos No al límite de consultas DNS

Seleccionamos mbox como formato de almacenamiento de correo local.
A continuación se reiniciará el MTA...


El siguiente paso es editar con nuestro editor preferido el fichero que contendrá los datos relacionados con las credenciales de la cuenta con la que enviaremos los correos a través del servidor de gmail. Dicho fichero es /etc/exim4/passwd.client.
#nano /etc/exim4/passwd.client

Se muestra un ejemplo del contenido del fichero /etc/exim4/passwd.client donde tendremos que añadir las líneas que están en negrita

# password file used when the local exim is authenticating to a remote
# host as a client.
#
# see exim4_passwd_client(5) for more documentation
#
# Example:
### target.mail.server.example:login:password
gmail-smtp.l.google.com:info.ejemplo@gmail.com:Passcuentainfo.ejemplo
*.google.com:info.ejemplo@gmail.com:Passcuentainfo.ejemplo
smtp.gmail.com:info.ejemplo@gmail.com:Passcuentainfo.ejemplo

Hasta aquí el fichero de ejemplo

Reiniciamos servicio de exim4

#/etc/init.d/exim4 restart

Ejemplo de uso

Con independencia de la solución que adoptemos, en nuestros scripts podemos mandar correos mediante el comando mail.
Un ejemplo sencillo sería:
#echo "prueba correo desde exim4"|mail -s "Test desde Exim4" correo.destino@dominio.com
Con -s Especificamos un asunto y correo.destino@dominio.com es la dirección a la que queramos mandar el correo.
El comando mail tiene un mayor número de parámetros, podremos encontrar información al respecto a través de man o en la Red.

Como en cada entrada, sólo pretendo hacer referencia a lo más importante y funcional, e intentar ser un buen punto de partida en los diferentes temas tratados. De estas cuestiones hay mucho escrito, donde podremos indagar y encontrar las soluciones que mejor se adapten a nuestras necesidades.
Espero que os haya resultado al menos útil.
Me gustaría completar y añadir valor a mi blog con tus comentarios, experiencias, etc. ¿Me ayudas?
Nos leemos en la próxima entrada.
¿De qué será? Tengo algo en la cabeza pero no lo tengo decidido.
Saludos.

Fuentes



sábado, 24 de octubre de 2015

Blacklist y SPF en Zimbra


¡Hola de nuevo!
Traigo una nueva entrada relacionada con un tema tan extenso como es el del correo electrónico. Vamos a tratar un caso real de envío/recpción de correos fraudulentos relacionados con la suplantación del remitente, llevar a cabo una valoración de las causas que pudieron provocarla, así como unas recomendaciones básicas para evitarlas y contrarestarlas.
También se hará referencia a la creación de una blacklist/whitelist en Zimbra, una introdución a SPF y su activación también en Zimbra.
¿Zimbra?
Zimbra es una suite colaborativa que proporciona servicios de correo electrónico.
Más información podemos obtenerla aquí.

Hace algunos días un amigo me comentó que había sufrido un incidente de seguiridad que aún estaba investigando,posiblemente relacionado con un caso de physing en el que se podría haber visto comprometida su cuenta de correo, o al menos sus contactos.

¿Cómo se dio cuenta?
 
Detectó que recibía reportes ante la imposibilidad de entregar correos destinados a muchos de sus contactos,recibió correos con nombres parecidos (sospechosos) al de sus contactos en la que la dirección del remitente era la suya y varios de sus compañeros le llamaron para preguntarle acerca de que era ese correo que estaba mandando.
Dicho correo contenía un enlace a una página donde se solicitaban datos que de ser proporcionados serían robados.
Él no había llevado a cabo esos envíos, y dichos correos no se encontraban en su bandeja de enviados. Abrió el correo junto con todas sus cabeceras y pudo observar que los envíos se estaban llevando a cabo desde otro dominio.
Por lo que de alguna manera, habían "secuestrado" sus contactos y habían "spoofeado"/suplantado la dirección del remitente utilizando la suya.
Esta circunstancia es muy peligrosa porque según que usuarios pueden "picar" y proporcionar la información indebidamente pensando que se trataba de un correo legítimo del remitente, pudiendo ser utilizada la información comprometida recabada para futuros usos fraudulentos.Aquí ha entrado en juego la ingeniería social.

¿Cómo pudo verse comprometido su correo y/o sus contactos?
 
  • Esta circunstancia pudo ser motivada por:Si se hace uso de servicios de correo electrónica vía web pudo ser provocado por la explotación de alguna vulnerabilidad del navegador, flash, java, acrobat reader o algún complemento del mismo en la que hubieran quedado expuesta la cuenta de correo y/ o sus contactos.
  • Explotación de alguna vulnerabilidad del sistema operativo, de alguna aplicación de gestión de correo electrónico o de gestión de contactos por parte de algún tipo de malware.
  • Haber sido presa de alguna app maliciosa de gestión de contactos en su smartphone
  • Haber sido presa/ victima de algún "artefacto" de ingeniería social.

¿Qué medidas se deben tomar en estas situaciones?
  • La primera y más urgente cambiar la contraseña de la cuenta de correo.
  • Revisar las versiones del navegador, flash, java, Acrobat Reader, etc y llevar a cabo las actualizaciones necesarias.
  • Actualizar el sistema operativo y las aplicaciones instaladas, prestando especial atención a las relacionadas con la gestión de correos y/ o contactos.
  • Revisar las apps del smartphone en busca de alguna sospechosa haciendo especial hincapié en las relacionas con la gestión de correos y/ o contactos.
  • Hacer uso de algún sistema antivirus/antimalware.
  • Además de las precauciones básicas a la hora de navegar, instalación de aplicaciones, etc, incrementar el nivel de atención a la hora de fiarnos de los correos que recibimos, no sólo del nombre mostrado sino también prestar atención a la dirección desde la que se manda  el correo. En caso de duda eliminarlo y por supuesto no abrir ninguna url que éstos pudieran contener.

Medidas técnicas
 
La seguridad en un servidor de correo es un tema muy interesante y extenso que se escapa del objeto de esta entrada, aunque no descarto dedicarle una en el futuro. En esta entrada sólo daremos "dos pinceladas".
 
Activar Sender Policy Framework (SPF) es un sistema de validación de correos electrónicos basado en la comprobación de que el remitente efectivamente tiene permiso para enviar correos con el dominio desde el que lo hace mediante la verificación de la dirección IP del remitente con un servidor DNS.
La siguiente imagen muestra de forma gráfica como funciona.


Esto permite prevenir el "spoofeado"/ suplantación de los remitentes, ayudando a reducir el correo spam.
Es muy importante configurar bien SPF de lo contrario se puede sufrir problemas con el envío de correos.
 
Por otra parte, podemos querer crear una blacklist para evitar recibir correos desde un dominio, una determinada cuenta de correo a nuestro servidor zimbra.

Creación de blacklist en Zimbra

A continuación se expone como elaborar una blacklist en Zimbra. Por ejemplo si sufrieramos la oleada de correo con el remitente suplantado que sufrió nuestro amigo, mientras que estudiamos como activar SPF, etc y proteger las cuentas de nuestro correo de dichos envíos podríamos empezar por crear una blacklist.
Para crear una balcklist/whitelist en Zimbra, (nosotros nos quedaremos con la blacklist como medida de contención) usaremos un parámetro de de configuración de Amavis llamado read_hash(). Amavis es un filtro de contenido opensource para correo electrónico, y con read_hash() le diremos a Amavis donde debe ir a buscar los ficheros de configuración relacionados con las blacklist/whitelist. EL proceso podríamos definirlo como:
  1. Creamos fichero que contendrá los dominios o correo que formarán parte de la blacklist, con permisos 664 así como propietario y grupo zimbra:zimbra.El fichero lo podemos crear donde queramos, yo recomiendo alguna ubicación relacionada con Zimbra para tenerlo todo "recogidito".Por ejemplo en /opt/zimbra
    1. Supongamos que estamos en /opt/zimbra con vuestro editor de ficheros favoritos vi, nano creamos un fichero que se llame por ejemplo blacklist (imaginación al poder) y dentro pondremos los dominios y/o cuentas de correos de los que queramos evitar recibir correos.
    2. Damos los permisos 664 con #chmod 664 blacklist y establecemos propietario y grupo al fichero #chown zimbra:zimbra blacklist
  2.  El siguiente paso es configurar Amavis con read_hash() para decirle como se llama y donde está el fichero de blacklist que tiene que tener en cuenta, en este ejemplo en /opt/zimbra/blacklist.Para ello tenemos que editar /opt/zimbra/conf/amavisd.conf.in. Justo debajo de la línea que dice #ENVELOPE SENDER SOFT-WHITELISTING/ SOFT-BLACKLISTING añadiremos la siguiente línea read_hash(\%blacklist_sender, '/opt/zimbra/blacklist'); el segundo parámetro alberga la ubicación del fichero blacklist si se ha creado en otra ubicación, habrá que poner ahí dicha ubicación.Guardamos el fichero.
  3.  Con el usuario zimbra, cambiamos a el con #su zimbra reiniciamos Amavis y la mta para ello respectivamente haremos #zmamavisdctl restart#zmmtactl restart
A partir de ahora si hacemos el intento de mandar un correo con esa cuenta y hacemos cat /var/log/mail.log y filtramos con grep el correo/dominio que hayamos incluido en la blacklist, aparecerá como BloquedSPAM.
Sólo decir que si en vez de una blacklist queremos hacer una whitelist es lo mismo, crearemos un fichero whitelist con los mismos permisos,propietario y grupo que el del ejemplo y en amavisd.conf.in pondremos en el mismo sitio que blacklist read_hash(\%whitelist_sender, '/opt/zimbra/whitelist');


Activación SPF
 
Para hacer referencia a SPF y su activación en Zimbra voy a enlazar a una entrada de MFCP blog  http://blog.kvs-solutions.com/?p=940. Ahí aparece descrito superclaro.¿Reinventar la rueda?No, gracias.

Conclusiones

¿Con estas medidas se solucionaría el problema de nuestro amigo?
Se solucionaría sólo el problema relacionado con la recepción de correos enviados en su nombre hacia los contactos de su dominio, para los demás contactos si sus correspondientes servidores de correos no tienen implementados SPF si los recibirán, ya que los envíos pueden seguir sucediéndose exponiédolos a los correos maliciosos.
Entonces,¿las blacklist y SPF sirven para lo mismo? No. Las blacklist "cortarán" la recepción de los correos desde determinados dominios o cuentas de correos concretas pero no implementa mecanismo alguno de comprobación de remitentes.SPF sólo impedirá que se reciban correos desde servidores que no tienen permisos para enviar correos de determinados dominios por desgracia algo muy común, con la consiguiente disminución de correos no deseados.

Espero que os haya resultado útil.
Nos leemeos en la próxima entrada.

Fuentes



Radar COVID

Tras largo tiempo sin publicar una entrada en el Blog, me he animado a escribir acerca de una App que podría llegar a ser muy útil en el con...