Développement de la partie pare-feu (OPNSense)

master
Pierre Coimbra 2020-02-28 17:18:34 +01:00
parent d4d24e4a3e
commit 7824c5b8a4
No known key found for this signature in database
GPG Key ID: F9C449C78F6FAEE6
1 changed files with 126 additions and 15 deletions

View File

@ -1,19 +1,17 @@
# Firewall
# 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.
## Les interfaces
- Interface d'entrée WAN (wan vlan 10).
- Interfaces de sortie DMZ et ADMIN (interne vlan 10 et admin vlan 100).
Toutes les autres interfaçe seront pour des liens purement locaux (Corosync, pfSync et VXLAN) donc géré avec un parefeu local type UFW et non par OPNSense.
## Configuration de la VM
- Guest OS : Other
- Bus Device : VirtIO Block
- Network device model : VirtIO (paravirtualized)
Il faudra ensuite ajouter au moins deux interfaces réseau.
Avant de lancer la VM ajoutez les deux interfaces ci-dessous
- vmbr0.10 -> WAN
- vmbr1.10 -> LAN
WAN sera l'interface portant l'ip publique et LAN l'interface gateway pour la zone DMZ.
## Installation du système
Il faut récupérer une image iso "DVD" sur le site d'OpnSense
@ -29,13 +27,126 @@ Une fois installation terminée, quitter le programme d'installation et redémar
## Premiers paramétrages d'OPNSense
### Interfaces
Une fois la VM redémarrée pour la première fois, il faut faut assigner les interfaces, choix 1 dans le menu (assign interfaces).
Il faut configurer 2 interfaces pour commencer, une le WAN (wan vlan 10) et une pour le LAN (interne vlan 10). On ajoutera le reste plus tard.
Il faut configurer 2 interfaces pour commencer :
- WAN (vmbr0 / vlan 10)
- LAN (vmbr1 / vlan 10)
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.
### 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.
Sur la console d'OPNSense disponible sur la VM
```
pfctl -d
touch /tmp/disable_security_checks
```
Attention le pare-feu est activer à nouveau à chaque ajout de règle.
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
Ajouter deux nouvelle règle
```
Interface : WAN
Protocole : TCP
Destination : WAN adresse
Plage de ports de destination : HTTP / HTTP
Rediriger Vers : 10.0.0.8
Rediriger port cible : HTTP / HTTP
Description : DNAT port 80 pour HAProxy
```
```
Interface : WAN
Protocole : TCP
Destination : WAN adresse
Plage de ports de destination : HTTPS / HTTPS
Rediriger Vers : 10.0.0.8
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.
# En attente du choix WAN...
```
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
```
### Règles (uniquement DNAT)
- DNAT 80,443 dmz:10.0.0.5
- DNAT 25,465,587,143,993,4190 int:10.0.1.10
- DNAT 2222 ctf:10.0.2.12
- DNAT 8081,8082,8083,8084,8085,8086,8087,8088,8089,8090,8091 ctf:10.0.2.13
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.
Avant de continuer il faut dire à OPNSense depuis quelle adresse on y accède.
#### Système / Paramètres / Administration
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
## 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
Pour les ports 25, 465, 587, 143, 993 et 4190 DNAT vers la mail gateway (10.0.1.10).
```
Interface : WAN
Protocole : TCP
Destination : WAN adresse
Plage de ports de destination : XXXX / XXXX
Rediriger Vers : 10.0.1.10
Rediriger port cible : XXXX / XXXX
Description : DNAT port XXXX pour la Mail Gateway
```
Pour le port 2222 DNAT vers la VM de l'environnement CTF système (10.0.3.12)
```
Interface : WAN
Protocole : TCP
Destination : WAN adresse
Plage de ports de destination : XXXX / XXXX
Rediriger Vers : 10.0.3.12
Rediriger port cible : XXXX / XXXX
Description : DNAT port XXXX pour l'environnement Système (CTF)
```
Pour la plage de ports 8081 à 8091 DNAT vers l'environnement CTF Web (10.0.3.13).
```
Interface : WAN
Protocole : TCP
Destination : WAN adresse
Plage de ports de destination : XXXX / XXXX
Rediriger Vers : 10.0.3.13
Rediriger port cible : XXXX / XXXX
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