06) Open-SSH

Created samedi 13 février 2016

Présentation


Historique

OpenSSH (OpenBSD Secure Shell) est un ensemble d’outils informatiques libres permettant des communications sécurisées sur un réseau
informatique en utilisant le protocole SSH.
Créé comme alternative Open Source à la suite logicielle proposée par la société SSH Communications Security (en), OpenSSH est développé
depuis 1999 par l’équipe d’OpenBSD, dirigée par son fondateur, Theo de Raadt, et diffusé sous licence BSD.
(source: Wikipédia)

Aspect technique


Composition

Openssh est composé de 2 éléments :

le client :openssh-client
qui permet de se connecter à une machine distante

le serveur :openssh-server
installé sur une machine distante

Bien sur les 2 éléments peuvent être installé sur une même machine, toutefois la partie serveur n’est pas installée par défaut sur un poste client.
Openssh provenant de OpenBSD, les versions pour Debian et dérivées (comme Ubuntu) se nomment openssh-server et openssh-client
en version dite portable, ce qui apparaît dans le numéro de version avec p.

Configuration

Par défaut les fichiers de configuration se situent ici :

1 	/etc/ssh/sshd_config 			partie serveur.
2 	/etc/ssh/ssh_config 			partie client.
3 	~/.ssh/ 						configuration de l utilisateur.
4 	~/.ssh/authorized_keys			Liste des clés public (RSA or DSA)autorisée
5 	/etc/nologin 					si ce fichier existe, sshd interdit la connexion à tout utilisateur sauf root.
6 	/etc/hosts.allow 	 			Liste de contrôle d’accès.
7 	/etc/hosts.deny					Liste de contrôle d’accès.

SSH default port : TCP 22 (port par défaut)

/etc/ssh/sshd_config

Sshd est le nom du logiciel serveur, utilisant le port 22 pour communiquer, il dispose de nombreuses options.
Le port est défini ici ; ligne 4, il est possible de le changer.
Cela ne change en fait pas grand-chose. Il y a des bot qui scannent les réseaux, des scripts kiddies, ou n'importe qui d'autres..

1 # Package generated configuration file
2 # See the sshd_config(5) manpage for details
3 # What ports, IPs and protocols we listen for
4 Port 22							Port d écoute du serveur

Restreindre les interfaces d'écoutes

attention en cas de modification du réseau, faire un memento.

1 # Use these options to restrict which interfaces/protocols sshd will bind to
2 #ListenAddress ::
3 #ListenAddress 0.0.0.0

Version du protocole

choisir 2

1 Protocole 2
2 # HostKeys for protocol version 2

Location des clés

On pourrait déselectionner des clés ici, puisqu'on utilisera les clés RSA ainsi que ECDSA

1 HostKey /etc/ssh/ssh_host_rsa_key
2 HostKey /etc/ssh/ssh_host_dsa_key
3 HostKey /etc/ssh/ssh_host_ecdsa_key
4 HostKey /etc/ssh/ssh_host_ed25519_key

Séparation des privilèges

on laisse à yes

1 #Privilege Separation is turned on for security
2 UsePrivilegeSeparation yes

Regeneration et taille de clé

Keyregenerationintervalle indique le temps que le daemon attend avant de régénérer la clé. On peut réduire, éventuellement.
ServerKeyBits indique la taille, elle peut etre de 1024, 2048 ou 40962

1 # Lifetime and size of ephemeral version 1 server key
2 KeyRegenerationInterval 3600
3 ServerKeyBits 1024

Authentification

Temps d'attente avant déconnexion, si l'utilisateur ne parvient pas à se connecter.
Interdire la connexion à root.

1 # Authentication:
2 LoginGraceTime 120
3 PermitRootLogin no
4 StrictModes yes

Basé sur les clés
1 RSAAuthentication yes
2 PubkeyAuthentication yes
3 AuthorizedKeysFile	%h/.ssh/authorized_keys

Ne pas baser l 'authentification par un hôte

, ce n’est pas un gage de sécurité.

1 # Don't read the user's ~/.rhosts and ~/.shosts files
2 IgnoreRhosts yes
3 # For this to work you will also need host keys in /etc/ssh_known_hosts
4 RhostsRSAAuthentication no
5 # similar for protocol version 2
6 HostbasedAuthentication no
7 # Uncomment if you don't trust ~/.ssh/known_hosts for RhostsRSAAuthentication
8 #IgnoreUserKnownHosts yes

Ne pas permettre un MdP vide
1 # To enable empty passwords, change to yes (NOT RECOMMENDED)
2 PermitEmptyPasswords no

X11Forwarding

Un serveur n'est pas censé avoir d'environnement graphique, on peut mettre la valeur à no
Sur un poste , activer le X11Forwarding permet de se connecter à une session graphique avec rdesktop.

1 X11Forwarding yes ou no

Le FTP

1 Subsystem sftp /usr/lib/openssh/sftp-server

Pam est le gestionnaire de MdP

étant à yes, toutes les politiques de MdP sont appliqué

1 # Set this to 'yes' to enable PAM authentication, account processing,
2 # and session processing. If this is enabled, PAM authentication will
3 # be allowed through the ChallengeResponseAuthentication and
4 # PasswordAuthentication.  Depending on your PAM configuration,
5 # PAM authentication via ChallengeResponseAuthentication may bypass
6 # the setting of "PermitRootLogin without-password".
7 # If you just want the PAM account and session checks to run without
8 # PAM authentication, then enable this but set PasswordAuthentication
9 # and ChallengeResponseAuthentication to 'no'.
10 UsePAM yes

IMPORTANT

Penser à recharger la configuration après toute modification du fichier avec la commande 

1  # /etc/init.d/sshd restart

Installation

Lors de l’installation 2 paires de clé asymétrique sont crée: RSA et DSA, qui sont 2 algorithmes de chiffrement, les clés RAS seront utilisées.
Ces clés se situent dans le répertoire

1 /etc/ssh/ssh_host_rsa_key					Clé privée
2 /etc/ssh/ssh_host_rsa_key.pub				Clé public

Il y aura échange de clés lors de la connexion à la machine distante.

Générer une paire de clés

Avant de se connecter à une machine distante via ssh, il faut générer une paire de clé, sous *nix cela se fait très simplement avec la commande :

1 ssh-keygen

L'utilisateur est accompagné le long de la création, et devra répondre à une série de questions.
Rien de très compliqué.

1 username@SRV-ubuntu:~$ ssh-keygen
2 Generating public/private rsa key pair.
3 Laisser le paramètre suivant tel quel.
4 Enter file in which to save the key '(/home/username/.ssh/id: 
5 Saisissez une passphrase
6 Enter passphrase (empty for no passphrase): 
7 Enter same passphrase again: 
8 'Les retours suivants indiquent ou sont enregistrées les clés'.
9 Your identification has been saved in /home/username/.ssh/id_rsa.
10 Your public key has been saved in /home/username/.ssh/id_rsa.pub.
11 Vous avez ici l empreinte de la clé en regard de la paire identifiant@machine
12 The key fingerprint is:
13 '46:86:ed:3f:4e:ea:e5:06:f3:52:73:90:8f:11:ba:81 username@SRV-ubuntu'
14 The key s randomart image is:
15 +--[ RSA 2048]----+
16 |                 |
17 |       o  .      |
18 |      ..+. o     |
19 |      E+o +      |
20 |        So =     |
21 |       .+.+ o    |
22 |         ==o     |
23 |        .*o.     |
24 |       .ooo      |
25 +-----------------+