Sunteți pe pagina 1din 32

Firewall (Iptables)

Firewall
Con
la
gran
cantidad
de
computadoras accediendo a Internet
desde las casas y los centros de
trabajo; Que nos protege de que
alguien
entre
en
nuestra
computadora o en nuestra red?
La respuesta
servicios.

es

el

Firewall

sus

Firewall
Un firewall es un sistema dedicado que esta
situado entre Internet y la red interna (2
redes).
Esta configurado de manera tal que cada
peticin IP:puerto es revisada.
Toma las decisiones en base a reglas preescritas

Firewall-Iptables
Netfilter es un framework disponible en
el ncleo Linux que permite interceptar y
manipular paquetes de red. Dicho
framework permite realizar el manejo de
paquetes en diferentes estados del
procesamiento.
El componente ms popular construido
sobre
Netfilter
es
iptables,
una
herramienta de cortafuegos que permite
filtrar paquetes, NAT, mantener registros
de log

Funcionamiento Iptables
iptables permite definir reglas acerca de qu
hacer con los paquetes de red. Las reglas se
agrupan en cadenas: cada cadena es una lista
ordenada de reglas. Las cadenas se agrupan en
tablas: cada tabla est asociada con un tipo
diferente de procesamiento de paquetes.
Cada regla especifica qu paquetes la cumplen
(match) y un destino que indica qu hacer con el
paquete si ste cumple la regla. Cada paquete de
red que llega a una computadora o que se enva
desde una computadora recorre por lo menos una
cadena y cada regla de esa cadena se comprueba
con el paquete.

Tablas
filter table (Tabla de filtros) Esta tabla es la
responsable del filtrado (es decir, de bloquear o
permitir que un paquete contine su camino).
INPUT chain (Cadena de ENTRADA) Todos los
paquetes destinados a este sistema atraviesan esta
cadena
OUTPUT chain (Cadena de SALIDA) Todos los
paquetes creados por este sistema atraviesan esta
cadena
FORWARD chain (Cadena de REDIRECCIN) Todos
los paquetes que meramente pasan por este sistema
para ser encaminados a su destino recorren esta
cadena

Tablas
nat table (Tabla de traduccin de direcciones de
red) configura las reglas de reescritura de
direcciones o de puertos de los paquetes. El
primer paquete en cualquier conexin pasa a
travs de esta tabla; los veredictos determinan
como van a reescribirse todos los paquetes de
esa conexin.
PREROUTING chain (Cadena de PRERUTEO) Los
paquetes entrantes pasan a travs de esta
cadena antes de que se consulte la tabla de ruteo
local, principalmente para DNAT (destination-NAT
o traduccin de direcciones de red de destino)

Tablas
POSTROUTING chain (Cadena de POSRUTEO) Los
paquetes salientes pasan por esta cadena
despus de haberse tomado la decisin del ruteo,
principalmente para SNAT (source-NAT o
traduccin de direcciones de redvde origen)
OUTPUT chain (Cadena de SALIDA) Permite hacer
un DNAT limitado en paquetes generados
localmente

Tablas
mangle table (Tabla de destrozo) Esta tabla es
la responsable de ajustar las opciones de los
paquetes, como por ejemplo la calidad de
servicio. Todos los paquetes pasan por esta tabla.
Debido a que est diseada para efectos
avanzados, contiene todas las cadenas
predefinidas posibles

Iptables (Esquema del framework)


Puntos de
filtrado
(Cadenas)

Tablas
filter

INPUT

OUTPUT

FORWARD

nat

mangle
x

x
x

PREROUTING

POSTROUTING

Iptables (flujo del paquete)

Iptables (sintaxis)
iptables [-t tabla] comando [comparacin (match)]
[objetivo/salto (target/jump)]

comando
-A
-D
-I
-R
-L n
-F
-P

Aadir una regla


Borrar una regla
Insert
Replace
Listar las reglas
Borrar todas las reglas
Establecer poltica

Iptables (sintaxis)
[comparaciones]
-i

interface de llegada

-o

interface de salida

-p

Protocolo de nivel 4

-s

IP origen

-d

IP destino

--sport

puerto origen

--dport

puerto destino

-j

Que hacer con el paquete

Iptables (sintaxis)
target
ACCEPT: Acepta el paquete
DROP: Se desecha el paquete
REJECT: Idem que DROP pero se genera
un mensaje de error.
DNAT: Direccin destino del paquete debe
ser modificada
SNAT: Direccin origen del paquete debe
ser cambiada.

Iptables (polticas)
Es lo que se hace por defecto con el
paquete si no se encuentra ninguna regla
que coincida con el.
Acciones posibles:
ACCEPT (accin por defecto)
DROP (mas adecuada, pero mas difcil)

Iptables (polticas)
Como vemos las polticas activas?
etch:~# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source

destination

Chain FORWARD (policy ACCEPT)


target prot opt source
destination
Chain OUTPUT (policy ACCEPT)
target prot opt source
destination

Iptables (polticas)
Como cambiamos la poltica por defecto?
etch:~# iptables t table -P CHAIN DROP
table:
filter, nat, mangle
CHAIN:
INPUT, FORWARD, OUTPUT,
PREROUTING, POSTROUTING

Iptables (polticas)
Cuando se usa la poltica DROP, se
debe tener en cuenta que tambin
estamos denegando las conexiones
que se inician en la propia mquina,
as como aquellas que utilizan la
interfaz loopback (127.0.0.1).

Iptables (construir reglas ejemplo)

Supongamos que vamos colocar un


servidor Web en Internet y que ese
servidor sea administrable remotamente
mediante SSH.
Definir la poltica a utilizar.
Tener claro los puertos a abrir.
Desde y hacia donde se permitirn las
conexiones entrantes y salientes.

Iptables (construir reglas ejemplo)


Conexiones entrantes:
iptables A INPUT p tcp --dport 22 j ACCEPT
iptables A INPUT p tcp --dport 80 j ACCEPT
iptables A INPUT j DROP
Conexiones salientes:
iptables A OUTPUT p tcp --sport 22 j ACCEPT
iptables A OUTPUT p tcp --sport 80 j ACCEPT
iptables A OUTPUT j DROP

Iptables (ejemplos de reglas)


iptables -t filter -A INPUT -s 10.0.0.2 -p tcp --dport 80 -j
ACCEPT
iptables -A INPUT -s 10.0.0.1 -p tcp --dport 22 -j DROP
iptables -A INPUT -m multiport -p tcp --dport 22,80,443
-j ACCEPT
iptables -A FORWARD -i eth1 -s ! 10.0.0.1 -j DROP
iptables -A OUTPUT -o eth0 -d 10.0.0.0/24 -j DROP

Iptables
Guardando las reglas:
touch firewall_reglas
iptables-save >> firewall_reglas

Editar /etc/network/interfaces y aadir


up iptables-restore < firewall_reglas

update-rc.d firewall defaults 00 99

Iptables (-j LOG)


iptables -A INPUT -i eth0 -p tcp --dport 22 -j LOG
iptables -A INPUT -i eth0 -p tcp --dport 22 -j LOG
--log-prefix "Conexion al puerto 22

Con la accin LOG podremos registrar las


conexiones en el syslog del sistema.
Adems podremos agregarle un prefijo.

Iptables (nat)
SNAT y DNAT: Permiten realizar
transformaciones
de
direccin
(origen y destino) de los paquetes.

Iptables (nat)
iptables -t nat -A POSTROUTING -d 1.1.1.1 -p tcp
--dport 80 -j SNAT --to 2.2.2.2
iptables -t nat -A PREROUTING -d 3.3.3.3 -j DNAT
--to 4.4.4.4
iptables -t nat -A PREROUTING -p tcp --dport 80 -j
REDIRECT --to-ports 3128

Ejemplos Real

El FIREWALL tiene 2 interfaces de red: eth0 red externa,


eth1 red interna
1.Todo lo que venga de la red local al firewall ACEPTAR.
2.Todo lo que venga de la IP de mi casa al puerto tcp 22
ACEPTAR

Ejemplos Real
3. A un partner le dejamos usar el ftp
4. Todo lo que venga de la red local y vaya al exterior
ENMASCARAR.
5. No permitir ping al FIREWALL
6. Todo lo que venga al puerto tcp 1 al 1024
DENEGAR
7. Todo lo que venga del exterior al puerto tcp 10000
DENEGAR

Iptables (nat)
## FLUSH de reglas
iptables -F
iptables -X
iptables -Z
iptables -t nat F
## Establecemos politica por defecto
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT

Iptables (nat)
###FILTRANDO
# El localhost se deja (Ej:conexiones locales a mysql)
iptables -A INPUT -i lo -j ACCEPT
# Al firewall tenemos acceso desde la red local
iptables A INPUT s 192.168.10.0/24 i eth1 j
ACCEPT
# A un partner se le deja usar el FTP
iptables A INPUT s 80.37.45.194 p tcp dport 20:21
j ACCEPT

Iptables (nat)
# Enmascaramiento de la red local y activacin del
BIT DE FORWARDING (imprescindible!!!!!)
iptables -t nat -A POSTROUTING s 192.168.10.0/24
-o eth0 -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward
# Filtrar los paquetes ICMP
Iptables -A INPUT p icmp j DROP

Iptables (nat)
# Se cierra el rango de puerto bien conocido
iptables A INPUT s 0.0.0.0/0 p tcp dport 1:1024 j DROP
iptables A INPUT s 0.0.0.0/0 p udp dport 1:1024 j DROP

# Se cierra el puerto de gestin: webmin


iptables A INPUT s 0.0.0.0/0 p tcp dport 10000 j DROP

Ejercicio
Cliente
IP:10.2.2.2
Puerto:1025

Servidor SSH
IP:10.2.2.1
Puerto:22

Como podemos bloquear las conexiones al


servidor SSH, dejando pasar las del cliente
10.2.2.2 nada ms?

S-ar putea să vă placă și