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

Filtrando mediante IPtables



(me habia equivocado de direccion, hago forward,
espero que llegue en condiciones y no os hagais un lio
con los quotes O:-)

Besos :-*

Deb

> Hola Chrisoph!
> 
> Ante todo muchas gracias por tu detallada respuesta,
> paso a contestar tu mail :-)
> 
> --- Christoph Simon <ciccio@kiosknet.com.br> wrote:
> 
> > > He montado para una asociacion de mi universidad
> > un
> > > servidor (acceso mediante SSH, con HTTP, SMTP y
> > POP3,
> > > de momento) en Debian. Para protegerlo lo maximo
> > > posible le he instalado el IPtables con el
> > siguiente
> > > filtrado:
> > > 
> > > ---CUT---
> > No consigo entender completamente la lógica que
> > dicta el orden de los
> > comandos.
> > Aqui estamos en POST-ROUTING, lo último que pasa
> en
> > el procesamiento
> > de los packets:
> > > iptables -t nat -A POSTROUTING -o lo -j SNAT
> > --to-source MI_IP
> > Hasta aqui TODOS van a poder salir a la Internet
> > enmasquerado con tu
> > IP... Al menos que insertas alguna regla al
> > principio o en otra
> > cadena, todos se alegrarán de poder usar el
> gnutella
> > o morpheus...
> 
> En principio el firewall no tiene usuarios
> "internos",
> todo se realiza desde fuera. Por tanto no tengo
> usuarios que puedan utilizar Gnutella o Morpheus...
> 
> No se si te referias a esto... De todas maneras,
> ¿esto
> lo pondrias en otro sitio? ¿Reordenarias las cadenas
> de otra manera? ¿Lo pongo al final de todo?
> 
> > Continuamos en la tabla filter, en su cadena
> > FORWARD.
> > > iptables -A FORWARD -p tcp ! --syn -m state
> > --state NEW \
> > >	-j LOG --log-prefix "New not syn:"
> > Estás usando -A (append) en todos los demás. Si no
> > me engaño, vas a
> > escribir este mensaje para TODOS los packets; como
> > esto es un
> > firewall, preasumo que tienes poco tráfico que
> > origina en él mismo. Si
> > tienes mucho tráfico de pasada, imagino que te vas
> a
> > hinchar el
> > /var/log/kern.log
> 
> Exactamente, el trafico originado en el firewall es
> minimo, del firewall no cuelga ningun ordenador y
> este
> no tiene ningun usuario "interno".
> 
> > > iptables -A FORWARD -p tcp ! --syn -m state
> > --state NEW -j DROP
> > No consigo ver el objetivo de esto. ¡Estás
> > descartando todos los
> > packets que no sean el primero! ¿Estás segura que
> > esto te funciona?
> > [*]
> 
> Respondiendo tamnbien al [*], Ok, quitare entonces
> esto mejor... O:-)
> 
> > > iptables -A FORWARD -i eth0 -j ACCEPT
> > Esta regla va a acceptar todos los PRIMEROS
> packets
> > que vienen de
> > eth0 (supongo que la tarjeta para la red interna);
> > como ya descartaste
> > los packets que vendrán a continuación, no
> llegarán
> > a ser evaluados
> > por esta regla. Recuerda que nat-prerouting viene
> > antes.
> 
> eth0 es la tarjeta de red que conecta el ordenador
> con
> Internet (y es unica, el firewall no hace de proxy a
> una red interna).
> 
> Al comentario: Ok :-)
> 
> > > iptables -A FORWARD -m state --state
> > ESTABLISHED,RELATED -j ACCEPT 
> > Esta es la regla que deberias haber puesto antes.
> Si
> > no me equivoco,
> > todos los packets que son NEW no son ESTABLISHED o
> > RELATED y vice
> > versa (con alguna excepción por ejemplo con el
> FTP).
> > Como descartaste
> > todos los que no sean NEW, nunca habrá packet que
> va
> > a llegar a esta
> > regla.
> 
> Ok O:-) Importante error :-D Ahora lo cambio :-)
> ¡¡¡Gracias!!! :-*
> 
> > > iptables -A FORWARD -m limit --limit 3/minute
> > --limit-burst 3 \
> > 	-j LOG --log-level DEBUG --log-prefix "IPT >
> FORWARD
> > packet died: "
> > Limitar el log es buena idea, sólo que llega
> tarde.
> > El target LOG ya
> > lo ha encontrado antes, y los que no sean NEW ya
> los
> > descartaste.
> 
> jejeje, otro pequeño error O:-)
> 
> > > iptables -P INPUT DROP
> > > iptables -P OUTPUT DROP
> > > iptables -P FORWARD DROP
> > > iptables -N icmp_packets
> > > iptables -N tcp_packets
> > > iptables -N udpincoming_packets
> > > iptables -N allowed
> > > iptables -A allowed -p TCP --syn -j ACCEPT
> > Esto esencialmente es lo mismo que NEW (creo)
> 
> Ok.
> 
> > > iptables -A allowed -p TCP -m state --state
> > ESTABLISHED,RELATED -j ACCEPT
> > Esto ya lo comprobaste para la cadena FORWARD de
> la
> > table
> > filter. ¿Porque no lo definista antes y saltas a
> > "allowed" ya ahi?
> 
> Pues ni idea, me lo mirare mejor, con tus
> comentarios
> he visto un poco mas la luz O:-)
> 
> > > iptables -A allowed -p TCP -j DROP
> > Creo que no es posible que llegues a esta regla.
> > Todos los que sean
> > SYN (NEW) plus todos los que sean
> > ESTABLISHED,RELATED (!NEW), son 100%
> > de los packets. ¿En que caso entonces puede tocar
> > esta?
> 
> Parece ser que en pocos O:-) Intentare mejorar las
> cadenas a partir de tu comentario :-)
> 
> > Toda esta tabla hace esencialmente lo mismo que un
> > -j ACCEPT.
> > > iptables -A icmp_packets -p ICMP -s 0/0
> > --icmp-type 0 -j ACCEPT
> > > iptables -A icmp_packets -p ICMP -s 0/0
> > --icmp-type 3 -j ACCEPT
> > > iptables -A icmp_packets -p ICMP -s 0/0
> > --icmp-type 5 -j ACCEPT
> > > iptables -A icmp_packets -p ICMP -s 0/0
> > --icmp-type 11 -j ACCEPT
> > Creo que deberias permitir todos los tipos de
> ICMP;
> > hay algunos
> > mensajes mas o menos esotéricas (por ejemplo los
> que
> > pueden ser
> > generados en un ruta multipath cuando una línea
> > cae). Si no quieres
> > responder a los pings, puedes prohibir ellos
> > explicitamente (o
> > permitirlos sólo desde algún IP conocido).
> 
> Ok. Pero, (para los ICMP), si el ordenador no tiene
> usuarios, ¿vale la pena que abra mas tipos ICMP?
> 
> > > iptables -A tcp_packets -p TCP -s IP_PERMITIDA
> > --dport 22 -j allowed
> > > iptables -A tcp_packets -p TCP -s
> > OTRA_IP_PERMITIDA --dport 22 -j allowed
> > Aqui puede ser conveniente especificar también la
> > interfaz de entrada
> > para dificultar el IP spoofing.
> 
> ¡ajá! Ahora lo pongo, gracias :-*
> 
> > > iptables -A tcp_packets -p TCP -s X.Y.0.0/16
> > --dport 25 -j allowed
> > OK. Sólo los de la univseridad pueden mandarte un
> > mensaje. Aunque
> > dependerá donde llamas a esta tabla.
> 
> Aqui tengo un problema. En el servidor tengo
> instalado
> el Mailman (el servidor de listas). Hoy he
> descubierto
> que con esta configuracion del firewall (ya que
> antes,
> cuando no tenia el firewall, creo que no pasaba)
> solo
> llegan a las listas los mails enviados desde la
> universidad. Todo lo que se origina fuera no llega.
> ¿Tiene algo que ver con esta restriccion? ¿O es
> problema de la configuracion del Postfix?
> 
> Si es problema de esta restriccion, ¿como hago para
> que el SMTP solo se pueda utilizar desde dentro de
> la
> universidad pero el Mailman pueda recibir (y
> reenviar)
> mails enviados desde fuera?
> 
> > > iptables -A tcp_packets -p TCP -s 0/0 --dport 80
> > -j allowed
> > > iptables -A tcp_packets -p TCP -s 0/0 --dport
> 110
> > -j allowed
> > > iptables -A udpincoming_packets -p UDP -s 0/0
> > --source-port 53 -j ACCEPT
> > > iptables -A udpincoming_packets -p UDP -s 0/0
> > --source-port 2074 -j ACCEPT
> > Si tienes un DNS corriendo, también necesitarás el
> > 53 en tcp. No
> > conozco el 2074.
> 
> No tengo DNS, asi que lo quito :-)
> 
> El 2074 ni idea ahora mismo, seguramente me lo copie
> del IPtables HOWTO.
> 
> > > iptables -t nat -A PREROUTING -i eth0 -s
> > 192.168.0.0/16 -j DROP
> > > iptables -t nat -A PREROUTING -i eth0 -s
> > 10.0.0.0/8 -j DROP
> > > iptables -t nat -A PREROUTING -i eth0 -s
> > 172.16.0.0/12 -j DROP
> > Antes has escrito:
> > 	iptables -A FORWARD -i eth0 -j ACCEPT
> > Con estas reglas invalidas la anterior, porque la
> > cadena PREROUTING es
> > lo primero que se toca (DROP) y la cadena FORWARD
> de
> > la tabla filter
> > ni va a ver este packet. Aqui estoy asumiendo otra
> > vez que eth0 sea la
> > interface interna. Hm. Será que eth0 es la
> externa?
> > Si es la externa
> > la regla anterior permititía el forward de
> cualquier
> > cosa a la red
> > interna. No te estoy siguiendo.
> 
> eth0 es la conexion que tiene el ordenador con
> Internet, no hay otra interfaz.
> 
> Entonces la cadena anterior sobra, ¿no?
> 
> > [...]
> 
> > > ---CUT---
> > > 
> > > Notas:
> > > MI_IP es la IP del servidor.
> > > X.Y.0.0/16 esta para que desde cualquier
> ordenador
> > > de
> > > la universidad se puedan enviar mails mediante
> el
> > > SMTP
> > > de mi servidor.
> > > IP_PERMITIDA es la IP del ordenador desde el que
> > > quiero que se pueda acceder mediante SSH.
> > Se te escapó decir que es eth0.
> 
> Es la ethernet que conecta al servidor con Internet,
> es la unica ethernet del ordenador. No hay ninguna
> red
> interna detras del firewall.
> 
> > > Las cadenas estas os sonaran pq me las he
> copiado
> del
> > > IPtables HOWTO, adaptandolas a mis necesidades.
> 
> > Pues no me suenan, y mi firewall es bien
> diferente.
> > ¿Este te funciona?
> 
> Funciona con los problemas ya comentados:
> 
> 1. No responde a los pings
> 2. Cuando hago un scaneado de puertos desde fuera no
> muestra los puertos abiertos
> 3. Los mails enviados desde fuera de las IPs de la
> universidad a listas gestionadas por el Mailman no
> llegan.
> 
> > > _Que os parece este filtrado? Parece estar
> bastante
> > > bien, _no? Se lo he ense_ado a un par de amigos
> que
> > > dominan el tema minimamente y me han dicho que
> no
> > > parece tener ningun fallo descomunal...
> 
> > Bueno, la última palabra la tiene la práctica. Si
> >
> funciona lo que debe 
> > y
> > si no funciona lo que no debe, el filtrado es >
> perfecto.
> 
> Bueno, no acaba de funcionar del todo por lo que
> parece...
> 
> > > El "problema" es el que el servidor no se deja
> ni
> > > pingear ni scannear (un scanner de puertos desde
> >
> > fuera
> > > me devuelve que no hay ninguno abierto). _Esto
> es
> > > seguridad o *paranoia*? O:-)
> 
> > No. Esto es un error. Ya se que con los iptables
> se
> > ha puesto de moda
> > filtrar los pings. Primero no te ayuda, porque >
> entonces usarán el
> > traceroute (hay diferentes versiones, algunos usan
> >
> UDP), y segundo
> > estás violando los estándars RFC. Por otra parte,
> si
> > quieres cojer tu
> > correo, no se como lo vas a hacer si el puerto 110
> >
> está filtrado (si
> > todos están filtrados, también el 110, ¿verdad?) Y
> lo > mismo con el
> > puerto 80, que no te va a incrementar mucho el >
> contador de visitas en
> > tu página web. He marcado un comentario arriba con
> >
> [*], porque creo
> > que es la explicación porque el scanner de puertos
> no > encuentra nada.
> 
> Bueno, a ver si mis comentarios en este mail ayudan
> un
> poco mas :-)
> 
> ¡¡¡Muchas gracias por la respuesta Christoph!!!
> 
> Besos :-*
> 
> Deb
> 
> __________________________________________________
> Do You Yahoo!?
> Send your FREE holiday greetings online!
> http://greetings.yahoo.com


__________________________________________________
Do You Yahoo!?
Send your FREE holiday greetings online!
http://greetings.yahoo.com



Reply to: