You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

89 lines
8.2 KiB
HTML

This file contains invisible Unicode characters!

This file contains invisible Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden characters.

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

{% extends "/meta/master.html" %}
{% block main %}
<h1 class="title">
Logiciels
</h1>
<h2 class="subtitle">
Architecture générale
</h2>
<p>
Si l'architecture matériel de Katzei est fortement liée à son coté auto-hébergé. Son architecture logiciel est, à l'inverse, beaucoup plus classique. Tout les services publiques étant rendu via le protocole HTTP(S) il y a un serveur proxy qui reçoit toutes les requêtes destinées aux ports 80 et 443 et les rediriges vers les services concernés. Les autres ports redirigent directement sur les machines gérant les service rendu sur ce port.
</p>
<p>
Par mesure de sécurité, afin de réduire les risques liés à de mauvaises manipulations, et pour réduire les temps dinterruption, chaque service est isolé dans une machine (le plus souvent virtuelle) qui lui est dédié. Un service n'est pas que ce uniquement vous pouvez utiliser directement mais peut aussi être interne. Par exemple nous gérons des services de DNS ou de mail qui ne sont pas proposés au publique.
</p>
<h2 class="subtitle">
Système d'exploitation
</h2>
<p>
Pour le choix du système d'exploitation qui allait être installé sur nos machines il fallait répondre à un cahier des charges classique:
<ul>
<li>
<b>Libre </b>: Katzei n'utilisant que des logiciels libres le système d'exploitation ne doit pas y faire exception;
</li>
<li>
<b>Léger </b>: Comme nous utilisons beaucoup de machines virtuelles, chacune d'elles doit être la plus légère possible;
</li>
<li>
<b>Stable </b>: Les administrateurs travaillant sur katzei sur leur temps libre il ne faut pas utiliser un système d'exploitation qui casse souvent oui qui change en profondeur régulièrement.
</li>
</ul>
</p>
<p>
Un certain nombre de distribution Linux ou de BSD répondent à ce cahier des charges et le choix parmi celle-ci est plus une affaire de goûts que de réel supériorité de l'une ou de l'autre. Nous avons choisi <a href="https://debian.org">Debian</a> qui est relativement léger (il s'installe et tourne très confortablement avec moins de 1Go de RAM) et extrêmement stable (certaines mauvaises langues diront même immobile), chaque version étant maintenue 2 ans puis continuant à recevoir des correctifs de sécurité pendant 2 à 4 ans supplémentaires. Le prix a payer pour cette stabilité est de n'avoir que rarement des logiciels à jour (même si les correctifs de sécurités sont bien entendu portés sur les anciennes versions) et quand une version de logiciel comporte un problème il est courant que ce problème ne soit pas corrigé avant la version suivant de de Debian.
</p>
<p>
D'autres distributions Linux auraient pu êtres utiliser comme <a href="https://www.centos.org/">CentOs</a> (une recompilation gratuite des sources de <a href="https://www.redhat.com/en/technologies/linux-platforms/enterprise-linux">Red Hat Enterprise Linux</a>), <a href="https://ubuntu.com/server">Ubuntu Server</a> ou encore des version de <a href="https://fr.wikipedia.org/wiki/Berkeley_Software_Distribution">BSD</a> (comme <a href="https://www.freebsd.org/fr/">FreeBSD</a>).
<h2 class="subtitle">
Hyperviseur
</h2>
<p>
Un hyperviseur est un logiciel permettant de gérer et d'héberger une ou plusieurs machines virtuelles (guest ou invité) sur une même machine physique (host ou hôte).
</p>
<p>
Nous utilisons l'hyperviseur <a href="https://www.proxmox.com/en/proxmox-ve">Proxmox-ve</a> (généralement simplement désigné par "Proxmox") pour gérer le gros de l'infrastructure de Katzei. Cette distribution Linux est très proche de Debian et se contente d'y rajouter quelque paquets. Proxmox fournit une interface graphique via un serveur web simple permettant de faire toutes les opérations courantes.
</p>
<h2 class="subtitle">
Supervision
</h2>
<p>
Quand on essaye de construire une infrastructure stable a destination du publique il est indispensable de pouvoir être mis au courant quand un problème apparaît sur cette infrastructure. C'est ce qu'on appel la supervision.
</p>
<p>
Il existe beaucoup de systèmes de supervision comme <a href="https://www.nagios.org" >Nagios</a>, le système historique, ou des système très modernes comme <a href="https://https://prometheus.io/">Prometheus</a>, permettant de récolter des centaines de paramètres sur les machines et de les agréger dans le temps. Notre infrastructure restant très simple nous n'avons pas besoin de quelque chose d'aussi puissant que Prometheus et vue le nombre de paramètres remontés le configurer correctement pour nos besoin aurait été bien trop long. Nous avons finalement choisis d'utiliser <a href="https://icinga.com/">Icinga2</a>, un dérivé (complètement réécrit depuis) de Nagios, simple à configurer et avec une jolie interface.
</p>
<p>
<b>Attention :</b> si vous utilisez Icinga2 sous Debian Buster, le paquet présent sur les dépôts de la distribution à un défaut empêchant de l'utiliser comme agent. Pour éviter ce problème il est préférable d'installer la version présente sur le dépôt de Icinga.
</p>
<h2 class="subtitle">
Mail
</h2>
<p>
Même si Katzei ne fournit pas d'adresse mail à ses utilisateurs, il est indispensable de pouvoir envoyer des mails pour les services ou la supervision et de pouvoir en recevoir (au moins pour respecter les obligations légales). Katzei étant auto-hébergé, notre adresse IP est automatiquement rejetés par les gros hébergeurs de mail. Pour contourner ce blocage nous sommes obligés de passer par le relais de Free. Nous perdons donc un peu d'indépendance sur ce point mais c'est, malheureusement, le seul moyen pour envoyer des mails en restant auto-hébergé chez un opérateur grand publique.
</p>
<p>
Même si il existe un grand nombre de logiciels pour envoyer et recevoir des mails, le couple <a href="http://www.postfix.org/">Postfix</a>/<a href="https://www.dovecot.org/">Dovecot</a> est le plus courant. C'est donc logiquement celui que nous avons choisis. Même si il existe de nombreux tutoriels et une grosse documentation sur le sujet, la configuration de Postfix reste compliquée et peu intuitive. Si vous voulez vous lancer dans l'aventure prévoyez qu moins quelque jours pour réussir a le faire marcher convenablement (et avoir une configuration acceptable).
</p>
<h2 class="subtitle">
Domain Name Systeme (DNS)
</h2>
<p>
Dans une vision (très) simplifiée le DNS est l'annuaire qui permet d'associer un nom de domaine (par exemple "katzei.fr") à une adresse IP. Il existe deux type de serveurs DNS:
<ul>
<li>
<b>Les serveur faisant autorité </b>: Ces serveur sont ceux détenant la vérité et la partageant avec les autres. Ils font références sur le réseau et tout résolveurs donnant une réponse en contradiction avec les serveur faisant autorité sont considérer comme menteurs;
</li>
<li>
<b>Les résolveurs DNS </b>: ces serveurs sont ceux que vous contactez pour connaître l'adresse d'un site. Ils contacterons les différents serveurs faisant autorité jusquà trouver l'adresse que vous cherchez. En général vous utiliserez le résolveur DNS de votre fournisseur daccès a internet.
</li>
</ul>
</p>
<p>
Le fait que Katzei soit auto-hébergé rend assez absurde d'héberger nous même les serveurs faisant autorité pour katzei.fr. Nous utilisons donc les serveurs du bureau d'enregistrement à qui nous louons le domaine, à savoir OVH.
</p>
<p>
Comme pour n'importe quel infrastructure un peu compliqué nous avons besoin de définir un grand nombre de sous domaines pour les adresses des différentes machines. Pour ce faire nous utilisons un un résolveur DNS menteur qui au lieu de nous renvoyer les adresses publiques des services (la réponse que vous obtenez quand vous contactez un résolveur DNS publique) nous renvois les adresses privés, et inaccessible de lextérieur, des services. Pour ce résolveur nous utilisons <a href="https://nlnetlabs.nl/projects/unbound/about/">Unbound</a> qui a l'avantage d'être simple a configurer pour cette tâche.
</p>
{% endblock %}