Skip to main content Help Control Panel

Distribution DEBIAN «   Tutoriaux dédiés aux distributions Debian «  

Tutorial Debian - Chroot d'une connexion SSH

Posted by M. declercq on Jul. 16, (popular)  
Tags: debian ssh chroot

Ce tutorial vous propose une solution pour la mise en oeuvre du chroot d'une connexion SSH.

I. Construction de l'environnement pour le chroot

La solution Debian pour la construction d'un environnement chrooté consiste à utiliser l'outil debootstrap qui, originellement, est un script permettant de créer, dans un répertoire isolé, une arborescence complète d'un système Debian. Grâce à cet outil, il est ainsi possible d'installer d'une pierre deux coups, une distributions Debian depuis un système déjà existant :

1. On install l'outil debootstrap :
$ sudo -s
$ apt-get update && apt-get install debootstrap
2. On créer l'arborescence du système :
$ debootstrap etch /mnt/six1/chr http://ftp.fr.debian.org/debian
...
I: Base system installed successfully.

Note : Ici, nous employons 'sudo' pour obtenir les privilèges de l'utilisateur 'root'. Si vous ne l'avez pas installé, utilisez la commande 'su'

Deboostrap prend en argument une cible ( profil de distribution ), un répertoire de destination pour l'installation des composants et un chemin vers un mirroir contenant les paquets Debian. Il est facile d'obtenir la liste des distributions que l'on peut installer en exécutant la commande suivante :
nuxwin@dev:~$ ls /usr/lib/debootstrap/scripts/
breezy hoary lenny sarge sarge.fakechroot warty woody
etch hoary.buildd potato sarge.buildd sid warty.buildd woody.buildd
Par ailleurs, pour connaître le nombre de paquets que nous venons d'installés via l'outil debootstrap, nous pouvons exécuter les commandes suivantes :
$ cd /mnt/six1
$ chroot chr
$ dpkg -l | wc -l
$ exit
Nous obtenons le résultat suivant : 129 qui nous indique que l'aborescence du système que nous venons d'installer via debootstrap compte un total de 129 paquets.

Vous l'aurez donc sûrement compris, l'outil debootstrap permet en un minimum de temps, d'installer différents systèmes d'exploitations. Dans le cadre de ce tutorial, nous l'employons d'une manière détournée pour créer un environnement chrooté, indépendant de notre système de fichier originel.

II. OpenSSH 5.0

OpenSSH version 5.0 a été mis à disposition il y a peu de temps et n'est donc pas disponible dans les dépôts Debian. Ici, nous n'allons bien entendu pas installer cette version d'openSSH à grands coups de './configure && make && make install' car sur les distributions Debian, il n'est pas recommandé de procéder ainsi.

Au lieu de cela, nous allons créer de nouveaux paquets Debian en combinant les sources du paquet déjà disponible dans les dépôts de la version Etch avec la dernière version des sources amont :

A. Installation des outils nécessaires à la construction des nouveaux paquets Debian

En tant qu'utilisateur 'root', nous exécutons les commandes suivantes :
$ apt-get update
$ apt-get build-dep ssh

B. Préparation du paquet source

En tant qu'utilisateur sans privilèges particuliers nous exécutons les commandes suivantes :

1. On se place à la racine du répertoire personnel de l'utilisateur :
$ cd ~
2. On créer un nouveau répertoire dédié à notre projet de construction des nouveaux paquets Debian :
$ mkdir new_ssh_package
3. On se place à la racine du répertoire nouvellement créé :
$ cd new_ssh_package
4. On récupère les sources de la dernière version du paquet openssh-server disponible dans les dépôts de la version Etch :
$ apt-get source openssh-server
5. On récupère la dernière version des sources amont disponible :
$ wget ftp://ftp.openbsd.org/pub/unix/OpenBSD/OpenSSH/portable/openssh-5.0p1.tar.gz
6. On décompresse l'archive amont :
$ tar -xzf openssh-5.0p1.tar.gz
7. On copie les informations concernant la construction du paquet Debian de l'ancienne version dans la nouvelle :
$ cp -r openssh-4.3p2/debian openssh-5.0p1
Ceci étant fait, nous avons les sources qui sont presque prêtes à êtres compilées pour l'obtention des nouveaux paquets Debian.

Ce faisant, avant de procéder à la construction des nouveaux paquets, nous devons encore effectuer une modification. En effet, la version des paquets créés dépend de la version spécifiée dans le fichier changelog. Si nous n'éditions pas ce fichier, la version de nos nouveaux paquets Debian ne correspondrait pas à la réalité :

8. On édite le fichier changelog de la manière suivante :
$ cd openssh-5.0p1/debian
$ dch --newversion=1:5.0p1-0 -Dstable
Pour exemple, voici ce que nous avons ajouté :
openssh (1:5.0p1-0) stable; urgency=low

* Major version

- Laurent Declercq <l.declercq@nuxwin.com> Wed, 16 Jul 2008 03:11:50 +0200

C. Compilation/Construction des nouveaux paquets

Enfin nous pouvons lancer la compilation et de même temps procéder à la construction de nos nouveaux paquets Debian en exécutant les commandes suivantes :
$ cd ..
$ dpkg-buildpackage -b -rfakeroot

Note : Ne tenez pas comptes des quelques avertissements obtenus qui ne sont absolument pas gênant.

Nous pouvons aisément obtenir la liste des nouveaux paquets obtenus en exécutant la commande suivante :
ls ../*.deb | cat
Résultat :
../openssh-client_5.0p1-0_i386.deb
../openssh-server_5.0p1-0_i386.deb
../ssh_5.0p1-0_all.deb
../ssh-askpass-gnome_5.0p1-0_i386.deb
../ssh-krb5_5.0p1-0_all.deb
Ici, ce qui nous intéresse, ce sont les deux paquets suivants :
../openssh-client_5.0p1-0_i386.deb
../openssh-server_5.0p1-0_i386.deb

D. Installation des nouveau paquets :

Avant tout, il convient de s'assurer que le système hôte est à jour :
$ apt-get upgrade
Ceci étant fait, nous installons les paquets de la manière suivante :

1. Installation de la nouvelle version du client SSH :
dpkg -i openssh-client_5.0p1-0_i386.deb
Nous obtenons le résultat suivant :
(Lecture de la base de données... 121856 fichiers et répertoires déjà installés.)
Préparation du remplacement de openssh-client 1:5.0p1-0 (en utilisant openssh-client_5.0p1-0_i386.deb) ...
Dépaquetage de la mise à jour de openssh-client ...
Paramétrage de openssh-client (5.0p1-0) ...
2. Installation de la nouvelle version du serveur SSH :

Avant tout, nous devons installer le paquet openssh-blacklist qui est une dépendance du paquet :
$ apt-get install openssh-blacklist
$ Ensuite, nous installons notre paquet :
dpkg -i openssh-server_5.0p1-0_i386.deb
nous obtenons le résultat suivant :
dev:/home/nuxwin/new_ssh_package# dpkg -i openssh-server_5.0p1-0_i386.deb
(Lecture de la base de données... 121873 fichiers et répertoires déjà installés.)
Préparation du remplacement de openssh-server 1:5.0p1-0 (en utilisant openssh-server_5.0p1-0_i386.deb) ...
Dépaquetage de la mise à jour de openssh-server ...
Paramétrage de openssh-server (5.0p1-0) ...
/var/lib/dpkg/info/openssh-server.postinst: line 172: ssh-vulnkey: command not found
/var/lib/dpkg/info/openssh-server.postinst: line 172: ssh-vulnkey: command not found


Nous ré-démarrons ssh et nous vérifions que notre version a bien été installée :
$ /etc/init.d/ssh restart
Restarting OpenBSD Secure Shell server: sshd. $ ssh -V
OpenSSH_5.0p1, OpenSSL 0.9.8c 05 Sep 2006
Enfin, nous testons que l'établissement d'une connexion ssh est possible :
nuxwin@dev:~$ ssh root@localhost
The authenticity of host 'localhost (127.0.0.1)' can't be established.
RSA key fingerprint is 1d:ee:ff:5f:20:9d:d6:09:98:b0:4c:70:dc:97:f1:bc.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'localhost' (RSA) to the list of known hosts.
root@localhost's password:
Linux dev 2.6.18-4-486 #1 Wed May 9 22:23:40 UTC 2007 i686

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Sat Sep 15 21:50:27 2007
dev:~#


Suite à venir...

Yacs skin by Laurent DECLERCQ - 2006-2008 - All right reserved