Stay tuned
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 -s2. On créer l'arborescence du système :
$ apt-get update && apt-get install debootstrap
$ 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'
nuxwin@dev:~$ ls /usr/lib/debootstrap/scripts/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 :
breezy hoary lenny sarge sarge.fakechroot warty woody
etch hoary.buildd potato sarge.buildd sid warty.buildd woody.buildd
$ cd /mnt/six1Nous 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.
$ chroot chr
$ dpkg -l | wc -l
$ exit
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_package3. On se place à la racine du répertoire nouvellement créé :
$ cd new_ssh_package4. 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-server5. 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.gz6. On décompresse l'archive amont :
$ tar -xzf openssh-5.0p1.tar.gz7. 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.0p1Ceci é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/debianPour exemple, voici ce que nous avons ajouté :
$ dch --newversion=1:5.0p1-0 -Dstable
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.
ls ../*.deb | catRésultat :
../openssh-client_5.0p1-0_i386.debIci, ce qui nous intéresse, ce sont les deux paquets suivants :
../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
../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 upgradeCeci é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.debNous obtenons le résultat suivant :
(Lecture de la base de données... 121856 fichiers et répertoires déjà installés.)2. Installation de la nouvelle version du serveur SSH :
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) ...
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.debnous 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 restartEnfin, nous testons que l'établissement d'une connexion ssh est possible :
Restarting OpenBSD Secure Shell server: sshd. $ ssh -V
OpenSSH_5.0p1, OpenSSL 0.9.8c 05 Sep 2006
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...