doc/security_fr.md

151 lines
6.2 KiB
Markdown
Raw Normal View History

2014-07-15 09:43:49 +02:00
2014-05-13 15:24:40 +02:00
# Securité
2015-05-20 14:47:22 +02:00
YunoHost a été développé dans loptique de fournir une sécurité maximale tout en restant accessible et facilement installable.
2014-05-13 15:24:40 +02:00
2015-05-20 14:47:22 +02:00
Tous les protocoles que YunoHost utilise sont **chiffrés**, les mots de passe ne sont pas stockés en clair, et par défaut chaque utilisateur naccède quà son répertoire personnel.
2014-05-13 15:24:40 +02:00
2017-11-01 19:21:53 +01:00
Deux points sont néanmoins importants à noter :
2014-05-13 15:24:40 +02:00
2015-05-20 14:47:22 +02:00
* Linstallation dapplications supplémentaires **augmente le nombre de failles** potentielles. Il est donc conseillé de se renseigner sur chacune delle **avant linstallation**, den comprendre le fonctionnement et juger ainsi limpact que provoquerait une potentielle attaque. Ninstallez **que** les applications qui semblent importantes pour votre usage.
2014-05-13 15:24:40 +02:00
* Le fait que YunoHost soit un logiciel répandu augmente les chances de subir une attaque. Si une faille est découverte, elle peut potentiellement **toucher toutes les instances YunoHost** à un temps donné. Nous nous efforçons de corriger ces failles le plus rapidement possible, pensez donc à **mettre à jour régulièrement** votre système.
*Si vous avez besoin de conseil, nhésitez pas à [nous demander](/help_fr).*
2014-05-13 15:24:40 +02:00
*Pour discuter d'une faille de securité, contactez l'[équipe securité de YunoHost](/security_team_fr).*
2014-06-04 21:40:30 +02:00
---
2014-05-13 15:24:40 +02:00
2014-06-15 20:47:19 +02:00
## Améliorer la sécurité
2014-05-13 15:24:40 +02:00
Si votre serveur YunoHost est dans un environnement de production critique ou que vous souhaitez améliorer sa sécurité, il est bon de suivre quelques bonnes pratiques.
2017-11-01 19:21:53 +01:00
**Attention :** *lapplication des conseils suivants nécessite une connaissance avancée du fonctionnement et de ladministration dun serveur. Pensez à vous renseigner avant de procéder à cette mise en place.*
2014-05-13 15:24:40 +02:00
### Authentification SSH par clé
2015-04-26 19:17:49 +02:00
Voici un [tutoriel plus détaillé](http://doc.ubuntu-fr.org/ssh#authentification_par_un_systeme_de_cles_publiqueprivee).
2015-05-20 14:47:22 +02:00
Par défaut, lauthentification SSH se fait avec le mot de passe dadministration. Il est conseillé de désactiver ce type dauthentification et de le remplacer par un mécanisme de clé de chiffrement.
2014-05-13 15:24:40 +02:00
2017-11-01 19:21:53 +01:00
**Sur votre ordinateur de bureau :**
2014-05-13 15:24:40 +02:00
```bash
ssh-keygen
2014-07-15 09:47:04 +02:00
ssh-copy-id -i ~/.ssh/id_rsa.pub <votre_serveur_yunohost>
2014-05-13 15:24:40 +02:00
```
2017-11-01 19:21:53 +01:00
<div class="alert alert-info" markdown="1">
Si vous êtes sur Ubuntu 16.04 vous devez faire `ssh-add` pour initialiser l'agent ssh
2017-11-01 19:21:53 +01:00
</div>
2014-05-13 15:24:40 +02:00
Entrez le mot de passe dadministration et votre clé publique devrait être copiée sur votre serveur.
2017-11-01 19:21:53 +01:00
2015-05-20 14:47:22 +02:00
**Sur votre serveur**, éditez le fichier de configuration SSH, pour désactiver lauthentification par mot de passe.
2014-05-13 15:24:40 +02:00
```bash
nano /etc/ssh/sshd_config
# Modifiez ou ajoutez la ligne suivante
PasswordAuthentication no
```
Sauvegardez et relancez le démon SSH.
2018-06-11 15:42:41 +02:00
```bash
systemctl restart ssh
```
2014-05-13 15:24:40 +02:00
2014-06-04 21:40:30 +02:00
---
2014-07-23 17:56:51 +02:00
### Modifier le port SSH
2015-05-03 19:35:13 +02:00
Pour éviter des tentatives de connexion SSH par des robots qui scannent tout Internet pour tenter des connexions SSH avec tout serveur accessible, on peut modifier le port SSH.
2014-07-23 17:56:51 +02:00
**Sur votre serveur**, éditez le fichier de configuration SSH, pour modifier le port SSH.
```bash
nano /etc/ssh/sshd_config
2018-06-11 15:42:41 +02:00
```
**Recherchez la ligne « Port »** et remplacez le numéro du port (par défaut 22) par un autre numéro non utilisé
```bash
2015-05-20 14:47:22 +02:00
Port 22 # à remplacer par exemple par 9777
```
2018-06-11 15:42:41 +02:00
**Ouvrez le port** choisi dans le parefeu (vous pouvez utiliser l'option -6 pour interdire la connexion via ipv4)
+```bash
+yunohost firewall allow TCP <votre_numero_de_port_ssh>
+```
```
Sauvegardez et relancez le démon SSH.
2018-06-11 15:42:41 +02:00
```bash
systemctl restart ssh
```
2015-05-20 14:47:22 +02:00
Ensuite redémarrez le firewall iptables et fermez lancien port dans iptables.
2014-06-19 14:31:19 +02:00
```bash
yunohost firewall reload
yunohost firewall disallow TCP <votre numéro de port> # port par défaut 22
2014-06-19 14:31:19 +02:00
```
2015-05-20 14:47:22 +02:00
**Pour les prochaines connexions SSH** il faudra ajouter loption -p suivie du numéro de port SSH.
2017-11-01 19:21:53 +01:00
**Exemple** :
```bash
2014-07-15 09:47:04 +02:00
ssh -p <votre_numero_de_port_ssh> admin@<votre_serveur_yunohost>
```
---
2015-04-13 00:23:16 +02:00
### Changer lutilisateur autorisé à se connecter par SSH
2014-07-15 09:43:49 +02:00
2015-05-20 14:47:22 +02:00
Afin déviter de multiples tentatives de forçage du login admin par des robots, on peut éventuellement changer lutilisateur autorisé à se connecter.
2014-07-15 09:43:49 +02:00
2015-10-04 02:25:34 +02:00
<div class="alert alert-info" markdown="1">
2016-01-30 22:00:44 +01:00
Dans le cas dune authentification par clé, la force brute na aucune chance de réussir. Cette étape nest donc pas vraiment utile dans ce cas
2015-10-04 02:25:34 +02:00
</div>
2014-07-15 09:43:49 +02:00
**Sur votre serveur**, ajoutez un utilisateur.
```bash
sudo adduser nom_utilisateur
```
2015-05-20 14:47:22 +02:00
Choisissez un mot de passe fort, puisque cest lutilisateur qui sera chargé dobtenir des droits root.
Ajoutez lutilisateur au groupe sudo, afin justement de lautoriser à effectuer des tâches de maintenance nécessitant les droits root.
2014-07-15 09:43:49 +02:00
```bash
sudo adduser nom_utilisateur sudo
```
2015-05-20 14:47:22 +02:00
À présent, modifiez la configuration SSH pour autoriser ce nouvel utilisateur à se connecter.
2014-07-15 09:43:49 +02:00
**Sur votre serveur**, éditez le fichier de configuration SSH
```bash
sudo nano /etc/ssh/sshd_config
2017-11-01 19:21:53 +01:00
# Recherchez le paragraphe « Authentication » et ajoutez à la fin de celui-ci :
2014-07-15 09:43:49 +02:00
AllowUsers nom_utilisateur
```
2015-05-20 14:47:22 +02:00
Seuls les utilisateurs mentionnés dans la directive AllowUsers seront alors autorisés à se connecter via SSH, ce qui exclut donc lutilisateur admin.
2014-07-15 09:43:49 +02:00
Sauvegardez et relancez le démon SSH.
2018-06-11 15:42:41 +02:00
```bash
systemctl restart ssh
```
2014-07-15 09:43:49 +02:00
---
2015-04-13 00:23:16 +02:00
### Désactivation de lAPI YunoHost
2014-05-13 15:24:40 +02:00
2015-05-20 14:47:22 +02:00
YunoHost est administrable via une **API HTTP**, servie sur le port 6787 par défaut. Elle permet dadministrer une grande partie de votre serveur, et peut donc être utilisée à des **fins malveillantes**. La meilleure chose à faire si vous êtes habitués aux lignes de commande est de désactiver le service `yunohost-api`, et **utiliser la [moulinette](/moulinette_fr)** en SSH.
2014-05-13 15:24:40 +02:00
```bash
sudo service yunohost-api stop
```
### Tests dintrusion de YunoHost
2017-11-01 19:21:53 +01:00
Des [pentests](https://fr.wikipedia.org/wiki/pentest) ont été effectués sur une instance de YunoHost 2.4 :
- [1) Préparation](https://exadot.fr/2016/07/03/pentest-dune-instance-yunohost-1-preparation)
- [2) Le fonctionnement](https://exadot.fr/2016/07/12/pentest-dune-instance-yunohost-2-le-fonctionnement)
- [3) Audit en Black Box](https://exadot.fr/2016/08/26/pentest-dune-instance-yunohost-3-audit-en-black-box)
- [4) Audit en Grey Box](https://exadot.fr/2016/11/03/pentest-dune-instance-yunohost-4-audit-en-grey-box)