From 90ce3caebd24c8b1ea2164912bb004d7352b74d6 Mon Sep 17 00:00:00 2001 From: Pierre Coimbra Date: Sat, 22 Feb 2020 11:54:11 +0100 Subject: [PATCH] Installation Hyperviseurs --- README.md | 4 +- applicatif/repartition_en_zones.md | 2 +- applicatif/zone_dmz/haproxy.md | 25 ++--- proxmox/README.md | 6 +- proxmox/cluster/creation_cluster_obselete.md | 47 +------- proxmox/installation_hyperviseurs.md | 106 +++++++++++++++++++ 6 files changed, 130 insertions(+), 60 deletions(-) create mode 100644 proxmox/installation_hyperviseurs.md diff --git a/README.md b/README.md index d3daaec..33ce9d7 100644 --- a/README.md +++ b/README.md @@ -22,9 +22,9 @@ charge de former leur successeurs. 1. [Présentation du Projet](presentation_projet.md) 2. [Proxmox](proxmox) 1. [Introduction à la virtualisation](proxmox/introduction_a_la_virtualisation.md) - 2. [Installation des hyperviseurs](#) + 2. [Installation des hyperviseurs](proxmox/installation_hyperviseurs.md) 3. [Systèmes de fichiers et sauvegardes](#) - 4. [Cluster](#) + 4. [Cluster](proxmox/cluster) 5. [Haute Disponibilitée](#) 6. [Gestion de l'authentification](#) 3. [Réseau](reseau) diff --git a/applicatif/repartition_en_zones.md b/applicatif/repartition_en_zones.md index c17c111..83cf70a 100644 --- a/applicatif/repartition_en_zones.md +++ b/applicatif/repartition_en_zones.md @@ -3,7 +3,7 @@ Les services seront réparti en plusieurs zones à la manière du découpage du réseau. Il est donc recommandé d'avoir compris l'infrastructure réseau avant de lire cette partie. -## Services Frontend +## Services Frontend Les services Frontend sont directement accessible depuis internet derrière OPNSense. diff --git a/applicatif/zone_dmz/haproxy.md b/applicatif/zone_dmz/haproxy.md index 55f1f35..71a5b5c 100644 --- a/applicatif/zone_dmz/haproxy.md +++ b/applicatif/zone_dmz/haproxy.md @@ -1,4 +1,5 @@ -# Gestion du flux post-firewall +# HAProxy +Cela consiste en la gestion des flux post firewall. ## Présentation des containers @@ -10,7 +11,7 @@ L'option Firewall PVE des interfaces est désactivée ## Objectifs et choix techniques Trois objectifs pour la gestion du flux post-firewall -- Redondance du proxy/load balancer entre les deux nodes. +- Redondance du proxy/load balanceur entre les deux nodes. - Séparation des flux (reverse public et reverse ctf). - Load balancing entre deux reverse proxy Nginx public (un sur chaque nodes). - Connexion SSL entre l'utilisateur et le proxy. @@ -116,8 +117,8 @@ frontend all-web-in bind *:443 interface eth0 tcp-request inspect-delay 5s tcp-request content accept if { req_ssl_hello_type 1 } - use_backend is-admin if { req_ssl_sni -i pve.sessionkrkn.fr } - use_backend is-admin if { req_ssl_sni -i rspamd.sessionkrkn.fr } + use_backend is-admin if { req_ssl_sni -i pve.krhacken.org } + use_backend is-admin if { req_ssl_sni -i rspamd.krhacken.org } default_backend is-user frontend user-web-in @@ -126,10 +127,10 @@ frontend user-web-in bind abns@haproxy-user accept-proxy ssl accept-proxy no-sslv3 crt /etc/ssl/letsencrypt interface eth0 acl host_letsencrypt path_beg /.well-known/acme-challenge acl authorized_host hdr_end(host) sessionkrkn.fr - acl mail hdr_end(host) mail.sessionkrkn.fr + acl mail hdr_end(host) mail.krhacken.org acl rspamd path_beg /rspamd/ - acl ctf_host hdr_end(host) ctf.sessionkrkn.fr - acl ctf_host hdr_end(host) web.sessionkrkn.fr + acl ctf_host hdr_end(host) ctf.krhacken.org + acl ctf_host hdr_end(host) web.krhacken.org acl host_www hdr_beg(host) -i www. reqirep ^Host:\ www.(.*)$ Host:\ \1 if host_www !host_letsencrypt !mail @@ -146,8 +147,8 @@ frontend admin-in mode http bind abns@haproxy-admin accept-proxy ssl no-sslv3 crt /etc/ssl/letsencrypt ca-file /home/hasync/pve.crt verify required interface eth0 acl is_auth ssl_c_s_dn(cn) -i -f /etc/haproxy/allowed_cn.txt - acl pve hdr_end(host) pve.sessionkrkn.fr - acl rspamd hdr_end(host) rspamd.sessionkrkn.fr + acl pve hdr_end(host) pve.krhacken.org + acl rspamd hdr_end(host) rspamd.krhacken.org use_backend reverse-nginx if { ssl_fc_has_crt } is_auth rspamd use_backend pve-interface if { ssl_fc_has_crt } is_auth pve default_backend drop-http @@ -211,7 +212,7 @@ systemctl restart haproxy.service ``` ### Obtention des premiers certificats et déploiement ``` -certbot certonly --webroot -w /home/hasync/letsencrypt-requests/ -d sub.sessionkrkn.fr +certbot certonly --webroot -w /home/hasync/letsencrypt-requests/ -d sub.krhacken.org ``` Voici un script pour mettre en place les certificats Let's Encrypt au bon endroit qui s'occupe de propager les certificats sur l'autre container. @@ -227,11 +228,11 @@ ssh root@10.0.0.3 'systemctl restart haproxy.service' service haproxy restart ``` -## Mise en place de la haute disponibilité du load balancer +## Mise en place de la haute disponibilité du load balanceur Voilà la configuration que nous allons mettre en place, - Sur Alpha le container HAProxy aura comme IP 10.0.0.3 - Sur Beta le container HAProxy aura comme IP 10.0.0.4 -- L'IP virtuelle 10.0.0.5 sera attribuée en fonction de la disponibilité des load balancer +- L'IP virtuelle 10.0.0.5 sera attribuée en fonction de la disponibilité des load balanceur - La node Alpha sera le master et la node Beta sera le Slave ### Installation (commune au deux nodes) diff --git a/proxmox/README.md b/proxmox/README.md index 719da1b..26fff4e 100644 --- a/proxmox/README.md +++ b/proxmox/README.md @@ -3,8 +3,8 @@ Vous trouverez ici toute la documentation relative au déploiement de Proxmox. # Table des matières 1. [Introduction à la virtualisation](introduction_a_la_virtualisation.md) -2. [Installation des hyperviseurs](#) +2. [Installation des hyperviseurs](installation_hyperviseurs.md) 3. [Systèmes de fichiers et sauvegardes](#) -4. [Cluster](#) -5. [Haute Disponibilitée](#) +4. [Cluster](cluster) +5. [Haute Disponibilité](#) 6. [Gestion de l'authentification](#) diff --git a/proxmox/cluster/creation_cluster_obselete.md b/proxmox/cluster/creation_cluster_obselete.md index e855fb2..a21102a 100644 --- a/proxmox/cluster/creation_cluster_obselete.md +++ b/proxmox/cluster/creation_cluster_obselete.md @@ -1,50 +1,13 @@ # Mise en place du cluster entre nos deux nodes -Nous avons déjà mis en place : -- Proxmox VE 6 sur les deux nodes (Alpha et Beta) -- Un RAID1 ZFS sur chacune des nodes +Il faut avoir mis en place le réseau avant de mettre les deux nodes en cluster. -## Préparation des deux nodes -Avant de monter le cluster, il faut permettre aux deux nodes de communiquer localement. Pour cela, nous allons rajouter une interface qui utilisera une carte réseau à part. - -### /etc/network/interfaces -L'interface eth0 est configurée pendant l'installation de Proxmox. Proxmox utilise la première carte réseau pour communiquer avec l'extérieur (eth0). -On va mettre en place une interface supplémentaire directement reliée à l'autre node sur la seconde carte réseau (eth3) pour ne pas altérer le débit fourni par la première. -*Pour avoir la liste des interfaces matérielles on utilise dmesg  | grep eth* -##### Depuis Alpha on ajoute +Les nodes seront accessible grâce au DNS interne via ``` -auto eth3 -iface eth3 inet static - address 10.30.0.1 - netmask 255.255.255.0 -``` -##### Depuis Beta on ajoute -``` -auto eth3 -iface eth3 inet static - address 10.30.0.2 - netmask 255.255.255.0 -``` -Nous avons désormais un multicast en place entre Alpha et Beta. Ainsi les hyperviseurs dialogueront entre eux localement sur une interface et seront reliés au net sur une autre interface. Matériellement il faut un câble croisé entre les deux ports correspondant à eth3. - -### /etc/hosts -##### Depuis Alpha -``` -127.0.0.1 localhost.localdomain localhost -192.168.2.30 alpha.krhacken.org alpha pvelocalhost -#Corosync -10.30.0.1 alpha-corosync.krhacken.org alpha-corosync -10.30.0.2 beta-corosync.krhacken.org beta-corosync +alpha.krhacken.org +beta.krhacken.org ``` -##### Depuis Beta -``` -127.0.0.1 localhost.localdomain localhost -192.168.2.31 beta.krhacken.org beta pvelocalhost -#Corosync -10.30.0.1 alpha-corosync.krhacken.org alpha-corosync -10.30.0.2 beta-corosync.krhacken.org beta-corosync -``` -Le multicast entre Alpha et Beta est désormais accessible via des hostnames. +Un lien externalisé entre Alpha et Beta est déjà en place. ### Création du cluster Nous allons maintenant créer le cluster Sigma depuis Alpha, diff --git a/proxmox/installation_hyperviseurs.md b/proxmox/installation_hyperviseurs.md new file mode 100644 index 0000000..fe467a5 --- /dev/null +++ b/proxmox/installation_hyperviseurs.md @@ -0,0 +1,106 @@ +# Installation des hyperviseurs + +Proxmox étant un hyperviseur de type 1 il possède son propre OS, c'est donc ça que nous devons installer sur les deux nodes du serveur. + +Pour cette installation nous partons du principe que les deux nodes on accès à internet soit via une IP publique soit via une réseau privée. Cela ne change rien car nous modifierons la configuration réseau par la suite. + +Pour l'installation il faut +- Une clé USB +- Deux disques dur de même taille pour chaque node + +## Installation de Proxmox +Procurez-vous la dernière version de Proxmox, attention l'installation initiale à été faire sous Proxmox 6. + +Voilà le [lien](https://www.proxmox.com/en/downloads/category/iso-images-pve) de l'installateur + +A vous de rendre une clé bootable avec cet iso. + +### Sur la première node (Alpha) +Mettez la clé USB sur un des ports USB de la première nodes (celle de droite), branchez un clavier et un écran puis démarrer l'installation. + +Choissisez Install Proxmox VE et acceptez l'EULA. +#### Dans Proxmox Virtualization Environment + +Target Harddisk -> Options +- Filesystem -> zfs (RAID1) + +Disk Setup + +- Harddisk 0 -> Un des 2 disques +- Harddisk 1 -> L'autre + +#### Location and Time Zone selection +- Contry -> France +- Time zone -> Europe/Paris +- Keyboard Layout -> French + +#### Administration Password and E-Mail Address + +- Password -> Celui du gestionnaire keepass adminsys +- Confirm -> Pareil +- Email -> adminsys@krhacken.org + +#### Management Network Configuration +- Hostname (FQDN) -> alpha.krhacken.org + +Normalement un IP est automatiquement attribué. Si ce n'est pas le cas à vous de le faire. + +#### Summary +Vérifier la cohérence et lancer l'installation. + +### Sur la deuxième node (Beta) +Même procédure, il faut juste dans "Management Network Configuration" remplacer le Hostname par **beta.krhacken.org** + +## Préparation des hyperviseurs +La procédure est la même sur les deux nodes. Elle peux être faites via SSH (recommandé) ou sur l'interface d'administration **https://IP:8006** + +### Mise à jour +``` +apt-get update +apt-get full-upgrade +``` + +### Templates LXC +Mise à jours de la liste +``` +pveam update +``` +Liste les templates disponible +``` +pveam available +``` +Téléchargement le la dernière debian system +``` +pveam download local debian-10.0-standard_10.0-1_amd64.tar.gz +``` + +### Images VM +Nous aurons besoin de VM OPNSense (Pare-Feu) et de VM debian, il faut donc télécharger les derniers ISO disponible + +#### OPNSense +VM nécessaire car c'est une distribution Free-BSD + +Obtention du lien de Téléchargement sur le [site officiel](https://opnsense.org/download/) + +- Architecture -> amd64 +- Select the image type -> dvd +- Mirror Location -> A vous de voir + +Le lien donné sera utilisé par la suite + +``` +wget -P /var/lib/vz/template/iso +``` + +#### Debian +VM nécessaire pour faire tourner efficacement Docker + +Obtention du lien de Téléchargement sur le [site officiel](https://www.debian.org/distrib/netinst) + +- Architecture -> amd64 + +Le lien donné sera utilisé par la suite + +``` +wget -P /var/lib/vz/template/iso +```