Prérequis à l'installation d'OpenSSH

Afin de satisfaire les dépendances requises package openssh version 3.5p1, les packages suivants devront être installés :

L'ensemble des packages ont été téléchargés sur le site SunFreeware.Com.

Selon la version des patchs du système, il peut s'avérer nécessaire d'installer le patch système 112438 (Random Patches). Cette installation est nécessaire au bon fonctionnement du serveur sshd . La dernière version de ce patch est disponible sur le site du constructeur SUN.

Description de l'installation

Eventuelle installation du patch 112438

Si le patch 112438 est installé, la commande :

showrev –p | grep 112438

doit renvoyer une sorie du type :

Patch: 112438-01 Obsoletes:  Requires:  Incompatibles:  Packages: SUNWcarx, SUNWcsr, SUNWmdb, SUNWmdbx, SUNWhea

Si c'est la cas, toute la partie concernant l'installation du patch peut être ignorée, sinon on procédera à l'installation du patch de manière classique.

L’installation du patch proprement dit se fait de manière classique :

patchadd –M /tmp 112438-01

L’installation du patch nécessite un redémarrage du serveur pour que celui ci effectue la reconstruction des ses périphériques (fichiers présents dans /dev et /devices). Cependant dans le cas d’un serveur de production, où un redémarrage ne peut pas être envisagé, il est possible d’effectuer les opérations de façon manuelle et sans perturber le service. L’opération va consister à charger le driver « Random » dans le noyau et à créer les devices correspondant.

On passe donc les commandes suivantes afin de s'assurer que le driver n'est plus présent dans le noyau :

rem_drv random

Cette première commande produira vraisemblablement une erreur, elle est uniquement là pour s’assurer que le driver n’a pas été préalablement enregistré auprès du système, et permet de s’assurer que la commande suivante enregistrera le driver correctement au niveau du système.

add_drv random

Cette commande permet d’enregistrer le driver auprès du système d’exploitation. On vérifiera le code de retour de cette dernière :

echo $?

Et on s’assurera que celui ci est égal à 0

Ensuite, afin de pouvoir créer les périphériques il est nécessaire de récupérer le major correspondant dans le fichier /etc/name_to_major.

MAJOR=$(grep -w random /etc/name_to_major | awk '{print $2}')

Les devices sont créés via la commande suivante :

mknod /devices/pseudo/@0:random c ${MAJOR} 0
mknod /devices/pseudo/@0:urandom c ${MAJOR} 1

On leur donne les bons droits (au niveau du groupe)

chgrp sys /devices/pseudo/*random*

puis on crée les liens dans /dev :

ln -s ../devices/pseudo/random@0:random /dev/random
ln –s ../devices/pseudo/random@0:urandom /dev/urandom

Le chargement du driver dans le noyau est alors effectué :

modload /kernel/drv/random

Arrêt des services et désinstallation des packages préalablement installés ( mise à jour )

Dans le cas d’une installation et non d’une mise à jour, cette étape sera omise

Les démons qui seront mis à jour doivent être arrêtés avant d’effectuer la mise à jour. Par conséquent, à partir de l’étape suivante, il est nécessaire d’effectuer une connexion sur la console, ou via le protocole telnet.

Arrêt du démond prngd :

/etc/init.d/prngd stop

Arrêt du démond sshd :

/etc/init.d/sshd stop

L’opération est effectuée à l’aide de la commande pkgrm :

pkgrm –n SMCossh
pkgrm –n SMCprngd
pkgrm –n SMCosslc

Lors de l’opération si une confirmation d’effacement est demandée, on répondra de manière affirmative (yes).

Installation des nouveau packages et démarrage des services

Décompression des paquets téléchargés :
gunzip /tmp/openssh-3.5p1-sol8-sparc-local.gz
gunzip /tmp/openssl-0.9.6g-sol8-sparc-local.gz
gunzip /tmp/libgcc-3.2-sol8-sparc-local.gz
puis installation des paquetages :
pkgadd -d /tmp/openssl-0.9.6g-sol8-sparc-local
pkgadd -d /tmp/openssh-3.5p1-sol8-sparc-local
pkgadd -d /tmp/libgcc-3.2-sol8-sparc-local

On s'assure que le scripts de démarrage sshd est bien présent dans /etc/init.d et que le lien a bien été mis en place dans /etc/rc2.d :

ln /etc/init.d/sshd /etc/rc2.dS99sshd
Ajout d'un utilisateur sshd
mkdir /var/empty
chown root:sys /var/empty
chmod 755 /var/empty
groupadd sshd
useradd -g sshd -c 'sshd privsep' -d /var/empty -s /bin/false sshd

/var/empty should not contain any files.

Génération des clefs publiques et privés du serveur :
/usr/local/bin/ssh-keygen -t rsa1 -f /usr/local/etc/ssh_host_key -N ""
/usr/local/bin/ssh-keygen -t dsa -f /usr/local/etc/ssh_host_dsa_key -N ""
/usr/local/bin/ssh-keygen -t rsa -f /usr/local/etc/ssh_host_rsa_key -N ""
Puis redémarrage du service :
/etc/init.d/sshd start

La commande "ssh -V" doit désormais renvoyer "OpenSSH_3.5p1, SSH protocols 1.5/2.0, OpenSSL 0x0090607f"