Ajout d'un firewall au contenants et corrections

master
Pierre Coimbra 2020-02-28 17:24:03 +01:00
parent 2bb2435f66
commit 60bb560a17
No known key found for this signature in database
GPG Key ID: F9C449C78F6FAEE6
6 changed files with 79 additions and 5 deletions

View File

@ -8,3 +8,4 @@ Vous trouverez ici toute la documentation relative au déploiement de Proxmox.
4. [Cluster](cluster)
5. [Haute Disponibilité](#)
6. [Gestion de l'authentification](#)
7. [Sécurisation des container / VM](securisarion)

View File

@ -2,11 +2,11 @@
La technologie corosync a besoin de 3 votes minimum pour avoir le quorum et éviter les risques de splitbrain en cas de crash d'une des nodes.
Nous ne disposons que de deux nodes, nous allons donc mettre en place un "Corosync External Vote". Il suffit d'un container sur une autre machine que nous appellerons instance de quorum.
Nous ne disposons que de deux nodes, nous allons donc mettre en place un "Corosync External Vote". Il suffit d'un conteneur sur une autre machine que nous appellerons instance de quorum.
## Mise en place de l'instance de quorum
#### Sur le container de l'instance de quorum
#### Sur le conteneur de l'instance de quorum
```
apt-get install corosync-qnetd
systemctl enable corosync-qnetd

View File

@ -62,6 +62,17 @@ apt-get update
apt-get full-upgrade
```
### IP Forwarding
Activation permanente de l'IP Forwarding
#### /etc/sysctl.conf
Ajouter
```
net.ipv4.ip_forward = 1
```
```
sysctl -p /etc/sysctl.conf
```
### Templates LXC
Mise à jour de la liste
```
@ -92,6 +103,7 @@ Le lien donné sera utilisé par la suite
```
wget -P /var/lib/vz/template/iso <lien_obtenu>
bunzip2 /var/lib/vz/template/iso/*.bz2
```
#### Debian

View File

@ -10,13 +10,13 @@ Donc, Proxmox permet la virtualisation de plusieurs machines au sein dun seul
Proxmox propose deux types de virtualisation :
- Une technologie de virtualisation (KVM) similaire à celle qui est offerte par VirtualBox. Tout le matériel est émulé par l'hyperviseur, ainsi le système d'exploitation croit s'exécuter sur une machine physique. Les ressources allouées sont considérées comme totalement utilisées par Proxmox. Si la VM a 2Go de RAM, l'hyperviseur lui alloue en permanence 2Go de RAM.
- Une technologie de conteneurisation (LXC) qui utilise l'isolement pour séparer l'exécution de chaque environnement virtuel. En comparaison à KVM, le matériel n'est pas émulé, il est partagé par le système hôte, ainsi tous les containers utilisent le même noyau. Seules les ressources vraiment utilisées par le container sont considérées comme utilisées par Proxmox. Si on alloue 2Go de RAM au container et qu'il en utilise un seul, l'hyperviseur ne lui alloue qu'un 1Go.
- Une technologie de conteneurisation (LXC) qui utilise l'isolement pour séparer l'exécution de chaque environnement virtuel. En comparaison à KVM, le matériel n'est pas émulé, il est partagé par le système hôte, ainsi tous les conteneurs utilisent le même noyau. Seules les ressources vraiment utilisées par le conteneur sont considérées comme utilisées par Proxmox. Si on alloue 2Go de RAM au conteneur et qu'il en utilise un seul, l'hyperviseur ne lui alloue qu'un 1Go.
Pour notre infrastructure, nous utiliserons le plus possible des containers LXC. Cependant, pour les environnements CTF nécessitant Docker et pour le pare-feu (OPNSense), nous utiliserons des VM KVM.
Pour notre infrastructure, nous utiliserons le plus possible des conteneurs LXC. Cependant, pour les environnements CTF nécessitant Docker et pour le pare-feu (OPNSense), nous utiliserons des VM KVM.
## Qualité de Proxmox
Voici un petit aperçu des fonctionnalités de Proxmox :
- Création de containers LXC et de VM en quelques clics.
- Création de conteneurs LXC et de VM en quelques clics.
- Possibilité de modifier les ressources allouées aux contenants (RAM, disques, nombres dinterfaces réseau, VLANs...)
- Gestion des stockages (disques durs des machines, images iso, templates LXC,...) très simple et très bien intégrée à l'interface web.
- Gestion complète des machines : Shell, éteindre, démarrer, redémarrer...

View File

@ -0,0 +1,6 @@
# Sécurisation des conteneur / VM
Vous trouverez ici toute la documentation relative à la sécurisation des conteneurs et des VM. Nous allons utiliser ferm qui génère des règles iptables.
# Table des matières
1. [Template FERM](template_ferm.md)

View File

@ -0,0 +1,55 @@
# Templace Ferm
L'installation et la configuration de ferm est faite par tout les playbook Ansible.
Si vous n'utilisez pas ces playbook voilà la marche à suivre.
Nous allons ici faire une template pour la sécurisation des conteneurs avec ferm.
Tout les conteneurs et toutes les VM auront un firewall dédié (ferm) qui filtrera en INPUT autorisera tout en OUTPUT et bloquera tout en FORWARDING
Voici comment le filtrage ce fera en INPUT :
- Tout autoriser sur l'interface admin.
- Autoriser que ce qui est nécessaire sur les autres interfaces (la même chose sur toute).
La template utilise des paramètres pour éviter d'avoir à modifier la configuration. Il vous suffit d'adapter les paramètres suivant en fonction de la configuration souhaité.
- IF_FRONT : Point d'entrée principal sur le conteneur
- IF_BACK : Point de sortie sur le conteneur
- PROTO_FRONT : Les protocoles à autorisé sur les ports frontaux ouvert (utile pour le udp du DNS).
- PROTO_BACK : Même chose sur les interfaces de sortie
- HAVE_BACK : Mettre à un si il y a une ou plusieurs interfaces de sortie, à zéro sinon.
Dans le cas du DNS IF_FRONT est son interface sur la zone DMZ et IF_BACK est son interface sur la zone PROXY et son interface sur la zone INT.
```
@def $IF_ADMIN = ;
@def $IF_FRONT = ;
@def $IF_BACK = ();
@def $OPEN_PORT_FRONT = (22);
@def $PROTO_FRONT = (tcp);
@def $OPEN_PORT_BACK = (22);
@def $PROTO_BACK = (tcp);
@def $HAVE_BACK = 0; #0 pour NON 1 pour OUI
table filter {
chain INPUT {
policy DROP;
mod state state INVALID DROP;
mod state state (ESTABLISHED RELATED) ACCEPT;
interface lo ACCEPT;
interface $IF_ADMIN ACCEPT;
interface $IF_FRONT proto $PROTO_FRONT dport $OPEN_PORT_FRONT ACCEPT;
@if $HAVE_BACK {
interface $IF_BACK proto $PROTO_BACK dport $OPEN_PORT_BACK ACCEPT;
}
proto icmp icmp-type echo-request ACCEPT;
}
chain OUTPUT policy ACCEPT;
chain FORWARD policy DROP;
}
```