Commit fb20a72b authored by Vincent Mazenod's avatar Vincent Mazenod
Browse files

enhance auth & passwords

parent 5348b38b
......@@ -2,8 +2,11 @@
"<i class="fa fa-wikipedia-w" aria-hidden="true"></i> processus permettant à un système de s'assurer de la légitimité de la demande d'accès faite par une entité (être humain ou un autre système...) afin d'autoriser l'accès de cette entité à des ressources du système (systèmes, réseaux, applications…) conformément au paramétrage du contrôle d'accès ."
## 3 concepts
* identification
* authentification
* **authentification**
* ACL
......@@ -12,22 +15,14 @@
* ce que je sais
* mot de passe, numéro d'identification personnel
* ce que je possède
* carte d'identité, carte à puce, droit de propriété, certificat électronique, diplôme, passeport, Token, Token OTP, préiphérique
* carte d'identité, carte à puce, droit de propriété, certificat électronique, diplôme, passeport, Token, Token OTP, périphérique
* ce que je suis
* photo, caractéristique physique, voire biométrie
* ce que je sais faire
* geste, signature
## sur le web
* authentification HTTP
* basic
* digest
* authentification par formulaire
* authentification déportée
* OAuth
* authentification d'API
# quelques techniques
## apache & .htaccess
......@@ -174,7 +169,8 @@ htdigest /var/www/http-basic/.htdigest "authdigest" otheruser
## auth digest
le client demande un contenu (protégé)
* le client demande un contenu (protégé)
* le serveur répond que le contenu est protégé
```http
HTTP/1.1 401 Unauthorized
......@@ -187,9 +183,12 @@ WWW-Authenticate: Digest realm="OwaspSample",
```
## auth digest
## auth basic
le serveur répond que le contenu est protégé
![HTTP digest auth](images/authentication/http-basic-auth.png "HTTP digest auth")
## auth digest
```http
GET /example/owasp/test.asmx HTTP/1.1
......@@ -237,47 +236,22 @@ le plus courant
* le mot de passe est transmis en clair au serveur
* https :)
* stocker les mots de passe en clair sur le serveur est un mauvaise idée
* stocker les hashés est un bonne pratique
* [Rockyou.com en 2010](http://commedansdubeurre.ch/?story=162-piratage-de-32-millions-de-comptes-utilisateurs-chez-rockyou-recours-collectif-depose)
Note:
- peut être en GET
- plus facile pour le scripter en brute force
- et encore
- passe dans l'url?
- server-status intéressant
- http sniffbale https ok
- peut avoir du code coté client (calcul du md5 en js avant soumiision par exemple)
- 3 étapes
- formulaire
- traitement serveur
- la ressource (notamment accès direct) ou information 403 avec la suite
- dépend beaucoup des développeurs
- best practice
- esapi OWASP
- récupération du token de session suffit souvent (passé par GET par exemple SID ou par cookie)
- potentiellement
- lock out sur brute force
- paramètre assitionel - timestamp
- XSS redirect user vers une page d'auth fake
- SQL injection
- marche aussi avec un interpréteur de commande LDAP
- pour l'attaque des fois ca répond 200 alors que c'est non (ca devrait être 403)
- méfiance
* stocker les hashés est une bonne pratique
* saler les hashés est encore mieux
## oAuth
* tri-partie
![oAuth](images/authentication/oAuth.png "oAuth")
<div style="text-align: center">
![oAuth](images/oAuth.png "oAuth")<!-- .element style="width: 50%" -->
</div>
## oAuth
| Version | SSL | Token | Technique |
| --------- | ----------- | --------------- | ------------------------ |
| oAuth 1.0 | optionel | sans expiration | mise en place compliquée |
| oAuth 2.0 | obligatoire | révocable | simple et plus léger |
| ------- | ----------- | --------------- | ------------------------ |
| 1.0 | optionel | sans expiration | mise en place compliquée |
| 2.0 | obligatoire | révocable | simple et plus léger |
* 1.0 incompatible avec 2.0
* <i class="fa fa-newspaper-o"></i> [How to Secure Your REST API using Proven Best Practices](https://stormpath.com/blog/secure-your-rest-api-right-way)
......@@ -291,16 +265,19 @@ Note:
- confiance dans consumer (l'app qui demande l'autorisation)
## Les attaques brute force
## JWT
[![jwt auth](images/authentication/jwt-auth.png "jwt auth")<!-- .element style="width: 80%" -->](https://blog.ippon.fr/2017/10/12/preuve-dauthentification-avec-jwt/)
* Différents types
* Attaque par dictionnaires
* devine automatiquement les paramètres d'authentification à partir d'une liste d'utilisateur / mot de passe
## force brute
* par dictionnaires
* liste d'utilisateurs + list de mots de passe
* optimisable avec de la probabilité, [des dictionnaires au hasard](https://dazzlepod.com/site_media/txt/passwords.txt), de l'ingénieurie sociale, du flaire etc ...
* Attaque par recherche
* essayer toutes les combinisaons de caractères
* trouver un mot de passe de 8 caractères composé exclusivement de caractères alphabétiques: 26<sup>8</sup> possibilités
* Attaque par recherche basée sur des règles
* par recherche
* combinatoire
* hybride
* décliner via des règles les propositions d'un dictionnaire
* leetspeakation automatique
* [John the Ripper](http://www.openwall.com/john/) permet de générer des mots de passes dérivant de parties du username
......@@ -372,6 +349,16 @@ unshadow /etc/passwd /etc/shadow > mypasswd
</pre>
## 2AF
https://www.google.com/landing/2step/
## Yubikey
[![Ubikey](images/passwords/yubikey.png)](https://www.yubico.com/)
## <i class="fa fa-medkit"></i> Se protéger
* bien choisir son système d'authentification
......@@ -388,3 +375,6 @@ unshadow /etc/passwd /etc/shadow > mypasswd
* sensibilisez vos utilisateurs
* [<i class="fa fa-desktop"></i> Se protéger avec de bons mots de passe](http://doc.m4z3.me/_/bpu/se_proteger_avec_de_bons_mots_de_passe.htm#/cover)
* [<i class="fa fa-video-camera"></i> Se protéger avec de bons mots de passe](http://webtv.u-clermont1.fr/media-MEDIA150410174414391)
* mettre en place en deuxième facteur d'authentification
* utiliser la crypto asymétrique
......@@ -197,8 +197,3 @@
## Solution Hardware
[![mooltipass](images/passwords/mooltipass.jpg)](https://www.themooltipass.com/)
## [Ubikey](https://www.yubico.com/)
[![Ubikey](images/passwords/yubikey.png)](https://www.yubico.com/)
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment