# Admin Linux : Cours 3 : VLANs et Firewalls

## VLAN

Abstraction des contraintes physiques / géographiques dans la mise en réseau implémentée sur les switchs (avec le protocole 802.1Q). 

Objectif : 

- Constituer autant de réseaux logiques que souhait
- Plusieurs types de ports (ACCESS et TRUNKING)
- Avoir les mêmes caractéristiques d'un réseau physique

### VLAN par port

#### Avantages 

- Aucun paquet ne quitte son VLAN
- Sécurité maximale entre VLANs

#### Inconvénients

- Obligation d'avoir un plan réseau à jouors


### VLAN par @ MAC

#### Avantages 

- Adapté pour les stations portables

#### Inconvénients

- Config fastidieuse : table de correspondance
- Possibilité d'usurpation de l'@ MAC

### Commandes VDE

- `vlan/create <N>` : crée le VLAN N
- `vlan/addport <vlan> <port>` : assigne le port au VLAN comme liaison d'aggrégation
- `port/setvlan <port> <vlan>` : assigne le port au VLAN
- `vlan/print` : affiche la config des vlans
- `port/pring` : affiche les ports du switch

### Sur Linux

Créer une interface virtuelle : 

```bash
vconfig add eth0 1
```

Pour afficher les interfaces : 

```bash
ifconfig -a
```

Pour configurer une interfaces virtuelle : 

```bash
ifconfig eth0.1 192.168.0.1/24 up
```

ou dans `/etc/network/interfaces` :

```bash
auto eth0.1
iface eth0.1 inet static
address 192.168.0.1
netmask 255.255.255.0
```

## Pare-feu Linux

Permet de protéger le réseau local en :

- Filtrant les paquets IP, segments TCP, datagrammes UDP
- NAT : translation d'IP / port, masquage d'IP
- Log des actions de filtrage

Le filtre à paquets du noyau Linux est `netfilter`. Nous allons utiliser `iptables` pour orchestrer le filtrage facilement via des chaînes : 

- INPUT : paquet entrant à destination de l'hôte
- OUTPUT : paquets sortants dont la source est l'hôte
- FORWARD : paquets en transit (entrants ou sortantà sur l'hôte

Tables de filtrage : 

- `filter`  : filtrer en acecptant ou rejetant des paquets
- `nat` : translation d'IP
- `mangle` : modifier les entêtes de paquets

Options `iptables` : 

- `-L` : afficher toutes les règles de la table
- `-F` : supprimer les règles de la table sauf la politique par défaut
- `-P` : modifie la politique par défaut
- `-A` : ajouter une règle à la fin de la table
- `-I` : insère la règle avant celle indiquée 
- `-D` : supprime une règle

Options de la commande 

Actions de filtrage : 

- `ACCEPT` : laisser passer le paquet
- `DROP` : rejeter le paquet
- `REJECT` : refus du paquet, envoie d'un message de refus à l'émetteur
- `LOG` : enregistrement d'un message dans `/var/log/messages`

Exemples : 

```bash
# Autoriser les requêtes ICMP (ping) sur la machine
iptables -A INPUT -p icmp -j ACCEPT
iptables -A OUTPUT -p icmp -j ACCEPT

# Autoriser les requêtes ICMP à transiter par la machine
iptables -A FORWARD -p icmp -j ACCEPT

# Autoriser les requêtes (port 53) pour assurer le service DNS
iptables -A FORWARD -p udp --dport 53 -j ACCEPT

# Autoriser les requêtes (port 67/68) pour assurer le service DHCP (l'INPUT et de l'OUTPUT si il y a le DHCP Relay sur la machine)
iptables -A FORWARD -p udp --dport 67 -j ACCEPT
iptables -A FORWARD -p udp --dport 68 -j ACCEPT
iptables -A INPUT -p udp --dport 67 -j ACCEPT
iptables -A INPUT -p udp --dport 68 -j ACCEPT
iptables -A OUTPUT -p udp --dport 67 -j ACCEPT
iptables -A OUTPUT -p udp --dport 68 -j ACCEPT

# Pour l'autorisation des connexion HTTP depuis le réseau 192.168.10.0/24 vers la machine 10.0.2.0/2 :
iptables -A FORWARD -s 192.168.10.0/24 -d 10.0.2.0/2 -p tcp --dport 80 -j ACCEPT

# Pour autoriser les réponse (connexion déjà établies)
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
```