Asegúr@IT II - Seguridad En Iis7

44

description

Diapositivas de la Sesión de Seguridad en IIS 7 utilizadas por David Cervigón en el evento de Asegúr@IT II que se realizó en Barcelona en Abril de 2008.

Transcript of Asegúr@IT II - Seguridad En Iis7

Page 1: Asegúr@IT II - Seguridad En Iis7
Page 2: Asegúr@IT II - Seguridad En Iis7

David Cervigón LunaIT Pro EvangelistMicrosoft Ibéricahttp://blogs.technet.com/davidcervigon

Page 3: Asegúr@IT II - Seguridad En Iis7
Page 4: Asegúr@IT II - Seguridad En Iis7
Page 5: Asegúr@IT II - Seguridad En Iis7
Page 6: Asegúr@IT II - Seguridad En Iis7
Page 7: Asegúr@IT II - Seguridad En Iis7

Tecnologías utilizadasTecnologías utilizadas Metodología de desarrolloMetodología de desarrollo

Políticas de seguridad Políticas de seguridad Gestión de actualizacionesGestión de actualizaciones AutenticaciónAutenticación AutorizaciónAutorización AuditoriasAuditorias Seguimiento ErroresSeguimiento Errores

Bases de DatosBases de Datos LDAPLDAP Ficheros variosFicheros varios

Almacén de DatosAlmacén de Datos

Aplicación

AplicaciónW

eb S

erve

r

Web

Ser

ver

Page 8: Asegúr@IT II - Seguridad En Iis7

Seguridad FísicaSeguridad Física

Fortificacion del SO, Autenticación, Parches

Firewalls, Acceso a Red, Redes de CuarentenaGuardias, Cerraduras, etc.

Segmentos de Red, IPSec

Fortificación de servicios, antivirus

ACLs, cifrado, EFS

Documentación, formación

Perímetro

Red Interna

Host

Application

Datos

Segmentos de Red, IPSec

Guardias, Cerraduras, etc.

Firewalls, Acceso a Red, Redes de Cuarentena

Políticas, Procesos y Concienciación

Políticas, Procesos y Concienciación

Seguridad FísicaSeguridad Física

Usando una estrategia por capas• Se incrementa el riesgo de ser detectado para el

atacante• Se reduce su probabilidad de tener éxito

Fortificación del SO, Autenticación, Parches

Fortificación de servicios, antivirus

ACLs, cifrado, EFS

Documentación, formación

Perímetro

Red Interna

Host

Aplicación

Datos

Page 9: Asegúr@IT II - Seguridad En Iis7

Arquitectura y Extensibilidad de IIS7Configuración y AdministraciónCaracterísticas de SeguridadDiagnósticosConsideraciones para las BBDD

Page 10: Asegúr@IT II - Seguridad En Iis7

Envio de Respuestas

Log Compresión

NTLM Basic

Determinar

Manejador

CGI

Static File

Autenticación

Anon

Implementación Implementación Monolítica. Instala Monolítica. Instala todo todo o nada…o nada…

Extensibilidad del la Extensibilidad del la funcionalidad del servidor funcionalidad del servidor solamente a través de solamente a través de ISAPI…ISAPI…

ASP.NET

PHPISAPI

Page 11: Asegúr@IT II - Seguridad En Iis7

Envio de repuestas

Log Compress

NTLM Basic

Determine

Handler

CGI

Static File

ISAPI

AutenticaciónAnon

SendResponse

Authentication

Authorization

ResolveCache

ExecuteHandler

UpdateCache

La funcionalidad del La funcionalidad del servidor se divide en servidor se divide en ~ ~ 40 40 módulosmódulos......

Los módulos se Los módulos se enchufan a una enchufan a una pipeline genérica de pipeline genérica de peticionespeticionesLos módulos Los módulos extienden extienden

la funcionalidad del la funcionalidad del servidorservidor a través de una a través de una API pública.API pública.

Page 12: Asegúr@IT II - Seguridad En Iis7

Implementación basada en ISAPISólo ve las peticiones ASP.NETCaracterísticas duplicadas

Send ResponseLog Compres

s

NTLM Basic

Determine

Handler

CGI

Static File

ISAPI

AuthenticationAnon

AuthenticationForm

sWindo

ws

Map Handl

er

ASPX

Trace

……

aspnet_isapi.daspnet_isapi.dllll

Page 13: Asegúr@IT II - Seguridad En Iis7

Dos modosClásico (como ISAPI)

Modo IntegradoLo módulos de .NET se enchufan directamente en la pipelineProcesan todas las peticionesFidelidad total en tiempo de ejecución

Log

Compress

Basic

Static File

ISAPI

Anon

SendResponse

Authentication

Authorization

ResolveCache

ExecuteHandler

UpdateCache

…AuthenticationForm

sWindo

ws

Map Handl

er

ASPX

Trace

……

aspnet_isapi.daspnet_isapi.dllll

Page 14: Asegúr@IT II - Seguridad En Iis7

NET global settings

ASP.NET global settings

Global settings and location tags

.NET Framework Global web.config

machine.config

IIS 7applicationHost.config

Site Rootweb.config

<system.web>.NET settings

..

..

..

<system.webServer>IIS 7 Delegated settings

..

Page 15: Asegúr@IT II - Seguridad En Iis7
Page 16: Asegúr@IT II - Seguridad En Iis7

Diseño modular: Menor superficie de ataque durante la instalación y la ejecuciónIntegración .Net

Autenticación por formularios para cualquier tipo de contenido.NET Role and Membership Providers

Cambios en el Usuario Anónimo y en el grupo IIS_WPG

Aislamiento de Application PoolsSandboxing entre aplicaciones

URLAuthorizationControla el acceso a sitios, carpetas o ficheros sin utilizar permisos NTFSLas reglas se almacenan en ficheros .config

Request FilteringReglas del estilo ULScan, que evitan servir URLs

Con determinadas cadenasDe determinada longitudDeterminados ficheros o Paths

Errores específicos asociadosLas reglas se almacenan en ficheros .config

Autenticación y SSL en modo KernelNegociaciones más rápidas y menos problemáticas

Page 17: Asegúr@IT II - Seguridad En Iis7

La tuberia integrada de ejecución permite autenticación por formularios para cualquier tipo de contenidoPermite reutilizar las bases de datos de usuarios existentes condiferentes .NET role/membership providers

Ejemplos: Almacenar usuarios en:Active directory o SAM localSQL 2005 Express para usuarios estáticos del siteADAM para usuarios y grupos en una aplicacion PHPUsuarios y grupos en una DB2 del mainframe en una aplicacion ASP.NET

Page 18: Asegúr@IT II - Seguridad En Iis7

IUSR en lugar de IUSR_<servermame>IUSR es “builtin”, no una cuenta local

No puede iniciar sesión en el sistemaSin contraseñas de las que preocuparseMismo SID en todos los Vista/2008Mismas ACLS válidas entre servidores

Si se deshabilita, el acceso anónimo todavía funciona

Usa la identidad del App Pool (Network Service por defecto)

IIS_IUSR reemplaza a IIS_WPG Grupo “Built-in”, no local, SID conocido, ACLs respetadas…Las identidades de los Aplication Pools se agregan automáticamente

Page 19: Asegúr@IT II - Seguridad En Iis7

Por defecto, cada Site se asigna a un Pool diferenteEvita que un atacante pueda leer los secretos de la configuración de otro Pool de aplicacionesTampoco pueden acceder al ApplicationHost.config

Cada Pool tiene su propia identidadNetwork Service por defectoSID Injection: SID único para cada Pool

El usuario Anónimo asume la identidad del PoolFunciona de manera automática y transparente, para configuración y operaciones

No es necesario manejar las identidades del usuario anónimoLa identidad del App pool se une automáticamente al grupo IIS_USR (IIS_WPG)

Page 20: Asegúr@IT II - Seguridad En Iis7

INETINFO.exeINETINFO.exe

metabasemetabase

ftp, smtp, ftp, smtp, nntpnntp

User mode

Kernel mode

HTTP.SYSHTTP.SYS

W3SVCW3SVC

SVCHOST.exeSVCHOST.exe

W3

Config M

gr

W3

Config M

gr

W3

Pro

cess

Mgr

W3

Pro

cess

Mgr

W3CoreW3Core

W3WP.exeW3WP.exe

#1 Application #1 Application PoolPoolID: Network ID: Network ServiceService

W3CoreW3Core

W3WP.exeW3WP.exe

#2 Application #2 Application Pool ID: Network Pool ID: Network ServiceService

W3CoreW3Core

W3WP.exeW3WP.exe

#3 Application #3 Application PoolPoolID: Network ID: Network ServiceService

ASP.net AppsASP.net Apps

.Net App .Net App DomainDomain

.Net App .Net App DomainDomain.Net App .Net App DomainDomain

ASP.net AppsASP.net Apps

.Net App .Net App DomainDomain

.Net App .Net App DomainDomain.Net App .Net App DomainDomain

ASP.net AppsASP.net Apps

.Net App .Net App DomainDomain

.Net App .Net App DomainDomain.Net App .Net App DomainDomain

Page 21: Asegúr@IT II - Seguridad En Iis7

#2.config#1.config #3.config

IISADMINIISADMIN

metabasemetabase

ftp, smtp, ftp, smtp, nntpnntp

User mode

Kernel mode

HTTP.SYSHTTP.SYS

WASWAS

IISCoreIISCore

W3WP.exeW3WP.exe

#1 Application #1 Application PoolPoolID: SidforPool3ID: SidforPool3

IISCoreIISCore

W3WP.exeW3WP.exe

#2 Application #2 Application PoolPoolID: SIDforPool2ID: SIDforPool2

IISCoreIISCore

W3WP.exeW3WP.exe

#3 Application #3 Application PoolPoolID: SIDforPool3ID: SIDforPool3

ASP.net AppsASP.net Apps

.Net App .Net App DomainDomain

.Net App .Net App DomainDomain.Net App .Net App DomainDomain

ASP.net AppsASP.net Apps

.Net App .Net App DomainDomain

.Net App .Net App DomainDomain.Net App .Net App DomainDomain

ASP.net AppsASP.net Apps

.Net App .Net App DomainDomain

.Net App .Net App DomainDomain.Net App .Net App DomainDomain

modulesmodules modulesmodules modulesmodules

Los Application Pools solamente pueden leer su configuración

Page 22: Asegúr@IT II - Seguridad En Iis7

Cada sitio se asigna a un Pool único cuando se creaEn tiempo de ejecución:

Se “injecta” una SID único para ese Pool en las lista de SIDs del proceso

No cambia la identidad del procesoSe crea un fichero de configuración “temporal” que contiene solamente las configuraciones de ese PoolEse fichero temporal se securiza mediante ACLs que contienen ese SID único

Ese SID será el mismo en otros servidores

Page 23: Asegúr@IT II - Seguridad En Iis7

Worker Process (W3WP.EXE)Service Host (SVCHost.EXE)

Windows Process

Activation Service (WAS)

World Wide Web

Service (W3SVC) applicationho

st.config

SID Injection

AppPool: newPoolusername: newPoolUserpassword: <password>

LogonUser

Token

Token

NewPool\Wwwroot\

default.htmACL

Acces

sChec

k

OK

Otherpool\Wwwroot\

default.htmACL

Acces

sChec

k

Denied

Page 24: Asegúr@IT II - Seguridad En Iis7

Deshabilitar el usuario anónimoappcmd set config -section:anonymousAuthentication -userName:"" --password

Todo usuario anónimo sucederá como la identidad del proceso

Configurar el contenido para que solo pueda ser accedido por el SID del App Pool (con icacls)

Solo para contenido local, no funcionará para contenido en UNCs

Crear una localización segura paraCache de plantillas ASPContenido comprimidoCrear para ese pool una localizacion para los temporales de ASP.net

appcmd set config "Default Web Site" -section:compilation -tempDirectory:%systemdrive%\inetpub\temp\aspnettemp\site%1 /commit:webroot

Page 25: Asegúr@IT II - Seguridad En Iis7
Page 26: Asegúr@IT II - Seguridad En Iis7

Se utiliza para controlar el acceso a sites, carpetas o ficheros sin utilizar NTFSInspirado en ASP.NET URL Authorization, pero diseñado para administradoresLas reglas de autorización de almacenan en los ficheros .config

Delegar el control para que se almacenen en el web.configLas reglas de Autorización son entonces portablesXCopy mantiene la seguridad

Pueden utilizarlo todo tipo de aplicacionesFunciona tanto en modo clásico como integrado

Page 27: Asegúr@IT II - Seguridad En Iis7
Page 28: Asegúr@IT II - Seguridad En Iis7

IIS 7 integra reglas al estilo de URLScanPotente característica de seguridad

Evitar URLs que contengan “una cierta cadena de caracteres”Bloquear URLs de longitud mayor que “X” caracteresEvitar servir extensiones “.config” o “/bin”

Las reglas de almacenan en los ficheros .config

Delegar el control para que se almacenen en el web.configLas reglas de filtrado son portablesSe trasladan al hacer XCopy

Errores HTTP personalizados para seguimiento de URLs rechazadas

Page 29: Asegúr@IT II - Seguridad En Iis7
Page 30: Asegúr@IT II - Seguridad En Iis7

Kernel mode SSLMejor rendimientoReduce los cambios de contexto a modo usuario

Autenticación en modo KernelMejor rendimientoKerberos funciona cuando se utiliza una identidad personalizada del App Pool

No se necesita utilizar SETSPN, ya que el acceso al DC sucede con la cuenta de máquina

Page 31: Asegúr@IT II - Seguridad En Iis7

Errores detallados para ofrecer:Acciones para la resoluciónLíneas de investigaciónIncluyen secciones de configuración, página, modulo cargado…Solo se envían a Localhost por motivos de seguridad

Más detalles en los códigos de error HTTP para identificar la raíz de los problemas

Guardados en los logs de IIS

Page 32: Asegúr@IT II - Seguridad En Iis7
Page 33: Asegúr@IT II - Seguridad En Iis7

Los entornos de pruebas y desarrollo DEBEN estar separados del entorno de producción

“Chinese Wall”El entorno de pruebas suele ser bastante relajadoEl entorno de pruebas debe ser representativo del entorno de producción

Nunca desarrollar sobre el servidor en producción

Los desarrolladores no deben ser DBOs sino DB_DDLAdmin o controladores de un esquema

Page 34: Asegúr@IT II - Seguridad En Iis7

Por defecto: Sin acceso, sin derechos, sin privilegiosPoca usabilidad. Es necesario un compromiso

Basado en el analisis de riesgos

Page 35: Asegúr@IT II - Seguridad En Iis7

Empezando con las más segura/ControladaCuenta local dedicada (no el administrador local)Servicio Local (¿la utilizan también otros servicios?)Cuenta de dominio dedicada (no miembro del grupo de administradores locales)Network service (¿la utilizan también otros servicios?)Cuenta local miembro del grupo local de administradoresCuenta de dominio dedicada (no miembro del grupo de administradores locales)

NO usar NUNCA:Local System Domain Administrator

Page 36: Asegúr@IT II - Seguridad En Iis7

Utilizar preferiblemente Autenticación de Windows

Cuenta con acceso limitado (Mismos principios que para la cuenta de servicios)Network Service AccountSi no se pueden usar cuentas de dominio usar cuentas “espejo”

En caso de utilizar autenticación de SQLUsar contraseñas fuertesProteger las comunicaciones (IPSEC, SSL, Certificados)

Cifrar las cadenas de conexión en los .config

Page 37: Asegúr@IT II - Seguridad En Iis7
Page 38: Asegúr@IT II - Seguridad En Iis7

System tables implemented as views:

catalog viewsMetadata is secured by default

Minimal permissions to publicCatalog views are row level secured

Need to be owner or have some permission on object to see it in catalog view

SA can see everything in serverDBO can see everything in database

New permission to allow viewing of metadata

VIEW DEFINITONApplicable at object level, schema level, database, and server level

Page 39: Asegúr@IT II - Seguridad En Iis7

Multiples permisos, varios ámbitosElección de la granularidad de los permisos y del ámbitoÁmbitos

Server: Ejemplo: ALTER ANY LINKED SERVER

Database: Ejemplo: CREATE TABLE

Schema: Ejemplo: ALTER

Object: Ejemplo: SELECT

Granularidad de permisos:Ejemplo: ALTER permission on an object

Ejemplo: ALTER TRACE permission

Page 40: Asegúr@IT II - Seguridad En Iis7

Una Base de Datos puede tener múltiples EsquemasCada Esquema tiene un owner principal (usuario o role)Cada usuario tiene asociado un Esquema por defectoLos objetos de la Base de Datos viven en esquemasÚtil para

Aislamiento, AgregaciónFlexibilidadSeparar agrupamiento administrativo del acceso de las aplicacionesCambiar el owner sin actualizar las aplicaciones

Role1Role1

OwnsOwns

Has Has defauldefault t schemschemaaOwnsOwns

OwnsOwns

SchemaSchema11

SchemaSchema22

SchemaSchema33SP1SP1

Fn1Fn1Tab1Tab1

DatabaseDatabase

User1User1 Approle1Approle1

Page 41: Asegúr@IT II - Seguridad En Iis7
Page 42: Asegúr@IT II - Seguridad En Iis7

Geeks.mshttp://geeks.ms/blogs/iis

Page 43: Asegúr@IT II - Seguridad En Iis7

© 2007 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.

The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after

the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

Page 44: Asegúr@IT II - Seguridad En Iis7