Hébergement - 1/5

Auto-hébergement

Préambule

L'auto-hébergement est un concept qui a pour objectif d'héberger à domicile ses propres services informatiques (serveurs web, bases de données, clouds, messagerie, outils collaboratifs, ...). Les données manipulées restent cantonnées au sein de la cellule familial, freinant ainsi toute exploitation abusive et non souhaitée à des fins commerciales ou étatiques.

Sur la base du principe de "qui peut le moins peut le plus", le concept une fois maîtrisé, peut être étendu au cercle amical voire même au delà en proposant des services d'hébergement de voisinage. Les techniques sont sensiblement les mêmes. Seules les pratiques diffèrent pour délivrer un service de qualité, c'est à dire disponible, fiable et sécurisé.

L'approche développée ici s'appuie sur des logiciels libres, accessibles à tous. Ce guide se veut avant tout didactique, à la portée de tous ceux qui ont quelques prédispositions dans l'utilisation de l'outil informatique. Il comprend un ensemble de tutoriels vérifiés et validés permettant d'installer les services dont nous auront besoin. L'objectif premier consiste à mettre en oeuvre des sites WEB accessibles via Internet. Viendront ensuite l"hébergement de nos données dans un Cloud, l"hébergement de nos messages et l'hébergement de quelques applications comme la visioconférence, la gestion de parc, un wiki, ...

L'objectif est ambicieux.

Prés-requis

Un accès Internet : Cet accès est délivré par un fournisseur d'accès (FAI) tels que Free, Orange, SFR, ... Caractéristiques : une adresse IP fixe, idéalement non partagée. Une liaison Fibre optique voire à minima SDSL pour assurer un débit suffisant. La technologie ADSL peut néanmoins constituer une base suffisante pour une utilisation exclusivement familiale. Free autorise l'adressage IP fixe gratuitement sur demande, ce qui n'est pas le cas de RED-SFR ni même SFR d'ailleurs. Orange monaye cette fonctionnalité à prix d'or.

Un nom de domaine : Le nom de domaine permet d'associer à une adresse IP un nom facilement mémorisable. Utiliser un nom de domaine revient donc à utiliser l'adresse IP qui lui est associée.Pour disposer d'un nom de domaine associé à son adresse IP, il faut souscrire un abonnement annuel auprès d'un registraire tel que gandi.net. Le cout annuel de cet abonnement varie selon le domaine. Pour un ".fr", compter environ 12€ HT par an.

Un certificat de sécurité : Le certificat de sécurité permet de crypter les flux entre 2 machines de telle sorte qu'ils ne puissent pas être interceptés par un tiers. Usuellement, il est porté par le protocole HTTPS qui est matérialisé par l'apparition d'un cadena dans la barre d'adresse des navigateurs. Let'sEncrypt délivre des certificats de sécurité gratuitement. On adoptera ici un certificat générique valable pour l'ensemble du domaine.

Un ordinateur : Cette machine fera office de serveur, c'est à dire qu'elle restera accessible et sous tension 24h/24. La puissance de la machine sera fonction de l'usage qui en sera fait. Néanmoins, l'investissement initial peut resté modéré. Pour exemple, un vieux pentium quadri-core avec 8G de RAM et une capacité de stockage de 2To peut être un bon début. Il permet d'héberger 5 machines virtuelles (1 serveur DNS externe, 1 serveur DNS interne, 2 serveurs Web, 1 serveur de base de données). Une bonne configuration peut s'appuyer sur un processeur INTEL i5 avec 32 Go de RAM et 3To pour le stoskage. Une configuration honorable reposera sur 2 voir idéalement 3 machines serveur (i7, 64 Go RAM, 6To).

Un peu de finance : Il est illusoire de vouloir pratiquer l'auto-hébergement à coût zéro. Il faut donc prévoir une enveloppe financière plus ou moins importante en fonction du matériel déployé et de la qualité du service proposée étant entendu qu'on reste sur le côté "amateur" de la chose. Côté matériel il est possible de se débrouiller en montant soit même son ou ses serveurs. Un boitier d'alimentation correct (150€), une bonne carte mère (200€), un processeur moderne (i9 -> 500€), de la mémoire (64 Go -> 350€) et du stockage (SSD 1 To ->150€, DD 6To -> 300€), il faut compter environ 1700 € pour une configuration qui tient la route. A celà, il faudra ajouter un onduleur (150 €) c'est juste indispensable, un switch (100€) permettant l'agrégation de liens si on dispose de plusieurs machines inter-connectées et enfin, la consommation électrique annuelle. Sur une base de 0,350 KW/h, on arrive à 3000 kw/annuel (350x24x365), ce qui représente une dépense proche de 500€/an et par machine. A celà il peut être prudent de prévoir un budget pour les pièces défectueuses. Au départ, pour limiter les coûts, j'avais lésiné sur le boitier d'alimentation, la mémoire et les disques dur et c'est justement ce qui n'a pas tenu la route. Bilan des courses, la facture s'est alourdie très rapidement passé les deux ans de garantie. Sur la base de mes 4 années d'expérience, le maître mot en la matière c'est plutôt d'acheter des produits de qualité. Pour résumer, l'investissement initial est proche de 2000€ avec une consommation énergétique évaluée à 500€ par an et par machine (base 2020).

Un peu de temps : L'auto-hébergement reste plutôt chronophage notamment au tout début de l'aventure. Il faudra faire face aux opérations de maintenance, renouvellement du domaine (1 fois par an), renouvellement du certificat de sécurité (1 fois tous les 3 mois), mises à jour des systèmes d'exploitation, mises à jour des applicatifs, cybersurveillance, dysfonctionnements matériels et soutien des utilisateurs tiers. Et comme tout bon informaticien qui se respecte, il faudra passer beaucoup de temps pour améliorer le système mis en place de façon à en faire le moins possible.

Fonctionnalités

Résolution de nom interne : Cette fonction assurera la traduction nom/adresse IP des serveurs virtuels sur le réseau local.

Résolution de nom externe : Cette fonction assurera la résolution de noms du domaine et des sous-domaine sur Internet. Les sous-domaines seront utilisés pour héberger plusieurs sites Internet.

Publication Web : Cette fonction  permet de publier des pages WEB. Il est préconisé de concevoir des sites WEB par domaine ; informatique, domotique, mécanique, ... De fait, nous aurons à gerer plusieurs sites WEB et il est même probable qu'un seul serveur ne suffise pas. On prévoiera donc par anticipation l'utilisation de deux serveurs. Cette vision n'est pas anodine. En effet, les navigateurs WEB communiquent essentiellement sur 2 ports par défaut ; le port 80 pour le protocole HTTP et le 443 pour le protocole sécuristé HTTPS. Ces ports sont standardisés, c'est à dire que le navigateur de monsieur tout le monde communique par défaut sur ces deux ports. La Box de notre FAI sera donc paramétrée pour écouter sur ces deux ports et rediriger le flux entrant sur un couple adresse IP/Port unique, ici en l'occurence notre serveur WEB. Un port externe de la box est donc en relation avec un et un seul serveur web. Il est possible de contourner cette restriction en insérant une machine intermédiaire dont le rôle sera d'aiguiller les flux sur le serveur WEB approprié. Ce serveur intermédiaire est appelé "Reverse Proxy". Ce n'est ni plus ni moins qu'un serveur WEB capable de rediriger les flux sur d'autres serveurs WEB, voire aussi sur lui même.

Stockage des données : Cette fonction a pour effet de recueillir, de stocker et d'organiser les données. On distinguera trois types de données : les données WEB issues de la publication des sites Internet, les données applicatives manipulées par des applications telles que GLPI, MANTIS, ... et les données à destination du Cloud. Selon le principe de la séparation des fonctions, on dissociera la publication Web et applicative du stockage des données. De fait, un serveur de base de données dédié à cette fonction s'impose comme une évidence.

Messagerie : C'est de loin le plus compliqué des services à héberger mais c'est aussi celui qui confère le plus de légitimité à notre action. En effet, nos messages sont passés au crible pour identifier nos interlocuteurs et établir notre réseau relationnel. Le contenu de nos messages en dit long sur notre façon d'appréhender les choses.

Infrastructure cible

L'infrastructure cible comprendra un hyperviseur qui gérera plusieurs serveurs virtuels sur une seule machine physique. Sur cet hyperviseur, on hébergera 3 serveurs DNS, 2 serveurs WEB et 1 serveur de bases de données.

Travaux préparatoires

Nous aurons besoin :

  • d'un plan d'adressage IP
  • d'un plan de nommage des VM
  • des caractéristiques des VM.

Plan d'adressage

Différents élements sont à prendre en compte à commencer par les caractéristiques réseaux de la Box de notre FAI. Mais avant d'aller plus loin, une petite appartée s'impose sur les notions de réseaux.

La Box peut être vue comme une porte. Cette porte donne accès d'un côté au monde entier, le réseau WAN (Wide Area Network), c'est à dire le réseau Internet avec tout ses dangers et de l'autre sur la sphère familiale privative, c'est à dire le réseau local. Ce réseau local est appelé LAN (Local Area Network). Il est protégé par des adresses IP non routables, celles qui commencent par 192.168.x.x. Par convention, ces adresses ne peuvent pas circuler sur Internet. Elles sont donc vouées à communiquer entre elles au sein de la sphère privée. C'est pourquoi la porte de la Box côté réseau local possède une adresse du type 192.168.1.X et votre ordinateur et tous les autres appareils (smartphone, téléconnectée, ...) se voient attribuer eux aussi une adresse locale non routable commençant par 192.168.1.X. Ceci étant, vos appareils, malgrés une adresse IP non routable, sont capables de communiquer sur Internet. Il y a donc un truc. Et le truc, c'est la box qui le gère en se faisant passer pour l'appareil qui demande à communiquer sur Internet. Elle remplace l'adresse Ip locale du demandeur par sa propre adresse externe qui elle est routable. Le LAN est encore protégé par un ensemble de verrous qu'il est possible d'ouvrir et de fermer. Ces verrous sont appelés des ports de communication. On les repère par leur numéro (de 0 à 65535). Les 1024 premiers ports sont standardisés, c'est à dire qu'ils ont un usage conventionné. Ainsi le port n°80 est prévu pour véhiculer le flux HTTP par défaut et le port n°443 le flux sécurisé HTTPS.

On sait donc maintenant que nos serveurs, qui seront installés sur le réseau local devront disposer d'une adresse IP locale du type 192.168.x.x pour communiquer entre eux et accéder à Internet par la porte de sortie de la Box.

La première question qu'il faut maintenant se poser c'est quelles sont les adresses IP de la Box ?

Vous pouvez faire appel à des sites extérieurs tels que https://www.my-ip-finder.fr ou https://www.mon-ip.com mais le plus simple reste encore de se connecter directement sur la Box.

Dans la pluspart des cas, votre Box sera accessible à partir de votre navigateur via son adresse IP interne (http://192.168.1.1 ou http://192.168.0.1 ou parfois http://192.168.0.254). Si aucun de ces trois liens ne fonctionnent, consultez la documentation qui vous a été communiquée lors de la souscription de votre contrat pour connaître la bonne adresse IP locale.

Se connecter à une Box FREE ou une Box SFR/RED-SFR.

Pour la Box SFR, l'information est directement disponible sur la page d'accueil.

Sur le gestionnaire de la Box SFR, on notera la présence de 2 adresses IP externes :
- Une adresse IPV4
- Une adresse IPV6.

Il faut juste savoir que l'adressage IPV6 est destiné à remplacer à termes l'adressage IPV4.

 

Pour la Box FREE, il faut nécessairement se connecter en mode administrateur en double-cliquant sur l'icone "Etat de la Freebox" puis saisir le mot de passe approprié. Il faudra ensuite sélectionner l'onglet "Etat Internet" pour disposer de l'information recherchée.

La mire de la Freebox en mode invité.

Il faut double-cliquer sur Etat de la Freebox. Un message vous demande si vous souhatez vous connecter.

Cliquez sur le bouton "OUI"

Saisissez votre mot de passe donné par votre FAI.
Côté Freebox, si on regarde l'information affichée en vis-à-vis de l'adresse IPV4, on remarquera que l'adresse externe (82.22.150.200) gére la totalité des ports utilisables pour une adresse IP (de 0 à 65535), ce qui implique que cette adresse n'est pas partagée.

 

En mode script, on peut aussi récupérer les adresses IPV4 et IPV6 avec les commandes suivantes passées dans un terminal.

Récupérer son adresse IP Public

Sous CentOS, dans une session en mode terminal,saississez la commande suivante pour faire afficher l'adresse IP PUBLIC de la box. Le résultat de la commande dépend du paramètrage IP de la box. Si la box utilise le protocole IPV6, la commande retournera l'adresse IPV6 sur 128 bits sinon, c'est l'adresse IPV4 classique sur 32 bits.

# wget -qO- icanhazip.com
-> 90.19.xxx.xxx (si la box est en IPV4)
ou
-> 2a01:cb00::fe73;812c (si la box est en IPV6)

O -> le caractère O comme Olive.

Pour obtenir uniquement l'adresse IPV4 :

# curl ifconfig.me
-> 90.19.xxx.xxx

 

Sur la base des adresses IP récupérées, on peut réaliser le plan d'adressage et de nommage des VM et dans la foulée définir leurs principales caractéristiques.

n°VM Nom @IP Ram DD Core Fonction
/ freebox 82.22.150.200
192.168.1.1
      Adresse IPV4 externe (WAN)
Adresse IPV4 interne (LAN)
/ switch 192.168.1.5       Switch gigabit 8 ports
/ pve0 192.168.1.10
192.168.1.11
32 Go 1 To ssd
6 To dd

6 coeurs
6 cores

Hyperviseur Proxmox 1
/ pve1 192.168.1.12
192.168.1.13
8 Go 1 To ssd
3 To dd
4 coeurs
4 cores
Hyperviseur Proxmox 2
115 scon 192.168.1.15 2 Go 50 Go 1 coeur
1 core
serveur de connexion
120 sdns0 192.168.1.20 2 Go 10 Go 1 coeur
1 core
serveur DNS résolution externe
121 sdns1 192.168.1.21 2 Go 5 Go 1 coeur
1 core
serveur DNS résolution interne master
122 sdns2 192.168.1.22 2 Go 5 Go 1 coeur
1 core
serveur DNS résolution interne slave
130 swb0 192.168.1.30 4 Go 5 Go 1 coeurs
1 core
serveur Reverse proxy
131 swb1 192.168.1.31
192.168.1.32
4 Go 100 Go 2 coeurs
2 cores
serveur Web
140 sdb0 192.168.1.40 4 Go 200 Go 2 coeurs
2 cores
serveur Base de données
150 smail0 192.168.1.50 4 Go 200 Go   serveur Mail
160 scloud0 192.168.1.60 4 Go 500 Go 2 coeurs
2 cores
Serveur Cloud
170 sappli0 192.168.1.70 4 Go 500 Go 2 coeurs
2 cores
Serveur Applicatif
      20 Go 375 Go    

 

Proxmox numérote les VM à partir de 100. On prendra comme base cette numérotation -100 pour définir les adresses IP de nos VM ; l'objectif étant de réserver la plage [192.168.1.1 à 192.168.1.100] pour notre infrastructure et de libérer les adresses au delà, c'est à dire sur la plage [192.168.1.101 à 192.168.1.254] pour les affecter aux différents appareils de notre réseau local (ordinateur individuel, tablette, smartphone, ...). On laissera la Box gérer l'adressage dynamique de ces appareils via le service DHCP que nous allons paramétrer en conséquence.

Note sur cette architecture.

Cette architecture peut être améliorée sur le plan sécuritaire en utilisant la DMZ de la Box et en contrôlant tous les flux entrants par un pare feux qui les redistribuera à son tour sur les machines concernés. L'avantage du pare-feu, c'est qu'il bloque les flux indésirables et on s'apercevra qu'ils sont parfois très nombreux. Ce n'est pas l'option qui a été prise ici juste pour simplifier la mise en oeuvre déjà assez complexe. Les lecteurs interressés pourront se tourner sur pfsense qui est particulièrement adapté à cette fonction.

 

Sommaire

 

Virtualisation / Hyperviseur PROXMOX

 

Certificat letsencrypt (nouveau)

 

Partie 1/5 : (CentOS)

Installation du système d'exploitation

Partie 1 : (Infrastructure)

Mise en place de l'infrastructure

  • Serveur Web : Apache (HTTPD)
  • Interprèteur de code : PHP
    • php 5.4
    • php 6.3
    • php 7.1
    • php 7.2
    • php 7.3 (bientôt)
  • Installateur PHP : COMPOSER
  • Serveur de base de données : MariaDB
    • mariadb 5.5
    • mariadb 10.2
  • Gestionnaire de base de données : PHPMYADMIN
    • installation manuelle
    • installation via COMPOSER
    • installation via les repos officiels
  • Commandes SQL
    • Guide pour débuter
  • Transfert de fichiers : SSH/SFTP, FTP

 

Partie 1.1 (DNS - Glue-record)

  • Mise en place d'un Glue-record
  • Mise en place du DNS (nouveau)

 

Partie 1.2 (Reverse Proxy)

  • Mise en oeuvre d'un Reverse Proxy sous CentOS 7

 

Partie 2 : (Sécurisation)

  • Sécurisation de l'insfrastucture
  • Outil de bannissement : FAIL2BAN
  • Centralisateur de log : LOGWATCH
  • Détecteur de failles de sécurité : RKHUNTER
  • Anti-virus : CLAMAV
  • Utilisation de SSH
  • Modification du port d'écoute SSH
  • TCP_WRAPPER (déprécié depuis centos7-4)
  • Principales commandes du FIREWALL

 

Partie 3 : (Gestionnaire de contenu) (à qualifier)

Installation de gestionnaires de contenu

  • Drupal 7
  • Drupal 8
  • Typo3 (à créer)
  • Joomla
  • Wordpress

Installation d'applicatifs

 

Partie 4 : (à finaliser)

  • Outillage de l'hébergement
  • DynDns Gandi
  • Gestionnaire de log : GRAYLOG2
  • Commandes CentOS 7 courantes
  • ...