JAIL ssh

Un peu d'Admin
16 novembre 2016

Le but est de créer un serveur, sous Centos7, ssh chrooté utilisant une clé comme authentification.
Afin de chrooter ssh, il faut créer un répertoire dans l’arborescence faisant office de bac à sable, où ssh tournera dans un faux environnement système.
Ce serveur est juste un serveur relai, permettant de faire du ssh sur d’autres serveurs.

Le serveur
Le Jail######

Installation classique minimal de Centos (on peut conserver selinux)
Choix du répertoire chrooté

mkdir -p /SECURE/Jail
  1. Installation de base dans le jail: cette option de yum installera la base du système dans le JAIL (les libs, les commandes de bases etc…)
    yum –installroot=/SECURE/Jail –releasever=7 –nogpg –disablerepo=’*’ –enablerepo=base install centos-release openssh-clients wget vi nano zip unzip tar mariadb findutils iputils bind-utils rsync
  2. Installation des nods:ce sont les fichiers virtuels utilisés par ssh pour fonctionner
    mkdir -p /SECURE/Jail/dev/
    mknod -m 666 /SECURE/Jail/dev/null c 1 3
    mknod -m 666 /SECURE/Jail/dev/tty c 5 0
    mknod -m 666 /SECURE/Jail/dev/zero c 1 5
    mknod -m 666 /SECURE/Jail/dev/random c 1 8
SSH Config######

Modifier le fichier /etc/ssh/sshd_config du serveur pour ne laisser que l’authentification par clés.

  1. Changer ce qui est commenté ou bien ce qui est à yes/no
PasswordAuthentification no
KerberosAuthentification no
PubkeyAuthentification yes
GASSAPIAuthentification no

Pour le jail il suffit de spécifier le répertoire Jail

ChrootDirectory /SECURE/Jail
Fail2ban
yum -y install fail2ban

ajout dans /etc/fail2ban/filter.d/sshd.conf d’une régle pour les fails ssh via une clé

...
^%(__prefix_line)sConnection closed by <HOST> \[preauth\]$
...
Ajout des clés/users
  1. En root sur le serveur ssh via la console locale ou déportée (car ssh est déja chrooté)
    adduser

Pas de mot de passe, il doit y avoir une ligne dans /etc/shadows correspondant a votre user:

user:!!:....
  1. copier (ou concaténer) la clé public (rsa id_rsa.pub dans ce cas) dans le fichier .ssh/authorized.key dans le répertoire /home/user/ du serveur (pas dans le JAIL!)

exemple de clé rsa, généralement dispo dans ~/.ssh/id_rsa.pub

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDEWq0god86pOO9McbeP++RwjlKov4QcxVwkomoGNN+aDLP4nuGp9ToLksIOAGnSzrzerzduJvMi8Vp3Ilivb0uWhAGl61hsavpZa/PjtskcK23+nMqKfnQ8i72aDLP4nuGp9ToLksIOAGnSzrzerzduJvMi8Vp3Ilivb0uWhAGl61hsavpZa/PjtskcK23+nMqKfnQ8i72unzSGN+I5X/vVHU4ejTjLhntwHé"'DfUZOnW1112ZR660LY+x/jaO2swNI6Jq+/Jjo/nLGX/XIsl7rsxS9H2gjwFyMi+GDtoFWtAzYceU6DsoZbYOndAzlgC1Wf65qHGRhmz1IAmnm5HZ user@machine
  1. remplacer /etc/passwd et /etc/shadow dans /SECURE/Jail/etc
    cp /etc/password /etc/shadow /SECURE/Jail/etc/
  2. créer le répertoire /SECURE/Jail/home/user/ et lui donner les mêmes droits que /home/user/
    chown user:user -R /SECURE/Jail/home/user
Le client

Sur le client, il faut simplement générer une clé RSA qui sera stockée dans ~/.ssh/id_rsa.pub

ssh-keygen -t rsa

Cela peut être également utile pour un service sftpd, puisque l’on peut spécifier un Jail par user.