Configuration et dépannage des Réseaux sous Linux
Transcript of Configuration et dépannage des Réseaux sous Linux
Configuration et dépannage des Réseaux sous Linux
2021
DEBIAN 10.7 OLIVIER D.
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
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)
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)
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
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
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 …
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)
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)
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
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
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
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 = ""
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; }; };
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
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
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
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_...
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 =
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
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
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
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
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
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>
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
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