Está en la página 1de 40

FIREWALL Y NAT

en Linux
Versin 0.1




















Este documento da una introduccin a FIREWALL y NAT, y describe cmo
activar el iptables en un servidor Linux para utilizarlo con estos servicios.






Roberto Carvajal Salamanca
mailto:asath@ColombiaLinux.org
Docente Facultad de Ingeniera de Sistemas
Director Grupo Linux UNAB
J orge Andrs Syago P.
asath@ColombiaLinux.org
Estudiante de Ingeniera de Sistemas
Coordinador Grupo Linux UNAB
Universidad Autnoma de Bucaramanga
Bucaramanga, Colombia, 14 de junio de 2002




TABLA DE CONTENIDO




1 Prlogo y retrospectiva
2. FIREWALLS Y SEGURIDAD EN INTERNET
Introduccin
2.1 Firewalls
2.1.1 Beneficios de un firewall en Internet
2.1.2 Limitaciones de un firewall
2.2 Bases para el diseo decisivo del firewall
2.2.1 Polticas del firewall
2.2.2 Poltica interna de seguridad
2.2.3. Costo del firewall
2.2.4 Componentes del sistema firewall
2.3 Software filtra-paquetes
2.3.1 Servicio dependiente del filtrado
2.3.2 Servicio independiente del filtrado
2.3.3 Beneficios del software filtra-paquetes
2.3.4 Limitaciones del filtra-paquetes
3. NAT (Network Address Translator)
3.1 NAT
3.1.1 Quin puede beneficiarse de NAT?
3.1.2 Quin no necesita NAT?
3.2 Cmo funciona NAT?
4. IPTABLES
4.1 Qu es iptables?
4.2 Uso bsico de iptables
4.2.1 Crear una nueva regla al final de las ya existentes en una chain
determinada
4.2.2 Insertar una regla en una posicin determinada de la lista de reglas de
una chain determinada
4.2.3 Borrar una regla en una posicin determinada de la lista de reglas de una
chain determinada
4.2.4 Borrar todas las reglas de una chain determinada
4.2.5 Listar las reglas de una chain determinada
4.2.6 Explicacin de parmetros
4.3 iptables como FIREWALL
4.3.1 Creacin de un firewall domstico (ejemplo 1)
4.3.2 Creacin de un firewall avanzado (ejemplo 2)
4.4 iptables como NAT
4.4.1 Creacin de un NAT bsico (ejemplo nico)
# Compartir de archivos
# Mensajera instantnea
# Otros
4.5 Herramientas de iptables
4.5.1 iptables-save
4.5.2 iptables-restore
5. Anexos
5.1 FireStarter (GUI para configurar iptables)
5.2 Hogwash (mezcla de Firewall y NIDS)
6. Bibliografa y crditos



1 Prlogo y retrospectiva
Encontramos muy sencillo, como nuevo usuario, configurar iptables en los
ncleos nuevos, esto es, 2.4.x. Existen diversos documentos y pginas web que
explican en detalle este procedimiento. Consideramos que los problemas que se
pueden presentar para aprender iptables tienen como origen la falta de
conocimientos relacionados con la forma en que se comunican entre s
mquinas en red, ms que a la estructura de creacin de reglas de filtrado del
iptables.
Decidimos escribir esta gua como punto de partida para nuevos usuarios. Esta
gua est basada en otros documentos encontrados en la red, en libros y en
experiencias propias. Los autores de los documentos desde los que se
extrajeron apartes son mencionados al final de sta gua. Nuestra labor fue
complementar, recopilar y corregir detalles de dichos textos, as como darle el
orden que tiene, para que su entendimiento fuese rpido.
Por favor sintase libre de enviarme cualquier crtica o comentario a
rcarvaja@bumanga.unab.edu.co asath@ColombiaLinux.org. Si algo de lo aqu
explicado le parece errneo, o si echa algo de menos, sus comentarios sern
bienvenidos y de seguro podrn influenciar el futuro de esta gua.
La primera parte de esta gua contiene informacin terica de la aplicacin de
firewalls para aumentar la seguridad de los servidores, pretendiendo dar
conocimientos bsicos generales que permitan entender la importancia y el
significado de este mecanismo de seguridad. La segunda parte est pensada
para ser rpida a fin conseguir que el iptables funcione en el plazo de tiempo
ms corto posible.
Podr encontrar las ltimas novedades de esta gua, a partir de agosto de
2002, en la direccin: http://www.ColombiaLinux.org, el cual ser un Portal de
Noticias Linux para la poblacin colombiana, principalmente (cua publicitaria).
Si tiene alguna pregunta tcnica sobre iptables por favor entre a una lista de
correo de Linux o en la documentacin que acompaa al iptables.
Este documento puede redistribuirlo bajo los trminos de la GNU General Public
License.


Los autores no se responsabilizan de ningn dao sufrido debido a las
acciones realizadas basadas en este documento.


2. FIREWALLS Y SEGURIDAD EN
INTERNET

Introduccin
La seguridad ha sido el tema principal a tratar cuando una organizacin desea
conectar su red privada a Internet. Sin tomar en cuenta el tipo de negocios, se
ha incrementado el numero de usuarios de redes privadas por la demanda del
acceso a los servicios de Internet. Tal es el caso de la World Wide Web
(WWW), Internet Mail (e-mail), Telnet, y File Transfer Protocol (FTP).
Adicionalmente las organizaciones buscan las ventajas que ofrecen las paginas
en el WWW y los servidores FTP de acceso pblico en el Internet.
Los administradores de red tienen que incrementar todo lo relacionado con la
seguridad de sus sistemas, debido a que se expone la organizacin privada de
sus datos as como la infraestructura de su red a los Expertos de Internet
(Internet Crakers). Para superar estos temores y proveer el nivel de proteccin
requerida, la organizacin necesita seguir una poltica de seguridad para
prevenir el acceso no-autorizado de usuarios a los recursos propios de la red
privada, y protegerse contra la exportacin privada de informacin. Todava,
aun si una organizacin no est conectada a Internet, sta debera establecer
una poltica de seguridad interna para administrar el acceso de usuarios a
porciones de red y proteger sensitivamente la informacin secreta.

2.1 Firewalls
Un firewall (muro de fuego) en Internet es un sistema o grupo de sistemas que
impone una poltica de seguridad entre la organizacin de red privada y el
Internet. El firewall determina cules de los servicios de red pueden ser
accesados dentro de sta por los que estn fuera, es decir, quin puede entrar
a utilizar los recursos de red pertenecientes a la organizacin.
Para que un firewall sea efectivo, todo trafico de informacin a travs de
Internet deber pasar a travs del mismo, donde podr ser inspeccionada la
informacin. El firewall podr nicamente autorizar el paso del trafico, y l
mismo podr ser inmune a la penetracin. Desafortunadamente, este sistema
no puede ofrecer proteccin alguna una vez que el agresor lo traspasa o
permanece en torno a ste.

Esto es importante, ya que debemos notar que un firewall de Internet no es
justamente un ruteador, un servidor de defensa, o una combinacin de
elementos que proveen seguridad para la red. El firewall es parte de una
poltica de seguridad completa que crea un permetro de defensa diseada para
proteger las fuentes de informacin. Esta poltica de seguridad podr incluir
publicaciones con las guas de ayuda donde se informe a los usuarios de sus
responsabilidades, normas de acceso a la red, poltica de servicios en la red,
poltica de autenticidad en acceso remoto o local a usuarios propios de la red,
normas de dial-in y dial-out, reglas de encriptacin de datos y discos, normas
de proteccin de virus, y entrenamiento. Todos los puntos potenciales de
ataque en la red podrn ser protegidos con el mismo nivel de seguridad. Un
firewall de Internet sin una poltica de seguridad comprensiva es como poner
una puerta de acero en una tienda.


2.1.1 Beneficios de un firewall en Internet
Los firewalls en Internet administran los accesos posibles del Internet a la red
privada. Sin un firewall, cada uno de los servidores propios del sistema se
expone al ataque de otros servidores en Internet.
El firewall permite al administrador de la red definir un "choke point" (embudo),
manteniendo al margen los usuarios no-autorizados (tal como hackers, crakers,
vndalos, y espas) fuera de la red, prohibiendo potencialmente la entrada o
salida al vulnerar los servicios de la red, y proporcionar la proteccin para
varios tipos de ataques posibles. Uno de los beneficios clave de un firewall en
Internet es que ayuda a simplificar los trabajos de administracin, una vez que
se consolida la seguridad en el sistema firewall, es mejor que distribuirla en
cada uno de los servidores que integran nuestra red privada.
El firewall ofrece un punto donde la seguridad puede ser monitoreada. Si
aparece alguna actividad sospechosa, ste generara una alarma ante la
posibilidad de que ocurra un ataque, o suceda algn problema en el trnsito de
los datos.
Un firewall de Internet es el punto perfecto para auditar o registrar el uso del
Internet. Esto permite al administrador de red justificar el gasto que implica la
conexin a Internet, localizando con precisin los cuellos de botella potenciales
del ancho de banda, y promueve el mtodo de cargo a los departamentos
dentro del modelo de finanzas de la organizacin.
Un firewall de Internet ofrece un punto de reunin para la organizacin. Si una
de sus metas es proporcionar y entregar servicios informacin a consumidores,
el firewall de Internet es ideal para desplegar servidores WWW y FTP.
Finalmente, el firewall puede presentar los problemas que genera un punto de
falla simple. Enfatizando, si este punto de falla se presenta en la conexin a
Internet, aun as la red interna de la organizacin puede seguir operando -
nicamente el acceso a Internet est perdido-.
La preocupacin principal de un administrador de red son los mltiples accesos
a Internet, que se pueden registrar con un monitor y un firewall en cada punto
de acceso que posee la organizacin hacia el Internet. Estos dos puntos de
acceso significa dos puntos potenciales de ataque a la red interna que tendrn
que ser monitoreados regularmente.


2.1.2 Limitaciones de un firewall
Un firewall no puede proteger contra aquellos ataques que se efecten fuera de
su punto de operacin.
Por ejemplo, si existe una conexin dial-out sin restricciones que permita entrar
a nuestra red protegida, el usuario puede hacer una conexin SLIP o PPP a
Internet. Los usuarios con sentido comn suelen "irritarse" cuando se requiere
una autenticacin adicional requerida por un Firewall Proxy server (FPS) lo
cual se puede ser provocado por un sistema de seguridad circunvecino que est
incluido en una conexin directa SLIP o PPP del ISP.
Este tipo de conexiones deriva la seguridad provista por firewall construido
cuidadosamente, creando una puerta de ataque. Los usuarios pueden estar
conscientes de que este tipo de conexiones no son permitidas como parte
integral de la arquitectura de la seguridad en la organizacin.
El firewall no puede proteger de las amenazas a que est sometido por
traidores o usuarios inconscientes. El firewall no puede prohibir que los
traidores o espas corporativos copien datos sensitivos en disquetes o tarjetas
PCMCIA y substraigan stas del edificio.
El firewall no puede proteger contra los ataques de la "Ingeniera Social", por
ejemplo un Hacker que pretende ser un supervisor o un nuevo empleado
despistado, persuade al menos sofisticado de los usuarios a que le permita usar
su contrasea al servidor del corporativo o que le permita el acceso "temporal"
a la red.
Para controlar estas situaciones, los empleados deberan ser educados acerca
de los varios tipos de ataque social que pueden suceder, y a cambiar sus
contraseas si es necesario peridicamente. El firewall no puede proteger
contra los ataques posibles a la red interna por virus informativos a travs de
archivos y software. Obtenidos del Internet por sistemas operativos al momento
de comprimir o descomprimir archivos binarios, el firewall de Internet no puede
contar con un sistema preciso de SCAN 4 para cada tipo de virus que se puedan
presentar en los archivos que pasan a travs de l.
La solucin real est en que la organizacin debe ser consciente en instalar
software anti-viral en cada despacho para protegerse de los virus que llegan
por medio de disquetes o cualquier otra fuente.
Finalmente, el firewall de Internet no puede proteger contra los ataques
posibles en la transferencia de datos, estos ocurren cuando aparentemente
datos inocuos son enviados o copiados a un servidor interno y son ejecutados
despachando un ataque.
Por ejemplo, una transferencia de datos podra causar que un servidor
modificara los archivos relacionados a la seguridad haciendo ms fcil el acceso
de un intruso al sistema.
Como nosotros podemos ver, el desempeo de los servidores Proxy en un
servidor de defensa es un excelente medio de prohibicin a las conexiones
directas por agentes externos y reduce las amenazas posibles por los ataques
con transferencia de datos.


2.2 Bases para el diseo decisivo del firewall
Cuando se disea un firewall de Internet, se tiene que tomar algunas decisiones
que pueden ser asignadas por el administrador de red:
Posturas sobre la poltica del Firewall.
La poltica interna propia de la organizacin para la seguridad total.
El costo financiero del Proyecto "Firewall".
Los componentes o la construccin de secciones del Firewall.
2.2.1 Polticas del firewall
Las posturas del sistema firewall describen la filosofa fundamental de la
seguridad en la organizacin. Estas son dos posturas diametralmente opuestas
que la poltica de un firewall de Internet puede tomar:
"No todo lo especficamente permitido est prohibido"
"Ni todo lo especficamente prohibido est permitido"
La primera postura asume que un firewall puede obstruir todo el trfico y cada
uno de los servicios o aplicaciones deseadas necesariamente para ser
implementadas bsicamente caso por caso.
Esta propuesta es recomendada nicamente a un limitado nmero de servicios
soportados cuidadosamente seleccionados en un servidor. La desventaja es que
el punto de vista de "seguridad" es ms importante que - facilitar el uso - de los
servicios y stas limitantes numeran las opciones disponibles para los usuarios
de la comunidad. Esta propuesta se basa en una filosofa conservadora donde
se desconocen las causas acerca de los que tienen la habilidad para conocerlas.
La segunda postura asume que el firewall puede desplazar todo el trafico y que
cada servicio potencialmente peligroso necesitar ser aislado bsicamente caso
por caso. Esta propuesta crea ambientes ms flexibles al disponer mas servicios
para los usuarios de la comunidad. La desventaja de esta postura se basa en la
importancia de "facilitar el uso" que la propia - seguridad del sistema.
Tambin adems, el administrador de la red est en su lugar de incrementar la
seguridad en el sistema conforme crece la red. Desigual a la primer propuesta,
esta postura est basada en la generalidad de conocer las causas acerca de los
que no tienen la habilidad para conocerlas.


2.2.2 Poltica interna de seguridad
Tan discutidamente escuchada, un firewall de Internet no est solo - es parte
de la poltica de seguridad total en una organizacin -, la cual define todos los
aspectos en lo competente al permetro de defensa. Para que sta sea exitosa,
la organizacin debe conocer qu es lo se est protegiendo. La poltica de
seguridad se basar en una conduccin cuidadosa analizando la seguridad, la
asesora en caso de riesgo, y la situacin del negocio. Si no se posee la
informacin detallada de la poltica a seguir, aunque sea un firewall
cuidadosamente desarrollado y armado, estar exponiendo la red privada a un
posible atentado.


2.2.3. Costo del firewall
Cunto puede ofrecer una organizacin por su seguridad?. Un simple paquete
de filtrado firewall puede tener un costo mnimo ya que la organizacin necesita
un ruteador conectado al Internet, y dicho paquete ya est incluido como
estndar del equipo. Un sistema comercial de firewall provee un incremento
ms a la seguridad pero su costo aumenta dependiendo de la complejidad y el
nmero de sistemas protegidos. Si la organizacin posee al experto en casa, un
firewall casero puede ser construido con software de dominio pblico, pero este
ahorro de recursos repercute en trminos del tiempo de desarrollo y el
despliegue del sistema firewall.
Finalmente requiere de soporte continuo para la administracin, mantenimiento
general, actualizacin de software, reparacin de seguridad, e incidentes de
manejo.


2.2.4 Componentes del sistema firewall
Despus de las decisiones acerca de los ejemplos previos, la organizacin
puede determinar especficamente los componentes del sistema. Un firewall
tpico se compone de uno, o una combinacin, de los siguientes obstculos.
Filtra-paquetes.
Gateway a Nivel-aplicacin.
Gateway a Nivel-circuito.
En esta gua se discutir lo referente a las opciones para la edificacin de
obstculos basados en el sistema filtra-paquetes nativo de Linux. Se describir
cmo se puede trabajar con l para construir un efectivo sistema firewall de
Internet.


2.3 Software filtra-paquetes
Toma las decisiones de rehusar / permitir el paso de cada uno de los paquetes
que son recibidos. El programa examina cada data grama para determinar si
este corresponde a uno de sus paquetes filtrados y que a su vez haya sido
aprobado por sus reglas. Las reglas de filtrado se basan en revisar la
informacin que poseen los paquetes en su encabezado, lo que hace posible su
desplazamiento en un proceso de IP. Esta informacin consiste en la direccin
IP fuente, la direccin IP destino, el protocolo de encapsulado (TCP, UDP,ICMP,
o IP tunnel), el puerto fuente TCP/UDP, el puerto destino TCP/UDP, el tipo de
mensaje ICMP, la interfaz de entrada del paquete, y la interfaz de salida del
paquete. Si se encuentra la correspondencia y las reglas permiten el paso del
paquete, ste ser desplazado de acuerdo a la informacin de la tabla de
filtrado, si se encuentra la correspondencia y las reglas niegan el paso, el
paquete es descartado. Si stos no corresponden a las reglas, un parmetro
configurable por incumplimiento determina descartar o desplazar el paquete.


2.3.1 Servicio dependiente del filtrado
Las reglas acerca del filtrado de paquetes a travs de un programa para
rehusar / permitir el trfico est basado en un servicio especifico, desde
entonces muchos servicios vierten su informacin en numerosos puertos
TCP/UDP conocidos.
Por ejemplo, un servidor Telnet est a la espera para conexiones remotas en el
puerto 23 TCP y un servidor SMTP espera las conexiones de entrada en el
puerto 25 TCP. Para bloquear todas las entradas de conexin Telnet, el filtro
simplemente descarta todos los paquetes que contengan el valor del puerto
destino TCP igual a 23. Para restringir las conexiones Telnet a un limitado
numero de servidores internos, el filtro podr rehusar el paso a todos aquellos
paquetes que contengan el puerto destino TCP igual a 23 y que no contengan
la direccin destino IP de uno de los servidores permitidos.
Algunas caractersticas tpicas de filtrado que un administrador de redes podra
solicitar en un filtra-paquetes para perfeccionar su funcionamiento serian:
Permite la entrada de sesiones Telnet nicamente a una lista especifica
de servidores internos
Permite la entrada de sesiones FTP nicamente a los servidores internos
especificados
Permite todas las salidas para sesiones Telnet
Permite todas las salidas para sesiones FTP
Rehusar todo el trafico UDP
2.3.2 Servicio independiente del filtrado
Este tipo de ataques ciertamente es difcil de identificar usando la informacin
bsica de los encabezados debido a que stos son independientes al tipo de
servicio. Los filtros pueden ser configurados para protegerse de este tipo de
ataques pero son ms difciles de especificar, por lo tanto, las reglas para el
filtrado requieren de informacin adicional que pueda ser estudiada y
examinada por la tabla de filtrado, inspeccionando las opciones especificas IP,
revisando fragmentos especiales de edicin, etc. Algunos ejemplos de este tipo
de ataques incluye:
Agresiones originadas por el direccionamiento I P
Para este tipo de ataque, el intruso trasmite paquetes desde afuera
pretendiendo pasar como servidor interno - los paquetes poseen una direccin
fuente IP falsa de un servidor interno del sistema -. El agresor espera que
usando este impostor se pueda penetrar al sistema para emplearlo
seguramente como direccin fuente donde los paquetes que trasmita sean
autentificados y los del otro servidor sean descartados dentro del sistema. Los
ataques por seudo-fuentes pueden ser frustrados si descartamos la direccin
fuente de cada paquete con una direccin fuente "interna" si el paquete llega a
una de las interfaces del filtro "externo".
Agresiones originadas en el filtro
En un ataque de filtro, la estacin de origen especifica la ruta que un paquete
deber tomar cuando cruce a travs del Internet. Este tipo de ataques es
diseado para cuantificar las derivaciones de seguridad y encauzan al paquete
por un inesperado camino a su destino. Los ataques originados en el filtro
pueden ser frustrados simplemente descartando todos los paquetes que
contengan fuentes de filtrado opcionales.
Agresiones por fragmentacin
Por este tipo de ataques, los intrusos utilizan las caractersticas de
fragmentacin para crear fragmentos extremadamente pequeos y obligan a la
informacin del encabezado TCP a separarse en paquetes. Estos pequeos
fragmentos son diseados para evitar las reglas definidas por el filtrado,
examinando los primeros fragmentos y el resto pasa sin ser visto. Aunque si
bien nicamente es explotado por sencillos decodificadores, una agresin
pequesima puede ser frustrada si se descartan todos los paquetes donde el
tipo de protocolo es TCP y la fragmentacin de compensacin IP es igual a 1.


2.3.3 Beneficios del software filtra-paquetes
La mayora de sistemas firewall son desplegados usando nicamente filtra-
paquetes. Otros, planean los filtros y configuran el ruteador, sea este pequeo
o no. El costo para implementar la filtracin de paquetes no es cara, desde que
los componentes bsicos de los ruteadores incluyen revisiones estndar de
software para dicho efecto. Desde entonces el acceso a Internet es
generalmente provisto a travs de interfaces WAN, optimizando la operacin
del filtro, moderando el trfico y definiendo menos filtros. Finalmente, el filtra-
paquetes es por lo general transparente a los usuarios finales y a las
aplicaciones por lo que no se requiere de entrenamiento especializado o
software especfico que tenga que ser instalado en cada uno de los servidores.


2.3.4 Limitaciones del filtra-paquetes
Definir el filtrado de paquetes puede ser una tarea compleja porque el
administrador de redes necesita tener un estudio detallado de varios servicios
de Internet, como los formatos del encabezado de los paquetes, y los valores
especficos esperados a encontrarse en cada campo. Si las necesidades de
filtrado son muy complejas, se necesitar soporte adicional, con lo cual el
conjunto de reglas de filtrado puede empezar a complicarse y alargar el
sistema, haciendo ms difcil su administracin y comprensin. Finalmente,
stas sern menos fciles de verificar para las correcciones de las reglas de
filtrado despus de ser configuradas. Potencialmente se puede dejar una
localidad abierta sin probar su vulnerabilidad.
Cualquier paquete que pasa directamente a travs de un filtra-paquetes puede
ser posiblemente usado como parte inicial de un ataque dirigido de datos.
Haciendo memoria, este tipo de ataques ocurren cuando los datos
aparentemente inocuos se desplazan por el filtro a un servidor interno. Los
datos contienen instrucciones ocultas que pueden causar que el servidor
modifique su control de acceso y seguridad relacionando sus archivos y
facilitando al intruso el acceso al sistema.
Generalmente, los paquetes en torno al filtro disminuyen conforme el nmero
de filtros utilizados se incrementa. Los filtra-paquetes son optimizados para
extraer la direccin destino IP de cada paquete, haciendo relativamente simple
la consulta a la tabla de reglas de filtrado, y el desplazamiento de paquetes
para la interfaz apropiada de la transmisin. Esto puede consumir ciclos de CPU
e impactar el perfecto funcionamiento del sistema. El filtrado de paquetes IP no
puede ser capaz de proveer el suficiente control sobre el trfico. Un filtra-
paquetes puede permitir o negar un servicio en particular, pero no es capaz de
comprender el contexto / dato del servicio.
Por ejemplo, un administrador de red necesita filtrar el trafico de la capa de
aplicacin - limitando el acceso a un subconjunto de comandos disponibles por
FTP o Telnet-, bloquear la importacin de Mail o Newsgroups concerniente a
tpicos especficos. Este tipo de control es muy perfeccionado a las capas altas
por los servicios de un servidor Proxy y en Gateways a Nivel-aplicacin.


3. NAT (Network Address Translator)

Con el paso de algunos aos, Internet ha experimentado una crisis en las
direcciones, logrando que el direccionamiento IP sea menos generoso en los
recursos que proporciona. Por este medio se organizan las compaas
conectadas a Internet, debido a esto hoy no es posible obtener suficientes
registros de direcciones IP para responder a la poblacin de usuarios en
demanda de los servicios. Un firewall, adems de servir como filtro de
paquetes, es un lugar apropiado para desplegar un Traductor de Direcciones
de Red (NAT). Esto puede ayudar aliviando el espacio de direccionamiento,
acortando y eliminando lo necesario para re-enumerar cuando la organizacin
cambie del Proveedor de Servicios de Internet (ISP) .
Es posible conectar sus mquinas clientes (corriendo con cualquier sistema
operativo) al servidor, tanto con Ethernet como con otro tipo de conexiones,
como es el caso de enlaces ppp.


3.1 NAT
Si un servidor est conectado a Internet con el servicio de NAT habilitado, las
computadoras conectadas a l (bien en la misma red local, bien por mdem)
tambin pueden conectarse a Internet, incluso aunque no tengan una direccin
IP oficial asignada.
Esto permite a un conjunto de mquinas acceder transparentemente a Internet
ocultas tras la mquina pasarela, la cual aparece como el nico sistema que
est usando Internet.


3.1.1 Quin puede beneficiarse de NAT?
Si tiene un servidor conectado a Internet, y
si tiene algunas computadoras con TCP/IP conectadas con esa mquina
en una subred local (LAN) , y/o
si su servidor tiene ms de un mdem y acta como un servidor PPP o
SLIP conectando a otros, los cuales no tienen asignada una direccin IP
oficial. (Estas mquinas son representadas por otras mquinas
presentes).
y por supuesto, si quiere que esas otras mquinas estn en Internet sin
gastar dinero extra
3.1.2 Quin no necesita NAT?
Si su mquina es un servidor aislado conectado a Internet, es intil usar NAT, o
si ya tiene direcciones asignadas a sus otras mquinas, entonces no
necesita NAT,
y por supuesto, si no le gusta la idea de una salida gratuita a Internet.
3.2 Cmo funciona NAT?
Representacin de la configuracin ms simple, suponiendo una red privada
clase C:
+--------------+
| Cliente | Ethernet
| A |---->:
| 192.168.1.11 | :
+--------------+ :
: +----------+
+--------------+ : 192.168.1.1 | Servidor | enlace
| Cliente | :------------>| NAT | -------->
Internet
| B |---->: Ethernet | | IP:
111.222.333.444
| 192.168.1.12 | : +----------+
+--------------+ :
:
+--------------+ :
| Cliente | :
| C |---->:
| 192.168.1.13 |
+--------------+
<--- Red Privada --->

En este ejemplo hay cuatro computadoras, un servidor NAT (IP 192.168.1.1) y
tres clientes (IPs: 192.168.1.11, 192.168.1.12 y 192.168.1.13).
El sistema NAT es la pasarela enmascarada para la red interna de los clientes A,
B y C que permite el acceso a Internet. La red interna usa una de las
direcciones de red privadas, en este caso la red de clase C 192.168.1.x, donde
la interfaz ethernet del servidor NAT tiene la direccin 192.168.1.1 y los clientes
tienen direcciones de esa misma red.
Los tres clientes A, B y C (que pueden estar usando cualquier sistema operativo
que pueda "hablar IP") pueden conectarse a otras mquinas de Internet, ya
que el servidor NAT enmascara todas sus conexiones de tal forma que parezcan
originadas en el enlace, y se encarga de que los datos que le devuelven en una
conexin enmascarada sean retransmitidos al sistema original. As los sistemas
de la red interna ven una ruta directa a Internet y son incapaces de darse
cuenta que sus datos estn siendo enmascarados


4. IPTABLES

4.1 Qu es iptables?

iptables IP packet filter administration (administracin de filtro de paquete
IP), es la herramienta que nos permite configurar, mantener e inspeccionar las
tablas de reglas de filtrado de paquetes IP en el kernel de Linux, desde su
versin 2.4 (en 2.2 era ipchains). Con esta herramienta, podremos crearnos un
firewall adaptado a nuestras necesidades.
Del manual de iptables:
Se pueden definir diferentes tablas. Cada tabla contiene
un nmero de cadenas propias y tambin puede contener
cadenas definidas por el usuario. Cada cadena es una lista
de reglas las cuales pueden encajar con un conjunto de
paquetes. Cada regla especifica qu hacer con un paquete
que encaja. Esto es llamado un `objetivo', el cual puede
ser un salto a una cadena definida por el usuario en la
misma tabla.

Su funcionamiento es simple: a iptables se le proporcionan unas reglas,
especificando cada una de ellas unas determinadas caractersticas que debe
cumplir un paquete. Adems, se especifica para esa regla una accin o target
(objetivo). Las reglas tienen un orden, y cuando se recibe o se enva un
paquete, las reglas se recorren en orden hasta que las condiciones que pide
una de ellas se cumplen en el paquete, y la regla se activa realizando sobre el
paquete la accin que le haya sido especificada.
Estas acciones se plasman en lo que se denominan targets (objetivos), que
indican lo que se debe hacer con el paquete. Los ms usados son bastante
explcitos: ACCEPT, DROP y REJ ECT, pero tambin hay otros que nos permiten
funcionalidades aadidas y algunas veces interesantes: LOG, MIRROR, QUEUE,
RETURN, MARK, entre otros.

En cuanto a los paquetes, el total del sistema de filtrado de paquetes del kernel
se divide en tres tablas, cada una con varias chains (cadenas) a las que puede
pertenecer un paquete, de la siguiente manera.


filter: Tabla por defecto, para los paquetes que se refieran a nuestra
mquina
o INPUT: Paquetes recibidos para nuestro sistema
o FORWARD: Paquetes enrutados a travs de nuestro sistema
o OUTPUT: Paquetes generados en nuestro sistema y que son
enviados
nat: Tabla referida a los paquetes enrutados en un sistema con
Masquerading
o PREROUTI NG: Para alterar los paquetes segn entren
o OUTPUT: Para alterar paquetes generados localmente antes de
enrutar
o POSTROUTING: Para alterar los paquetes cuando estn a punto
para salir
mangle: Alteraciones ms especiales de paquetes
o PREROUTI NG: Para alterar los paquetes entrantes antes de
enrutar
o OUTPUT: Para alterar los paquetes generados localmente antes
de enrutar
Dado que el soporte para el firewall est integrado en el kernel de Linux
(Netfilter), para poder usar iptables tendremos que asegurarnos de que nuestro
ncleo admite el uso de iptables y que aadimos a la configuracin del ncleo
todos aquellos targets que vayamos a necesitar (aunque siempre es bueno
tener los ms posibles).


4.2 Uso bsico de iptables

El ejecutable de iptables generalmente reside en /sbin/iptables. A continuacin
se presentan los comandos bsicos de iptables.


4.2.1 Crear una nueva regla al final de las ya existentes en una chain
determinada

$ /sbin/iptables -A [chain] [especif_de_la_regla] [opciones]


4.2.2 Insertar una regla en una posicin determinada de la lista de reglas
de una chain determinada

$ /sbin/iptables -I [chain] [posicin] [especif_de_la_regla] [opciones]


4.2.3 Borrar una regla en una posicin determinada de la lista de reglas de
una chain determinada

$ /sbin/iptables -D [chain] [posicin]


4.2.4 Borrar todas las reglas de una chain determinada

$ /sbin/iptables -F [chain]


4.2.5 Listar las reglas de una chain determinada

$ /sbin/iptables -L [chain]


4.2.6 Explicacin de parmetros
La especificacin de la regla: "especif_de_la_regla" se hace con los siguientes
parmetros:


-p, --protocol [!] protocolo
Protocolo al que pertenece el paquete. El protocolo especificado
puede ser tcp, udp, icmp o all, o puede ser un nmero,
representando uno de esos protocolos u otro diferente. Un
nombre de protocolo de /etc/protocolos tambin est permitido.
Un "!" antes del protocolo invierte el resultado. El nmero cero es
equivalente a todos.
-s, --source [!] direccin[/mscara]
Direccin de origen del paquete. Puede ser un nombre de host,
una direccin IP normal, o una direccin de red (con mscara, de
forma direccin / mscara). La bandera --src es un alias
conveniente para esta opcin. Un "!" invierte el resultado.
-d, --destination [!] direccin[/mscara]
Al igual que el anterior, puede ser un nombre de host, direccin
de red o direccin IP singular. La bandera --dst es una alias
conveniente para esta opcin.
-i, --in-interfaz [!] [nombre]
Especificacin de la interfaz por la que se recibe el paquete. Si el
nombre de la interfaz termina en un "+", entonces cualquier
interfaz que comience con este nombre ser tenida en cuenta. Si
esta opcin es omitida, la cadena "+" es asumida, por lo que se
tendrn en cuenta todas las interfaces.

-o, --out-interfaz [!] [nombre]
Especificacin de la interfaz por la que se va a enviar el paquete.
Funciona exactamente igual que la anterior opcin.
[!] f, --fragment
Especifica que la regla se refiere al segundo y siguientes
fragmentos de un paquete fragmentado. Si se antepone !, se
refiere slo al primer paquete, o a los paquetes no fragmentados.
Y adems, uno que nos permitir elegir qu haremos con el paquete:

-j, --jump [target]
Nos permite elegir el target al que se debe enviar ese paquete,
esto es, la accin a llevar a cabo con l. Si esta opcin es omitida
en una regla, entonces la regla no tendr efecto sobre el paquete,
pero s se incrementar el contador de la regla.
Algunas de las opciones que se permiten en los comandos de arriba son:
-v, --verbose
Modo comunicativo, til sobre todo con iptables -L. Muestra
informacin detallada sobre el comando ejecutado.
-n, --numeric
Las direcciones IP y nmeros de puertos se mostrarn
numricamente (sin resolver nombres). Por defecto el programa
intentar desplegarlos como nombres de host, nombres de red o
de servicios.
--line-numbers
Muestra los nmero de regla de cada chain, de manera que sea
ms fcil identificarlas para realizar operaciones de insercin,
borrado, etc.

4.3 iptables como FIREWALL

Para utilizar iptables como firewall lo que nico que se debe tener en cuenta,
aparte de usar la estructura adecuada para crear las reglas, son las tablas
INPUT y OUTPUT, las cuales se encargan de controlar, respectivamente, los
paquetes que entran y salen de la mquina.


4.3.1 Creacin de un firewall domstico (ejemplo 1)
Para crear nuestro sencillo firewall domstico, tendremos primero que
preguntarnos qu es lo que deseamos que haga. Lo ms usual que se requiere
en un firewall , para un equipo que se usa para conexiones a Internet de
manera normal (no es servidor de nada) es lo siguiente:
Que nos permita realizar conexiones TCP hacia afuera de nuestra
mquina (si no, no podramos hacer casi nada).
Que no permita realizar conexiones TCP desde afuera hacia
nuestra mquina, para evitar que alguien intente conectarse a
nuestros servidores web, ftp, telnet, X...
Que permita el trfico de paquetes TCP (paquetes que no
establezcan conexiones) en ambas direcciones, pues necesitamos
trfico bidireccional de paquetes al usar casi cualquier cosa en Internet.
Que prohba el trfico UDP desde afuera de nuestra mquina, a
excepcin del necesario para las respuestas por parte de nuestros
servidores DNS, que provendrn de su puerto UDP 53.
En caso de tener una intranet, que no aplique estas restricciones al
trfico proveniente de y enviado hacia la intranet, ya que en esta red
interna probablemente s nos interese poder acceder remotamente a
nuestra mquina.
Iremos introduciendo una a una las reglas que necesitamos.
Primera regla: permitamos cualquier trfico que provenga de nuestra interfaz
loopback (lo), para ello insertamos en el chain INPUT (se encarga de los
paquetes que lleguen a nuestra mquina) de la tabla filter la siguiente regla:

$ /sbin/iptables -A INPUT -i lo -j ACCEPT
Explicacin: -A indica que dicha regla se adicionar a la lista de reglas ya
definidas (en este ejemplo esta es la primera regla que de define). INPUT
significa que la regla se aplica a los paquetes que se reciban. i lo indica que la
regla ser aplicada a los paquetes que se reciban con destino a la interfaz
loopback (local). j ACCEPT significa que los paquetes que cumplan las
condiciones anteriores sern aceptados.
NOTA: Atencin: es importante aqu respetar las maysculas, pues los nombres del
chain y del target son I NPUT y ACCEPT, no input o accept.


Segunda regla: si disponemos de intranet, permitiremos todo el trfico que
provenga de nuestra interfaz de red interna. Por ejemplo, imaginando que
tuvisemos una ethernet en la interfaz eth0, haramos:




$ /sbin/iptables -A INPUT -i eth0 -j ACCEPT
Explicacin: -i eth0 indica que la regla se aplicar a los paquetes que lleguen a
nuestra mquina con destino a la interfaz del sistema cuyo alias es eth0. El
ACCEPT, como vimos antes, permite dichos paquetes atraviesen el firewall.

NOTA: El hecho de que omitamos la direccin de origen, de destino implica que nos referimos a
todas, tal como se explic en 4.2.6 Explicacin de parmetros.


Tercera regla: impediremos el paso de cualquier paquete TCP proveniente del
exterior que intente establecer una conexin con nuestro equipo. Estos
paquetes se reconocen por tener la bandera SYN acertada y las banderas ACK y
FIN desacertados. Para decirle a la regla que reconozca especficamente estos
paquetes, usaremos una opcin que se puede usar cuando el protocolo del
paquete es declarado como tcp, la opcin --syn. De la siguiente manera:




$ /sbin/iptables -A INPUT -p tcp --syn -j REJECT --reject-with icmp-port-unreachable
Explicacin: -p tcp indica que los paquetes del protocolo tcp que intenten
iniciar conexin (--syn) con nuestra mquina (sin importar de dnde
provengan), sern devueltos (REJ ECT) con un error dentro del mismo. En este
caso los paquetes sern regresados con (--reject-with) el mensaje de error
icmp-port-unreachable. Se puede elegir el tipo de mensaje de error de
rechazo entre: icmp-net-unreachable, icmp-host-unreachable, icmp-port-
unreachable, icmp-port-unreachable, icmp-net-prohibited e icmp-host-
prohibited.


Cuarta regla: Antes de declarar que deseamos prohibir cualquier trfico UDP
hacia nuestra mquina, y dado que las reglas se recorren en orden hasta que
una de ellas se activa con el paquete, tendremos que aadir ahora una regla
que nos permita recibir las respuestas de nuestro(s) servidor(es) DNS cuando
nuestro sistema les realice alguna consulta. Estas respuestas, va UDP, saldrn
del puerto 53 del servidor DNS. La regla, pues, ser:


$ /sbin/iptables -A INPUT -p udp --source-port 53 -j ACCEPT
Explicacin: -p udp indica que la regla se aplicar a los paquetes con protocolo
udp que entren a nuestra mquina. --source-port es una opcin presente
cuando el protocolo es udp (tambin cuando es tcp) y nos permite en este caso
especificar que la consulta provenga del puerto destinado al DNS. Dichos
paquetes sern aceptados (ACCEPT).


Quinta regla: Prohibimos ahora el resto del trfico UDP. La regla de por s
implica a todo el trfico UDP, pero como un paquete slo activar esta regla si
no ha activado la anterior, los paquetes UDP referentes a una transaccin con
un servidor de nombres no se vern afectados.




$ /sbin/iptables -A INPUT -p udp -j REJECT --reject-with icmp-port-
unreachable
Explicacin: --reject-with icmp-port-unreachable, como en la tercera regla,
indica que los paquetes sern devueltos con el mensaje de error que se ha
especificado.
NOTA: Dado que los targets por defecto (denominados policy o poltica) en
la tabla filter son ACCEPT, si un paquete no activa ninguna de las reglas,
ser aceptado, de manera que no tendremos que preocuparnos de, por
ejemplo, los paquetes de trfico normal de TCP, ya que estos sern aceptados
al no activar regla alguna.
Si ahora escribimos:


$ /sbin/iptables -L -v
Deberamos obtener algo como:




Chain INPUT (policy ACCEPT 3444 packets, 1549K bytes)
pkts bytes target prot opt in out source destination
11312 3413K ACCEPT all -- lo any anywhere anywhere
0 0 ACCEPT all -- eth0 any anywhere anywhere
0 0 REJECT tcp -- any any anywhere anywhere tcp flags:SYN,RST,ACK/SYN reject-with
icmp-port-unreachable
0 0 ACCEPT udp -- any any anywhere anywhere udp spt:domain
0 0 REJECT udp -- any any anywhere anywhere reject-with icmp-port-unreachable
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 15046 packets, 4218K bytes)
pkts bytes target prot opt in out source destination

De modo que nuestro pequeo y bsico firewall domstico ya est configurado.
Nuestro equipo es ahora muchsimo ms seguro, puesto que los ataques a
nuestro sistema requeriran ahora mucha ms elaboracin, tiempo y esfuerzo
por parte del atacante, de manera que nuestra condicin de insignificantes ya
empezar a ser importante como garante de seguridad.

4.3.2 Creacin de un firewall avanzado (ejemplo 2)
Para este ejemplo vamos a anexar el script completo para configurar un firewall
de un nivel superior al anterior. No se puede clasificar como un firewall
completo, pues la creacin de uno de estos requiere conocimientos mayores en
cuanto a sitios de Internet y aplicaciones existentes, as como los puertos que
estos usan.
En este ejemplo se usarn solo los targets ACCEPT y DROP. En el anterior se
us el target REJ ECT, que permite regresar un paquete con un mensaje de
error especfico. Se propone este mtodo para estructurar un script de firewall.
Dentro del script se encuentran seis bloques distintos:
Bloque 1. Variables: En sta seccin, se tiene que especificar la IP de
la computadora donde se va a instalar el firewall, mascara de subred,
etc.
DPRIV=192.168.1.1 Direccin IP del equipo en la red privada
DPUBL=209.205.69.127 Direccin IP pblica del equipo
REDLOCAL= 192.168.0.0/24 Toda la red local (privada)
MASCARA=255.255.255.0 Mscara de red
IPT=/sbin/iptables Ubicacin del iptables en disco
Bloque 2. I niciacin bsica. Elimina completamente las restricciones
del firewall sobre la interfaz localhost. De sta manera las aplicaciones
como las X que necesitan sta interfase para funcionar no tendrn ningn
problema.
Bloque 3. Ataques especficos: Son reglas que bloquean ataques especficos:
Spoofing: Usurpacin de IP: Para evitar que un
atacante nos presente una IP incorrecta, introducimos
en el firewall las IP's falsas que se suelen usar en estos
ataques para evitar problemas.
icmp: En principio aceptamos todos los paquetes icmp,
pero documentando las lneas correspondientes en el
script, se puede activar solo los paquetes icmp
necesarios para la comunicacin. Tambin,
comentando las lneas de ping, se puede evitar que le
hagan ping's.
smurf: Es un ataque DoS que enva ping's a las
direcciones de broadcast de la red, de forma que se
van propagando por todos las computadora.
Bloque 4. Servicios disponibles: son servicios disponibles en nuestro
servidor, por ejemplo web, ftp, etc. Aunque aqu las reglas tengan la misma
forma, no tiene que ser as para todos los protocolos; segn el caso puede
ser necesario aadir ms reglas o cambiarlas. Si quiere aadir sus propias
reglas, averigue que protocolo usa el servicio que quiere instalar para saber
como generar una regla vlida. Fjese que hay servicios disponibles
nicamente para la red local y otros disponibles para toda la red.
NOTA: Fjese que en el caso del modo ftp pasivo (el que se suele usar
por defecto en los navegadores, etc.) se tienen que abrir todos los
puertos por encima del 1024, esto no es muy seguro as que est
comentado.
Bloque 5. Conexiones cliente: Con stas reglas permitimos al servidor
conectarse solo a determinados servicios especficos. Si es un servidor
normalmente no lo usaremos para navegar en la red. De todas formas estn
las reglas bsicas que permiten recoger correo, conectarse a la web, traerse
ficheros ftp y algunas ms.
Bloque 6. Reglas por defecto: Bloquea todo lo que no se haya especificado de
antemano.
4.3.1.1 Script para la creacin de un firewall avanzado
#!/bin/bash
### Israel E. Bethencourt/CORE <ieb@corecanarias.com>
### Modificado por Andrs Syago <asath@ColombiaLinux.org>
######################################################################
###
### Bloque 1. Variables
DPRIV=192.168.1.1
DPUBL=209.205.69.127
REDLOCAL=192.168.0.0/24
MASCARA=255.255.255.0
IPT=/sbin/iptables
#########################################################################
### Bloque 2. Inicializacin bsica
# Limpia la lista de reglas
$IPT -F
# Trfico sin restricciones sobre la interfaz loopback (lo)
$IPT -A INPUT -i lo -j ACCEPT
$IPT -A OUTPUT -o lo -j ACCEPT
######################################################################
####
### Bloque 3. Ataques especficos
##########
# Spoofing
# Rechaza paquetes que afirmen ser o venir de una red privada Clase A
$IPT -A INPUT -i eth0 -s 10.0.0.0/8 -j DROP
$IPT -A INPUT -i eth0 -d 10.0.0.0/8 -j DROP
$IPT -A OUTPUT -o eth0 -s 10.0.0.0/8 -j DROP
$IPT -A OUTPUT -o eth0 -d 10.0.0.0/8 -j DROP
# Rechaza paquetes que afirmen ser o venir de una red privada Clase B
$IPT -A INPUT -i eth0 -s 172.16.0.0/12 -j DROP
$IPT -A INPUT -i eth0 -d 172.16.0.0/12 -j DROP
$IPT -A OUTPUT -o eth0 -s 172.16.0.0/12 -j DROP
$IPT -A OUTPUT -o eth0 -d 172.16.0.0/12 -j DROP
# Rechaza paquetes que afirmen ser o venir de una red multicast Clase
D
# $IPT -A INPUT -i eth0 -s 224.0.0.0/4 -j DROP
# $IPT -A OUTPUT -o eth0 -s 224.0.0.0/4 -j DROP
# Rechaza paquetes que afirmen ser o venir de una red reservada Clase
E
# $IPT -A INPUT -i eth0 -s 240.0.0.0/5 -j DROP
# Rechaza paquetes que afirmen ser o venir de loopback
$IPT -A INPUT -i eth0 -s localhost -j DROP
$IPT -A OUTPUT -o eth0 -s localhost -j DROP
# Rechaza paqetes broadcast mal formados
$IPT -A INPUT -i eth0 -s 255.255.255.255 -j DROP
$IPT -A INPUT -i eth0 -d 0.0.0.0 -j DROP
######
# icmp
# Acepta todos los paquetes icmp
$IPT -A INPUT -p icmp -j ACCEPT
$IPT -A OUTPUT -p icmp -j ACCEPT
# Solo confiar en paquetes icmp
# Mensaje icmp de control de origen apagado
# $IPT -A INPUT -p icmp --icmp-type 4 -j ACCEPT
# $IPT -A OUTPUT -p icmp --icmp-type 4 -j ACCEPT
# Mensaje de estado icmp por problemas de parmetro
# $IPT -A INPUT -p icmp --icmp-type 12 -j ACCEPT
# $IPT -A OUTPUT -p icmp --icmp-type 12 -j ACCEPT
# Mensaje icmp de error de destino inalcanzable
# $IPT -A INPUT -p icmp --icmp-type 3 -j ACCEPT
# $IPT -A OUTPUT -p icmp --icmp-type 3 -j ACCEPT
# Mensaje de estado icmp de tiempo excedido
# $IPT -A INPUT -p icmp --icmp-type 11 -j ACCEPT
# $IPT -A OUTPUT -p icmp --icmp-type 11 -j ACCEPT
# Permitir ping's salientes a cualquier parte
# $IPT -A INPUT -d $DPRIV -p icmp --icmp-type 8 -j ACCEPT
# $IPT -A OUTPUT -s $DPRIV -p icmp --icmp-type 8 -j ACCEPT
# Permitir ping's entrantes de cualquier parte
# $IPT -A INPUT -d $DPRIV -p icmp --icmp-type 8 -j ACCEPT
# $IPT -A OUTPUT -s $DPRIV -p icmp --icmp-type 8 -j ACCEPT
#######
# smurf
# Ataque de tipo DoS (denegacin de servicios)
# $IPT -A INPUT -d 255.255.255.255 -p icmp -j DROP
# $IPT -A OUTPUT -d 255.255.255.255 -p icmp -j DROP
# Ataque DoS de direcciones de red
# $IPT -A INPUT -d $MASCARA -p icmp -j DROP
# $IPT -A OUTPUT -d $MASCARA -p icmp -j DROP
######################################################################
####
### Bloque 4. Servicios disponibles
# Recibiendo correo como un servidor SMTP
$IPT -A INPUT -d $DPRIV -p tcp --dport 25 --sport 1024:65535 -j ACCEPT
$IPT -A OUTPUT -s $DPRIV -p tcp ! --syn --sport 25 --dport 1024:65535
-j ACCEPT
# Solicitud entrante de pop3
$IPT -A INPUT -d $DPRIV -p tcp --dport 110 --sport 1024:65535 -j
ACCEPT
$IPT -A OUTPUT -s $DPRIV -p tcp ! --syn --sport 110 --dport 1024:65535
-j ACCEPT
# Solicitud entrante de telnet
$IPT -A INPUT -d $DPRIV -p tcp --dport 23 --sport 1024:65535 -j ACCEPT
$IPT -A OUTPUT -s $DPRIV -p tcp ! --syn --sport 23 --dport 1024:65535
-j ACCEPT
# Solicitud entrante de FTP
$IPT -A INPUT -d $DPRIV -p tcp --dport 21 --sport 1024:65535 -j ACCEPT
$IPT -A OUTPUT -s $DPRIV -p tcp ! --syn --sport 21 --dport 1024:65535
-j ACCEPT
# Los datos encauzan respuestas FTP en modo puerto normal
$IPT -A OUTPUT -s $DPRIV -p tcp --dport 1024:65525 --sport 20 -j
ACCEPT
$IPT -A INPUT -d $DPRIV -p tcp ! --syn --dport 20 --sport 1024:65535 -
j ACCEPT
# Canal de datos FTP modo pasivo
#$IPT -A INPUT -d $DPRIV -p tcp --sport 1024:65535 --dport 1024:65535
-j ACCEPT
#$IPT -A OUTPUT -s $DPRIV -p tcp ! --syn --sport 1024:65535 --dport
1024:65535 -j ACCEPT
# Solicitudes http de entrada
$IPT -A INPUT -d $DPRIV -p tcp --dport 80 --sport 1024:65535 -j ACCEPT
$IPT -A OUTPUT -s $DPRIV -p tcp ! --syn --sport 80 --dport 1024:65535
-j ACCEPT
# Solicitudes auth de entrada
$IPT -A INPUT -d $DPRIV -p tcp --dport auth --sport 1024:65535 -j
ACCEPT
$IPT -A OUTPUT -s $DPRIV -p tcp ! --syn --sport auth --dport
1024:65535 -j ACCEPT
# Solicitudes shttp (ssl) de entrada
# $IPT -A INPUT -d $DPRIV -p tcp --dport 443 --sport 1024:65535 -j
ACCEPT
# $IPT -A OUTPUT -s $DPRIV -p ! --syn --sport 443 --dport 1024:65535 -
j ACCEPT
# Solicitudes binkp de entrada
$IPT -A INPUT -d $DPRIV -p tcp --dport binkp --sport 1024:65535 -j
ACCEPT
$IPT -A OUTPUT -s $DPRIV -p tcp ! --syn --sport binkp --dport
1024:65535 -j ACCEPT
# Solicitudes tfido de entrada
$IPT -A INPUT -d $DPRIV -p tcp --dport tfido --sport 1024:65535 -j
ACCEPT
$IPT -A OUTPUT -s $DPRIV -p tcp ! --syn --sport tfido --dport
1024:65535 -j ACCEPT
# Solicitudes fido de entrada
$IPT -A INPUT -d $DPRIV -p tcp --dport fido --sport 1024:65535 -j
ACCEPT
$IPT -A OUTPUT -s $DPRIV -p tcp ! --syn --sport fido --dport
1024:65535 -j ACCEPT
# Solicitudes interbase de entrada
$IPT -A INPUT -d $DPRIV -s $REDLOCAL -p tcp --dport gds_db --sport
1024:65535 -j ACCEPT
$IPT -A OUTPUT -s $DPRIV -d $REDLOCAL -p tcp ! --syn --sport gds_db --
dport 1024:65535 -j ACCEPT
$IPT -A INPUT -s $REDLOCAL -d $DPRIV -p tcp --sport 1024:65535 --dport
1024:65535 -j ACCEPT
$IPT -A OUTPUT -s $DPRIV -d $REDLOCAL -p tcp ! --syn --sport
1024:65535 --dport 1024:65535 -j ACCEPT
# Solicitudes mysql de entrada
$IPT -A INPUT -d $DPRIV -s $REDLOCAL -p tcp --dport mysql --sport
1024:65535 -j ACCEPT
$IPT -A OUTPUT -s $DPRIV -d $REDLOCAL -p tcp ! --syn --sport mysql --
dport 1024:65535 -j ACCEPT
$IPT -A INPUT -d $DPRIV -s $REDLOCAL -p udp --dport mysql --sport
1024:65535 -j ACCEPT
$IPT -A OUTPUT -s $DPRIV -d $REDLOCAL -p udp --sport mysql --dport
1024:65535 -j ACCEPT
# Solicitudes mysql de entrada
$IPT -A INPUT -d $DPRIV -s $REDLOCAL -p tcp --dport netbios-
ns:netbios-ssn --sport 1024:65535 -j ACCEPT
$IPT -A OUTPUT -s $DPRIV -d $REDLOCAL -p tcp ! --syn --sport netbios-
ns:netbios-ssn --dport 1024:65535 -j ACCEPT
$IPT -A INPUT -d $DPRIV -s $REDLOCAL -p udp --dport netbios-
ns:netbios-ssn --sport 1024:65535 -j ACCEPT
$IPT -A OUTPUT -s $DPRIV -d $REDLOCAL -p udp --sport netbios-
ns:netbios-ssn --dport 1024:65535 -j ACCEPT
# Solicitudes portmap de entrada
$IPT -A INPUT -d $DPRIV -s $REDLOCAL -p tcp --dport sunrpc --sport
1024:65535 -j ACCEPT
$IPT -A OUTPUT -s $DPRIV -d $REDLOCAL -p tcp ! --syn --sport sunrpc --
dport 1024:65535 -j ACCEPT
$IPT -A INPUT -d $DPRIV -s $REDLOCAL -p udp --dport sunrpc --sport
1024:65535 -j ACCEPT
$IPT -A OUTPUT -s $DPRIV -d $REDLOCAL -p udp --sport sunrpc --dport
1024:65535 -j ACCEPT
# Solicitudes nfs de entrada
$IPT -A INPUT -d $DPRIV -s $REDLOCAL -p tcp --dport nfs --sport
1024:65535 -j ACCEPT
$IPT -A OUTPUT -s $DPRIV -d $REDLOCAL -p tcp ! --syn --sport nfs --
dport 1024:65535 -j ACCEPT
$IPT -A INPUT -d $DPRIV -s $REDLOCAL -p udp --dport nfs --sport
1024:65535 -j ACCEPT
$IPT -A OUTPUT -s $DPRIV -d $REDLOCAL -p udp --sport nfs --dport
1024:65535 -j ACCEPT
# Solicitudes rexec de entrada
$IPT -A INPUT -d $DPRIV -s $REDLOCAL -p tcp --dport exec --sport
1024:65535 -j ACCEPT
$IPT -A OUTPUT -s $DPRIV -d $REDLOCAL -p tcp ! --syn --sport exec --
dport 1024:65535 -j ACCEPT
# Solicitudes X11 de entrada
$IPT -A INPUT -d $DPRIV -s $REDLOCAL -p tcp --dport x11 --sport
1024:65535 -j ACCEPT
$IPT -A OUTPUT -s $DPRIV -d $REDLOCAL -p tcp ! --syn --sport x11 --
dport 1024:65535 -j ACCEPT
######################################################################
####
### Bloque 5. Conexiones cliente
# Permitiendo DNS Lookups como un cliente
$IPT -A OUTPUT -s $DPRIV -p udp --dport 53 --sport 1024:65525 -j
ACCEPT
$IPT -A INPUT -d $DPRIV -p udp --sport 53 --dport 1024:65535 -j ACCEPT
$IPT -A OUTPUT -s $DPRIV -p tcp ! --syn --dport 53 --sport 1024:65535
-j ACCEPT
$IPT -A INPUT -d $DPRIV -p tcp --sport 53 --dport 1024:65525 -j ACCEPT
# Enviando correo a cualquier servidor de correo externo
$IPT -A OUTPUT -s $DPRIV -p tcp --sport 1024:65535 --dport 25 -j
ACCEPT
$IPT -A INPUT -d $DPRIV -p tcp ! --syn --sport 25 --dport 1024:65535 -
j ACCEPT
# Recuperando correo POP como cliente
$IPT -A OUTPUT -s $DPRIV -p tcp --sport 1024:65535 --dport 110 -j
ACCEPT
$IPT -A INPUT -d $DPRIV -p tcp ! --syn --sport 110 --dport 1024:65535
-j ACCEPT
# Acceso http estndar
$IPT -A OUTPUT -s $DPRIV -p tcp --sport 1024:65535 --dport 80 -j
ACCEPT
$IPT -A INPUT -d $DPRIV -p tcp ! --syn --sport 80 --dport 1024:65535 -
j ACCEPT
# Acceso shttp estndar
$IPT -A OUTPUT -s $DPRIV -p tcp --sport 1024:65535 --dport 443 -j
ACCEPT
$IPT -A INPUT -d $DPRIV -p tcp ! --syn --sport 443 --dport 1024:65535
-j ACCEPT
# Acceso telnet estndar
$IPT -A OUTPUT -s $DPRIV -p tcp --sport 1024:65535 --dport 23 -j
ACCEPT
$IPT -A INPUT -d $DPRIV -p tcp ! --syn --sport 23 --dport 1024:65535 -
j ACCEPT
# Acceso auth estndar
$IPT -A OUTPUT -s $DPRIV -p tcp --sport 1024:65535 --dport auth -j
ACCEPT
$IPT -A INPUT -d $DPRIV -p tcp ! --syn --sport auth --dport 1024:65535
-j ACCEPT
# Acceso ftp estndar
$IPT -A OUTPUT -s $DPRIV -p tcp --sport 1024:65535 --dport 21 -j
ACCEPT
$IPT -A INPUT -d $DPRIV -p tcp ! --syn --sport 21 --dport 1024:65535 -
j ACCEPT
# Canal de datos FTP modo pasivo
# $IPT -A OUTPUT -s $DPRIV -p tcp --sport 1024:65535 --dport
1024:65535 -j ACCEPT
# $IPT -A INPUT -d $DPRIV -p tcp ! --syn --sport 1024:65535 --dport
1024:65535 -j ACCEPT
# Respuestas del canal de datos FTP modo puerto normal
$IPT -A INPUT -d $DPRIV -p tcp --sport 20 --dport 1024:65535 -j ACCEPT
$IPT -A OUTPUT -s $DPRIV -p tcp ! --syn --dport 20 --sport 1024:65525
-j ACCEPT
# Acceso whois estndar
$IPT -A OUTPUT -s $DPRIV -p tcp --sport 1024:65535 --dport 43 -j
ACCEPT
$IPT -A INPUT -d $DPRIV -p tcp ! --syn --sport 43 --dport 1024:65535 -
j ACCEPT
# Acceso binkp estndar
$IPT -A OUTPUT -s $DPRIV -p tcp --sport 1024:65535 --dport binkp -j
ACCEPT
$IPT -A INPUT -d $DPRIV -p tcp ! --syn --sport binkp --dport
1024:65535 -j ACCEPT
# Acceso interbase estndar
$IPT -A OUTPUT -s $DPRIV -d $REDLOCAL -p tcp --sport 1024:65535 --
dport gds_db -j ACCEPT
$IPT -A INPUT -d $DPRIV -s $REDLOCAL -p tcp ! --syn --sport gds_db --
dport 1024:65535 -j ACCEPT
# Acceso mysql estndar
$IPT -A OUTPUT -s $DPRIV -d $REDLOCAL -p tcp --sport 1024:65535 --
dport mysql -j ACCEPT
$IPT -A INPUT -d $DPRIV -s $REDLOCAL -p tcp ! --syn --sport mysql --
dport 1024:65535 -j ACCEPT
$IPT -A OUTPUT -s $DPRIV -d $REDLOCAL -p udp --sport 1024:65535 --
dport mysql -j ACCEPT
$IPT -A INPUT -d $DPRIV -s $REDLOCAL -p udp --sport mysql --dport
1024:65535 -j ACCEPT
# Acceso Netbios estndar
$IPT -A OUTPUT -s $DPRIV -d $REDLOCAL -p tcp --sport 1024:65535 --
dport netbios-ns:netbios-ssn -j ACCEPT
$IPT -A INPUT -d $DPRIV -s $REDLOCAL -p tcp ! --syn --sport netbios-
ns:netbios-ssn --dport 1024:65535 -j ACCEPT
$IPT -A OUTPUT -s $DPRIV -d $REDLOCAL -p udp --sport 1024:65535 --
dport netbios-ns:netbios-ssn -j ACCEPT
$IPT -A INPUT -d $DPRIV -s $REDLOCAL -p udp --sport netbios-
ns:netbios-ssn --dport 1024:65535 -j ACCEPT
# Acceso portmap estndar
$IPT -A OUTPUT -s $DPRIV -d $REDLOCAL -p tcp --sport 1024:65535 --
dport sunrpc -j ACCEPT
$IPT -A INPUT -d $DPRIV -s $REDLOCAL -p tcp ! --syn --sport sunrpc --
dport 1024:65535 -j ACCEPT
$IPT -A OUTPUT -s $DPRIV -d $REDLOCAL -p udp --sport 1024:65535 --
dport sunrpc -j ACCEPT
$IPT -A INPUT -d $DPRIV -s $REDLOCAL -p udp --sport sunrpc --dport
1024:65535 -j ACCEPT
# Acceso nfs estndar
$IPT -A OUTPUT -s $DPRIV -d $REDLOCAL -p tcp --sport 1024:65535 --
dport nfs -j ACCEPT
$IPT -A INPUT -d $DPRIV -s $REDLOCAL -p tcp ! --syn --sport nfs --
dport 1024:65535 -j ACCEPT
$IPT -A OUTPUT -s $DPRIV -d $REDLOCAL -p udp --sport 1024:65535 --
dport nfs -j ACCEPT
$IPT -A INPUT -d $DPRIV -s $REDLOCAL -p udp --sport nfs --dport
1024:65535 -j ACCEPT
# Acceso X11 estndar
$IPT -A OUTPUT -s $DPRIV -d $REDLOCAL -p tcp --sport 1024:65535 --
dport x11 -j ACCEPT
$IPT -A INPUT -d $DPRIV -s $REDLOCAL -p tcp ! --syn --sport x11 --
dport 1024:65535 -j ACCEPT
######################################################################
####
### Bloque 6. Reglas por defecto
# Bloquea cualquier otro tipo de conexin que se intente hacer fuera
de las que estn aqu
$IPT -P INPUT DROP
$IPT -P OUTPUT DROP


4.4 iptables como NAT
Bsicamente, iptables traduce direcciones IP internas en direcciones IP
externas. Este proceso se llama Traduccin de Direcciones de Red (NAT) y
Linux hace esto mediante los llamados nmeros de puerto. Desde el exterior,
todas las conexiones parecen haberse originado desde su mquina Linux.
Bloquear servicios indeseables en una LAN es vital, especialmente cuando,
como en la mayora de los casos, el abuso en el consumo del valioso ancho de
banda consecuente en el detrimento de los servicios que son verdaderamente
importantes.
Al llegar a este punto ya tenemos la habilidad de manejar el iptables en cuanto
a firewall se refiere. Pues bien, le sorprender saber que lo que falta por
aprender para manejar el iptables como NAT es supremamente..... poco.
Para utilizar iptables como NAT lo que nico que se debe tener en cuenta,
aparte de usar la estructura adecuada para crear las reglas, es la tabla
FORWARD, la cuales se encarga de controlar el reenvo (enmascaramiento) de
los paquetes que entran y salen de la mquina.


4.4.1 Creacin de un NAT bsico (ejemplo nico)
Servicios como los utilizados para compartir archivos, principalmente msica,
adems de fomentar la piratera, y comprometer indirectamente a la empresa
en dicha actividad, son los que representan el mayor consumo de ancho de
banda.
Otros servicios, como los utilizados para mensajera instantnea, contribuyen,
aunque en menor grado, a este detrimento. Representan tambin un riesgo de
seguridad para los mismos usuarios debido a la proliferacin de gusanos,
troyanos y virus, hecho que puede llegar a comprometer datos e informacin
confidencial y estratgica de la empresa.
Las siguientes constituyen las reglas necesarias, para aadir en el guin del
muro contrafuegos, a fin de bloquear los servicios indeseables:


# Compar t i r de ar chi vos
# Red de Audio Galaxy
/sbin/iptables -A FORWARD -d 64.245.58.0/23 -j REJECT
# GNUtella, Bearshare y ToadNode
/sbin/iptables -A FORWARD -p TCP --dport 6346 -j REJECT
# Puertos y redes de Kazaa y Morpheus
/sbin/iptables -A FORWARD --dport 1214 -j REJECT
/sbin/iptables -A FORWARD -d 213.248.112.0/24 -j REJECT
/sbin/iptables -A FORWARD -d 206.142.53.0/24 -j REJECT
# Red de Napigator
/sbin/iptables -A FORWARD -d 209.25.178.0/24 -j REJECT
# Red de Napster
/sbin/iptables -A FORWARD -d 64.124.41.0/24 -j REJECT
# Redes de WinMX
/sbin/iptables -A FORWARD -d 209.61.186.0/24 -j REJECT
/sbin/iptables -A FORWARD -d 64.49.201.0/24 -j REJ ECT
# Red de IMesh
/sbin/iptables -A FORWARD -d 216.35.208.0/24 -j REJECT
# Mensaj er a i nst ant nea
# AIM e ICQ
/sbin/iptables -A FORWARD --dport 9898 -j REJECT
/sbin/iptables -A FORWARD --dport 5190:5193 -j REJECT
/sbin/iptables -A FORWARD -d login.oscar.aol.com -j REJECT
/sbin/iptables -A FORWARD -d login.icq.com -j REJECT
# Jabber
/sbin/iptables -A FORWARD --dport 5222:5223 -j REJECT
# MSN Messenger
/sbin/iptables -A FORWARD -p TCP --dport 1863 -j REJECT
/sbin/iptables -A FORWARD -d 64.4.13.0/24 -j REJECT
# Yahoo! Messenger
/sbin/iptables -A FORWARD -p TCP --dport 5000:5010 -j REJECT
/sbin/iptables -A FORWARD -d cs.yahoo.com -j REJECT
/sbin/iptables -A FORWARD -b scsa.yahoo.com -j REJECT
# Ot r os
# eDonkey
/sbin/iptables -A FORWARD -p tcp --dport 4661:4662 -j REJECT
/sbin/iptables -A FORWARD -p udp --dport 4665 -j REJECT


4.5 Herramientas de iptables
Si una vez realzadas las configuraciones de iptables apagramos nuestro
equipo, stas se perderan y tendramos que volver a realizar una a una las
sentencias de configuracin, o podramos llamar al script, en caso de que
hayamos creado uno.
Aqu se explican dos herramientas tiles que acompaan al programa iptables,
las cuales nos permiten sacar por salida estndar el contenido de nuestras
tablas IP, y el segundo nos permite, a partir de la salida generada por el
primero, recuperar la configuracin de las tablas.
4.5.1 iptables-save
Para guardar la configuracin de las tablas en un archivo, lo hacemos de la
siguiente forma:

$ /sbin/iptables-save -c > miarchivo
Donde c es una opcin que nos permite guardar los contadores del nmero de
paquetes que activaron cada regla.


4.5.2 iptables-restore
Para recuperar la configuracin de las tablas de un archivo, lo hacemos de la
siguiente forma:

$ /sbin/iptables-restore -c < miarchivo
En cuyo caso c tiene el mismo significado que con iptables-save
NOTA: Estas llamadas a iptables-save e iptables-restore podrn ser incluidas
en los script's adecuados para que se lleven a cabo de manera automtica en el
arranque y el cierre del sistema.
En caso de ser usuarios de Red Hat Linux, a partir de su versin 7.1, una vez
configurado el firewall con iptables tal y como se ha descrito en este artculo, y
una vez salvada la configuracin con iptables-save en el archivo
/etc/sysconfig/iptables, se pueden activar los scripts que arrancarn y cerrarn
el firewall automticamente al arrancar y apagar el equipo, mediante la Text
Mode Setup Utility (/usr/sbin/setup), en la seccin System Services.


5. Anexos

5.1 FireStarter (GUI para configurar iptables)
Para los que no quieran interactuar con el shell y en la lnea de difundir el uso
de GNU/Linux en los negocios o entre nuevos usuarios que vienen de Microsoft,
hay interfaces grficas simplificadas al mximo que te permiten correr un NAT
firewall inmediatamente despus de la primera instalacin de nuestro sistema.
Es decir, si no tienes mucho conocimientos sobre Linux y no tiene suficiente
tiempo para dedicarte a l, y lo nico que necesitas es:
Montar una puerta de enlace (una salida compartida a Internet por una
red de PCs) para salir a Internet con una nica conexin
Le gusta la idea de que solo est a la vista desde Internet, el PC
dedicado a la salida
Le vendra bien permitir algunos servicios (como web, ftp, telnet, ssh, X,
etc.)
Registrar accesos
Y sobretodo no est tratando con informacin codiciable, es decir, no
espera ser atacado
Entonces una GUI como FireStarter <http://firestarter.sourceforge.net/> o
cualquier otra que encuentre en sourceforge <http://sourceforge.net/> le
pueden ayudar a solucionar su problema de tiempo.
Se debe recalcar que
Con esto no puede conseguir tanta seguridad como si elabora una
completa tabla de reglas a su medida con iptables, pero nuestra opinin
es que un novato podra dejar el sistema al descubierto muy fcilmente
con iptables.

5.2 Hogwash (mezcla de Firewall y NIDS)
Hogwash, es una especie de hbrido entre un firewall y un NIDS (Network
Intrusion Detection System), de forma que correctamente configurado nos
permitir protegernos de ataques externos que podran pasar inadvertidos para
un firewall.
Los firewall clsicos lo que hacen es modificar sus reglas, para denegar
cualquier peticin que se suponga ilegal, esto que en un principio es lo correcto
y lo que queremos, tambin implica que el atacante pueda realizar un ataque
DoS (Denegacin de Servicio) muy fcilmente.
Imagine que el atacante al detectar nuestra defensa, empieza a mandarnos
peticiones falsas de accesos desde Freshmeat o nuestro propio servidor DNS.
Qu pasara entonces? Que nos estaramos denegando nosotros mismo el
acceso a estos sitios, y si no podemos acceder a nuestro servidor DNS,
perdemos el acceso a prcticamente todo.
La solucin es utilizar hogwash, que en lugar de cerrar puertos y denegar
acceso, lo que hace es rechazar y modificar determinados paquetes en funcin
de la identificacin de signaturas / patrones, para lo cual se apoya en el
potente Snort y su amplia y completa coleccin de reglas.
Hogwash est diseado para evitar el 95% de las acciones de ataque que todos
los kiddies lanzan a su red. Hogwash vive en lnea como un cortafuego, pero
funciona de forma diferente. En lugar de cerrar puertos como un cortafuego
tradicional, deja caer o modifica paquetes especficos basados en un fsforo de
la firma. Hogwash vive directamente encima del controlador de la red, as que
no requiere una pila de IP para trabajar. Detiene ataques que no pueden ser
bloqueados por un cortafuego tradicional y puede usarse para proteger
sistemas a los que no se les puede aplicar parches por una razn u otra. El
motor est basado en Snort.

6. Bibliografa y crditos

Firewall y Seguridad en Internet
www.monografas.com
Autor: Daniel Ramn Elorreaga Madrigal
Ing. Electrnico
Universidad Nacional Autnoma de Mxico
e-mail: dan_dds@yahoo.com


Configuracin de un firewall en Linux con iptables
http://www.elrincondelprogramador.com/autores.asp?id=10
Daniel Fernndez Garito
Configurar firewall
http://www.informaticos.biz/
Israel E. Bethencourt/CORE
ieb@corecanarias.com


iptables IP Packet filter administration
Rusty Rusell


I ptables: Bloqueando servicios indeseables
Darkshram
http://www.linuxparatodos.com/linux/productos_servicios.php


Hogwash: mezcla de Firewall y NIDS
Carlos Cortes (aka carcoco)
http://carcoco.eresmas.com/


Linux Recursos Para el Usuario
J ames Mohr
Editorial Prentice Hall
1999

También podría gustarte