[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Permitir videollamadas con imo en iptables



El Sun, 09 de Aug de 2015, a las 09:24:49AM +0200, Hospital Oftalmológico dijo:

> Estimados,

Hola. Me pilla esto con los ojos enrojecidos y mucho sueño, así que te
cuento un par de cosas de la configuración, aunque eso sí (no tengo ni
idea de como funciona IMO, así que no sé cualés son los puertos que
usa).

En general, no sé de dónde has sacado las reglas, pero hay muchas que
simplemente sobran. Por ejemplo, para qué narices haces esto:

iptables -I POSTROUTING -j MASQUERADE -t nat -s 192.168.1.0/24 -p tcp \
--dport <NUMPERO_DE_PUERTO> -o eth0

con unos cuantos puertos, si al final haces esto:

iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE

Me da la sensación que estas usando un proxy web, porque el tráfico a
los puertos 80,443 lo rediriges al puerto 3128 del servidor. Pero está
mal hecho, porque el tráfico llega a ese puerto, pero la vuelta no está
solucionada. De hecho, no tienes permitido el regreso de ningún tráfico.
Además tampoco está solucionada la conexión de squid con los
servidores web externos.

Tienes reglas que, directamente no tienen sentido como estas:

iptables -A INPUT -d 64.13.128.0/18 -j ACCEPT

O las que permiten el paso al puerto 3128 por la cadena FORWARD.

Tampoco hay ninguna regla que permita resolver nombres.

Total que no hay por dónde pillar esa configuración. Te voy a dejar unas
para que las tomes como base y luego las ajustas como te convegan  Yo
supongo que lo que quieres es dejar paso al tráfico hacia los puertos
5004, 5060 y 5062; y permitir la navegación con squid. Supongo que eth0
es la interfaz externa y eth1 la interna:

#v+
ptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

# [1] Conexiones de loopback aceptadas
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

# [2] Aceptamos conexiones a los puertos 5004, 5060 y 5062
iptables -A FORWARD -i eth1 -o eth0 -p tcp -m multiport \
iptables -A FORWARD -i eth1 -o eth0 -p udp -m multiport \
 --dport 5004,5060,5062 -j ACCEPT

# [3] Admitimos algunos protocolos (SMTP y POP3)
iptables -A FORWARD -i eth1 -o eth0 -p tcp --dport smtp -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -p tcp --dport pop3 -j ACCEPT

# [4] Redirección SQUID (modo transparente)
iptables -A PREROUTING -i eth1 -p tcp -m multiport --dport http,https \
 --redirect 3128

# [5] Permitimos las comonicaciones de SQUID con el exterior
iptables -A OUTPUT -o eth0 -p tcp -m multiport --dport http,https \
 -j ACCEPT

# [6] Permitimos el tráfico DNS con el exterior al servidor:
iptables -A OUTPUT -o eth0 -p udp --dport domain -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --dport domain -j ACCEPT

# [7] Y el tráfico a los clientes con nuestro servidor DNS:
iptables -A INPUT -i eth1 -p udp --dport domain -j ACCEPT
iptables -A INPUT -i eth1 -p tcp --dport domain -j ACCEPT

# [8] Enmascaramos a la salida de eth0
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

# [9] Permitimos las vueltas del tráfico permitido:
iptables -A INPUT -m conntrack --ctstate DNAT,ESTABLISHED,RELATED \
 -j ACCEPT
iptables -A OUTPUT -m conntrack --ctstate ESTABLISHED,RELATED  -j ACCEPT
iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED  -j ACCEPT
#v-

QUizás haya algún gazapo. No he probado nada y estoy cansado, y además
no sé muy bién qué es lo que quieres.

Por supuesto, debes aceptar paquetes que no son para el propio servidor,
pero es mejor que lo hagas cambiando /etc/sysctl.conf, que es un cambio
persistente y no poniendo el 1, cada vezs que ejecutas el script.

No he añadido la lista blanca de MACs que pueden navegar, pero puedes
hacerlo cambiando la regla 4 y haciendo que sólo sufra SNAT el tráfico
procedente de máquinas con esas MACs.

No sé si tu intención es que sólo se pueda navegar hacia el sitio de
IMO. Si así fuera, tendrías que modificar [5] para que no fuera tan
permisiva (permite alcanzar cualquier distino). O, quizás mejor, hacer
que sea squid el que haga ese trabajo.

También tienes que tener en cuenta que SQUID debe estar bien configurado
para que te funcione la cosa. A lo mejor deberías prescindir de él, para
lo cual habría que sustituir la regla [4] por esta:

ptables -A FORWARD -i eth1 -o eth0 -p tcp --dport http,https -j ACCEPT

Y cuando, te funcione sin proxy web intentar meterlo en la ecuación.

Un saludo.

-- 
   El amor es como los columpios, porque casi siempre empieza
siendo diversión y casi siempre acaba dando náuseas.
                  --- Enrique Jardiel Poncela ---


Reply to: