issue102:tutoriel_2
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 | ||
| issue102:tutoriel_2 [2015/11/16 00:19] – erlevo | issue102:tutoriel_2 [2015/11/16 18:49] (Version actuelle) – andre_domenech | ||
|---|---|---|---|
| Ligne 7: | Ligne 7: | ||
| And how does this really actually work? The web server runs as a daemon. “Daemon” - at least in the *nix family – means software that runs in background (meaning there is typically no output on the screen, the program runs silently without interaction from the user), and typically listens on a TCP port (more on TCP ports in part 2, published last week).** | And how does this really actually work? The web server runs as a daemon. “Daemon” - at least in the *nix family – means software that runs in background (meaning there is typically no output on the screen, the program runs silently without interaction from the user), and typically listens on a TCP port (more on TCP ports in part 2, published last week).** | ||
| - | Maintenant que notre machine virtuelle Linux est construite et sûre, il est temps d' | + | Maintenant que notre machine virtuelle Linux est construite et sûre, il est temps d' |
| - | Qu' | + | Qu' |
| - | Un serveur | + | Un serveur |
| - | Et comment cela fonctionne-t-il réellement ? | + | Et comment cela fonctionne-t-il réellement ? |
| **When a request is sent to that specific listening port, the daemon wakes up and produces an action – for a web server, the daemon typically sends back a web page. | **When a request is sent to that specific listening port, the daemon wakes up and produces an action – for a web server, the daemon typically sends back a web page. | ||
| Ligne 25: | Ligne 25: | ||
| I chose Apache for this tutorial – there is no specific reason why not ngix, which is also an excellent server, other than I personally have more exposure with Apache software in general.** | I chose Apache for this tutorial – there is no specific reason why not ngix, which is also an excellent server, other than I personally have more exposure with Apache software in general.** | ||
| - | Quand une requête est envoyée sur ce port particulier, | + | Quand une requête est envoyée sur ce port particulier, |
| - | Quel serveur | + | Quel serveur |
| - | Les serveurs les plus populaires sont Apache, ngix, Microsoft et Google (liste recueillie chez netcraft.com). Je ne suis pas très habitué à Google en matière de serveur et Microsoft est à priori hors liste (imaginez pourquoi!) | + | Les serveurs les plus populaires sont Apache, ngix, Microsoft et Google (liste recueillie chez netcraft.com). Je ne suis pas très habitué à Google en matière de serveur et Microsoft est à priori hors liste (imaginez pourquoi !). Il nous reste donc à choisir entre Apache et ngix. |
| - | Apache existe | + | Apache existe |
| - | J'ai choisi Apache pour ce tutoriel – je n'ai aucune raison particulière de n' | + | J'ai choisi Apache pour ce tutoriel – je n'ai aucune raison particulière de n' |
| Ligne 48: | Ligne 48: | ||
| We can now check that the web-server started properly (shown below) - using a web browser, key the IP address of the server (in my example it is 159.203.90.111).** | We can now check that the web-server started properly (shown below) - using a web browser, key the IP address of the server (in my example it is 159.203.90.111).** | ||
| - | Installer le serveur | + | Installer le serveur |
| Avant de commencer, notez que je vais également ajouter les commandes pour Centos7. | Avant de commencer, notez que je vais également ajouter les commandes pour Centos7. | ||
| - | Installer | + | Installer |
| sudo apt-get install apache2 (Centos7 – yum install httpd) | sudo apt-get install apache2 (Centos7 – yum install httpd) | ||
| - | Assurez-vous de répondre Y pour continuer (ou d' | ||
| - | On peut maintenant s' | + | Assurez-vous de répondre Y pour continuer (ou d' |
| + | |||
| + | On peut maintenant s' | ||
| **Configuration and tuning | **Configuration and tuning | ||
| Ligne 95: | Ligne 96: | ||
| • MaxRequestsPerChild is the threshold after which a child process will re-spawn. For example, as any software, Apache can have memory leaks – so restarting the child process after a given number of requests served will clean up potentially leaked resources.** | • MaxRequestsPerChild is the threshold after which a child process will re-spawn. For example, as any software, Apache can have memory leaks – so restarting the child process after a given number of requests served will clean up potentially leaked resources.** | ||
| - | Configuration et réglage. | + | Configuration et réglage |
| - | Maintenant qu' | + | Maintenant qu' |
| D' | D' | ||
| - | Théoriquement, | + | Théoriquement, |
| - | Éditez le fichier : / | + | Éditez le fichier : / |
| sudo vi / | sudo vi / | ||
| + | |||
| < | < | ||
| StartServers 2 | StartServers 2 | ||
| Ligne 113: | Ligne 115: | ||
| MaxRequestsPerChild 3000 | MaxRequestsPerChild 3000 | ||
| </ | </ | ||
| + | |||
| Pour que cela fasse effet, enregistrez le fichier et redémarrez le service Apache en tapant : | Pour que cela fasse effet, enregistrez le fichier et redémarrez le service Apache en tapant : | ||
| Ligne 118: | Ligne 121: | ||
| Que signifie tout cela ? | Que signifie tout cela ? | ||
| - | • StartServers définit le nombre minimum de serveurs enfants | + | • StartServers définit le nombre minimum de serveurs enfants |
| - | • MinSpareServer | + | • MinSpareServers |
| - | • MaxClients est le nombre maximum de requêtes simultanées qui seront traîtées. (toute requête supplémentaire sera mise en file d' | + | • MaxClients est le nombre maximum de requêtes simultanées qui seront traîtées (toute requête supplémentaire sera mise en file d' |
| - | • MaxRequestsPerChild est la valeur au-delà de laquelle un serveur enfant se ré-initialisera. Par exemple, comme tout logiciel, Apache peut avoir des fuites de mémoire | + | • MaxRequestsPerChild est la valeur au-delà de laquelle un serveur enfant se réinitialisera. Par exemple, comme tout logiciel, Apache peut avoir des fuites de mémoire |
| **Disable default site | **Disable default site | ||
| Ligne 161: | Ligne 164: | ||
| Désactiver le site par défaut | Désactiver le site par défaut | ||
| - | Il est temps maintenant de désactiver le site par défaut c'est à dire la page qui apparaissait quand on entrait l' | + | Il est temps maintenant de désactiver le site par défaut, c'est-à-dire la page qui apparaissait quand on entrait l' |
| Il faut d' | Il faut d' | ||
| - | Pour le désactiver faire : | + | Pour le désactiver, faire : |
| sudo a2dissite 000-default | sudo a2dissite 000-default | ||
| - | Vérifier | + | Vérifiez |
| - | Redémarrer | + | Redémarrez |
| Créer notre site | Créer notre site | ||
| - | Le nom de notre site sera iceberg-tutorial.com (iceberg.com est déjà pris!), nous allons donc créer un fichier de configuration nommé iceberg-tutorial.conf (note : nous aurions pu choisir n' | + | Le nom de notre site sera iceberg-tutorial.com (iceberg.com est déjà pris !) ; nous allons donc créer un fichier de configuration nommé iceberg-tutorial.conf (note : nous aurions pu choisir n' |
| - | sudo vi / | + | sudo vi / |
| - | available/ | + | |
| - | tutorial.conf | + | |
| - | Et ajouter | + | Et ajoutez |
| < | < | ||
| Ligne 193: | Ligne 195: | ||
| Que signifie tout cela ? | Que signifie tout cela ? | ||
| - | • Apache écoute sur le port 80 (voir ci dessous) | + | • Apache écoute sur le port 80 (voir ci-dessous). |
| - | • Le nom du serveur est celui de notre site | + | • Le nom du serveur est celui de notre site. |
| • DocumentRoot est le chemin de l' | • DocumentRoot est le chemin de l' | ||
| • ErrorLog est le chemin de l' | • ErrorLog est le chemin de l' | ||
| Ligne 232: | Ligne 234: | ||
| To scan other port ranges, you can use the -p option (ex: nmap -p 2000-3000 localhost).** | To scan other port ranges, you can use the -p option (ex: nmap -p 2000-3000 localhost).** | ||
| - | Nous devons donc créer les dossiers suivants | + | Nous devons donc créer les chemins vers ces dossiers |
| - | sudo mkdir -p | + | sudo mkdir -p / |
| - | / | + | |
| - | tutorial/ | + | |
| - | sudo mkdir -p | + | sudo mkdir -p / |
| - | / | + | |
| - | tutorial/ | + | |
| - | Et s' | + | Et s' |
| sudo chmod -R 755 / | sudo chmod -R 755 / | ||
| + | |||
| Et enfin mettre le site en ligne : | Et enfin mettre le site en ligne : | ||
| - | sudo a2ensite iceberg-tutorial.conf | + | |
| - | Si nous essayons d' | + | sudo a2ensite iceberg-tutorial.conf |
| - | Par défaut, Apache cherche un fichier nommé index.html – créons le : | + | |
| - | sudo vi / | + | Si nous essayons d' |
| + | |||
| + | Par défaut, Apache cherche un fichier nommé index.html – créons-le : | ||
| + | |||
| + | sudo vi / | ||
| Tapons par exemple « Hello there » puis fermons et enregistrons. En rafraîchissant la page, vous devriez maintenant voir quelque chose du genre : | Tapons par exemple « Hello there » puis fermons et enregistrons. En rafraîchissant la page, vous devriez maintenant voir quelque chose du genre : | ||
| + | |||
| Quelques notes rapides sur les ports TCP | Quelques notes rapides sur les ports TCP | ||
| - | Nous avons déjà abordé les ports TCP lors de notre précédent article. Un excellent outil pour déterminer quels sont les ports ouverts est nmap. Pour scanner les 1 000 premiers ports, tapez : | + | |
| - | sudo nmap localhost | + | Nous avons déjà abordé les ports TCP lors de notre précédent article. Un excellent outil - pour déterminer quels sont les ports ouverts |
| + | |||
| + | sudo nmap localhost | ||
| et vous verrez quels sont les ports ouverts. | et vous verrez quels sont les ports ouverts. | ||
| - | Ici les ports 22 (SSH) et 80 (http) sont ouverts | + | |
| + | Ici les ports 22 (SSH) et 80 (http) sont ouverts, comme prévu. | ||
| Pour scanner d' | Pour scanner d' | ||
| Ligne 275: | Ligne 285: | ||
| Sites virtuels | Sites virtuels | ||
| - | Il est possible d' | + | |
| - | On peut donc avoir plusieurs fichiers de configuration dans le dossier / | + | Il est possible d' |
| + | |||
| + | On peut donc avoir plusieurs fichiers de configuration dans le dossier / | ||
| Par exemple (souvenons-nous que pour des questions de maintenance, | Par exemple (souvenons-nous que pour des questions de maintenance, | ||
| - | iceberg-tutorial.conf | + | |
| - | whatever-site.conf | + | iceberg-tutorial.conf |
| - | Si le site original | + | ... DocumentRoot / |
| + | |||
| + | whatever-site.conf | ||
| + | ... DocumentRoot / | ||
| + | |||
| + | Si l'URL voulu à l' | ||
| **Security | **Security | ||
| Ligne 292: | Ligne 310: | ||
| Sécurité | Sécurité | ||
| - | À quoi rimerait le paramétrage d'un serveur | + | À quoi rimerait le paramétrage d'un serveur |
| - | Apache est un logiciel | + | |
| - | Souvenez-vous toutefois que la sécurité n'est pas à toute épreuve | + | Apache est un logiciel |
| + | |||
| + | Souvenez-vous toutefois que la sécurité n'est pas à toute épreuve, c'est simplement un facteur limitant | ||
| **Out of the box security | **Out of the box security | ||
| Ligne 332: | Ligne 352: | ||
| Sécurité par défaut | Sécurité par défaut | ||
| - | Par « par défaut » j' | + | Par « par défaut » j' |
| - | ServerTokens Prod ServerSignature Off | + | |
| - | FileETag None TraceEnable off Timeout 60 | + | ServerTokens Prod |
| + | ServerSignature Off | ||
| + | |||
| + | FileETag None | ||
| + | TraceEnable off | ||
| + | Timeout 60 | ||
| < | < | ||
| - | | + | |
| - | AllowOverride None | + | AllowOverride None |
| - | Order deny, | + | Order deny, |
| - | < | + | |
| - | | + | |
| - | </ | + | deny from all |
| - | </ | + | |
| - | LoadModule headers_module / | + | </ |
| - | Header edit Set-Cookie ^(.*)$ $1; | + | |
| - | Header always append X-Frame-Options SAMEORIGIN | + | LoadModule headers_module / |
| + | |||
| + | Header edit Set-Cookie ^(.*)$ $1; | ||
| + | |||
| + | Header always append X-Frame-Options SAMEORIGIN | ||
| Commentaire rapide sur la signification de tout cela : | Commentaire rapide sur la signification de tout cela : | ||
| - | • ServerToken | + | • ServerTokens |
| - | • TraceEnabled ne permet pas le débogage (une trace additionnelle) | + | • TraceEnabled ne permet pas le débogage (une trace additionnelle) et TimeOut |
| - | • Les ordres concernant le catalogue | + | • Les ordres concernant le Directory (répertoire) |
| - | • Comme expliqué plus haut, on peut facilement améliorer Apache avec des modules. Ici nous demandons à Apache de charger le module headers qui sera utilisé dans deux commandes ci-dessous. (Header Edits… et Header always…) | + | • Comme expliqué plus haut, on peut facilement améliorer Apache avec des modules. Ici nous demandons à Apache de charger le module headers qui sera utilisé dans deux commandes ci-dessous. (Header Edits… et Header always…) de façon à bloquer des attaques de type XSS ou utilisant iFrames. Je ne suis pas spécialiste de ces sujets, ma recommandation serait de copier-coller dans Google la ligne entière (Header Edits… et Header always…) pour plus de détails. |
| **Additional security – module ModSecurity for Apache | **Additional security – module ModSecurity for Apache | ||
| Ligne 360: | Ligne 391: | ||
| There are many websites with all the instructions on how to install ModSecurity and turn on CRS – for all step-by-step instructions, | There are many websites with all the instructions on how to install ModSecurity and turn on CRS – for all step-by-step instructions, | ||
| - | Sécurité supplémentaire – module ModSecurity pour Apache. | + | Sécurité supplémentaire – module ModSecurity pour Apache |
| - | Très courant pour les serveurs Apache (et peut-être pour d' | + | Très courant pour les serveurs Apache (et peut-être pour d' |
| - | Une fois installé, ModSecurity ne fait rien par défaut | + | |
| - | Il y a un tas de sites internet | + | Une fois installé, ModSecurity ne fait rien par défaut, vous devez activer les options dont vous avez besoin. Pour faciliter les choses, des règles communes (appelées aussi CRS – Core Set Rules, ensemble des règles de base) sont disponibles et ont juste besoin d' |
| + | |||
| + | Il y a un tas de sites Internet | ||
| **Cleanup and some statistics | **Cleanup and some statistics | ||
| Ligne 376: | Ligne 409: | ||
| Note that the log file size will continue increasing – so we must clean it up. This very small script (shown on the next page)will count all unique access to the web server and then compress the log. It's a bash job, all lines starting with # are comments. Once the script is created, you can add the script to a cron job to run daily:** | Note that the log file size will continue increasing – so we must clean it up. This very small script (shown on the next page)will count all unique access to the web server and then compress the log. It's a bash job, all lines starting with # are comments. Once the script is created, you can add the script to a cron job to run daily:** | ||
| - | Nettoyage et quelques statistiques. | + | Nettoyage et quelques statistiques |
| - | Le dossier | + | Le dossier / |
| - | Vérifiez | + | |
| - | Nous pouvons aussi obtenir des statistiques | + | Allez voir dans access.log. Vous y verrez |
| - | Remarquez que la taille des fichiers journaux n' | + | |
| + | Nous pouvons aussi obtenir des statistiques | ||
| + | |||
| + | Remarquez que la taille des fichiers journaux n' | ||
| **Final Note – website registration and DNS | **Final Note – website registration and DNS | ||
| Ligne 397: | Ligne 433: | ||
| Note finale – Enregistrement du site et DNS | Note finale – Enregistrement du site et DNS | ||
| - | Une fois que le serveur est monté et que les pages sont prêtes, vous allez probablement enregistrer un nom de site – il est plus facile de s' | + | Une fois que le serveur est monté et que les pages sont prêtes, vous allez probablement enregistrer un nom de site ; il est plus facile de se souvenir |
| - | Pour faire cela, allez sur votre registrar en ligne favori et suivez toutes les étapes (il faudra payer quelque chose – c'est habituellement de l' | + | |
| - | Vous devrez alors créer une entrée à Digital Ocean – c'est le lien qui détermine où doit aller le navigateur | + | Pour faire cela, allez sur votre registrar en ligne favori et suivez toutes les étapes (il faudra payer quelque chose, c'est habituellement de l' |
| - | Toutes les informations sur ces étapes sont très bien expliquées ici : | + | |
| - | https:// | + | Vous devrez alors créer une entrée |
| + | |||
| + | Toutes les informations sur ces étapes sont très bien expliquées ici : https:// | ||
| J' | J' | ||
issue102/tutoriel_2.1447629551.txt.gz · Dernière modification : 2015/11/16 00:19 de erlevo
