Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
elearning:workbooks:lpic:22:450:l102 [2022/11/02 06:37] – created adminelearning:workbooks:lpic:22:450:l102 [2022/11/22 13:43] (Version actuelle) admin
Ligne 58: Ligne 58:
       * LAB #13 - Améliorer l'utilisation de la Mémoire du Serveur avec mod_worker       * LAB #13 - Améliorer l'utilisation de la Mémoire du Serveur avec mod_worker
     * **Le Serveur Mandataire Squid**     * **Le Serveur Mandataire Squid**
-      * Installation +      * LAB #14 - Installation et Configuration de Squid 
-      * Configuration +      * LAB #15 - L'Extension squidGuard 
-      * L'Extension squidGuard +      * LAB #16 - Dansguardian 
-      * T.P. #1 +    * **Le Serveur HTTP Nginx** 
-      * Créer une whitelist +      * LAB #17 - Configuration d'un Proxy Inverse 
-      * Dansguardian+      * LAB #18 - Configuration d'un Serveur PHP 
 +    * **Ne Pas Oublier** 
 +      * Server Name Indication 
 +      * Redirects et Alias
  
 =====Le Serveur HTTP Apache===== =====Le Serveur HTTP Apache=====
Ligne 89: Ligne 92:
  
 =====Présentation et Configuration d'Apache sous CentOS 7===== =====Présentation et Configuration d'Apache sous CentOS 7=====
 +
 +<WRAP center round important 60%>
 +**Important** : Demandez à votre formateur de restaurer le snapshot d'origine de votre VM CentOS 7.
 +</WRAP>
  
 ====Préparation==== ====Préparation====
Ligne 6278: Ligne 6285:
  
  
-=====Installation=====+====LAB #14 - Installation et Configuration de Squid====
  
 Utilisez yum : Utilisez yum :
Ligne 6347: Ligne 6354:
 squid          0:arrêt 1:arrêt 2:arrêt 3:marche 4:marche 5:marche 6:arrêt squid          0:arrêt 1:arrêt 2:arrêt 3:marche 4:marche 5:marche 6:arrêt
 </code> </code>
- 
-====Options de la commande squid==== 
  
 Les options de cette commande sont : Les options de cette commande sont :
Ligne 6378: Ligne 6383:
 </code> </code>
  
-=====Configuration===== +Créez maintenant un fichier squid.conf sans commentaires :
- +
-Créez un fichier squid.conf sans commentaires :+
  
 <code> <code>
Ligne 6540: Ligne 6543:
 </code> </code>
  
- +====LAB #15 - L'Extension squidGuard====
-=====L'Extension squidGuard=====+
    
 **squidGuard** est une **extension** pour le serveur proxy **Squid**. **squidGuard** est un **redirecteur** qui permet de filtrer l'accès à des sites suivant des règles en affichant à leur place une ou plusieurs pages html définies par root. **squidGuard** est une **extension** pour le serveur proxy **Squid**. **squidGuard** est un **redirecteur** qui permet de filtrer l'accès à des sites suivant des règles en affichant à leur place une ou plusieurs pages html définies par root.
Ligne 7181: Ligne 7183:
  
   [root@centos6 squidguard]# chown apache:apache /var/www/html/access-denied.html   [root@centos6 squidguard]# chown apache:apache /var/www/html/access-denied.html
- 
-====Options de la commande squidguard==== 
  
 Les options de cette commande sont : Les options de cette commande sont :
Ligne 7200: Ligne 7200:
 </code> </code>
  
-=====T.P. #1===== +====Créer une whitelist====
- +
-<WRAP center round important> +
-Configurez votre navigateur afin d'utiliser le proxy 127.0.0.1 port 3128. +
-</WRAP> +
- +
-=====Créer une whitelist=====+
  
 Trouver le site de google.de dans les fichiers de squidGuard est une tâche fastidieuse, d'autant plus qu'il est fort probable que d'autres sites peuvent se trouver dans une des bases par erreur. Trouver le site de google.de dans les fichiers de squidGuard est une tâche fastidieuse, d'autant plus qu'il est fort probable que d'autres sites peuvent se trouver dans une des bases par erreur.
Ligne 7419: Ligne 7413:
 </code> </code>
  
-=====Dansguardian=====+====LAB #16 - Dansguardian====
  
 Squid ne peut pas contrôler le //contenu// des pages web. Pour faire ceci, il faut utiliser un logiciel de filtrage du contenu tel **Dansguardian** : Squid ne peut pas contrôler le //contenu// des pages web. Pour faire ceci, il faut utiliser un logiciel de filtrage du contenu tel **Dansguardian** :
Ligne 7482: Ligne 7476:
  
 Configurez votre navigateur afin d'utiliser le proxy 127.0.0.1 port 8080. Testez maintenant votre accès à Internet. Configurez votre navigateur afin d'utiliser le proxy 127.0.0.1 port 8080. Testez maintenant votre accès à Internet.
 +
 +=====Le Serveur HTTP Nginx=====
 +
 +====Présentation et Configuration de Nginx sous Debian 11====
 +
 +Commencez par vous connectez à votre VM Debian 11 au 10.0.2.46.
 +
 +====Présentation====
 +
 +Nginx est un logiciel libre de serveur Web ainsi qu'un proxy inverse écrit par Igor Sysoev, dont le développement a débuté en 2002 pour les besoins d'un site russe à très fort trafic (Rambler). La documentation est disponible dans plusieurs langues. 
 +
 +NGINX Inc a été racheté par F5 Networks le 11 mars 2019, pour 670 millions de dollars.
 +
 +Ses sources sont disponibles sous une licence de type BSD.
 +
 +====LAB #17 - Configuration d'un Proxy Inverse====
 +
 +Installez nginx et gunicorn :
 +
 +<code>
 +root@debian11:~# apt install nginx gunicorn curl -y
 +</code>
 +
 +<WRAP center round important 60%>
 +**Important** : Gunicorn est un Python WSGI server.
 +</WRAP>
 +
 +Créez le fichier **/etc/nginx/sites-available/reverse-proxy.loc** :
 +
 +<code>
 +root@debian11:~# vi /etc/nginx/sites-available/reverse-proxy.loc
 +root@debian11:~# cat /etc/nginx/sites-available/reverse-proxy.loc
 +server {
 +    listen 80;
 +    listen [::]:80;
 +
 +    server_name reverse-proxy.loc www.reverse-proxy.loc;
 +        
 +    location / {
 +        proxy_pass http://127.0.0.1:8000;
 +        include proxy_params;
 +    }
 +}
 +</code>
 +
 +<WRAP center round important 60%>
 +**Important** : La directive **proxy-pass** indique l'URL de Gunicorn.
 +</WRAP>
 +
 +Consultez le contenu du fichier **/etc/nginx/proxy_params** :
 +
 +<code>
 +root@debian11:~# cat /etc/nginx/proxy_params
 +proxy_set_header Host $http_host;
 +proxy_set_header X-Real-IP $remote_addr;
 +proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
 +proxy_set_header X-Forwarded-Proto $scheme;
 +</code>
 +
 +Vérifiez la syntaxe de votre fichier **/etc/nginx/nginx.conf** :
 +
 +<code>
 +root@debian11:~# nginx -t
 +nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
 +nginx: configuration file /etc/nginx/nginx.conf test is successful
 +</code>
 +
 +Créez le lien symbolique pour **reverse-proxy.loc** dans le répertoire **/etc/nginx/sites-enabled/** :
 +
 +<code>
 +root@debian11:~# ln -s /etc/nginx/sites-available/reverse-proxy.loc /etc/nginx/sites-enabled/
 +</code>
 +
 +Editez le fichier **/etc/hosts** :
 +
 +<code>
 +root@debian11:~# vi /etc/hosts
 +root@debian11:~# cat /etc/hosts
 +127.0.0.1       localhost
 +10.0.2.46       debian11.ittraining.loc debian11
 +10.0.2.46       reverse-proxy.loc
 +
 +# The following lines are desirable for IPv6 capable hosts
 +::1     localhost ip6-localhost ip6-loopback
 +ff02::1 ip6-allnodes
 +ff02::2 ip6-allrouters
 +</code>
 +
 +Redémarrez le serveur nginx :
 +
 +<code>
 +root@debian11:~# systemctl restart nginx
 +root@debian11:~# systemctl status nginx
 +● nginx.service - A high performance web server and a reverse proxy server
 +     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabl>
 +     Active: active (running) since Tue 2022-11-22 13:03:56 CET; 14s ago
 +       Docs: man:nginx(8)
 +    Process: 1927 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on;>
 +    Process: 1928 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=ex>
 +   Main PID: 1929 (nginx)
 +      Tasks: 9 (limit: 19150)
 +     Memory: 7.7M
 +        CPU: 30ms
 +     CGroup: /system.slice/nginx.service
 +             ├─1929 nginx: master process /usr/sbin/nginx -g daemon on; master_proces>
 +             ├─1930 nginx: worker process
 +             ├─1931 nginx: worker process
 +             ├─1932 nginx: worker process
 +             ├─1933 nginx: worker process
 +             ├─1934 nginx: worker process
 +             ├─1935 nginx: worker process
 +             ├─1936 nginx: worker process
 +             └─1937 nginx: worker process
 +
 +Nov 22 13:03:56 debian11 systemd[1]: nginx.service: Succeeded.
 +Nov 22 13:03:56 debian11 systemd[1]: Stopped A high performance web server and a reve>
 +lines 1-23
 +</code>
 +
 +Créez le fichier une fonction Python qui retournera **Hello World!** en tant que réponse HTTP :
 +
 +<code>
 +root@debian11:~# vi test.py
 +root@debian11:~# cat test.py
 +def app(environ, start_response):
 +    start_response("200 OK", [])
 +    return iter([b"Hello, World!"])
 +</code>
 +
 +Lancez Gunicorn :
 +
 +<code>
 +root@debian11:~# gunicorn --workers=2 test:app &
 +[1] 1944
 +root@debian11:~# [2022-11-22 13:05:38 +0100] [1944] [INFO] Starting gunicorn 20.1.0
 +[2022-11-22 13:05:38 +0100] [1944] [INFO] Listening at: http://127.0.0.1:8000 (1944)
 +[2022-11-22 13:05:38 +0100] [1944] [INFO] Using worker: sync
 +[2022-11-22 13:05:38 +0100] [1945] [INFO] Booting worker with pid: 1945
 +[2022-11-22 13:05:39 +0100] [1946] [INFO] Booting worker with pid: 1946
 +[Enter]
 +root@debian11:~#
 +</code>
 +
 +Consultez le site **reverse-proxy.loc** : 
 +
 +<code>
 +root@debian11:~# curl http://reverse-proxy.loc
 +Hello, World!root@debian11:~# 
 +root@debian11:~#
 +</code>
 +
 +====LAB #18 - Configuration d'un Serveur PHP====
 +
 +Commencez par installe **php** et **php-fpm** :
 +
 +<code>
 +root@debian11:~# apt install php php-fpm -y
 +</code>
 +
 +Vérifiez la version de PHP installée :
 +
 +<code>
 +root@debian11:~# php -version
 +PHP 7.4.33 (cli) (built: Nov  8 2022 11:40:37) ( NTS )
 +Copyright (c) The PHP Group
 +Zend Engine v3.4.0, Copyright (c) Zend Technologies
 +    with Zend OPcache v7.4.33, Copyright (c), by Zend Technologies
 +</code>
 +
 +Modifiez maintenant le fichier **/etc/nginx/sites-available/reverse-proxy.loc**
 +
 +<code>
 +root@debian11:~# vi /etc/nginx/sites-available/reverse-proxy.loc
 +root@debian11:~# cat /etc/nginx/sites-available/reverse-proxy.loc
 +server {
 +    listen 80;
 +    server_name reverse-proxy.loc;
 +    root /var/www/html;
 +
 +    index index.html index.htm index.php;
 +
 +    location / {
 +        try_files $uri $uri/ =404;
 +    }
 +
 +    location ~ \.php$ {
 +        include snippets/fastcgi-php.conf;
 +        fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
 +     }
 +
 +    location ~ /\.ht {
 +        deny all;
 +    }
 +
 +}
 +</code>
 +
 +<WRAP center round important 60%>
 +**Important** : Notez que la directive **root** définit le chemin vers les pages du contenu du site et que la directive **listen** spécifie le port d'écoute du serveur.
 +</WRAP>
 +
 +Créez le fichier **/var/www/html/info.php** :
 +
 +<code>
 +root@debian11:~# vi /var/www/html/info.php
 +root@debian11:~# cat /var/www/html/info.php
 +<?php
 +phpinfo();
 +?>
 +</code>
 +
 +Redémarrez le serveur nginx pour une pris en compte directe des modifications :
 +
 +<code>
 +root@debian11:~# systemctl restart nginx
 +root@debian11:~# systemctl status  nginx
 +● nginx.service - A high performance web server and a reverse proxy server
 +     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabl>
 +     Active: active (running) since Tue 2022-11-22 13:43:30 CET; 9s ago
 +       Docs: man:nginx(8)
 +    Process: 9799 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on;>
 +    Process: 9800 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=ex>
 +   Main PID: 9801 (nginx)
 +      Tasks: 9 (limit: 19150)
 +     Memory: 7.9M
 +        CPU: 33ms
 +     CGroup: /system.slice/nginx.service
 +             ├─9801 nginx: master process /usr/sbin/nginx -g daemon on; master_proces>
 +             ├─9802 nginx: worker process
 +             ├─9803 nginx: worker process
 +             ├─9804 nginx: worker process
 +             ├─9805 nginx: worker process
 +             ├─9806 nginx: worker process
 +             ├─9807 nginx: worker process
 +             ├─9808 nginx: worker process
 +             └─9809 nginx: worker process
 +
 +Nov 22 13:43:30 debian11 systemd[1]: Starting A high performance web server and a rev>
 +Nov 22 13:43:30 debian11 systemd[1]: Started A high performance web server and a reve>
 +root@debian11:~# 
 +</code>
 +
 +Consultez ensuite la page **info.php** : 
 +
 +<code>
 +root@debian11:~# curl http://reverse-proxy.loc/info.php | more
 +  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
 +                                 Dload  Upload   Total   Spent    Left  Speed
 +100 65721    0 65721    0       567<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitiona
 +k      0l.dtd">
 + --:--:-- --:--:-- --:--:--  567k
 +<html xmlns="http://www.w3.org/1999/xhtml"><head>
 +<style type="text/css">
 +body {background-color: #fff; color: #222; font-family: sans-serif;}
 +pre {margin: 0; font-family: monospace;}
 +a:link {color: #009; text-decoration: none; background-color: #fff;}
 +a:hover {text-decoration: underline;}
 +table {border-collapse: collapse; border: 0; width: 934px; box-shadow: 1px 2px 3px #cc
 +c;}
 +.center {text-align: center;}
 +.center table {margin: 1em auto; text-align: left;}
 +.center th {text-align: center !important;}
 +td, th {border: 1px solid #666; font-size: 75%; vertical-align: baseline; padding: 4px
 + 5px;}
 +th {position: sticky; top: 0; background: inherit;}
 +h1 {font-size: 150%;}
 +h2 {font-size: 125%;}
 +.p {text-align: left;}
 +.e {background-color: #ccf; width: 300px; font-weight: bold;}
 +.h {background-color: #99c; font-weight: bold;}
 +.v {background-color: #ddd; max-width: 300px; overflow-x: auto; word-wrap: break-word;
 +}
 +--More--
 +[q]
 +</code>
 +
 +
 +=====Ne Pas Oublier=====
 +
 +====Server Name Indication====
 +
 +Selon **[[https://fr.wikipedia.org/wiki/Server_Name_Indication|Wikipédia]]** :
 +
 +Server Name Indication (SNI), qui peut se traduire par « indication du nom du serveur », est une extension du protocole TLS1. Avec le protocole SNI, le client indique le nom de l'hôte (hostname) avec lequel il tente de démarrer une négociation TLS. Cela permet au serveur de présenter plusieurs certificats pour la même adresse IP (mais des noms d'hôte différents), et donc de mutualiser des hébergements pour des sites sécurisés en https.
 +
 +Les navigateurs web modernes prennent en charge le SNI2. Lorsque le navigateur ne gère pas le SNI, le serveur fournit le certificat par défaut, et un avertissement au sujet du certificat se produit donc le plus souvent.
 +
 +====Redirects et Alias====
 +
 +Veuillez noter que :
 +
 +  * Les **Redirects** sont traités du côté du **client**,
 +  * Les **Alias** sont traités du côté du **serveur**.
 +
 +
  
 ---- ----
 Copyright © 2022 Hugh Norris Copyright © 2022 Hugh Norris
  
Menu