diff --git a/README.md b/README.md index 779ce46..dc6a528 100644 --- a/README.md +++ b/README.md @@ -25,7 +25,7 @@ charge de former leur successeurs. 2. [Installation des hyperviseurs](proxmox/installation_hyperviseurs.md) 3. [Système de fichiers](proxmox/systeme_de_fichier.md) 4. [Système de sauvegarde](proxmox/systeme_de_sauvegarde.md) - 5. [Cluster](proxmox/cluster) + 5. [Cluster](proxmox/creation_cluster.md) 6. [Haute Disponibilité](proxmox/haute_disponibilite.md) 7. [Gestion de l'authentification](#) 8. [Sécurisation des conteneurs / VM](proxmox/securisation) diff --git a/applicatif/zone_wan/opnsense.md b/applicatif/zone_wan/opnsense.md index 3891a1d..25556d2 100644 --- a/applicatif/zone_wan/opnsense.md +++ b/applicatif/zone_wan/opnsense.md @@ -1,15 +1,16 @@ # Pare-Feu OPNSense -Au niveau du pare-feu nous allons utiliser OPNSense (fork de pfSense). Les deux nodes auront une VM avec OPNSense pour la Haute Disponibilité, l'IP publique (WAN) se déplacera entre les deux VM grâce à une IP virtuelle à CARP et à pfSense. Ca sera la même chose pour la gateway sur chaque interface. +Au niveau du pare-feu nous allons utiliser OPNSense (fork de pfSense). Alpha et Sigma auront une VM avec OPNSense pour la Haute Disponibilité, l'IP publique (WAN) se déplacera entre les trois VM grâce à une IP virtuelle CARP et à pfSync. Ca sera la même chose pour la gateway sur chaque interface. -## Configuration de la VM +## Configuration des VMs - Guest OS : Other - Bus Device : VirtIO Block - Network device model : VirtIO (paravirtualized) -Avant de lancer la VM ajoutez les deux interfaces ci-dessous +Avant de lancer la VM ajoutez les interfaces ci-dessous - vmbr0.10 -> WAN - vmbr1.10 -> LAN +- vmbr1.20 -> CARP WAN sera l'interface portant l'ip publique et LAN l'interface gateway pour la zone DMZ. @@ -30,13 +31,21 @@ Une fois la VM redémarrée pour la première fois, il faut faut assigner les in Il faut configurer 2 interfaces pour commencer : - WAN (vmbr0 / vlan 10) - LAN (vmbr1 / vlan 10) +- pfSync (vmbr1 / vlan20) On ajoutera le reste plus tard. ### Adresse IP Il faut maintenant configurer les adresses IP des interfaces : -- WAN, mettre l'IP publique et la gateway donnée. Pas de DHCP ni d'ipv6. -- LAN, IP : 10.0.0.254/24. Pas de gateway ni d'ipv6 ni de DHCP. +- WAN, mettre l'IP (dépend du choix fait) et la gateway donnée. Pas de DHCP ni d'ipv6. +- LAN, dépend de la node + - Alpha : 10.0.0.4 + - Sigma : 10.0.0.6 + +- pfSync, dépend de la node + - Alpha : 10.1.2.1 + - Gamma : 10.1.2.2 + ### Accès au panel d'administration A partir de la OPNSense est fonctionnel cependant il bloque tout en entrée, la WebUI est donc accessible uniquement depuis la zone DMZ. Il va donc falloir désactiver le pare-feu d'OPNSense pour pouvoir si connecter directement via son IP publique. @@ -48,6 +57,81 @@ touch /tmp/disable_security_checks ``` Attention le pare-feu est activer à nouveau à chaque ajout de règle. +En cas de perte d'accès faire la commande `pfctl -d` sur la console pour désactiver le pare-feu. + +## Interfaces +Le firewall aura une interface sur toute les zones afin de réguler le trafic. Aucune règle spéciale ne sera ajouter pour ces interfaces. + +Voici la liste des interfaçes à assigner à la VM ainsi que le nom à leur donner dans OPNSense lors de leur assignation +- vmbr0.10 -> WAN (déjà assignée) +- vmbr0.20 -> pfSync +- vmbr1.10 -> LAN (déjà assignée) +- vmbr1.20 -> PROXY +- vmbr1.30 -> INT +- vmbr1.40 -> CTF +- vmbr1.50 -> DIRTY +- vmbr2.100 -> ADMIN + +Il vous faut ensuite leur donner une IP publique en respectant les IP données dans la [partie réseau](reseau/mise_en_place.md) + +## Mise en cluster des pares-feu + +Appliquer les règles à la fin sinon le pare-feu va se réactiver et vous allez perdre l'accès + +### Alpha + +Système / Haute disponibilité / Paramètres + +- Cocher `Synchroniser les États` +- Interface de Synchronisation `CARP` +- IP de Synchronisation du Pair `10.1.2.2` +- Synchroniser la Config vers l'IP `10.1.2.2` +- Identifiant du Système Distant `root` (pour l'instant) +- Tout cocher et sauvegarder + +### Sigma + +Système / Haute disponibilité / Paramètres + +- Cocher `Synchroniser les États` +- Interface de Synchronisation `CARP` +- IP de Synchronisation du Pair `10.1.2.1` +- Sauvegarder + +La configuration du serveur est maintenant partagé entre les deux VM. + +On passe maintenant à la configuration des IPs Virtuelles + +Pare-feu / IPs virtuelles / Paramètres + +Pour chaque interface portant une IP virtuelle + +- Ajouter +- Mode `CARP` +- Interface `CARP` +- Adresse `/24` +- Mot de passe IP virtuelle : différent d'une interface à l'autre +- Groupe VHID : Ajouter 1 à chaque interface +- Description : Nom de l'interface + +Les interfaces : +- WAN : IP Publique +- LAN : 10.0.0.254 +- PROXY : 10.0.1.254 +- INT : 10.0.2.254 +- CTF : 10.0.3.254 +- DIRTY : 10.0.4.254 +- ADMIN : 10.1.0.254 + +### Règle firewall (CARP) + +#### Pare-feu / Règles / CARP + +- Interface : `CARP` +- Protocole : `CARP` +- Source : `CARP net` +- Destination : `CARP net` + Pour pouvoir accéder à l'interface web via HAProxy il vous faut mettre en place du DNAT vers l'IP virtuelle de HAProxy. #### Pare-feu / NAT / Redirection de port @@ -67,27 +151,14 @@ Interface : WAN Protocole : TCP Destination : WAN adresse Plage de ports de destination : HTTPS / HTTPS -Rediriger Vers : 10.0.0.8 +Rediriger Vers : 10.0.0.9 Rediriger port cible : HTTPS / HTTPS Description : DNAT port 80 pour HAProxy ``` -Le temps de la configuration, on va assurer nos arrière pour pouvoir accéder à l'interface web en cas de soucis avec HAProxy. On va faire en sorte une règle de DNAT pour rediriger le port 8080 directement sur le port 443 du pare-feu. Il faudra enlever cette règle une fois l'installation du serveur fini. +On donne l'accès à l'interface web via HAProxy. - -``` -Interface : WAN -Protocole : TCP -Destination : Ce Pare-feu -Plage de ports de destination : 8080 / 8080 -Rediriger Vers : 10.0.0.3 -Rediriger port cible : HTTPS / HTTPS -Description : DNAT port 80 pour HAProxy -``` - -Il est possible d'adapter cette règle pour être utilisable uniquement via le futur VPN... - -Maintenant que des règles de DNAT, `opn.krhacken.org` doit vous rediriger sur l'interface Web de même que IP:8080. +Maintenant que des règles de DNAT, `opn.krhacken.org` doit vous rediriger sur l'interface Web. Avant de continuer il faut dire à OPNSense depuis quelle adresse on y accède. @@ -95,21 +166,7 @@ Avant de continuer il faut dire à OPNSense depuis quelle adresse on y accède. Dans *Noms d'hôte alternatifs* mettre `opn.krhacken.org` On peu maintenant redémarrer la VM. -La configuration de départ d'OPNSense est terminé. - -## Interfaces -Le firewall aura une interface sur toute les zones afin de réguler le trafic. Aucune règle spéciale ne sera ajouter pour ces interfaces. - -Son IP virtuelle entre les deux pare sur chaque interface finira toujours par .254 et sera la gateway de tout les conteneurs/VM. - -Voici la liste des interfaçes à assigner à la VM ainsi que le nom à leur donner dans OPNSense lors de leur assignation -- vmbr0.10 -> WAN (déjà assignée) -- vmbr1.10 -> LAN (déjà assignée) -- vmbr1.20 -> PROXY -- vmbr1.30 -> INT -- vmbr1.40 -> CTF -- vmbr1.50 -> DIRTY -- vmbr2.100 -> ADMIN +La configuration de départ d'OPNSense est terminé, ## Règle de DNAT complète Une fois les interfaces assignée et ajouter sur le panel d'OPNSense on peu mettre en place les règles NAT définitive @@ -148,5 +205,3 @@ Description : DNAT port XXXX pour l'environnement Web (CTF) ``` C'est tout pour la configuration du pare-feu. - -PS: Il manque la configuration des VIP et pfSync diff --git a/deploiement/sources/zone_proxy/ct_proxy.yml b/deploiement/sources/zone_proxy/ct_proxy.yml index 356f658..13a7493 100644 --- a/deploiement/sources/zone_proxy/ct_proxy.yml +++ b/deploiement/sources/zone_proxy/ct_proxy.yml @@ -34,7 +34,7 @@ onboot: yes unprivileged: yes nameserver: '10.0.1.253' - netif: '{"net0":"name=eth0,ip=10.0.1.3/24,gw=10.0.1.254,bridge=vmbr1,tag=20","net1":"name=eth1,ip=10.0.2.4/24,gw=10.0.2.254,bridge=vmbr1,tag=30","net3":"name=eth3,ip=10.1.0.105/24,gw=10.1.0.254,bridge=vmbr2,tag=100"}' + netif: '{"net0":"name=eth0,ip=10.0.1.3/24,gw=10.0.1.254,bridge=vmbr1,tag=20","net1":"name=eth1,ip=10.0.2.4/24,gw=10.0.2.254,bridge=vmbr1,tag=30","net2":"name=eth3,ip=10.1.0.105/24,gw=10.1.0.254,bridge=vmbr2,tag=100"}' pubkey: "{{ ssh_pub }}" state: present @@ -57,7 +57,7 @@ onboot: yes unprivileged: yes nameserver: '10.0.1.253' - netif: '{"net0":"name=eth0,ip=10.0.1.4/24,gw=10.0.1.254,bridge=vmbr1,tag=20","net1":"name=eth1,ip=10.0.2.5/24,gw=10.0.2.254,bridge=vmbr1,tag=30","net3":"name=eth3,ip=10.1.0.106/24,gw=10.1.0.254,bridge=vmbr2,tag=100"}' + netif: '{"net0":"name=eth0,ip=10.0.1.4/24,gw=10.0.1.254,bridge=vmbr1,tag=20","net1":"name=eth1,ip=10.0.2.5/24,gw=10.0.2.254,bridge=vmbr1,tag=30","net2":"name=eth3,ip=10.1.0.106/24,gw=10.1.0.254,bridge=vmbr2,tag=100"}' pubkey: "{{ ssh_pub }}" state: present diff --git a/proxmox/README.md b/proxmox/README.md index e64974e..5b473b9 100644 --- a/proxmox/README.md +++ b/proxmox/README.md @@ -7,6 +7,6 @@ Vous trouverez ici toute la documentation relative au déploiement de Proxmox. 3. [Système de fichiers](systeme_de_fichier.md) 4. [Système de sauvegarde](systeme_de_sauvegarde.md) 5. [Cluster](creation_cluster.md) -6. [Haute Disponibilité](haute_disponibilite) +6. [Haute Disponibilité](haute_disponibilite.md) 7. [Gestion de l'authentification](#) 8. [Sécurisation des conteneurs / VM](securisation) diff --git a/proxmox/haute_disponibilite.md b/proxmox/haute_disponibilite.md index f61e3fd..5ad947e 100644 --- a/proxmox/haute_disponibilite.md +++ b/proxmox/haute_disponibilite.md @@ -21,7 +21,7 @@ Les services redondés et utilisant keepalived seront : ## Répartition non exhaustive des conteneurs entre les nodes -OPNSense -> Alpha, Beta et Sigma +OPNSense -> Alpha et Sigma HAProxy -> Alpha, Beta et Sigma NGINX -> Alpha, Beta et Sigma Redis -> Alpha et Sigma diff --git a/proxmox/installation_hyperviseurs.md b/proxmox/installation_hyperviseurs.md index 4552cdc..c7290ad 100644 --- a/proxmox/installation_hyperviseurs.md +++ b/proxmox/installation_hyperviseurs.md @@ -56,7 +56,7 @@ Même procédure, dans "Management Network Configuration" il faut juste remplace ### Sur la troisième node (Gamma) Même procédure, dans "Management Network Configuration" il faut juste remplacer le Hostname par **gamma.krhacken.org** -### Sur la deuxième node (Delta) +### Sur la quatrième node (Delta) Même procédure, dans "Management Network Configuration" il faut juste remplacer le Hostname par **delta.krhacken.org** ## Préparation des hyperviseurs @@ -65,7 +65,7 @@ La procédure est la même sur les quatres nodes. Elle peut être faite via SSH ### Mise à jour ``` apt-get update -apt-get full-upgrade +apt-get dist-upgrade ``` ### IP Forwarding diff --git a/reseau/mise_en_place.md b/reseau/mise_en_place.md index 21be9fa..b432f7e 100644 --- a/reseau/mise_en_place.md +++ b/reseau/mise_en_place.md @@ -14,12 +14,11 @@ Switch Interne VLAN 10 - Proxmox Beta : 10.0.0.2 - Proxmox Sigma : 10.0.0.3 - Firewall Alpha : 10.0.0.4 -- Firewall Beta : 10.0.0.5 -- Firewall Sigma : 10.0.0.6 -- HAProxy Alpha : 10.0.0.7 -- HAProxy Beta : 10.0.0.8 -- HAProxy Sigma : 10.0.0.9 -- HAProxy VIP : 10.0.0.8 +- Firewall Sigma : 10.0.0.5 +- HAProxy Alpha : 10.0.0.6 +- HAProxy Beta : 10.0.0.7 +- HAProxy Sigma : 10.0.0.8 +- HAProxy VIP : 10.0.0.9 - Proxy Interne : 10.0.0.252 - DNS : 10.0.0.253 - Firewall VIP : 10.0.0.254 @@ -35,8 +34,7 @@ Switch Interne VLAN 20 - Mail Alpha : 10.0.1.10 - Mail Sigma : 10.0.1.11 - Mail VIP : 10.0.1.12 -- Firewall Alpha : 10.0.1.247 -- Firewall Beta : 10.0.1.248 +- Firewall Alpha : 10.0.1.248 - Firewall Sigma : 10.0.1.249 - DNS Alpha : 10.0.1.250 - DNS Sigma : 10.0.1.251 @@ -60,8 +58,7 @@ Switch Interne VLAN 30 - Nextcloud : 10.0.2.20 - Gitea : 10.0.2.21 - [...] -- Firewall Alpha : 10.0.2.247 -- Firewall Beta : 10.0.2.248 +- Firewall Alpha : 10.0.2.248 - Firewall Sigma : 10.0.2.249 - DNS Alpha : 10.0.2.250 - DNS Sigma : 10.0.2.251 @@ -81,8 +78,7 @@ Switch Interne VLAN 40 - Environnement Système : 10.0.3.12 - Environnement Web : 10.0.3.13 - [...] -- Firewall Alpha : 10.0.3.249 -- Firewall Bêta : 10.0.3.250 +- Firewall Alpha : 10.0.3.250 - Firewall Sigma : 10.0.3.251 - Proxy Interne : 10.0.3.252 - Firewall VIP : 10.0.3.254 @@ -90,8 +86,7 @@ Switch Interne VLAN 40 ### DIRTY : Switch Interne VLAN 50 -- Firewall Alpha : 10.0.4.6249 -- Firewall Bêta : 10.0.4.6250 +- Firewall Alpha : 10.0.4.250 - Firewall Sigma : 10.0.4.251 - Proxy Interne : 10.0.4.6252 - Firewall VIP : 10.0.4.6254 @@ -113,8 +108,7 @@ Switch Administration VLAN 10 ### pfSync internal Switch Administration VLAN 20 - Alpha : 10.1.2.1 -- Beta : 10.1.2.2 -- Gamma : 10.1.2.3 +- Gamma : 10.1.2.2 ### GRE admin Switch Administration VLAN 30 @@ -125,7 +119,7 @@ Switch Administration VLAN 30 ### Administration : Switch Administration VLAN 100 - Firewall Alpha : 10.1.0.1 -- Firewall Bêta : 10.1.0.2 +- Firewall Gamma : 10.1.0.2 - Proxmox Alpha : 10.1.0.4 - Proxmox Beta : 10.1.0.5 - Proxmox Gamma : 10.1.0.6 @@ -330,15 +324,6 @@ iface coro inet static ovs_bridge vmbr0 ovs_options tag=10 -#pfSync -allow-vmbr0 pfsync -iface pfsync inet static - address 10.1.2.2 - netmask 24 - ovs_type OVSIntPort - ovs_bridge vmbr0 - ovs_options tag=20 - #GRE vmbr0 allow-vmbr0 vx2 iface vx2 inet static @@ -437,7 +422,7 @@ iface coro inet static #pfSync allow-vmbr0 pfsync iface pfsync inet static - address 10.1.2.3 + address 10.1.2.2 netmask 24 ovs_type OVSIntPort ovs_bridge vmbr0