Netfilter (IPTables) [ II parte ] - Puesta en Marcha de un Servidor de Proxy Transparente
Monografía creado por Juan Carlos Inostroza. Extraido de: http://www.tux.cl/doku.php?id=articulos:redes:netfilter_iptables_ii_parte
03 de Marzo de 2006
Firewall
5 - Puesta en Marcha de un Servidor de Proxy Transparente
Era demasiada cháchara, así que ahora a lo práctico. :)
Es bastante común que se compartan las conexiones a Internet (una sola conexión para varios clientes). En el artículo anterior, se realizó a través de NAT.
A diferencia de NAT, un Proxy es un puente intermedio, solamente para conexiones HTTP. Es decir, un proxy “habla” en HTTP, que es un protocolo de alto nivel. Se le llama de alto nivel ya que la base del protocolo es en comandos, humanamente entendibles (como GET, por ejemplo). Además, permite tener un respaldo o caché de las páginas más visitadas, reduciendo la cantidad de ancho de banda utilizado para navegar en Web, evitando tráfico innecesario.
Se le llama “transparente” a esta puesta en marcha, ya que los clientes (Linux o Win) no requieren de configuración adicional en los navegadores, siendo transparente la forma de navegar en Internet.
Y lo último, un Proxy permite además crear reglas de control de acceso, para determinar que ver, y en que horarios. Muchas empresas utilizan este método, ya que así determinan que es lo que pueden ver sus trabajadores durante el horario de oficina. La productividad baja un resto cuando se pierde tiempo navegando en páginas pornográficas, por ejemplo. Así, determinar qué ver y cuándo ver, es tarea de un software, en vez de darle este trabajo a los usuarios.
Un navegador de Internet realiza, por lo general, una conexión hacia el puerto 80 (http) hacia un servidor remoto, enviando una petición HTTP, por ejemplo
GET / HTTP/1.0
y el servidor responde con el código de error respectivo y el recurso pedido. La mayoría de las veces el servidor HTTP informa del cierre de la conexión cuando la transacción esté completa.
Aunque la conversación entre navegador y servidor es mucho mas extensa, prefiero enfocarme en lo necesario.
Cuando existe un servidor Proxy de por medio, el navegador hace la petición hacia él, y luego el Proxy realiza la conexión al servidor indicado. (por ejemplo, cuando se configura el Proxy en el navegador).
Ahora, un Proxy transparente “intercepta” una conexión a un servidor remoto, realiza la petición, la entrega al usuario, sin que el navegador ni el usuario se den cuenta de esta intercepción.
Los materiales son exactamente los mismos que el artículo pasado : una máquina con Linux y otras máquinas con Win o Linux.
Se procede exactamente igual, con la salvedad que no se permite FORWARDING.
Algún servidor Proxy debe estar instalado. Recomiendo usar Squid, es un programa común dentro de las distribuciones de Linux.
Suponiendo que Squid esta instalado y corriendo en la máquina Linux (que funcionará de puente entre Internet y la LAN), probar su funcionamiento con alguna otra máquina, conectándose manualmente al Proxy en las opciones del navegador. Por lo general, el puerto de Squid es el 3128. Otros, usan el 8080, dependiendo de la configuración utilizada.
Si funciona, entonces en la máquina Linux de puente:
# iptables -F
para borrar todas las reglas anteriores
Desviar el tráfico desde la interfaz de la LAN que vaya por Web hacia el puerto que está corriendo Squid
# iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 3128
y ya está.
Probar si funciona la conexión a Web, sin configurar manualmente el proxy.
Para permitir el IP Forward de algunas conexiones,
# echo 1 > /proc/sys/net/ipv4/ip_forward
Aunque la puesta en marcha es bastante simple, queda además agregar algo de seguridad a la máquina puente (nunca está demás), junto con agregar algunos puertos necesarios (como el de DNS y HTTPS).
Permitir el trafico desde la LAN
# iptables -A INPUT -i eth1 -j ACCEPT# iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
Para no recibir tráfico innecesario
# iptables -P INPUT DROP
Para aceptar el tráfico desde la LAN
# iptables -A INPUT -i eth1 -j ACCEPT
IMPORTANTE : la interfaz local también es necesaria
# iptables -A INPUT -i lo -j ACCEPT
Para determinar si el paquete es parte de alguna conexión
# iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
Y para enmascarar puertos necesarios
# iptables -t nat -A POSTROUTING -p tcp --dport 53 -j MASQUERADE# iptables -t nat -A POSTROUTING -p tcp --dport 443 -j MASQUERADE# iptables -t nat -A POSTROUTING -p udp --dport 53 -j MASQUERADE# iptables -t nat -A POSTROUTING -p udp --dport 443 -j MASQUERADE
Este tipo de puesta en marcha es de tipo “cerrar, luego permitir”.
Es bastante común que se compartan las conexiones a Internet (una sola conexión para varios clientes). En el artículo anterior, se realizó a través de NAT.
A diferencia de NAT, un Proxy es un puente intermedio, solamente para conexiones HTTP. Es decir, un proxy “habla” en HTTP, que es un protocolo de alto nivel. Se le llama de alto nivel ya que la base del protocolo es en comandos, humanamente entendibles (como GET, por ejemplo). Además, permite tener un respaldo o caché de las páginas más visitadas, reduciendo la cantidad de ancho de banda utilizado para navegar en Web, evitando tráfico innecesario.
Se le llama “transparente” a esta puesta en marcha, ya que los clientes (Linux o Win) no requieren de configuración adicional en los navegadores, siendo transparente la forma de navegar en Internet.
Y lo último, un Proxy permite además crear reglas de control de acceso, para determinar que ver, y en que horarios. Muchas empresas utilizan este método, ya que así determinan que es lo que pueden ver sus trabajadores durante el horario de oficina. La productividad baja un resto cuando se pierde tiempo navegando en páginas pornográficas, por ejemplo. Así, determinar qué ver y cuándo ver, es tarea de un software, en vez de darle este trabajo a los usuarios.
5.1 Como funciona
Un navegador de Internet realiza, por lo general, una conexión hacia el puerto 80 (http) hacia un servidor remoto, enviando una petición HTTP, por ejemplo
GET / HTTP/1.0
y el servidor responde con el código de error respectivo y el recurso pedido. La mayoría de las veces el servidor HTTP informa del cierre de la conexión cuando la transacción esté completa.
Aunque la conversación entre navegador y servidor es mucho mas extensa, prefiero enfocarme en lo necesario.
Cuando existe un servidor Proxy de por medio, el navegador hace la petición hacia él, y luego el Proxy realiza la conexión al servidor indicado. (por ejemplo, cuando se configura el Proxy en el navegador).
Ahora, un Proxy transparente “intercepta” una conexión a un servidor remoto, realiza la petición, la entrega al usuario, sin que el navegador ni el usuario se den cuenta de esta intercepción.
5.2 Materiales
Los materiales son exactamente los mismos que el artículo pasado : una máquina con Linux y otras máquinas con Win o Linux.
Se procede exactamente igual, con la salvedad que no se permite FORWARDING.
Algún servidor Proxy debe estar instalado. Recomiendo usar Squid, es un programa común dentro de las distribuciones de Linux.
5.3 Puesta en Marcha
Suponiendo que Squid esta instalado y corriendo en la máquina Linux (que funcionará de puente entre Internet y la LAN), probar su funcionamiento con alguna otra máquina, conectándose manualmente al Proxy en las opciones del navegador. Por lo general, el puerto de Squid es el 3128. Otros, usan el 8080, dependiendo de la configuración utilizada.
Si funciona, entonces en la máquina Linux de puente:
# iptables -F
para borrar todas las reglas anteriores
Desviar el tráfico desde la interfaz de la LAN que vaya por Web hacia el puerto que está corriendo Squid
# iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 3128
y ya está.
Probar si funciona la conexión a Web, sin configurar manualmente el proxy.
Para permitir el IP Forward de algunas conexiones,
# echo 1 > /proc/sys/net/ipv4/ip_forward
Aunque la puesta en marcha es bastante simple, queda además agregar algo de seguridad a la máquina puente (nunca está demás), junto con agregar algunos puertos necesarios (como el de DNS y HTTPS).
Permitir el trafico desde la LAN
# iptables -A INPUT -i eth1 -j ACCEPT# iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
Para no recibir tráfico innecesario
# iptables -P INPUT DROP
Para aceptar el tráfico desde la LAN
# iptables -A INPUT -i eth1 -j ACCEPT
IMPORTANTE : la interfaz local también es necesaria
# iptables -A INPUT -i lo -j ACCEPT
Para determinar si el paquete es parte de alguna conexión
# iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
Y para enmascarar puertos necesarios
# iptables -t nat -A POSTROUTING -p tcp --dport 53 -j MASQUERADE# iptables -t nat -A POSTROUTING -p tcp --dport 443 -j MASQUERADE# iptables -t nat -A POSTROUTING -p udp --dport 53 -j MASQUERADE# iptables -t nat -A POSTROUTING -p udp --dport 443 -j MASQUERADE
Este tipo de puesta en marcha es de tipo “cerrar, luego permitir”.
Valora este capítulo:
Autor y licencia de 'Netfilter (IPTables) [ II parte ] - Puesta en Marcha de un Servidor de Proxy Transparente'
|
Opiniona sobre 'Netfilter (IPTables) [ II parte ] - Puesta en Marcha de un Servidor de Proxy Transparente' (0)
Tu nombre debe tener tres caracteres como mínimo.
Es necesario que te des de alta con una cuenta de correo válida.
Es necesario que te des de alta con una cuenta de correo válida.
El contenido del título de tu opinión debe tener tres caracteres como mínimo.
Es obligatorio que selecciones una valoración del recurso.
El contenido del comentario de tu opinión debe tener tres caracteres como mínimo.
Opina sobre este monografía |
Wikis relacionados con 'Netfilter (IPTables) [ II parte ] - Puesta en Marcha de un Servidor de Proxy Transparente'
No se han encontrado cursos relacionados con '
Netfilter (IPTables) [ II parte ] - Puesta en Marcha de un Servidor de Proxy Transparente'
