Diferencia entre revisiones de «Iptables»
De Guifi.net - Wiki Hispano
(→-j [acción]) |
m (→-j [acción]) |
||
Línea 71: | Línea 71: | ||
*cerrar puerto 22 para una máquina en concreto: | *cerrar puerto 22 para una máquina en concreto: | ||
− | iptables -A INPUT -s 80.83.157.42 -p tcp --dport 22 -j | + | iptables -A INPUT -s 80.83.157.42 -p tcp --dport 22 -j DROP |
*Las políticas por defecto se ponen, por ejemplo así: | *Las políticas por defecto se ponen, por ejemplo así: |
Revisión de 20:52 11 mar 2010
Este artículo necesita desarrollarse más. Ampliándolo ayudarás a mejorar Guifi.net.
Tal vez puedas ayudarte con los wikis catalán, o inglés si tienen una página equivalente.
Contenido
Descripción, uso
Iptables se usa para configurar, mantener y consultar las tablas de reglas de filtrado de paquetes IP en el kernel de GNU/Linux. Es posible definir diversas tablas, cada una de las cuales contiene conjuntos de reglas que especifican qué hacer con los paquetes que cumplan determinadas condiciones;
Podemos usar iptables para manipular el enrutamiento de paquetes en una red compleja (por ejemplo, una área sanitaria, una red inalámbrica ciudadana,...); los paquetes ip en que se descompone una comunicación, llevan valores escritos como direcciones, protocolos y puertos de origen y destino, que consultamos y variamos en caso necesario para activar determinadas características en la conexión de un equipo.
Funciones implementadas con iptables
Network address translation
Para optimizar las comunicaciones en red se puede utilizar junto con Quality of Service (QoS) con este mismo software, de manera que se reserven anchos de banda determinados según la prioridad de las aplicaciones.
Modo de empleo
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í.
-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:
- redirección de 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:
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128
- redireccion para el correo corporativo de la junta de extremadura
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
- cerrar puerto de entrada del 5900 del vnc, vamos el primero de vnc (si se usa el display 0).
iptables -A INPUT -p tcp --dport 5900 -j DROP
- cerrar la salida del 22 de ssh:
iptables -A OUTPUT -p tcp --dport 22 -j DROP
- puerto 22 esté abierto para mi red y cerrado para el resto? Pues dos reglas, en este orden (aunque puede haber otras entre ellas)
iptables -A INPUT -s 172.15.27.0/24 -p tcp --dport 22 -j ACCEPT iptables -A INPUT -p tcp --dport 22 -j DROP
- cerrar puerto 22 para una máquina en concreto:
iptables -A INPUT -s 80.83.157.42 -p tcp --dport 22 -j DROP
- Las políticas por defecto se ponen, por ejemplo así:
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
iptables -t nat -P PREROUTING DROP
iptables -t nat -P POSTROUTING DROP
- Permitir todas las conexiones locales:
iptables -A INPUT -i lo -j ACCEPT
- Permitir que yo desde mi ordenador no tenga limitaciones en el ordenador que tiene el firewall.
iptables -A INPUT -s mi_ip -j ACCEPT
- Crear una ruta para salida a subred (eth0 es por donde sales), convierte un ordenador en un router
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
- listar las reglas de la tabla de NAT, sin nombre DNS, con números de línea para identificar la regla y paginado con less
iptables -t nat -L -v -n --line-numbers|less
- borrar la regla número 2 del canal PREROUTING de la tabla NAT
iptables -t nat -D PREROUTING 2
Para que las reglas estén activas siempre que se encienda el ordenador, lo mejor es meterlas en un script #!/bin/sh 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).