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