Aumente la seguridad del servidor de correo electrónico contra la piratería utilizando una VPN en CentOS/RHEL
16:56, 11.12.2023
Proteger el servidor de correo electrónico con una VPN
Este artículo será útil para todos los usuarios que quieren servidores de correo electrónico altamente protegidos de los ataques en línea. Aquí aprenderá sobre todos los trucos y recomendaciones posibles para VPNs autoalojadas. El problema con los spammers es realmente enorme, están atacando los servidores de correo electrónico de forma regular. Una vez que alcanzan su objetivo y tienen acceso al servidor que necesitan, roban información o envían grandes volúmenes de spam. Mediante el uso de una VPN autoalojada, puede disminuir drásticamente las posibilidades de tales spammers y obtener un entorno más seguro.
Si está leyendo este artículo, es probable que tenga un servidor de correo electrónico y haya configurado un servidor VPN. Si no, sigue un par de tutoriales e instala lo que necesite. Hay 2 variantes, el servidor VPN puede funcionar en el mismo servidor que el correo, o en un host separado.
Una variante mejor será hacer funcionar el correo y la VPN como 2 servidores separados, lo que disminuirá drásticamente las complejidades operativas. Al hacerlo en el mismo servidor, será necesario configurar una zona de política de respuesta.
Bloqueo de puertos
Cuando haya configurado todo lo relativo al funcionamiento de los servidores de correo y VPN y haya comprobado que el sistema funciona correctamente, puede pasar al siguiente paso. Es muy recomendable añadir la IP del servidor VPN a la lista blanca del cortafuegos. Esto se puede hacer fácilmente con un pequeño cambio en CentOS o RHEL, basta con sustituir12.34.56.78 a la IP del servidor. Recargue Firewalld y el proceso se habrá completado.
Ahora puede empezar a cerrar los puertos. Necesitará cerrar los puertos POP3, Sumisión e IMAP. Nadie quiere ninguna actividad extraña en el servidor, así que es mejor cerrar puertos como 995, 587, 110, 465, 993, y 143 en el cortafuegos. Debido al paso anterior de la lista blanca de IP, sólo aquellos que están realmente conectados al servidor VPN pueden acceder a esos puertos.
No descuide el hecho de que el puerto 25 debe dejarse para poder seguir recibiendo correos electrónicos de los servidores SMPT.
Para eliminar estos puertos en RHEL y CentOS, utilice los siguientes comandos:
sudo firewall-cmd --permanent --remove-service={smtp-submission,smtps,imap,imaps,pop3,pop3s}
sudo firewall-cmd --permanent --remove-port={587/tcp,465/tcp,143/tcp,993/tcp,110/tcp,995/tcp}
Puede haber una advertencia después de estos comandos, pero no necesita molestarse. Simplemente recargue Firewalld, con la línea:
sudo systemctl reload firewalld
Protección del panel de administración y del Webmail
El correo web y el panel de administración también pueden protegerse simplemente bloqueando los puertos 443 y 80. Sin embargo, esto provocará otro problema - no habrá acceso público a los hosts virtuales. Muchos clientes prefieren hosts virtuales por ejemplo en Nginx y eso necesita estar abierto. Una forma de salir de esta situación será el despliegue de una función de control de acceso para Nginx o Apache.
Seguridad de Nginx
Para un mayor nivel de seguridad, hay un par de pasos importantes. Comience con el siguiente archivo:
sudo nano /etc/nginx/conf.d/mail.your-domain.com.conf
Aquí necesitará editar el archivo de host virtual para el correo. La siguiente línea denegará todas las IPs excepto la que hayas especificado:
allow 12.43.23.45;
deny all;
En caso de que estés utilizando un par de servidores VPN, eso no es un problema. Puede añadir tantas IPs como necesite, luego guarde los cambios y cierre el archivo. Prueba la configuración y si funciona bien entonces recarga Nginx. Cuando hayas completado todo el procedimiento, los usuarios que no estén en la lista blanca serán notificados de que algo va mal con un error 403.
Seguridad de Apache
Al igual que con Nginx, el proceso aquí también comienza con el webmail en el directorio /etc/httpd/conf.d/. Usted necesitará encontrar:
sudo nano /etc/httpd/conf.d/mail.your-domain.com-le-ssl.conf
Necesitará rellenar la IP necesaria entre las siguientes etiquetas - <VirtualHost>...</VirtualHost>. Rellenando la dirección IP necesaria, todos los demás accesos serán denegados.
Require ip 12.45.54.11
También se pueden añadir un par de IPs en este archivo y esta línea se verá así:
Require ip 45.34.11.78 15.45.23.69
A continuación, deje las ediciones tal y como las ha modificado y cierre este archivo. Después prueba la configuración de Apache y vuelve a cargarla. Aquellos usuarios que no estén incluidos en la lista blanca serán notificados de ello con el error 403.
Deshabilitar DNS sobre HTTPS en su navegador web
En caso de que los servidores de correo y VPN estén en un mismo host, es aconsejable desactivar DNS vía HTTPS en el navegador.
- En caso de que la máquina esté conectada al servidor VPN, entonces el tráfico DNS está encriptado y no se necesita la función DNS sobre HTTPS.
- Si se activa DNS sobre HTTPS en el navegador, entonces se utiliza DNS de terceros. Al mismo tiempo, su DNS resolver personal no se utiliza y usted no tendrá acceso a webmail y el panel de administración.
En los distintos navegadores, este tipo de configuración puede llamarse de forma diferente. Por ejemplo, los usuarios de Firefox deben buscar los ajustes de red. Los clientes de Chrome encontrarán estos ajustes en Privacidad y Seguridad. Una vez desactivado, necesita cerrar el navegador y esperar un poco. Después de ese procedimiento, lo más probable es que recuperes el acceso. En caso de que siga sin funcionar, puede que sea necesario borrar la caché del navegador.
Renovación de los certificados TLS de Certbot
En caso de que haya habilitado la lista blanca en Nginx o Apache, en tal situación también bloqueará los servidores Let's Encrypt para conectarse al servidor. Se necesita para la renovación del certificado TLS con el desafío HTTP-01. Este problema se puede solucionar deshabilitando la lista blanca antes de la renovación del certificado y habilitándola justo después de la renovación.
Comience con la creación del script de shell en el directorio /root/.
sudo nano /root/certbot-renewal.sh
En caso de que esté aplicando Nginx, las siguientes líneas deben añadirse al archivo.
sed -i 's/deny all;/#deny all;/g' /etc/nginx/conf.d/mail.required-domain.com.conf
systemctl reload nginx
certbot renew --quiet
sed -i 's/#deny all;/deny all;/g' /etc/nginx/conf.d/mail.required-domain.com.conf
systemctl reload nginx
En caso de que esté aplicando Apache, deberá añadir las siguientes líneas.
sed -i 's/Require ip/#Require ip/g' /etc/httpd/conf.d/mail.required-domain.com-le-ssl.conf
systemctl reload apache2
certbot renew --quiet
sed -i 's/#Require ip/Require ip/g' /etc/httpd/conf.d/mail.required-domain.com-le-ssl.conf
systemctl reload apache2
Guarde los cambios y cierre este archivo. Después añada permiso de ejecución y edite el archivo crontab del usuario root. Configure todo de tal manera que el script de shell se ejecute una vez al día, y cierre el archivo con los cambios realizados.
Consideración de la seguridad de puertos SSH
Una vez que haya completado el proceso de la lista blanca de IP, el bloqueo de los puertos es realmente importante por razones de seguridad. Al igual que con todos los puertos cerrados, también puede considerar el bloqueo del puerto SSH en el cortafuegos. Sin embargo, este proceso puede conllevar algunos riesgos adicionales. En caso de emergencia cuando el servidor no está funcionando, entonces es posible bloquearlo completamente. Por eso, es mejor pensar en la protección adecuada de SSH. La mejor variante posible aquí será configurar la autenticación de dos factores o la autenticación de la clave pública.
Resumen
La seguridad del servidor de correo electrónico es realmente importante y debe planificarse y organizarse estratégicamente. Todos los pasos que hemos discutido en el artículo, seguramente ayudarán a mejorar el nivel de seguridad y minimizar los riesgos de ataques de spammers. Las medidas de seguridad portuarias o el bloqueo completo de los puertos deben considerarse como un buen método contra los inicios de sesión indeseables. Además, proteger el panel de administración y el webmail también es un buen método que todos los usuarios deberían aplicar.