Administration Linux : Installation – Configuration - Services

Transcription

Administration Linux : Installation – Configuration - Services
LPro RTWeb – Administration Linux
2010/2011
Administration Linux :
Installation – Configuration - Services
Plan
Administration Linux : Installation – Configuration - Services ...................................................................................1
1 Installation Linux..................................................................................................................................................2
1.1
Introduction.................................................................................................................................................2
1.2
Matériel – Boot ...........................................................................................................................................2
1.3
Schéma du réseau........................................................................................................................................3
1.4
Installation de l’image Ghost de Debian.....................................................................................................3
2 Configuration réseau.............................................................................................................................................4
2.1
Utilitaires de configuration et diagnostic réseau .........................................................................................4
2.2
Configuration permanente des interfaces....................................................................................................5
2.3
Nom de la machine et résolution des noms.................................................................................................5
2.4
Interface graphique network-admin .....................................................................................................6
2.5
IPv6 .............................................................................................................................................................8
3 Gestion des utilisateurs .........................................................................................................................................9
3.1
Création de groupes et de comptes..............................................................................................................9
3.2
Configuration de l’environnement utilisateur ...........................................................................................11
4 Gestionnaire de paquets ......................................................................................................................................12
4.1
DPKG........................................................................................................................................................12
4.2
APT ...........................................................................................................................................................12
4.3
Synaptic.....................................................................................................................................................12
4.4
Commandes utiles de manipulation de paquets ........................................................................................12
5 Démarrage System V ..........................................................................................................................................14
5.1
Le boot, init et les runlevels ......................................................................................................................14
5.2
Les outils de manipulation des services ....................................................................................................14
6 VirtualBox – Machine virtuelle ..........................................................................................................................15
6.1
Installation de VirtualBox .........................................................................................................................15
6.2
VM cliente Debian ....................................................................................................................................15
7 Quelques services réseau ....................................................................................................................................17
7.1
Telnet ........................................................................................................................................................17
7.2
FTP............................................................................................................................................................18
7.3
SSH, SCP, SFTP .......................................................................................................................................19
7.4
HTTP.........................................................................................................................................................20
7.5
MySQL......................................................................................................................................................20
8 Plus .....................................................................................................................................................................21
8.1
Problème de sources Debian .....................................................................................................................21
8.2
Machine cliente préinstallée......................................................................................................................21
8.3
VirtualBox et le réseau..............................................................................................................................21
LPro RTWeb – IUT1 – R&T
1
1 Installation Linux
1.1 Introduction
Ce TP se déroule sous la distribution Debian lenny 5.04 de Linux.
Une distribution Linux (ou distribution GNU/Linux) est un
ensemble cohérent de logiciels rassemblant un système
d’exploitation composé d’un noyau Linux, de logiciels du
projet GNU et de logiciels supplémentaires - le plus souvent
libres. Elles comprennent le plus souvent un logiciel
d’installation et des outils de configuration.
Voici les caractéristiques principales de la distribution
Debian :
o
Réputé pour sa stabilité.
o
Système de paquetages .deb avec gestion avancée des dépendances.
o
Installation / mise à jours des packages par téléchargement depuis des dépôts (repositories).
o
Très large bibliothèque de logiciels libres.
o
Processus de démarrage System V (prononcer « système cinq »).
1.2 Matériel – Boot
1.2.1
Caractéristiques matérielles
Voici les caractéristiques matérielles des PC dont vous disposez :
o
carte mère ASUS P5VD2-VM (carte réseau et vidéo intégrée); processeur Intel Dual-Core, 2 Go de DRAM
o
Bus SATA et ATAPI/IDE pour les mémoires de masse
o
Lecteur DVD/CDROM
o
Cartes réseaux décrites sur la figure suivante :
Processeur Dual Core, 2,2GHz (juin 2008)
2Go RAM
1 disque dur ATAPI/IDE, maître du primaire (bus0)
1 lecteur CD/DVD ATAPI/IDE, maître du bus secondaire (bus1)
3 cartes réseau :
- 1 carte réseau 10/100BaseTX, chipset via-rhine II (sur carte mère)
o Mac : 00:1D:60:xx:xx:xx
2
-
1 carte réseau 10/100BaseTX, chipset RTL8139C (1 led, au milieu)
o Mac : 00:08:A1::xx:xx:xx
-
1 carte DLINK Gigabit DGE-528T, chipset RTL8169 (4 leds, en bas)
o Mac : 00:1E:58::xx:xx:xx
LPro RTWeb – IUT1 – R&T
1.3 Schéma du réseau
Ce TP est réalisé individuellement avec une seule machine physique. Brancher votre machine au réseau fédérateur
172.16.6.0/24 en vous brassant sur un switch libellé « Réseau TP 172.16.x.x » dans l’armoire de brassage.
DNS
Serveur FTP
Routeur/NAT
gw.gtr.iut
172.16.6.254
gtrX1.gtr.iut
172.16.6.X1
A1
Serveur Web
dns.gtr.iut
ftp.gtr.iut
172.16.6.200
www.gtr.iut
172.16.6.220
gtrY1.gtr.iut
172.16.6.Y1
B1
suffixe DNS gtr.iut
réseau 172.16.6.0/24
gtrX2.gtr.iut
172.16.6.X2
A2
gtrY2.gtr.iut
172.16.6.Y2
B2
…
1.4 Installation de l’image Ghost de Debian
Pour installer Debian, la méthode préconisée est de booter sur un CD d’installation minimal « netinstall » +
téléchargement des paquets depuis les serveurs sur Internet.
Pour gagner du temps, on installera Debian à partir d’un DVD bootable contenant un client Ghost et une image
préinstallée de Debian.
Écraser l’intégralité du disque en choisissant 2Go pour la partition swap, le reste pour la partition Linux.
Booter Linux et se loguer sous le compte user, mot de passe user.
Ouvrir un terminal et passez sous l’identité de root (mot de passe toto) avec su (Super User). Notez le prompt avec
‘#’ à la place de ‘$’.
$ su
Mot de passe :
#
LPro RTWeb – IUT1 – R&T
3
2 Configuration réseau
La configuration réseau complète d’une machine comprend :
o
o
o
o
o
fixer le nom de la machine (hostname) ;
configurer les interfaces réseaux (adresse IP, masque, DHCP ou statique) ;
mettre en place la table de routage (routes statiques, route par défaut) ;
configurer le résolveur (interrogation des DNS pour l’association nom de domaine@IP) ;
pour une machine routeur, activer le routage.
L’image « Ghost » déployée sur le PC n’a pas d’interface réseau configurée et a pour nom de machine « debian ».
2.1 Utilitaires de configuration et diagnostic réseau
Les utilitaires suivant servent à configurer le réseau et diagnostiquer son bon fonctionnement.
ifconfig : configuration IP des interfaces réseau
Pour voir la configuration IP des interfaces réseau (actives ou non) :
# ifconfig -a
On voit les adresses IPv4 et IPv6, l’adresse MAC, le statut UP/DOWN, etc.
L’utilitaire ifconfig permet de consulter mais aussi de fixer la configuration IP. Il est utilisé dans les scripts de
configuration du réseau lancés au boot de Linux.
ethtool : état des cartes Ethernet
Lorsque l’on a plusieurs cartes Ethernet, comment savoir sur laquelle est branchée au réseau ? L’utilitaire ethtool
donne des informations sur la carte Ethernet (branchée ou non, full ou half duplex, 10Mbits/s ; 100Mbits/s ou
1000Mbits/s, …).
# ethtool eth0
ip : utilitaire réseau « bas niveau » de Linux
C’est l’utilitaire bas niveau de configuration réseau propre à Linux. Les autres utilitaires présentés ici (ifconfig,
arp, et route) s’appuient en fait sur ip.
# ip addr show
Liste les interfaces réseaux, leur état au niveau IP (UP/DOWN) ou physique (LOWER_UP/NO_CARRIER), leurs
adresses IPv4 ou IPv6, leur adresse MAC,…
arp : manipulation de la table ARP (correspondance adresses IPMAC)
On peut afficher la table ARP :
# arp -n
Lorsque vous aurez configuré votre interface réseau, vous pourrez remplir cette table en faisant des pings vers des
IP de votre réseau. Les informations sont valides pendant quelques minutes. On peut vider la table manuellement :
# ip neigh flush all
route : manipulation de la table de routage
On peut afficher la table de routage :
# route -n
L’utilitaire route permet de consulter mais aussi de fixer la table de routage. Il est utilisé dans les scripts de
configuration du réseau lancés au boot de Linux.
Exemple : ajout d’une route par défaut : route add default gw 172.16.6.254
traceroute : liste des routeurs traversés
Cet utilitaire envoie des datagrammes UDP ou des ICMP echo-request à destination d’une même adresse en fixant
le TTL successivement à 1, 2, 3, … ainsi, le routeur qui décrémente le TTL à zéro est tenu d’avertir l’émetteur par
un ICMP time-exceeded. Les datagrammes UDP sont filtrés par les firewalls de l’IUT ou du campus. Par contre, les
messages ICMP echo-request passent, il faut donc utiliser l’option –I.
4
LPro RTWeb – IUT1 – R&T
# traceroute –I IP_ou_nom_de_la_destination
wireshark : analyseur réseau
C’est l’outil indispensable pour qui veut comprendre les différents protocoles.
2.2 Configuration permanente des interfaces
Le script /etc/init.d/networking est exécuté au boot et configure les interfaces. Ce script exécute les
commandes ifup et ifdown selon le paramètre fourni :
/etc/init.d/networking start
/etc/init.d/networking stop
/etc/init.d/networking restart
exécute
exécute
exécute
ifup –a
ifdown –a
ifdown -a puis
ifup -a
ifup et ifdown font partie du paquetage ifupdown que l’on trouve sur les distributions Debian et dérivées : ce
sont des outils de haut niveau pour manipuler les interfaces.
Le manuel de ces outils précise :
$ man ifup
...
NAMES
ifup - bring a network interface up
ifdown - take a network interface down
FILES
/etc/network/interfaces
definitions of network interfaces See interfaces(5) for more information.
NOTES
The program does not configure network interfaces directly; it runs low level
utilities such as ifconfig and route to do its dirty work.
Donc ces outils prennent les données du fichier /etc/network/interfaces et utilisent ipconfig et route
pour configurer / déconfigurer les interfaces.
Adapter le fichier /etc/network/interfaces selon les indications ci-dessous :
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
auto eth0 = activer cette interface lorsque ifup –a est exécuté
allow-hotplug eth0 = activer cette interface lorsque le driver
# The primary network interface
de la carte est chargé par udev. Inutile ici : cela serait utile pour une
auto eth0
carte hotplug (par exemple, une carte Wifi branchée sur port USB)
iface eth0 inet static
address 172.16.6.Y
netmask 255.255.255.0
network 172.16.6.0
broadcast 172.16.6.255
gateway 172.16.6.254
# dns-* options are implemented by the resolvconf package, if installed
dns-nameservers 172.16.6.200
Dans notre cas, ce package n’est pas
dns-search gtr.iut
installé. Voir le paragraphe 2.3
À l’aide du script networking, activer eth0. Vérifier le bon fonctionnement avec ip, ifconfig et route.
2.3 Nom de la machine et résolution des noms
Le resolver est le programme chargé de trouver les associations nom de domaine@IP (c’est la résolution directe)
et @IPnom de domaine (c’est la résolution inverse).
2.3.1
hostname : manipulation du nom d’hôte
Cette commande affiche ou fixe le nom de la machine. Si l’on fixe le nom par
« hostname ma-machine.gtr.iut », l’information ne sera pas conservée au reboot. Il faut écrire le nom dans
le fichier /etc/hostname. Ainsi, le script /etc/init.d/hostname.sh, exécuté au boot, vient lire ce fichier et
fixer le nom à l’aide de la commande hostname.
LPro RTWeb – IUT1 – R&T
5
Inscrire le nom gtrY.gtr.iut dans le fichier /etc/hostname, puis lancer « /etc/init.d/hostname.sh
start ».
2.3.2
/etc/hosts : association « locale » @IPnom de domaine
Aussitôt le nom de machine changé, il faut impérativement que Linux puisse trouver l’adresse IP associée à son
propre nom ; la commande suivante doit toujours fonctionner :
ping $(hostname)
99% des problèmes de lenteurs ou de services qui ne fonctionnent pas aussi bien sous Windows que sous Linux
sont dus à une mauvaise résolution des noms !
Le fichier /etc/hosts est le premier endroit où le resolver cherche. Éditer ce fichier :
127.0.0.1
localhost
NE JAMAIS SUPPRIMER
127.0.1.1
debian
À supprimer puisqu’il n’y a plus de machine nommée debian
172.16.6.Y
gtrY.gtr.iut
À ajouter
gtrY
# The following lines are desirable for IPv6 capable hosts
::1
localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts
Pour IPv6
Remarque :
o
L’association 127.0.0.1 localhost doit toujours être présente, « ping localhost » doit pinguer
l’interface loopback d’@IP 127.0.0.1 (vrai aussi bien sous Linux que sous Windows).
o
Lorsque la machine n’a pas d’adresse IP fixe (filaire avec DHCP) ou que l’interface n’est pas toujours
active (WIFI ou connexion à un VPN), on associe le nom de la machine à 127.0.1.1 sur les Linux Debian.
Sur d’autres distributions, on associe généralement le nom de la machine à 127.0.0.1. Ainsi
« ping $(hostname) » fonctionne toujours puisque l’interface loopback est toujours active.
o
On associe 172.16.6.Y au nom pleinement qualifié (FQDN) gtrY.gtr.iut ainsi qu’au nom court
gtrY afin de résoudre indifféremment ces 2 noms.
2.3.3
/etc/resolv.conf : interrogation des serveurs DNS
Le resolver, s’il n’a pas trouvé l’information dans /etc/hosts, interroge des serveurs DNS. La configuration du
resolver est dans /etc/resolv.conf
Éditer /etc/resolv.conf :
search gtr.iut
nameserver 172.16.6.200
nameserver 152.77.63.6
La directive « nameserver IP_d_un_serveur_de_nom » spécifie un serveur de nom à interroger. Il peut y en avoir
plusieurs, ainsi on interroge le suivant en cas de défaillance du premier
La directive « search liste_de_domaines » spécifie une liste de domaines à accoler à un nom simple lors de la
recherche. Ainsi, si vous faites « ping gw », la question posée au DNS est « quelle est l’IP de gw.gtr.iut ? ». Cela
évite d’utiliser systématiquement les noms complets pour les machines de notre domaine.
2.4 Interface graphique network-admin
Debian
propose
une
interface
graphique
de
configuration
du
réseau :
network-admin
(menu
). Il n’est pas interdit de s’en servir, mais cela n’empêche pas de
SystèmeAdministration
connaître et comprendre la configuration manuelle pour vérifier et corriger d’éventuels bugs…
6
LPro RTWeb – IUT1 – R&T
network-admin : configuration des interfaces
rien dans
/etc/network/interfaces
est déduit de
/etc/network/interfaces
allow-hotplug eth0
iface eth0 inet static
address 172.16.6.99
netmask 255.255.255.0
network 172.16.6.0
broadcast 172.16.6.255
gateway 172.16.6.254
network-admin : configuration du nom d’hôte et de sa résolution
/etc/hosts
/etc/hostname
gtr99
network-admin : configuration du resolver
/etc/resolv.conf
nameserver 172.16.6.200
search gtr.iut
LPro RTWeb – IUT1 – R&T
7
2.5 IPv6
Par défaut, la pile IPv6 est activée sous Linux Debian. Vérifiez avec ifconfig que les interfaces ont une adresse
IPv6 (adresses auto-configurées pour un accès Link Local dans le réseau fe80::/64) :
Comme on ne veut utiliser que IPv4 pour ce TP, on désactive IPv6. Afficher les informations sur le module du
noyau qui gère la pile IPv6 :
# modinfo ipv6
filename:
alias:
license:
description:
author:
depends:
vermagic:
/lib/modules/2.6.26-2-686/kernel/net/ipv6/ipv6.ko
net-pf-10
GPL
IPv6 protocol stack for Linux
Cast of dozens
2.6.26-2-686 SMP mod_unload modversions 686
Pour ne pas charger le module ipv6 (alias net-pf-10), ajouter « alias net-pf-10 off » au fichier
/etc/modprobe.d/aliases et rebooter. Vérifier avec ifconfig.
Faire vérifier :
config IP / nom / résolution des noms / IPv6 supprimé
8
LPro RTWeb – IUT1 – R&T
3 Gestion des utilisateurs
3.1 Création de groupes et de comptes
Les différentes distributions Linux (RedHat, Debian, Suze, Ubuntu, Gentoo, Slackware) et les environnements
graphiques (KDE, GNOME), proposent leurs outils graphiques de gestion des utilisateurs et des groupes.
Les utilitaires en ligne de commande sont préférables : ils sont présents sur tous les Unix ; ils permettent de
maitriser très précisément ce qui est fait ; on peut s’en servir dans des scripts.
Fichiers et utilitaires standard Unix pour gérer les comptes :
Fichiers
/etc/passwd
/etc/shadow
/etc/group
/etc/gshadow
/etc/login.defs
/etc/skel/*
Utilitaires CLI
3.1.1
id
getent
useradd
userdel
usermod
chsh
passwd
groupadd
groupdel
groupmod
gpasswd
groups
(login, x, uid, gid, GECOS, home directory et shell)
(mots de passe et domaine de validité des comptes)
(liste des groupes)
(informations cachées sur les groupes)
et /etc/default/useradd
(valeurs par défaut pour la création de comptes)(
(fichiers à copier dans le home d’un nouvel utilisateur utiliser l’option
‘–m’ de useradd pour créer le home en copiant /etc/skel)
pour avoir les infos sur un utilisateur (uid, groupes gid)
(get entries : lister les entrées d’une bdd : “getent passwd” ; “getent group”)
(créer un compte)
(supprimer un compte)
(modifier un compte)
(changer le shell d’un compte)
(changer le mot de passe d’un compte)
(créer un groupe)
(supprimer un groupe)
(modifier un groupe)
(ajouter un utilisateur à un groupe, gérer les groupes)
(afficher les groupes auxquels un utilisateur appartient)
Création d’utilisateurs avec les valeurs par défaut
Créer un utilisateur user1 :
# useradd user1
Créez un utilisateur user2 en utilisant l’option –m :
# useradd –m user2
Utilisez les commandes suivantes pour répondre aux questions qui suivent (voir les man pour comprendre les
options) :
#
#
#
#
#
#
#
id user1
grep user1 /etc/passwd
grep user1 /etc/shadow
grep user1 /etc/group
ls -ld ~user1
ls -la ~user1
passwd -S user1
même chose pour
user2
Quel sont l’UID, le groupe principal, le home directory et le shell pour ces utilisateurs ? Le home directory est-t-il
créé ? Quelles sont ses appartenances et permissions ? Est-il vide ? Sinon, d’où viennent ces fichiers ? Le compte
est-il activé ? Avec quel mot de passe ?
Les options par défaut sont définies dans /etc/login.defs et /etc/default/useradd. Les options du fichier
/etc/default/useradd sont visualisables et modifiables avec l’option –D de useradd :
# useradd -D
Fixer le mot de passe « 1user » à l’utilisateur user1 :
# passwd user1
Tester ce compte soit dans une console virtuelle texte (Ctrl+Alt+F1 à Ctrl+Alt+F6 ; la console virtuelle X/Window
est sur Ctrl+Alt+F7), soit dans un gnome-terminal avec :
LPro RTWeb – IUT1 – R&T
9
# su –l user1
-l comme login : initialise l’environnement comme lors d’un login
Idem pour user2.
3.1.2
Fichiers passwd, shadow et group
Les fichiers /etc/passwd, /etc/shadow et /etc/group contiennent les informations sur les comptes
utilisateurs et les groupes. Visualiser les informations relatives aux utilisateurs user1 et user2 dans ces fichiers.
Chercher la signification des 7 champs de /etc/passwd en lisant le manuel (man 5 passwd). Que signifie le ‘x’
dans le 2ème champ ?
Chercher la signification des 9 champs de /etc/shadow en lisant le manuel (man 5 shadow). Quelle technique
de chiffrage est employée lorsque le mot de passe commence par ‘$1$’ ? Quelle valeur peut-on mettre pour le mot
de passe si l’on ne veut pas qu’un utilisateur puisse se loguer ?
Chercher la signification des 4 champs de /etc/group en lisant le manuel (man 5 group). Comparer les
informations données par la commande « id user » avec celles que l’on trouve dans /etc/group.
Quelles sont les permissions sur ces 3 fichiers ? Qui peut voir les mots de passe chiffrés ?
Pour finir, supprimer ces comptes :
# userdel user1
# userdel –r user2
-r comme remove : supprime le home directory et tout son contenu
3.1.3
Création et modification d’utilisateurs
useradd permet de spécifier chacun des 7 champs de /etc/passwd lors de la création. Exemples pour tout
spécifier indépendamment des valeurs par défaut :
# useradd
–u 2001
UID
-g users
-c "Martin Dupont"
GID ou nom de groupe
-d /home/dupontm
Où est le
home directory
-p $(openssl passwd -1 toto)
commentaire
-m
Création effective du home directory
et copie du contenu /etc/skel
Mot de passe DÉJÀ CHIFFRÉ
-s /bin/bash
dupontm
shell
login
Attention :
o
Avec –p, on donne le mot de passe déjà chiffré. Normalement, on utilise passwd pour fixer le mot de
passe. Cependant, on peut crypter un mot de passe en md5 avec :
openssl passwd -1 mot_de_passe
‘tiret un’ : méthode de chiffrage n°1 = md5
o
–m est nécessaire pour effectivement créer le répertoire utilisateur spécifié par l’option –d.
Application : créer le groupe (avec groupadd) et les utilisateurs spécifiés (avec useradd) dans le tableau suivant.
Groupe
GID
g1
1001
Login
mot de passe
user11 11user
user12 12user
user12 13user
10
uid
1011
1012
1013
groupe
g1
g1
g1
nom complet(commentaire)
Utilisateur 11
Utilisateur 12
Utilisateur 13
LPro RTWeb – IUT1 – R&T
home directory
Shell
/home/user11
/bin/bash
/home/user12
/bin/bash
/home/user13
/bin/bash
3.2 Configuration de l’environnement utilisateur
Dans /etc se trouvent la configuration des applications communes à tous les utilisateurs. Dans chaque home
directory se trouvent des fichiers cachés (commençant par un point) qui stockent la configuration des applications
spécifiques de chaque utilisateur.
3.2.1
bash
Quand bash est invoqué comme shell de login, /etc/profile est exécuté, puis le premier fichier existant et
lisible dans la liste suivante : ~/.bash_profile, ~/.bash_login, et ~/.profile.
À la fermeture du shell de login, ~/.bash_logout est exécuté.
Quand bash n’est pas lancé comme un shell de login, ~/.bashrc est exécuté.
Applications :
o
Dans le home directory de root , il y a un fichier .profile. Vérifier dans ce script que ~/.bashrc est à
son tour exécuté.
Éditer ce fichier .bashrc et décommenter (si besoin) les lignes afin d’avoir la colorisation de ls et les
alias classiques ll et l.
Décommenter (si besoin) les alias pour rm, cp et mv qui évitent la suppression malencontreuse de fichiers.
Vérifier la mise en place de ces alias dans un nouveau shell en root (dans un terminal virtuel Ctrl+Alt+F?
ou bien par un su dans un terminal gnome).
o
Les utilisateurs user* n’ont pas d’alias utiles (sauf la mise en couleur de ls). Éditer le fichier
/etc/skel/.bashrc et ajouter tous les alias utiles comme on l’a fait pour root. Le contenu du répertoire
/etc/skel est copié à la création des compte. Seuls les nouveaux comptes bénéficieront donc de ces
alias.
o
Écraser tous les fichiers ~/.bashrc des comptes user* avec ce fichier /etc/skel/.bashrc afin qu’ils
bénéficient de ces alias.
Faire vérifier :
comptes user?? / alias pour root / alias pour user??
LPro RTWeb – IUT1 – R&T
11
4 Gestionnaire de paquets
La distribution Debian est réputée pour son système de paquets. Le système est découpé en paquets, qui sont des
archives contenant des fichiers, des règles de dépendances et des scripts pour finaliser l’installation ou la
suppression d’un paquet.
4.1 DPKG
dpkg est la base du système de gestion de paquets de Debian. Il s’agit d’une série d’outils qui manipulent les
paquets .deb et la base de donnée des paquets au plus bas niveau.
dpkg est un outil pour l’installation, la création, la suppression et la gestion des paquets Debian.
dpkg-query permet d'interroger la base de données locale contenant l’état de l’ensemble des packages Debian.
dpkg-reconfigure reconfigure un paquet déjà installé.
4.2 APT
APT (Advanced Packaging Tool) est un gestionnaire de paquets utilisé par Debian. APT simplifie l’installation, la
mise à jour et la désinstallation de logiciels en automatisant la récupération de paquets à partir de sources APT (sur
Internet, le réseau local, des CD-ROM, etc.).
Le fichier /etc/apt/sources.list contrôle la recherche des paquets. Exemple :
$ cat /etc/apt/sources.list
deb http://ftp.lip6.fr/pub/linux/distributions/debian/ lenny main
La ligne indique que les paquets de la branche « main » de la version « lenny » sont à télécharger à l’URL
spécifiée.
Quelques commandes utiles :
apt-get : manipulation des paquets (installation, mise à jour, suppression, etc.).
apt-cache : opération sur le cache de paquet. Permet la recherche d’informations (par exemple recherche de
paquets à partir d’un mot-clé).
apt-file : recherche de fichiers présents dans les paquets.
4.3 Synaptic
synaptic est une interface graphique pour manipuler les paquets.
C’est bien sûr la méthode la plus simple et intuitive d’installer ou de rechercher des paquets. Cependant, dans les
tutoriaux, les commandes apt* sont utilisées car il n’est pas facile de décrire une opération faite avec une interface
graphique, alors que « apt-get install netris » est très facile à comprendre et reproduire… D’autre part, on
n’installe pas systématiquement d’interfaces graphiques pour faire un serveur.
4.4 Commandes utiles de manipulation de paquets
apt-get update
Met à jour la liste des paquets disponibles sur les dépôts
apt-get install nom_du_paquet
Installation d’un paquet (après téléchargement du paquet et ses
dépendances sur un miroir Debian)
apt-cache show nom_du_paquet
Donne une description du paquet
dpkg-query –l motif
Recherche de paquets installés
apt-cache search mot-clé
Recherche de paquet installés ou non par un mot-clé
apt-cache search –n mot-clé
Idem, mais la recherche ne porte que sur les noms de paquets
dpkg-query –L paquet
Liste le contenu du paquet installé
12
LPro RTWeb – IUT1 – R&T
apt-file list paquet
Liste le contenu du paquet installé ou non
dpkg -S motif_nom_fichier
Quel paquet installé contient ce fichier
apt-file search motif_nom_fichier
Quel paquet installé ou non contient ce fichier
Application :
o
Mettre à jour la liste des paquets. Il y a un problème avec la branche update de Debian 5.0
« lenny »depuis que la version stable de Debian est la 6.0 « squeeze ». Éditer /etc/apt/souces.list et
commenter la source pour la branche update.
o
Afficher la description du paquet rcalc.
commande :
o
Ce paquet rcalc est-il installé ?
commande :
o
Installer le paquet rcalc.
commande :
o
Quels fichiers contient ce paquet rcalc nouvellement installé ?
commande :
o
Lancer le programme qui a été installé avec le paquet rcalc.
o
La commande apt-file est-elle présente ?
o
Rechercher le paquet qui contient cette commande.
commande :
o
Installez-le.
commande :
o
Rafraichir la base de données avec « apt-file update ».
o
Quels paquet contient le fichier /usr/bin/anjuta_launcher (qui n’est pas présent sur votre système).
commande :
o
Quels fichiers contient le paquet trouvé ci-dessus.
commande :
Remarque :
# apt-file list mon-paquet
liste les fichiers de tous les paquets dont le nom contient mon-paquet. On peut utiliser l’option –x et fournir
une expression régulière (confère TP Utilisateur Unix) pour préciser la recherche :
# apt-file list –x '^mon-paquet$'
liste les fichiers du paquet mon-paquet tout court, et pas de mon-paquet-dev ou gnome-mon-paquet.
Faire vérifier :
réponses aux questions
LPro RTWeb – IUT1 – R&T
13
5 Démarrage System V
Linux Debian, ainsi que Solaris et la plupart des distributions Linux, utilise des scripts de démarrage SysV
(prononcez « système cinq »). Pour chaque daemon ou service (par exemple un serveur Web) ou chaque
configuration à effectuer au démarrage (par exemple configuration des interfaces réseau et de la table de routage),
un script est fourni dans /etc/init.d. Ces scripts sont lancés avec le paramètre start, stop ou restart pour
démarrer, arrêter ou reconfigurer le service.
5.1 Le boot, init et les runlevels
Lors du boot de la machine, le BIOS exécute le programme présent sur le MBR (Master Boot Record) du disque
dur. Il s’agit ici de GRUB (GRand Unified Bootloader), qui charge le noyau linux en mémoire ainsi que initrd,
qui contient les modules (drivers) nécessaire à l’accès au disque (drivers SCSI ou SATA, système de fichier Ext3
ou ReiserFS, …).
Le noyau lance alors le père de tous les processus : /sbin/init. Le fichier /etc/inittab indique le nom du
script d’initialisation système minimum (/etc/init.d/rcS) ainsi que le runlevel, c’est à dire la configuration
logiciel à charger.
Le système linux dispose de 7 niveaux d’exécution numérotés de 0 à 6 (dont l’usage dépend de la distribution) :
# /etc/inittab: init(8) configuration.
# The default runlevel.
id:2:initdefault:
# Boot-time system configuration/initialization script.
# This is run first except when booting in emergency (-b) mode.
si::sysinit:/etc/init.d/rcS
#
#
#
#
#
#
#
/etc/init.d executes the S and K scripts upon change
of runlevel.
Runlevel 0 is
Runlevel 1 is
Runlevels 2-5
Runlevel 6 is
halt.
single-user.
are multi-user.
reboot.
Dans les répertoires /etc/rcX.d (X correspond au runlevel), il y a des liens symboliques vers des scripts situés
dans /etc/init.d qui commencent par K (comme kill) et par S (comme start) suivi d’un numéro à 2 chiffres.
Lors du passage dans un runlevel, les scripts K??xxxxx sont lancés avec le paramètre stop puis les scripts
S??xxxxx sont lancés avec le paramètre start dans l’ordre fixé par les numéros.
C’est tout d’abord les scripts du répertoire /etc/rcS.d/ sont démarrés ou arrêtés. Puis, comme le runlevel par
défaut est 2, ce sont ceux du répertoire /etc/rc2.d.
5.2 Les outils de manipulation des services
On peut manipuler directement les liens symboliques dans /etc/rcX.d/ pour activer ou non le lancement d’un
script au boot. Cependant, de nombreux utilitaires le font.
Installez le paquet chkconfig. Il fournit 2 utilitaires que l’on retrouve aussi sur les distributions Redhat et
dérivées (CentOS, Fedora, Mandriva).
service : exécute un script présent dans /etc/init.d/
chkconfig : manipule les liens symboliques dans /etc/rcX.d/
Exercices :
o
Pour lister tous les services et visualiser s’ils sont lancés au démarrage (regarder les colonnes 2 et S) :
# chkconfig
o
14
--list
Pour vérifier que le service cron est lancé au démarrage :
LPro RTWeb – IUT1 – R&T
# chkconfig --list cron
o
Pour ne plus lancer le service cron au démarrage (cela supprime le lien symbolique
/etc/rc2.d/S21cron -> ../init.d/cron) :
# chkconfig cron off
o
Pour lancer à nouveau le service cron au démarrage (cela crée le lien symbolique /etc/rc2.d/S21cron
-> ../init.d/cron) :
# chkconfig cron on
o
Pour arrêter / démarrer / relancer le service cron immédiatement :
# service cron stop
# service cron start
# service cron restart
est équivalent à
# /etc/init.d/cron stop
# /etc/init.d/cron start
# /etc/init.d/cron restart
Tester ces commandes. Vérifier que le processus /usr/sbin/cron est lancé ou non :
# ps -aux | grep cron
Application :
o
Regarder quels services sont en écoute sur des ports TCP. Arrêter ces 2 services inutiles pour ce TP et
faites en sorte qu’ils ne soient pas lancés au prochain boot.
#netstat –atpn
Faire vérifier :
arrêt des services d’impression et de messagerie
6 VirtualBox – Machine virtuelle
Par la suite, on va installer plein de services (Telnet, SSH, FTP , HTTP, …). Pour tester ces services, il nous faut
une machine cliente. Par manque de place et de machine physique, la machine cliente sera une machine virtuelle
Debian tournant sous VirtualBox.
Par la suite, on nommera « machine hôte » ou « serveur » la machine physique gtrX.gtr.iut tounant sous Debian.
On nommera « machine invitée » ou « VM cliente » la machine virtuelle Debian.
6.1 Installation de VirtualBox
VirtualBox est une solution de virtualisation gratuite éditée par Oracle. La version de VirtualBox sur les dépôts
Debian est très vielle. Pour installer la dernière version, on suit les indications de ce site :
http://www.virtualbox.org/wiki/Linux_Downloads
On ajoute une source de paquets .deb :
# echo "deb http://download.virtualbox.org/virtualbox/debian lenny contrib"
>> /etc/apt/sources.list
\
On récupère et on installe la clé publique qui permet de vérifier la signature des paquets .deb :
# wget -q http://download.virtualbox.org/virtualbox/debian/oracle_vbox.asc -O| apt-key add -
\
On met à jour la liste des paquets puis on installe VirtualBox :
# apt-get update
# apt-get install virtualbox-4.0
6.2 VM cliente Debian
Téléchargez la machine virtuelle Debian sur ftp://ftp.gtr.iut/TpRes/VMs/VirtualBox VMs.tbz2
LPro RTWeb – IUT1 – R&T
15
En tant que user, sous le home directory ~user, décompresser cette archive («tar jxvf
VirtualBox*.tbz2 »). Lancez la machine virtuelle. Vérifier que la carte réseau virtuelle est en mode NAT. Sur
le réseau virtuel NATé, la VM cliente doit obtenir sa configuration IP par DHCP.
Vérifier que la machine virtuelle a bien une connectivité réseau.
Pour éviter de confondre la machine hôte avec la machine invitée, on conseille de personnaliser son aspect (fond
d’écran, thème, couleurs).
Faire vérifier :
Bon fonctionnement de la VM cliente dans VirtualBox
16
LPro RTWeb – IUT1 – R&T
7 Quelques services réseau
Dans cette section, nous allons installer des services réseaux et les configurer à minima. Les objectifs sont :
o
maitriser l’installation ;
o
lancer/arrêter/reconfigurer des services ;
o
vérifier le bon fonctionnement ou les problèmes par visualisation des journaux systèmes (logs).
7.1 Telnet
Le système Unix est multiutilisateur depuis l’origine (1969). On peut donc être plusieurs utilisateurs logués sur la
même machine à distance. Telnet est un des protocoles permettant cette connexion à distance
Chercher (avec apt-cache ou synaptic) quel package fournit un serveur telnet. Indice : un service sous Unix
s’appelle aussi un DAEMON (Disk And Exectution MONitor), le programme serveur d’un protocole applicatif a
généralement pour nom le-protocoled (exemple : telnetd, ftpd, httpd, sshd,…).
L’installer ce paquet telnetd sur le serveur. Lister les fichiers de ce paquet :
# dpkg-query –S telnetd
Quel nom porte le programme telnet serveur ? Y-a-t-il un script de démarrage/arrêt pour ce démon (il devrait être
dans /etc/init.d/) ?
Quel est le protocole de transport et le numéro de port réservé à telnet (chercher dans /etc/services) ? Le
démon in.telnetd est-il lancé et en écoute sur ce port (vérifier avec netstat) ?
# netstat –atnp
# options de netstat : a=all, t=tcp, n=numeric, p=process
En fait, le programme in.telnetd n’est par un serveur autonome (standalone), il est géré par le superdaemon
inetd. Relancer le superdeamon inetd et observer qui écoute maintenant sur le port telnet :
# service openbsd-inetd restart
# netstat –atnp
Depuis la VM cliente, se connecter à ce serveur telnet avec le client telnet :
$ telnet ip_ou_nom_du_serveur_telnet
Sur le poste serveur, avec netstat et ps :
o
Observer que le programme in.telnetd à bien été lancé par inetd pour répondre au client.
o
Sous quel compte utilisateur in.telnetd tourne-t-il ? Ce compte a été ajouté lors de l’installation de
telnetd, vérifier dans /etc/passwd.
Regarder le fichier de configuration du superdaemon inetd : /etc/inetd.conf. On retrouve tout ce que l’on
vient d’observer :
# <service_name> <sock_type> <proto> <flags> <user>
telnet
stream
tcp
nowait telnetd
Nom de port d’écoute
(on pourrait mettre 23)
Protocole de
transport TCP
<server_path> <args>
/usr/sbin/tcpd /usr/sbin/in.telnetd
Utilisateur sous lequel
exécuter le programme
serveur
Commande à exécuter
quand pour répondre à
un client
On voit que le programme /usr/sbin/in.telnetd n’est pas exécuter directement mais par l’intermédiaire du
programme /etc/sbin/tcpd appelé « TCP wrapper ». Il permet de filtrer les clients en fonctions de règles
écrites dans /etc/hosts.allow et /etc/hosts.deny.
Fichiers journaux (aussi appelés logs) : les daemons travaillant en tâche de fond, comment voir ce qu’ils font ?
Heureusement, ils écrivent les évènements dans des fichiers journaux grâce à syslog (un protocole définissant un
service de journaux d’évènements). Regarder les derniers évènements relatifs au service telnet :
LPro RTWeb – IUT1 – R&T
17
# tail /var/log/daemon.log
# tail /var/log/auth.log
Pour scruter en continu les ajouts d’évènements dans un fichier de log, utiliser l’option –f :
# tail
-f
/var/log/daemon.log
Application :
o
Peut-on se loguer en root (observer les logs)? Le fichier /etc/securetty liste les terminaux où root
peut se loguer. Sous quel terminal est-on quand on est logué par telnet ?
Le protocole telnet est à proscrire dès qu’il y a un souci de sécurité car les informations passent en clair. Vérifier en
analysant une session telnet avec wireshark.
Faire vérifier :
mot de passe dans une capture wireshark d’une session telnet
Arrêter le service telnet et faire en sorte que ce service ne soit plus relancé lors du reboot.
7.2 FTP
FTP (File Transfer Protocol) est un protocole de communication destiné à l’échange de fichiers. Il existe de
nombreuses implémentations de serveur FTP sous Linux. Avec synaptic, chercher et lire les descriptions des
paquets ftpd, inetutils-ftpd, vsftpd, proftpd, pure-ftpd, pyftpd, twoftpd,…
Installer le paquet vsftpd. Vérifier avec ps et netstat que le daemon vsftpd est lancé. Quel est le protocole de
transport et le port réservé pour FTP ?
vsftpd est un service autonome (il ne nécessite pas inetd), vérifier que l’on peut l’arrêter et le relancer par le
script /etc/init.d/vsftpd (ou la commande service) et vérifier avec chkconfig que le service est lancé au
démarrage.
Depuis la VM cliente, utiliser un client FTP pour accéder au serveur :
o
Avec le client en ligne de commande : « ftp
anonymous ; mot de passe : n’importe quoi
o
Avec un navigateur à l’URL ftp://ip_ou_nom_du_serveur_ftp/
ip_ou_nom_du_serveur_ftp » ; utilisateur =
Il s’agit ici de FTP anonyme, utile pour faire un site de téléchargement ouvert à tous. Avec ps, on observe plusieurs
instances de vsftpd. L’une tourne sous l’identité root, c’est le service en écoute sur le port 21. Les autres gèrent
chacune la connexion avec un client. Sous quel compte utilisateur tournent-elles ? Regarder dans /etc/passwd les
caractéristiques de ce compte. En déduire où se trouve le répertoire d’accueil du site FTP anonyme. Vérifier en
plaçant des fichiers dedans.
Depuis la VM cliente, tenter maintenant une connexion FTP sous le compte user11 :
o
Avec le client en ligne de commande : « ftp ip_du_serveur_ftp » ; utilisateur = user11 ; mot de
passe : 11user
o
Avec un navigateur à l’URL ftp://user11@ip_du_serveur_ftp/
Ça ne marche pas ! Éditer le fichier de configuration de vsftpd : /etc/vsftpd.conf. Décommenter les bonnes
options pour permettre l’accès aux utilisateurs ainsi que l’écriture de fichier vers le serveur. Relancer le service
pour prendre en compte les changements et tester les transferts de fichiers dans les 2 sens.
Remarques : commandes utiles du client ftp :
dir .......................... : liste le répertoire distant
!ls –l ................... : liste le répertoire local
cd chemin ............. : change le répertoire courant distant
lcd chemin ........... : change le répertoire courant local
18
LPro RTWeb – IUT1 – R&T
pwd .......................... : affiche le chemin du répertoire courant distant
!pwd ....................... : affiche le chemin du répertoire courant local
get fichier ........ : télécharge le fichier du répertoire distant vers le répertoire local
mget fichiers .... : télécharge les fichiers (on peut utiliser des jokers comme ‘*’) du répertoire distant
vers le répertoire local
put fichier ........ : télécharge le fichier du répertoire local vers le répertoire distant
mput fichiers .... : télécharge les fichiers (on peut utiliser des jokers comme ‘*’) du répertoire local vers
le répertoire distant
quit ....................... : ferme la connexion et quitte le programme
Fichier journal : vsftpd dispose de son propre log. Observer les connexions au serveur :
# tail –f /var/log/vsftpd.log
Affiche en continu les
lignes ajoutées au fichier
Analyser une connexion FTP avec wireshark et vérifier que l’authentification est en clair.
Faire vérifier :
service telnet arrêté / mot de passe dans une capture wireshark d’une session ftp / FTP
anonyme fonctionne / FTP authentifié avec get et put fonctionnent
7.3 SSH, SCP, SFTP
7.3.1
ssh
SSH remplace avantageusement telnet ou rlogin (pour l’accès à distance), rcp ou ftp (pour le transfert de fichier).
La communication est cryptée. SSH peut aussi faire passer toute connexion TCP à travers un tunnel crypté.
Debian propose 2 implémentations de serveur SSH : les paquets openssh-server et lsh-server.
Installer le paquet openssh-server. Vérifier avec ps et netstat que le daemon sshd est lancé. Quel est le
protocole de transport et le port réservé pour SSH ?
sshd est un service autonome (il ne nécessite pas inetd), vérifier que l’on peut l’arrêter et le relancer par le script
/etc/init.d/ssh (ou la commande service) et vérifier avec chkconfig que le service est lancé au
démarrage.
Depuis la VM cliente, tenter maintenant une connexion SSH sous le compte user11 :
$ ssh login_utilisateur@ip_ou_nom_du_serveur_ssh
Fichier journal : sshd enregistre les connexions des clients dans /var/log/auth.log.
Analyser une connexion SSH avec wireshark et vérifier que tout est chiffré.
7.3.2
scp
Pour copier des fichiers de façon sécurisée, on utilise sftp ou scp. sftp s’apparente à ftp (programme interactif
avec des commandes ls, cd, lcd, get et put). scp est similaire à cp, sauf que les chemins sont soit locaux, soit
distants sous la forme utilisateur@machine_distante:chemin_sur_machine_distante. Par exemple :
$ scp
bidon.txt
[email protected]:/tmp
Exercice :
o Logué en user sur la VM cliente, copier le fichier /etc/hostname de la machine hôte vers le répertoire
local /tmp en utilisant le compte user11.
o Inversement, toujours logué en user sur la VM cliente, copier un fichier local vers le home directory de
l’utilisateur user11 sur la machine hôte.
LPro RTWeb – IUT1 – R&T
19
Faire vérifier :
service ssh fonctionne / copie client vers serveur / copie serveur vers client
7.4 HTTP
HTTP (HyperText Transfert Protocol) est le protocole utilisé entre un navigateur et un serveur Web. Il existe de
nombreuses implémentations de serveur HTTP sous Debian. On va installer la plus connue : Apache.
Installer le paquet apache2. Vérifier avec ps et netstat que le daemon apache2 est lancé. Quel est le protocole
de transport et le port réservé pour HTTP ?
apache2 est un service autonome (il ne nécessite pas inetd), vérifier que l’on peut l’arrêter et le relancer par le
script /etc/init.d/apache2 (ou la commande service) et vérifier avec chkconfig que le service est lancé
au démarrage.
Accéder au serveur avec un navigateur à l’URL : http://nom_ou_ip_du_serveur/
Tester aussi l’URL http://localhost/doc/ et http://ip_du_serveur/doc/
Visualiser le fichier de configuration dans /etc/apache2/sites-enabled/. En déduire :
o
Où se trouve le répertoire racine du site Web ? Trouver le fichier HTML qui contient « It works! » et le
modifier.
o
Quel répertoire local est affiché à l’URL http://localhost/doc/ ? Pourquoi n’est-il accessible que
depuis localhost ?
Fichiers journaux : apache2 enregistre son activité dans les fichiers /var/log/apache2/access.log et
/var/log/apache2.log/error.log. Vérifier les logs lors de l’accès à des URL valides et invalides.
Faire vérifier :
HTTP fonctionne / répertoire racine du serveur =
7.5 MySQL
Installer le SGBD MySQL sur la machine hôte (paquet mysql-server). Installer le client MySQL en ligne de
commande sur la VM cliente (paquet mysql-client).
Tester la connexion au serveur MySQL depuis la VM cliente.
Sur le serveur, installer le paquet phpmyadmin et tester.
Faire vérifier :
phpmyadmin
20
LPro RTWeb – IUT1 – R&T

Documents pareils