Compare commits
9 commits
895880be98
...
b648ca914d
Author | SHA1 | Date | |
---|---|---|---|
b648ca914d | |||
0019d75d69 | |||
f8cab609f5 | |||
188efdaad2 | |||
490b9970b3 | |||
18cf24605e | |||
2972fe198b | |||
9dfacccf3b | |||
c35fe63d5b |
6 changed files with 402 additions and 0 deletions
120
content/admin_reseau/1_NAT/index.md
Normal file
120
content/admin_reseau/1_NAT/index.md
Normal file
|
@ -0,0 +1,120 @@
|
|||
---
|
||||
title: "Administration réseaux : Le firewall et le NAT"
|
||||
date: 2022-02-07
|
||||
tags: ["IPv4", "iptables", ']
|
||||
categories: ["Administration Réseaux", "Cours"]
|
||||
---
|
||||
|
||||
## Historique
|
||||
|
||||
* 1990 ipfwadm: creation des tables `INPUT`, `OUTOUT`, `FORWARD`. Support de
|
||||
TCP, UDP et ICMP.
|
||||
* ipchains: evolution de ipfwadm, ajout du supportd'`IP` et des chaines. Les
|
||||
paquets pouvaient passer plusieurs fois par les tables lors du NAT
|
||||
* 2004 iptables: ajout des tables `filter`, `nat`, `mangle`
|
||||
* 2012 nftables: supression des commandes satellites (gestion de l'arp). Ajout
|
||||
de flexibilité (creation de tables, regles avec plusieurs actions ...)
|
||||
* now BPF: machine virtuelle dans le noyau pour gérerle filtrage
|
||||
|
||||
## IPTable
|
||||
|
||||
### table
|
||||
|
||||
Regroupement de règles ayant un but commun: filter pour le filtrage, nat pour la
|
||||
translation d'adresses et mangle pour le marquage de paquets:
|
||||
|
||||
* filter
|
||||
* OUTPUT
|
||||
* INPUT
|
||||
* NAT
|
||||
* nat
|
||||
* POSTROURING
|
||||
* PREROUTING
|
||||
* OUTPUT
|
||||
|
||||
### La translation d'adresse
|
||||
|
||||
#### Dans le cas du NAT statique
|
||||
|
||||
```
|
||||
# paquet sortant
|
||||
# On fait la modification du paquet le plus tard possible
|
||||
iptables -t nat -A POSTROUTING -s <@A> -j SNAT --to-source <@P>
|
||||
|
||||
# paquet entrant
|
||||
# On fait la modification le plus tot possible
|
||||
iptables -t nat -A PREROUTING -d <@P>-j DNAT --to-destination <@A>
|
||||
```
|
||||
|
||||
#### Dans le cadre du NAT dynamique
|
||||
|
||||
```
|
||||
# Paquets sortants
|
||||
iptables -t nat -A POSTROUTING -s <@Net_priv> -o eth1 -j MASQUERADE
|
||||
```
|
||||
|
||||
Il est possible de faire plusieurs commande `MASQUERADE` si l'on a plusieurs
|
||||
sorties et plusieurs réseau interne par exemple
|
||||
|
||||
Maitenant si on veut rendre une machne accessible de l'exterieur sur le port 80
|
||||
par exemple :
|
||||
|
||||
```
|
||||
iptables -t nat-A PREROUTING -p tcp --dport 80 -d<@IP_gateway> -j DNAT --to <@>
|
||||
```
|
||||
|
||||
## Le pare-feu
|
||||
|
||||
Premiere ligne de defense de notre infrastructure. Philosophie generale: ce qui
|
||||
vient de l'exterieur n'est pas de confiance, ce qui sort de notre reseau l'est.
|
||||
|
||||
Les services accessibles depuis l'exterieurs (serveur web par ex.) sont
|
||||
positionnés dans une DMZ.
|
||||
|
||||
### Les polices par defaut d'iptable
|
||||
|
||||
* ACCEPT
|
||||
* DROP
|
||||
* REJECT
|
||||
|
||||
On preferera utiliser `DROP` que `REJECT` : non seulement on donne des
|
||||
information sur la machine, mais en plus on consomme de la ressource (trame ICMP
|
||||
envoyee en retour).
|
||||
|
||||
### technique avancée
|
||||
|
||||
Il est possible de limiter les connexions vers le serveur web à 10 par minutes
|
||||
|
||||
```
|
||||
iptables -A FORWARD -p tcp --dport 80 -d <@srv_web> -m limit --limit 10/m -j
|
||||
ACCEPT
|
||||
```
|
||||
|
||||
Il est aussi possible de filtrer les paquets en fonction de leur état. Via le
|
||||
tuple `<@source, @destination, src_port, dest_port>` le pare-feu est en mesure
|
||||
de stocker l'état de la connexion. Elle peut être de 3 formes:
|
||||
|
||||
* NEW (paquet `SYN` reçu du client)
|
||||
* ESTABLISHED (`SYN + ACK` complet -- poignée de main terminée)
|
||||
* RELATED (connexion relative à une déjà établie)
|
||||
* INVALID
|
||||
|
||||
```
|
||||
# autoriser les nouvelles connexions en HTTP
|
||||
iptables -A FORWARD -p tcp --dport 80 -d <@srv_web> -m state --state NEW, ESTABLISHED
|
||||
|
||||
# On peut factoriser tous les established, on ne peut de toutes manière pas
|
||||
# passer en ESTABLISHED dans passer avant par un NEW
|
||||
iptables -A FORWARD -m state --state ESTABLISHED -j ACCEPT
|
||||
```
|
||||
|
||||
#### INVALID: le cas du scan de port
|
||||
|
||||
Une premiere facon de faire du scan avec la methodedu `SYNScan` : on envoie des
|
||||
syn sur un ensemblede ports.
|
||||
|
||||
Il est aussi possile de faire du `NULLScan`: On envoie un segment TCP avec tous
|
||||
les champs mis à `null` Si le port est ouvert alors il n'y aura pas de reponse,
|
||||
S'il est ferme, le serveur renvoie un `RST-ACK`
|
||||
|
||||
`INVALID` permet donc de gérer le cas du `NullScan` explicitement.
|
71
content/admin_reseau/2_IPv6/index.md
Normal file
71
content/admin_reseau/2_IPv6/index.md
Normal file
|
@ -0,0 +1,71 @@
|
|||
---
|
||||
title: "Administration réseaux : IPv6"
|
||||
date: 2022-02-07
|
||||
tags: ["IPv6", "adresses", "autoconfiguration"]
|
||||
categories: ["Administration Réseaux", "Cours"]
|
||||
---
|
||||
|
||||
IPv6 propose 3 type d'adresses:
|
||||
|
||||
* link local -> autoconfig -> voisinage prefix `FE80`
|
||||
* unique local -> ip locale, en cour d'abandon
|
||||
* global
|
||||
|
||||
L'addresse *link local* est en qque sorte une methode de remplacement d'ARP,
|
||||
|
||||
* adresses Unicast -> 1 vers 1
|
||||
* adresses Multicast -> 1 vers +
|
||||
* adresses Anycast -> vers une des machines, en general le plus proche
|
||||
|
||||
## NDP Neighbour Discovery protocol
|
||||
|
||||
ARP est banni d'IPV6, on va utiliser une series de protocoles qui prennent la
|
||||
forme de messages ICMPv6.
|
||||
|
||||
Quatres types de paquet ICMP sont utilisés:
|
||||
|
||||
* Router sollicitation
|
||||
* Router advertisement
|
||||
* Neighbour Sollicitation
|
||||
* Neighbour Advertisement
|
||||
|
||||
1. Bob demande l'addr d'Alice : B -> Network Solicitation -> A
|
||||
2. Alice repond à Bob : A -> Network Advertisement -> B
|
||||
|
||||
## Adresses multicast
|
||||
|
||||
* tous les nœuds dans un segment ff02::1
|
||||
* tous les routeurs dasn un segent ff02::2
|
||||
* cas particulier *solicited-node*
|
||||
|
||||
### envoi d'un multicast
|
||||
|
||||
Je veux envoyé un paquet en multicast vers un groupe contenant le nœud s
|
||||
l'adresse est 2001:XXXX::daa0:6e09. L'adresse de multicast de
|
||||
type solicited-node sera construite avec les 24 dernier bits de l'adesse
|
||||
unicast, ici `a0:6e09` : *fe02::1::ffa0:5e09*.
|
||||
|
||||
Lorsque le paquet est envoyé, l'adresse MAC de destination sera 33:33
|
||||
|
||||
## SLAAC stateless Address AutoConfiguration
|
||||
|
||||
### Phase 1
|
||||
|
||||
Generation d'adresse de liaison locale avec detection des doublons : on envoie
|
||||
une solicitaion avec l'adresse visée: une reponse signifie alors qu'
|
||||
**elle est deja utilisee**. Cette adresse est locale: pas de sortie sur
|
||||
internet.
|
||||
|
||||
### Phase 2
|
||||
|
||||
Annonce du routeur: le nœud envoie une solicitation au routeur pour inciter les
|
||||
routeurs sur le lien a lui envoyer des annonces de routeurs. En reponse le(s)
|
||||
routeur(s) annonce(nt) les routes et prefixes.
|
||||
|
||||
L'hôte génère son adresse globale avec le prefixe fourni.
|
||||
|
||||
## Path MTU
|
||||
|
||||
la fragmentation des paquets trop gros se fait par l'emetteur et non plus par un
|
||||
routeur. L'emetteur est averti par un paquet ICMPv6.
|
||||
|
65
content/admin_reseau/3_authentification/index.md
Normal file
65
content/admin_reseau/3_authentification/index.md
Normal file
|
@ -0,0 +1,65 @@
|
|||
---
|
||||
title: "Administration réseaux : authentification et stockage"
|
||||
date: 2022-03-08
|
||||
tags: ["stockage", "authentification"]
|
||||
categories: ["Administration Réseaux", "Cours"]
|
||||
---
|
||||
|
||||
## Gestion du stockage
|
||||
|
||||
Une fois les utilisateurs authentifiés avec LDAP, il faut pouvoir gerer leur
|
||||
stockage. deux principaux services:
|
||||
|
||||
* NFS (Unix, Linux)
|
||||
* CIFS/SMB (Windows)
|
||||
|
||||
Cote systeme d'expoitation, le descripteur de fichier passe pas un VFS (Virtual
|
||||
File system). C'est une couche d'abstraction qui utilisen ensuite des modules en
|
||||
fonction des systèmes de fichiers (NTFS, ext4 etc.).
|
||||
|
||||
Les modules accèdent au matériel via le Bloc Device Pager. Lui-même contenant
|
||||
des modules en fonction de la technologie sous-jacente (SATA, SAS, SCSI, NVMe).
|
||||
Ces éléments manipulent des blocs. Le blocs représentent l'unité minimale de
|
||||
manipulation de la donnéee sur un périphérique de stockage.
|
||||
|
||||
Pour les stockage réseaux, on rajoute un module dans VFS. Celui-ci ne pointe pas
|
||||
vers le Bloc Device Pager mais vers le réseau.
|
||||
|
||||
## Organisation du stockage
|
||||
|
||||
on distingue 3 technologies de stockage :
|
||||
|
||||
* DAS -- Direct Access Storage -- typiquement les disques sur notre machine
|
||||
* NAS -- Network Attached Storage -- typiquement NFS, SMB
|
||||
* SAN -- Storage Area Network
|
||||
|
||||
Il existe un equivalent du modèle OSI pour le stockage: SNIA.
|
||||
|
||||
## Redondance -- RAID
|
||||
|
||||
Afin d'être tolérant à la panne, il est oportun d'utiliser le RAID *Redundant
|
||||
Array of Inexpensive Disks*. Il y a trois modes de fonctionnements
|
||||
|
||||
* Aggrégat (stripping)
|
||||
* Mirroir (mirorring)
|
||||
* Parité
|
||||
|
||||
Les niveau de RAID sont numérotés de 0 (striping) à 6 en passant par le 4 (un
|
||||
disque de parité) et le 5 (blocs de parité répartis sur l'ensemble des disques).
|
||||
|
||||
## Retour sur le NAS / SAN
|
||||
|
||||
Le NAS se base sur des services exposant du stockage via TCP / IP (voir UDP/ IP)
|
||||
il n'y a pas de limitation de distance mais des problèmes de latences / débits.
|
||||
Il n'y a pas toujours de notion de sécurité.
|
||||
|
||||
Le SAN est spécialisé stockage sur du matériel et des technologies dédiés:
|
||||
Fibre Channel. Les distances doivent rester faible mais le débit conséquent.
|
||||
|
||||
## Focus sur NFS
|
||||
|
||||
Le fonctionnement de NFS utilise les RPC (Remote Procedures Call). Un annuaire
|
||||
des procédures disponibles est disponible dans le `RPC Bind`. NFS ne n'occupe
|
||||
pas des droits, il se basse sur l'UID fourni par le client.Il est cependant
|
||||
possible de mapper l'UID 1 (root) vers un autre utilisateur sur le serveur
|
||||
(généralement `niobody`)
|
56
content/admin_reseau/4_DNS/index.md
Normal file
56
content/admin_reseau/4_DNS/index.md
Normal file
|
@ -0,0 +1,56 @@
|
|||
---
|
||||
title: "Administration réseaux : Le DNS"
|
||||
date: 2022-03-08
|
||||
tags: ["Serveur de nom", "enregistrement"]
|
||||
categories: ["Administration Réseaux", "Cours"]
|
||||
---
|
||||
|
||||
|
||||
Le DNS réponds à la question *quel est l'adresse IP de tel machine?*. Il utilise
|
||||
principalment UDP sur le port 53. Il fonctionne en arbre: on contacte les
|
||||
serveur racines, qui donne les serveurs qui gèrent le premier niveau (le .fr par
|
||||
exemple). Ceux-ci vont donner le serveur DNS du second niveau (u-bordeaux.fr) et
|
||||
ainsi de suite.
|
||||
|
||||
## les entités
|
||||
|
||||
La notion importante dans DNS est la **zone**. Elle représente une partie de
|
||||
l'arbre gérée par une entité.
|
||||
|
||||
## Quels type de requêtes?
|
||||
|
||||
* Quelle est l'adresse IP? `A` et `AAAA`
|
||||
* Quel est le nom de machine? `PTR`
|
||||
* Quels sont les serveurs de nom? `NS`
|
||||
* Quel sont les serveurs de courriels? `MX`
|
||||
* Quelles sont toutes les informations sur le domaine? `AXFR`
|
||||
|
||||
## Modes de fonctionnement
|
||||
|
||||
### mode iteratif
|
||||
|
||||
Lorsqu'on lui pose une question et qu'il n'a pas de réponse, le serveur renvoie
|
||||
vers un autre.
|
||||
|
||||
### mode récursif
|
||||
|
||||
Lorsque le serveur n'a pas la réponse, le serveur consulte lui même d'autres
|
||||
serveurs afin de donner lui-même la réponse au client.
|
||||
|
||||
### autorité
|
||||
|
||||
Un serveur détenant une zone fait autorité sur celle-ci, la réponse contient
|
||||
alors un champ le mentionnant. Ce fonctionnement permet de différencier les
|
||||
réponses d'un serveur faisant autorité et d'un serveur puisant dans son cache.
|
||||
|
||||
## Problèmes liés au DNS
|
||||
|
||||
### DNS Cache Poisoning
|
||||
|
||||
Jusqu'en 2008, le port source des requêtes DNS était toujours le même quel que
|
||||
soit l'implémentation. Une attaque était alors plus simple: il suffisait de
|
||||
deviner l'identifiant de requête codé sur 16bits.
|
||||
|
||||
Une version plus récente de cette attaque, datant de l'été 2021utilise les
|
||||
compteurs globaux des trames UDP afin de deviner le port source. Cette attaque
|
||||
utilise aussi les réponse serveur lors d'un port invalide
|
26
content/admin_reseau/5_DHCP/index.md
Normal file
26
content/admin_reseau/5_DHCP/index.md
Normal file
|
@ -0,0 +1,26 @@
|
|||
---
|
||||
title: "Administration réseaux : DHCP"
|
||||
date: 2022-03-15
|
||||
tags: ["Serveur de nom", "enregistrement"]
|
||||
categories: ["Administration Réseaux", "Cours"]
|
||||
---
|
||||
|
||||
*Dynamic Host Configuration Protocol*. Lors de son arrivée sur un reseaux une
|
||||
machine doit contacter un serveur lui fournissant les paramétrages réseaux
|
||||
(adresse IO, passerelle, serveur DNS...)
|
||||
|
||||
## 3 modes de fonctionnement:
|
||||
|
||||
* manuel: l'administrateur décide quele adresse IP est liée à quelle IP
|
||||
* affectation automatique: attribution permanente d'une IP à la première
|
||||
connexion de la machine
|
||||
* dynamique: attribution d'un bail sur une adresse IP
|
||||
|
||||
## Déroulement de l'obtention des paramètres
|
||||
|
||||
1. Une trame de broadcast est envoyée sur une adresse speciale par le client
|
||||
255.255.255.255. Le
|
||||
2. serveur repond par une trame DHCP offer
|
||||
3. le client fait son choix en envoi une trame DHCP Request
|
||||
4. le serveur confirme par un DHCP Ack
|
||||
5. lors du départ du client, il envoie une trame DHCP Release
|
64
content/admin_reseau/6_courriel/index.md
Normal file
64
content/admin_reseau/6_courriel/index.md
Normal file
|
@ -0,0 +1,64 @@
|
|||
---
|
||||
title: "Administration réseaux : le courriel"
|
||||
date: 2022-03-15
|
||||
tags: ["SMTP", "IMAP", "chiffrement"]
|
||||
categories: ["Administration Réseaux", "Cours"]
|
||||
---
|
||||
|
||||
## Que se passe-t-il lors de l'envoie d'un courriel
|
||||
|
||||
4 entités interviennent
|
||||
|
||||
* MTA : Mail Transmission Agent
|
||||
* MSA :
|
||||
* MDA : Mail Delivery Agent
|
||||
* MUA : Mail User Agent
|
||||
|
||||
C'est au MTA qu'incombe la transmission du courriel envoyé par le MUA. Il
|
||||
utilise le DNS, et notamment le champ MX afin de déterminer le serveur vers
|
||||
lequel envoyer le courriel. Ces échanges se font en utilisant le protocole SMTP
|
||||
|
||||
Le courriel est donc transmis par le MTA vers le MUA qui stocke le message dans
|
||||
l'espace alloué à l'utilisateur.
|
||||
|
||||
Le MUA consulte ensuite le courriel le plus souvent à l'aide du protocole IMAP.
|
||||
|
||||
Les protocoles régissants la gestion ds courriels **sont très ancien et non
|
||||
sécurisés de base**. On leur ajoute une couche de sécurité via le protocole TLS.
|
||||
Cependant si on est en mesure de controler les serveurs que l'on administre, les
|
||||
courriels peuvent passer par des serveurs relais **hors de notre portée** et
|
||||
donc potentiellement sans chiffrement.
|
||||
|
||||
## Stockage du courriel sur le MDA
|
||||
|
||||
Il esxiste deux façons de stocker les courriels sur les MDA:
|
||||
|
||||
* mailbox : les courriels sont stockés séquentiellement dans un gros fichiers
|
||||
* maildir : un fichier par message.
|
||||
|
||||
## Le protocole SMTP
|
||||
|
||||
SMTP est un protocole texte : les commandes sont envoyés aux serveur sous forme
|
||||
de texte. Afin d'inclure des fichiers binaires en tant que pièces jointes, une
|
||||
transformation est nécessaire : la passer en **base64**.
|
||||
|
||||
Côté MUA, il faut savoir de quel type de fochoer il s'agit. Cette information
|
||||
est incluse au forman **MIME** pour *Multi-Purpose Internet Mail Extensions*
|
||||
|
||||
## Le protocole S/MIME
|
||||
|
||||
La faible sécurité des protocoles aut0our su courrier electonique pourr
|
||||
l'utilisation de protocoles permettant la sécurisation et la confidentialité du
|
||||
message.
|
||||
|
||||
On va donc utiliser de la cryptographie asymétrique pour sécuriser le contenu du
|
||||
message. *S/MIME* utilise les certificat x509 pour chiffrer / signer les
|
||||
messages. on peut donner 4 propriété our les messages utilisant S/MIME :
|
||||
|
||||
1. confidentialité
|
||||
2. authenticité
|
||||
3. intégrité
|
||||
4. non-repudiabilité.
|
||||
|
||||
Dans la vraie vie, le chiffrement se fait avec une clé qui est chiffrée à son
|
||||
tour par les clé publique des différents destinataires.
|
Loading…
Add table
Add a link
Reference in a new issue