Tengo una máquina CentOS ejecutando exim, estoy intentando restringir los correos electrónicos salientes solo a un dominio (digamos dominio.com) y bloquear los correos a todos los demás dominios. Agregué reglas específicas para permitir correos salientes a dominio.com (números de línea 6, 7 y 8) y la acción predeterminada para la cadena de salida es bloquear. Pero aún así se envían correos a Gmail, Yahoo y otros dominios. ¿Qué hay de malo en mis reglas de iptables?
A continuación se detallan las reglas de salida.
root@host1 [/tmp/logd]# /sbin/iptables -L OUTPUT -n --line-number -v
Chain OUTPUT (policy DROP 0 packets, 0 bytes)
num pkts bytes target prot opt in out source destination
1 0 0 ACCEPT tcp -- * * 0.0.0.0/0 192.x.x.x /* test */
2 3455 420K ACCEPT tcp -- * * 0.0.0.0/0 23.x.x.x tcp dpt:443
3 0 0 ACCEPT tcp -- * * 0.0.0.0/0 104.x.x.x tcp dpt:80
4 0 0 ACCEPT tcp -- * * 0.0.0.0/0 104.x.x.x tcp dpt:80
5 0 0 ACCEPT tcp -- * * 0.0.0.0/0 104.20.5.21 tcp dpt:80 /* www.spamhaus.org */
6 0 0 ACCEPT tcp -- * * 0.0.0.0/0 216.x.x.x tcp dpt:25 /* allow mails to domain.com */
7 69 16484 ACCEPT tcp -- * * 0.0.0.0/0 216.x.x.x tcp dpt:25 /* allow mails to domain.com */
8 68 10803 ACCEPT tcp -- * * 0.0.0.0/0 173.x.x.x tcp dpt:25 /* allow mails to domain.com */
9 800K 826M LOCALOUTPUT all -- * !lo 0.0.0.0/0 0.0.0.0/0
10 0 0 ACCEPT tcp -- * !lo 0.0.0.0/0 0.0.0.0/0 tcp dpt:53
11 0 0 ACCEPT udp -- * !lo 0.0.0.0/0 0.0.0.0/0 udp dpt:53
12 9 536 ACCEPT tcp -- * !lo 0.0.0.0/0 0.0.0.0/0 tcp spt:53
13 2147 313K ACCEPT udp -- * !lo 0.0.0.0/0 0.0.0.0/0 udp spt:53
14 11324 17M ACCEPT all -- * lo 0.0.0.0/0 0.0.0.0/0
15 797K 826M INVALID tcp -- * !lo 0.0.0.0/0 0.0.0.0/0
16 797K 826M ACCEPT all -- * !lo 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
17 0 0 ACCEPT icmp -- * !lo 0.0.0.0/0 0.0.0.0/0 icmp type 0
18 0 0 ACCEPT icmp -- * !lo 0.0.0.0/0 0.0.0.0/0 icmp type 8
29 0 0 ACCEPT icmp -- * !lo 0.0.0.0/0 0.0.0.0/0 icmp type 11
20 0 0 ACCEPT icmp -- * !lo 0.0.0.0/0 0.0.0.0/0 icmp type 3
21 372 25376 LOGDROPOUT all -- * !lo 0.0.0.0/0 0.0.0.0/0
Respuesta1
No sé si también tienes IPv6 en esta caja. Si es así, exim intentará enviar a través de IPv6 de forma predeterminada, antes de volver a recurrir a IPv4. Pero creo que el problema aquí no es iptables per se, sino la forma en que se manejan y buscan esos dominios. Es casi imposible filtrar según la dirección IP, ya que las empresas más grandes tienen varios trucos de enrutamiento y BGP para reducir la latencia y cómo se enruta el tráfico a sus dominios.
En su lugar, le sugeriría que configure exim4 para enviar solo correos electrónicos a sus dominios salientes permitidos y luego pasar a cualquier otra cosa, tal vez con algo como esto:Bloquear correos salientes a algunos usuarios en exim
Respuesta2
Creo que tu idea general de cómo hacer esto es incorrecta. Estos temas suelen llenar libros, pero intentaré explicarlos brevemente:
Probablemente asuma que el servidor de correo domain.com
tiene la misma dirección IP que domain.com
él. Si bien esto accidentalmente podría ser cierto en algunos (o incluso en muchos) casos, no es cierto en general.
Más bien, hay entradas en los registros DNS de un dominio que determinan qué servidor (dirección IP) maneja el correo del dominio. Es posible que ya hayas visto registros DNS como este:
domain.com. 1H MX 50 mail.domain.com
domain.com. 1H IN A 2.3.4.5
mail.domain.com 1H IN A 1.2.3.4
Esto significa que el servidor de correo (por ejemplo mail.domain.com
, ) domain.com
podría estar en una dirección IP diferente a domain.com
la suya.
Ahora, si envía un correo electrónico desde su programa de software de correo electrónico (también llamado MUA - agente de usuario de correo), el MUA entrega el mensaje a Exim. Cuando Exim intenta transmitir el mensaje al destinatario, primero busca el servidor de correo que manejará el correo para el dominio del destinatario y luego intenta conectarse a ese servidor y entregar el mensaje allí.
Esto significa quetu método incluso podría impedirte enviarcualquiercorreo electrónico.Supongamos domain.com
que se resuelve en 1.1.1.1
, pero el servidor de correo de domain.com
está en (o se resuelve) en 2.2.2.2
. Dado que su firewall permite pasar tráfico solo a 1.1.1.1
, no puede enviar ningún correo electrónico ni siquiera a domain.com
, porque el correo electrónico a domain.com
tendría que entregarse a 2.2.2.2
.
Esta es sólo una de varias razones por las que no debería utilizar el firewall para lograr su objetivo. Como dijo @Fredrik Lundhag, deberías configurar Exim en consecuencia.