Está en la página 1de 6

IPTABLES

Iptables sirve para crear un firewall, es muy importante a la hora de unir redes entre si ya que
podemos elegir que conexin se deja pasar y cual se denegara , se puede establecer que protocolo ,
puerto , interfaz , tipo de conexin , ip va a ser filtrada sea es muy configurable y potente.
Hay dos tipos de reglas:
Denegar todo: es la ms segura, pero a la vez mas difcil de implementar en redes grandes ya que
tenemos que saber exactamente qu tipo de conexiones se van a permitir, para habilitarlas una por
una
Habilitar todo: es la ms fcil, ya que se acepta todo y se va denegando lo que no se quiere , pero
tenemos que tener cuidado de no olvidarnos de denegar algo que pueda comprometer la red.
Conceptos generales:
Iptables consta de 3 tablas:

Filter : filtra los paquetes en general


Nat : modifica direcciones en los paquetes para permitir el enmascaramiento de una red
Mangle : realiza operaciones especiales en los paquetes

Y 5 cadenas:

INPUT : todo lo que entra al firewall


OUTPUT : todo lo que sale de el
FORWARD : todo lo que atraviesa el firewall
POSTROUTING : todo lo que va a realizar despus de enviar el paquete
PREROUTING : todo lo que va a realizar antes de enviar el paquete

Cada tabla con sus cadenas:

Filter : tiene como cadenas posibles , INPUT ,OUTPUT , FORWARD


Nat : tiene como cadenas , POSTROUTING ,PREROUTING y OUTPUT
Mangle : tiene como cadena INPUT ,OUTPUT , PREROUTING , POSTROUTING y FORWARD
TABLA CADENA ORDEN tarjets

Tarjets (objetivos): todos los paquetes tratados por el firewall tendrn como resultado final un
objetivo, pueden ser 3.

ACCEPT, el paquete es aceptado


DROP, el paquete es dropeado , descartado.
REJECT, el paquete es descartado y se le avisa a quien lo envi.

Opciones de Iptables :

-t :tabla a utilizar
-j : se coloca al final e indica el objetivo
-p : establece el protocolo
-s : ip origen
-d : ip destino
-o : define una interfaz para trafico saliente
-m : define que se aplica la regla si hay una coincidencia especfica
--dport : puerto destino
--sport : puerto origen

Agregando , borrando y reemplazando reglas :

iptables -A , aade
iptables -D , borra
iptables -R , reemplaza
iptables -A INPUT -p icmp -j ACCEPT

este ejemplo aade la regla en la tabla FILTER que toda entrada con el protocolo icmp sea aceptada
la tabla FILTER es la tabla por defecto si quisieras cambiar de tabla tendras que usar la opcion -t
iptables -t NAT
iptables -t MANGLE
iptables -D INPUT -p icmp -j ACCEPT
borra la regla anteriormente introducida
Listar reglas , borrar reglas y resetear contadores :

iptables -L , lista las reglas de la tabla FILTER , para listar las reglas de la tabla NAT y MANGLE

hay que usar la opcion -t


iptables -F , borra todas las reglas de la tabla FILTER
iptables -Z ,resetea los contadores de la tabla FILTER

Tipos de filtrado mas usados :

Por protocolo , (UDP , TCP , ICMP )


Por puerto
Por direccion ip
Por interfaz (eth0 , eth1 ,etc)
Por estado en la conexion (conexion establecida , relacionadas y nuevas )

Un ejemplo de cada una :

iptables -A INPUT -p icmp -j DROP , dropea el protocolo icmp en la entrada


iptables -A INPUT -p tcp --dport 22 -j DROP , dropea el puerto 22
iptables
iptables
iptables
deniega

-A FORWARD -d www.google.com -j DROP , dropea el acceso a google


-A INPUT -i eth0 -p icmp -j DROP , dropea el protocolo icmp en la interfaz eth0
-A FORWARD -m state --state NEW -s 192.168.1.1 -p tcp --dport 20 -j DROP , se
el acceso al puerto 20 a las conexiones nuevas de la red 192.168.1.1

Ejemplos de reglas.
Reenvo de paquetes desde una interfaz de red local (eth1) hacia una interfaz de red pblica (eth0):
iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT

Aceptar reenviar los paquetes que son parte de conexiones existentes (ESTABLISHED) o relacionadas
de trfico entrante desde la interfaz eth1 para trfico saliente por la interfaz eth0:
iptables -A FORWARD -i eth0 -o eth1 -m state --state ESTABLISHED,RELATED -j
ACCEPT

Permitir paquetes en el propio muro cortafuegos para trfico saliente a travs de la interfaz eth0 que
son parte de conexiones existentes o relacionadas:
iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT

Permitir (ACCEPT) todo el trfico entrante (INPUT) desde (-s) cualquier direccin (0/0) la red local
(eth1) y desde el retorno del sistema (lo) hacia (-d) cualquier destino (0/0):
iptables -A INPUT -i eth1 -s 0/0 -d 0/0 -j ACCEPT
iptables -A INPUT -i lo -s 0/0 -d 0/0 -j ACCEPT

Hacer (-j) SNAT para el trfico saliente (-o) a trves de la interfaz eth0 proveniente desde (-s) la red
local (192.168.0.0/24) utilizando (--to-source) la direccin IP w.x.y.z.
iptables -A POSTROUTING -t nat -s 192.168.0.0/24 -o eth0 -j SNAT --to-source
x.y.z.c

Descartar (DROP) todo el trfico entrante (-i) desde la interfaz eth0 que trate de utilizar la direccin IP
pblica del servidor (w.x.y.z), alguna direccin IP de la red local (192.168.0.0/24) o la direccin IP del
retorno del sistema (127.0.01)
iptables -A INPUT -i eth0 -s w.x.y.x/32 -j DROP
iptables -A INPUT -i eth0 -s 192.168.0.0/24 -j DROP
iptables -A INPUT -i eth0 -s 127.0.0.0/8 -j DROP

Aceptar (ACCEPT) todos los paquetes SYN (--syn) del protocolo TCP (-p tcp) para los puertos (-destination-port) de los protocolos SMTP (25), HTTP(80), HTTPS (443) y SSH (22):
iptables -A INPUT -p tcp -s 0/0 -d 0/0 --destination-port 25 --syn -j ACCEPT
iptables -A INPUT -p tcp -s 0/0 -d 0/0 --destination-port 80 --syn -j ACCEPT
iptables -A INPUT -p tcp -s 0/0 -d 0/0 --destination-port 443 --syn -j ACCEPT

iptables -A INPUT -p tcp -s 0/0 -d 0/0 --destination-port 22 --syn -j ACCEPT

Aceptar (ACCEPT) todos los paquetes SYN (--syn) del protocolo TCP (-tcp) para los puertos (-destination-port) del protocolos SMTP (25) en el servidor (w.x.y.z/32), desde (-s) cualquier lugar
(0/0) hacia (-d) cualquier lugar (0/0).
iptables -A INPUT -p tcp -s 0/0 -d w.x.y.z/32 --destination-port 25 --syn -j
ACCEPT

Aceptar (ACCEPT) todos los paquetes SYN (--syn) del protocolo TCP (-p tcp) para los puertos (-destination-port) de los protocolos POP3 (110), POP3S (995), IMAP (143) y IMAPS (993):
iptables
iptables
iptables
iptables

-A
-A
-A
-A

INPUT
INPUT
INPUT
INPUT

-p
-p
-p
-p

tcp
tcp
tcp
tcp

-s
-s
-s
-s

0/0
0/0
0/0
0/0

-d
-d
-d
-d

0/0
0/0
0/0
0/0

--destination-port
--destination-port
--destination-port
--destination-port

110
995
143
993

--syn
--syn
--syn
--syn

-j
-j
-j
-j

ACCEPT
ACCEPT
ACCEPT
ACCEPT

Aceptar (ACCEPT) el trfico entrante (-i) proveniente desde la interfaz eth1 cuando las conexiones se
establezcan desde el puerto (--sport) 67 por protocolos (-p) TCP y UDP.
iptables -A INPUT -i eth1 -p tcp --sport 68 --dport 67 -j ACCEPT
iptables -A INPUT -i eth1 -p udp --sport 68 --dport 67 -j ACCEPT

Aceptar (ACCEPT) conexiones de trfico entrante (INPUT) por protocolo (-p) UDP cuando se
establezcan desde (-s) el servidor DNS 200.33.145.217 desde el puerto (--source-port) 53 hacia (-d)
cualquier destino (0/0):
iptables -A INPUT -p udp -s 200.33.146.217/32 --source-port 53 -d 0/0 -j
ACCEPT

Cerrar accesos.
Descartar (DROP) el trfico entrante (INPUT) para el protocolo (-p) TCP hacia los puerto (-destination-port) de SSH (22) y Telnet (23):
iptables -A INPUT -p tcp --destination-port 22 -j DROP
iptables -A INPUT -p tcp --destination-port 23 -j DROP

Descartar (DROP) todo tipo de conexiones de trfico entrante (INPUT) desde (-s) la direccin IP
a.b.c.d:
iptables -A INPUT -s a.b.c.d -j DROP

Rechazar (REJECT) conexiones hacia (OUTPUT) la direccin IP a.b.c.d desde la red local:
iptables -A OUTPUT -d a.b.c.d -s 192.168.0.0/24 -j REJECT

Eliminar reglas.
En general se utiliza la misma regla, pero en lugar de utilizar -A (append), se utiliza -D (delete).
Eliminar la regla que descarta (DROP) todo tipo de conexiones de trfico entrante (INPUT) desde (-s)
la direccin IP a.b.c.d:
iptables -D INPUT -s a.b.c.d -j DROP

Mostrar la lista de cadenas y reglas.


Una vez cargadas todas las cadenas y reglas de iptables es posible visualizar stas utilizando el
mandato iptables con las opciones -n, para ver las listas en formato numrico y -L, para solicitar la
lista de stas cadenas.
iptables -nL
Cuando no hay reglas ni cadenas cargadas, la salida debe devolver lo siguiente:
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

Cuando hay cadenas presentes, la salida, suponiendo que se utilizarn los ejemplos de este
documento, debe devolver algo similar a lo siguiente:
Chain INPUT (policy DROP)
target

prot opt source

destination

ACCEPT

all

--

0.0.0.0/0

0.0.0.0/0

ACCEPT

all

--

0.0.0.0/0

0.0.0.0/0

ACCEPT

all

--

0.0.0.0/0

0.0.0.0/0

DROP

all

--

192.168.1.64

0.0.0.0/0

DROP

all

--

172.16.0.0/24

0.0.0.0/0

DROP

all

--

127.0.0.0/8

0.0.0.0/0

ACCEPT

tcp

--

0.0.0.0/0

0.0.0.0/0

ACCEPT

tcp

--

0.0.0.0/0

0.0.0.0/0

tcp dpt:80 flags:0x17/0x02

ACCEPT

tcp

--

0.0.0.0/0

0.0.0.0/0

tcp dpt:443 flags:0x17/0x02

ACCEPT

tcp

--

0.0.0.0/0

0.0.0.0/0

tcp dpt:22 flags:0x17/0x02

ACCEPT

tcp

--

0.0.0.0/0

192.168.1.64

tcp dpt:25 flags:0x17/0x02

ACCEPT

tcp

--

0.0.0.0/0

0.0.0.0/0

tcp dpt:110 flags:0x17/0x02

ACCEPT

tcp

--

0.0.0.0/0

0.0.0.0/0

tcp dpt:995 flags:0x17/0x02

ACCEPT

tcp

--

0.0.0.0/0

0.0.0.0/0

tcp dpt:143 flags:0x17/0x02

state RELATED,ESTABLISHED

tcp dpt:25 flags:0x17/0x02

Chain FORWARD (policy DROP)


target

prot opt source

ACCEPT

all

--

0.0.0.0/0

destination
0.0.0.0/0

ACCEPT

all

--

0.0.0.0/0

0.0.0.0/0

state RELATED,ESTABLISHED

Chain OUTPUT (policy ACCEPT)


target

prot opt source

destination

[root@m064 ~]# iptables -nL


Chain INPUT (policy DROP)
target

prot opt source

destination

ACCEPT

all

--

0.0.0.0/0

0.0.0.0/0

ACCEPT

all

--

0.0.0.0/0

0.0.0.0/0

ACCEPT

all

--

0.0.0.0/0

0.0.0.0/0

DROP

all

--

192.168.1.64

0.0.0.0/0

state RELATED,ESTABLISHED

DROP

all

--

172.16.0.0/24

0.0.0.0/0

DROP

all

--

127.0.0.0/8

0.0.0.0/0

ACCEPT

tcp

--

0.0.0.0/0

0.0.0.0/0

tcp dpt:25 flags:0x17/0x02

ACCEPT

tcp

--

0.0.0.0/0

0.0.0.0/0

tcp dpt:80 flags:0x17/0x02

ACCEPT

tcp

--

0.0.0.0/0

0.0.0.0/0

tcp dpt:443 flags:0x17/0x02

ACCEPT

tcp

--

0.0.0.0/0

0.0.0.0/0

tcp dpt:22 flags:0x17/0x02

ACCEPT

tcp

--

0.0.0.0/0

192.168.1.64

tcp dpt:25 flags:0x17/0x02

ACCEPT

tcp

--

0.0.0.0/0

0.0.0.0/0

tcp dpt:110 flags:0x17/0x02

ACCEPT

tcp

--

0.0.0.0/0

0.0.0.0/0

tcp dpt:995 flags:0x17/0x02

ACCEPT

tcp

--

0.0.0.0/0

0.0.0.0/0

tcp dpt:143 flags:0x17/0x02

ACCEPT

tcp

--

0.0.0.0/0

0.0.0.0/0

tcp dpt:993 flags:0x17/0x02

ACCEPT

tcp

--

0.0.0.0/0

0.0.0.0/0

tcp spt:68 dpt:67

ACCEPT

udp

--

0.0.0.0/0

0.0.0.0/0

udp spt:68 dpt:67

ACCEPT

udp

--

200.33.146.217

0.0.0.0/0

udp spt:53

Chain FORWARD (policy DROP)


target

prot opt source

destination

ACCEPT

all

--

0.0.0.0/0

0.0.0.0/0

ACCEPT

all

--

0.0.0.0/0

0.0.0.0/0

state RELATED,ESTABLISHED

Chain OUTPUT (policy ACCEPT)


target

prot opt source

destination

Iniciar, detener y reiniciar el servicio iptables.


Si est de acuerdo con las reglas generadas de iptables, utilice el siguiente mandato para guardar
stas:
service iptables save
Las reglas quedarn almacenadas en el archivo /etc/sysconfig/iptables.
Para ejecutar por primera vez el servicio iptables, utilice:
service iptables start
Para hacer que los cambios hechos tras modificar la configuracin surtan efecto, utilice:
service iptables restart
Para detener el servicio iptables y borrar todas las reglas utilice:
service iptables stop

Agregar el servicio iptables al arranque del sistema.


Para hacer que el servicio de iptables est activo con el siguiente inicio del sistema, en todos los
niveles de ejecucin (2, 3, 4 y 5), se utiliza lo siguiente:
chkconfig iptables on

También podría gustarte