HowTo: trabajando con iptables en BrazilFW

HowTo: trabajando con iptables en BrazilFW

Mensagempor c0d3r_sh3ll » Seg Abr 04, 2011 6:40 pm

Abro este post para hacer una breve introduccion de como se configuran las iptables para linux lo que nos sirve para trabajar con BrazilFw.

de a poco lo voy a ir completando, si quieren configurar algo en especial me mandan un mp y explico y posteo como se hace, la idea es resolver todas sus dudas que pueden tener y necesiten configurar.

manos a la obra, aprendamos iptables:

en iptables hay 3 tablas:
Las tablas son segmentos de memoria donde almacenamos las reglas de firewall, en palabras mas simples son como las secciones donde se puede trabajar. Estas reglas describen cómo se comportará el firewall ante determinados eventos. Tenemos tres tablas: nat, mangle y filter.

NAT
Son las siglas de "Network Address Translation". En esta tabla almacenaremos las reglas referentes a la conversión o traducción de paquetes, al entrar o salir. Por ejemplo port forward o reenvio de puertos, abrir puertos a un servidor que tengamos detras del firewall, etc.
FILTER
Se encarga de cerrar o abrir el acceso a los paquetes que entran, salen o pasan a través del firewall. Esta tabla es la mas utilizada ya que es aqui donde definimos las politicas de si pasa o no un determinado paquete.
MANGLE
El mangle sirve para alterar los paquetes al entrar, salir o pasar. Entre otras cosas, puedes cambiar el TOS (Type of Service) de un paquete, hacer marcado de paquetes para hacer QoS, etc. Por lo general es el que menos se ocupa.

Imagem

Cada tabla esta compuesta por cadenas, aprenderemos a configurar iptables en la tabla Filter:
Las cadenas sirven para clasificar los paquetes que vas a manejar, por dirección y acción inmediata:
INPUT: se aplica a los paquetes que entran en el BrazilFwl directamente, cuando ingresamos a la webconfig estamos generando un input.
OUTPUT: son los paquetes generados por el firewall mismo, cuando le hacemos ping al server y este nos responde genera un output.
FORWARD: son los paquetes que pasan a través del BrazilFw, de una red a otra. Cuando un usuario abre una pagina de internet esta generando un forward.


opciones basicas de iptables:
-s : ip de source u origen del paquete, por ejemplo--> -s 192.168.1.12
-d : ip de destino del paquete, por ejemplo--> -d http://www.google.cl
-i : interfaz de entrada, por ejemplo--> -i eth1.
-o : interfaz de salida, por ejemplo--> -o eth0.
-p : protocolo, puede ser tcp, udp, icmp, o todos (all), por ejemplo--> -p tcp
--sport : souce port o puerto de origen, por ejemplo--> --sport 10000
--dport : puerto de destino, por ejemplo--> --dport 21

con -A le indicamos que agregue una regla a la tabla en la que estamos trabajando.

Cuando un paquete coincide con una regla que hayamos definido, ve que accion se le realiza, las opciones mas importantes son:
ACCEPT
DROP

Esto se define con el siguiente contenido:
-j ACCEPT
-j DROP.

POLITICAS POR DEFECTO:
Cuando el paquete no coincide con ninguna regla se le aplica lo que definamos en estas politicas.
Por ejemplo, si ponemos la politica en aceptar todo, los paquetes se aceptaran si o si.
Pero si establecemos una politica DROP (la que me gusta a mi) si no ponemos una regla de aceptar un paquete que deseemos este se rechazara.
las politicas por defecto se aplican con los siguientes comando:

politica rechazar todo
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

politica Aceptar todo
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT

Cuando no nos sirvio una regla podemos limpiar todas las reglas que estan corriendo con el siguiente comando:

iptables -F

Las reglas si no se guardan en el firewall estaran funcionando hasta que reiniciemos la maquina.

CREANDO REGLAS, cuando no se especifica la tabla, el kernel asume que se trata de la tabla filter, es muy importante el orden en que pongan las reglas, ya que el paquete se analizara una a una, si la regla coincide no se sigue examinando y se le aplica la accion que hayamos definido:

Las reglas hay que agregarlas a "reglas personalizadas de firewall"

ejemplo:

Código: Selecionar todos
iptables -A INPUT -s 192.168.1.11 -d 192.168.1.1 -p tcp --dport 8180 -j DROP


esta regla es la misma que esta:

Código: Selecionar todos
iptables -t filter -A INPUT -s 192.168.1.11 -d 192.168.1.1 -p tcp --dport 8180 -j DROP


ya que asume que esta trabajando en la tabla filter.

analizemos esta regla:
-A INPUT le indicamos que analiza lo que ingresa al server BrazilFw.
-s 192.168.1.11 le indicamos la ip de origen o desde la ip que esta realizando la conexion.
-d 192.168.1.1 le indicamos la ip a la que va destinada la conexion, en este caso a la ip del server.
-p tcp le indicamos el proticolo tcp.
--dport 8180 le indicamos el puerto al que se esta conectando.
-j DROP le indicamos la accion a realizar,en este caso rechazar.

con esta regla estamos rechazando que un usuario con la ip 192.168.1.11 no se pueda conectar al webconfig que usa el puerto 8180.


otro ejemplo, bloquear un puerto a una ip de algun usuario.

en caso de que el puerto use tcp:
Código: Selecionar todos
iptables -A FORWARD -s 192.168.1.13 -p tcp --dport 12543 -j DROP


-A FORWARD le indicamos que es una conexion a internet o a cualquier parte.
-s 192.168.1.13 le indicamos la ip que origina la conexion (un usuario cualquiera)
-p tcp le indicamos el protocolo.
--dport 12543 le indicamos el puerto al que se quiere conectar.
-j DROP le indicamos la accion.

con esta regla estamos definiendo que rechace el puerto 12543 a la ip 192.168.1.13, en otras palabras le estamos bloqueando ese puerto al cliente.

en este caso lo mismo solo que el puerto use udp:
Código: Selecionar todos
iptables -A FORWARD -s 192.168.1.13 -p udp --dport 12543 -j DROP


en caso de que sea un rango de puertos
Código: Selecionar todos
iptables -A FORWARD -s 192.168.1.13 -p tcp --dport 12543:65000 -j DROP


--dport 12543:65000 con esto le estamos indicando que le bloquee los puertos desde 12543 hasta el 65000

otro ejemplo..

Código: Selecionar todos
iptables -A INPUT -p icmp -i eth0 -j DROP


-A INPUT le indicamos que vamos a filtrar lo que va dirijido a nuestro server.
-p icmp le indicamos el protocolo icmp
-i eth0 le indicamos la interfaz por la que ingresan los paquetes
-j DROP le indicamos la accion.

en este ejemplo estamos bloqueando los ping y todo lo relacionado con los mensajes de control entre nodos y/o ruteadores que ingresan por la tarjeta eth0, sirve para bloquear los ping que vengan desde internet.


basta de ejemplos, vamos a las reglas. Ustedes las pueden modificar a su gusto cambiando la ip o agregando la red con un /24.

BLOQUEAR UNA PAGINA WEB A UN DETERMINADO USUARIO:
Código: Selecionar todos
iptables -A FORWARD -s 192.168.1.12 -d www.paginaprohibida.com -p tcp --dport 80 -j DROP
iptables -A FORWARD -s 192.168.1.12 -d www.paginaprohibida.com -p udp --dport 80 -j DROP

bloquear pagina segura https a un usuario
Código: Selecionar todos
iptables -A FORWARD -s 192.168.1.12 -d www.paginaprohibida.com -p tcp --dport 443 -j DROP
iptables -A FORWARD -s 192.168.1.12 -d www.paginaprohibida.com -p udp --dport 443 -j DROP





AMARRAR UNA IP CON UNA MAC, con esto debemos ingresar cada uno de los usuarios ya que si no estan ingresados no podran navegar en internet.

Código: Selecionar todos
iptables -t filter -A FORWARD -d 0/0 -s 192.168.1.12 -m mac --mac-source 00:0B:05:EC:0D:5A -j ACCEPT
iptables -t filter -A FORWARD -d 192.168.1.12 -s 0/0 -j ACCEPT
iptables -t nat -A POSTROUTING -s 192.168.1.12 -o eth1 -j MASQUERADE


solo deben cambiar la ip del usuario y la mac asi como la tarjeta eth1 que es la que esta conectada a internet.

esta regla la añadimos al final de toda las cadenas, con esto evitamos que los usuarios que no esten registrados no puedan navegar.
Código: Selecionar todos
iptables -A FORWARD -j DROP



LIBERAR UN DETERMINADO SERVICIO A UNA IP PUBLICA, en este caso un servidor PBX Asterisk.
Estas reglas sirven en el caso de que ya tengan configurado el servicio hacia internet, ya sea mediante la DMZ o un reenvio de puertos.

Los puertos a liberar a la ip que se conecta a internet son:
- para IAX puerto 4569 protocolo UDP
- para SIP puerto 5060 protocolos UDP y TCP
- para SIP puertos 10000 al 20000 protocolo UDP

se permite la conexion a los puertos antes mencionado a la ip publica 201.218.11.13 y el servidor tiene la ip 192.168.1.10, deben cambiar la eth0 por la interfaz que se conecta a internet:

Código: Selecionar todos
iptables -A FORWARD -s 201.xxx.xxx.13 -i eth0 -d 192.168.1.10 -p udp --dport 4569 -j ACCEPT
iptables -A FORWARD -s 201.xxx.xxx.13 -i eth0 -d 192.168.1.10 -p udp --dport 5060 -j ACCEPT
iptables -A FORWARD -s 201.xxx.xxx.13 -i eth0 -d 192.168.1.10 -p tcp --dport 5060 -j ACCEPT
iptables -A FORWARD -s 201.xxx.xxx.13 -i eth0 -d 192.168.1.10 -p udp --dport 10000:20000 -j ACCEPT


si queremos conectarnos desde distintas ip publicas deben repetir las 4 reglas anteriores para cada ip a la queremos permitir acceder desde internet.

cuando hayan finalizado de ingresar las ip a permitir, agregan esta regla al final. Con esta regla negamos conexiones desde internet hacia la ip del servidor.

Código: Selecionar todos
iptables -A FORWARD -s 0/0 -i eth0 -d 192.168.1.10 -j DROP




RECORDATORIOS:
- el orden de las reglas es muy importante.
c0d3r_sh3ll
 

Voltar para Varios tutoriales

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 4 visitantes

cron