[l-ubuntu-ve] Problema iptables

eleazaruzcategui en gmail.com eleazaruzcategui en gmail.com
Lun Feb 15 17:31:23 GMT 2010


Lee bien todo esto para encuentres tu solución 

¿Como funciona la salida a internet en el IES? Cuando un cliente arranca, obtiene su dirección IP por medio del protocolo DHCP. Es el servidor el que le asigna esa dirección (el programa será dhcpd o dnsmasq, segun lo que tengamos instalado). A la vez que la IP, se obtiene la ruta por defecto y el servidor DNS al que se debe preguntar. Como ruta por defecto se fija la dirección del sevidor del centro. De este modo, todas las conexiones hacia Internet deben pasar por el servidor. El servidor actua de "proxy transparente". Esto se llama asi porque no son los clientes los que deben indicar que quieren usar un proxy, sino que se hace automaticamente mediante redirección de puertos: Cuando un paquete pasa por el servidor con puerto de destino 80, este se intercepta y se redirige al puerto local del squid, para que sea procesado por éste. Esta redirección se hace en el fichero /etc/init.d/proxy, con esta regla:  iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128 Tal y como estas hay otras en ese fichero que redirigen el ftp (21) y el https (443). Sin embargo, parece que squid no esta bien configurado para tratar esos protocolos, por lo que deberias eliminar esas reglas, asi: Comenta las lineas en el fichero proxy. Ejecuta las lineas que quieras eliminar, cambiando la -A (de append) por -D (de delete). Puede que debas ejecutar la linea varias veces hasta que te diga "Bad Rule". Por ej, para que funcione https:  iptables -t nat -D PREROUTING -i eth0 -p tcp --dport 443 -j REDIRECT --to-port 3128 Recordad que proxy no es un script de start y stop, sino que se ejecuta siempre que lo ejecuteis.  [editar]¿Como utilizar iptables para hacer un firewall?  Voy a poner aquí algo sobre el manejo de iptables, para la creación de firewalls, por si os sirve a alguno, sacado de unos apuntes que me hice del tema para cuando doy cursillos y eso.  No pretendo dar una clase magistral sobre el tema, por lo que no voy a ser muy exhaustivo con la teoría de redes. Además sería inútil en este sitio.  Un firewall, como todos sabemos, es “algo” que filtra el tráfico entre redes. Por tanto tenemos que tener al menos dos redes (p.ej. la red local e internet) y una serie de reglas que se aplican a los paquetes que se intercambian entre esas redes.  iptables es una herramienta que permite aplicar reglas para crear un firewall. Lo interesante es que iptables forma parte del kernel de linux (a partir del 2.4) por lo que es el propio kernel el que maneja el firewall.  La estructura general de una regla iptables es la que sigue: iptables -t [tabla] -[ALFPDR] [regla] [criterio] -j [acción] donde: -t [tabla]: puede ser FILTER, NAT o MANGLE. La tabla habitual (la de filtrado) es FILTER, es también la opción por defecto, por lo que en las reglas de filtrado, podremos evitar poner -t FILTER, lo cual, nos simplificará las reglas, que generalmente serán complicadas.  La tabla NAT nos va a permitir redireccionar paquetes y enmascarar conexiones. En general se va a referir a modificaciones que va a hacer la regla en la conexión.  La tabla MANGLE, como la anterior, permite hacer modificaciones en las conexiones, pero va mucho más allá, por ejemplo puede modificar los flags de un paquete. -[ALFPDR] regla: cada una de estas opciones (si consultáis el man de iptables hay algunas más pero con estas hay suficientes para un manejo eficiente de iptables) tiene un significado. Para añadir una regla usaremos -A. Para listar las reglas que se están aplicando en un momento dado, -L. Para borrar las reglas que se están aplicando en un momento dado, -F (de flush). Para establecer la política por defecto, -P. La política por defecto, se refiere a la filosofía con la que vamos a hacer el firewall. En general, tenemos dos posibilidades: a) Política por defecto “aceptar todo”. En este caso, miro que puertos tengo abiertos en el equipo (con nmap, o netstat -puta | grep LISTEN) y aplico las reglas de filtrado sobre esos puertos, porque un puerto que está cerrado no es peligroso. b) Política por defecto “denegar todo”. En este caso deniego cualquier conexión y con las reglas de filtrado abro los puertos que me interesan para funcionar. Esta política es mucho mejor desde el punto de vista de la seguridad, pero requiere más experiencia y conocimiento del sistema. Para borrar una regla en particular utilizamos la opción -D. Si lo que queremos es insertar una regla en un orden determinado, usaremos -I. Hay que tener en cuenta que el orden de las reglas es fundamental para el diseño del firewall. Cuando entra un paquete el kernel coge las reglas de iptables que tiene y las va viendo en el orden en que son creadas, si se le puede aplicar alguna de ellas al paquete, en el momento que se aplica una regla, ya no se sigue mirando. Relacionado con la opción anterior está, -R, que sirve para reemplazar una determinada regla por otra.  Las reglas válidas son INPUT (paquete que entra), OUTPUT (paquete que sale) y FORDWARD (paquete que atraviesa). El criterio, nos va a determinar, la dirección ip o red de origen (-s) o de destino (-d), el puerto origen (-sport) o destino (-dport) o bien el protocolo (-p) o bien la interfaz (-i) al que se va aplicar la regla. Estas opciones (-s,-d,-i,-p,-sport-dport), y algunas más, que encontraréis en el man no son excluyentes entre sí. Por último, -j acción, nos va a decir exactamente que hacer con el paquete. Las opciones básicas son: ACCEPT: aceptar el paquete. REJECT: rechazar el paquete enviando un paquete de conexión no permitida, DROP: rechazar el paquete sin más. REDIRECT: redireccionar el paquete. LOG: logear el paquete. Ejemplos: Primero unas que nos suenan:  /sbin/iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128
 se redirige los paquetes que vienen al puerto 80, por la interfaz eth0, al puerto del squid. También se puede redirigir a una dirección IP:  1. redireccion para el correo corporativo de la junta de extremadura  /sbin/iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 110 -j DNAT --to-destination 62.175.249.2 /sbin/iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 25 -j DNAT --to-destination 62.175.249.2 Ahora, vamos a cerrar puertos, por ejemplo el 5900 del vnc, vamos el primero de vnc (si se usa el display 0).  /sbin/iptables -A INPUT -p tcp --dport 5900 -j DROP
 Ahora cerramos el 22 de ssh:  /sbin/iptables -A INPUT -p tcp --dport 22 -j DROP
 ¿y que pasa si quiero que el puerto 22 esté abierto para mi red y cerrado para el resto? Pues dos reglas, en este orden (aunque puede haber otras entre ellas)  /sbin/iptables -A INPUT -s 172.18.213.0/24 -p tcp --dport 22 -j ACCEPT
/sbin/iptables -A INPUT -p tcp --dport 22 -j DROP
 Las políticas por defecto se ponen, por ejemplo así: /sbin/iptables -P INPUT DROP /sbin/iptables -P OUTPUT DROP /sbin/iptables -P FORWARD DROP /sbin/iptables -t nat -P PREROUTING DROP /sbin/iptables -t nat -P POSTROUTING DROP Permitir todas las conexiones locales: /sbin/iptables -A INPUT -i lo -j ACCEPT Permitir que yo desde mi ordenador no tenga limitaciones en el ordenador que tiene el firewall. /sbin/iptables -A INPUT -s mi_ip -j ACCEPT  Pues nada más, sólo recordar que para que las reglas estén activas siempre que se encienda el ordenador, lo mejor es meterlas en un script en /etc/init.d y luego hacer una serie de enlaces en los directorios de los niveles de ejecución 2 al 5(/etc/rcx.d).  
------Mensaje original------
De: Maykel Franco Hernández
Remitente: ubuntu-ve-bounces en lists.ubuntu.com
Para: ubuntu ubuntu
Responder a: Ubuntu de Venezuela
Asunto: [l-ubuntu-ve] Problema iptables
Enviado: 15 Feb, 2010 12:47 PM

Hola muy buenas, estoy familiarizandome con el uso de iptables para
servidores y tengo la siguiente configuracion basica:

#!/bin/bash

#-s Especifica una direcci�n de origen
#-d Especifica una direcci�n de destino
#-p Especifica un prototocolo
#-i Especifica un interface de entrada
#-o Especifica un interface de salida
#-j Especifica la acci�n a ejecutar sobre el paquete
#--sport Puerto de origen
#--dport Puerto de destino

#Borrar todas las reglas
iptables -F

#Politica general.Cerramos todo.Dejamos entrar y salir lo solicitado
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# Permitimos que se conecten a nuestro servidor web.

iptables -A INPUT -m state --state NEW -p TCP --dport 80 -j ACCEPT
iptables -A INPUT -p TCP --dport 22 -j ACCEPT

# Permitimos la comunicaci�n con el servidor dns
iptables -A INPUT -p UDP --dport 53 -j ACCEPT
iptables -A INPUT -p TCP --dport 53 -j ACCEPT

#Permitimos uso de ftp.
iptables -A INPUT -p TCP --dport 21 -j ACCEPT



La politica por defecto es rechazar todo lo que entra menos para el
servidor web, ssh, dns y ftp. Todo funciona correctamente pero el ftp no
logro conectarme. Para el ftp solo habilito el 21 e incluso he probado
habilitar el 20 y 21 y tampoco. Es decir, me funciona todo menos el ftp
que conecta bien pero al final de la conexion se queda colgado y no logra
listarme los directorios. Nada más quitar la politica por defecto de que
todo lo que entra, rechazarlo, funciona el ftp correctamente(es decir que
el ftp funciona bien). Qué puedo estar haciendo mal?



_______________________________________________
Lista de correo (ubuntu-ve)
Fraternidad Ubuntu Linux de Venezuela
(Official VenezuelanTeam)
_______________________________________________
ubuntu-ve mailing list
ubuntu-ve en lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-ve
www.ubuntu-ve.org | www.ubuntu.org.ve
_______________________________________________
Modifica tus opciones de suscripción o  desuscribete en: https://lists.ubuntu.com/mailman/listinfo/ubuntu-ve


Enviado desde mi dispositivo movil BlackBerry® de Digitel.


Más información sobre la lista de distribución ubuntu-ve