Asegúr@IT II - Seguridad En Iis7
-
Upload
chema-alonso -
Category
Business
-
view
4.408 -
download
4
description
Transcript of Asegúr@IT II - Seguridad En Iis7
David Cervigón LunaIT Pro EvangelistMicrosoft Ibéricahttp://blogs.technet.com/davidcervigon
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
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
Arquitectura y Extensibilidad de IIS7Configuración y AdministraciónCaracterísticas de SeguridadDiagnósticosConsideraciones para las BBDD
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
…
…
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.
…
…
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
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
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
..
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
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
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
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)
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
#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
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
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
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
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
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
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
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
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
Por defecto: Sin acceso, sin derechos, sin privilegiosPoca usabilidad. Es necesario un compromiso
Basado en el analisis de riesgos
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
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
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
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
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
© 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.