Haute disponibilité pour OPNSense

master
Pierre Coimbra 2020-03-15 22:33:31 +01:00
parent 28e6c66ee8
commit 8342918591
No known key found for this signature in database
GPG Key ID: F9C449C78F6FAEE6
7 changed files with 112 additions and 72 deletions

View File

@ -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)

View File

@ -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 `<adresse_selon_interface>/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

View File

@ -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

View File

@ -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)

View File

@ -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

View File

@ -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

View File

@ -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