• No se han encontrado resultados

"Reforzamiento de la Seguridad de un Sistema Mediante un Mecanismo de Autorización de Comandos"-Edición Única

N/A
N/A
Protected

Academic year: 2017

Share ""Reforzamiento de la Seguridad de un Sistema Mediante un Mecanismo de Autorización de Comandos"-Edición Única"

Copied!
51
0
0

Texto completo

(1)

PUBLICACIÓN DE TRABAJOS DE GRADO

Las Bibliotecas del Sistema Tecnológico de Monterrey son depositarias de los trabajos recepcionales y de

grado que generan sus egresados. De esta manera, con el objeto de preservarlos y salvaguardarlos como

parte del acervo bibliográfico del Tecnológico de Monterrey se ha generado una copia de las tesis en

versión electrónica del tradicional formato impreso, con base en la Ley Federal del Derecho de Autor

(LFDA).

Es importante señalar que las tesis no se divulgan ni están a disposición pública con fines de

comercialización o lucro y que su control y organización únicamente se realiza en los Campus de origen.

Cabe mencionar, que la Colección de

Documentos Tec,

donde se encuentran las tesis, tesinas y

disertaciones doctorales, únicamente pueden ser consultables en pantalla por la comunidad del

Tecnológico de Monterrey a través de Biblioteca Digital, cuyo acceso requiere cuenta y clave de acceso,

para asegurar el uso restringido de dicha comunidad.

El Tecnológico de Monterrey informa a través de este medio a todos los egresados que tengan alguna

inconformidad o comentario por la publicación de su trabajo de grado en la sección Colección de

(2)

"Reforzamiento de la Seguridad de un Sistema Mediante un

Mecanismo de Autorización de Comandos"-Edición Única

Title

"Reforzamiento de la Seguridad de un Sistema Mediante

un Mecanismo de Autorización de Comandos"-Edición

Única

Authors

Antonio Varela Lizardi

Affiliation

Tecnológico de Monterrey, Universidad Virtual

Issue Date

2004-11-01

Item type

Tesis

Rights

Open Access

Downloaded

18-Jan-2017 22:15:12

(3)

CAMPUS SONORA NORTE 

DIVISIÓN DE GRADUADOS E INVESTIGACIÓN 

"REFORZAMIENTO DE LA SEGURIDAD DE UN SISTEMA MEDIANTE UN  MECANISMO DE AUTORIZACIÓN DE COMANDOS" 

TESIS 

ANTONIO VARELA LIZARDI 

(4)

INSTITUTO TECNOLÓGICO Y DE ESTUDIOS SUPERIORES DE MONTERREY  CAMPUS SONORA NORTE 

" R E F O R Z A M I E N T O DE LA SEGURIDAD DE UN SISTEMA MEDIANTE UN M E C A N I S M O DE AUTORIZACIÓN DE C O M A N D O S "

Los miembros del Comité de Tesis recomendamos que la presente Tesis del Ing. Antonio Varela Lizardi sea aceptada como requisito parcial para obtener el grado académico de Maestro en Ciencias Computacionales.

Comité de Tesis

Dr. Manuel Galaz Díaz A S E S O R

M. en C. Abraham Aldaco

Gastélum SINODAL

M. en C. Guadalupe Alexandres García

(5)

ANTONIO V A R E L A LIZARDI

TESIS P R E S E N T A D A A LA FACULTAD DEL ITESM

(6)

Dedicatoria 

El producto de este trabajo es resultado de un esfuerzo compartido. Primeramente mis padres y hermana, que son los pilares de mi familia.

Finalmente mi esposa y mi hija, quienes hacen que cualquier esfuerzo y sacrificio, por grandes que éstos sean, tengan sentido.

(7)

El autor de la presente tesis desea expresar su más sincero y profundo agradecimiento al Dr. Manuel Galaz Díaz, quien con paciencia supo orientarme objetivamente durante la elaboración del presente documento. Su apoyo y enseńanzas han sido incalculables para este trabajo.

De la misma manera, deseo externar el más profundo agradecimiento a mis sinodales, M. en C. Abraham Aldaco y M. en C. Guadalupe Alexandres, quienes formaron parte del Comité Evaluador de la tesis y compartieron con un servidor las experiencias de la investigación realizada en el presente documento.

Por último, pero no en importancia, al ITESM Campus Sonora Norte y especialmente a la Lic. Norma Tapia. Sin su apoyo este documento no hubiera sido posible.

(8)

Resumen 

Uno de los temas principales en seguridad de redes es el proteger a los sistemas contra la penetración de intrusos. La situación se torna más compleja cuando se tienen que tomar medidas contra penetradores internos. Los

penetradores internos son aquellos intrusos que tienen acceso al sistema pero que intentan conseguir acceso a información que les está restringida; o bien, aquellos usuarios que utilizan privilegios de acceso concedidos para sus funciones

normales en el sistema y hacen uso inapropiado de éstos. La construcción de un sistema 100% a prueba de intrusos no es técnicamente factible y, por lo tanto, deben tomarse medidas a ese respecto. Para prevenir dańos por parte de

penetradores internos se necesita un mecanismo que actué de manera proactiva también, desde adentro del sistema. El presente trabajo de investigación propone la utilización de un protocolo, parte de los estándares de Internet, con el fin de construir un mecanismo de autorice o niegue la ejecución de comandos iniciados por penetradores internos. Este mecanismo es efectivo incluso cuando se trata de usuarios con privilegios de acceso privilegiados. Además, este mecanismo

genera, automáticamente, una bitácora donde se registran las solicitudes de comandos restringidos y los asocia a las claves de los usuarios que los iniciaron. Esta bitácora es pieza clave del éxito de los sistemas de auditoria de seguridad. La presente tesis aporta, como contribución original, la utilización del protocolo T A C A C S para el mejoramiento de la seguridad en servidores y no en equipos de redes, para lo cual fue concebido originalmente.

(9)

1.1 Descripción del problema 1

1.2 Alcances 2 1.3 Solución propuesta 2

1.3.1 Objetivos de la solución propuesta 3 1.4 Descripción de la experimentación 3 1.5 Descripción de los capítulos siguientes 3

2 Revisión bibliográfica 5

2.1 Firewalls 5 2.2 Tipos de intrusos 6

2.3 La paradoja de la seguridad 7

2.4 Móvil de un intruso 8 2.5 Detección de Intrusos 9

2.6 Trampas 11 3 Metodología de investigación 12

4 Solución propuesta 14 4.1 El servidor de autorización 15

4.1.1 Declaración de usuarios y grupos de usuarios 16 4.1.2 Declaración de la autorización de comandos 17

4.2 El sistema de solicitud de autorización 18 4.3 Ventajas de la solución propuesta 21 5 Modelo de experimentación 22

5.1 Experimento #1: Prevenir la visualización de las variables de operación del servidor. 23 5.2 Experimento #2: Prevenir que el usuario modifique las variables de ejecución 29 5.3 Experimento #3: Restringir la ejecución de una instrucción SQL básica 32 5.4 Experimento #4: Restringir el acceso y modificación de una pieza específica de

información 33 6 Conclusiones y recomendaciones 37

Glosario de acrónimos 39 Bibliografía y referencias de Internet 40

Vita 41

[image:9.612.61.509.103.530.2]
(10)

Lista de Figuras 

Figura 1. Intentos fallidos de acceso a un sistema 7 Figura 2. Declaración de usuarios y grupos de usuarios 16

Figura 3. Seudo código para establecer comunicación con el servidor de

autorización 20 Figura 4. Ejecución de "show all" 24

Figura 5. Registro en la bitácora del comando "show all" 24

Figura 6. Ejecución de show server_version 26 Figura 7. Ejecución de fallida del comando show max_connections 26

Figura 8. Ejecución de exitosa del comando show max_connections 28

Figura 9 Cambio de Identidad de Usuario 30 Figura 10. Negación de la ejecución del comando S E T 31

Figura 11. Cambio de password para el agente 300 34 Figura 12. Cambio de password para el agente 201 35 Figura 13. Mostrar el password para el agente 300 35

Lista de Tablas 

Tabla 1. Descripción de la Tabla Filiales 23 Tabla 2. Descripción de la Tabla Agentes 23

(11)

Figura 2. Declaración de usuarios y grupos de usuarios 16 Figura 3. Seudo código para establecer comunicación con el servidor de

autorización 20 Figura 4. Ejecución de "show all" 24

Figura 5. Registro en la bitácora del comando "show all" 24

Figura 6. Ejecución de show server_version 26 Figura 7. Ejecución de fallida del comando show max_connections 26

Figura 8. Ejecución de exitosa del comando show max_connections 28

Figura 9 Cambio de Identidad de Usuario 30 Figura 10. Negación de la ejecución del comando S E T 31

Figura 11. Cambio de password para el agente 300 34 Figura 12. Cambio de password para el agente 201 35 Figura 13. Mostrar el password para el agente 300 35

Lista de Tablas 

Tabla 1. Descripción de la Tabla Filiales 23 Tabla 2. Descripción de la Tabla Agentes 23

(12)

1 Introducción. 

La segundad de los sistemas de cómputo está tomando más importancia día con día, tanto en el ámbito de hardware como en el software. La tecnología ha evolucionado a una velocidad impresionante, pero también ha ocurrido lo mismo con los usuarios. La tendencia actual es de sistematizar y ofrecer servicios y prestaciones "en línea" tanto de organizaciones privadas como instituciones de gobierno. Actividades como exhibición de productos, ventas, servicios bancarios y trámites gubernamentales entre otros, son comunes en la actualidad.

Próximamente servicios como telefonía y video digitales se establecerán de

manera permanente en las redes de datos. Ante estas situaciones, la seguridad en los sistemas computacionales es un aspecto cada vez más crítico en nuestros días debido a que el Internet se ha vuelto en un medio generalizado para realizar operaciones comerciales desde cualquier rincón del planeta, siempre y cuando se tenga una terminal con la conectividad necesaria. De ahí que los sistemas

corporativos se hallen vulnerables a ataques de usuarios furtivos o "hackers" como

comúnmente se les conoce en inglés. A estos usuarios furtivos se les atribuyen verdaderas catástrofes corporativas ya que son capaces de generar caos en los sistemas, dejando a su paso cuantiosas pérdidas económicas. Este trabajo de investigación trata el problema de la intrusión de usuarios furtivos y propone una manera de proteger los activos computacionales de una empresa mediante la utilización de un protocolo de autorización de comandos en los servidores de red.

1.1 Descripción del problema. 

Un sistema de información corporativo ("Enterprise Information System" o EIS,

por sus siglas en inglés) generalmente cuenta con las siguientes características. a. Se encuentra interconectado a alguna tecnología de transmisión de datos,

típicamente redes de datos convencionales basadas en cables de cobre o fibra óptica utilizando algún protocolo de Internet como TCP/IP.

b. Está diseńado para poder atender solicitudes de muchos usuarios de manera concurrente.

c. Las solicitudes de los usuarios llegan y se despachan a través de los medios descritos en el punto a.

d. Típicamente está interconectado a otros EIS a través de los medios descritos en el punto a.

(13)

Tales características son sumamente importantes, porque permiten la integración de información con sistemas y usuarios remotos. Dicho en otras palabras, es una tecnología muy frecuentemente utilizada como apoyo a la toma de decisiones. Sin embargo, no todos los posibles usuarios remotos o locales de una organización necesitan tener acceso al EIS. Incluso, de entre de los usuarios que tienen permitido el acceso, sólo algunos tienen acceso a todos los

componentes del EIS. Esta situación se torna mas complicada en ambientes donde el sistema tiene que operarse a través de Internet, donde además es difícil evitar el anonimato de los usuarios. Hay negocios muy rentables cuya operación depende totalmente de sistemas de cómputo que desempeńan sus funciones en un ambiente preponderantemente hostil, como lo es el Internet.

Los usuarios que operan los EIS son de diferentes niveles, y tienen funciones y responsabilidades diferentes. Lamentablemente, intrínseco al ser humano están una serie de comportamientos no deseables que van desde la simple curiosidad hasta la ambición, los cuales se convierten en poderosa justificación necesaria para que un usuario intente accesar partes del sistema que no le conciernen y/o para las cuales no se le ha conferido la autorización debida.

El problema lo identificamos como la necesidad de mantener confinado a un usuario dentro de las acciones que se le tengan permitidas realizar, así como dentro de la naturaleza de la información que tenga permitido accesar en un sistema EIS.

1.2 Alcances. 

Durante la presente investigación, se desarrollará un software prototipo que ayudará a confinar a un usuario o proceso dentro de sus límites de acción y acceso a la información. El sistema será flexible en su configuración de

restricciones, basado en expresiones regulares. Será posible adaptarlo a una gran variedad de situaciones con un mínimo de modificaciones. Además, se

proporcionará un registro con información útil para un Sistema de Detección de Intrusiones.

1.3 Solución propuesta. 

(14)

1.3.1 Objetivos de la solución propuesta. 

El objetivo primordial del presente estudio es reforzar la seguridad de un sistema que sea capaz de:

• Proveer un mecanismo de defensa proactivo, capaz de regular y restringir la actividad de los usuarios del sistema en función de las acciones que se

pretendan ejecutar, complementando los mecanismos de seguridad estándares de los sistemas.

• Generar un registro de eventos, con la descripción de las actividades

intentadas y/o autorizadas de los usuarios, que será útil para un sistema de Detección de Intrusos.

1.4 Descripción de la experimentación. 

La verificación de la consecución del objetivo del presente trabajo de investigación se basa en una experimentación que consistirá en adaptar la solución propuesta a un programa de uso común, con el fin de incrementar la seguridad de acceso en el mismo. Se desarrollarán las bibliotecas de funciones en lenguaje Java y se modificará una aplicación de escritorio implementada en Java que accesa un servidor de bases de datos S Q L mediante J D B C . Se configurará el sistema para prevenir accesos a información contenida en el servidor de bases de datos de tal manera que, utilizando los medios normales del servidor para proteger la información, no sea posible conseguir el mismo resultado.

1.5 Descripción de los capítulos siguientes. 

A continuación se presenta una lista de los capítulos adicionales que se incluyen en este trabajo de investigación.

• Capítulo 2, Revisión Bibliográfica: Definición de conceptos fundamentales de seguridad, riesgos de seguridad, intrusos y tipos de intrusos, así como la identificación del tipo de intruso que se está deseando contrarrestar con la solución propuesta.

• Capítulo 3, Metodología: Incluye la lista de actividades necesarias para la realización de este trabajo de investigación.

• Capítulo 4. Solución Propuesta: Presenta una descripción detallada de los componentes de la solución propuesta.

• Capítulo 5. Modelo Experimental: Presenta una descripción de la

experimentación necesaria para verificar que la solución propuesta cumple con el objetivo de reforzar la seguridad de un sistema.

• Capítulo 6. Conclusiones y Recomendaciones: Presenta una lista de conclusiones derivadas del trabajo de investigación, así como una serie de

(15)
(16)

5

2 Revisión bibliográfica 

Muchas Organizaciones dependen de la operación sistemas de cómputo desde sitios de Internet, manteniéndolos expuestos a diversos tipos de ataques. Internet representa actualmente el escaparate comercial de miles de empresas y, por lo mismo, no es factible ocultar esos servicios del público en una política de "Seguridad a través de la oscuridad".

Los métodos convencionales utilizados para reforzar la seguridad de un sistema se describen a continuación.

2.1 Firewalls. 

Es posible resguardar a un sistema construyendo barreras al rededor del mismo. Estas barreras usualmente están fuera del sistema que deseamos proteger, y uno de los casos es la configuración de un Firewall. Un Firewall se define como una colección de componentes colocados entre dos redes, y que conjuntamente cumplen con los siguientes requisitos [6]:

• Todo el tráfico que fluye por la red debe pasar forzosamente por el Firewall. 

•  S e ˇmplementan políticas para filtrar el tráfico que entra y sale de la red. 

• El Firewall en sí debe ser invulnerable1

Una parte del mecanismo se establece en los ruteadores que componen la  configuración de una red. Se filtran paquetes de capa 4 basados en  T C P y UDP, y  otros protocolos de nivel 3 como ICMP. Los filtros son aplicados ya sea para 

paquetes entrantes o paquetes salientes en uno o varios criterios: 

• Dirección IP origen y/o destino. 

• Puerto  T C P / U D P origen y/o destino. 

• Banderas de estado de conexión (solamente  T C P ) 

• Interfaz de entrada o de salida. 

Un Firewall correctamente configurado puede ser un filtro eficiente para  conexiones iniciadas por usuarios remotos, como una medida preventiva. Sin  embargo, esta medida no es suficiente porque no todos los usuarios 

potencialmente peligrosos provienen de conexiones remotas. En este punto es  conveniente definir a los tipos de intrusos. 

1

(17)

2.2 Tipos de intrusos. 

La definición básica de intruso trata de perfilar a un usuario que ya se  encuentra dentro del sistema. Por ejemplo podemos mencionar a usuarios  curiosos que intentan conocer información de otras áreas, o bien un alumno que  pretende "mejorar" su calificación, o lo que es peor aún: Un usuario administrador  que hace mal uso de sus privilegios de acceso. Anderson plantea una clasificación  general de los intrusos, la cual tomaremos como base [5]. 

1. Penetradores externos. Usuarios no autorizados a utilizar un recurso  computacional y que están buscando la manera de hacerlo. 

2. Penetradores internos. Usuarios autorizados a utilizar una parte de un  recurso computacional y que están buscando acceso a partes que no les  corresponden. 

a. Intrusos enmascarados. Intrusos que penetran al sistema utilizando  las credenciales de otro usuario. 

b. Usuarios clandestinos. Usuarios que logran accesar partes no  autorizadas del recurso computacional esquivando los mecanismos de  seguridad. 

3. Usuarios desleales. Usuarios que tienen permitida la entrada al sistema, pero  que hacen un mal uso de los privilegios de acceso que poseen. 

Para este estudio, nos es relevante el penetrador interno. Por otro lado, los  ataques a sistemas mas comúnmente caracterizados consisten de un penetrador  externo que, al conseguir algún tipo de acceso al sistema, se vuelve un penetrador  interno. 

Anderson propone que los penetradores externos pueden ser detectados  registros de intentos fallidos de entradas al sistema, y los penetradores internos  pueden ser detectados mediante intentos de acceso fallidos a archivos, programas  u otros recursos. 

(18)

7

Figura 1. Intentos fallidos de acceso a un sistema. 

s s h d :

A u t h e n t i c a t i o n F a i l u r e s :

r o o t ( 2 4 . 2 1 3 . 6 1 . 2 . s t a t i c . u p . m i . c h a r t e r m i . n e t ) : 59 T i m e ( s ) r o o t ( 6 1 . 3 3 . 2 1 . 2 5 0 ) : 5 T i m e ( s )

adm ( 2 4 . 2 1 3 . 6 1 . 2 . s t a t i c . u p . m i . c h a r t e r m i . n e t ) : 2 T i m e ( s ) r o o t ( 6 1 . 1 4 2 . 1 9 . 1 3 C ) : 2 T i m e ( s )

a p a c h e ( 2 4 . 2 1 3 . 6 1 . 2 . s t a t i c . u p . m i . c h a r t e r m i . n e t ) : 1 T i m e ( s ) c y r u s ( 2 4 . 2 1 3 . 6 1 . 2 . s t a t i c . u p . m i . c h a r t e r m i . n e t ) : 1 T i m e ( s ) f t p ( k a r p . e c e . c m u . e d u ) : 1 T i m e ( s )

m a i l ( k a r p . e c e . c m u . e d u ) : 1 T i m e ( s )

m y s q l ( 2 4 . 2 1 3 . 6 1 . 2 . s t a t i c . u p . m i . c h a r t e r m i . n e t ) : 1 T i m e ( s ) m y s q l ( k a r p . e c e . c m u . e d u ) . : 1 T i m e ( s )

n o b o d y ( 2 4 . 2 1 3 . 6 1 . 2 . s t a t i c . u p . m i . c h a r t e r m i . n e t ) : 1 T i m e ( s ) n o b o d y ( 6 1 . 1 4 2 . 1 9 . 1 3 0 ) : 1 T i m e ( s )

o p e r a t o r ( 2 4 . 2 1 3 . 6 1 . 2 . s t a t i c . u p . m i . c h a r t e r m i . n e t ) : 1 T i m e ( s )

La figura 1 muestra una parte del resultado de un análisis de bitácoras 

automatizado de un servidor que está expuesto a Internet, en donde se muestran  los intentos fallidos de acceso de diversos usuarios y desde direcciones de 

Internet desconocidas. El software se conoce como "LogWatch", y es de dominio  público. 

Sin restarle importancia a la utilidad de este análisis, éste presenta un riesgo  potencial, el que se puede olvidar que la información que presenta refiere hechos  y acciones que ya ocurrieron. 

Un sistema que opera en Internet está propenso a ataques que intentarán  explotar diversos problemas: Fallas en los sistemas operativos, en la configuración  de los sistemas2

 y fallas en los programas de aplicación. Anderson introdujo el  concepto de "Detección de Intrusos", y definió como un intento de intromisión o  amenaza a la posibilidad (incluso potencial) de un intento deliberado y no  autorizado de: 

• Acceso a la información: Violación de la confidencialidad de la información. • Manipulación de la información: Violación de la integridad de la información. • Dejar a un sistema inestable o inutilizable: Negación de servicios.

2.3 La paradoja de la seguridad. 

Implementar la seguridad de un sistema es una tarea compleja. Podemos comenzar estableciendo Firewalls que protejan al sistema operativo y sus programas de penetradores externos. Podemos instalar diferentes tipos de

2

(19)

dispositivos identificadores. Es posible establecer mecanismos de protección de  información mediante criptografía. Sin embargo, ésta es una tarea ardua [3]. 

1 En la práctica es imposible construir un sistema completamente seguro. El  software totalmente libre de errores es una tarea que en la mayoría de los  casos es muy difícil de conseguir. 

2 El software actualmente en uso a nivel mundial es enorme. Una cruzada para  elevar el nivel de seguridad requeriría un enorme esfuerzo. 

3 Los métodos criptográficos no son 100% seguros. La fortaleza de un algoritmo  criptográfico está en la dificultad que presenta para obtener la respuesta 

mediante un análisis de fuerza bruta3

. Típicamente protegemos con criptografía  las contraseńas de los usuarios, pero este es el eslabón más débil en la  cadena, debido a los errores que cometen los seres humanos: Seleccionar  contraseńas triviales, u omitirlas totalmente; anotar la contraseńa en un lugar  visible y dejar la terminal desatendida, por mencionar algunos. 

4 Aún con un sistema muy seguro, seríamos vulnerables a los usuarios  desleales. 

5 Las restricciones impuestas al usuario afectan su rendimiento. Mientas mas  restringido o confinado se sienta un usuario, menor será su productividad. 

2.4 Móvil de un intruso. 

Para que un usuario se convierta en intruso, necesita existir un motivo que lo  impulse a buscar acceso no autorizado. Algunos de estos motivos pueden ser [7]: 

1 Curiosidad. A diferencia de los usuarios con privilegios de administración, los  usuarios regulares tienen acceso limitado al sistema. Inherente a la 

naturaleza humana está la curiosidad por conocer información ajena. 

2 Retos o ambición personal. Usuarios técnicos o con conocimientos 

avanzados suelen encontrar retador el burlar los mecanismos de seguridad  de un sistema4

. Otros usuarios encontrarán aquí una manera de obtener  cierto "estatus" o reconocimiento. 

3 Intento de enriquecimiento ilegal. Aquí las variantes son numerosas, pero  todas van enfocadas a obtener dinero como resultado de la acción ilegal. 

' E l análisis de fuerza bruta consiste en sistemáticamente probar todas las posibles soluciones de un problema. Puede ser muy tardado, pero tarde o temprano daremos con la solución.

4

(20)

9

4 Espionaje Industrial y Militar. Este es un tópico viejo, el cual se ha 

modernizado con el tiempo. A menudo implica elevados conocimientos de  hardware, software y técnicas de criptografía. 

En función del tipo de intruso y de sus motivos para cometer la intromisión  serán las medidas de seguridad que se tomen para proteger los sistemas. Es muy  diferente proteger las cantidades de dinero de un sistema bancario que evitar que  un usuario coloque un mensaje divertido en una página web. 

2.5 Detección de Intrusos. 

En la mayoría de las situaciones es deseable contar con un sistema que 

recolecte y registre la información generada por las bitácoras. Como mencionamos  anteriormente, la desventaja del análisis de bitácoras es que se identifican intentos  de intrusión que ya sucedieron. Es posible que podamos identificar una intrusión  que ya ha sido ejecutada, pero en otros casos dependiendo de la habilidad del  intruso es posible que elimine sus rastros. Este campo de investigación del  ambiente operativo del sistema se conoce como Detección de Intrusos.

Anderson propone las siguientes definiciones [5]: 

1 Riesgo. Exposición accidental o impredecible de la información, o violación  de la integridad en la operación de un sistema debido a un mal 

funcionamiento del hardware o un mal diseńo del software. 

2 Vulnerabilidad. Falla en la operación del hardware o software de un sistema,  ya  s e a conocida o sospechada, que expone al mismo a la penetración de  intrusos o a su información. 

3 Ataque. Formulación o ejecución específica de un plan que constituye una  amenaza al sistema. 

4 Penetración. Ataque exitoso. Obtención de acceso no autorizado o no  detectado a archivos, programas o al control de un sistema computacional. 

Un Sistema de Detección de Intrusos (SDI) tiene la tarea de detectar ataques  al sistema, en el menor tiempo posible o en tiempo real de ser necesario, para  poder tomar una acción preventiva o correctiva. El SDI no toma medidas 

preventivas por sí mismo, su función en más ser un agente reactivo que proactivo.  Más que ser policía, es un informante. 

Las técnicas utilizadas por los sistemas de detección de intrusos pueden ser  clasificadas en dos categorías [3]: 

1 Detección de anomalías. Las técnicas de detección de anomalías asumen  que todo comportamiento anormal es un intento de intrusión. Si es posible  establecer un perfil de "comportamiento normal" de los recursos del 

(21)

aparten de este perfil en cantidades estadísticamente significativas, a las  cuales se llaman "Intentos de Intrusión". 

2 Detección de mal uso. El concepto principal detrás de los esquemas de  detección de mal uso es que hay manera de representar un ataque en  forma de un patrón. 

Dentro de los mecanismos utilizados exitosamente para la detección de  intrusos está el análisis de los rastros dejados por los usuarios. La Auditoria de  Rastros permite el análisis de los registros de las acciones de los usuarios. 

Incluso, este mecanismo puede ser útil para determinar la culpabilidad o inocencia  de un usuario sospechoso, y en otros casos puede ser el único medio para 

determinar cuando un usuario está abusando de sus privilegios de acceso [2]. La  mayoría de los sistemas computacionales cuentan con mecanismos para 

recolectar información de las acciones tomadas por los usuarios, pero éstos fueron  diseńados para recolectar información del desempeńo de los sistemas o para  depuración de errores. Dentro de los principales inconvenientes tenemos: 

• Generalmente consisten de una cantidad muy voluminosa y muy detallada de  información, y frecuentemente es difícil de interpretar para un ser humano. 

• Dentro de la información encontrada, no se encuentran los indicios de los  accesos de usuarios enmascarados. 

•  S e omite información que puede ser relevante para la oportuna identificación  de un intruso. 

Un SDI es una herramienta automatizada que ayuda al encargado de la  seguridad o al administrador del sistema. Reduce la cantidad de información que  debe ser procesada. Existen implementaciones de SDI para detectar intrusos en  tiempo real, que permite tomar acciones conforme van aconteciendo los hechos. 

El análisis que un SDI lleva a cabo sobre la información puede ser de los  siguientes tipos: 

• Análisis profundo y a conciencia, fuera de línea. 

• Evaluación de los datos auditables en tiempo real, para permitir una respuesta  inmediata. 

• Análisis subsecuente de los datos auditables para determinación de la  dimensión de algún dańo. 

El SDI puede detectar a los usuarios que están enmascarados y, en algunas  situaciones, es posible detectar usuarios que abusan de sus privilegios 

(22)

11

En caso que un usuario opere clandestinamente e intente evadir el monitoreo  ya  s e a evadiendo los mecanismos de la auditoría u operando a un nivel menor  que la auditoría puede ser evitado analizando las funciones que administran la  auditoría, o bien auditando a bajo nivel los servicios del sistema o llamadas a nivel  de kernel. Anderson sugiere el monitoreo de indicadores del sistema como el  C P U , actividad de la memoria, en discos duros y compararlos contra perfiles de  actividad normal del sistema. 

2.6 Trampas. 

Cheswick describe un experimento realizado cuando un intento de intrusión fue  detectado en un sistema [8], Desde el momento del descubrimiento se realizó un  monitoreo de la actividad del intruso y se le construyó una trampa especial, de tal  manera que éste tuvo éxito al penetrar la seguridad de un sistema. El experimento  es arriesgado, y se obtuvieron resultados interesantes: 

• Un penetrador experto cuenta con una lista de vulnerabilidades y fallas en sistemas y programas, las cuales intentará explotar sistemáticamente. • Si el intruso consigue penetrar un sistema, el riesgo de que eventualmente

consiga acceso con privilegios de administrador el alto.

(23)

3 Metodología de investigación. 

El objetivo del presente trabajo es primordialmente reforzar la seguridad de un  sistema en contra de penetradores internos. El sistema deberá contar con un  algún tipo de mecanismo ejecutor de comandos de usuario. Este reforzamiento en  la seguridad se conseguirá mediante un proceso de autorización de los comandos  del usuario, permitiendo restringir las acciones que puede realizar un usuario  dentro de éste ambiente de una manera específica y con un nivel de resolución  mayor al proporcionado de manera estándar por el sistema que se pretende  proteger. 

Las actividades que se realizaron para cumplir el objetivo del presente trabajo  de investigación son los siguientes. 

1 Selección de los elementos técnicos. 

a. Selección del software para Autentificación y Autorización de comandos  apropiado para la solución del problema. Deberá ser un protocolo ligero  y flexible. Para fines de este trabajo no se requiere compatibilidad con  muchos equipos, no se contempla interacción con diversos dispositivos. 

b. Selección de un ambiente operativo en donde un usuario pueda intentar  obtener información no autorizada o bien que presente un riesgo para la  seguridad de un sistema. Este ambiente deberá contener algún tipo de  ejecutor de comandos por parte del usuario, de tal manera que las  instrucciones emitidas por el usuario deberán pasar por el proceso de  autorización. 

c. Selección de las herramientas de desarrollo de software. Definición del  lenguaje de programación, seleccionado por su relevancia. 

2 Configuración y puesta en marcha de un servidor para Autentificación y  Autorización de comandos. 

a. Selección de un equipo de trabajo, preferentemente un sistema  operativo apto para prestar servicios de Internet como Linux, Unix o  Windows 2003 Server. Realizar todos los pasos y ajustes técnicos  necesarios para que el software de Autentificación y Autorización quede  funcionando óptimamente en el sistema. 

b. Configuración del software de Autentificación y Autorización para aplicar  las restricciones que implican riesgos en el escenario propuesto. 

3 Desarrollar una biblioteca de funciones para interactuar con el software de  Autentificación y Autorización. 

(24)

13

b. Desarrollo de la biblioteca de funciones para Autentificación y  Autorización remota. 

4 Adaptación del componente necesario para el escenario descrito en el punto 1  para utilizar la biblioteca de funciones de Autentificación y Autorización. 

(25)

4 Solución propuesta. 

C o m o se puso de manifiesto en los capítulos anteriores, existe un riesgo  significativamente alto de que la seguridad en los servidores  s e a quebrantada por  penetradores internos y externos, sin que los administradores de dichos servidores  se enteren de ello, ya que: 

• Un intruso puede conseguir  a c c e s o5

 a un sistema de una manera relativamente  fácil. 

• Con las herramientas e información básica que proporcionan los sistemas  (bitácoras) puede tomarnos tiempo detectar intentos de intrusión o accesos no  autorizados exitosos. 

• Un intruso con suficiente interés en nuestra información puede invertir una gran  cantidad de tiempo y recursos para conseguir lo que  s e propone. 

• No  e s posible ni recomendable eliminar las facilidades de un sistema que son  potencialmente peligrosas, como lo son mecanismos de administración de  acceso, de configuración de red, etc., para intentar prevenir una modificación  no autorizada en la configuración de seguridad del sistema. 

• No existe un sistema perfecto o 100% seguro. 

La solución propuesta contempla el desarrollo de un software prototipo que  implementará un mecanismo de autentificación y autorización de comandos de  usuario. Este software será un mecanismo de defensa proactivo, capaz de 

restringir la actividad de un usuario en función de las instrucciones o acciones que  se desee tomar, y con la capacidad adicional de proporcionar información 

relevante para un sistema de Detección de Intrusiones. 

El principio básico para el funcionamiento del sistema de Autorización de  Comandos consiste en la autorización explícita de los comandos y llamadas al  sistema del usuario, incluido en caso de ser necesario a el (los) usuario(s)  administradores, de una manera transparente y hasta donde sea posible  imperceptible para el intruso potencial. 

La primera línea de defensa del sistema de Autorización de Comandos (SAC)  será detener al intruso, incluso en situaciones en donde se ha conseguido acceso  privilegiado al sistema. Los pasos en el proceso de defensa se describen a 

continuación. 

1 El Mecanismo Ejecutor de Comandos (MEC) de un sistema determinado  obtiene el comando o instrucción que el usuario desea realizar. Esta  instrucción típicamente consiste de un comando, acompańado de 

argumentos. Un ejemplo podría ser la instrucción  S Q L  " S E L E C T *  F R O M 

5

(26)

15

tabla", en donde el comando es  " S E L E C T " y los argumentos son "*",  " F R O M " ,  y "tabla". 

2 Antes de proceder con la instrucción, el  M E C realiza una consulta a un  servidor de autorización (SA). Al servidor de autorización se le proporciona  información relevante al usuario que está solicitando la ejecución de una  instrucción, así como la instrucción que se intenta realizar. 

3 El servidor de autorización determina si el usuario proporcionado tiene  permitido ejecutar la instrucción deseada, ya sea por: 

a. Negación o autorización explícita de un comando solicitado. 

b. Negación o autorización de un argumento específico o generalizado por  expresiones regulares. 

c. Negación o autorización explícitamente de un usuario determinado. 

d. Combinaciones de los puntos anteriores. 

El servidor de autorización contesta la solicitud del  M E C ya sea de  manera positiva o negativa. El evento cualesquiera que sea queda  registrado en una bitácora. 

4 En función de la respuesta del servidor de autorización, el  M E C realiza o no  la instrucción solicitada por el usuario. El  M E C opcionalmente tiene la opción  de registrar a su vez el suceso ya sea de autorización o de negación. 

La solución propuesta consiste de dos partes. 

• Un servidor de Autorización, que será responsable de negar o autorizar las  instrucciones de los usuarios pasadas por el  M E C , cuya configuración será  flexible. 

• Un sistema de Solicitud de Autorización (SSA), que se incorporará a un  sistema que se desea tenga restricciones para los usuarios, y que se 

encargará de solicitar las autorizaciones de los comandos proporcionados por  el  M E C al Servidor de Autorizaciones. 

4.1 El servidor de autorización. 

Para la función del servidor de autorización se seleccionó al servidor  tac_plus.F4.0.11 de Cisco Systems. El software implementa el protocolo 

T A C A C S + , que constituye la parte principal de un mecanismo de Autentificación,  Autorización y Registro de Eventos (AAA, que son las siglas en inglés de 

"Authentication", "Authorízation" y "Accounting') utilizado ampliamente en routers y  Network  A c c e s s Servers de esta compańía y de otras. Además de cumplir con los  requisitos funcionales, se cuenta con las siguientes ventajas: 

(27)

• El protocolo de autorización es de fácil implementación.

• Se cuenta con la especificación técnica del protocolo, disponible directamente con el fabricante, Cisco Systems.

• Es de configuración flexible. Se pueden definir usuarios y grupos de usuarios. Es posible utilizar expresiones regulares en la configuración de la autorización. • El software se de dominio público. Se obtiene gratuitamente en forma de

código fuente directamente desde el fabricante.

La configuración de la autorización en servidor T A C A C S + requiere la definición de usuarios y/o grupos de usuarios, para seguidamente configurar la autorización en sí en estas entidades. La configuración del servidor se encuentra en un

archivo6 de texto plano generalmente llamado tac_plus.conf.

4.1.1 Declaración de usuarios y grupos de usuarios. 

La configuración de la autorización se realiza directamente sobre los usuarios o sobre la declaración de un grupo de usuarios. Un grupo puede pertenecer a otro grupo (solamente uno), ese grupo puede pertenecer a otro grupo y así

sucesivamente. Un usuario a su vez puede pertenecer a un grupo. El formato para declaración de usuarios y grupos es como se indica a continuación.

Figura 2. Declaración de usuarios y grupos de usuarios.

g r o u p = <nombre d e l g r u p o > {

# E s t e e s u n c o m e n t a r i o }

g r o u p = < o t r o g r u p o > •;

raember = <nombre d e l g r u p o >

}

u s e r = <nombre de u s u a r i o {

member = < o t r o g r u p o > }

En donde:

• <nombre del grupo> y <otro grupo> son cadenas alfanuméricas, que no contienen espacios y no comienzan con un dígito.

• <nombre de usuario> es una cadena alfanumérica, que no contiene espacios y no comienza con un dígito.

En el formato de configuración se indica la manera en cómo se declara la inclusión en otros grupos tanto de un grupo como de un usuario. Para fines de la solución propuesta, para los usuarios que no se encuentren explícitamente

6

(28)

17

declarados en la configuración serán siempre negadas por omisión cualquier  solicitud de autorización proveniente del sistema de solicitud de autorización. 

4.1.2 Declaración de la autorización de comandos. 

Seguida a la declaración de usuarios y su organización en grupos, corresponde  la configuración de la autorización de comandos. Como hemos mencionado 

anteriormente, los comandos que se autorizarán son recolectados por el  M E C , que  está en contacto interactuando con el usuario. Cuando se solicita autorización, es  necesario que el sistema de solicitud de autorización envíe el comando completo,  eliminando cualquier tipo de carácter comodín7

 que sea permitido en el sistema  que se está protegiendo. 

La autorización de comandos se configura con una serie de expresiones  regulares, que sean aceptables para egrep, para representar a los argumentos de  un comando, y adicionalmente una acción que será tomada, que puede ser deny  (negar) o permit (permitir). Los comandos que no estén explícitamente 

autorizados, por omisión serán negados. 

El siguiente ejemplo permite al usuario "antonio" la ejecución de: 

t e l n e t 6 3 . 1 7 0 . < c u a l q u i e r número>.l t e l n e t 6 3 . < c u a l q u i e r n u m e r o > . 2 5 . 2 4 9

d e l e t e * . t x t

y cualquier otro comando será negado por omisión: 

u s e r = a n t o n i o { c m d = t e l n e t {

p e r m i t 6 3 \. 1 7 0 \ . [ 0 - 9 ] + \ . 1

p e r m i t 6 3 . [ 0 - 9 ] + \ . 2 5 \ . 2 4 9

}

c m d = d e l e t e { p e r m i t * . t x t

} }

El comando y los argumentos proporcionados por el  M E C son cotejados contra  la configuración del usuario en cuestión. Si un comando no se encuentra definido,  se niega por omisión. 

7

(29)

La configuración puede utilizarse de una manera menos restrictiva. En este  ejemplo, se prohibe la ejecución del comando r m d i r C: \WINDOWS para el  usuario pedro: 

u s e r = p e d r o {

d e f a u l t s e r v i c e = p e r m i t cmd = r m d i r {

d e n y C:\\WINDOWS p e r m i t .*

}

El elemento nuevo es el estatuto default service = permit. El estatuto indica que  los comandos no declarados explícitamente serán autorizados por omisión. Así  mismo, es necesario agregar un permit .* (permitir cualquier argumento) al final de  la declaración del comando permit. De otra manera, a pesar de la declaración de 

d e f a u l t s e r v i c e = p e r m i t , dentro de la declaración del comando r m d i r la 

acción por omisión sigue siendo negar la autorización. 

El servidor  T A C A C S + espera por la red peticiones en forma de tupias 

atributo=valor. Por ejemplo, una solicitud del sistema de solicitud de autorización  puede ser de la forma que sigue: 

u s e r = a n t o n i o c o m m a n d = S E L E C T t o t a l a r g s = 2 a r g = p a s s w o r d

a r g = FROM u s u a r i o s

a r g = WHERE u s u a r i o = p e d r o

Este conjunto de tupias viajan por la red encapsulada en un paquete del  protocolo  T A C A C S + . 

4.2 El sistema de solicitud de autorización. 

El sistema de solicitud de autorización es una parte crítica de la 

ˇmplementación. El sistema de solicitud de autorización se encuentra en contacto  directo con el usuario, en el sistema que se desea proteger. 

El sistema de solicitud de autorización implementa la parte del cliente en la  interacción mediante el protocolo  T A C A C S + . El modelo  T A C A C S + ofrece la  funcionalidad de autentificación, que para fines de la solución propuesta no 

(30)

19

El protocolo  T A C A C S + incluye de manera separada funciones de 

autentificación, autorización y registro de eventos. Es extensible, permite realizar  adaptaciones especiales y permite agregar nuevas características. Utiliza  T C P  como medio de transporte, basados en que es un protocolo confiable. El protocolo  permite al cliente especificar control de acceso con un nivel de granularidad muy  fino [12]. 

La separación de las 3 funciones es fundamental en el diseńo del protocolo  T A C A C S + . La especificación del protocolo no exige que las tres sean 

implementadas.  C a d a una por separado tiene un objetivo particular, aunque  utilizadas en combinación ofrece una herramienta poderosa [12], cosa que es  particularmente atractivo para la solución propuesta. 

El sistema de solicitud de autorización se implementará en forma de una API  en lenguaje Java. Java es un lenguaje atractivo para este estudio por las 

siguientes razones: 

• Es un lenguaje multiplataforma. El compilador de Java de una plataforma  específica compila el código fuente a código intermedio {"bytecode'). Este  código intermedio es independiente de la plataforma, y puede ser ejecutado  por el  J R E8

 específico de cualquier otra plataforma. Actualmente se encuentran  disponibles  J R E y  J D K9

 para las plataformas Solaris (Intel,  S P A R C ) , Linux  (Intel, IA64), Windows (Intel, IA64) como productos de Sun Microsystems. IBM  tiene disponibles versiones de Java para sus plataformas Power. 

• Cuenta con la funcionalidad de comunicación por red requerida para esta  implementación. 

•  E s un lenguaje orientado a objetos, tiene las características deseables para  poder realizar ingeniería de software de alta calidad. 

• Es un lenguaje muy utilizado en ambientes de empresariales, de alta  disponibilidad. Utilizado en aplicaciones de misión crítica. 

• Está disponible de manera gratuita por la red. 

La API implementada expondrá al usuario 3 funciones requeridas para el  funcionamiento de la solución. 

p u b l i c b o o l e a n i n i t ( )

• La función i n i t () inicializa la comunicación con el servidor de autorización. Es  necesario llamar a esta función antes de cualquier otra. Regresa f a i s e en caso  de no conseguir una conexión exitosa, t r u e de caso contrario. 

p u b l i c b o o l e a n s e n d C m d ( S t r i n g a r g v [ ] )

Java Run-time Environment

9

(31)

• La función s e n d c m d construye un paquete TACACS+ apto para ser transmitido

por la red, a partir del comando y sus argumentos especificados en el array

a r g v [ ] . La función envía el paquete T A C A C S + con servicio

A U T H O R I Z A T I O N R E Q U E S T y espera por una respuesta. El array a r g v n es similar

al que Se pasa a la función p u b l i c s t a t i c v o i d m a i n ( S t r i n g a r g v [ ] ) . La

función regresa t r u e si el servidor de autorización permite la ejecución del

comando y argumentos. De caso contrario regresa f a i s e .

p u b l i c v o i d cióse ()

• La función cióse () termina la comunicación con el servidor de autorización. No

toma argumentos, y no tiene un valor de retorno. Es importante llamar explícitamente a esta función, porque de otro caso se puede inundar al servidor de autorización con conexiones que no se están utilizando.

Un ejemplo muy general del uso de las funciones se ilustra a continuación.

Figura 3. Seudo código para establecer comunicación con el servidor de  autorización. 

1 t a c a c s C l i e n t . i n i t () ; 2 b o o l e a n d o n e = f a l s e ; 3 w h i l e ( d o n e == f a l s e ) {

4 S t r i n g c m d L i n e = i n . r e a d L i n e ( ) ; 5 i f ( c m d L i n e . e q u a l s ( " " ) ) {

6 d o n e = t r u e ; 7 } e l s e {

8 S t r i n g [ ] a r g v = c o n s t r u y e A r g s ( c m d L i n e ) ; 9 i f ( t a c a c s C l i e n t . s e n d C m d ( a r g v ) == t r u e ) {

10 e x e c u t e C o m m a n d ( a r g v ) ; 11 } e l s e {

12 S y s t e m . o u t . p r i n t l n ( " N o a u t o r i z a d o . " ) ; 13 }

14 } 15 }

(32)

21

El servidor de autorización podrá atender a varias solicitudes de diferentes  sistemas de solicitud de autorización de manera concurrente. 

4.3 Ventajas de la solución propuesta. 

• El sistema de solicitud de autorización es de perfil genérico. Esto significa que  puede ser adaptado a una diversidad de situaciones. El caso más fácil de  tomar sería incorporarlo a un shell de UNIX. 

• Las instrucciones que pueden ser ejecutadas en el sistema quedan 

restringidas, quedando restringidas incluso para el mismo superusuario. Por  ejemplo, si tenemos un sistema en donde no habrá usuarios (solamente  servicios de red), podría ser posible configurar el mecanismo para permitir las  tareas requeridas del superusuario al arrancar el equipo (inicializar hardware y  componentes, inicializar software, etc), y una vez completada la tarea se aplica  el mecanismo de seguridad. En caso de una intrusión con el superusuario, no  le será posible al intruso causar un dańo considerable. 

• Es posible evitar que se borren o eliminen los archivos con la bitácora del  sistema, incluso para el mismo súper usuario. Por ejemplo, el Sistema se  configuraría para evitar que sean borrado el archivo / v a r / i o g / w t m p .

•  E s posible evitar problemas mayores causados por errores del operador. Por  ejemplo, se puede configurar el Sistema para negar la ejecución del comando  UNIX m ­rf *, que ejecutado como el súper usuario y bajo las condiciones  apropiadas, sería catastrófico. 

• Facilita el rastreo de intrusos, al registrar los eventos de intento de utilizar  alguna vulnerabilidad conocida en los programas. 

• Es posible complementar otros mecanismos de seguridad existentes. Por  ejemplo, se puede complementar los permisos de acceso de un sistema de  archivos. 

• La configuración del servidor de autorización es muy flexible. Es posible cubrir  muchas posibilidades y combinaciones de comandos y argumentos. 

• La API puede extenderse, para ofrecer los servicios de autorización de 

(33)

5 Modelo de experimentación. 

La experimentación consistió en adaptar el sistema de solicitud de autorización  a un programa de uso común.  S e demostró que el sistema de autorización de  comandos ofrece una protección que no es posible encontrar en la versión normal  del software en cuestión. 

Para la experimentación se seleccionó el ambiente cliente­servidor de una  base de datos. Las bases de datos son componentes de software esenciales en la  actualidad, si es posible mejorar la seguridad en este escenario, resultará atractivo  para los administradores de sistemas. El sistema de solicitud de autorización (API)  se adaptó a un software para administración de bases de datos. El software se  llama "Datábase Java Consolé" [15], el cual permite ejecutar consultas 

predefinidas contra cualquier base de datos que cuente con un "driver"  J D B C .  Tales consultas predefinidas se guardan en un archivo de configuración, y esto  permite en algunas bases de datos ejecutar comandos de mantenimiento de una  manera sencilla, como regeneración de índices o de optimización de tablas. Se  realizó una modificación al software para permitir que el usuario proporcione una  consulta de manera interactiva, seleccionando la opción "99". El software está  implementado en Java, y es de dominio público. 

Dentro del software se adaptó una función para identificar los comandos  S Q L  proporcionados por el usuario, los cuales se autorizan contra el servidor de  autorización antes de ser pasados al servidor de Bases de Datos para su  ejecución. 

C o m o software de apoyo se utilizará el servidor de bases de datos PostgreSQL  versión 7.4.3. Este software no requirió ser modificado para la correcta ejecución  del modelo. 

El conjunto de instrucciones sobre las cuales se realizó la experimentación  provienen del lenguaje  S Q L .  S Q L es un lenguaje de consulta, modelado a partir  del álgebra relacional e implementado por los manejadores de bases de datos  relaciónales y que permite extraer, insertar y modificar la información que es 

almacenada. Existe actualmente un estándar definido por el Instituto Americano de  Estándares (ANSI, por sus siglas en inglés), llamado ANSI/ISO SQL99, el cual  lamentablemente no es implementado al 100% por los manejadores de bases de  datos comerciales o de fuente abierta. 

(34)

23

Tabla 1. Descripción de la Tabla Filiales. 

Nombre de la Columna  Tipo de Dato  Descripción 

i d j i l i a l  S E R I A L  Llave privada e identificador  único. 

nombre  V A R C H A R ( 3 2 )  Nombre de la filial. 

Tabla 2. Descripción de la Tabla Agentes. 

Nombre de la Columna  Tipo de Dato  Descripción 

id_agente  S E R I A L  Identificador único y llave 

primaria. 

i d j i l i a l  I N T E G E R  Llave foránea, relación con la  tabla de Filiales. 

numero  V A R C H A R ( 1 6 )  Número de agente. 

passwd  V A R C H A R ( 1 6 )  Password del agente. 

5.1 Experimento #1: Prevenir la visualización de las variables de operación  del servidor. 

Las variables de operación ("run time environment variables') proporcionan  información acerca de los recursos y configuración del servidor PostgreSQL. Tales  variables se activan en el archivo de configuración del sistema, que es leído y  procesado en el momento que software arranca. Algunas de éstas variables  pueden ser modificadas mediante el comando  S Q L SET. El comando que permite  ver las variables de operación del servidor es  S H O W . El formato de la instrucción  S H O W es: 

SHOW [ A L L ]

El objetivo se puede cumplir negando la ejecución del comando. La  configuración correspondiente en el servidor de autorización es la siguiente: 

u s e r = a n t o n i o v l {

d e f a u l t s e r v i c e = p e r m i t cmd = show {

d e n y .* }

[image:34.612.73.531.124.195.2] [image:34.612.68.531.231.358.2]
(35)

Figura 4. Ejecución de "show all". 

31 C:\WINDOWSVSys1em32kiiKl.<?*•• - lun _ C3 X

):sTenpNdbjcNsrc>run

):\Te»»p\db j c \ s r c >d:\sun\AppSeruer\jdk\bin\java con.nioto.dbjc.Main cora\nioto\dbj ¡Nsample.properties

?hoose a query: 1: Quit prograni

l: Seleccionar Todos los Agentes !: Uer e l password un agente

I: Modificar e l password de un agente >9: Specify custon query

ínter your cholee: 99 ?ustont Query:show a l l ktthorization F a i l e d

SQL Instruction ftuthorization F a i l e d . Ihoose a query:

i : Quit progran

L: Seleccionar Todos l o s Agentes í: Uer e l password un agente

t: Modificar e l password de un agente 19 i Specify custom query

ínter your cholee: «.

El programa tiene 3 consultas predefinidas, además que ser posible especificar  una consulta arbitraria si se selecciona la opción 99. En este caso, seguidamente  del mensaje "Custom Query" podemos observar el texto del comando que se  intentó ejecutar. El servidor de autorización negó la petición por estar 

explícitamente configurado para hacerlo. El registro en la bitácora de este evento  se muestra en la figura 5. 

Figura 5. Registro en la bitácora del comando "show all".

1 T h u Nov 11 0 2 : 2 8 : 2 5 2004 [ 1 7 2 5 ] : s e s s i o n r e q u e s t f r o m 1 7 2 . 1 7 . 1 . 1 9 8 s o c k = l

2 T h u Nov 11 0 2 : 2 8 : 2 5 2004 [ 1 8 4 1 ] : W a i t i n g f o r p a c k e t

3 T h u Nov 11 0 2 : 2 8 : 2 5 2004 [ 1 8 4 1 ] : H e a d e r R e a d OK, l e n = 12

4 Thu Nov 11 0 2 : 2 8 : 2 5 2004 [ 1 8 4 1 ] : v e r s i o n = 1 9 2 , t y p e = 2 , s e c _ n o = l , e n c = l , s e s = 1 1 2 8 1 6 5 8 34, d a t a l e n = 1 1 2 8 1 6 5 8 3 4 1 u

5 T h u Nov 11 02 28 25 2 0 0 4 [ 1 8 4 1 ] l e n = 83

6 Thu Nov 11 02 28 25 2 0 0 4 [ 1 8 4 1 ] R e a d AUTHOR s i z e = 8 3

7 Thu Nov 11 02 28 25 20 0 4 [1841] v a l i d a t i o n r e q u e s t f r o m 1 7 2 . 1 7 . 1 . 1 9 8 8 T h u Nov 11 02 28 25 2 0 0 4 [ 1 8 4 1 ] PACKET: key=<NULL>

9 Thu Nov 11 02 28 25 2004 [ 1 8 4 1 ] versión 192 ( O x c O ) , t y p e 2, s e q no 1, e n c r y p t i o n 1

10 T h u N o v 11 02 28 25 2 0 04 [ 1 8 4 1 ] s e s s i o n i d 3 3 9 6 4 1 9 1 3 9 ( 0 x c a 7 1 3 e 4 3 ) , D a t a l e n g t h 71 ( 0 x 4 7 )

11 T h u N o v 11 02 28 25 2 00 4 [ 1 8 4 1 ] End h e a d e r

12 T h u N o v 11 02 28 25 2004 [18 41] type=AUTHOR, p r i v l v l = 1 5 , a u t h e n = l 13 T h u Nov 11 02 28 : 25 2004 [ 1 8 4 1 ] • m e t h o d = t a c a c s +

[image:35.612.73.519.118.344.2] [image:35.612.73.515.513.727.2]
(36)

25

Figura 5. Registro en la bitácora del comando "show atí".

15 T h u Nov 11 02 : 28 : 25 2 0 0 4 [ 1 8 4 1 ] : a r g c n t = 3 16 T h u Nov 11 02 : 28 : 25 2 0 0 4 [ 1 8 4 1 ] : U s e r : 17 T h u Nov 11 02 : 28 : 25 2C04 [ 1 8 4 1 ] : a n t o n i o v l 18 T h u Nov 11 02 : 28 : 25 2 0 0 4 [ 1 8 4 1 ] : p o r t : 19 T h u Nov 11 02 : 28 : 25 2 00 4 [ 1 8 4 1 ] : consolé 2 0 T h u Nov 11 02 28 : 25 2004 [ 1 8 4 1 ] : rem a d d r : 21 T h u Nov 11 02 28 : 25 2C04 [ 1 8 4 1 ] : 1 7 2 7 1 7 . 1 . 1 9 8 2 2 T h u Nov 11 02 28 : 25 2 00 4 [ 1 8 4 1 ] : a r g [0] : s i z e = 1 3 23 T h u Nov 11 02 28 : 25 2C04 [ 1 8 4 1 ] : s e r v i c e = s h e l l 2 4 T h u Nov 11 02 28 : 25 2 C 0 4 [ 1 8 4 1 ] a r g [ 1 ] : s i ze=8 25 T h u Nov 11 02 28 : 25 2 0 0 4 [ 1 8 4 1 ] cmd=show

2 6 T h u Nov 11 02 28 : 25 2C04 [ 1 8 4 1 ] a r g [ 2 ] : s i z e = l 1 27 T h u Nov 11 02 28 : 25 2 0 0 4 [ 1 8 4 1 ] c m d - a r g = a l l 2 8 T h u Nov 11 02 28 : 25 2 0 0 4 [ 1 8 4 1 ] E n d p a c k e t

2 9 T h u Nov 11 02 28 25 2004 [ 1 8 4 1 ] S t a r t a u t h o r i z a t i o n r e q u e s t 30 T h u Nov 11 02 28 25 2 00 4 [ 1 8 4 1 ] u s e r ' a n t o n i o v l ' f o u n d

31 T h u Nov 11 02 28 25 2004 [ 1 8 4 1 ] l i n e 5 c o m p a r e show d e n y & ' a l l m a t c h

32 T h u Nov 11 02 28 25 2004 [1841] show a l l d e n i e d b y l i n e 5 33 Thu Nov 11 02 28 25 2 0 0 4 [ 1 8 4 1 ] W r i t i n g AUTHOR/FAIL s i z e = 1 8 3 4 T h u Nov 11 02 28 25 2 0 04 [ 1 8 4 1 ] PACKET: key=<NULL>

35 T h u Nov 11 02 28 25 2004 [ 1 8 4 1 ] versión 192 ( O x c O ) , t y p e 2, s e q no 2 e n c r y p t i o n 1

3 6 T h u Nov 11 02 : 28 25 200 4 [ 1 8 4 1 ] s e s s i o n i d 3 3 9 6 4 1 9 1 3 9 ( 0 x c a 7 1 3 e 4 3 ) , D a t a l e n g t h 6 (0x6)

37 T h u Nov 11 02 : 28 25 2004 [ 1 8 4 1 ] E n d h e a d e r

38 T h u Nov 11 02 : 28 25 2004 [ 1 8 4 1 ] type=AUTHOR/REPLY s t a t u s = 1 6 (AUTHOR/FAIL)

3 9 T h u Nov 11 02 : 28 25 2 0 0 4 [ 1 8 4 1 ] msg l e n = 0 , d a t a l e n = 0 a r g c n t = 0 4 0 T h u Nov 11 02 :28 25 2004 [ 1 8 4 1 ] msg:

41 T h u Nov 11 02 :28 25 2004 [1841] d a t a :

4 2 T h u Nov 11 02 : 28 25 2004 [ 1 8 4 1 ] E n d p a c k e t

4 3 T h u Nov 11 02 : 28 25 2004 [ 1 8 4 1 ] a u t h o r i z a t i o n q u e r y f o r ' a n t o n i o v l ' consolé f r o m 172 . 17 1 . 198 r e j e c t e d

Como podemos observar, la bitácora contiene la información importante para  un sistema de autoría. 

• Se tiene la dirección IP del cliente (renglón 1) • La llave de encripción (renglón 8)

• El usuario (renglón 17)

• El comando (renglones 24 al 27)

• La regla que impide la ejecución del comando (renglones 31 y 32) • El estatus final de la solicitud (renglón 43).

(37)

Es posible prevenir la visualización de ciertas variables de ambiente. Por  ejemplo, suponiendo que se desea que el usuario no pueda consultar la variable  server_version, implementamos los siguientes cambios en la configuración del  servidor de autorización. 

u s e r = a n t o n i o v l {

d e f a u l t s e r v i c e = p e r m i t cmd = show {

d e n y a l l

d e n y s e r v e r versión p e r m i t .*

La prevención de una sola variable se consigue con 3 instrucciones. El primer  d e n y a l l evita que la variable s e r v e r _ v e r s i o n sea visualizada en el listado  general. La segunda instrucción d e n y s e r v e r _ v e r s i o n explícitamente prohibe  que esta cadena forme parte de los argumentos de la instrucción show. La tercera  instrucción permite al resto de los parámetros. La ejecución de s h o w

[image:37.612.76.522.376.596.2]

s e r v e r _ v e r s i o n se muestra a continuación. 

Figura 6. Ejecución de show server_version. 

M C:\WIHDOWS\System32knul e«- mu _ • x

:\Tenp\dbjc\src>d:\suii\AppServer\jdk\bin\java com.nioto. Nsanple.propert ies

hoose a query: : Quit progran

: Seleccionar Todos los Agentes : Uer e l password un agente

: Hodif i c a r e l password de un agente 9: Specify custon query

nter your cholee: 99

uston Query:show «erver_uersion uthorization F a i l e d

QL Instruction Authorization F a i l e d . hoose a query:

: Quit program

: Seleccionar Todos los Agentes : Uer e l password un agente

: Hodif i c a r e l password de un agente 9: Specify custon query

nter your choice: 99

ustom Query:«how nax_connections

dbjc.Hain cor»\niotoSdbj

ax_connectlons » 1824 entei>> f o r next» or

En la figura 6 podemos observar que no se tuvo éxito con la consulta de la  variable s e r v e r _ v e r s i o n .  S e ilustra además la consulta de la variable 

m a x c o n n e c t i o n s , que muestra la capacidad de mostrar otras variables de 

ejecución. La bitácora generada por el intento de ejecución de este comando se  muestra en la figura 7. 

Figura 7. Ejecución de fallida del comando show max_connections. 

(38)

27

Figura 7. Ejecución de fallida del comando show max_connections. 

T h u N o v 11 03 : 0 9 : 01 2004 1 9 4 3 ] : W a i t i n g f o r p a c k e t

T h u N o v 11 0 3 : 09: 01 2004 1 9 4 3 ] : H e a d e r R e a d OK, l e n = 12

T h u Nov 11 0 3 : 0 9 : 01 2004 1943] v e r s i o n = 1 9 2 , t y p e = 2 , s e c n o = l , enc= 1 s e s = =3098509974, d a t a l e n = 3 l 9 8 5 0 9 9 7 4 1 u

T h u Nov 11 03 : 0 9 : 01 2004 1943] • l e n = 94

T h u Nov 11 0 3 : 09 : 01 2004 1943] R e a d AUTHOR s i z e = 9 4

Thu Nov 11 03 : 0 9 : 01 2004 1943] v a l i d a t i o n r e q u e s t f r o m 1 7 2 . 1 7 . 1 . 1 9 8 T h u Nov 11 0 3 : 09: 01 2004 1943] PACKET: key=<NULL>

T h u Nov 11 0 3 : 0 9 : 01 2004 1943] versión 192 ( O x c O ) , t y p e 2, s e q no 1 e n c r y p t i o n 1

T h u Nov 11 03 : 09: 01 2004 1943] s e s s i o n i d 2 5 2 5 1 4 7 0 6 4 ( 0 x 9 6 8 2 a f b 8 ) , l e n g t h 82 ( 0 x 5 2 )

T h u N o v 11 0 3 : 0 9 : 01 2004 1943] E n d h e a d e r

Thu Nov 11 03 : 09 01 2004 1943] type=AUTHOR, p r i v l v l = 15, authen=.l

T h u Nov 11 03 : 0 9 : 01 2004 [1943] m e t h o d = t a c a c s +

T h u Nov 11 03 : 09- 01 2004 [1943] s v c = l u s e r l e n = 9 p o r t l e n = 7 rem a d d r l e n = 1 2

Thu Nov 11 0 3 : 09 01 2004 [ 1 9 4 3 ] a r g c n t = 3 T h u Nov 11 03 : 09 01 2004 [1943] U s e r : T h u N o v 11 03 : 09 01 2004 [1943] a n t o n i o v l T h u Nov 11 0 3 : 09 01 2004 [1943] p o r t : T h u Nov 11 03 : 09 01 2004 [1943] consolé T h u Nov 11 0 3 : 09 01 2004 [1943] rem a d d r : T h u Nov 11 0 3 : 09 01 2004 [1943] 1 7 2 . 1 7 . 1 . 1 9 8 Thu N o v 11 03 09 01 2004 [1943] a r g [ 0 ] : s i z e = 1 3 T h u N o v 11 03 09 01 2004 [1943] s e r v i c e = s h e l l T h u N o v 11 03 09 01 2004 [1943] a r g [ 1 ] : s i z e = 8

T h u Nov 11 03 09 01 2004 [1943] cmd=show

Thu Nov 11 03 09 01 2004 [1943] a r g [ 2 ] : s i ze=22

T h u Nov 11 03 09 01 2004 [1943] c m d - a r g = s e r v e r versión T h u N o v 11 03 09 01 2004 [1943] E n d p a c k e t

T h u N o v 11 03 09 01 2004 [1943] . S t a r t a u t h o r i z a t i o n r e q u e s t T h u Nov 11 03 09 01 2004 [19 4 3] u s e r ' a n t o n i o v l ' f o u n d

T h u Nov 11 03 09 01 2004 [1943] l i n e 5 c o m p a r e show d e n y ' a l l ' & ' s e r v e r versión' no m a t c h

T h u N o v 11 03 09 01 2004 [1943] : l i n e 6 c o m p a r e show d e n y ' s e r v e r v e r s i o n ' & s e r v e r versión' m a t c h

T h u Nov 11 03 09 01 2004 [1943] : show s e r v e r versión d e n i e d b y l i n e 6 T h u Nov 11 03 09 01 2004 [1943] : W r i t i n g AUTHOR/FAIL s i z e = 1 8

Thu Nov 11 03 09 01 2004 [1943] : PACKET: key=<NULL>

T h u Nov 11 03 09 01 2004 [1943] : versión 192 ( O x c O ) , t y p e 2, s e q no 2 e n c r y p t i o n 1

T h u Nov 11 03 09 01 2004 [1943] : s e s s i o n i d 2 5 2 5 1 4 7 0 6 4 ( 0 x 9 6 8 2 a f b 8 ) , l e n g t h 5 ( 0 x 6 )

T h u Nov 11 03 09 01 2004 [1943] : E n d h e a d e r

T h u Nov 11 03 09 : 01 2004 [1943] : type=AUTHOR/REPLY s t a t u s = 1 6 (AUTHOR/FAIL)

T h u Nov 11 03 09 : 01 2004 [1943] : msg l e n = 0 , d a t a l e n = 0 a r g c n t = 0 T h u Nov 11 03 09 : 01 2004 [1943] : msg:

T h u N o v 11 03 09 : 01 2004 [1943] : d a t a : T h u Nov 11 03 09 : 01 2004 [1943] : E n d p a c k e t

T h u Nov 11 03 09 : 01 2004 [1943] : a u t h o r i z a t i o n q u e r y f o r ' a n t o n i o v l D a t a

[image:38.612.72.507.118.714.2]

Figure

Tabla de  contenido 
tabla de  Filiales. 
Figura 4.  Ejecución  de  "show all". 
Figura 6. Ejecución de show server_version. 
+7

Referencias

Documento similar

Como medida de precaución, puesto que talidomida se encuentra en el semen, todos los pacientes varones deben usar preservativos durante el tratamiento, durante la interrupción

Y tendiendo ellos la vista vieron cuanto en el mundo había y dieron las gracias al Criador diciendo: Repetidas gracias os damos porque nos habéis criado hombres, nos

The 'On-boarding of users to Substance, Product, Organisation and Referentials (SPOR) data services' document must be considered the reference guidance, as this document includes the

In medicinal products containing more than one manufactured item (e.g., contraceptive having different strengths and fixed dose combination as part of the same medicinal

Products Management Services (PMS) - Implementation of International Organization for Standardization (ISO) standards for the identification of medicinal products (IDMP) in

Products Management Services (PMS) - Implementation of International Organization for Standardization (ISO) standards for the identification of medicinal products (IDMP) in

This section provides guidance with examples on encoding medicinal product packaging information, together with the relationship between Pack Size, Package Item (container)

Package Item (Container) Type : Vial (100000073563) Quantity Operator: equal to (100000000049) Package Item (Container) Quantity : 1 Material : Glass type I (200000003204)