PDF de programación - Aprendiendo a usar iptables desde cero

Imágen de pdf Aprendiendo a usar iptables desde cero

Aprendiendo a usar iptables desde cerográfica de visualizaciones

Publicado el 16 de Noviembre del 2018
476 visualizaciones desde el 16 de Noviembre del 2018
38,2 KB
6 paginas
Creado hace 15a (20/08/2008)
6/11/18

aprendiendo a usar iptables desde cero.txt

1

--------------------------------------------------------------------------------
Aprendiendo a usar IPTABLES desde cero.
--------------------------------------------------------------------------------

Por Jose R. Negreira (www.xouslabs.com.ar y www.virusattack.com.ar) 2008-01-21

Disclaimer
==========

Este artículo se provee absolutamente sin garantía de NINGUN TIPO. (De
hecho, difícilmente encuentren documentación en la cual los autores se hagan
cargo de las cosas que puedan salir mal). El eventual lector es responsable
de las acciones y consecuencias que éste realice y produzca. Espero que esta
aclaración no haya herido la susceptibilidad de nadie, pero la considero muy
pero muy oportuna, para evitar cualquier tipo de problemas...porque a
alguien se le haya ocurrido toquetear/desconfigurar/reventar el firewall de
su empresa, siguiendo las indicaciones de este articulo.

Introducción
============

Al conectarnos a internet en nuestras casas, de forma explícita nos estamos
conectando, en AMBOS sentidos: directamente a la red, "desnudos" si se me
permite la analogía. El objetivo de este artículo es, medinte iptables,
lograr cierta protección y seguridad. Nótese que un firewall no garantiza
100% de seguridad.
Para este artículo, se requieren conocimientos básicos/intermedios acerca de
linux y TCP/IP, obviamente implementado bajo dicho sistema operativo.

Cabe destacar que para utilizar iptables, es necesario tener un kernel
preparado para éste, y el módulo ip_tables cargado. Del mismo modo, si estas
utilizando ipchains, se deben descargar sus módulos antes de cargar los de
iptables.

Iptables es una utilidad de linux que se encarga de darle directivas al
kernel, acerca del filtrado de paquetes TCP/IP. Un paquete TCP/IP consta de
varios campos, con información adicional a los datos que se transmiten en
sí. No viene al caso describir cada uno de ellos, sino los que
consideraremos mas relevantes, es decir, aquellos campos que mediante
iptables, empezaremos a "vigilar". Ejemplo: direccion origen, direccion
destino, puerto origen, puerto de destino, etc.

Como funciona?
==============

El kernel de linux posee (predefinidas "de fábrica") 3 cadenas (chains) de
reglas: INPUT, FORWARD y OUTPUT. Cada paquete TCP/IP que
ingresa/atraviesa/sale desde/hacia una maquina con iptables funcionando,
pasará por la cadena INPUT, FORWARD o OUTPUT respectivamente. Las cadenas,
no son mas que un listado de reglas, con las cuales controlamos cada uno de
los paquetes que pasan. Ahora se preguntaran, que es una regla?. Para evitar
las confusiones, vamos a simplificar su definición al máximo, y luego
mostrarles algunos ejemplos. Una regla consta de 2 partes, y no es mas que
una condición y una acción. Si se cumple la condición se ejecuta la acción.
Simple, verdad?

Algo para tener en cuenta mas adelante: si un paquete atravesó todas las
reglas de una cadena, sin hallar coincidencia, iptables se fijará en la
politica por defecto de esa cadena(default policy).

Kernel? forward? paquetes? cadenas? chains? reglas? Me siento un poco
mareado...
============================================================================
====

A no perder la calma...Resumiendo lo anteriormente dicho:

1) Lo mas importante: tener conocimientos previos en linux y TCP/IP !!!
2) El kernel de linux trae 3 cadenas de reglas (INPUT, FORWARD y OUTPUT)
3) Con iptables se pueden agregar/eliminar reglas (entre otras cosas).

file:///home/raidNFS/www.avmeiecuador.com/pub/manuales/iptables/aprendiendo a usar iptables desde cero.txt

6/11/18

aprendiendo a usar iptables desde cero.txt

2

Y este es el momento ideal para teclear "man iptables", si no lo hiciste
antes, para tener una idea del funcionamiento de esta utilidad. No obstante,
esto no es requisito obligatorio para continuar leyendo.. =)

Supongamos la siguiente situación...Había una vez, una red local
(192.168.1.0), con 50 PC's, de las cuales destacaremos:
1) aquihacker.mired.lan (192.168.1.15) <--- rebautizada para la ocasion =)
2) neutral.mired.lan (192.168.1.18) <--- alguien que no corta ni pincha.
3) jose.mired.lan (192.168.1.20) <--- nuestra adorable Linux Box

Nosotros somos los operadores de "jose.mired.lan", estamos corriendo un
servicio ftp (wu-ftpd*), y estamos enterados de que el muchacho que usa
"aquihacker", es alguien muy curioso, que le gusta investigar en máquinas
ajenas, utilizando su interfaz de red.

* NOTA: No es objetivo del presente artículo discutir vulnerabilidades de
servicios.

Experimentando con paquetes icmp
================================

Vamos a ver cual es el estado de nuestras 3 cadenas, listando lo que hay en
ellas. Para eso ejecutamos el siguiente comando:

[root@jose /]# /sbin/iptables -nL
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

Si la salida obtenida no se parece a lo que ven aqui arriba, significa que
no tienen instalados los módulos correspondientes en el kernel, o que ya hay
un firewall funcionando, o para confundirlos más: significa que ya se
ejecutó un script (probablemente en el inicio del sistema) donde se cargan
las reglas del firewall. Consulten la documentación de la distribución que
instalaron :P

Suponiendo que la salida que obtuvieron es igual a la escrita aqui arriba,
su situación es la siguiente: quiere decir que el firewall esta aceptando
todos los paquetes, o lo que es lo mismo, no filtra absolutamente nada. Esto
nos indica 2 cosas:
- Las 3 cadenas (INPUT/FORWARD/OUTPUT) estan vacías
- Las 3 cadenas tienen como politica default "ACCEPT".

Es normal que al hacer un ping a localhost (nosotros mismos) recibamos
respuesta:

[root@jose /]# ping localhost
PING localhost.localdomain (127.0.0.1) from 127.0.0.1 : 56(84) bytes of
data.
64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=0 ttl=255 time=0.3
ms
64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=1 ttl=255 time=0.1
ms
64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=2 ttl=255 time=0.1
ms
(y así sucesivamente...)

Vamos a agregar una regla, para entender el funcionamiento:

[root@jose /]# /sbin/iptables --append INPUT --protocol icmp --source
127.0.0.1 --jump DROP

Qué es esto? Simple: Agregar (append) la siguiente regla a la cadena INPUT:
al recibir un paquete del tipo icmp (--protocol) con origen (--source)
"127.0.0.1" y con cualquier destino (ya que no lo especificamos), enviamos
ese paquete (--jump) a DROP, que por cierto es lo mismo que dejarlo tirado
=).

file:///home/raidNFS/www.avmeiecuador.com/pub/manuales/iptables/aprendiendo a usar iptables desde cero.txt

6/11/18
Que? No pasó nada, verdad? Seguro? Entonces listemos otra vez las reglas que
tenemos cargadas (te olvidaste como se hacia??)

aprendiendo a usar iptables desde cero.txt

3

[root@jose /]# /sbin/iptables -nL
Chain INPUT (policy ACCEPT)
target prot opt source destination
DROP icmp -- 127.0.0.1 0.0.0.0/0

Chain FORWARD (policy ACCEPT)
target prot opt source destination

Chain OUTPUT (policy ACCEPT)
target prot opt source destination

Notamos que en la cadena INPUT, se nos agregó una regla, cuya función es
impedir que se haga ping desde nuestra propia máquina. Podrán notar que esta
regla no es demasiado útil a los fines prácticos, pero si lo es para
ejemplificar el uso. Y que es lo que faltaría? Comprobar su funcionamiento!!
por supuesto!!

[root@jose /]# ping localhost
PING localhost.localdomain (127.0.0.1) from 127.0.0.1 : 56(84) bytes of
data.
(y se quedará esperando una respuesta que nunca llegará...)

Nuestro firewall está invisible? Claro que no. De hecho, veremos que desde
la pc "aquihacker", hacemos ping sin problemas, y nuestra maquina le
responde.

[root@aquihacker /]# ping jose.mired.lan
PING jose.mired.lan (192.168.1.20) from 192.168.1.15 : 56(84) bytes of data.
64 bytes from 192.168.1.20: icmp_seq=0 ttl=255 time=2.524 msec
64 bytes from 192.168.1.20: icmp_seq=1 ttl=255 time=1.319 msec

Con lo cual, con un simple ping, nuestro amigo operador de "aquihacker"
puede notar la presencia de nuestra PC. A no desesperar que esto recien
comienza.

Restringiendo paquetes provenientes del exterior
================================================

Puesto que nuestro firewall está filtrando los paquetes ICMP locales, y deja
pasar los remotos. Vamos a cambiar un poco las reglas "del juego".

Borramos la regla que anteriormente agregamos:
[root@jose /]# /sbin/iptables --delete INPUT --protocol icmp --source
127.0.0.1 --jump DROP
Esto se logra con la opción "-D", y el resto, es la transcripción EXACTA de
la regla que queremos borrar.
NOTA: conociendo que era la única regla, hubieramos logrado el mismo
resultado escribiendo:

[root@jose /]# /sbin/iptables --delete INPUT 1

Ahora lo que importa: Restringir el acceso a paquetes icmp desde la red!!!

[root@jose /]# /sbin/iptables -A INPUT -p icmp -s 192.168.1.15 -j DROP

Notese que es indistinto escribir -A o --append, -p o --protocol, etc.
Ahora, listamos nuestra cadena INPUT:

[root@jose /]# /sbin/iptables -nL INPUT
Chain INPUT (policy ACCEPT)
target prot opt source destination
DROP icmp -- 192.168.1.15 0.0.0.0/0

Listo, ahora cualquier paquete icmp con origen en 192.168.1.15 será
"DROPeado". Por ello, cuando nuestro amigo curioso hace ping desde su
máquina a la nuestra, jamás tendrá respuesta..

[root@aquihacker /]# ping jose.mired.lan
PING jose.mired.lan (192.168.1.20) from 192.168.1.15 : 56(84) bytes of data.

Listo. Para nuestro amigo, nuestra máquina está invisible, por consiguiente,

file:///home/raidNFS/www.avmeiecuador.com/pub/manuales/iptables/aprendiendo a usar iptables desde cero.txt

4

6/11/18
logramos nuestro objetivo de asegurarla.
Cierto? NOOO!! Sacrilegio!! NO no no y nooooO!

aprendiendo
  • Links de descarga
http://lwp-l.com/pdf14221

Comentarios de: Aprendiendo a usar iptables desde cero (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad