guia8 - IPTables Forward.

UNIVERSIDAD DON BOSCO
FACULTAD DE ESTUDIOS TECNOLÓGICOS
ESCUELA DE COMPUTACIÓN
CICLO: I-2015
GUIA DE LABORATORIO #8
Nombre de la Practica: IPTables Forward
Lugar:
Laboratorio de Redes
Tiempo Estimado:
2 Horas y 30 Minutos
Materia:
Seguridad en Redes
Que el estudiante:


Conozca sobre el funcionamiento de las IPTables Forward.
Aprenda como administrar de mejor forma las IPTables en SO GNU/Linux.
Linux contiene herramientas avanzadas para el filtrado de paquetes de red, Los Kernels anteriores a 2.4
confiaban en IPChains para el filtrado de paquetes y usaban listas de reglas aplicadas a los paquetes en
cada paso del proceso de filtrado. La introducción del Kernel 2.4 trajo consigo IPTables, lo cual es similar
a IPChains pero expande enormemente el ámbito y el control disponible para el filtrado de paquetes de
red.
¿Qué es IPTables?
Es un sistema de firewall vinculado al Kernel de Linux que se ha extendido enormemente a partir del
Kernel 2.4. Al igual que el anterior sistema IPChains, un firewall de IPTables no es como un servidor que
iniciamos o detenemos o que se pueda caer por un error de programación (aunque cabe mencionar
vulnerabilidades que permite DoS), IPTables está integrado con el Kernel, es parte del sistema operativo.
¿Cómo funcionan?
Realmente lo que se hace es aplicar reglas. Para ello se ejecuta el comando iptables, con el que
añadimos, borramos o creamos reaglas. Por ello un firewall de iptables no es sino un simple script de
Shell en el que se van ejecutando las reglas de firewall.
Tablas, Cadenas y Reglas
Tablas:
Desde que un paquete de red llega a la interfaz del equipo, hasta que se procesa y se actúa en
consecuencia según su contenido, el Kernel de los sistemas GNU/Linux realizan distintas operaciones con
el mismo. Para ello, IPTables se vale de un sistema de estructuración en tablas, en cada una de las cuales
se pasa por distinta fases o cadenas. De esta forma podemos encontrar que cualquier paquete de red
tratado por el sistema pasará por las siguientes tablas:

Mangle: En esta tabla se pueden realizar manipulaciones de los paquetes. Esto significa que,
mediante las reglas debidamente introducidas a IPTables, será posible modificar de los campos
que sólo estarán al alcance de esta tabla durante el tránsito del paquete por la pila de red del
sistema. Dicho campos serán:
1.
2.
3.
4.

TOS (TYPE OF SERVICE).
TTL (TIME TO LIVE).
MARK.
SECMARK Y CONNSECMARK.
NAT: Tabla empleada para labores de NAT (Network Address Translation), es decir, a través de
ella se opera sobre los paquetes de los cuales se desee modificar la dirección de origen o
destino, Con ella se podrán realizar modificaciones en los paquetes con diversos objetivos:
1.
2.
3.
4.
DNAT.
SNAT.
MASQUERADE.
REDIRECT.

Raw: Manipulación a bajo nivel de los paquetes. Empleado principalmente para efectuar una
marca en el paquete para evitar que sea interpretador por sistema de seguimiento de conexión.

Filter: Una de las más importantes y, junto a NAT, de las más relevantes a efectos de
configuración de firewalls con IPTables. A través de ella se realiza la aceptación, descarte o
rechazo de los paquetes en función de las reglas predefinidas.
Cadenas:
Cada una de las tablas anteriores podrá hacer uso de las respectivas cadenas que tenga asociadas. Las
cadenas disponibles en función del tipo de tráfico filtrado son las siguientes:





PREROUTING: Tráfico entrante a la máquina, incluido el dirigido a la maquina en sí, antes de que
sea tomada ninguna decisión de encaminamiento sobre el mismo. Debe tenerse en cuenta que
no todo el tráfico recibido por la maquina deberá ir dirigido a la misma, pues esta puede tratarse
de un sistema intermedio, por ejemplo, que comunique toda una red de área local con Internet.
INPUT: Tan sólo el tráfico que vaya destinado a la propia máquina.
FORWARD: Aquí se engloba todo el tráfico que pase por la máquina, pero que no sea generado
por la misma ni enviado directamente a ella.
OUTPUT: Aquel tráfico que sea generado de forma local por el sistema, que puede tener como
destino la propia máquina o cualquier otra.
POSTROUTING: Tráfico de salida, que puede haber sido generado por la misma máquina o por
cualquier otra.
Reglas:
Una vez el paquete concuerde con los parámetros fijados en una de las reglas, se efectuará sobre el
mismo la acción que predefinamos, mediante el parámetro –j. Existe un amplio número de posibles
operaciones con el paquete, sin embargo las más importantes son:



ACCEPT: permitir que el paquete continúe normalmente
DROP: descargar dicho paquete.
REJECT: descartar el paquete pero enviando al emisor del mismo un mensaje de error ICMP con
el código “port unreachable” de forma que tenga constancia de que el paquete que envió ha
sido eliminado.
Parámetros más utilizados a la hora de crear las reglas:





-p: indica el protocolo encapsulado en el campo de datos del paquete IP, que podrá tener el
valor tcp, udp, icmp o all.
-s: la dirección IP que figura como origen del paquete. Se acepta también, aunque no se
recomienda, el poner como parámetro un nombre de host.
-d: semejante al parámetro anterior pero en este caso con el destino del paquete.
-i: interfaz de red local por la que se ha recibido el paquete.
-o: interfaz de red local por la que mandará el paquete.
No.
1
2
Requerimiento
Guía de Laboratorio
PC con VB con OS CentOS
Cantidad
1
1
Ejemplo: se verá cómo implementar el uso de IPTables forward, pero únicamente a manera de
ejemplo, se concentrará más en el manejo de administración de un listado de n IPTables.
1. Introducir un listado de 4 IPTables.
2. Primero aceptar el Messenger de Hotmail para un equipo en específico:
# iptables –A FORWARD –s 192.168.20.101/24 –i eth1 –p tcp - -dport 1863 –j ACCEPT
3. Aceptar el Messenger de Yahoo para un equipo en específico:
# iptables –A FORWARD –s 192.168.20.101/24 –i eth1 –p tcp - -dport 5050 –j ACCEPT
4. Restringir messenger de yahoo a los demas usuarios que pertenezcan a la red:
# iptables –A FORWARD –s 192.168.20.0/24 –i eth1 –p tcp - -dport 5050 –j DROP
5. Restringir messenger de Hotmail a los demas usuarios que pertenezcan a la red:
# iptables –A FORWARD –s 192.168.20.0/24 –i eth1 –p tcp - -dport 1863 –j DROP
6. Ahora verificamos las IPTables que hemos ingresado, además de ver el número de cada
IPTables y así poder eliminar una IPTable en específico.
# iptables –L –n - -line-numbers
7. Para no tener que borrar todas las IPTables si en algún momento se escribió una
incorrectamente utilizamos el siguiente comando:
# iptables –D FORWARD 2
8. Vea nuevamente las IPTables con sus números correspondientes y verifique que
efectivamente se ha elimina la IPTable # donde aceptaba el messeger de yahoo por
puerto 5050.
9. Si en algún momento deseamos ingresar una IPTable, pero no queremos que esta quede
en la última de la lista, sino que un número específico utilizamos el siguiente comando:
# iptables –I <CADENA> <NUMERO> <RESTO DE IPTABLE>
10. Para el caso vamos a ingresar la IPTable que eliminamos anteriormente
# iptables –I FORWARD 2 –s 192.168.20.101/24 –i eth1 –p tcp - -dport 5050 –j ACCEPT.
11. Verifique que la IPTable se encuentra en la posición 2
EJERCICIO: Cree las reglas para permitir los puertos http (80), https (443), DNS (53) tanto
protocolo udp como tcp y por ultimo ftp (21,20), esto para la red 192.168.10.0/24 y además
permitir el puerto telnet (23) solo a la IP 192.168.10.17/24, denegar todo lo demás para la
red.
EJERCICIOS DE ENCRIPTACIÓN, USUARIOS Y GRUPOS E IPTABLES
Encriptación:
Ejercicio 1: Cree una carpeta dentro del escritorio, luego cree un documento de texto, el cual
debe contener su nombre, carrera, carne. Ahora proceda a encriptar dicho archivo tanto de
forma binaria como en formato ASCII.
Ejercicio 2: Implementando el uso de scripts en bash realice un programa que permita encriptar
archivos y des-encriptar dichos archivos, el programa debe preguntar la información del archivo,
la ruta donde se guardara y si lo quiere en formato binario o ASCII.
De igual forma para des-encriptar el programa deberá preguntar la ruta y mostrar los archivos
encriptados que ahí se encuentren, para posteriormente elegir uno.
Usuarios y grupos:
Ejercicio 1: Crear 3 usuarios, Usuario_1 jefe de informática deberá tener todos los permisos
sobre los archivos, tanto los de él como los demás, en el caso del Usuario_2 tendrá permiso de
lectura y modificación de sus archivos, por último el Usuario_3 solo podrá leer sus archivos.
Recuerde crear archivos.txt en cada usuario y scripts.sh sencillos para probar que efectivamente
puedan ser ejecutados.
Ejercicio 2: Se propone crear un entorno de trabajo para realizar prácticas, por tanto debe
existir un maestro, alumnos (alumno1…alumno4) y grupos de práctica (grupo 1 y grupo2).
Para las prácticas individuales, cada alumno tendrá un directorio /home/alumnoX. Dentro de él,
deberá existir un archivo practica_individual1. Este archivo podrá ser visto por el profesor pero
no podrá modificarlo. Cada alumno sólo tendrá acceso a sus archivos.
Ejercicio 3: Tomando en cuenta los usuarios y grupos creados en el ejercicio 2, realice lo
siguiente, crear dos carpetas en /home, una se llamara grupo1 y la otra grupo2, los alumnos 1 y
2 pertenecen al grupo 1 mientras que los alumnos 3 y 4 pertenecen al grupo 2, Todos los
alumnos pertenecientes a un grupox puede escribir en el directorio del grupox pero no pueden
leer ni escribir en el directorio de otros grupos. Los archivos dentro de los grupos podrán ser
vistos y modificados por el profesor.
Ejercicio 4: Siempre tomando en cuenta usuarios y grupos creados en el ejercicio 2, proceda a
crear una carpeta en /home llamada clase_ser_linux, en el que todos los alumnos podrán crear
y modificar sus archivos. Además podrán solo leer los demás alumnos y el profesor.
Ejercicio 5: Realice un script en bash que me permita administrar usuarios y grupos de Linux,
dicho programa tendrá que crear, modificar y eliminar usuarios y grupos, además de agregar
usuarios a grupos si se necesitara.
IPTables
Ejercicio 1: Crear las reglas necesarias para permitir la navegación web, pero no permitiendo el
acceso a Facebook, twitter, youtube, Instagram. Además aceptar el ping de dos PC, y permitir a
una de ellas conexión por ssh, denegar ping de todas las demás PC.
Ejercicio 2: Crear las reglas necesarias para permitir los puertos http, DNS y ftp, Además permita
la conexión por shh de cualquier PC por ultimo denegar todo lo demás.
Ejercicio 3: Crear un script en bash que me permita la administración de IPTables, crear,
eliminar IPtable en específico, insertar, etc.

Investigue como guardar las políticas de iptables y hacer un manual con las IPTables
creadas de la Guía 7 y también de la Guía 8.

Investigar sobre el funcionamiento de la Tabla NAT, agregar ejemplos.