Seguridad Informtica - PowerPoint PPT Presentation

1 / 45
About This Presentation
Title:

Seguridad Informtica

Description:

Sin confianza (untrusted): Cargadas de la web, applets. Ten an diferentes ... Dados los problemas de seguridad actuales, es muy til limitar o controlar de ... – PowerPoint PPT presentation

Number of Views:163
Avg rating:3.0/5.0
Slides: 46
Provided by: mic4152
Category:

less

Transcript and Presenter's Notes

Title: Seguridad Informtica


1
Seguridad Informática
  • Control de Acceso
  • Java SE Security
  • Micael.Gallego_at_urjc.es

2
Índice Control Acceso
  • Introducción
  • Elementos del Control de Acceso
  • Ficheros de Políticas
  • Formato
  • Policy Tool
  • Aplicación de las políticas
  • Permisos

3
Introducción
  • Inicialmente en Java 1.0
  • Sólo había dos tipos de aplicaciones
  • De confianza (trusted) Cargadas de disco
  • Sin confianza (untrusted) Cargadas de la web,
    applets
  • Tenían diferentes permisos de ejecución
  • De confianza Control total sobre la máquina
  • Sin confianza Caja de Arena (Sandbox) con
    permisosn muy limitados
  • No acceso a disco
  • Sólo acceso al servidor del que se descargan

4
Introducción
  • Desde Java 1.1 hasta ahora (Java SE 6)
  • Cada aplicación puede tener unos permisos
    específicos y controlados de forma muy precisa
  • Esos permisos se configuran dependiendo de
  • La procedencia del código Disco, red
  • Del usuario que está ejecutando el código
  • De la entidad que firma (sign) el programa
  • Se pueden tener aplicaciones locales con permisos
    limitados o Applets con permisos totales (de una
    Intranet)

5
Introducción
  • Dados los problemas de seguridad actuales, es muy
    útil limitar o controlar de forma precisa lo que
    puede hacer una aplicación que se ejecute en la
    máquina
  • Java dispone de un sistema de control que permite
    especificar permisos a niveles muy detallados y
    permite configurar a qué aplicaciones se les
    aplica
  • Tanto el usuario como el administrador pueden
    decidir estas políticas al ejecutar cada
    aplicación o pueden establecer una configuración
    por defecto

6
Índice Control Acceso
  • Introducción
  • Elementos del Control de Acceso
  • Ficheros de Políticas
  • Formato
  • Policy Tool
  • Aplicación de las políticas
  • Permisos

7
Elementos del Control de Acceso
  • El sistema de Control de Acceso de Java está
    formado por 5 elementos
  • Ficheros de Políticas de Acceso
  • Permisos
  • Origen del código
  • Almacenes de claves
  • Dominios de protección

8
Elementos del Control de Acceso
  • Ficheros de Política de Acceso (Policy Files)
  • Configura los permisos que tiene cada parte del
    código de una aplicación Java
  • Son ficheros de texto plano
  • Existen varios ficheros de política de acceso
  • Un fichero global para todo el sistema
  • Un fichero por usuario
  • Opcionalmente se puede usar un fichero por
    aplicación
  • En el JDK existe la herramienta interactiva
    policytool que permite crear ficheros de políticas

9
Elementos del Control de Acceso
  • Permisos (Permissions)
  • Una acción que el código puede realizar
  • Por ejemplo
  • El fichero /home/pepe/receta.txt se puede leer
    pero no modificar
  • Se puede leer del portapapeles
  • Se puede abrir una conexión a www.google.com
  • Se pueden leer las propiedades del sistema
    (directorio temporal, directorio home)

10
Elementos del Control de Acceso
  • Origen del código (Code sources)
  • Formado por
  • Localización desde la que el código se ha cargado
    (servidor web, disco), identificada por una URL
    (codeBase)
  • La información del firmante del código, si es que
    está firmado digitalmente (signedBy)
  • Se utiliza para
  • Aplicar los permisos basándose en el la
    localización, el firmante o ambos a la vez.
  • También se pueden aplicar los permisos ignorando
    el origen del código

11
Elementos del Control de Acceso
  • Almacenes de claves (Keystores)
  • Un código se firma para que el usuario de ese
    código conozca que el código es el original y no
    ha sido alterado. Es de quien dice ser.
  • El control de acceso puede permitir más permisos
    a código de ciertas organizaciones de confianza
    (trusted)
  • La firma del código depende de certificados de
    clave pública / clave privada
  • Los certificados se guardan en almacenes de
    claves (normalmente ficheros en disco)
  • Los desarrolladores usan certificados para firmar
    código y los usuarios para comprobar la identidad
    del desarrollador u organización

12
Elementos del Control de Acceso
  • Dominios de protección (Protection domains)
  • Un dominio de protección es la asociación de un
    conjunto de permisos a un origen de código
  • Por ejemplo
  • Código descargado de www.gsyc.es puede imprimir
  • Código firmado por la URJC tiene todos los
    permisos
  • Los ficheros de política de acceso son un
    conjunto de dominios de protección

13
Índice Control Acceso
  • Introducción
  • Elementos del Control de Acceso
  • Ficheros de Políticas
  • Formato
  • Policy Tool
  • Aplicación de las políticas
  • Permisos

14
Ficheros de Políticas
  • Los ficheros de políticas de acceso (Policy
    files) son ficheros que configuran y especifican
    lo que un código puede hacer
  • Cada fichero tiene un conjunto de permisos que se
    aplican a un código dependiendo de su origen y su
    firma

15
Índice Control Acceso
  • Introducción
  • Elementos del Control de Acceso
  • Ficheros de Políticas
  • Formato
  • Policy Tool
  • Aplicación de las políticas
  • Permisos

16
Ficheros de PolíticasFormato
keystore "user.home/.keystore" grant
codeBase "http//www.oreilly.com/"
permission java.io.FilePermission "/tmp",
"read" permission java.lang.RuntimePermission
"queuePrintJob" grant signedBy "sdo",
codeBase "http//www.sun.com/" permission
java.security.AllPermission grant signedBy
"jra" permission java.net.SocketPermission
"1024-", "accept, connect, listen,
resolve" grant permission
java.util.PropertyPermission
"java.version", "read"
17
Ficheros de PolíticasFormato
keystore "user.home/.keystore" grant
codeBase "http//www.oreilly.com/"
permission java.io.FilePermission "/tmp",
"read" permission java.lang.RuntimePermission
"queuePrintJob" grant signedBy "sdo",
codeBase "http//www.sun.com/" permission
java.security.AllPermission grant signedBy
"jra" permission java.net.SocketPermission
"1024-", "accept, connect, listen,
resolve" grant permission
java.util.PropertyPermission
"java.version", "read"
Ruta del almacén de claves. Aquí deben estar los
certificados con los que comprobar la firma del
código
18
Ficheros de PolíticasFormato
keystore "user.home/.keystore" grant
codeBase "http//www.oreilly.com/"
permission java.io.FilePermission "/tmp",
"read" permission java.lang.RuntimePermission
"queuePrintJob" grant signedBy "sdo",
codeBase "http//www.sun.com/" permission
java.security.AllPermission grant signedBy
"jra" permission java.net.SocketPermission
"1024-", "accept, connect, listen,
resolve" grant permission
java.util.PropertyPermission
"java.version", "read"
Dominio de protección El código descargado de
www.oreilly.com tiene permiso para leer de la
carpeta /tmp y realizar impresiones
19
Ficheros de PolíticasFormato
keystore "user.home/.keystore" grant
codeBase "http//www.oreilly.com/"
permission java.io.FilePermission "/tmp",
"read" permission java.lang.RuntimePermission
"queuePrintJob" grant signedBy "sdo",
codeBase "http//www.sun.com/" permission
java.security.AllPermission grant signedBy
"jra" permission java.net.SocketPermission
"1024-", "accept, connect, listen,
resolve" grant permission
java.util.PropertyPermission
"java.version", "read"
Dominio de protección El código descargado de
www.sun.com y firmado por sdo tiene todos los
permisos
20
Ficheros de PolíticasFormato
keystore "user.home/.keystore" grant
codeBase "http//www.oreilly.com/"
permission java.io.FilePermission "/tmp",
"read" permission java.lang.RuntimePermission
"queuePrintJob" grant signedBy "sdo",
codeBase "http//www.sun.com/" permission
java.security.AllPermission grant signedBy
"jra" permission java.net.SocketPermission
"1024-", "accept, connect, listen,
resolve" grant permission
java.util.PropertyPermission
"java.version", "read"
Dominio de protección El código firmado por
jra tiene todos los permisos sobre las
conexiones a los puertos superiores o iguales a
1024 independientemente del host
21
Ficheros de PolíticasFormato
Dominio de protección Todo el código
(independientemente de su procedencia y firma)
puede leer la propiedad del sistema que indica la
versión de Java
keystore "user.home/.keystore" grant
codeBase "http//www.oreilly.com/"
permission java.io.FilePermission "/tmp",
"read" permission java.lang.RuntimePermission
"queuePrintJob" grant signedBy "sdo",
codeBase "http//www.sun.com/" permission
java.security.AllPermission grant signedBy
"jra" permission java.net.SocketPermission
"1024-", "accept, connect, listen,
resolve" grant permission
java.util.PropertyPermission
"java.version", "read"
22
Índice Control Acceso
  • Introducción
  • Elementos del Control de Acceso
  • Ficheros de Políticas
  • Formato
  • Policy Tool
  • Aplicación de las políticas
  • Permisos

23
Ficheros de PolíticasPolicy Tool
  • Permite editar los ficheros de políticas
  • Ruta java.home/bin/policytool.exe
  • Ventana Inicial

24
Ficheros de PolíticasPolicy Tool
  • Policy Tool. Almacén de claves

25
Ficheros de PolíticasPolicy Tool
  • Policy Tool. Dominio de Protección

26
Índice Control Acceso
  • Introducción
  • Elementos del Control de Acceso
  • Ficheros de Políticas
  • Formato
  • Policy Tool
  • Aplicación de las políticas
  • Permisos

27
Ficheros de PolíticasAplicación de las políticas
  • La política de acceso por defecto del sistema
    viene configurada en los ficheros
  • java.home/lib/security/java.policy
  • Configura los permisos de cualquier aplicación
    Java
  • user.home/.java.policy
  • Configura los permisos de las aplicaciones que
    ejecuta ese usuario
  • No se crea por defecto pero si está presente, se
    utiliza
  • Básicamente sólo se permiten las conexiones de
    red y no se permite el acceso a disco

28
Ficheros de PolíticasAplicación de las políticas
  • Una aplicación puede ejecutarse
  • Sin ninguna política de acceso
  • Con la política de acceso por defecto
  • Con una política de acceso específica para la
    aplicación
  • Cuando una aplicación se ejecuta con una política
    de acceso se dice que está en una caja de arena
    (sandbox)
  • Cuando desde el código se ejecute una acción para
    la que no hay permisos, se elevará una excepción
    java.lang.SecurityException y no se ejecutará la
    acción

29
Ficheros de PolíticasAplicación de las políticas
  • En Java existen diferentes tipos de aplicaciones
  • Aplicaciones locales
  • Están almacenadas en el disco del usuario
  • Se ejecutan desde línea de comandos o con un
    acceso directo
  • Applets
  • Se ejecutan al vistar una web
  • Actualmente se comienzar a usar de nuevo con
    JavaFX
  • Java Web Start
  • Aplicaciones que se comportan como si fuesen una
    aplicación local pero que se descargan e instalan
    automáticamente desde la web

30
Ficheros de PolíticasAplicación de las políticas
  • Ejecución sin política de acceso (fuera del
    sandbox)
  • Aplicaciones locales
  • Por defecto
  • Applets
  • Si lo requieren y si el usuario acepta
    expresamente conceder todos los permisos mediante
    un cuadro de diálogo
  • Java Web Start
  • Si lo requieren y si el usuario acepta
    expresamente conceder todos los permisos mediante
    un cuadro de diálogo

31
Ficheros de PolíticasAplicación de las políticas
  • Ejecución con la política por defecto (sandbox)
  • Aplicaciones locales
  • Applets
  • por defecto
  • Java Web Start
  • por defecto

C\gtjava Djava.security.manager ltargsgt
32
Ficheros de PolíticasAplicación de las políticas
  • Ejecución con una política específica (sandbox)
  • Aplicaciones locales
  • El fichero de política se aplica a la vez que la
    política por defecto
  • Sólo se aplica el fichero de política especificado

C\gtjava Djava.security.manager
Djava.security.policyltpolicyFilegt ltargsgt
C\gtjava Djava.security.manager
Djava.security.policyltpolicyFilegt ltargsgt
33
Ficheros de PolíticasAplicación de las políticas
  • Ejecución con una política específica (sandbox)
  • Applets
  • Especificando dicha política en el fichero de
    descripción del applet (fichero JNLP)
  • Java Web Start
  • Especificando dicha política en el fichero de
    descripción de la aplicación JNLP

34
Ficheros de PolíticasAplicación de las políticas
  • Existen algunos permisos que se asignan al código
    aunque no estén configurados en ningún fichero de
    políticas
  • Código cargado de disco puede leer ficheros en el
    directorio donde está y sus subdirectorios
  • Código cargado vía web puede establecer
    conexiones con el servidor desde el que se ha
    descargado

35
Índice Control Acceso
  • Introducción
  • Elementos del Control de Acceso
  • Ficheros de Políticas
  • Formato
  • Policy Tool
  • Aplicación de las políticas
  • Permisos

36
Permisos
  • Se pueden configurar muchos tipos de permisos
  • Permisos de Ficheros
  • Permisos de Sockets
  • Permisos de Ejecución
  • Permisos del Interfaz de Usuario
  • Permisos de Red
  • Un listado detallado se puede ver en
    http//java.sun.com/javase/6/docs//technotes/guide
    s/security/spec/security-spec.doc3.html19802

37
Permisos
  • Permisos de Ficheros
  • Tipo java.io.FilePermission
  • Nombre
  • Especifica el fichero o directorio al que tiene
    acceso la aplicación
  • Se pueden usar propiedades java.home
    user.home
  • Se pueden usar ,-
  • Se puede poner ltltALL FILESgtgt
  • Acciones
  • read, write, delete, execute

38
Permisos
  • Permisos de Ficheros

java.policy
grant // Se pueden leer todos los ficheros
permission java.io.FilePermission "ltltALL
FILESgtgt", "read" // Se puede
acceder a todos los ficheros del home
permission java.io.FilePermission
"user.home/-",
"read,write,delete,execute" // No se puede
ejecutar en c\data permission
java.io.FilePermission C\\data",
"read,write,delete"
39
Permisos
  • Permisos de Sockets
  • Tipo java.net.SocketPermission
  • Nombre nombreHostpuerto
  • Se puede usar la IP o el nombre del host
  • Se pueden usar comodines
  • www.urjc.es
  • localhost80
  • .es4445
  • Acciones
  • accept, listen (puertos locales), connect, resolve

40
Permisos
  • Permisos de Sockets

java.policy
grant // Se tiene acceso total a los sockets
sobre 1024 permission java.net.SocketPermission
"1024-", "accept,listen,connect,r
esolve" // Permite las conexiones a sun.com
permission java.net.SocketPermission
".sun.com1-", "connect,resolve"

41
Permisos
  • Permisos de Ejecución
  • Tipo java.lang.RuntimePermission
  • Nombre
  • exitVM Permite al código forzar una salida
    directa de la aplicación
  • loadLibrary.ltnamegt Permite la carga de la
    librería nativa especificada
  • queuePrintJob Permite la impresión

42
Permisos
  • Permisos de Ejecución

java.policy
grant permission java.lang.RuntimePermission
"exitVM" permission java.lang.RuntimePermission
"loadLibrary.swt" permission
java.lang.RuntimePermission "queuePrintJob"
43
Permisos
  • Es posible especificar que se conceden todos los
    permisos

java.policy
grant // Todos los permisos permission
java.security.AllPermission
44
Ejercicio 1
  • Implementa un programa que liste el contenido de
    un directorio
  • Ejecuta el programa sin control de acceso y
    comprueba que se ejecuta correctamente
  • Ejecuta el programa con el control de acceso por
    defecto y comprueba que la operación no se permite

File dir new File("C\\") File files
dir.listFiles() if(files ! null) for(File
file files) System.out.println(file)

45
Ejercicio 2
  • Implementa un programa que muestre el contenido
    de una URL por pantalla
  • Ejecuta el programa con las políticas de un único
    fichero en el que no se tenga permiso para abrir
    la conexión (sin usar las políticas por defecto)
  • Comprueba el funcionamiento al dar permisos de
    conexión a www.google.es80

URL url new URL("http//www.google.es") URLConn
ection conn url.openConnection() BufferedReader
br new BufferedReader( new
InputStreamReader(conn.getInputStream())) String
line br.readLine() while(line ! null)
System.out.println(line) line
br.readLine()
Write a Comment
User Comments (0)
About PowerShow.com