Servidor de correo – Configuración IPTABLES y carga al inicio (parte 2)

Esta es una entrada dentro de la serie para la instalación de un servidor de correo completo. Índice completo de contenidos pincha aquí.


Lo primero que vamos a hacer es configurar el Firewall con IPTABLES para permitir los puertos necesarios para ir instalando y probando el servicio. También vamos a agregar esta configuración al inicio del sistema, para que ante un reinicio no tengamos que volver a configurar estos filtros. Estas configuraciones se realizarán en tráfico entrante, quedando el tráfico saliente abierto hacia Internet.

El servicio POP/IMAP lo vamos a configurar para que Dovecot haga únicamente uso de los puertos seguros, 993 y 995, en lugar de los no seguros, 110 y 143. Para ello haremos uso de certificados digitales SSL, como veremos más adelante. Esto debemos de tenerlo en cuenta para abrir los puertos correspondientes para el servicio de lectura de los buzones.

Además abriremos otros puertos adicionales para el sistema de monitorización, instalación de paquetes, servidor web y SIEVE.

Las conexiones al resto de puertos serán rechazados en tráfico entrante.


Listado de puertos

  • 22
  • 25
  • 465
  • 587
  • 993
  • 995
  • 80
  • 443
  • 4190
  • 62812

Comandos

Comandos utilizados, ojo en las reglas para el puerto SSH 22 y Monit 62812, cambia las cadenas X.X.X.X por la IP origen desde la que te conectarás al puerto SSH y accederás al sistema de monitorización y administración del servicor, nunca deben de estar expuestos a todo Internet:

iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 22 -s X.X.X.X -j ACCEPT # Recomendado cambiar el puerto SSH.
iptables -A INPUT   -p tcp -m tcp --dport 25 -j ACCEPT
iptables -A INPUT   -p tcp -m tcp --dport 465 -j ACCEPT
iptables -A INPUT   -p tcp -m tcp --dport 587 -j ACCEPT
iptables -A INPUT   -p tcp -m tcp --dport 995 -j ACCEPT
iptables -A INPUT   -p tcp -m tcp --dport 993 -j ACCEPT
iptables -A INPUT  -p tcp -m tcp --dport 80 -j ACCEPT
iptables -A INPUT  -p tcp -m tcp --dport 443 -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # Para evitar problemas con la instalación de paquetes
iptables -A INPUT -p tcp --dport 4190 -j ACCEPT # SIEVE
iptables -A INPUT  -p tcp -m tcp --dport 62812 -s X.X.X.X   -j ACCEPT # Cambia la cadena X.X.X.X por la IP desde la que te conectarás al sistema de monitorización y administración del servidor.
iptables -P INPUT DROP # Conexiones al resto de puertos recahzadas

Si ejecutamos el comando iptables -L -n -v veremos todas estas reglas cargadas en el Firewall:

Chain INPUT (policy DROP 27381 packets, 1390K bytes)
 pkts bytes target     prot opt in     out     source               destination
 470K   69M ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0
 1817  114K ACCEPT     tcp  --  *      *       X.X.X.X/32            0.0.0.0/0            tcp dpt:22
39174 2588K ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:25
30338 1289K ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:465
29615 1201K ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:587
29273 1190K ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:995
 102K 8478K ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:993
53547 3495K ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:80
49335 3176K ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:443
80903  103M ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
    7   328 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:4190
   10   600 ACCEPT     tcp  --  *      *       X.X.X.X/32         0.0.0.0/0            tcp dpt:62812

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 118K packets, 22M bytes)
 pkts bytes target     prot opt in     out     source               destination

Cargar reglas al inicio

Ahora configuramos las reglas para que se carguen al inicio del sistema. Ejecutamos los siguientes comandos:

iptables-save > /etc/iptables.up.rules

touch /etc/network/if-pre-up.d/iptables

chmod +x /etc/network/if-pre-up.d/iptables

echo '#!/bin/sh' >> /etc/network/if-pre-up.d/iptables

echo '/sbin/iptables-restore < /etc/iptables.up.rules' >> /etc/network/if-pre-up.d/iptables

Reiniciamos el sistema y comprobamos que las reglas están cargadas ejecutando el comando iptables -L -n -v, de lo contrario sería necesario revisar el motivo del fallo.


Índice general pincha aquí.