浏览代码

Ajout: réseau

Laurent HUBERT 7 年之前
父节点
当前提交
4fdf571302
共有 2 个文件被更改,包括 459 次插入0 次删除
  1. 127 0
      B-outil-reseau.md
  2. 332 0
      C-installation-DNS.md

+ 127 - 0
B-outil-reseau.md

@@ -0,0 +1,127 @@
+# Automatisation de tâches réseau
+
+## Découverte du réseau
+
+### Installation des outils
+
+```bash
+sudo apt-get update && sudo apt-get install arp-scan nmap
+```
+
+### Configuration réseau
+
+La commande `ip a` permet de connaître la configuration réseau de la machine courante:
+
+```bash
+$ ip a
+1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
+    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
+    inet 127.0.0.1/8 scope host lo
+       valid_lft forever preferred_lft forever
+    inet6 ::1/128 scope host
+       valid_lft forever preferred_lft forever
+2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 1000
+    link/ether 00:0c:29:70:34:f0 brd ff:ff:ff:ff:ff:ff
+    inet 172.16.80.128/24 brd 172.16.80.255 scope global ens33
+       valid_lft forever preferred_lft forever
+    inet6 fe80::20c:29ff:fe70:34f0/64 scope link
+       valid_lft forever preferred_lft forever
+```
+
+L'interface `ens33` est ici active et possède une adresse IP.
+
+### Voisinage réseau
+
+La commande suivante permet de découvrir toutes les machines sur le voisinage réseau:
+
+```bash
+sudo arp-scan --interface=ens33 172.16.80.1/24
+```
+
+Son exécution donne la sortie ressemblant à ceci :
+
+```
+Starting arp-scan 1.9 with 256 hosts (http://www.nta-monitor.com/tools/arp-scan/)
+172.16.80.1	00:50:56:c0:00:02	VMware, Inc.
+172.16.80.2	00:50:56:f4:f4:8a	VMware, Inc.
+172.16.80.254	00:50:56:e2:3f:0c	VMware, Inc.
+
+3 packets received by filter, 0 packets dropped by kernel
+Ending arp-scan 1.9: 256 hosts scanned in 1.871 seconds (136.83 hosts/sec). 3 responded
+```
+
+
+#### Exercice : Scan simple
+
+Ecrivez un script `scan-if` qui va prendre un paramètre: le numéro de l'interface réseau donné par `ip a`. Dans l'exemple précédent, `2` donne l'interface `ens33`
+
+L'appel du script donnera la sortie suivante:
+
+```bash
+$ scan-if 2
+172.16.80.1	00:50:56:c0:00:02	VMware, Inc.
+172.16.80.2	00:50:56:f4:f4:8a	VMware, Inc.
+172.16.80.254	00:50:56:e2:3f:0c	VMware, Inc.
+```
+
+Exécutez ce script en branchant votre machine sur différents réseaux.
+
+**Note:** pour redémarrer l'interface réseau, utilisez `sudo systemctl restart networking`
+
+#### Découverte d'une machine
+
+La commande suivante:
+
+```bash
+sudo nmap -O -sV  172.16.80.128
+```
+
+donne la sortie:
+
+```
+Starting Nmap 7.40 ( https://nmap.org ) at 2018-01-24 01:17 CET
+Nmap scan report for 172.16.80.128
+Host is up (0.000036s latency).
+Not shown: 998 closed ports
+PORT   STATE SERVICE VERSION
+22/tcp open  ssh     OpenSSH 7.4p1 Debian 10+deb9u2 (protocol 2.0)
+80/tcp open  http    Apache httpd 2.4.25 ((Debian))
+Device type: general purpose
+Running: Linux 3.X|4.X
+OS CPE: cpe:/o:linux:linux_kernel:3 cpe:/o:linux:linux_kernel:4
+OS details: Linux 3.8 - 4.6
+Network Distance: 0 hops
+Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
+
+OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
+Nmap done: 1 IP address (1 host up) scanned in 10.29 seconds
+```
+
+Etudiez le manuel de `nmap` pour déterminer à quoi servent les différents paramètres:
+
+- `-O`
+- `-sV`
+
+Est-il possible de ne scanner que le port 22 ?
+
+#### Exercice: Scan approfondi
+
+Vous allez reprendre le script précédent.
+
+Cette fois, pour chaque IP, si la machine possède un port `ssh` ouvert, tentez une connexion en utilisant votre clef SSH et votre login.
+
+Sur chaque machine cible, lancez une commande permettant de récuperer le contenu du fichier `/etc/resolv.conf` et d'en récuperer les `nameserver` (DNS).
+
+Votre script devra lister ces `nameserver` pour les machines auxquelles elle aura réussi à se connecter. L'OS de la machine doit également être affiché.
+
+Si la connexion à la machine est impossible, afficher `N/A` pour la valeur du `nameserver`
+
+Ajoutez un affichage des noms des colonnes:
+
+```bash
+$ scan-deep 2
+Target        OS               nameserver
+172.16.80.1   "Apple iOS 10"   N/A
+172.16.80.2   "VMware Player virtual NAT device"  N/A
+172.16.80.254	"Linux 3.8 - 4.6"	172.16.80.2
+```

+ 332 - 0
C-installation-DNS.md

@@ -0,0 +1,332 @@
+# Installation de serveur DNS sous Debian
+
+## Introduction
+
+Ceci est une procédure permettant d'installer un serveur DHCP sur une machine Debian ainsi qu'une passerelle réseau.
+
+Son nom sera: `netgateway`.
+
+Cette machine comportera :
+
+* 256 Mo de RAM
+* 3 Go de disque dur
+* 2 cartes réseau montées sur deux `vmnet` différents
+* aucune carte son, ni imprimante
+
+## Configuration du réseau
+
+On désigne par `vmnet` une carte réseau virtuelle.
+
+![Schéma du réseau](images/reseau.png)
+
+Dans ce cas précis, on utilise une VM qui comporte deux cartes (et donc connectée à deux `vmnet` différents) :
+
+* une dont le réseau est le réseau externe (le nom `eth0` peut changer selon la machine).
+* une dont le réseau est 172.16.81.0/24 (le nom `eth1` peut changer selon la machine).
+
+Vous **devrez** sans doute **adapter les noms des interfaces**.
+
+Pour en connaître les noms réelles, utilisez:
+
+```bash
+ip a
+```
+
+**Vous devez impérativement gérer ces deux réseaux sur deux *vmnet* différents.**
+
+### Préparation obligatoire
+
+Prenez un papier et un crayon et préparez votre travail en amont afin d'éviter les erreurs.
+
+**Faites vérifier votre préparation (schémas) par le formateur.**
+
+Ceci est aussi à adapter **aux besoins** (c'est-à-dire au plan d'adressage que vous auriez mis en place)
+
+### Avertissement
+
+Toute configuration ne respectant pas ce qui précède risque de **provoquer des dysfonctionnements** sur le réseau local. Il est de votre responsabilité de configurer correctement vos cartes `vmnet`.
+
+### Configuration spécifique pour une machine avec deux cartes réseau
+
+Dans ce qui suit, vous allez devoir modifier les fichiers **en adaptant le nom de l'interface réseau** :
+
+- `eth0` doit être remplacé par `ensXX`;
+- `eth1` doit être remplacé par `ensYY`.
+
+#### Carte réseau eth1
+
+**Exercice**: vous allez adapter le nom de cette interface selon le nom de l'interface donné par le système d'exploitation.*
+
+**IMPORTANT: faites des sauvegardes de votre configuration ou utilisez `etckeeper`**
+
+Ecrivez un script qui édite `/etc/network/interfaces` en rajoutant les informations nécessaires, et surtout **en adaptant les identifiants des interfaces réseau.**
+
+Les paramètres suivants sont à utiliser:
+
+```
+INTERFACE_WAN=eth0
+INTERFACE_LAN=eth1
+LAN_IP=172.16.81.2
+LAN_NET=172.16.81.0
+LAN_MASK=255.255.255.0
+LAN_BROADCAST=172.16.81.255
+```
+
+Pour cela, utilisez l'exemple suivant:
+
+```conf
+# The loopback network interface
+auto lo
+iface lo inet loopback
+
+# The primary network interface
+allow-hotplug eth0
+iface eth0 inet dhcp
+
+auto eth1
+iface eth1 inet static
+    address 172.16.81.2
+    dns-nameservers 172.16.81.2
+    network 172.16.81.0
+    netmask 255.255.255.0
+    broadcast 172.16.81.255
+
+```
+
+Note: il n'y a pas de gateway (`eth1` n'est pas la passerelle vers Internet)
+
+On redémarre:
+
+```bash
+sudo systemctl restart networking
+```
+
+## Installation des services
+
+### Serveur DHCP
+
+#### Installation
+
+On installe `isc-dhcp`:
+
+```bash
+sudo apt-get install isc-dhcp-server
+```
+
+On fait une **copie de sauvegarde** du fichier de configuration:
+
+```bash
+sudo cp /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.bak
+```
+
+#### Interface réseau
+
+Editer le fichier `/etc/default/isc-dhcp-server`
+
+Modifier la valeur de INTERFACES:
+```conf
+INTERFACES="eth1"
+```
+
+#### Configuration des adresses
+
+On édite ce fichier `/etc/dhcp/dhcpd.conf`:
+
+```conf
+ddns-update-style none;
+
+# option definitions common to all supported networks...
+option domain-name         "exemple.cesi";
+
+option domain-name-servers 172.16.81.2;
+
+default-lease-time 600;
+max-lease-time 7200;
+
+# If this DHCP server is the official DHCP server for the local
+# network, the authoritative directive should be uncommented.
+authoritative;
+
+# Use this to send dhcp log messages to a different log file (you also
+# have to hack syslog.conf to complete the redirection).
+log-facility local7;
+
+# No service will be given on this subnet, but declaring it helps the
+# DHCP server to understand the network topology.
+subnet 192.168.0.0 netmask 255.255.255.0 {
+}
+
+```
+
+On ajoute le paragraphe suivant:
+
+```conf
+subnet 172.16.81.0 netmask 255.255.255.0 {
+  authoritative;
+  range                       172.16.81.13 172.16.81.50;
+  option domain-name-servers  172.16.81.2 ;
+  option domain-name          "example.com";
+  option routers              172.16.81.2;
+  default-lease-time          3600;
+  max-lease-time              3600;
+  option subnet-mask          255.255.255.0;
+  option broadcast-address    172.16.81.255;
+
+}
+
+```
+
+### Ajout d'un hôte
+
+On ajoute le paragraphe suivant pour permettre à un hôte de se connecter et obtenir une adresse IP:
+
+```conf
+host debiantsr {
+  hardware ethernet 00:0c:29:be:f9:93;
+  fixed-address 172.16.81.11;
+}
+```
+
+#### Redémarrage du serveur
+
+Une fois le réseau redémarré et isc-dhcp configuré on peut le démarrer (ou redémarrer avec `restart`):
+
+```bash
+sudo systemctl start isc-dhcp-server
+```
+
+#### Affichage de la liste des réservations d'adresse
+
+Le fichier `/var/lib/dhcp/dhcpd.leases` contient les réservations en cours:
+
+```bash
+less /var/lib/dhcp/dhcpd.leases
+```
+
+
+#### Journaux
+Les journaux permettent d'afficher les informations renvoyées par le serveur:
+
+```bash
+sudo journalctl -f -u isc-dhcp-server
+```
+
+Enlever `-f` pour un affichage normal (c'est-à-dire qui utilise la commande `less`).
+
+Le paramètre `-f` permet d'avoir le même comportement que `tail -f`
+
+### Autres outils associés
+
+Voir cette page:
+https://www.isc.org/community/tools/
+
+## Mise en place de la passerelle réseau
+
+### IP Forwarding
+
+```bash
+sudo ne /etc/sysctl.conf
+```
+
+On décommente les lignes suivantes:
+
+```conf
+net.ipv4.ip_forward=1
+# ...
+net.ipv6.conf.all.forwarding=1
+```
+
+On met à jour le système par rapport à cette nouvelle configuration
+
+```bash
+sudo sysctl -p
+```
+
+Et on vérifie que l'on obtient 1 en appelant cette commande:
+
+```bash
+$ cat /proc/sys/net/ipv4/ip_forward
+1
+```
+
+
+#### Exercice
+
+Ecrire un script qui remplace:
+
+- `net.ipv4.ip_forward=1` par `net.ipv4.ip_forward=0`
+- `net.ipv6.conf.all.forwarding=1` par `net.ipv6.conf.all.forwarding=1`
+
+### Règles iptables
+
+#### Définition
+
+Afin de permettre à une machine se connectant à cette passerelle d'accéder à Internet, il faut ajouter la règle suivante (n'oubliez pas d'adapter l'identifiant réseau):
+
+```bash
+sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
+```
+
+Cependant, cette règle sera perdue au prochain redémarrage de la machine.
+
+#### Sauvegarde
+
+Pour éviter cela, on va installer un paquet qui permet de sauvegarder la configuration iptables et de la restaurer automatiquement au démarrage.
+
+```bash
+sudo apt-get install iptables-persistent
+```
+
+Au moment de l'installation, l'installeur nous demande si nous souhaitons sauvegarder les règles. Ce qui est ici le cas.
+
+#### Sauvegarde en cas de modification
+
+
+Imaginons que nous effectuions un changement temporaire. Par exemple une règle de NAT qui redirige le port 80 vers le port 8080:
+
+```bash
+sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080
+```
+
+Si on veut rendre cette nouvelle règle permanente (c'est-à-dire active au prochain redémarrage de la machine), il suffit de relancer la commande suivante pour sauvegarder à nouveaux les règles iptables:
+
+```bash
+sudo dpkg-reconfigure -p critical iptables-persistent
+```
+
+#### Information complémentaire
+
+Cette dernière commande (`dpkg-reconfigure`) est l'équivalent de l'exécution des commandes suivantes:
+
+```bash
+    iptables-save >/etc/iptables/rules.v4
+    ip6tables-save >/etc/iptables/rules.v6
+```
+
+Au redémarrage, on a l'équivalent des commandes suivantes qui est exécuté par `iptables-persistent`
+
+```bash
+iptables-restore < /etc/iptables/rules.v4
+ip6tables-restore < /etc/iptables/rules.v6
+```
+
+Voir [cette réponse sur StackOverflow](https://stackoverflow.com/a/30819095/1011366)
+
+#### Effacement des règles iptables
+
+Les commandes suivantes permettent de supprimer toutes les règles iptables:
+
+```bash
+iptables -F
+iptables -t nat -F
+iptables -t mangle -F
+iptables -X
+```
+
+Ecrivez un script qui vérifie qu'il est lancé par `root` et qui lance ces commandes.
+
+### Tests
+
+Vous devez tester que vos machines clientes se connectent à Internet.
+
+Vous devez que vos scripts fonctionnent (par exemple qu'ils désactivent l'accès Internet puis le réactivent).