Ip Tables
Ip Tables
Ip Tables
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:
Y 5 cadenas:
Tarjets (objetivos): todos los paquetes tratados por el firewall tendrn como resultado final un
objetivo, pueden ser 3.
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
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
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
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
destination
destination
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
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
ACCEPT
tcp
--
0.0.0.0/0
0.0.0.0/0
ACCEPT
tcp
--
0.0.0.0/0
0.0.0.0/0
ACCEPT
tcp
--
0.0.0.0/0
192.168.1.64
ACCEPT
tcp
--
0.0.0.0/0
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
state RELATED,ESTABLISHED
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
destination
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
ACCEPT
tcp
--
0.0.0.0/0
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
ACCEPT
tcp
--
0.0.0.0/0
192.168.1.64
ACCEPT
tcp
--
0.0.0.0/0
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
ACCEPT
tcp
--
0.0.0.0/0
0.0.0.0/0
ACCEPT
tcp
--
0.0.0.0/0
0.0.0.0/0
ACCEPT
udp
--
0.0.0.0/0
0.0.0.0/0
ACCEPT
udp
--
200.33.146.217
0.0.0.0/0
udp spt:53
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
destination