mayo 2003 - PowerPoint PPT Presentation

1 / 59
About This Presentation
Title:

mayo 2003

Description:

mayo 2003 – PowerPoint PPT presentation

Number of Views:51
Avg rating:3.0/5.0
Slides: 60
Provided by: catherin87
Category:
Tags: mayo | waag

less

Transcript and Presenter's Notes

Title: mayo 2003


1
Forum de Desarrolladores Corporativos SEGURIDAD
EN .NETDesarrollando aplicaciones seguras con
.NET FrameworkCatherine Heller
Patrocinado por
2
Seguridad en .NETCatherine HellerSenior
ConsultantMicrosoft Developer Services
3
Ideas clave...
  • Seguridad debe plantearse desde el principio no
    como un añadido
  • Evitar implementaciones de seguridad caseras
  • Impersonar sólo cuando absolutamente necesario.
    No hace falta impersonar para que fluya identidad.

4
Agenda
  • Conceptos de seguridad
  • Desarrollo seguro
  • Autenticación y autorización
  • Comunicaciones seguras
  • Code Access Security (CAS)

5
Seguridad - Los pilares
  • Autenticación - Quién
  • Cliente autenticado gt Principal
  • Autorización Qué puede hacer
  • Restringir el acceso a recursos y/o operaciones
  • Comunicaciones seguras
  • Confidencialidad
  • Integridad
  • Auditoría
  • No-repudio

6
Arquitectura de seguridad
Autenticación Windows Forms, Passport, None
(Custom) Autorización Web Permissions, NTFS
Permissions, URL authz, File authz, Principal
permissions, .NET Roles
IIS Anonymous Basic Digest Integrated
Windows Certificate
Autenticación Windows, SQL Autorización Logins, Pe
rmissions, Roles
IIS/ASP.NET Servicios Web
IIS/ASP.NET Remoting
IIS/ASP.NET Aplicación Web
Clientes
SQL Server
Enterprise Services
Servidor de datos
Servidor Web
Autenticación RPC Autorización ES (COM)
Roles NTFS Permissions
RPC None Connect Call Packet Integrity Privacy
Comunicaciones seguras (SSL/IPSec)
7
Seguridad y Remoting
  • Remoting no tiene un modelo de seguridad propio
  • Hereda el de IIS y ASP.NET (cuando hospedado en
    IIS)
  • Remoting entre AppDomains en el mismo proceso
  • Fluye el contexto de seguridad
  • Remoting entre procesos/máquinas
  • No fluye el contexto de seguridad
  • La infraestructura es extensible y se puede
    añadir
  • .NET Remoting Security Solution, Part 1
    Microsoft.Samples.Security.SSPI Assembly
  • http//msdn.microsoft.com/library/en-us/dndotnet/h
    tml/remsspi.asp
  • .NET Remoting Security Solution, Part 2
    Microsoft.Samples.Runtime.Remoting.Security
    Assembly
  • http//msdn.microsoft.com/library/en-us/dndotnet/h
    tml/remsspi.asp

8
Restringiendo el acceso
  • Aplicación basada en Internet utilizando IIS

Acceso anónimo deshabilitado
Role Membership Demands
IIS
URL Authz
File Authz
Imperative Principal Permission Demands
Población de usuarios Internet
G
G
G
G
10,000 Usuarios
1,000 Usuarios
100 Usuarios
10 Usuarios
G
Gatekeeper
9
Guardabarreras y portones
  • El término guardabarreras (gatekeeper) se utiliza
    para identificar la tecnología responsable para
    un determinado portón (gate)
  • Un portón representa un punto de control de
    acceso, dentro de una aplicación

10
Identidad Windows (SO)
  • Principal entidad unívoca, cuya identidad ha
    sido validada
  • Representado por un nombre y un SID (Security
    Identifier)
  • Cuentas de usuario y máquinas
  • Credenciales lo que un Principal utiliza para
    demostrar su identidad
  • Qué tienes? smartcard, llave, certificado
  • Qué sabes? PIN, contraseña
  • Qué eres? información biométrica
  • Token representa un Principal
  • Todo proceso tiene un token
  • Un thread puede tener su propio token

11
Impersonación
Token primario
Pepe
Token de impersonación
Proceso.exe
12
Identidades en .NET
  • HttpContext.User
  • IPrincipal asociado a la petición HTTP
  • Identidad utilizada por ASP.NET para decisiones
    de autorización
  • Thread.CurrentPrincipal
  • IPrincipal asociado al thread lógico de .NET
  • Utilizada por el CLR para PrincipalPermission
  • WindowsIdentity.GetCurrent()
  • WindowsIdentity asociada al thread de Win32
  • Identidad utilizada por el SO a la hora de
    acceder a recursos

13
IPrincipal IIdentity
CustomPrincipal
CustomIdentity
14
Agenda
  • Conceptos de seguridad
  • Desarrollo seguro
  • Autenticación y autorización
  • Comunicaciones seguras
  • Code Access Security (CAS)

15
Vulnerabilidades comunes
  • STRIDE
  • Spoofing (falsificación de identidad)
  • Tampering
  • Repudiability
  • Information Disclosure
  • Denial of Service
  • Elevation of Privileges
  • Designing for Securability
  • http//msdn.microsoft.com/library/en-us/vsent7/ht
    ml/vxconDesigningForSecurability.asp

16
Analizar las amenazas
  • Desglosar posibles amenazas
  • Priorizar, en función de potencial de daños y el
    coste de implementar las medidas apropiadas
  • Riesgo Criticidad / Esfuerzo
  • Medidas implementadas depende de...
  • Posibles amenazas, sus probabilidades y sus
    consecuencias
  • Nivel de riesgo aceptable para la aplicación y
    para los datos
  • El coste de implementar

Coste proporcional al valor de lo que se quiere
proteger
17
Desarrollo seguroVulnerabilidades comunes
  • Validación de los datos de entrada
  • Autenticación y autorización
  • Gestión de la configuración
  • Datos sensibles
  • Gestión de sesiones
  • Manipulación de parámetros
  • Criptografía
  • Gestión de excepciones
  • Auditoría y logging

18
Validación de los datos de entrada
  • Riesgo ataques producidos al enviar texto
    malicioso
  • query strings
  • campos de formularios
  • cookies
  • cabeceras HTTP
  • Ataques comunes
  • Buffer overruns
  • Cross-site scripting attacks
  • SQL Injection attacks

19
SQL Injection
void DoQuery(string Id) SqlConnection sql
new SqlConnection( _at_"data
sourcelocalhost" "user
idsapasswordpassword") sql.Open()
sqlstring "SELECT saldo" "
FROM cuentas WHERE id'" Id "'"
SqlCommand cmd new SqlCommand(sqlstring, sql)
DoQuery("1001") gt SELECT saldo FROM cuentas
WHERE id '1001'
DoQuery("'1001' DROP TABLE cuentas --") gt
SELECT saldo FROM cuentas WHERE id '1001'
DROP TABLE cuentas ---
20
Principio de mínimo privilegio
  • Privilegios mínimos necesarios
  • Otorgados al mínimo código necesario
  • Durante el mínimo tiempo necesario
  • Ejecutar procesos en cuentas con los privilegios
    mínimos
  • No desarrollar como Administrador, o con una
    cuenta miembro del grupo Administradores

21
Seguridad multi-capa
Disponemos de seguridad, tenemos un cortafuego
Proteger la red
Proteger la máquina
Proteger la aplicación
Presentación
Lógica
Datos
22
Desarrollo seguro - Referencias
  • Writing Secure Code, 2nd Edition. Michael Howard,
    David C. LeBlanc. Microsoft Press 2002
  • Defend Your Code With Top Ten Security Tips Every
    Developer Must Know
  • http//msdn.microsoft.com/msdnmag/issues/02/09/Se
    curityTips/default.aspx
  • Developing Software in Visual Studio .NET with
    Non-Administrative Privileges
  • http//msdn.microsoft.com/library/en-us/dv_vstech
    art/html/tchDevelopingSoftwareInVisualStudioNETWit
    hNon-AdministrativePrivileges.asp
  • Essential .NET Security. Keith Brown (en
    preparación)
  • http//www.develop.com/kbrown/book/

23
Configuración segura de contraseñas
  • HOW TO Use the ASP.NET Utility to Encrypt
    Credentials and Session State Connection Strings
  • http//support.microsoft.com/default.aspx?scidkb
    EN-US329290
  • FIX Stronger Credentials for processModel,
    identity and sessionState
  • http//support.microsoft.com/default.aspx?scidKB
    en-us329250

24
Agenda
  • Conceptos de seguridad
  • Desarrollo seguro
  • Autenticación y autorización
  • Comunicaciones seguras
  • Code Access Security (CAS)

25
AuthN y AuthZ
  • Autenticación (authN) - quién
  • Autorización (authZ) qué
  • Autorización muy dependiente de autenticación
  • Cualquier política de autorización requiere
    usuarios autenticados
  • El mecanismo de autenticación determina los
    posibles mecanismos de autorización

26
Diseñando AuthN y AuthZ
  • Identificar los recursos a proteger
  • Elegir una estrategia de autorización
  • Elegir las identidades a utilizar para el acceso
    a recursos
  • Considerar el flujo de identidad
  • Elegir un mecanismo de autenticación
  • Decidir mecanismo de flujo de identidad

27
1. Recursos a proteger
  • Recursos expuestos a clientes
  • Recursos del servidor Web (páginas, Servicios
    Web, recursos estáticos)
  • Bases de datos
  • Recursos de red (sistemas de archivos remotos,
    AD)
  • Operaciones de aplicación
  • Recursos utilizados por la aplicación
  • Recursos del sistema Registro, EventLog
  • Archivos de configuración

28
2. Estrategias de autorización
  • Basada en roles
  • Acceso a operaciones en función de rol
  • Acceso a recursos con identidades fijas
  • Basada en recursos (ACLs)
  • Recursos protegidos con ACLs
  • Acceso a recursos con la identidad del cliente
    (impersonación)

29
Modelos de acceso a recursos
Trusted Subsystem
Servidor Web o de Aplicación
Servidor de datos
Trusted Service Identity
A B C D E
Autorización basada en roles
SQL Server
La base de datos tiene una relación de confianza
con el servidor Web el Servidor Web autoriza
los usuarios
Trust Boundary
30
Modelos de acceso a recursos
Impersonation/Delegation
Servidor Web o de Aplicación
Servidor de datos
A B C D E
SQL Server
Caller Impersonation/Delegation
31
Estrategia de autorización Un patrón común
  • Autenticar usuarios en el servidor Web
    (front-end)
  • Mapear usuarios a roles
  • Autorizar acceso a operaciones en base a roles
  • Acceder a recursos con identidades fijas
  • Identidad fija única
  • Identidad fija por rol

32
Modelos de acceso a recursos
Utilizando múltiples identidades fijas
Servidor Web o de Aplicación
Servidor de datos
Rol 1
Trusted Identity1
A B C D E
Rol 2
Trusted Identity2
SQL Server
Identity1 tiene permisos de lectura Identity2
tiene permisos de lectura/escritura
Role Mapping
Trust Boundary
33
3. Identidades a utilizar para el
acceso a recursos
  • Original caller
  • Requiere impersonación
  • Puede requerir delegación
  • Identidad del proceso
  • Cuenta de un Servicio
  • Usuario SQL
  • EnterpriseServices
  • Identidad de aplicación

34
4. Flujo de identidad - dónde?
  • Determinar en qué capas se necesita la identidad
    del cliente
  • Auditoría
  • Autorizaciones basadas en usuario

35
5. Mecanismo de autenticación
  • Depende de...
  • Naturaleza de los clientes
  • Navegador
  • Cuentas Windows
  • Necesidad de impersonación/delegación
  • Características de la infraestructura
  • Firewalls
  • Puertos disponibles

36
Escenarios Internet
Suposición de base Usuarios no tienen cuentas
Windows ni certificados
Inicio
Aplicación Web interactiva?
Utilizar Passport o Autenticación Forms
Sí
No Servicio Web
Utilizar GXA (Autenticación WS-Security)
37
Escenarios Intranet/Extranet
Inicio
Usuarios tienen cuentas en Active Directory?
Utilizar Basic, Kerberos o Forms Custom Mapping
Se requiere Delegación?
Sí
Sí
Utilizar Autenticación Passport
No
Sí
No
W2K en Clientes y Servidores?
Usuarios requieren Passport?
Aplicación Web interactiva?
No
Utilizar Basic, NTLM o certificados
Sí
Sí
No
No Servicio Web
Utilizar autenticación Forms
Utilizar Basic, Digest, NTLM, Kerberos
o certificados
Usuarios tienen certificados?
Sí
Utilizar autenticación por certificados
No
Utilizar autenticación WS-Security
38
Mecanismos de autenticaciónUna comparativa
39
ASP.NET - Proceso de AuthN/AuthZ
Credenciales de usuario autenticado (o
IUSR_MACHINE)
4
ASP.NET (aspnet_wp.exe)
IIS (inetinfo.exe)
2
3
5
6
1
Autenticación
Autorización
Autenticación
Autorización
Petición HTTP
Permisos Web Permisos NTFS Restricciones IP
Anonymous Basic Digest Integrated Certificate
Windows Forms Passport None
FileAuthZ URL AuthZ Roles .NET
Servidor Web
7
Credenciales Proceso ASP.NET Original
Caller Identidad fija
Llamada local o remota
40
Autorización en ASP.NETBasada en recursos
  • FileAuthorization
  • Para tipos de archivo mapeados a ASP.NET
  • Requiere una identidad Windows
  • Basado en ACLs y la identidad que llega a ASP.NET
    de IIS (no requiere impersonación)
  • UrlAuthorization
  • Puede aplicarse a nivel de máquina, sitio Web,
    aplicación, subdirectorio y página
  • Elemento ltauthorizationgt en el web.config
  • ltallowgt, ltdenygt
  • users, roles, verbs
  • No requiere una identidad Windows

41
Forms AuthenticationRequisitos mínimos
  • Habilitar acceso anónimo en IIS
  • Especificar autenticación Forms y denegar el
    acceso al usuario anónimo en el web.config
  • Crear una página para solicitar las credenciales
  • Validar los credenciales
  • Redirigir el usuario a la página solicitada

ltsystem.webgt ltauthentication mode"Forms" /gt
ltauthorizationgt ltdeny users"?" /gt
ltallow users""/gt lt/authorizationgt lt/system.w
ebgt
42
Forms AuthenticationValidación de credenciales
  • FormsAuthentication.Authenticate(user, pwd)
  • Código a medida
  • Validar contra BD de usuarios
  • Validar contra ActiveDirectory

ltauthentication mode"Forms"gt ltformsgt
ltcredentials passwordFormat"SHA1"gt ltuser
name"MyTestUser"
password"B30B118E87515296326CAE..."/gt
lt/credentialsgt lt/formsgt lt/authenticationgt
43
Forms AuthenticationAutorización basada en roles
  • Para asociar roles al IPrincipal
  • Al validar los credenciales, obtener los roles
  • Guardar en el ticket de autenticación
  • Evento Application_AuthenticateRequest
  • Extraer la cookie
  • Extraer el ticket del cookie y descifrar
  • Extraer los grupos del ticket (UserData)
  • Crear un GenericPrincipal y asociar los roles
  • Asignar el GenericPrincipal al HttpContext.User

44
Agenda
  • Conceptos de seguridad
  • Desarrollo seguro
  • Autenticación y autorización
  • Comunicaciones seguras
  • Code Access Security (CAS)

45
Comunicaciones seguras
  • Comunicaciones seguras proporcionan
  • Privacidad
  • Cifrado de la información
  • Integridad
  • Message Authentication Codes (MAC), o hash

46
Saber qué securizar
  • Modelo de despliegue Web típico
  • Modelo de despliegue Web con comunicaciones
    seguras

Servidor Web
Clientes
Servidor de datos
Servidor de Aplicaciones
Servidor Web
Clientes
Servidor de Aplicaciones
Servidor de datos
SSL (Privacidad/ Integridad)
IPSec o RPC (Privacidad/ Integridad)
IPSec o SSL (Privacidad/ Integridad)
47
SSL
  • Canal cifrado entre cliente y servidor
  • El cliente utiliza el protocolo HTTPS
  • El servidor escucha en el puerto 443 de TCP
  • Escenarios que requieren SSL
  • Autenticación Basic y Forms
  • Envío de datos sensibles
  • Requisitos y/o aspectos de uso
  • Requiere un certificado de servidor en el
    Servidor Web
  • Puede funcionar a través de NAT

48
IPSec
  • Canal cifrado entre dos máquinas
  • En función de la dirección IP, puerto y protocolo
    de origen y destino
  • Transparente a nivel de aplicación
  • Utilizar IPSec para
  • Cifrar toda comunicación, confirmar integridad
    y/o proporcionar autenticación entre dos máquinas
  • Restringir el acceso a máquinas determinadas
  • Requisitos y/o aspectos de uso
  • Requiere W2K o posterior en ambas máquinas
  • No funciona a través de NAT

49
RPC Encryption
  • Mecanismo de transporte utilizado por DCOM
  • Nivel de autenticación configurable
  • Desde ninguna hasta cifrado completo de paquetes

50
Agenda
  • Conceptos de seguridad
  • Desarrollo seguro
  • Autenticación y autorización
  • Comunicaciones seguras
  • Code Access Security (CAS)

51
Code Access Security (CAS)
  • Modelo de seguridad proporcionado por el CLR
  • Permite definir permisos en base a
    características del código
  • Grupos de código (code groups)
  • Conjuntos de permisos (permission sets)
  • Permisos (permissions)
  • Jerarquía de políticas de seguridad
  • Enterprise, Máquina, Usuario

52
Grupos de código
  • Membership condition
  • Application Directory
  • Hash (SHA1 o MD5)
  • Publisher
  • Site
  • Strong Name
  • URL
  • Zone
  • My Computer, Local Intranet, Internet
  • Trusted Sites, Untrusted Sites

53
Permisos
  • Environment Variables
  • File Dialog
  • File IO
  • Isolated Storage File
  • Reflection
  • Registry
  • Security
  • User Interface
  • DNS
  • Printing
  • Event Log
  • Web Access
  • Socket Access
  • Performance Counter
  • Directory Services
  • Message Queue
  • Service Controller
  • OLE DB
  • SQL Client

54
Conjuntos de permisos
  • FullTrust
  • SkipVerification
  • Execution
  • Nothing
  • LocalIntranet
  • Internet
  • Everything
  • Environment (Leer USERNAME)
  • File Dialog
  • Isolated Storage
  • User Interface
  • DNS
  • Printing (Default)
  • Event log (Instrument)
  • File Dialog (Open)
  • Isolated Storage (10K)
  • User Interface (Own clipboard, Safe top-level
    windows)
  • Printing (Safe)

55
Escenarios especiales
  • AllowPartiallyTrustedCallersAttribute
  • .NET Framework Assemblies and the
    AllowPartiallyTrustedCallersAttribute
  • http//msdn.microsoft.com/library/default.asp?url
    /library/en-us/dnnetsec/html/Aptcatypes.asp
  • EnterpriseServices
  • SecurityPermissionFlag.UnmanagedCode
  • Remoting
  • SecurityPermissionFlag.RemotingConfiguration
  • SecurityPermissionFlag.SerialiazationFormatter
  • Automatic Deserialization in .NET Remoting
  • http//msdn.microsoft.com/library/default.asp?url
    /library/en-us/cpguide/html/cpconautomaticdeseria
    lizationinnetremoting.asp

56
Resumen
  • No dejar Seguridad para el final! ?
  • Adoptar prácticas de desarrollo seguro
  • Principio de mínimo privilegio
  • Validar datos de entrada
  • No desarrollar como Administrador
  • Determinar los mecanismos de autenticación y
    autorización al principio
  • En base a los requisitos y características de la
    aplicación
  • No siempre hace falta impersonar
  • Considerar el uso de roles .NET
  • Utilizar SSL y IPSec cuando necesario
  • Code Access Security proporciona otro nivel de
    seguridad, basado en características del código

57
Referencias
  • Building Secure ASP.NET Applications
    Authentication, Authorization, and Secure
    Communication
  • http//msdn.microsoft.com/library/en-us/dnnetsec/
    html/secnetlpMSDN.asp
  • Programming Windows Security
    Keith Brown, Addison-Wesley, 2000.
  • Improving Web Application Security. Threats and
    Countermeasures
  • Próxima publicación! (verano 2003)

58
Más referencias
  • Seguridad en .NET (Grabación del taller de David
    Carmona)
  • http//www.microsoft.com/spanish/msdn/spain/event
    os/presentaciones/seguridad.asp
  • Web Services Security HTTP Basic Authentication
    without Active Directory
  • http//www.rassoc.com/gregr/weblog/stories/2002/0
    6/26/webServicesSecurityHttpBasicAuthenticationWit
    houtActiveDirectory.html

59
Forum de Desarrolladores Corporativos SEGURIDAD
EN .NETDesarrollando aplicaciones seguras con
.NET FrameworkCatherine Heller
Patrocinado por
Write a Comment
User Comments (0)
About PowerShow.com