Passage à un double firewall Alpha/Beta
parent
93ab26d135
commit
c3a2581081
|
@ -1,107 +0,0 @@
|
||||||
# Mise en place du firewall OBSELETE
|
|
||||||
Nous allons ici configurer le firewall qui respectera les règles suivantes,
|
|
||||||
- DNAT ports 80,443 vers le ct du proxy NGINX (10.10.0.2) depuis NET vers KRKN
|
|
||||||
- SNAT pour faire du masquerading des packets sortant des CT
|
|
||||||
- Accès SSH vers toutes les zones
|
|
||||||
- Accès à l'interface web Proxmox port 8006 depuis NET vers le firewall
|
|
||||||
- Reverse-Proxy NGINX pour l'interface web Proxmox ports 8006,5902 depuis le CT NGINX vers le firewall
|
|
||||||
|
|
||||||
Nous utilisons Shorewall et non iptables ou le firewall de Proxmox pour des raisons de simplicité.
|
|
||||||
|
|
||||||
## Ajout des interfaces virtuelle
|
|
||||||
On va ajouter nos deux interfaces virtuelles (vmbr0 et vmbr1) non bridgé sur eth0 et disposant chacune d'une plage ipv4 différente.
|
|
||||||
|
|
||||||
### /etc/network/interface
|
|
||||||
##### Depuis Alpha et Beta on ajoute
|
|
||||||
```
|
|
||||||
auto vmbr0
|
|
||||||
iface vmbr0 inet static
|
|
||||||
address 10.10.0.1
|
|
||||||
netmask 255.255.248.0
|
|
||||||
bridge_ports none
|
|
||||||
bridge_stp off
|
|
||||||
bridge_fd 0
|
|
||||||
|
|
||||||
auto vmbr1
|
|
||||||
iface vmbr1 inet static
|
|
||||||
address 10.20.0.1
|
|
||||||
netmask 255.255.240.0
|
|
||||||
bridge_ports none
|
|
||||||
bridge_stp off
|
|
||||||
bridge_fd 0
|
|
||||||
```
|
|
||||||
|
|
||||||
Nous avons maintenant deux interfaces virtuelle qui ne bridge pas vers l'extérieur. Le raccord avec l'extérieur va se faire avec shorewall.
|
|
||||||
|
|
||||||
### /etc/shorewall/conntrack
|
|
||||||
Garder le fichier d'origine
|
|
||||||
|
|
||||||
##< /etc/shorewall/interfaces
|
|
||||||
Associations interfaces/zones.
|
|
||||||
```
|
|
||||||
#ZONE INTERFACE BROADCAST OPTIONS
|
|
||||||
net eth0 ip_publique tcpflags,nosmurfs,routefilter,logmartians,sourceroute=0
|
|
||||||
krkn vmbr1 - tcpflags,nosmurfs,routefilter,logmartians
|
|
||||||
ext vmbr2 - tcpflags,nosmurfs,routefilter,logmartians
|
|
||||||
```
|
|
||||||
|
|
||||||
### /etc/shorewall/policy
|
|
||||||
Définition de la politique global du pare-feu.
|
|
||||||
```
|
|
||||||
#SOURCE DEST POLICY LOG LEVEL LIMIT:BURST
|
|
||||||
$FW net ACCEPT
|
|
||||||
krkn net ACCEPT
|
|
||||||
ext net ACCEPT
|
|
||||||
krkn ext ACCEPT
|
|
||||||
net all DROP info
|
|
||||||
#THE FOLLOWING POLICY MUST BE LAST
|
|
||||||
all all REJECT info
|
|
||||||
|
|
||||||
```
|
|
||||||
|
|
||||||
### /etc/shorewall/rules
|
|
||||||
Définition des exceptions aux règles définies dans le fichier policy.
|
|
||||||
```
|
|
||||||
#ACTION SOURCE DEST PROTO DEST SOURCE ORIGINAL RATE USER/ MARK CONNLIMIT TIME HEADERS SWITCH HELPER
|
|
||||||
# PORT PORT(S) DEST LIMIT GROUP
|
|
||||||
?SECTION ALL
|
|
||||||
?SECTION ESTABLISHED
|
|
||||||
?SECTION RELATED
|
|
||||||
?SECTION INVALID
|
|
||||||
?SECTION UNTRACKED
|
|
||||||
?SECTION NEW
|
|
||||||
Invalid(DROP) net all tcp
|
|
||||||
DNS(ACCEPT) $FW net
|
|
||||||
SSH(ACCEPT) net all
|
|
||||||
Ping(ACCEPT) all $FW
|
|
||||||
#Ping(DROP) net $FW
|
|
||||||
ACCEPT $FW krkn icmp
|
|
||||||
ACCEPT $FW ext icmp
|
|
||||||
ACCEPT $FW net icmp
|
|
||||||
ACCEPT net $FW icmp
|
|
||||||
#Nginx reverse-proxy Proxmox web interface
|
|
||||||
ACCEPT krkn:10.10.0.2 $FW tcp 8006,5902
|
|
||||||
#Proxmox web interface
|
|
||||||
ACCEPT net $FW tcp 8006
|
|
||||||
#LXC Nginx
|
|
||||||
DNAT net krkn:10.10.0.2 tcp 80,443
|
|
||||||
```
|
|
||||||
### /etc/shorewall/snat
|
|
||||||
Configuration SNAT permettant de faire du "masquerading", ainsi les paquets qui sortent des CT LXC ont comme IP source, l'IP de l'interface externe _eth0_.
|
|
||||||
```
|
|
||||||
#ACTION SOURCE DEST
|
|
||||||
MASQUERADE vmbr1 eth0
|
|
||||||
MASQUERADE vmbr2 eth0
|
|
||||||
```
|
|
||||||
### /etc/shorewall/zones
|
|
||||||
Définition des zones et de leur type.
|
|
||||||
```
|
|
||||||
#ZONE TYPE
|
|
||||||
fw firewall
|
|
||||||
net ipv4
|
|
||||||
krkn ipv4
|
|
||||||
ext ipv4
|
|
||||||
```
|
|
||||||
|
|
||||||
Nous avons maintenant un firewall qui respecte les règles défini.
|
|
||||||
A noté qu'il n'y a pas de firewall sur l'interface eth3 car elle est en local.
|
|
|
@ -0,0 +1,101 @@
|
||||||
|
# Mise en place du firewall de Alpha
|
||||||
|
|
||||||
|
Nous avons déjà deux interfaces virtuelle qui ne bridge pas vers l'extérieur. Le raccord avec l'extérieur va se faire avec shorewall.
|
||||||
|
|
||||||
|
## Installation de Shorewall
|
||||||
|
```
|
||||||
|
apt-get update
|
||||||
|
apt-get install shorewall
|
||||||
|
cp /usr/share/doc/shorewall/examples/Universal/* /etc/shorewall/
|
||||||
|
```
|
||||||
|
Shorewall est maintenant installé
|
||||||
|
|
||||||
|
## Configuration de Shorewall
|
||||||
|
|
||||||
|
### /etc/shorewall/conntrack
|
||||||
|
Garder le fichier d'origine
|
||||||
|
|
||||||
|
##< /etc/shorewall/interfaces
|
||||||
|
Associations des interfaces du système avec les zones du parefeu
|
||||||
|
```
|
||||||
|
?FORMAT 2
|
||||||
|
#ZONE INTERFACE OPTIONS
|
||||||
|
int eth1 tcpflags,nosmurfs,bridge,logmartians,routefilter
|
||||||
|
coro eth2 tcpflags,nosmurfs,logmartians
|
||||||
|
net vmbr0 tcpflags,nosmurfs,bridge,routefilter,logmartians,routeback
|
||||||
|
krkn vmbr1 tcpflags,nosmurfs,bridge,routefilter,logmartians,routeback
|
||||||
|
ext vmbr2 tcpflags,nosmurfs,bridge,routefilter,logmartians,routeback
|
||||||
|
```
|
||||||
|
|
||||||
|
### /etc/shorewall/policy
|
||||||
|
Définition de la politique globale du pare-feu
|
||||||
|
```
|
||||||
|
#SOURCE DEST POLICY LOGLEVEL
|
||||||
|
$FW net ACCEPT
|
||||||
|
$FW int ACCEPT
|
||||||
|
krkn net ACCEPT
|
||||||
|
ext net ACCEPT
|
||||||
|
int net ACCEPT
|
||||||
|
|
||||||
|
ext krkn DROP info
|
||||||
|
net all DROP info
|
||||||
|
all all REJECT info
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
## /etc/shorewall/rules
|
||||||
|
Définition des exceptions aux règles définies dans le fichier policy
|
||||||
|
```
|
||||||
|
#ACTION SOURCE DEST PROTO DEST SOURCE
|
||||||
|
?SECTION ALL
|
||||||
|
?SECTION ESTABLISHED
|
||||||
|
?SECTION RELATED
|
||||||
|
?SECTION INVALID
|
||||||
|
?SECTION UNTRACKED
|
||||||
|
?SECTION NEW
|
||||||
|
|
||||||
|
Invalid(DROP) net all tcp
|
||||||
|
DNS(ACCEPT) $FW net
|
||||||
|
Ping(ACCEPT) all $FW
|
||||||
|
|
||||||
|
#Connexion SSH vers et depuis Beta et extérieur
|
||||||
|
SSH(ACCEPT) int $FW
|
||||||
|
SSH(ACCEPT) net all
|
||||||
|
SSH(ACCEPT) $FW int
|
||||||
|
|
||||||
|
#Nécessaire pour l'initialisation du corosync
|
||||||
|
ACCEPT coro $FW icmp
|
||||||
|
|
||||||
|
ACCEPT $FW krkn icmp
|
||||||
|
ACCEPT $FW ext icmp
|
||||||
|
ACCEPT $FW net icmp
|
||||||
|
ACCEPT krkn ext icmp
|
||||||
|
|
||||||
|
#Interface web proxmox
|
||||||
|
ACCEPT krkn:10.10.0.3 $FW tcp 8006,5902
|
||||||
|
ACCEPT net $FW tcp 8006
|
||||||
|
|
||||||
|
#DNAT pour le proxy Nginx
|
||||||
|
DNAT net krkn:10.10.0.3 tcp 80,443
|
||||||
|
```
|
||||||
|
### /etc/shorewall/snat
|
||||||
|
Configuration SNAT permettant de faire du "masquerading", ainsi les paquets qui sortent des CT LXC ont comme IP source, l'IP de l'interface externe _eth0_.
|
||||||
|
```
|
||||||
|
#ACTION SOURCE DEST
|
||||||
|
MASQUERADE vmbr1 vmbr0
|
||||||
|
MASQUERADE vmbr2 vmbr0
|
||||||
|
MASQUERADE enp0s8 vmbr0
|
||||||
|
```
|
||||||
|
### /etc/shorewall/zones
|
||||||
|
Définition des zones et de leur type.
|
||||||
|
```
|
||||||
|
#ZONE TYPE
|
||||||
|
fw firewall
|
||||||
|
net ipv4
|
||||||
|
krkn ipv4
|
||||||
|
ext ipv4
|
||||||
|
coro ipv4
|
||||||
|
int ipv4
|
||||||
|
```
|
||||||
|
|
||||||
|
Le firewall de Alpha est maintenant configuré comme décrit dans le shéma global du réseau.
|
Loading…
Reference in New Issue