issue100:site_web_from_scratch
Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
issue100:site_web_from_scratch [2015/09/13 09:38] – d52fr | issue100:site_web_from_scratch [2015/09/15 11:14] (Version actuelle) – auntiee | ||
---|---|---|---|
Ligne 11: | Ligne 11: | ||
Titre : Site Web avec infrastructure à partir de 0 | Titre : Site Web avec infrastructure à partir de 0 | ||
- | Le but de cette série, surtout destinée aux débutants, | + | Le but de cette série, surtout destinée aux débutants, est de vous guider pas à pas dans la construction d'un site Web, avec toute l' |
- | Vous pourriez vous demander pourquoi nous ferons | + | Vous pourriez vous demander pourquoi nous ferions |
- | Je crois fortement qu'il n'y a pas de « solution universelle » - la construction à partir de zéro remplira totalement | + | Je crois fortement qu'il n'y a pas de « solution universelle », la construction à partir de zéro répondra entièrement à vos besoins, alors que la solution toute faite ne le fera probablement pas. À l' |
- | Mais la raison principale d'une construction intégrale est d' | + | Mais la raison principale d'une construction intégrale est d' |
**Enough talking – let's start! | **Enough talking – let's start! | ||
Ligne 37: | Ligne 37: | ||
• Choose “Create a new droplet” (“droplet” is just a VM).** | • Choose “Create a new droplet” (“droplet” is just a VM).** | ||
- | Assez parlé - Commençons | + | Assez parlé - commençons |
Voici, au niveau global, ce que nous allons réaliser : | Voici, au niveau global, ce que nous allons réaliser : | ||
- | • Premièrement, | + | • Premièrement, |
- | • ensuite, nous allons sécuriser cette VM Linux, | + | • Puis, nous allons sécuriser cette VM Linux, |
- | • suivi de l' | + | • Ensuite, nous nous occupérons |
- | • enfin, je vous montrerai comment enregistrer un domaine et relier ce domaine à Apache, hébergé dans la VM Linux. | + | • Enfin, je vous montrerai comment enregistrer un domaine et relier ce domaine à Apache, hébergé dans la VM Linux. |
Déployer Linux dans le Nuage | Déployer Linux dans le Nuage | ||
Ligne 49: | Ligne 49: | ||
Il y a beaucoup de solutions disponibles pour déployer une VM dans le Nuage. Juste un exemple : Amazon Web Services (service Web d' | Il y a beaucoup de solutions disponibles pour déployer une VM dans le Nuage. Juste un exemple : Amazon Web Services (service Web d' | ||
- | Dans mon document, je vais utiliser Digital Ocean. Je n' | + | Dans mon document, je vais utiliser Digital Ocean. Je n' |
Faisons tourner une nouvelle VM et nous choisirons Ubuntu 14.04 : | Faisons tourner une nouvelle VM et nous choisirons Ubuntu 14.04 : | ||
- | • Allez sur https:// | + | • allez sur https:// |
• choisissez « Create a new droplet » (créer une nouvelle droplet - droplet égale VM). | • choisissez « Create a new droplet » (créer une nouvelle droplet - droplet égale VM). | ||
Ligne 74: | Ligne 74: | ||
As convention, all commands starting with # should run as root while all starting with $ will start as regular user.** | As convention, all commands starting with # should run as root while all starting with $ will start as regular user.** | ||
- | Saisissez un nom de VM et choisissez | + | Saisissez un nom de VM et choisissez |
Ensuite, choisissez la saveur de Linux - pour nous, Ubuntu 14.04 64-bits - et, enfin, utilisez le bouton « Create Droplet » (Créer la droplet) en bas de la page. | Ensuite, choisissez la saveur de Linux - pour nous, Ubuntu 14.04 64-bits - et, enfin, utilisez le bouton « Create Droplet » (Créer la droplet) en bas de la page. | ||
- | Quelques secondes | + | Quelques secondes |
IMPORTANT | IMPORTANT | ||
- | Digital Ocean facture à l' | + | Digital Ocean facture à l' |
- | Si vous voulez arrêter tout coût supplémentaire, | + | Si vous voulez arrêter tout coût supplémentaire, |
- | Prenez note, s'il vous plaît, | + | Veuillez noter que nous allons |
- | • Premièrement, | + | • Premièrement, |
- | • deuxièmement, la ligne de commande est plus rapide. | + | • Deuxièmement, la ligne de commande est plus rapide. |
- | Par convention, toutes les commandes commençant par # devront être lancées | + | Par convention, toutes les commandes commençant par # devront être lancées |
**Basic Security | **Basic Security | ||
Ligne 118: | Ligne 118: | ||
Sécurité minimum | Sécurité minimum | ||
- | Maintenant que la VM est configurée et en fonctionnement, elle est accessible depuis n' | + | Maintenant que la VM est configurée et fonctionne, elle est accessible depuis n' |
- | Laissez-moi faire un parallèle avec l' | + | Laissez-moi faire un parallèle avec l' |
Etape 0 - Créer un utilisateur | Etape 0 - Créer un utilisateur | ||
- | La première fois que vous vous connectez à VM Linux toute neuve, créez un nouvel utilisateur nommé « tux ». Ensuite, nous attribuons le mot de passe « linux » à ce nouvel utilisateur (choisissez | + | La première fois que vous vous connectez à votre VM Linux toute neuve, créez un nouvel utilisateur nommé « tux ». Ensuite, nous attribuons le mot de passe « linux » à ce nouvel utilisateur (bien entendu, il faut choisir |
- | Connectez-vous à la VM - nous nous connectons comme administrateur dans un premier temps. Ouvrez un terminal : | + | Connectez-vous à la VM - nous nous connectons comme root cette première fois. Ouvrez un terminal : |
ssh root@104.236.124.121 | ssh root@104.236.124.121 | ||
- | Puis ajoutez un nouvel utilisateur: | + | Puis ajoutez un nouvel utilisateur : |
useradd -m -s /bin/bash tux | useradd -m -s /bin/bash tux | ||
Ligne 138: | Ligne 138: | ||
Attendez l' | Attendez l' | ||
- | le commutateur -m pour useradd crée un répertoire home et le -s que nous voulons bash comme shell. | + | Le commutateur -m pour useradd crée un répertoire home et le -s indique |
**Now we must ensure that we can log in with the new user created. Open a new terminal session and let's try it out: | **Now we must ensure that we can log in with the new user created. Open a new terminal session and let's try it out: | ||
Ligne 170: | Ligne 170: | ||
Level 1 of security completed!** | Level 1 of security completed!** | ||
- | Maintenant, nous devons vérifier que nous pouvons nous connecter avec le nouvel utilisateur | + | Maintenant, nous devons vérifier que nous pouvons nous connecter avec le nouvel utilisateur. Ouvrez un nouveau terminal et essayez : |
ssh tux@104.236.124.121 | ssh tux@104.236.124.121 | ||
Ligne 176: | Ligne 176: | ||
Saisissez votre mot de passe et vous devriez être connecté. Bien vérifier que cette étape fonctionne avant de poursuivre. | Saisissez votre mot de passe et vous devriez être connecté. Bien vérifier que cette étape fonctionne avant de poursuivre. | ||
- | 1 - « pas d' | + | 1 - « pas d' |
- | N' | + | N' |
vi / | vi / | ||
- | Et ajouter | + | Et ajoutez |
AllowUsers | AllowUsers | ||
Ligne 188: | Ligne 188: | ||
DenyUsers | DenyUsers | ||
- | J' | + | J' |
- | Pour que ça prenne effet, nous devons redémarrer | + | Pour que ça prenne effet, nous devons redémarrer |
service ssh restart | service ssh restart | ||
- | Maintenant, l' | + | Maintenant, l' |
Essayez ssh root@104.236.124.121 ; le message d' | Essayez ssh root@104.236.124.121 ; le message d' | ||
- | Le niveau 1 est terminé. | + | Le niveau 1 sécuritaire |
**2 – RSA key | **2 – RSA key | ||
Ligne 222: | Ligne 222: | ||
2 - Clé RSA | 2 - Clé RSA | ||
- | Une clé RSA est une façon bien sécurisée de se connecter à un serveur SSH. La génération de la clé RSA créera deux composantes | + | Une clé RSA est une façon bien sécurisée de se connecter à un serveur SSH. La génération de la clé RSA créera deux composantes |
- | Laissez-moi faire un nouveau parallèle avec un billet de banque | + | Laissez-moi faire un nouveau parallèle avec un billet de banque |
La clé publique est stockée dans le serveur SSH (iceberg dans notre exemple), alors que tux conservera la clé privée. Quand tux essaie de se connecter à iceberg, tux doit montrer la clé privée correspondant à la clé publique. Et la taille de la clé sera si grande que la probabilité que quelqu' | La clé publique est stockée dans le serveur SSH (iceberg dans notre exemple), alors que tux conservera la clé privée. Quand tux essaie de se connecter à iceberg, tux doit montrer la clé privée correspondant à la clé publique. Et la taille de la clé sera si grande que la probabilité que quelqu' | ||
Ligne 230: | Ligne 230: | ||
En résumé, sans la bonne clé privée, il n'y a pas d' | En résumé, sans la bonne clé privée, il n'y a pas d' | ||
- | IMPORTANT - Nous allons générer des clés pour tux et pas pour root (souvenez-vous | + | IMPORTANT - Nous allons générer des clés pour tux et pas pour root (souvenez-vous |
- | Pour la génération de la paire de clés privée/ | + | Pour la génération de la paire de clés privée/ |
ssh-keygen -t rsa -b 10240 | ssh-keygen -t rsa -b 10240 | ||
Ligne 261: | Ligne 261: | ||
As a general rule, modern encryption systems are pretty robust. However corners are sometimes cut and the entire system will be easier to defeat.** | As a general rule, modern encryption systems are pretty robust. However corners are sometimes cut and the entire system will be easier to defeat.** | ||
- | Un peu d' | + | Un peu d' |
- | Je sais que certains | + | Je sais que certains |
- | Mais faisons-le | + | Mais faisons-le |
Nous devrions avoir 2 fichiers dans le répertoire / | Nous devrions avoir 2 fichiers dans le répertoire / | ||
- | • id_rsa_iceberg pour la clé privée | + | • id_rsa_iceberg pour la clé privée. |
• id_rsa_iceberg.pub pour la clé publique. | • id_rsa_iceberg.pub pour la clé publique. | ||
- | Maintenant, faites une copie de la clé publique comme suit - le mon est important car ssh cherchera spécifiquement les clés autorisées (vous pouvez changer ce comportement par défaut en ajustant / | + | Maintenant, faites une copie de la clé publique comme suit : le nom est important car ssh cherchera spécifiquement les clés autorisées (vous pouvez changer ce comportement par défaut en ajustant / |
cp id_rsa_iceberg.pub authorized_keys | cp id_rsa_iceberg.pub authorized_keys | ||
- | Sécurité spéciale du mot de passe de la clé privée | + | Sécurité spéciale du mot de passe de la clé privée. |
- | Maintenant, avant de poursuivre, parlons un peu de la sécurité du mot de passe de la clé privée. | + | Avant de poursuivre, parlons un peu de la sécurité du mot de passe de la clé privée. |
- | En règle générale, les systèmes | + | En règle générale, les systèmes modernes |
**If you are familiar with the Enigma encryption system used by Germans during World War 2 – that was a really robust encryption system. For whatever (good?) reason, the creators decided that a character could not be encrypted as itself. Well, this feature inserted a weakness because it reduced the number of combinations the cypher could produce. It's obviously not the only reason why the code was broken – my point is that a small decision (by sloppiness or not) lowered the encryption strength of a well thought system. | **If you are familiar with the Enigma encryption system used by Germans during World War 2 – that was a really robust encryption system. For whatever (good?) reason, the creators decided that a character could not be encrypted as itself. Well, this feature inserted a weakness because it reduced the number of combinations the cypher could produce. It's obviously not the only reason why the code was broken – my point is that a small decision (by sloppiness or not) lowered the encryption strength of a well thought system. | ||
Ligne 307: | Ligne 307: | ||
[NOTE: the above is all one line]** | [NOTE: the above is all one line]** | ||
+ | |||
+ | Si vous connaissez le système de chiffrage Enigma utilisé par les Allemands pendant la Seconde Guerre mondiale, c' | ||
+ | |||
+ | C'est pareil pour SSH : les clés privées peuvent être protégées par mot de passe (rappel : 12345 dans notre exemple), cependant, le chiffrage n'est pas aussi fort que vous pourriez le penser. Grâce à l'Open Source, quelqu' | ||
+ | |||
+ | En résumé : | ||
+ | • Faites une copie de votre clé privée, | ||
+ | • créez 2 fichiers - file1.txt avec le mot de passe d' | ||
+ | • modifiez le chiffrage. | ||
+ | |||
+ | Comme tux (su - tux, si vous êtes root) : | ||
+ | |||
+ | cd / | ||
+ | |||
+ | mv id_rsa_iceberg id_rsa_iceberg.bak | ||
+ | |||
+ | cat >> file1.txt | ||
+ | |||
+ | Tapez 12345 puis appuyez sur Ctrl+d | ||
+ | |||
+ | cat >> file2.txt | ||
+ | |||
+ | Tapez 12345 puis appuyez sur Ctrl+d | ||
+ | |||
+ | openssl pkcs8 -topk8 -v2 des3 -in / | ||
+ | |||
+ | [NOTE : Ci-dessus, il ne s'agit que d'une seule ligne !) | ||
**Now the private key will be protected with the password included in file2.txt, and properly encrypted! | **Now the private key will be protected with the password included in file2.txt, and properly encrypted! | ||
Ligne 335: | Ligne 362: | ||
(this is read-only and expected by ssh).** | (this is read-only and expected by ssh).** | ||
+ | |||
+ | À partir de maintenant, la clé privée sera protégée par le mot de passe inclus dans file2.txt, et chiffrée comme il faut ! | ||
+ | |||
+ | Pour pouvoir se connecter à iceberg, nous avons besoin d'une copie de la clé privée id_rsa_iceberg sur notre ordinateur. On peut le faire de différentes façons (scp par exemple, ou une copie sécurisée) ; cependant, pourquoi pas un simple copier/ | ||
+ | |||
+ | Faisons-le : | ||
+ | |||
+ | cat id_rsa_iceberg | ||
+ | |||
+ | • Sélectionnez tout ce qui commence à -----BEGIN RSA PRIVATE KEY----- jusqu' | ||
+ | |||
+ | Sur votre bureau : | ||
+ | |||
+ | cd | ||
+ | |||
+ | (pour revenir à votre dossier home) | ||
+ | |||
+ | cd .ssh | ||
+ | |||
+ | vi id_rsa_iceberg | ||
+ | |||
+ | Là, collez, enregistrez et fermez. | ||
+ | |||
+ | • Changez les permissions du fichier : | ||
+ | |||
+ | chmod 400 id_rsa_iceberg | ||
+ | |||
+ | (il est en lecture seule et ssh s'y attend). | ||
**We should now try to connect to iceberg using our ssh key. | **We should now try to connect to iceberg using our ssh key. | ||
Ligne 361: | Ligne 416: | ||
Now we are fully secure!** | Now we are fully secure!** | ||
+ | |||
+ | Nous devons maintenant essayer de nous connecter à iceberg en utilisant notre clé ssh. | ||
+ | |||
+ | Sur le bureau : | ||
+ | |||
+ | ssh -i ~/ | ||
+ | |||
+ | Vous devriez avoir une demande de mot de passe pour la clé privée (c'est 12345) et vous devriez ensuite être connecté à iceberg. | ||
+ | |||
+ | Réglage final de la sécurité : nous allons maintenant interdire toutes les connexions par mot de passe à iceberg. | ||
+ | |||
+ | Revenez au fichier / | ||
+ | |||
+ | vi / | ||
+ | |||
+ | • Changez PermitRootLogin yes en PermitRootLogin no | ||
+ | • Changez # | ||
+ | • Changez LoginGraceTime de 120 à 20 (ceci autorise 20 connexions simultanées – c'est largement assez). | ||
+ | |||
+ | Enregistrez, | ||
+ | |||
+ | Essayez ssh tux@104.236.124.121 | ||
+ | |||
+ | Vous devriez recevoir Permission denied (publickey) - permission refusée (clé publique). Cela signifie que l' | ||
+ | |||
+ | Maintenant, nous sommes complètement sécurisés. | ||
**To summarize: | **To summarize: | ||
Ligne 377: | Ligne 458: | ||
If you are using any other Cloud provider, make sure to check their documentation so you do not pay while the VM is not up & running.** | If you are using any other Cloud provider, make sure to check their documentation so you do not pay while the VM is not up & running.** | ||
+ | |||
+ | En résumé : | ||
+ | • root ne peut pas se connecter. | ||
+ | • seules les clés RSA sont autorisées pour l' | ||
+ | |||
+ | La prochaine fois, nous sécuriserons le serveur en utilisant les règles du pare-feu (le serveur est grand ouvert, mais quand même assez sécurisé pour aujourd' | ||
+ | |||
+ | Nous installerons apache (le serveur Web) et nous le sécuriserons. | ||
+ | |||
+ | Dernière note importante | ||
+ | |||
+ | Si vous utilisez Digital Ocean, le simple arrêt de la VM n' | ||
+ | |||
+ | Avec l' | ||
+ | |||
+ | Si vous utilisez un autre fournisseur de Nuage, vérifiez leur documentation pour vous assurer de ne pas payer quand la VM n'est pas en cours d' |
issue100/site_web_from_scratch.1442129892.txt.gz · Dernière modification : 2015/09/13 09:38 de d52fr