27
Configuration et dépannage des Réseaux sous Linux 2021 DEBIAN 10.7 OLIVIER D.

Configuration et dépannage des Réseaux sous Linux

  • Upload
    others

  • View
    7

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Configuration et dépannage des Réseaux sous Linux

Configuration et dépannage des Réseaux sous Linux

2021

DEBIAN 10.7 OLIVIER D.

Page 2: Configuration et dépannage des Réseaux sous Linux

1 / 26

1.1 Construire le réseau ....................................................................................................... 2

1.2 Installer les services d’infrastructure réseau.................................................................. 6

1.3 NFS : Service de partage de fichiers Unix ....................................................................... 8

1.4 Samba : le service de partage Microsoft ........................................................................ 9

1.5 Le service DHCP ............................................................................................................ 12

1.6 Le service DNS .............................................................................................................. 13

1.7 NIS : Centraliser l’authentification Linux ...................................................................... 15

1.8 Centraliser l’authentification Windows avec Samba ................................................... 18

1.9 Gestion de la sécurité réseau avec iptables ................................................................. 20

1.10 NTP : Le service de temps ............................................................................................. 23

1.11 Apache .......................................................................................................................... 24

Page 3: Configuration et dépannage des Réseaux sous Linux

2 / 26

1.1 Construire le réseau

Les commandes sont dynamiques (volatiles), les fichiers restent après le redémarrage !

Configurer le réseau (ifconfig – route – netstat)

apt-cache search ndiswrapper : ndiswrapper outil qui permet d’utiliser les pilotes Windows pour les cartes réseau

systemctl status|start|stop|restart networking : gérer le service reseau

apt-get install -y net-tools : rend l’accès à la commande ifconfig

ifconfig : affiche les interfaces actives uniquement

ifconfig -a : affiche toutes les interfaces

ifconfig eth0 down|up : désactive|active l’interface eth0

ifconfig eth1 10.0.0.1 netmask 255.255.255.0 broadcast 10.0.0.2 : modifie l’interface eth1

ifconfig ens33:1 172.16.0.1 netmask 255.255.0.0 : ajoute une adresse IP aliasée raccordée à l’interface ens33

route add -net 192.168.0.0 netmask 255.255.0.0 gw 10.21.0.200 : ajoute une route

route del -net 192.168.0.0 netmask 255.255.0.0 : supprime une route

route add default gw 10.21.255.254 : modifie la passerelle par défaut

netstat -rn : affiche la table de routage sans la résolution de nom (et la passerelle par défaut)

netstat -a : affiche les connexions réseau

Interrogation de serveurs DNS (dig – host – nslookup)

dig : renvoie l’adresse IP du serveur DNS

dig www.informatique1.fr: renvoie l’adresse IP de www.informatique1.fr

dig nic.fr MX|SOA : renvoie les adresses IP des serveurs de messagerie (ou les SOA)

dig -x 192.168.1.223 : renvoie le nom d’hôte de 192.168.1.223

dig @dns.google www.informatique1.fr : interroge dns.google. pour résoudre l’adresse IP www.informatique1.fr

host informatique1.fr : renvoie l’adresse IPv4 et v6 de informatique1.fr

host 192.168.1.223 : renvoie le nom d’hôte pour 192.168.1.223

host -t NS nic.fr : renvoie les enregistrements NS pour nic.fr

arp : affiche le cache arp

arp -s [adresseIP] [adresseMAC] : crée une entrée manuelle dynamique volatile

traceroute : idem que tracert

tcpdump >/dev/tty5 : moniteur réseau en ligne de commande (similaire à ce que propose wireshark)

Scanner les réseaux (nmap : CLI – zenmap : GUI)

nmap -sP 10.11.0.50-254 ou nmap -sP 10.11.0.0/16 : cibler l’écoute

nmap -O 10.11.0.254 : scanner le système d’exploitation du destinataire

nmap -v 10.11.0.254 : scan détaillé (prend du temps)

Page 4: Configuration et dépannage des Réseaux sous Linux

3 / 26

Configuration statique ou DHCP

dhclient : client DHCP

dhclient eth0 : activer DHCP sur eth0 (dynamique, volatile)

dhclient -r eth0 : libérer le bail de eth0

dhclient -r : libère le bail de toutes les interfaces

Fichier /etc/network/interfaces : configuration non volatile des interfaces réseau

L’utilisateur ne peut pas modifier la config dynamique si le fichier /etc/network/interfaces n’est pas vide

auto eth0 # démarre eth0 automatiquement iface eth0 inet dhcp [|static] # configure eth0 en DHCP [en statique]

Fichier /etc/dhcp/dhclient[-eth0].conf : configuration de dhclient

... send host-name "poste1"; # le serveur DHCP reçoit le nom pour enregistrer DNS ...

cat /var/lib/dhcp/dhclient.leases : log des baux DHCP obtenus

Exemple : Configurer le réseau sur un serveur

Configurer le hostname et l’adresse IP

systemctl restart networking : redémarrer le service réseau

vim /etc/hostname: renseigner le nom de machine

vim /etc/hosts : nom de machine à renseigner aussi

vim /etc/network/interfaces : configuration IP statique

auto lo iface lo net loopback # l’utilisateur ne peut plus intervenir sur lo0 auto eth0 iface eth0 inet static # l’utilisateur ne peut plus intervenir sur eth0 adress 10.21.0.1 netmask 255.255.0.0 gateway 10.21.255.254

Résolution de noms :

vim /etc/hosts : resolution des noms de machines

127.0.0.1 localhost 10.0.0.1 contdomain dc001.stagiaires.local

Nota : le fichier est lu séquentiellement : la première occurrence trouvée est celle utilisée

vim /etc/networks : résolution des noms de réseaux

Salle201 10.21.0.0 eni-ecole 172.16.0.0

vim /etc/nsswitch.conf : méthodes de résolution de noms (dans l’ordre)

hosts: files dns [nis] [ldap] […] # files=résolution locale / dsn=résolution DNS

vim /etc/resolv.conf : résolution DNS

nameserver 10.0.0.1 nameserver 10.0.0.2 # serveurs DNS search eni-ecole.local stagiaires.local # suffixes DNS domain betelgeuse.local # suffixe DNS principal (facultatif)

Page 5: Configuration et dépannage des Réseaux sous Linux

4 / 26

Les ports réseaux

En TCP, il y a toujours un client et il y a toujours un serveur

Les ports 0 à 1023 sont les ports bien connus, ils sont listés dans le fichier /etc/services

cat /etc/services | grep telnet : trouver le port utilisé par telnet

http://www.iana.org/assignments/port-numbers : liste des ports connus

Le super serveur xinetd

xinetd sert à la gestion des services réseaux à la demande. Il possède notamment des mécanismes de contrôle d’accès ainsi qu’une aptitude à contrôler de manière temporelle les services

Fichier /etc/xinetd.conf : configuration globale de xinetd

Fichiers /etc/xinetd.d/… : fichiers de paramètres propre au service (exemple : /etc/xinetd.d/vsftp pour le service FTP)

Les services RPC : Appel de Procédures Distantes

Avec RPC, les programmes sont indépendants de la couche IP, RPC fait le lien

rpcbind associe les numéros de programmes RPC à des numéro de ports

apt-get install -y rpcbind : pour installer rpcbind ainsi que la commande rpcinfo

apt-get install -y netdiag : pour installer spray et la command tcpspray

rpcinfo -p : relève les mappages faits par rpcbind

cat /etc/rpc : liste de programmes RPC et numéros de programmes auquel ils sont liés

sprayd 100012 spray

Nota : pour lancer un service RPC, il doit être défini dans /etc/rpc + avoir un n° de port via rpcbind

* spray est un outil de mesure de la bande passante

rpcinfo -p 10.0.0.1 : affiche rpcinfo -p depuis 10.0.0.1

Page 6: Configuration et dépannage des Réseaux sous Linux

5 / 26

Filter les accès avec tcp-wrapper

syntaxe des fichiers /etc/hosts.allow et /etc/hosts.deny :

daemon1,daemon2,... : client1,client2 ... [: spawn <commande>]

• on peut remplacer client par hostname ou adresse IP • on peut remplacer daemon et client par des mots spéciaux

mots spéciaux :

• ALL : tous les daemons ou bien tous les clients • LOCAL (côté client) : nom d’hôte local (pas de résolution DNS) • KNOWN (côté client) : nom dont on peut résoudre l’adresse IP • UNKNOWN (côté client) : nom dont on ne peut pas résoudre l’adresse IP • PARANOID (côté client) : machines dont le nom et l’adresse IP ne correspondent pas (par rapport à la résolution) • En plus de ça, on peut rajouter une variable EXCEPT signifiant « sauf » (exemple : EXCEPT UNKNOWN)

ordre d’exécution :

Deux approches pour le filtrage tcp-wrapper :

• sur un pare-feu = restrictif : ajouter une règle de refus général dans hosts.deny on utilisera hosts.allow pour filtrer plus précisément

• dans un LAN = permissif : par défaut pour tcp-wrapper, on utilisera hosts.allow pour filtrer plus précisément

Exemple de filtrage restrictif :

vi /etc/hosts.deny

ALL : ALL

vi /etc/hosts.allow

vsftpd : .stagiaires.local # vsftpd accepte tous les clients qui finissent par .stagiaires.local telnetd : 10.21. # telnetd accepte tous les clients commençant par 10.21. popd,smtpd,imapd : 10.21. EXCEPT 10.21.0.254 gssftpd : 172.16.0.0/255.240.0.0 # réseau/masque

Activer l’ip forwarding (pour faire suivre les paquets comme un routeur, ou pour les router à travers d’autres réseaux)

Rappel : netstat -r : afficher la table de routage

Activer le routage (dynamique et volatile : ne reste pas après un redémarrage)

echo 1 > /proc/sys/net/ipv4/ip_forward • 0 = pas de routage (par défaut) • 1 = routage activé

Activer le routage statiquement

vi /etc/sysctl.conf # net.ipv4.ip_forward = 1 enlever le # pour décommenter

sysctl -p /etc/sysctl.conf : pour recharger la configuration pour appliquer les changements immédiatement

Ajouter des routes (dynamique et volatile : ne reste pas après un redémarrage)

route add -net 10.11.0.0 netmask 255.255.0.0 gw 10.21.0.250

Ajouter des routes statiquement (Debian & Ubuntu)

/etc/network/interfaces ... # aller à la fin du fichier up route add -net 10.11.0.0 netmask 255.255.0.0 gw 10.21.0.250

Page 7: Configuration et dépannage des Réseaux sous Linux

6 / 26

1.2 Installer les services d’infrastructure réseau

Proxy

• Le but d’un proxy est de mettre en cache les sites http(s)/ftp(s) … à mesure que les clients font des demandes. • Le proxy doit donc pointer vers des serveurs DNS, la passerelle vers l’extérieur … et un service PROXY.

Dans cette notice, on utilise squid comme service de serveur proxy, mais il en existe d’autres.

Attention à l’ordre des règles dans squid.conf ! la première règle qui convient gagne !

Configuration côté serveur :

vi /etc/squid/squid.conf : configuration du proxy squid

visible_hostname proxy # hostname du proxy http_port 3128 # port d’écoute par défaut avec squid cache_mem 20 MB # taille du cache cache_log /var/log/squid/cache.log # emplacement du journal de squid acl sirius src 192.168.0.0/24 192.168.1.0/24 # sirius = 192.168.0.0/24 et 192.168.1.0/24 acl localhost src 127.0.0.1 # localhost = 127.0.0.1 http_access allow sirius # sirius est autorisé pour le http http_access allow localhost # localhost est autorisé pour le http

sirius et localhost sont des noms définis par nous. On peut donner d’autres noms aux acl

Le proxy s’occupe de la résolution de nom et doit pointer vers un NS : /etc/resolv.conf

nameserver 10.0.0.1

Le proxy doit avoir une gateway : /etc/network/interfaces

gateway 10.21.255.254

squid : démarre le service et permet de tester. Si le service démarre c’est super, sinon on résout les erreurs !

Configuration côté client :

Le client ne fait pas la résolution des URL (c’est le proxy qui s’en charge), donc pas besoin de DNS, ni même de gateway

Après le login, les scripts (*.sh) contenus dans /etc/profile.d/ sont exécutés.

vi /etc/profile.d/proxy.sh : ajouter un script au démarrage de la session

export http_proxy http://192.168.0.254:3128/ # adresse_IP_du_proxy:port_d_écoute export ftp_proxy ftp://192.168.0.254:3128/ # pour le ftp

sudo chmod u+x /etc/profile.d/proxy.sh : pour rendre le script exécutable

/etc/profile.d/proxy.sh : pour exécuter le script

env |grep -e proxy : pour savoir si les modifs ont été prises en compte. Doit renvoyer les 2 lignes

En interface graphique, on configure le proxy de Brave, Firefox …

Page 8: Configuration et dépannage des Réseaux sous Linux

7 / 26

Aparté : La gestion des paquets avec Debian/Ubuntu

système d'exploitation format des dépots gestionnaire de paquets configuration des dépots

Red-Hat, CentOS *.rpm rpm, yum /etc/yum.repos.d/

Debian, Ubuntu *.deb dpkg, apt-get /etc/apt/sources/list

SUSE, OpenSUSE *.rpm zypper /etc/zypp/repos.d

vi /etc/apt/sources.list : modifier le fichier de configuration des dépots

deb ............... # dépôts d’autoinstallation des packets deb-src ............... # dépots d’autoinstallation des sources pas besoin :g/^deb-src/s/^/#/

commandes utilisées avec aptitude (aptitude est une interface évoluée de apt)

aptitude update : mise à jour de la base de connaissance des paquets/dépôts

aptitude full-upgrade : mise à jour de tous les paquets du système

aptitude search flash : recherche par mots clés (ici ‘flash’)

aptitude show flashplugin_nonfree : infos sur le paquet ‘flashplugin_nonfree’

aptitude install flashplugin_nonfree : installe le paquet ‘flashplugin_nonfree’

aptitude remove|purge flashplugin_nonfree : désinstalle

dpkg –L <non du paquet> : liste des fichiers installés avec ce paquet

Administrer les machines à distance

On utilise ssh ainsi les mots de passe ne circulent pas en clair

Info : on peut encapsuler n’importe quel protocole dans un tunnel ssh

Configuration côté serveur :

apt-get install -y openssh-server : installation. Ecoute sur le port 22 par défaut

astuce : ajouter la clé publique .pem de l’utilisateur dans son dossier ~/.ssh/authorized_keys/ pour se connecter sans mot de passe

Configuration côté client :

Utilisation de openssh-client (préinstallé). Créer sa clé avec ssh-keygen pour la stocker dans ~/.ssh/

ssh 192.168.1.1 : pour se connecter. L’utilisateur doit avoir un compte à son nom sur la machine distance

ssh –l administrateur 192.168.1.1 ou ssh [email protected]

Explorateurs de fichiers distants :

• Gnome : nautilus : Autres emplacements > Connexion à un serveur > ssh://192.168.1.1 • Kde : konqueror fish://192.168.1.1 • Xfce : thunar • Pour windows : putty (gratuit), MobaXTerm (payant si plus de 12 sessions enregistrées)

Connexion graphique :

• xserver : serveur d’accès graphique. Existe de base sur Linux/Unix. Juste à paramétrer • vnc : fonctionne sur tous les OS • rdesktop : rdesktop –k fr 192.168.0.3 pour se connecter

A part : cockpit : interface d’administration du serveur (https port 9090)

Page 9: Configuration et dépannage des Réseaux sous Linux

8 / 26

1.3 NFS : Service de partage de fichiers Unix

Sur Windows les systèmes de fichiers sont bien différenciés, avec les lettres de lecteurs (G:\, V:\, W:\, etc.)

Sur Unix, le filesystem distant est rattaché à la racine, on ne le différencie pas de ce qui est local

Installation et paramétrage côté serveur NFS

apt-get install -y nfs-kernel-server puis modifier le fichier /etc/exports :

# dossier à partager machines autorisées(options)|machines autorisées(options) /export/public *(sync,ro) /export/admin 192.168.1.223(rw)

systemctl reload nfs-kernel-server.service : recharger le service NFS serveur

ou bien

exportfs –o ro *:/home/dergand/public : partager un répertoire en dynamique

Côté client NFS Linux

showmount -e 192.168.0.1 : affiche les partages de 192.168.0.1

showmount : affiche les partages utilisés localement

mount -t nfs serveur:/chemin/partage /point_de_montage/local : montage dynamique et volatile

montage statique :

Modifier le fichier /etc/fstab :

serveur:/chemin/partage /repertoire/local nfs defaults 0 0

nota : le chemin local doit avoir été créé avec mkdir -p

puis mount -a pour monter les partages du fichier /etc/fstab

Côté client NFS Windows

Sous Windows > fonctionnalités > services pour NFS > client pour NFS

mount \\debian10x64\export\public : monter le partage (Cmd)

New-PSDrive P -PsProvider FileSystem -Root \\debian10x64\export\public : monter le partage (PowerShell)

Page 10: Configuration et dépannage des Réseaux sous Linux

9 / 26

1.4 Samba : le service de partage Microsoft

Permet :

• Partage de fichiers SMB/CIFS, partage d’imprimantes et serveur d’authentification Unix • Compatible Windows, MacOSX, Linux, BSD, Solaris • Intégration à un domaine (NT/AD) existant possible, intégration à un annuaire LDAP possible

Problématique :

• Samba ne gère pas les réplications entre DC principal et DC secondaires • Samba ne gère pas le poussé / tiré des serveurs WINS (ni même les enregistrements WINS statiques) • Rappel : serveurs WINS = serveurs de noms NetBios

Rappel NetBios :

Nota : NBT = NetBios over TCP/IP

Les fichiers /etc/hosts et /etc/samba/lmhosts servent à la résolution des noms NetBIOS

Installer le serveur Samba

apt-get install -y samba samba-common : installer le serveur Samba

systemctl status nmbd : daemon nmbd assurant la résolution des noms NetBios

systemctl status smbd : daemon smbd assurant le partage des ressources SMB/CIFS

winbind : pour un serveur Samba utilisant une authentification distante

Commandes côté client :

apt-get install -y smbclient : installer le client Samba

• nmblookup : interroger un serveur WINS • smbpasswd : gestion comptes et mots de passe Samba • smbtree : navigateur reseau Samba • testparm : vérifie la configuration du fichier /etc/samba/smb.conf sans afficher les valeurs par défaut • testparm -v : affiche aussi les valeurs par défaut du fichier /etc/samba/smb.conf

Page 11: Configuration et dépannage des Réseaux sous Linux

10 / 26

Configurer le serveur Samba

Avant toute modification, sauvegarder le fichier smb.conf : cp /etc/samba/smb.conf /etc/samba/sma.conf.orig

vi /etc/samba/smb.conf : sauvegarder en .orig et créer un nouveau fichier smb.conf vide

Après toute modification du fichier smb.conf, il faut relancer les services

[nom_du_partage] path = /export/distrib [global] pour mettre les paramètres généraux (ex. : writable = no) [netlogon] partage créé pour l’utilisation des scripts d’ouverture de session [homes] créé un répertoire d’accueil pour les utilisateurs authentifiés [printers] partage toutes les imprimantes Unix

Attention au nom des partages répertoires / imprimantes : pas de nom en commun

Exemple :

[global] workgroup = GROUP1 netbios name = debian10x64 security = user (par défaut) encrypt passwords = yes (par défaut) ≤Win95sr2 : non crypté ≥Noyau NT : chiffré NTLM [distrib] path = /samba/distrib writeable = yes @group1 : groupe autorisé à se connecter valid users = @group1 admin &Group1 : groupNIS

Gestion des comptes utilisateurs

Ajouter le compte guest ou nobody : c’est le même compte qui sert pour les utilisateurs anonymes

L’utilisateur toto doit être déclaré sur le serveur dans /etc/passwd et aussi dans samba

Marche à suivre :

1. useradd odehecq : créer l’utilisateur odehecq (il n’est pas obligé de faire un passwd odehecq) 2. pdbedit -a odehecq : (ou smbpasswd pour les vieilles versions de Samba) 3. pdbedit -Lv odehecq : informations de l’utilisateur odehecq, pour vérifier

pdbedit : gérer les utilisateurs Samba

pdbedit -L : lister les utilisateurs Samba

Le client Samba - Sur linux

apt-get install -y smbfs : Installer smbfs. Ajoute les commandes mount.smb et mount.cifs

Monter un partage : mount -t {filesystem_type} -o {options} {path_to_device_file} {directory_to_mount_to}

mount -t cifs -o user=odehecq,domain=stagiaires,iocharset=utf8,uid=olivier //server1/public /mnt Nota : pour afficher dans l’explorateur Nautilus ou Dolphin : smb://server1/public

apt-get install -y smbclient : installer le client samba

findsmb : affiche les postes répondant aux requêtes smb

nmblookup -M WORKGROUP : trouve le master browser de WORKGROUP

nmblookup -A 10.21.100.15 : trouve le nom netbios

Le client Samba - Sur Windows

$PSCred=Get-Credential -credential 'debian10x64\odehecq' New-PSDrive -Name "G" -PSProvider FileSystem -Root \\debian10x64\partage -credential $PSCred Get-PSDrive lister les mappages Get-Help Get-PSDrive Remove-PSDrive supprimer des mappages Get-Help Remove-PSDrive

Page 12: Configuration et dépannage des Réseaux sous Linux

11 / 26

AutoFS : service côté client

dd if=/dev/cdrom of=/import/dico.iso : Exemple, pour monter un cdrom

puis sudo mount -t iso9600 -o loop /import/dico.iso /dico : pour mapper le cdrom dans /dico

Problème : il ne faut pas surcharger fstab, et l’utilisateur doit pouvoir se simplifier la vie

Solution : ls /dico (à la place de mount …) : créé un automontage grace à autofs

tables d’automontage :

Attention, dans le fichier, on met les options en fin de ligne

vim /etc/auto.master : modifie la table maître qui indique le chemin des tables d’automontage

/toto /etc/auto.indirect --ghost # ghost créé des rép. virtuels, les rend visible /- /etc/auto.direct --timeout # /- indique une table directe

Tables directes : ce sont des points de montages qui sont entièrement définis dans le fichier de table directe

vim /etc/auto.direct : modifier le fichier des tables directes

/import/partage1 192.168.15.15:/export/partage Point de montage FS à monter

Tables indirectes : ce sont des points de montages qui sont relatifs au chemin défini dans auto.master

vim /etc/auto.indirect : modifier le fichier des tables indirectes

partage2 192.168.10.10:/export/compta /toto/partage2 FS à monter partage3 -fstype=nfs,rw 192.168.10.10:/export/compta Options

Si on veut que le répertoire d’accueil de odehecq soit sur le serveur, il faut créer le dossier sur le serveur.

Multiplié par le nombre d’utilisateur, cela peut vite devenir chronophage. Heureusement, il y a * et &

vim /etc/auto.master : définir le /home dans le fichier master

/home /etc/auto.home

vim /etc/auto.home : modifier le fichier d’auto-montage du répertoire home

toto 192.168.0.1/export/home/toto * 192.168.0.1/export/home/&

Par exemple, ls /home/xyz va mapper 192.168.0.1/export/home/xyz

Page 13: Configuration et dépannage des Réseaux sous Linux

12 / 26

1.5 Le service DHCP

apt-get install -y isc-dhcp-server : installation du serveur DHCP

• Service : isc-dhcp-server / daemon : dhcpd

Fichier de configuration : /etc/dhcp/dhcpd.conf

Fichier contenant les baux accordés : /var/lib/dhcp/dhcpd.leases

/usr/sbin/dhcpd3 -d : afficher tous les messages provenant du daemon DHCP à l’écran (mode debug)

Le fichier de configuration :

Fichier /etc/dhcp3/dhcpd.conf :

option domain-name "eni.local betelgeuse.fr"; Non de domaines DNS (pour les clients) option domain-name-server 10.10.0.1,10.0.0.2; Adresse des serveurs DNS attribués aux clients default-lease-time 604800; Durée de bail = 1semaine max-lease-time 2592000; Durée max de bail = 1mois ddns-update-style none|interim; Interim : DNS mis à jour par DCHP ; none : non-DNS subnet 192.168.1.0 netmask 255.255.255.0 {} Déclaré mais non configuré, autorise l’interf. subnet 192.168.0.0 netmask 255.255.255.0 { Etendue de réseau range 192.168.0.50 192.168.0.80; range 192.168.0.90 192.168.0.100; option routers 192.168.0.254[,…]; Gateway attribuées aux clients } host imp_01 { Réservation d’une adresse pour imp_01 hardware ethernet 00:11:22:33:44:55; fixed-address 192.168.0.22; option routers 192.168.0.254; }

Le client DHCP isc-dhcp-client

apt-get install -y isc-dhcp-client : installer le client DHCP

Configurer le fichier /etc/network/interfaces ainsi pour utiliser DHCP

auto eth0 iface eth0 inet dhcp # nota on peut laisser toute la config dessous, il n’en tiendra plus compte

Baux obtenus sur la machine locale : /var/lib/dhcp/dhclient[.eth0].leases

Configurer le fichier /etc/dhcp/dhclient.conf : pour configurer le nom envoyé par le client au serveur DHCP

send host-name = "poste01"; # pour configurer un nom diffèrent du hostname

Le relais DHCP isc-dhcp-relay

apt-get install -y isc-dhcp-relay : installer le relais DHCP

Service : isc-dhcp-relay /

Nom du daemon : dhrelay3 : dhrelay3 –d –i eth0 –i eth1 –d 192.168.0.1

Fichier /etc/default/dhcp3-relay

SERVERS = "192.168.1.1" Serveurs DHCP INTERFACES = "eth0 eth1" Interfaces à l’écoute (côté clients + côté serveur) OPTION = ""

Page 14: Configuration et dépannage des Réseaux sous Linux

13 / 26

1.6 Le service DNS

DNS est :

• dynamique : enregistrements ajoutés uniques donc plus rapidement disponibles pour tous • répliqué : les infos existent en plusieurs exemplaires • hiérarchisé : arborescence racine > serveurs racines (TLD) > domaines > hôtes • distribué : plusieurs zones contenant chacune des enregistrements

Rôles :

• Serveur cache : tout serveur DNS fait serveur cache. Permet de diminuer la bande passante • Redirections : vers un DNS de Fournisseur d’Accès Internet (FAI) • Serveur primaire sur une seule zone (celle de son réseau). Il y fait autorité et a les droits RW • Serveur secondaire sur plusieurs zones. Il y fait autorité et a les droits RO

Paramétrage du serveur DNS

apt-get install -y bind9 : installer le serveur DNS

• Service : bind9 / daemon : named

vim /etc/bind/named.conf.local : modifier le fichier de paramétrage du serveur DNS (c’est un sous-fichier de /etc/bind/named.conf et la même syntaxe s’y applique)

# SECTION serveur de cache options { directory "/var/named"; emplacement des fichiers de zone }; zone "." { type hint; file "root.cache"; emplacement des serveurs racine }; ftp.rc.internic.net/domain/named.root zone "0.0.127.in-addr.arpa" { type master; file "127.0.0.inv"; zone inversée localhost OBLIGATOIRE }; # SECTION serveur de redirection option { …; forward first; forwarders {66.55.44.33;[…;] }; adresse IP des redirecteurs }; … # SECTION serveur primaire zone "mondomaine.com" { type master; SOA file "mondomaine.com"; }; zone "2.10.in-addr.arpa" { type master; file "10.2.inv"; }; # SECTION serveur secondaire zone "autredomaine.com" { type slave; file "mondomaine.com"; ne pas créer le fichier ( ! bind = rw) masters {11.0.0.1; }; emplacement du NS maitre }; zone "0.11.in-addr.arpa" { type slave; file "11.0.inv"; masters {11.0.0.1; }; };

Page 15: Configuration et dépannage des Réseaux sous Linux

14 / 26

Les fichiers de zones

Nota : le serveur DNS local est ns1.mondomaine.com = 10.2.0.1 (il gère la zone « rbr.local »)

@ IN SOA ns1.informatique1.fr. admin.informatique1.fr. ( 1 ; n° de série. Penser à l’incrémenter à chaque modif. 21600 ; fréquence de demande de MàJ des slaves 3600 ; temps d’attente avant re-tentative de connexion 604800 ; temps d’expiration 86400 ) ; temps de validité des informations négatives IN NS ns1.informatique1.fr. IN NS ns2.informatique1.fr. ns1 IN A 10.2.0.1 ns2 IN A 10.2.0.2 www IN CNAME ns1.rbr.local. IN MX 10 mail.informatique1.fr. mail IN A 10.2.0.3

Fichiers de zones inverses :

@ IN SOA ns1.mondomaine.com. admin.mondomaine.com. ( 1 21600 3600 604800 86400 )

IN NS ns1.mondomaine.com. IN NS ns2.mondomaine.com. 1.0 IN PTR ns1.mondomaine.com 1.0 hote x.y.0.1/16

Créer une zone déléguée

vim /etc/bind/named.conf.local : on ajoute le serveur ns.perso.rbr.local (10.0.2.5) responsable de perso.rbr.local

zone "rbr.local" { type master; forwarders{ } ; … }; perso IN NS ns.perso délégation de la zone perso.rbr.local ns.perso IN A 10.0.2.5

Page 16: Configuration et dépannage des Réseaux sous Linux

15 / 26

1.7 NIS : Centraliser l’authentification Linux

Nis centralise les fichiers d’authentification

Introduction

• Dans /etc, sur le serveur NIS, il y a passwd – shadow – group : permet l’authentification distante • Le domaine NIS est non hiérarchisé, pas de (.) dans le nom. Exemple : informatique1_nis • Un client est sur un domaine et un seul ! • nsswitch.conf définit le comportement du client NIS • les tables NIS se trouvent dans /var/yp/<domaine_nis>

Configurer le serveur maître NIS

Client NIS Serveur maitre NIS Serveur esclave NIS

NIS

ypbind : client NIS ypserv : service NIS

rcp.yppasswdd : mot de passe

rpc.ypxfrd : transferts serveurs

ypserv : service NIS

Page 17: Configuration et dépannage des Réseaux sous Linux

16 / 26

Configurer le serveur :

domainname informatique1_nis : définit le nom de domaine

apt-get install -y nis autofs : installer. Nota : autofs est utilisé pour l’automontage du répertoire home/ distant

domainname : renvoit le nom du domaine NIS

vim /etc/yp.conf : configurer le domaine et le serveur NIS

domain informatique1_nis server debian10x64 # serveur NIS maitre

Sur le master NIS :

vim /etc/default/nis : modifier la configuration NIS

NISSERVER=master

/usr/lib/yp/ypinit –m : génère les tables NIS

systemctl reload nis.service : relancer le service NIS

useradd –m odehecq : créer l’utilisateur odehecq

passwd odehecq : définir le mot de passe de odehecq

usermod -d /users/odehecq odehecq : modifier le répertoire home de odehecq

vim /etc/auto.master : définir le montage de auto.home dans /users :

/users /etc/auto.home

vim /etc/auto.home : créer le fichier. Ce fichier monte le répertoire distant sur le serveur NIS (ici debian10x64)

* debian10x64:/home/&

vim /etc/exports : ajouter la ligne suivant pour monter le lecteur /home

/home *(rw,sync)

vim /var/yp/Makefile : modifier le makefile pour ajouter un mappage NIS

ALL += auto.master auto.home

make -C /var/yp : compiler le makefile pour mettre à jour les tables NIS

systemctl restat autofs.service && systemctl restart nis.service : relancer les services autofs et nis

Configurer les clients

vim /etc/hosts : ajouter la ligne pour le serveur NIS maitre

192.168.192.135 debian10x64

ping -c4 debian10x64 : tester la résolution non d’hôte / adresse IP

domainname informatique1_nis : définit le nom de domaine (modifie le fichier /etc/defautdomain)

apt-get install -y nis : installer le client NIS

vim /etc/yp.conf : configurer le domaine et le serveur NIS

domain informatique1_nis server debian10x64 # serveur NIS maitre

vim /etc/nsswitch.conf : définir NIS comme gestionnaire de ces fichiers

passwd: compat nis group: compat nis shadow: compat nis automount: nis hosts: files nis dns

systemctl restart nis.service : relancer le service nis

su - <utilisateur_créé_seulement_sur_nis> : tester la liaison entre le client et le serveur nis

Page 18: Configuration et dépannage des Réseaux sous Linux

17 / 26

Interroger un serveur NIS

yptest : teste la liaison client/serveur. Si tout est ok, à la fin il y a le message « 1 test fail »

ypwhich : nom du serveur NIS

ypcat -x : nom des tables NIS

ypcat group : affiche la table group

yppasswd : modifier le mot de passe (rpc.yppasswdd fait les mises à jours serveurs)

Configurer un esclave NIS

Sur le serveur maitre :

/usr/lib/yp/ypinit -m : ajouter les noms des esclaves NIS

ping -n4 srv-nis-dmz : vérifier la résolution du nom d’hôte esclave

vim /etc/yp.conf : pour ajouter l’esclave

domain betelgeuse-nis server srv-nis-dmz

vim /var/yp/Makefile : pour activer la pousser des données vers les esclaves

NOPUSH=false # active la poussée des données vers les esclaves

Sur le serveur esclave :

apt-get install -y nis : Installer NIS

domainname informatique1_nis : définit le nom de domaine

vim /etc/yp.conf : renseigner le master et le slave

domain betelgeuse-nis server debian10x64 domain betelgeuse-nis server srv-nis-dmz

vim /etc/default/nis : modifier la configuration NIS du slave

NISSERVER=slave

/usr/lib/yp/ypinit –s <serveur maitre> : récupère les tables NIS

Mises à jour des serveurs

sudo make –C /var/yp : mise à jour des tables NIS

Sur les esclaves NIS :

via la crontab, ajouter la planification pour exécuter les scripts /usr/lib/yp/ypxfr_...

Page 19: Configuration et dépannage des Réseaux sous Linux

18 / 26

1.8 Centraliser l’authentification Windows avec Samba

Objectif : centraliser l’authentification de clients Windows avec un domaine Samba sous Linux

vim /etc/samba/smb.conf : modifier le fichier de configuration Samba pour pouvoir authentifier des clients Windows

[global] domain logons = yes active l’authentification centralisée security = user obligatoire dans ce cas là workgroup = DOM1 nom du domaine time server = yes pour Windows seulement wins support = yes active serveur WINS

Intégrer les postes de travail au domaine

Sur le serveur :

sudo useradd poste1$ : ajouter l’ordi client

sudo pdbedit -a -m -u poste1$ : ajouter l’ordi client dans la base Samba

sudo pdbedit -a root : compte admin sur samba (pour intégrer)

Sur le client Windows :

Intégrer le poste au domaine

Gérer les profils itinérants

Activer les profils itinérants avec /etc/samba/smb.conf :

[global] logon path = \\%N\%U\profile # emplacement du profil itinérant [homes] writable = yes browseable = no

Désactiver les profils itinérants avec /etc/samba/smb.conf :

[global] logon path =

Page 20: Configuration et dépannage des Réseaux sous Linux

19 / 26

Utiliser les scripts d’ouverture de session

vim /etc/samba/smb.conf : ajouter le script /toto/mes-scripts/logon.com

[global] Logon script = logon.cmd [netlogon] path = /toto/mes-scripts browseable = no writeable = yes

Création d’un fichier de script :

vim /toto/mes-scripts/logon.bat : configurer le script d’ouverture de session

net use g: \\srv1\distrib net use lpt2 \\srv1\lexmark net time \\samba /set /yes

Attention : les fichiers créés sous unix/linux ne sont pas compatibles DOS. Il faut utiliser se ff=dos dans vim

vim od.txt : créer un fichier au format Unix

bonjour tout le monde

od -c od.txt : pour afficher le fichier tel qu’il serait interprété par Windows (au format LF)

b o n j o u r \ n t o u t l e m o n d e \ n

vim od.txt puis dedans :se ff=dos puis sauvegarder :wq : rend le fichier compatible avec Windows

od -c od.txt : pour afficher le fichier tel qu’il serait interprété par Windows (au format CRLF)

b o n j o u r \ r \ n t o u t l e m o n d e \ r \ n

Page 21: Configuration et dépannage des Réseaux sous Linux

20 / 26

1.9 Gestion de la sécurité réseau avec iptables

apt-get install -y iptables : installer le paquet iptable

Certaines règles ont été conçues pour ipchains et fonctionnent différemment

iptables permet :

• filtrage de paquets (IP) / trames (MAC) • NAT • marquage de trames

Configuration du noyau avec SYSCTL

vim /etc/sysctl.conf : configuration du routage au travers du noyau

net.ipv4.ip_forward=1 # routage net.ipv4.conf.all.rc_filter=1 # protection spoofing net.ipv4.tcp.syncookies=1 # protection syn-flood net.ipv4.tcp_max_syn_backlog=1024

Les points d’accroche / hook

3 tables :

• filter (FORWARD / INPUT / OUTPUT) : filtrage • nat (PREROUTING / POSTROUTING / OUTPUT) : routage • mangle (FORWARD / INPUT / OUTPUT / PREROUTING / POSTROUTING) : marquage

La table NAT

• NAT source : on change l’adresse source : pour aller vers l’extérieur (PAT : on change le numéro de port) • NAT Dest : on change l’adresse de destination : pour aller vers l’intérieur (publication de services)

Penser à rajouter dans DNS public : www.betelgeuse.fr A 88.44.22.1

Page 22: Configuration et dépannage des Réseaux sous Linux

21 / 26

Les cibles

iptables -t {table} -A {hook} … … -j {cible} : syntaxe

iptables –A OUTPUT –o eth0 –p icmp –j ACCEPT : exemple : autoriser en sortie, sur eth0, les trames ICMP

Les cibles possibles sont :

Domaine d’application Mot clé Signification

Filtrage ACCEPT Accepté

DROP Refusé / pas d’explication de l’émetteur

REJECT Refusé / explication pour l’émetteur

LOG Logger

NAT MASQUERADE Pour faire du source NAT, plus simple à mettre en place. Utilise le hook POSTROUTING

SNAT Pour du source NAT. Utilise le hook POSTROUTING

DNAT Pour du dest. NAT. Utilise le hook PREROUTING

Comportement par défaut :

Si une trame arrive et n’est concernée par aucune règle, elle suit la « policy » (comportement par défaut).

Par défaut, les trames sont acceptées : POLICY ACCEPT. Pour des raisons de sécurité, dans notre cas, nous faisons POLICY DROP

Comment utiliser iptables ?

Créer les scripts

Exécuter les scripts jusqu’à obtention de la configuration souhaitée

Une fois les scripts ok : service iptables save : génère les tables dans /etc/sysconfig/iptables

Vérifier la configuration des tables : chkconfig --list iptables

Les scripts de tables iptables sont stockés dans /etc/network/if-pre-up.d/*

• Nota : Les tables sont lancées avant la config. réseau • Attention : les fichiers ne doivent pas comporter de point « . » • Nota : Penser au droit x pour l’exécution des scripts : chmod +x script.sh

Page 23: Configuration et dépannage des Réseaux sous Linux

22 / 26

Premières règles iptables – exemple de règles par défaut

création des POLICY : mode restrictif pour [-t filter] :

iptables –P OUTPUT DROP iptables –P INPUT DROP iptables –P FORWARD DROP

autoriser l’interface de loopback (sinon besoin de doubler chaque règle pour lo) :

iptables –A INPUT –i lo –j ACCEPT iptables –A OUTPUT –o lo –j ACCEPT

autoriser depuis eth0 les trames vers ssh :

iptables –A INPUT –i eth0 –p tcp --dport 22 –j ACCEPT iptables –A OUTPUT –o eth0 –p tcp --sport 22 –j ACCEPT

autoriser depuis eth0 les trames icmp

iptables –A INPUT –i eth0 –p icmp –j ACCEPT iptables –A OUTPUT –o eth0 –p icmp –j ACCEPT

autoriser les trames en provenance de eth0 vers eth2 à destination de tcp :80 :

iptables-A FORWARD –i eth0 –o eth2 –p tcp --dport 80 –j ACCEPT iptables-A FORWARD –i eth2 –o eth0 –p tcp --sport 80 –j ACCEPT

autoriser les trames en provenance de eth0 vers eth2 à destination de netbios :

iptables-A FORWARD –i eth0 –o eth2 –p tcp –m multiport --dport 137:139,445 –j ACCEPT iptables-A FORWARD –i eth2 –o eth0 –p tcp –m multiport --sport 137:139,445 –j ACCEPT

autoriser les trames en provenance de 192.168.10.0/24 vers 172.16.0.2 à destination de SQL :

iptables-A FORWARD –s 192.168.10.0/24 –d 172.16.0.2 –p tcp --dport 1433 –j ACCEPT iptables-A FORWARD –s 172.16.0.2 –d 192.168.10.0/24 –p tcp --sport 1433 –j ACCEPT

conntrack : suivi de l’état des connexions

autoriser les trames en provenance de (et initiées par) eth0 vers eth1 à destination de http/https :

iptables-A FORWARD –i eth0 –o eth1 –p tcp –m multiport --dport 80,443 \ -m state --state NEW,ESTABLISHED,RELATED –j ACCEPT iptables-A FORWARD –i eth1 –o eth2 –p tcp –m multiport --sport 80,443 \ -m state --state ESTABLISHED,RELATED –j ACCEPT

Le NAT

Par défaut, le paramètre est -t nat –P … ACCEPT

Marche à suivre :

iptables –t nat -F : vidage des règles

iptables –t nat -A POSTROUTING -o eth1 -j MASQUERADE : source NAT vers eth1

Nota : avec NAT, il n’y a pas besoin de faire la règle réciproque

Commandes utiles

iptables -L : liste les tables iptables

iptables-legacy-save : liste les tables iptables à l’écran (mieux)

-h à n’importe quel niveau : apporte de l’aide sur l’option attendue

Page 24: Configuration et dépannage des Réseaux sous Linux

23 / 26

1.10 NTP : Le service de temps

Organisation

En entreprise on ne trouve que des NTP de niveaux 3 et supérieurs.

Attention : chaque serveur NTP doit être synchronisé sur un serveur de niveau supérieur

Configuration NTP côté serveur

apt-get install -y ntp : installer le service NTP. Nom du daemon : ntpd

vim /etc/defaut/rcS : paramétrer le service NTP

UTC=yes # il faut que le serveur soit réglé en UTC

vim /etc/ntp.conf : configuration NTP

server 0.fr.pool.ntp.org # liste des serveurs de niveau sup. ... restrict 127.0.0.1 restrict 192.168.0.0 mask 255.255.255.0 nomodify notrap # peuvent se mettre à jour restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap # mais pas modifier

Configuration NTP côté client

vim /etc/ntp.conf : fichier de configuration NTP

… server ntp.eni-ecole.net # serveur faisant autorité …

Commandes utiles

ntptrace : renvoie les infos sur la machine (stratum = niveau)

ntptrace ntp.informatique1.fr : renvoie le niveau de strate du serveur. 1-15 : synchro / 16 : no

Page 25: Configuration et dépannage des Réseaux sous Linux

24 / 26

1.11 Apache

tasksel : liste un ensemble cohérent de paquets, pour les installer ensuite

apt-get install -y apache2 : installer apache2 (serveur web). daemon : apache2

Les modules

Apache est un serveur modulaire : il fonctionne sur la base de modules.

apache2 -l : liste des modules compilés avec le noyau

apache2 mod_so.c :rechargement dynamique des modules SO

apache2ctl -M : liste des modules qui peuvent être chargés statiquement (static) ou dynamiquement (shared)

Le fichier /etc/apache2/envvars contient l’utilisateur et le groupe qui exécutent apache2

export APACHE_RUN_USER=www-data export APACHE_RUN_GROUP=www-data

apache2 s’installe dans /etc/apache2/

/etc/apache2/mods-available/(modules stockés)

/etc/apache2/mods-enabled/(modules actifs, liens vers mods-available)

a2enmod imagemap : rend disponible le module imagemap

a2dismod mime-magic : rend indisponible le module mime-magic

Nota : Tous les modules apache2 sur Debian commencent par libapache2-mod-

Les fichiers de configuration

/etc/apache2/ports.conf : ports TCP pour lesquels Apache sera à l’écoute par défaut

/etc/apache2/apache2.conf : fichier principal de configuration (contient des INCLUDE)

Les conteneurs

vim /etc/apache2/sites-available/monsiteweb.txt : configurer un site web

ServerRoot "/etc/apache2" # exemple d’instruction, ici la racine apache2 <instruction1 paramètre> … … <instruction2 paramètre> … … </instruction2> </instruction1>

Page 26: Configuration et dépannage des Réseaux sous Linux

25 / 26

Les instructions exécutées sous conditions

IfModule :

<IfModule mpm_prefork_module> … # que si le module mpm_prefork_module est chargé … </IfModule>

IfDefine :

<IfDefine Maintenance> … # que si le daemon est lance avec le paramètre … httpd –D Maintenance </IfDefine>

IfVersion :

<IfVersion >=2.1> … # que si la version du serveur qui s’exécute est ≥ 2.1 … </IfVersion>

Les instructions exécutées pour une arborescence

Directory :

<Directory /var/www/rep1> … # en fonction de l’arborescence réelle … </Directory>

Files :

<Files privé.html> … # tous les fichiers “privé.html” quelle que soit … l’arborescence </Files>

Location :

<Location /private> … # s’applique pour le repertoire virtuel “/private” … </Location>

Les sites

/etc/apache2/sites-available/* : liste des sites web stockés

/etc/apache2/sites-enabled/* : liens version les sites web actifs

a2ensite fichier : activer un site

a2dissite fichier : désactiver un site

penser à faire un sudo apache2ctl restart pour recharger le daemon

Page 27: Configuration et dépannage des Réseaux sous Linux

26 / 26

Méthodes possibles d’hébergement des sites

• Ajouter des adresses IP à l’interface (en faisant de l’IP Aliasing) • Changer le numéro de port pour le site (exemple : les ports 81 à 83 pointent vers les site1 à site3) • On crée des noms d’hôtes virtuel (exemple : www.site1.com pointe vers site1 ; www.site2.com pointe vers site2)

Créer un site par adresses IP :

sudo ifconfig eth0:site1 192.168.1.2 : creation d’une IP aliasée

vim /etc/apache2/sites-available/site1 : configurer l’appel au site web site1

<VirtualHost 192.168.1.2> DocumentRoot /var/www/site1 # chemin du site </VirtualHost>

Créer un site par numéro de port :

vim /etc/apache2/site-available/site2 : configurer l’appel au site web site2

<VirtualHost *:800> # port choisi dans l’URL DocumentRoot /var/www/site2 # chemin du site </VirtualHost>

Créer un site par nom d’hôte virtuel :

vim /etc/apache2/site-available/sites3-4 : créer l’appels aux sites web site3 et site4

NameVirtualHost *:801 # n’importe quelle adresse du port 801 <VirtualHost *:801> DocumentRoot /var/www/site3 # chemin du site ServerName site3.sirius.com # nom du site3 (URL) </VirtualHost> <VirtualHost *:801> DocumentRoot /var/www/site4 # chemin du site ServerName site4.sirius.com # nom du site4 (URL) ServerAlias toto www.siteN.com </VirtualHost>

Instructions complémentaires

Listen80 [Listen 800] … # indique sur quels ports Apache est à l’écoute DirectoryIndex index.html […] … # indique quel fichier ouvrir lors de l’accès au site ServerAlias titi.fr […] … # permet de joindre un site à plusieurs URL