Suite à cet article, j’ai jugé bon de vous expliquer comment mettre en place un serveur ssh sécurisé qui sera destiné seulement à faire du tunneling. La configuration va être plus poussée que pour un serveur classique car vous aurez en permanence un terminal ouvert sur le serveur, ce qui augmente donc les risques que quelqu’un prenne la main sur votre serveur.Notre serveur sera une Debian 5.0.
Installons donc les paquets nécessaires :
apt-get update
apt-get install openssh-server
Commencez par démarrer le serveur avec la configuration de base
/etc/init.d/sshd start
Créons maintenant
le groupe tunnelers
:
groupadd tunnelers
Puis un utilisateur, l’option -G
permet de le rendre membre du
groupe que l’on vient de créer et -m
de forcer la création du home :
useradd -G tunnelers -m tun1
passwd tun1
Il est temps de
créer le couple de clés RSA. Si vous êtes sous Windows et que vous utilisez
Putty, consultez cet article pour avoir des clés utilisables.
Sur la machine client, exécutez la commande suivante :
ssh-keygen –t rsa
Vous aurez alors la possibilité de choisir un mot de passe pour votre clé, moins pratique, mais plus sécurisé…
Il faut maintenant placer la clé publique sur le serveur :
ssh-copy-id -i .ssh/id_rsa.pub tun1@server.chez-moi.com
Une fois la clé placée correctement, nous allons supprimer le mot de passe de l’utilisateur tun1 :
passwd –d tun1
Nous allons aussi lui attribuer un shell limité. Pour cela il
faut éditer le fichier /etc/passwd
et changer la ligne :
tun1:x:1001:1002::/home/tun1:/bin/sh
par (rbash signifie Restricted Bash) :
tun1:x:1001:1002::/home/tun1:/bin/rbash
Enfin pour éviter tout problèmes dans le répertoire personnel de tun1, nous allons changer les droits comme suit :
chown root:root /home/tun1
et supprimer tout ce qui n’est pas nécessaire au login ssh :
rm .bash*
rm .profile
L’utilisateur tun1 n’est donc plus propriétaire de son home, et ne peut effectuer qu’un nombre très restreint de commandes.
Passons à la configuration du serveur.
Le fichier de configuration du serveur est /etc/ssh/sshd_config
. Effacez
complètement de fichier, nous allons en créer un nouveau avec les lignes
suivantes :
Port 443
Protocol 2
HostKey /etc/ssh/ssh_host_rsa_key
UsePrivilegeSeparation yes
SyslogFacility AUTH
LogLevel INFO
PermitRootLogin no
StrictModes yes
RSAAuthentication yes
# Don't read the user's ~/.rhosts and ~/.shosts files
IgnoreRhosts yes
# For this to work you will also need host keys in /etc/ssh_known_hosts
RhostsRSAAuthentication no
# similar for protocol version 2
HostbasedAuthentication no
PermitEmptyPasswords no
# Change to yes to enable challenge-response passwords (beware issues with
# some PAM modules and threads)
ChallengeResponseAuthentication no
# Change to no to disable tunnelled clear text passwords
PasswordAuthentication no
KerberosAuthentication no
GSSAPIAuthentication no
X11Forwarding no
TCPKeepAlive yes
# Allow client to pass locale environment variables
AcceptEnv LANG LC_*
Nous pouvons maintenant redémarrer le serveur :
/etc/init.d/sshd restart
Vous pouvez maintenant utiliser votre nouveau serveur tout beau, tout “secure” : ssh –p 443 –l tun1 –D 8080 –i ~/.ssh/id_rsa server.chez-moi.com
Essayez donc de mettre le bazar sur le serveur avec tun1, c’est assez compliqué !
Bonne sécurisation ;-)