Вы находитесь на странице: 1из 9

Facultad de Ingeniera

Seguridad Informtica II
PRCTICA # 1: FIREWALL PERIMETRAL
NOMBRES DE INTEGRANTES:

BAHENA CANT MARLET


BRISEO DAZ MA. FERNANDA
CARBAJAL DOMNGUEZ MA. DEL CONSUELO
MARTNEZ COELLO LUIS JOEL
MARTNEZ SNCHEZ ANA MARA

PROFESOR:
ING. JESS PICHARDO RAMREZ
VIERNES 18 de marzo de 2011
Grupo: 01

NDICE
1. Objetivo ----------------------------------------------------------------------------------------------------------- 1
2. Desarrollo :Configurar un firewall perimetral con polticas ------------------------------------------------ 1
2.1 Poltica prohibitiva de seguridad por defecto en todos los sentidos ----------------------------- 1
2.2 Permitir cualquier trfico de nuestra interface interna -------------------------------------------- 1
2.3 Permitir slo el trfico necesario desde nuestro servidor DNS ---------------------------------- 2
2.4 Bloquear todo el trfico entrante UDP restante ---------------------------------------------------- 2
2.5 Bloquear ataques del tipo SYN flood ----------------------------------------------------------------- 2
2.6 Bloquear conexiones TCP nuevas cuyos paquetes no contengan la bandera SYN -------------- 2
2.7 Permitir el trfico icmp (ping) slo desde (B) ------------------------------------------------------ 3
2.8 Permitir conexiones SSH slo desde (B) ------------------------------------------------------------ 3
2.9 Permitir conexiones HTTP desde todos los clientes (A), (B) y (C) ------------------------------ 3
2.10 Permitir conexiones FTP slo desde (B) ---------------------------------------------------------- 3
3. Script -------------------------------------------------------------------------------------------------------------- 4
4. Herramientas tcnicas ------------------------------------------------------------------------------------------ 6
5. Conclusiones ----------------------------------------------------------------------------------------------------- 6

1. Objetivo.
Instalar y configurar un Firewall perimetral mediante el cual se proteger un servidor WWW, SSH y
FTP. Para ello se emplear IPTABLES (no son vlidas otras soluciones) y nos basaremos en el
siguiente diagrama:

NOTA: Se asume que la empresa tiene su propio servidor de DNS.

2. Desarrollo.

Configurar un firewall perimetral con las siguientes polticas:

2.1 Poltica prohibitiva de seguridad por defecto en todos los sentidos.


Este tipo de poltica sigue la normativa: Todo est prohibido, excepto los explcitamente permitido
Se declara como:
#Politica prohibitiva, cerramos todo y solo permitimos nuestra salida.
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
# Dejamos entrar y salir lo solicitado.
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

2.2 Permitir cualquier trfico de nuestra interface interna.


Todo lo que salga de la computadora y vaya hacia ella misma lo aceptaremos. Esto se declara de la siguiente
manera:
#Permitimos cualquier trfico de nuestra interface interna
$filtro -A INPUT -i lo -j ACCEPT
$filtro -A FORWARE -i lo -j ACCEPT

2.3 Permitir slo el trfico necesario desde nuestro servidor DNS.


Solo requerimos que haya trfico entre las entradas de internet y el servidor DNS, lo declaramos de la siguiente
manera:
# Permitimos la comunicacin con el servidor dns
$filtro -A INPUT -p udp -s 192.168.1.0/24 -d 192.168.1.1 --dport 53 -j ACCEPT
$filtro -A INPUT -p tcp -s 192.168.1.0/24 -d 192.168.1.1 --dport 53 -j ACCEPT
Con esto permitimos la entrada de datos al DNS (puerto 53 del servidor), slo de las entradas presentadas en la
red (Internet).

2.4 Bloquear todo el trfico entrante UDP restante.


Solo declaramos que cualquier paquete UDP entrante se elimine automticamente.
Esto se realiza de la siguiente manera:
$filtro -A INPUT -p udp -j DROP //Aunque no es necesaria ya que tiene la poltica negada

2.5 Bloquear ataques del tipo SYN flood.


SYN flood enva una sucesin de solicitudes SYN al sistema. Esto es un tipo conocido de ataque y no es
generalmente eficaz contra redes modernas. Trabaja si un servidor asigna recursos despus del encubrimiento
de un SYN, pero antes de que esto haya recibido el ACK. Si hay conexiones entreabiertas con recursos
corriendo sobre el servidor, es posible desbordar todos estos recursos inundando al servidor con mensajes SYN.
Syn flood es un ataque comn. Esto se previene de la siguiente manera:
# Anti-flooding o Bloqueo de ataques del tipo SYN flood(inundacin de tramas SYN).
$filtro -N syn_flood
$filtro -A INPUT -p tcp --syn -j syn_flood
$filtro -A syn_flood -m limit --limit 1/s --limit-burst 3 -j RETURN
$filtro -A syn_flood -j DROP
La primera regla aceptar conexiones para ping cada 1 segundos, con una initial burst de
1. Si este nivel se pasara se registrar el paquete con un PING-DROP en el
archivo/var/log/message. La tercera regla dejar caer el paquete si este trata de cruzar el
lmite. La regla cuarta y final permite la peticin de ping cuando hay una conexin
existente.
* --limit 1/s: Promedio mximo correspondiente al rango de comparacin en segundos.
* --limit-burst 3: Nmero mximo inicial de paquetes para hacer una comparacin

2.6 Bloquear conexiones TCP nuevas cuyos paquetes no contengan la bandera SYN
Denegamos el acceso a los paquetes que no tengan encendida la bandera de SYN. Esto se realiza de la siguiente
manera:
#Bloquear conexiones TCP nuevas cuyos paquetes no contengan la bandera SYN.
$filtro -A INPUT --protocol tcp --tcp-flags ALL SYN -j DENY
4

Las extensiones TCP se cargan automticamente si especificamos "-p tcp".


Con --tcp-flags toma como argumento dos cadenas de indicadores que permiten filtrar segn ciertos indicadores
de TCP. En primer lugar especificamos la mscara: una lista de los indicadores que desea examinar. En segundo
lugar indicamos cuales deben estar activos.
Esto indica que se deben examinar todos los indicadores (ALL es sinnimo de
SYN,ACK,FIN,RST,URG,PSH), pero slo debe estar activo SYN. Hay otro argumento llamado NONE,
que significa ningn indicador.

2.7 Permitir el trfico icmp (ping) slo desde (B).


Permitimos paquetes ICMP desde la direccin 192.168.1.3 hacia nuestro servidor, esto es:
#Permitir trafico del ping solo desde B
$filtro -A INPUT -p icmp -s 192.168.1.3 -d 192.168.1.1 -j ACCEPT

2.8 Permitir conexiones SSH slo desde (B).


Esta poltica es muy parecida a la vista con DNS, en este caso con SSH (puerto 22).
Esto quedara de la siguiente manera:
#Permitir conexiones SSH solo desde B
$filtro -A INPUT p tcp -s 192.168.1.3 -d 192.168.1.1 --dport 22 -j ACCEPT

2.9 Permitir conexiones HTTP desde todos los clientes (A), (B) y (C).
Esto es igual que con el anterior solo que con el puerto 80 (predeterminado para el servicio http).
Quedara de la siguiente manera:
#Permitir conexiones HTTP solo desde A,B,C
for k in 2 3 4
do
$filtro -A INPUT p tcp -s 192.168.1.$k -d 192.168.1.1 --dport 80 -j ACCEPT
Done

2.10 Permitir conexiones FTP slo desde (B).


Igual que el anterior solo que con los puertos de escucha y respuesta de ftp (20, 21).
Quedara de la siguiente manera:
#Permitir conexiones FTP solo desde B,
$filtro -A INPUT p tcp -s 192.168.1.3 -d 192.168.1.1 --dport 20 -j ACCEPT
$filtro -A INPUT p tcp -s 192.168.1.3 -d 192.168.1.1 --dport 21 -j ACCEPT

3. Realizar un script o guardar la configuracin del firewall para cargar las reglas IPTables nuevamente.
(Recordemos que con el comando iptables slo se guardan en memoria). La memoria tcnica deber
incluir el script o archivo de configuracin del firewall.
#!/bin/bash
#Definimos que tipo de filtrar usaremoss
filtrar=/sbin/iptables
#Politica prohibitiva.Cerramos todo.Dejamos entrar y salir lo solicitado
$filtrar -P INPUT DROP
$filtrar -P OUTPUT ACCEPT
$filtrar -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$filtrar -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#Permitimos cualquier trfico de nuestra interface interna
$filtrar -A INPUT -i lo -j ACCEPT
$filtrar -A FORWARD -i lo -j ACCEPT
# Permitimos la comunicacin con el servidor dns
$filtrar -A INPUT -p udp -s 192.168.1.0/24 -d 192.168.1.1 --dport 53 -j ACCEPT
$filtrar -A INPUT -p tcp -s 192.168.1.0/24 -d 192.168.1.1 --dport 53 -j ACCEPT
#Bloquear todo el trfico entrante UDP restante.
$filtrar -A INPUT -p udp -j DROP
# Anti-flooding o Bloqueo de ataques del tipo SYN flood(inundacin de tramas SYN).
$filtrar -N syn_flood
$filtrar -A INPUT -p tcp --syn -j syn_flood
$filtrar -A syn_flood -m limit --limit 1/s --limit-burst 3 -j RETURN
$filtrar -A syn_flood -j DROP
#Bloquear conexiones TCP nuevas cuyos paquetes no contengan la bandera SYN.
$filtrar -A INPUT --protocol tcp --tcp-flags ALL SYN -j DROP
#Permitir trafico del ping solo desde B
$filtrar -A INPUT -p icmp -s 192.168.1.3 -d 192.168.1.1 -j ACCEPT
#Permitir conexiones SSH solo desde B
$filtrar -A INPUT -p tcp -s 192.168.1.3 -d 192.168.1.1 --dport 22 -j ACCEPT
#Permitir conexiones HTTP solo desde A,B,C
for k in 2 3 4
do
$filtrar -A INPUT -p tcp -s 192.168.1.$k -d 192.168.1.1 --dport 80 -j ACCEPT
done
#Permitir conexiones FTP solo desde B,
$filtrar -A INPUT -p tcp -s 192.168.1.3 -d 192.168.1.1 --dport 20 -j ACCEPT
$filtrar -A INPUT -p tcp -s 192.168.1.3 -d 192.168.1.1 --dport 21 -j ACCEPT
6

Para lograr que el firewall se ejecute de forma automtica, al prender nuestro servidor, debemos hacer lo
siguiente:
Guardar el script
Asignar permisos adecuados
Ejecutarlo
Asignarlo como archivo de arranque
El fichero se puede llamar, firewall.sh al cual debemos darle permisos de ejecucin:
$ chmod +x firewall.sh
Ahora ejecutamos el script, de la siguiente manera:
$ sudo sh firewall.sh
Para verificar que nuestras reglas se han cargado, hacemos lo siguiente:
$ sudo iptables L
Lo que arroja una salida que viene a ser algo as:
root@anymms:/home/anita # iptables -L
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT udp -- anywhere anywhere udp dpt:domain
ACCEPT tcp -- anywhere anywhere tcp dpt:domain
ACCEPT all -- glorioso anywhere
ACCEPT all -- minime anywhere
ACCEPT all -- placebo anywhere
ACCEPT all -- anywhere anywhere
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
root@anymms:/home/anita #
Para hacer que las reglas se carguen al inicio (cuando se inicia el sistema), copiamos el script al directorio
/etc/init.d/ y lo ponemos de forma por default:
$ sudo cp firewall.sh /etc/init.d/
$ sudo update-rc.d firewall.sh defaults
De esta forma, asignamos el script para que sea llamado a ejecucin en el nivel de arranque configurado por
default.

4. Herramientas tcnicas.

Servidor HTTP Apache.


#apt-get install apache2

Servidor FTP
#apt-get install proftpd

Servidor SSH
#apt-get install sshd

5. Conclusiones.
A travs de esta prctica, hemos comprendido mejor la funcin que tiene un firewall ya sea a nivel red o a nivel
sistema operativo, y del papel que desempea dentro del campo de la seguridad informtica. Pero al tratarse de
un firewall perimetral, se trata de un firewall a nivel red local. Un firewall filtra las conexiones TCP/IP
presentes entre una red local de una organizacin e internet. Es el tipo de firewall ms usado para proteger la
red de una empresa de aquellos ataques o trfico externos a la red local en estudio.
Implementar este tipo de firewall en el sistema operativo Linux no nos result muy difcil, ya que con slo
ejecutar el script expuesto en las pginas anteriores nos ahorramos el hecho de escribir una serie de comandos
que difcilmente podramos memorizar cada que queramos llevar a cabo este firewall a nuestra red local.

NOTA IMPORTANTE:
El funcionamiento de los comandos y de esta prctica la exponemos en un video que se encuentra en la
siguiente liga de youtube:

http://www.youtube.com/watch?v=3SOpQUh8o-8

Вам также может понравиться