Serveur WEB avec APACHE
Présentation du HTTP
Le HTTP (Hypertext Transfer Protocol) est le support de communication pour l’affichage des pages web. Il fonctionne sur un principe client/serveur :
-
Le serveur HTTP (appelé serveur Web) présente des pages internet.
-
Le client se connecte au serveur HTTP via un navigateur WEB (Internet Explorer, Mozilla Firefox, Google Chrome, Safari de macOS ect…)
Le serveur HTTP est en écoute sur le port 80.
Sa variante sécurisée (HTTPS) est en écoute sur le port 443.
Il est possible de modifier ce paramétrage pour placer le serveur WEB en écoute sur un port différent.
HTTP est un protocole peu sûr et ne devrait plus être utilisé.
Le HTTPS fonctionne grâce à des certificats. Un organisme certificateur indépendant assure la validité du site internet consulté. Concrètement, le certificat est déposé sur le serveur Web. Lors de la connexion du client (lorsque vous tapez https://www.lesiteenquestion.com), le certificat est présenté à votre navigateur vous permettant de contrôler l’authenticité du serveur WEB (il est bien celui qu’il prétend être).
Notez qu’il est possible de générer des certificats auto-signés (auquel cas, l’organisme certificateur est nous même), mais cette solution est un peu bancale et les navigateurs modernes peuvent considérer que le niveau de sécurité n’est, de fait, pas satisfaisant, il conviendra alors de gérer les exceptions de sécurité au sein du navigateur pour autoriser l’accès au site concerné.
En plus, le HTTPS crypte les échanges entre le serveur et le client de telle sorte qu’un tiers ne puisse pas consulter le contenu des échanges.
Le serveur WEB communique avec d’autres serveurs
Le serveur WEB est capable, en fonction du paramétrage et des modules qui y sont installés, de communiquer avec divers autres serveurs (moteur tomcat pour des applications java, serveurs de bases de données, autres serveurs web).
Un même serveur WEB peut héberger différents sites, et être en écoute sur différents ports (Le serveur WEB apache utilise la notion de « virtual host » pour segmenter les différents sites WEB.
Pages Statiques et Pages Dynamiques
Les pages Web statiques sont des pages dont le contenu est figé, il est invariable, c’est typiquement le cas des pages au format html
Les pages Web dynamique offrent plus de souplesse, et permettent d’afficher un contenu différent, adapté selon les particularités du navigateur du client par exemple, ou des choix de personnalisation effectué par l’internaute. Un site web dynamique utilise par exemple des pages en php. , l’accès à des bases de données pour enregistrer des données saisies par l’utilisateur, ou gérer son authentification (pensez aux forums de discutions, ou bien au commentaires qu’il est possible de laisser sur certains sites internets de type blog par exemple, ou bien encore les sites marchands vous proposant des articles, et proposant un système de paiement en ligne).
Exemple de serveur WEB avec APACHE.
Apache est l’un des serveurs WEB les plus connus. Véritable couteau suisse, il est capable de s’adapter à tout un tas de besoin, allant de l’hébergement d’un site internet tout à fait classique, à un système de serveur mandataire ou mandataire inverse, la réécriture d’url, il gère bien sur le HTTPS (mod_ssl), l’interfaçage avec Tomcat (workers, jkmount), intègre des fonctions de loadbalancing (répartition de charge entre plusieurs serveurs), supporte le php, son nombre de modules d’extension est impressionnant.
Le combo dont l’acronyme est LAMP pour Linux (système d’exploitation) / Apache (Serveur Web) / Mysql (Base de données)/ Php (langage de pages web dynamiques) est particulièrement prisé par les développeurs de sites internet. C’est une solution pleinement open source et qu’il est possible d’utiliser sans acheter de licence, qui à fait ses preuves.

Présentation du Proxy et Reverse-Proxy
Les serveurs Proxy et les serveurs Reverse-Proxy peuvent être considérés comme des organes de sécurité dans la mesure où il concentrent et permettent également de contrôler les sorties pour l’un, et les entrées pour l’autre, de certains flux internet. Ce sont des machines particulièrement sensibles de part leur exposition au réseau Internet.
On appellera réseau interne le réseau local, et réseau externe le réseau internet.
Le serveur Proxy
En francais, serveur mandataire ou bien encore passerelle.
Son rôle est double :
-
Point de sortie des postes de travails d’un réseau pour consulter des sites internet
-
Filtrage des sites internet autorisés par ses clients
Concrètement, le serveur mandataire dispose d’un accès sur Internet et d’un accès au réseau interne. Les machines du réseau internet restent donc isolées d’internet, elles ne peuvent être jointes depuis un équipement situé sur internet, seul le serveur proxy est exposé.
Naturellement, le serveur proxy disposera de tout un tas de services visant à le protéger des attaques diverses liées à cette exposition.
Les navigateurs des postes de travails sont configurés pour interroger le serveur mandataire pour chaque demande de consultation de site internet (requêtes http), le serveur mandataire effectue la transaction et délivre le contenu demandé au poste de travail, il agit en intermédiaire, à l’image du passe-plat d’un restaurant qui permet au cuisinier de déposer une assiette, et au serveur de la récupérer sans que les deux n’entrent en contact.
Le serveur proxy se plaçant en intermédiaire, permet à un utilisateur du réseau interne d’accéder à un serveur du réseau externe (internet).

Nous avons parlé ici de serveur web, mais le proxy peut gérer d’autres protocoles (par exemple le ftp)
Le serveur reverse-proxy
On cherche à se protéger les demandes de connexion web entrante. Typiquement cela veut dire que l’on dispose d’un ou plusieurs sites internet, mais que l’on ne souhaite pas que les machines hébergeant ces sites soient directement exposées au réseau internet. Souvent, les sites internet évolués sont composés de plusieures briques, on peut imaginer un cas simple consituté d’un 1 serveur web et 1 serveur de base de données (bdd). Nous n’avons pas envie que le serveur de base de données soit joignable depuis internet, seul le serveur web doit pouvoir communiquer avec lui.
Le serveur mandataire inverse sera le seul exposé sur internet et donc joignable par les équipements situés en dehors du réseau interne. Il recevra les requêtes extérieures, puis les transmettra au serveur WEB, qui en fonction des besoins, communiquera avec le serveur de base de donnée.
Le serveur proxy inverse se plaçant en intermédiaire, permet à un utilisateur d’internet d’accéder indirectement aux ressources d’un serveur du réseau interne.

Dans le cas ci dessus, le serveur mandataire à accès au réseau Internet, et également au réseau interne pour contacter le serveur web. Le serveur web lui, n’a accès qu’au réseau interne, et peut contacter à la fois le serveur mandataire et le serveur BDD. Le serveur BDD lui, ne vois que le serveur WEB.
Nous avons parlé ici de serveur web, mais le reverse proxy peut gérer d’autres protocoles (par exemple le ftp)
Présentation de SSH
La vocation de SSH (Secure Shell) est de garantir une connexion sécurisée entre deux machines, en chiffrant les échanges. Cela s’appuie sur un couple clé privé/ clé publique.
Le protocole SSH offre la possibilité de créer un tunnel sécurisé pour faire transiter des flux qui, de base, ne le sont pas (principe des transferts de port TCP).
Le port 22 est utilisé par défaut
SSH vous permet de vous connecter, via votre client SSH, à distance à une autre machine qui disposera d’un serveur SSH. Vous aurez ainsi accès à un terminal en mode texte vous permettant de piloter la machine distante de la même manière que si vous étiez physiquement devant l’écran de la machine.
SSH vous offre également la possibilité de faire ce que l’on appelle du X11 forwarding, appelé aussi export display (déport d’affichage). Concrètement, cela vous permet de lancer une application graphique présente sur le poste distant à traver votre connexions en mode texte.
Enfin, plusieurs outils et services s’appuient sur SSH, on peut citer par exemple
Le FTP, un protocole de transfert de fichier, peut y être encapsulé (SFTP).
Scp permet de faire de la copie de fichier à l’image de la commande cp, mais à travers ssh, pour récupérer ou déposer un fichier distant.
Présentation du DNS et du DHCP
De part leur fonctions complémentaires, à savoir la gestion des adresses IP d’un réseau, ces deux services sont fréquemment associés sur un même serveur sur les réseaux de taille modeste. On les dissocie généralement lorsque la charge induite par le nombre de connexion des client est trop forte pour être assuré par le serveur en question.
Présentation du DNS
Le serveur DNS (Domain Name System) a un rôle essentiel, il permet la résolution d’un nom de domaine.
La communication entre ordinateurs sur un réseau s’appuie sur un protocole. Le protocole TCP/IP est le protocole le plus répandu, et c’est celui utilisé sur Internet. Chaque équipement devant communiquer dispose d’une Adresse IP, et c’est cette adresse IP (IP = Internet Protocol) qui permet à l’ordinateur A de joindre l’ordinateur B par exemple.
Alors, comment se fait il que nous saisissons des urls (Uniforme Resource Locator) lorsque l’on navigue sur internet, par exemple www.yahoo.fr ? Et bien en réalité, un service se charge de convertir le nom de domaine (www.yahoo.fr) en adresse IP, ce service s’appelle le DNS.
Nous allons donc voir ensemble comment fonctionne un serveur DNS, celui qui permet de rendre cette conversion de nom de domaine en adresse IP
Sur internet, le DNS repose sur un fonctionnement hiérarchique (de multiples serveurs sont connectés entre eux de manière structurée)
Fonctionne en général en UDP sur le port 53. L’UDP (User Datagram Protocol) est un protocole de communication moins lourd que TCP mais qui ne gère pas la correction des erreurs de transmission.
Le serveur DNS gère ce que l’on appelle des zones, et pour les zones dont il n’a pas la charge, il peut transmettre la demande (la requête) à un autre serveur DNS, et ainsi de suite jusqu’à ce que la demande atteigne le serveur DNS capable de répondre à la requête formulée.
Le dns offre deux fonctions :
La résolution simple : Je connais le nom d’une machine, je souhaite obtenir son IP
La résolution inverse : Je connais l’adresse IP d’une machine, je souhaite obtenir son nom
En l’absence de DNS dans une infrastructure, ou pour des besoin particulier, il est possible d’utiliser une fonction rudimentaire du système d’exploitation (Windows, Linux, mac Os…) à travers l’utilisation d’un fichier text nome hosts, dans lequel on renseignera Ips et noms de machines associées afin que l’ordinateur soit capable de contacter les autres machines du réseau via leurs noms.
Sous Linux, l’un des plus célèbres serveur DNS se nomme BIND, le nom du service est named.
La configuration se passe à deux endroits :
Le fichier named.conf où l’on définit la configuration générale, et où sont listées les zones prises en charge.
Le répertoire des zones (ex: /var/named/) où l’on crée des fichiers de zones, qui contiennent les enregistrement dns (c’est à dire les noms de machines et leur adresse IP)
Pour sécuriser son installation, il est possible de créer des serveurs DNS secondaires (qui récupèrent automatiquement les zones auprès du serveur DNS principal). Ainsi, en cas de défaillance du serveur Principal, le serveur "secondaire" pourra répondre aux requêtes, on peut même imaginer que seul le serveur secondaire soit accessible aux clients.
Il existe d’autres solutions comme la mise en place d’un fail-over (un serveur devient injoignable, un second prend instantanément le relais), de round-robin (plusieurs serveurs sont sollicités à tour de rôle pour répartir la charge de connexions), ou de load-balancing (un principe de répartition de charge qui permet de diriger connexion en fonction de la charge du serveur).
Il existe des outils permettant d’interroger un serveur DNS.
Sous Linux, nslookup (fournit par le paquet bind-utils) et dig sont les plus courants.
Présentation du DHCP
DHCP est construit sur un modèle client/serveur et s’appuie sur un réseau TCP/IP.
Le serveur DHCP attribue à ses clients une adresse réseau (adresse IP) et leur délivre dynamiquement les paramètres nécessaires afin d’automatiser leur configuration réseau (tel que les adresses des serveurs DNS et de la passerelle par défaut).
DHCP est composé de deux parties :
-
un protocole permettant, depuis le serveur DHCP, de délivrer les paramètres de configuration spécifiques d’un hôte (client dhcp).
-
un mécanisme de gestion des adresses IP (on parlera de plage d’adresses IP), permettant l’attribution d’adresses IP aux hôtes.
Le communication vers le serveur DHCP se fait sur le port 67
La communication vers le client DHCP se fait sur le port 68
Imaginons un hôte (un ordinateur par exemple) qui est connecté pour la première fois à un réseau.
Cet hôte ne dispose pas encore de configuration réseau pour communiquer avec les autres hôtes du réseau.
DHCP DISCOVER
La première chose que va faire notre ordinateur va être de déterminer qui est capable de lui fournir une configuration réseau. Il va donc émettre en broadcast (sur une adresse spécifique permettant de diffuser à l’ensemble des hôtes du réseau) une requête de type DHCP DISCOVER (découverte DHCP), Cette requête contient plusieurs information dont l’adresse MAC (adresse physique unique de la carte réseau de l’ordinateur).
Cette première requête va donc être envoyé à tous les équipements du réseau. Ceux qui ne sont pas concernés vont tout simplement ignorer le packet (la requête).
DHCP OFFER
Lorsque la requête atteins le serveur DHCP, ce dernier, si il dispose d’une adresse disponible, va lui renvoyer, grâce à son adresse MAC, une offre de configuration DHCP OFFER contenant l’adresse IP proposée,le masque de sous-réseau, et sa propre adresse IP.
DHCP REQUEST
Le client va alors diffuser sur le réseau une nouvelle requête DHCP REQUEST pour demander l’affectation de cette adresse, cette requête contient les éléments du DHCP OFFER.
DHCP ACK
Le serveur DHCP envoie enfin une dernière requête (DCHP ACK), assignant à l’hôte sont Adresse ip, son masque de sous-réseau, le bail pour cette adresse, et les autres éléments de configuration tels que l’adresse de la passerelle par défaut et du ou des serveur DNS.(reconnaissance)
Pour résumer :
1 – le client demande qui peut lui fournir une IP ( DHCP DISCOVER )
2 – le serveur répond par une proposition ( DHCP OFFER )
3 – le client demande l’affectation ( DHCP REQUEST )
4 – le serveur valide l’affectation ( DHCP ACK )
C’est ce même mécanisme qui est à l’œuvre lorsque vous branchez votre ordinateur à votre box internet pour la première fois (la plupart des box interne délivrer aujourd’hui un service de serveur DHCP). La box internet elle même récupère sa propre IP auprès du serveur DHCP de votre fournisseur d’accès Internet. Elle est donc client DHCP d’une part, et serveur DHCP (pour votre réseau local, c’est à dire votre réseau domestique) d’autre part.
La gestion des adresses IP et des plages IP
Le serveur DHCP gère des plages d’adresses qu’il délivre de manière automatique.
Il est également possible pour l’administrateur de définir des plages ou des adresses d’exclusion afin de paramétrer des adresse IP fixes (on les exclues du Bail dhcp qui définit notamment, le temps d’allocation d’un adresse IP à un client) directement sur les hôtes concernés, ou bien de définir sur le serveur DHCP des plage d’adresses réservées, généralement en y appliquant la MAC adresse de la machine cible, ce qui permet de garder une gestion centralisée (c’est à dire uniquement sur le serveur DHCP)
Dans le cas ou le serveur DHCP et les clients ne sont pas sur le même réseau, on procédera à la mise en place d’un relai DHCP (c’est à dire un autre serveur) ayant une pâte sur chaque réseau, qui assurera la communication entre le client et le serveur.
La notion de BAIL
Comme nous l’avons vu, le serveur DHCP octroie une adresse IP pour une durée limitée (bail).
Avant l’échéance du bail, le client va demander son renouvellement. Au bout de plusieurs tentatives sans réponse, il demandera, via le mécanisme décrit plus haut, une nouvelle affectation d’adresse IP. Si il n’obtient pas de nouvelle adresse, il perdra son adresse IP et ne pourra plus accéder au réseau.
Dans une infrastructure d’entreprise, il y a généralement plusieurs serveurs DHCP (synchronisés entre eux), ce qui évite ce genre de problème de serveur injoignable.
Dans ce cas de figure, le premier serveur DHCP qui répond via DHCP OFFER au client est celui qui sera retenu.
On parlera d’adresse IP dynamique lorsqu’elle est attribuée par un serveur DHCP et soumise à un bail.
On parlera d’adresse IP statique (ou adresse IP fixe) lorsqu’elle est indiquée directement dans la configuration de l’hôte ou bien lorsqu’elle a été spécifiquement configurée sur le serveur DHCP par l’administrateur de sorte que son attribution ne puisse être délivré à un autre hôte du réseau.
Présentation du FTP
Le FTP (File Transfer Protocol) permet le transfert de données à travers le réseau, en se basant sur le protocole TCP/IP
FTP est construit sur un modèle client/serveur : Le serveur FTP fait office d’espace de stockage, le client se connecte au serveur FTP pour y déposer ou récupérer des fichiers.
Historiquement, Le protocole FTP utilise le port 21 (port en écoute côté serveur ) pour l’établissement des connexion et les commandes, et le port 20 pour le transfert des données, mais en pratique, c’est bien souvent uniquement le port 21 qui est utilisé pour les deux fonctions
Deux modes de transferts : Binaire ou ASCII
Il existe deux modes de transfert, Binaire ou ASCII. Le mode Binaire sera à privilégié la plupart du temps (le mode ascii ne concerne que des fichier texte).
Connexion authentifiée et modes actif ou passif
Le protocole FTP prévoie un système d’authentification sommaire par couple utilisateur/mot de passe.
Il existe deux modes de connexion :
actif : le client choisi le port utilisé pour le transfert des données.
passif : le serveur choisi le port utilisé pour le transfert des données.
Des échanges plus ou moins sécurisés
FTP n’inclus pas de mécanisme de chiffrement, ce qui veut dire que les communications entre le client et le serveur sont transmises en clair sur le réseau, ce qui pose un vrai problème de sécurité.
Pour cette raison, on utilisera de préférence :
-
FTPS (File Transfer Protocol Secure), s’appuyant sur le protocole TLS (Transport Layer Security), qui assure le chiffrement des échanges.
-
SFTP (SSH File Transfert Protocol), s’appuyant sur une encapsulation SSH des échanges. J’explique le principe de SSH dans un autre article, et vous invite donc à le consulter pour approfondir ce sujet.
A noter également une variante de FTP, nommé TFTP (Trivial File Transfert Protocol), qui fonctionne en UDP sur le port 69.
Ce protocole est encore moins sécurisé que FTP: il n’utilise pas de mécanisme d’authentification ou de chiffrement, et s’appuye sur le protocole UDP (User Datagram Protocol), qui ne comporte pas de mécanisme de CRC (contrôle et correction d’erreurs de paquets).
TFTP est utilisé dans des cas très particuliers (nous verrons sont utilisation dans un article sur l’installation d’un système d’exploitation à distance, en s’appuyant notamment sur BOOTP). Il faut simplement savoir que ce protocole existe.