Ajouter 'infra/shorewall.md'
parent
51b497815f
commit
be0c7570ad
|
@ -0,0 +1,107 @@
|
|||
# Mise en place du firewall
|
||||
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.250.0
|
||||
bridge_ports none
|
||||
bridge_stp off
|
||||
bridge_fd 0
|
||||
|
||||
auto vmbr1
|
||||
iface vmbr1 inet static
|
||||
address 10.10.1.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.
|
Loading…
Reference in New Issue