Administracion de Redes

Administracion de Redes
En este blog encontraran todo lo relacionado con el modulo de seguridad de administracion de redes, aunque tambien encontraran documentos relacionados con tecnologia e informatica.

martes, 11 de marzo de 2008

SQUID

PROXY SQUID

Squid es un popular programa de software libre que implementa un servidor proxy y un demonio para caché de pá
ginas web, publicado bajo licencia GPL. Tiene una amplia variedad de utilidades, desde acelerar un Servidor Web, guardando en caché peticiones repetidas a DNS y otras búsquedas para un grupo de gente que comparte recursos de la red, hasta caché de web, además de añadir seguridad filtrando el tráfico. Está especialmente diseñado para ejecutarse bajo entornos tipo Unix.

Squid ha sido desarrollado durante muchos años y se le considera muy completo y robusto. Aunque orientado a principalmente a HTTP y FTP es compatible con otros protocolos como Internet Gopher. Implementa varias modalidades de cifrado como TLS, SSL, y HTTPS.

Squid posee las siguientes características:

Proxy y Caché de HTTP, FTP, y otras URL:
Squid proporciona un servicio de Proxy que soporta peticiones HTTP, HTTPS y FTP a equipos que necesitan acceder a Internet y a su vez provee la funcionalidad de caché especializado en el cual almacena de forma local las páginas consultadas recientemente por los usuarios. De esta forma, incrementa la rapidez de acceso a los servidores de información Web y FTP que se encuentra fuera de la red interna.

Proxy para SSL:
Squid también es compatible con SSL (Secure Socket Layer) con lo que también acelera las transacciones cifradas, y es capaz de ser configurado con amplios controles de acceso sobre las peticiones de usuarios.

Jerarquías de caché:
Squid puede formar parte de una jerarquía de caches. Diversos proxys trabajan conjuntamente sirviendo las peticiones de las páginas. Un navegador solicita siempre las páginas a un sólo proxy, si este no tiene la página en la caché hace peticiones a sus hermanos, que si tampoco las tienen las hacen a su/s padre/s... Estas peticiones se pueden hacer mediante dos protocolos: HTTP e ICMP.

ICP, HTCP, CARP, caché digests:
Squid sigue los protocolos ICP, HTCP, CARP y caché digests que tienen como objetivo permitir a un proxy "preguntarle" a otros proxys caché si poseen almacenado un recurso determinado.

Caché transparente:
Squid puede ser configurado para ser usado como proxy transparente de manera que las conexiones son enrutadas dentro del proxy sin configuración por parte del cliente, y habitualmente sin que el propio cliente conozca de su existencia. De modo predefinido Squid utiliza el puerto 3128 para atender peticiones, sin embargo se puede especificar que lo haga en cualquier otro puerto disponible o bien que lo haga en varios puertos disponibles a la vez.


WCCP:
A partir de la versión 2.3 Squid implementa WCCP (Web Cache Control Protocol). Permite interceptar y redirigir el trafico que recibe un router hacia uno o más proxys caché, haciendo control de la conectividad de los mismos. Además permite que uno de los proxys caché designado pueda determinar como distribuir el tráfico redirigido a lo largo de todo el array de proxys caché.

Control de acceso:
Ofrece la posibilidad de establecer reglas de control de acceso. Esto permite establecer políticas de acceso en forma centralizada, simplificando la administración de una red.

Aceleración de servidores HTTP:
Cuando un usuario hace petición hacia un objeto en Internet, este es almacenado en el caché, si otro usuario hace petición hacia el mismo objeto, y este no ha sufrido modificación alguna desde que lo accedió el usuario anterior, Squid mostrará el que ya se encuentra en el caché en lugar de volver a descargarlo desde Internet. Esta función permite navegar rápidamente cuando los objetos ya están en el caché y además optimiza enormemente la utilización del ancho de banda.

SNMP:
Squid permite activar el protocolo SNMP, este proporciona un método simple de administración de red, que permite supervisar, analizar y comunicar información de estado entre una gran variedad de máquinas, pudiendo detectar problemas y proporcionar mensajes de estados.

Caché de resolución DNS:
Squid está compuesto también por el programa dnsserver, que se encarga de la búsqueda de nombres de dominio. Cuando Squid se ejecuta, produce un número configurable de procesos dnsserver, y cada uno de ellos realiza su propia búsqueda en DNS. De este modo, se reduce la cantidad de tiempo que la caché debe esperar a estas búsquedas DNS.


Instalación y Configuración de SQUID

Instalamos el squid:
#apt-get install squid

El fichero de configuración de SQUID se halla en /etc/squid/squid.conf y hemos de editarlo con nuestra herramienta favorita para realizar los cambios adecuados y conseguir que cumpla su tarea con cierta seguridad para nuestro sistema.
#pico /etc/squid/squid.conf

Lo mejor que se debe hacer es crear otro archivo .conf para squid para no tener que buscar dentro de todas las lineas que se han creado al instalarlo.

Primero movemos el archivo .conf que se creo con la instalacion:
#mv /etc/squid/squid.conf /etc/squid/squid.old

Luego creamos el archivo nuevo donde vamos a configurarlo:
#touch /etc/squid/squid.conf

Puerto para SQUID

Por defecto, SQUID utilizará el puerto 3128, aunque puede configurarse para que use cualquier otro, incluso varios puertos simultáneamente, dependiendo de nuestras necesidades. La línea correspondiente quedará:

http_port 3128

Tamaño de caché

En esta instrucción fijamos el espacio en disco que se usará para almacenar las páginas visitadas, es decir, respondemos a la pregunta, ¿Cuánto deseo almacenar de Internet en mi disco duro?

Por defecto SQUID usará 100 Mb, como límite para el tamaño del caché, pero si quisiéramos fijar, por ejemplo 500 Mb, debemos fijar la entrada correspondiente de la siguiente forma:

cache_dir ufs /usr/local/squid/cache 500 16 256

En la línea anterior estamos seleccionando el directorio de caché (/usr/local/squid/cache), indicando el tamaño máximo para éste (500), la cantidad de subdirectorios de primer nivel que puede contener (16, el valor por defecto) y, el número de subdirectorios de segundo nivel (256, también por defecto) que puede almacenar

NOTA:En caso de que fijemos un tamaño para el directorio de caché superior a la capacidad real del disco duro, SQUID se bloqueará.

Vida en el caché (TTL)

Podemos configurar también el tiempo que pueden permanecer los objetos almacenados en el caché, dependiendo de nuestras necesidades, lógicamente. De modo general, si definimos un tiempo de permanencia demasiado bajo, estaremos desaprovechando una de las principales ventajas del uso de servidor proxy, mientras que si establecemos un periodo demasiado alto, también saturaremos innecesariamente la capacidad de almacenaje.

Parece una decisión razonable, en la mayoría de casos, fijar un mes de vida para los objetos del caché. Esto se logra con la instrucción:

reference_age 1 month

Controles de acceso

Una de las características más interesantes de este servidor proxy es la posibilidad de establecer unas reglas de control de acceso que pueden complementar perfectamente nuestro objetivo de filtrado de paquetes.

Para ello, confeccionaremos unas Listas de Control de Acceso para designar qué máquinas o redes tienen permitido, o no, acceder al servidor. Cada una de ellas tendrá asociada unas Reglas de Control que regulará esta actividad. Es decir, definimos unas listas, por una parte y establecemos unas reglas específicas para cada una de ellas, ejemplo:

Si queremos permitir el acceso al proxy para todas las máquinas de nuestra red, debemos de definir una lista que identifique a toda nuestra red local, en nuestro caso:

acl nuestrared src 192.168.1.0/255.255.255.0

De esta forma nuestra red queda identificada para SQUID, quedando la sección de Listas de Control de Acceso con el siguiente aspecto:

acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl nuestrared src 192.168.1.0/255.255.255.0

Ahora debemos permitir el acceso con una línea con la siguiente sintaxis de modo que la sección Reglas de Control, debe quedar:

http_access allow localhost
http_access allow nuestrared
http_access deny all

La línea http_access allow nuestrared permite el acceso al proxy para la lista denominada nuestrared que está formada por 192.168.1.0/255.255.255.0, o sea, cualquier máquina cuya dirección IP esté comprendida entre 192.168.1.1 y 192.168.1.254

Redireccionamiento a través de SQUID

Una posibiliad que nos interesa plantearnos es utilizar nuestro servidor proxy de modo "transparente", es decir, nuestras máquinas saldrán a la red Internet a través de él, pero de la misma forma que lo harían mediante el router ADSL. Para ello, usando iptables redireccionaremos todas las peticiones al puerto 80 de nuestra red local hasta el puerto 3128 donde escucha SQUID, la instrucción para conseguirlo es:

#iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128

Esta linea anterior se hace para que redireccione todo el trafico del puerto 3128 al 80, pero este tambien se debe hacer con la primera linea y la ultima del ejercicio que vamos a realizar a continuacion y de esta manera conseguiremos volver el proxy-squid transparente.

Ejercicio
Politicas de seguridad
Restringir el uso de Internet

1. Crear listas negras (archivos) para bloquear los siguientes contenidos.

Porno ---> para cada categori­a se debe crear una lista negra. Cada archivo tendra
Chat al menos dos registros
Correos
Deportes
Descargas
Juegos

2. Bloquear a todos los usuarios en la red la navegacion de los usuarios en las listas negras.
3. Bloquear a todos los usuarios las descargas y reproduccion de archivos .exe .mp3 .mpg .wav .iso .zip .rar.
4. La navegacion debe restringirse a horarios locales de lunes a viernes de 8 a 12 am y de 1 a 4:30 pm.
5. Existe un usuario sin ninguna sin ninguna restriccion 10.3.6.208.
6. Los usuarios de la red pueden acceder a paginas de correo gratuito y chat solamente solamente en el horario del almuerzo --> 12:00-13:00.
7. Configurar su maquina para que trabaje como proxy-transparente.


SOLUCION -->

#ESTA LINEA SE AGREGA JUNTO CON LA ULTIMA DE DEBAJO PARA COLOCAR EL #PROXY TRANSPARENTE
http_port 10.3.6.206:3128 transparent

#ES EL PUERTO POR DEFECTO DEL ICP
icp_port 0

#EN ESTA LINEA INDICAMOS EL TAMAÑO DE CACHE QUE DECEAMOS UTILIZAR
cache_mem 16 MB
cache_dir ufs /var/spool/squid 100 16 256
#ESTA LINEA SE AGREGA PARA COLOCAR LOS PROXY PARIENTES PARA COMPARTIR LA INFORMACION DE LA CACHE DE LOS PROXY
cache_peer proxy2.sena.edu.co parent 80 0 default

#LISTAS DE CONTROL DE ACCESO
#ESTA ACL TIENE EL NOMBRE "profe" src SIGNIFICA EL ORIGEN DE LA ACL
acl profe src 10.3.6.232
#ESTA ACL TIENE EL NOMBRE "Restringir-almuerzo" time MTWHF 12:00-13:30 SIGNIFICA EL HORARIO Y DIAS A LA QUE ESTA PERMITIDO ESTA ACL
acl Restringir-almuerzo time MTWHF 12:00-13:30
#ESTA ACL TIENE EL NOMBRE "RestringirPorHoras1" time MTWHF 12:00-13:30 SIGNIFICA EL HORARIO Y DIAS A LA QUE ESTA PERMITIDO ESTA ACL
acl RestringirPorHoras1 time MTWHF 08:00-12:00
#ESTA ACL TIENE EL NOMBRE "RestringirPorHoras2" time MTWHF 12:00-13:30 SIGNIFICA EL HORARIO Y DIAS A LA QUE ESTA PERMITIDO ESTA ACL
acl RestringirPorHoras2 time MTWHF 13:00-16:30
#ESTA ACL TIENE EL NOMBRE "ficeros" urlpath_regex -i ES PARA DENEGAR EL ACCESO A EXTENSIONES QUE SE ENCUENTRAN EN LA RUTA "/etc/squid/acl/ficheros.acl" --> SE DEBE EDITAR EL ARCHIVO ficheros.acl Y COLOCAR LAS EXTENSIONES ASI: mp3$, jpg$
acl ficheros urlpath_regex -i "/etc/squid/acl/ficheros.acl"
#ESTA ACL TIENE EL NOMBRE "porno" url_regex ES PARA DENEGAR EL ACCESO A PAGINAS WEB CON LAS PALABRAS QUE SE ENCUENTRAN EN LA RUTA "/etc/squid/acl/porno.acl" --> SE DEBE EDITAR EL ARCHIVO porno.acl Y COLOCAR LAS PALABRAS ASI: porno, sexo
acl porno url_regex "/etc/squid/acl/porno.acl"
#ESTA ACL TIENE EL NOMBRE "chat" url_regex ES PARA DENEGAR EL ACCESO A PAGINAS WEB CON LAS PALABRAS QUE SE ENCUENTRAN EN LA RUTA "/etc/squid/acl/chat_correos.acl" --> SE DEBE EDITAR EL ARCHIVO chat_correos.acl Y COLOCAR LAS PALABRAS ASI: hotmail, meebo
acl chat url_regex "/etc/squid/acl/chat_correos.acl"
#ESTA ACL TIENE EL NOMBRE "descarga" url_regex ES PARA DENEGAR EL ACCESO A PAGINAS WEB CON LAS PALABRAS QUE SE ENCUENTRAN EN LA RUTA "/etc/squid/acl/descargas.acl" --> SE DEBE EDITAR EL ARCHIVO descargas.acl Y COLOCAR LAS PALABRAS ASI: download, descargar
acl descarga url_regex "/etc/squid/acl/descargas.acl"
#ESTA ACL TIENE EL NOMBRE "sitios-web" dstdomain ES PARA DENEGAR EL ACCESO A DOMINIOS COMPLETOS QUE SE ENCUENTRAN EN LA RUTA # "/etc/squid/acl/sitios-web.acl" --> SE DEBE EDITAR EL ARCHIVO sitios-web.acl Y COLOCAR LOS DOMINIOS ASI: www.google.com, www.chatiapues.com
acl sitios-web dstdomain "/etc/squid/acl/sitios-web.acl"
#ESTA ACL TIENE EL NOMBRE "deporte" url_regex ES PARA DENEGAR EL ACCESO A PAGINAS WEB CON LAS PALABRAS QUE SE ENCUENTRAN EN LA RUTA "/etc/squid/acl/paginas-deporte.acl" --> SE DEBE EDITAR EL ARCHIVO paginas-deporte.acl Y COLOCAR LAS PALABRAS ASI: futbol, foxsport
acl deporte url_regex "/etc/squid/acl/paginas-deporte.acl"
#EN ESTA LINEA ESTAMOS INDICANDO EL RANGO DE TODAS LAS REDES
acl all src 0.0.0.0/0.0.0.0
#EN ESTA LINEA ESTAMOS INDICANDO EL RANGO DE TODA LA RED LOCAL
acl localnet src 10.3.6.128/255.255.255.128

#EN ESTA LINEA PERMITIMOS LA ACL "PROFE" ANTERIORMENTE INDICADA
http_access allow profe
#DENEGAMOS LA ACL "SITIOS-WEB" ANTERIORMENTE INDICADA
http_access deny sitios-web
#DENEGAMOS LA ACL "FICHEREOS" ANTERIORMENTE INDICADA
http_access deny ficheros
#DENEGAMOS LA ACL "PORNO" ANTERIORMENTE INDICADA
http_access deny porno
#PERMIRTIMOS LA ACL "CHAT" A LOCALNET (RED LOCAL INDICADA ANTERIORMENTE)PERO SOLAMENTE EN EL HORAIO INDICADO EN "Restringir-almuerzo"
http_access allow chat localnet Restringir-almuerzo
#DENEGAMOS LA ACL "CHAT" ANTERIORMENTE INDICADA
http_access deny chat
#DENEGAMOS LA ACL "DESCARGA" ANTERIORMENTE INDICADA
http_access deny descarga
#DENEGAMOS LA ACL "DEPORTE" ANTERIORMENTE INDICADA
http_access deny deporte

#ESTAS LINEAS NOS PERMITEN LAS ACL "RestringirPorHoras1 Y RestringirPorHoras2" EN EL HORARIO APLICADO EN LA ACL
http_access allow localnet RestringirPorHoras1
http_access allow localnet RestringirPorHoras2


#ESTA ES LA POLITICA POR DEFECTO QUE DENIEGA TODO EL TRAFICO QUE NO ESTA PERMITIDO
http_access deny all

#ESTA LINEA SE DEBE AGREGAR CON LA PRIMERA PARA COLOCAR EL PROXY COMO TRANSPARENTE
visible_hostname localhost

NOTA: Esta por demas decir que las lineas que estan con # es por que estan comentadas y si las colocamos sin # cuando ejecutemos el squid va a tomar estas lineas como caracteres y va a presentar errores, por este motivo debemos dejarlas comentadas al pasarlas al archivo .conf del squid.

lunes, 10 de marzo de 2008

FLISOL

FLISOL 2008




¿El sitio?
Nada más y nada menos que el Parque Explora. En medio de una atmósfera de investigación y tecnología el Festival hará presencia en Medellín, e invita desde ya a estudiantes, profesores, expertos, gomosos, escépticos y curiosos; para que se enteren de las opciones y herramientas que el software libre tiene para ofrecerle, no sólo a los conocedores sino al público general.


¿Qué es el FLISOL?

Es el evento de difusión de Software Libre más grande en Latinoamérica. Se realiza desde el año 2005 y su principal objetivo es promover el uso de éste, dando a conocer al público en general su filosofía, alcances, avances y desarrollo.
Esta propuesta es necesaria conocerla, no sólo por su aporte tecnológico sino social: saber que el software pago no es la única opción y que por el contrario el software libre brinda beneficios para sectores académicos y sociales que pueden hacer uso de éste; es otra de las tareas de difusión de este Festival.

El temor a lo desconocido se vence durante todo un día; desde las 9:00 a.m. hasta las 5:00 p.m. con actividades que van desde conferencias con personajes de talla internacional, hasta la instalación de software libre para aquellos que lleven sus equipos. Sin necesidad de “sacrificar” información o su sistema tradicional; la idea es empezar a conocer las facilidades que existen en esta materia, y que no se trata de una tecnología destinada sólo a expertos.
No es sólo Medellín, varias ciudades del país y de Latinoamérica estarán desarrollando actividades ese día, como una propuesta acertada para conocer más de estos espacios que cada vez toman más fuerza en el mundo.

Argentina, Bolivia, Brasil, Chile, Costa Rica, Cuba, Ecuador, El Salvador, Guatemala, Honduras, México, Nicaragua, Panamá, Paraguay, Perú, Uruguay, Venezuela; son los países que se unen a este Festival.

viernes, 7 de marzo de 2008

FIREWALL

Que es un firewall?

Un firewall es un dispositivo que funciona como cortafuegos entre redes, permitiendo o denegando las transmisiones de una red a la otra. Un uso típico es situarlo entre una red local y la red Internet, como dispositivo de seguridad para evitar que los intrusos puedan acceder a información confidencial.

Un firewal es simplemente un filtro que controla todas las comunicaciones que pasan de una red a la otra y en función de lo que sean permite o deniega su paso. Para permitir o denegar una comunicación el firewal examina el tipo de servicio al que corresponde, como pueden ser el web, el correo o el IRC. Dependiendo del servicio el firewall decide si lo permite o no. Además, el firewall examina si la comunicación es entrante o saliente y dependiendo de su dirección puede permitirla o no.

De este modo un firewall puede permitir desde una red local hacia Internet servicios de web, correo y ftp, pero no a IRC que puede ser innecesario para nuestro trabajo. También podemos configurar los accesos que se hagan desde Internet hacia la red local y podemos denegarlos todos o permitir algunos servicios como el de la web, (si es que poseemos un servidor web y queremos que accesible desde Internet). Dependiendo del firewall que tengamos también podremos permitir algunos accesos a la red local desde Internet si el usuario se ha autentificado como usuario de la red local.

Un firewall puede ser un dispositivo software o hardware, es decir, un aparatito que se conecta entre la red y el cable de la conexión a Internet, o bien un programa que se instala en la máquina que tiene el modem que conecta con Internet. Incluso podemos encontrar ordenadores computadores muy potentes y con softwars específicos que lo único que hacen es monitorizar las comunicaciones entre redes.


figura1. Esquema basico de un fariwall.


Ventajas de un Firewall

  • Protege de intrusiones. El acceso a ciertos segmentos de la red de una organización, sólo se permite desde máquinas autorizadas de otros segmentos de la organización o de Internet.
  • Protección de información privada. Permite definir distintos niveles de acceso a la información de manera que en una organización cada grupo de usuarios definido tendrá acceso sólo a los servicios y la información que le son estrictamente necesarios.
  • Optimización de acceso.- Identifica los elementos de la red internos y optimiza que la comunicación entre ellos sea más directa. Esto ayuda a reconfigurar los parámetros de seguridad.

figura 2. Esquema de un firewall en una LAN.

Tipos de politicas de Firewall

Hay dos políticas básicas en la configuración de un cortafuegos y que cambian radicalmente la filosofía fundamental de la seguridad en la organización:

  • Política restrictiva: Se deniega todo el tráfico excepto el que está explícitamente permitido. El cortafuegos obstruye todo el tráfico y hay que habilitar expresamente el tráfico de los servicios que se necesiten.
  • Política permisiva: Se permite todo el tráfico excepto el que esté explícitamente denegado. Cada servicio potencialmente peligroso necesitará ser aislado básicamente caso por caso, mientras que el resto del tráfico no será filtrado.

La política restrictiva es la más segura, ya que es más difícil permitir por error tráfico potencialmente peligroso, mientras que en la política permisiva es posible que no se haya contemplado algún caso de tráfico peligroso y sea permitido por defecto.

IPTABLES

Que es iptables y cual es su utilización?

Iptables permite al administrador del sistema definir reglas acerca de qué hacer con los paquetes de red. Las reglas se agrupan en cadenas: cada cadena es una lista ordenada de reglas. Las cadenas se agrupan en tablas: cada tabla está asociada con un tipo diferente de procesamiento de paquetes.

Cada regla especifica qué paquetes la cumplen (match) y un destino que indica qué hacer con el paquete si éste cumple la regla. Cada paquete de red que llega a una computadora o que se envía desde una computadora recorre por lo menos una cadena y cada regla de esa cadena se comprueba con el paquete. Si la regla cumple con el datagrama, el recorrido se detiene y el destino de la regla dicta lo que se debe hacer con el paquete. Si el paquete alcanza el fin de una cadena predefinida sin haberse correspondido con ninguna regla de la cadena, la política de destino de la cadena dicta qué hacer con el paquete. Si el paquete alcanza el fin de una cadena definida por el usuario sin haber cumplido ninguna regla de la cadena o si la cadena definida por el usuario está vacía, el recorrido continúa en la cadena que hizo la llamada (lo que se denomina implicit target RETURN o RETORNO de destino implícito). Solo las cadenas predefinidas tienen políticas.

En iptables, las reglas se agrupan en cadenas. Una cadena es un conjunto de reglas para paquetes IP, que determinan lo que se debe hacer con ellos. Cada regla puede desechar el paquete de la cadena (cortocircuito), con lo cual otras cadenas no serán consideradas. Una cadena puede contener un enlace a otra cadena: si el paquete pasa a través de esa cadena entera o si cumple una regla de destino de retorno, va a continuar en la primera cadena. No hay un limite respecto de cuan anidadas pueden estar las cadenas. Hay tres cadenas básicas (INPUT, OUTPUT y FORWARD: ENTRADA, SALIDA y REENVÍO) y el usuario puede crear tantas como desee. Una regla puede ser simplemente un puntero a una cadena.


Tablas de iptables

Hay tres tablas ya incorporadas, cada una de las cuales contiene ciertas cadenas predefinidas. Es posible crear nuevas tablas mediante módulos de extensión. El administrador puede crear y eliminar cadenas definidas por usuarios dentro de cualquier tabla. Inicialmente, todas las cadenas están vacías y tienen una política de destino que permite que todos los paquetes pasen sin ser bloqueados o alterados.

  • filter table (Tabla de filtros) — Esta tabla es la responsable del filtrado (es decir, de bloquear o permitir que un paquete continúe su camino). Todos los paquetes pasan a través de la tabla de filtros. Contiene las siguientes cadenas predefinidas y cualquier paquete pasará por una de ellas:
    • INPUT chain (Cadena de ENTRADA) — Todos los paquetes destinados a este sistema atraviesan esta cadena (y por esto se la llama algunas veces LOCAL_INPUT o ENTRADA_LOCAL)
    • OUTPUT chain (Cadena de SALIDA) — Todos los paquetes creados por este sistema atraviesan esta cadena (a la que también se la conoce como LOCAL_OUTPUT o SALIDA_LOCAL)
    • FORWARD chain (Cadena de REDIRECCIÓN) — Todos los paquetes que meramente pasan por este sistema (para ser ruteados) recorren esta cadena
  • nat table (Tabla de traducción de direcciones de red) — Esta tabla es la responsable de configurar las reglas de reescritura de direcciones o de puertos de los paquetes. El primer paquete en cualquier conexión pasa a través de esta tabla; los veredictos determinan como van a reescribirse todos los paquetes de esa conexión. Contiene las siguientes cadenas redefinidas:
    • PREROUTING chain (Cadena de PRERUTEO) — Los paquetes entrantes pasan a través de esta cadena antes de que se consulte la tabla de ruteo local, principalmente para DNAT (destination-NAT o traducción de direcciones de red de destino)
    • POSTROUTING chain (Cadena de POSRUTEO) — Los paquetes salientes pasan por esta cadena después de haberse tomado la decisión del ruteo, principalmente para SNAT (source-NAT o traducción de direcciones de red de origen)
    • OUTPUT chain (Cadena de SALIDA) — Permite hacer un DNAT limitado en paquetes generados localmente
  • mangle table (Tabla de destrozo) — Esta tabla es la responsable de ajustar las opciones de los paquetes, como por ejemplo la calidad de servicio. Todos los paquetes pasan por esta tabla. Debido a que está diseñada para efectos avanzados, contiene todas las cadenas predefinidas posibles:
    • PREROUTING chain (Cadena de PRERUTEO) — Todos los paquetes que logran entrar a este sistema, antes de que el ruteo decida si el paquete debe ser reenviado (cadena de REENVÍO) o si tiene destino local (cadena de ENTRADA)
    • INPUT chain (Cadena de ENTRADA) — Todos los paquetes destinados para este sistema pasan a través de esta cadena
    • FORWARD chain (Cadena de REDIRECCIÓN) — Todos los paquetes que exactamente pasan por este sistema pasan a través de esta cadena
    • OUTPUT chain (Cadena de SALIDA) — Todos los paquetes creados en este sistema pasan a través de esta cadena
    • POSTROUTING chain (Cadena de POSRUTEO) — Todos los paquetes que abandonan este sistema pasan a través de esta cadena

Cada cadena contiene una lista de reglas. Cuando un paquete se envía a una cadena, se lo compara, en orden, contra cada regla en la cadena. La regla especifica qué propiedades debe tener el paquete para que la regla lo matchee, como número de puerto o dirección IP. Si la regla no lo matchea, el procesamiento continúa con la regla siguiente. Si la regla, por el contrario, matchea el paquete, las instrucciones de destino de las reglas se siguen (y cualquier otro procesamiento de la cadena normalmente se aborta). Algunas propiedades de los paquetes solo pueden examinarse en ciertas cadenas (por ejemplo, la interfaz de red de salida no es válida en la cadena de ENTRADA). Algunos destinos solo pueden usarse en ciertas cadenas y/o en ciertas tablas (por ejemplo, el destino SNAT solo puede usarse en la cadena de POSRUTEO de la tabla de traducción de direcciones de red).


Destino de las reglas

El destino de una regla puede ser el nombre de una cadena definida por el usuario o uno de los destinos ya incorporados ACCEPT, DROP, QUEUE o RETURn (aceptar, descartar, encolar o retornar, respectivamente). Cuando un destino es el nombre de una cadena definida por el usuario, al paquete se lo dirige a esa cadena para que sea procesado (tal como ocurre con una llamada a una subrutina en un lenguaje de programación). Si el paquete consigue atravesar la cadena definida por el usuario sin que ninguna de las reglas de esa cadena actúe sobre él, el procesamiento del paquete continúa donde había quedado en la cadena actual. Estos llamados entre cadenas se pueden anidar hasta cualquier nivel deseado.

Existen los siguientes destinos ya incorporados:

ACCEP (aceptar)
Este destino hace que netfilter acepte el paquete. El significado de esto depende de cuál sea la cadena realizando esta aceptación. De hecho, a un paquete que se lo acepta en la cadena de ENTRADA se le permite ser recibido por la terminal (host), a un paquete que se lo acepta en la cadena de SALIDA se le permite abandonar la terminal y a un paquete que se lo acepta en la cadena de REDIRECCIÓN se le permite ser ruteado a través de la terminal.
DROP (descartar)
Este destino hace que netfilter descarte el paquete sin ningún otro tipo de procesamiento. El paquete simplemente desaparece sin indicación de que fue descartado al ser entregado a la terminal de envio o a una aplicación. Esto se le refleja al que envía, a menudo, como un communication timeout (alcance del máximo tiempo de espera en la comunicación), lo que puede causar confusión (aunque el descarte de paquetes entrantes no deseados se considera a veces una buena política de seguridad, pues no da ni siquiera el indicio a un posible atacante de que la terminal existe).
QUEUE (encolar)
Este destino hace que el paquete sea enviado a una cola en el espacio de usuario. Una aplicación puede usar la biblioteca libipq, también parte del proyecto netfilter/iptables, para alterar el paquete. Si no hay ninguna aplicación que lea la cola, este destino es equivalente a DROP.
RETURN(retorno)
Hace que el paquete en cuestión deje de circular por la cadena en cuya regla se ejecutó el destino RETURN. Si dicha cadena es una subcadena de otra, el paquete continuará por la cadena superior como si nada hubiera pasado. Si por el contrario la cadena es una cadena principal (por ejemplo la cadena INPUT), al paquete se le aplicará la política por defecto de la cadena en cuestión (ACCEPT, DROP o similar).

Hay muchos destinos de extensión disponibles. Algunos de los más comunes son:

REJECT (rechazo)
Este destino tiene el mismo efecto que 'DROP', salvo que envía un paquete de error a quien envió originalmente. Se usa principalmente en las cadenas de ENTRADA y de REDIRECCIÓN de la tabla de filtrado. El tipo de paquete se puede controlar a través del parámetro '--reject-with'. Un paquete de rechazo puede indicar explícitamente que la conexión ha sido filtrada (un paquete ICMP filtrado administrativamente por conexión), aunque la mayoría de los usuarios prefieren que el paquete indique simplemente que la computadora no acepta ese tipo de conexión (tal paquete será un paquete tcp-reset para conexiones TCP denegadas, un icmp-port-unreachable para sesiones UDP denegadas o un icmp-protocol-unreachable para paquetes no TCP y no UDP). Si el parámetro '--reject-with' no se especifica, el paquete de rechazo por defecto es siempre icmp-port-unreachable.
LOG (bitácora)
Este destino lleva un log o bitácora del paquete. Puede usarse en cualquier cadena en cualquier tabla, y muchas veces se usa para debuggear (análisis de fallos, como ser la verificación de qué paquetes están siendo descartados).
ULOG
Este destino lleva un log o bitácora del paquete, pero no de la misma manera que el destino LOG. El destino LOG le envía información al log del núcleo, pero ULOG hace multidifusión de los paquetes que matchean esta regla a través de un socket netlink, de manera que programas del espacio de usuario puedan recibir este paquete conectándose al socket.
DNAT
Este destino hace que la dirección (y opcionalmente el puerto) de destino del paquete sean reescritos para traducción de dirección de red. Mediante la opción '--to-destination' debe indicarse el destino a usar. Esto es válido solamente en las cadenas de SALIDA y PRERUTEO dentro de la tabla de nat. Esta decisión se recuerda para todos los paquetes futuros que pertenecen a la misma conexión y las respuestas tendrán su dirección y puerto de origen cambiados al original (es decir, la inversa de este paquete).
SNAT
Este destino hace que la dirección (y opcionalmente el puerto) de origen del paquete sean reescritos para traducción de dirección de red. Mediante la opción '--to-source' debe indicarse el origen a usar. Esto es válido solamente en la cadena de POSRUTEO dentro de la tabla de nat y, como DNAT, se recuerda para todos los paquetes que pertenecen a la misma conexión.
MASQUERADE
Esta es una forma especial, restringida de SNAT para direcciones IP dinámicas, como las que proveen la mayoría de los proveedores de servicios de Internet (ISPs) para modems o línea de abonado digital (DSL). En vez de cambiar la regla de SNAT cada vez que la dirección IP cambia, se calcula la dirección IP de origen a la cual hacer NAT fijándose en la dirección IP de la interfaz de salida cuando un paquete coincide con esta esta regla. Adicionalmente, recuerda cuales conexiones usan MASQUERADE y si la dirección de la interfaz cambia (por ejemplo, por reconectarse al ISP), todas las conexiones que hacen NAT a la dirección vieja se olvidan.

Estado de los paquetes

El seguimiento de conexiones clasifica cada paquete en uno de cuatro estados:

NEW(nuevo)
Intentando crear una conexión nueva.
ESTABLISHED (establecido)
Parte de una conexión ya existente.
RELATED (relacionado)
Relacionada, aunque no realmente parte de una conexión existente.
INVALID (inválido)
No es parte de una conexión existente e incapaz de crear una conexión nueva.

Utilizacion de los valores de iptables

En cada una de las formas de invocación de iptables que se muestra a continuación, las siguientes opciones comunes están disponibles:

-t tabla
Hace que el comando se aplique a la tabla especificada. Si esta opción se omite, el comando se aplica a la tabla filter por defecto.

-v
Produce una salida con detalles.

-n
Produce una salida numérica (es decir, números de puerto en lugar de nombres de servicio y direcciones IP en lugar de nombres de dominio).

--line-numbers
Cuando se listan reglas, agrega números de línea al comienzo de cada regla, correspondientes a la posición de esa regla en su cadena.


-j destino
--jump destino
Especifica el -j destino --jump destinodestino de una regla. El destino es el nombre de una cadena definida por el usuario (creada usando la opción -N, uno de los destinos ya incorporados, ACCEPT, DROP, QUEUE, o RETURN, o un destino de extensión, como REJECT, LOG, DNAT, o SNAT. Si esta opción es omitida en una regla, entonces el matcheo de la regla no tendrá efecto en el destino de un paquete, pero los contadores en la regla se incrementarán.
-i [!] in-interface
--in-interface [!] in-interface
Nombre de una interfaz a través de la cual un paquete va a ser recibido (solo para paquetes entrando en las cadenas de INPUT, FORWARD y PREROUTING). Cuando se usa el argumento '!' antes del nombre de la interfaz, el significado se invierte. Si el nombre de la interfaz termina con '+', entonces cualquier interfaz que comience con este nombre será matcheada. Si esta opción se omite, se matcheará todo nombre de interfaz.
-o [!] out-interface
--out-interface [!] out-interface
Nombre de una interfaz a través de la cual un paquete va a ser enviado (para paquetes entrando en las cadenas de FORWARD, OUTPUT y PREROUTING). Cuando se usa el argumento '!' antes del nombre de la interfaz, el significado se invierte. Si el nombre de la interfaz termina con '+', entonces cualquier interfaz que comience con este nombre será matcheada. Si esta opción se omite, se matcheará todo nombre de interfaz.
-p [!] protocol
--protocol [!] protocol
Matchea paquetes del nombre de protocolo especificado. Si '!' precede el nombre de protocolo, se matchean todos los paquetes que no son el protocolo especificado. Nombres de protocolo válidos son icmp, udp, tcp... Una lista de todos los protocolos válidos puede encontrarse en el archivo /etc/protocols.
-s [!] origen[/prefijo]
--source [!] origen[/prefijo]
Matchea paquetes IP vieniendo de la dirección de origen especificada. La dirección de origen puede ser una dirección IP, una dirección IP con un prefijo de red asociado, o un nombre de terminal (hostname). Si '!' precede al origen, se matchean todos los paquetes que no vienen del origen especificado.
-d [!] destino[/prefijo]
--destination [!] destino[/prefijo]
Matchea paquetes IP yendo a la dirección de destino especificada. La dirección de destino puede ser una dirección IP, una dirección IP con un prefijo de red asociado, o un nombre de terminal (hostname). Si '!' precede al origen, se matchean todos los paquetes que no van al destino especificado.
--destination-port [!] [puerto[[:puerto]]
--dport [!] [puerto[[:puerto]]
Matchea paquetes TCP o UDP (dependiendo del argumento a la opción -p) destinados a los puertos o rango de puertos (cuando se usa la forma puerto:puerto) especificados. Si '!' precede la especificación de puertos, se matchean todos los paquetes TCP o UDP que no están destinados a los puertos o rango de puertos especificados.
--source-port [!] [puerto[[:puerto]]
--sport [!] [puerto[[:puerto]]
Matchea paquetes TCP o UDP (dependiendo del argumento a la opción -p) que vienen de los puertos o rango de puertos (cuando se usa la forma puerto:puerto) especificados. Si '!' precede la especificación de puertos, se matchean todos los paquetes TCP o UDP que no vienen de los puertos o rango de puertos especificados.

lunes, 3 de marzo de 2008

SEGURIDAD PERIMETRAL

Que es seguridad perimetral?

La seguridad perimetral tiene que ver con medidas que permitan evitar o mitigar los efectos de sabotaje, ingreso no autorizado, ataques de negación de servicio y los efectos colaterales de virus y troyanos. Lamentablemente el "perímetro" puede estar comprometido también por "dentro" y alguien de nuestra empresa ser el "hacker".

Todos los sistemas tienen vulnerabilidades, lo que significa que
existe la necesidad de efectuar evaluaciones y contar con las herramientas para mantener estas evaluaciones permanentemente.

Dimensionar el riesgo y estar preparado para experimentarlo, pues es un hecho estadístico que seremos penetrados o atacados o perjudicados tarde o temprano. Por definición un Servidor publico de internet, es decir cualquiera que proporciona un servicio que puede ser accesado desde el exterior, es una maquina insegura y esta expuesta a todo tipo de riesgos, desde la penetración hasta la incapacidad de proporcionar el servicio. Si algo es muy importante simplemente no debe estar expuesto a Internet.

Lo que normalmente se hace es dimensionar el riesgo y asumirlo pues no podemos eliminarlo completamente. Lo segundo es minimizar el impacto de este riesgo por medio de medidas físicas y lógicas ( firewalls, clusters, IDS, auditorias a los logs, respaldo, etc)



Lo que se debe hacer es:

1-. Conocer las debilidades de nuestros sistemas informáticos. y crear mecanismos de auditoría periódica. Asumir el riesgo.
2-. Estar preparados para el desastre y para la recuperación por medio de un plan de contingencia, tener respaldo de datos.


Uno de los aspectos importantes es valorizar monetariamente el impacto de un potencial atentado.

La seguridad es una actitud, no solo un conjunto de medidas. La seguridad es asumir y conocer el riesgo. La seguridad absoluta no existe, lo que si existe es el compromiso parcial y no total ante una brecha de seguridad. La seguridad es cara en proporción con la importancia de los datos o los sistemas a proteger. La actitud mas segura es no sentirse seguro.

Lo más común es implementar un Firewall para proteger posibles ataques desde Internet. Este dispositivo frecuentemente está conectado debajo del equipo de ruteo a la salida de Internet. Debe poder controlar el tráfico de entrada y salida de la organización, además de filtrar la información que pudiera ser perjudicial a los sistemas, como, virus, troyanos, código malicioso en general. La información saliente de la empresa debe preocupar a cualquiera, por eso, es importante tener un conocimiento completo de las aplicaciones permitidas y aplicar políticas para restringir el uso de otras que puedan afectar al sistema o negocio. Por lo antes mencionado, debe ser un requerimiento de seguridad, conocer los puertos que utilizan las aplicaciones permitidas y verificar la forma de tener control sobre la información que viaja sobre estas. Además de definir qué puertos son permitidos para dicha aplicación.

Podemos mencionar que es necesario tener filtros de contenido para correo y navegación. Así como la necesidad de tener ubicados los servicios de Internet, como es Correo electrónico -puerto 25- y para el Hipertexto -puerto 80-. En estos servicios es recomendable utilizar un segmento separado de la red, conocido regularmente como Red de Servicio o DMZ, la cual estará protegida por una tarjeta especial del Firewall principal. Otro punto importante a revisar son las Redes Privadas Virtuales, mejor conocidas como VPN´s. Estas deben de cumplir con aspectos mínimos de seguridad, con el fin de garantizar que su uso cubra los requisitos mínimos solicitados por el corporativo. Algunos de los aspectos son: contar con un Firewall personal en todo momento, para garantizar que un equipo remoto tenga acceso y utilice servicios de la red y no se convierta en un puente u otro punto de vulnerabilidad. También es necesario asegurar que este equipo cuente con una protección antivirus aceptable y lo más importante es, únicamente permitir el acceso a los servicios necesarios para ese usuario. Este es uno de los detalles mas importantes debido que al confiar en el usuario de la VPN, regularmente es un empleado, este no hará nada por afectar los servicios que utiliza.

Algo que debe siempre considerarse en un entorno seguro es la protección hacia los sistemas y las personas que los utilizan. Es complicado concretizar al personal de una organización sobre la importancia de la seguridad y lo que esto implica cuando se presenta una situación que pueda afectar al negocio. Por ejemplo, el requisito de utilizar una contraseña con ciertas características, es un elemento de seguridad, el cual proporciona control de acceso a la información que se maneja, evitando que ésta pueda ser vista por usuarios no autorizados.