Haute disponibilité pour OPNSense
parent
28e6c66ee8
commit
8342918591
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue