IPTABLES - Laboratorio de Telemática | Lab-273 ¿QUÉ SON LAS IPTABLES? Esta es una herramienta que...
-
Upload
truongthuan -
Category
Documents
-
view
224 -
download
1
Transcript of IPTABLES - Laboratorio de Telemática | Lab-273 ¿QUÉ SON LAS IPTABLES? Esta es una herramienta que...
IPTABLES
¿QUÉ SON LAS IPTABLES?
Esta es una herramienta que permite configurar las reglas del sistema de
filtrado de paquetes del kernel de Linux, desde su versión 2.4.
Con esta herramienta podemos configurar un firewall adecuado a nuestras
necesidades. En tal sentido, la iptables son un conjunto de reglas de filtrado de
paquetes que regulan y controlan el tráfico entre redes (o el tráfico individual
de un equipo).
Las Iptables permiten crear e insertar en el núcleo las distintas reglas de filtrado
que vamos a establecer sobre los paquetes.
¿CÓMO IMPLEMENTAR IPTABLES?
Primero debemos conocer las tablas, comandos, parámetros y acciones que
usan los iptables.
Tablas de IPTABLES
TABLA DESCRIPCION
filter
Esta tabla es usada para filtrar paquetes, por ejemplo con
los objetivos ACCEPT, DROP y REJECT. Cadenas
predefinidas: FORWARD, INPUT y OUTPUT.
nat
Esta tabla permite realizar traducción de direcciones,
pudiendo traducir tanto origen como destino. Nótese que
sólo el primer paquete de la conexión pasa por la tabla,
después todos los paquetes de la conexión son tratados
de la misma forma. Objetivos válidos en esta tabla son
SNAT, DNAT, MASQUERADE (similar a SNAT con IP
dinámica) o REDIRECT. Cadenas predefinidas:
PREROUTING, POSTROUTING y OUTPUT.
mangle
Esta tabla esta diseñada para manipular paquetes.
Ciertos objetivos sólo son aplicables en esta tabla: TOS,
TTL, MARK, SECMARK y CONNSECMARK. Con ellos
podemos modificar los paquetes o marcarlos para luego
realizar QoS o control de seguridad con SELinux. Cadenas
predefinidas: PREROUTING, POSTROUTING, OUTPUT, INPUT y
FORWARD.
raw
Esta tabla permite marcar paquetes que no serán
controlados con estado de conexión. Para ello usaremos
el objetivo NOTRACK y lo haremos en las cadenas
PREROUTING o OUTPUT.
COMANDOS
COMANDOS FUNCION
-A Agregar nueva regla a la cadena especificada
-I Insertar nueva regla antes de la regla número regla
(rulenum)
en la cadena especificada de acuerdo a los parámetros
sometidos.
-R Reemplazar la regla (rulenum) en la cadena
especificada.
-E Modifica el nombre de la cadena.
[nombre-anterior-cadena por nombre-nueva-cadena]
-L Listado de reglas de la cadena especificada. Si no se
determina una
cadena en particular, listará todas las cadenas existentes.
-N Crear nueva cadena asociándola a un nombre.
-P Modifica la acción por defecto de la cadena
preseleccionada.
-D Eliminar la regla número (rulenum) en la cadena
seleccionada.
-Z Pone los contadores de paquetes y bytes a cero en la
cadena seleccionada.
De no poner seleccionar una cadena, pondrá a cero
todos los contadores de
todas las reglas en todas cadenas.
PARÁMETROS
Todas las reglas en iptables tienen definida su condición por los parámetros,
que constituyen su parte primordial. Algunos de estos parámetros son:
PARAMETRO FUNCION
-i Interfaz de entrada (eth0,eth1,eth2...)
-o Interfaz de salida (eth0,eth1,eth2...)
--sport Puerto de origen
--dport Puerto destino
-p El protocolo del paquete a comprobar, tcp, udp, icmp ó
all.
Por defecto es all
-j Esto especifica el objetivo de la cadena de reglas, o sea
una acción
--line-
numbers
Cuando listamos las reglas, agrega el número que ocupa
cada regla
dentro de la cadena
ACCIONES
Y finalmente, las ACCIONES que estarán siempre al final de cada regla que
determinará que hacer con los paquetes afectados. Si no se especifica
ninguna acción, se ejecutará la opción por defecto que cada cadena tiene
asignada. Las acciones serían:
ACCION FUNCION
ACCEPT Paquete aceptado.
REJECT Paquete rechazado. Se envía notificación a través del
protocolo ICMP
DROP Paquete rechazado. Sin notificación
MASQUERADE Enmascaramiento de la dirección IP origen de forma
dinámica.Esta acción es sólo válida en la tabla NAT en la
cadena postrouting.
DNAT Enmascaramiento de la dirección destino, muy
conveniente para re-enrutado de paquetes.
SNAT enmascaramiento de la IP origen de forma similar a
masquerade, pero con IP fija
¿CÓMO SE USAN?
Anteriormente se vio los componentes esenciales para formar las reglas que
determinarán la aceptación o denegación de entrada y salida de paquetes
de nuestra máquina, tanto a través de Internet, como de nuestra propia red
doméstica.
Ahora veremos cómo se construyen las reglas y como hacer un script de shell
en el que se van aplicando aquellas reglas que necesitemos.
Entonces el esquema será
iptables --> -t -->tabla
-->tipo_operación -->cadena
-->regla_con_parámetros -->Acción
Nota: Si no se pone el parámetro –t [nombre de la tabla], por defecto se usa la tabla filter. Pero si se desea usar otro tabla distinta es necesario especificar
EJEMPLO 1.- Permitir acceso al puerto 80 (http) y denegar conexiones telnet
Debemos ingresar como administradores para poder realizar cualquier cambio en los iptables.
sudo –s
: ******
Primero hay que “borrar” las reglas anteriores
iptables -F
iptables -t nat –F
Aceptamos conexiones a nuestro servidor http
iptables -A INPUT -p tcp --dport http -j ACCEPT
Denegamos conexiones remotas con telnet a nuestro equipo
iptables -A INPUT -p tcp --dport telnet -j DROP
Finalmente, denegamos cualquier tipo de conexión entrante
iptables -A INPUT -j DROP
Para ver las reglas establecidas ponemos
iptables -L
Ejemplo 2.- Imaginemos que tenemos una maquina servidor que brinda
servicios web, servicios ftp, servicios dns y de correo. Lo que se desea hacer es
habilitar el tráfico de todos estos servicios solo para la red LAN
(192.168.184.0/24) y permitir el uso de otros puertos solo al servidor de manera
local
Debemos ingresar como administradores para poder realizar cualquier cambio en los iptables.
sudo –s
: ******
Introducimos las reglas necesarias
# Borramos reglas anteriores
iptables -F
# Permitimos que se conecten a nuestro servidor web.
iptables -A INPUT -p TCP --dport 80 -j ACCEPT
# Permitimos la comunicación con el servidor dns
iptables -A INPUT -p UDP --dport 53 -j ACCEPT
iptables -A INPUT -p TCP --dport 53 -j ACCEPT
#Permitimos uso de ftp.
iptables -A INPUT -p TCP --dport 21 -j ACCEPT
#Permitimos acceso pop3.
iptables -A INPUT -p TCP --dport 110 -j ACCEPT
# Permitimos uso de smtp
iptables -A INPUT -p TCP --dport 25 -j ACCEPT
# Permitimos acceso imap.
iptables -A INPUT -p TCP --dport 143 -j ACCEPT
iptables -A INPUT -p UDP --dport 143 -j ACCEPT
#Permitimos todo el tráfico de la LAN
iptables -A INPUT -s 192.168.1.0/24 -j ACCEPT
#Permitimos accesos al localhost
iptables -A INPUT -i lo -j ACCEPT
Verificando reglas
NOTA: Al momento de reiniciar la maquina las reglas serán restablecidas
(borradas) para ello es conveniente crear un programa que ejecute todas
estas reglas para no escribirlas nuevamente.
Para ello creamos un archivo.
nano miiptables.sh
Copiamos en siguiente código e instrucciones.
Una vez guardado damos permiso de ejecución a nuestro archivo
Una vez asignados los permisos correspondientes
ACL (Listas de control de Acceso)
¿QUÉ SON LAS ACLS?
Una lista de control de acceso o ACL (del inglés, Access control list) es un
concepto de seguridad informática usado para fomentar la separación de
privilegios. Las ACL permiten controlar el flujo del tráfico en equipos de redes,
tales como enrutadores y conmutadores. Su principal objetivo es filtrar tráfico,
permitiendo o denegando el tráfico de red de acuerdo a alguna condición.
Las ACLs son un mecanismo que usan diversos dispositivos y aplicaciones para
filtrar o clasificar el tráfico que interceptan. En Cisco las ACLs se usan en
muchos contextos, como mecanismo de seguridad para filtrar selectivamente
tráfico que cruza por el enrutador. Dentro de las ACL más comunes están las
ACL estándar y las ACL extendidas.
¿CÓMO IMPLEMENTAR UN ACL ESTÁNDAR?
La idea de las ACLs estándar es filtrar tráfico con base en las direcciones
origen de los paquetes que entran o salen de una interfaz
La creación de la ACL consiste en crear una secuencia de reglas con un
mismo identificador, cuyo orden filtre el tráfico según los objetivos. Cada regla
tiene la forma:
access-list <n> [ permit | deny ] <referencia1> <wildcard1>
Donde n es el número que identifica la ACL (1 a 99 ó 1300 a 1999 para ACLs
estándar) y referencia / wildcard identifican a los hosts con los que se
compararán los paquetes para aplicarles la acción.
Ejemplo
Se tiene la siguiente Red, compuesta por 2 subredes,
La SUBRED A tiene 1 servidor FTP y 1 maquina cliente (host),
La SUBRED B tiene 2 máquinas clientes (host)
Se desea denegar el acceso de la SUBRED B hacia la SUBRED A
Paso 1.- Nos dirigimos al router R-A e ingresamos a su consola
Paso 2.- Ingresamos a configuración
Router>enable
Router#configure terminal
Enter configuration commands, one per line. End with
CNTL/Z.
Router(config)#
Paso 3.- Creamos una lista control de acceso estándar, nótese que ponemos
la dirección de red de la SUBRED B seguido se su Wildcard. Y ponemos una
línea adicional para que permita garantizar tráfico de otros orígenes.
Router(config)#access-list 1 deny 192.168.1.0 0.0.0.255
Router(config)#access-list 1 permit any
Paso 4.- finalmente asignamos la lista de acceso a la interfaz fastEthernet 0/0.
Nótese que “1” representa a mi lista de control de acceso.
Router(config)#interface fastEthernet 0/0
Router(config-if)#ip access-group 1 out
Router(config-if)#
Para ver si se crearon las listas de acceso escribimos show access-lists
Router#show access-lists
Standard IP access list 1
deny 192.168.1.0 0.0.0.255
permit any
Router#
Haciendo ping desde la maquina PC2 (subred B) hacia la PC3 (subred A)
¿CÓMO IMPLEMENTAR UN ACL EXTENDIDA?
A diferencia de lo que sucede con la ACL estándar, las extendidas permiten
especificar hacia dónde se dirige el tráfico (origen y destino) y con ésta
característica, se puede bloquear o permitir un tráfico mucho más específico
teniendo un mayor control en el control de tráfico entrante y saliente.
access-list <n> [ permit | deny ] [ ip | tcp| udp ]
<referencia1> <wildcard1 [ Origen ]>
<referencia1> <wildcard1 [ Destino ] [Puerto]>
Donde n es el número que identifica la ACL (100 a 199 ó 2000 al 2699 para
ACLs extendidas. Donde además se tiene una referencia de origen y de
destino
Ejemplo
Se tiene la siguiente Red, compuesta por 2 subredes,
La SUBRED A tiene 1 servidor FTP y 1 maquina cliente (host),
La SUBRED B tiene 2 máquinas clientes (host)
Se desea denegar el acceso de la SUBRED B hacia el SERVIDOR más
propiamente al servicio FTP, (Es decir que se tenga acceso a los demás
servicios y que solo el ftp este restringido)
Paso 1.- Nos dirigimos al router R-A e ingresamos a su consola
Paso 2.- Ingresamos a configuración
Router>enable
Router#configure terminal
Enter configuration commands, one per line. End with
CNTL/Z.
Router(config)#
Paso 3.- Creamos una lista control de acceso extendida,
Nótese que ponemos la dirección de red de la SUBRED B (origen) seguido se su
Wildcard. Luego ponemos la dirección y wildcard de nuestro SERVIDOR
(destino) e indicamos que puerto filtrar. Finalmente ponemos una línea
adicional que permita garantizar tráfico de otros orígenes.
Router(config)#access-list 105 deny tcp 192.168.1.0
0.0.0.255 187.1.55.3 0.0.0.0 eq ftp
Router(config)#access-list 105 permit tcp any any
Router(config)#
Paso 4.- finalmente asignamos la lista de acceso a la interfaz fastEthernet 0/0.
Nótese que “105” representa a mi lista de control de acceso.
Router(config)#interface fastEthernet 0/0
Router(config-if)#ip access-group 105 out
Router(config-if)#
Para ver si se crearon las listas de acceso escribimos show access-lists
Router#show access-lists
Extended IP access list 105
deny tcp 192.168.1.0 0.0.0.255 host 187.1.55.3 eq ftp
permit ip any any
PROBANDO
Conectándose al servidor FTP desde la maquina PC1 (subred B)
Como se puede apreciar en las capturas NO es posible acceder al servicio ftp,
sin embargo es posible acceder a otros servicios que ofrece el servidor.
Conectándose al servidor FTP desde la maquina PC3 (Subred A)
Como se puede apreciar en las capturas es posible acceder al servidor ftp y a
cualquier otro servicio que esté disponible