Machines
ssh est installé (ou le sera) sur toutes les machines. Sur bulbe, plusieurs autres services ou applications reposent sur ou interagissent avec ssh:
Fichiers
Configuration
/etc/ssh/sshd_config
- le fichier de configuration du serveur. En principe le seul qu'on ait à modifier.
Clefs
/etc/ssh/ssh_host_*_key
/etc/ssh/ssh_host_*_key.pub
- les clefs privées et publiques du serveur. Une bonne pratique consiste à en communiquer les empreintes aux personnes auxquelles on ouvre un accès sur une machine, afin qu'elles puissent s'assurer que leur trafic n'est pas détourné.
/home/${user}/.ssh/authorized_keys
- trousseau de clefs publiques de
${user}
(une clef par ligne), nécessaire pour se connecter.
Configuration
Dans /etc/ssh/sshd_config
:
On interdit la connexion par
root
et l'authentification par mot de passe :PermitRootLogin no PasswordAuthentication no
Cela signifie que l'authentification par paire de clefs publique/privée est la seule possible (les autres sont désactivées).
Le paramètrePermitRootLogin no
est donc facultatif, puisqueroot
n'a pas de clef SSH.On désactive le trasfert de sessions X11 :
X11Forwarding no
Le jeu des dépendances de paquets peut amener à ce qu'un serveur X soit installé sur une machine. Ce paramètre empêche une redirection de X qui pourrait permettre une attaque côté client.
On restreint le choix d'algorithmes de chiffrement et d'authentification à ceux considérés sûrs (parmi ceux disponibles).
Ciphers chacha20-poly1305@openssh.com,aes256-ctr,aes192-ctr,aes128-ctr MACs hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-512,hmac-sha2-256,umac-128@openssh.com KexAlgorithms curve25519-sha256@libssh.org,ecdh-sha2-nistp521,ecdh-sha2-nistp384,ecdh-sha2-nistp256,diffie-hellman-group-exchange-sha256
On durcit la séparation des privilèges, pour
sshd
, avec une option plus sûre mais moins portable que celle par défaut.UsePriviledgeSeparation sandbox
Enfin, on supprime les clefs DSA.
Accès SFTP restreint
Sur la VM de bureautique, pour permettre aux personnes partageant des tâches administratives au sein de l'association d'accéder par sftp à un espace de stockage qui leur est réservé, et de n'accéder qu'à cet espace, le serveur a fait l'objet d'une configuration spécifique (voir aussi: Stockage de fichiers):
Subsystem sftp internal-sftp
Match Group admin
AuthorizedKeysFile /etc/ssh/role_keys/%u
ChrootDirectory /srv/association
ForceCommand internal-sftp -u 027
AllowTcpForwarding no
Le choix de internal-sftp
dans la directive Subsystem
est requis par ce
qui suit.
La directive Match
permet d'imposer à un user ou à un groupe donné une
configuration du service différente de ce qui est défini dans le reste du
fichier. Les directives Match
doivent figurer à la fin du fichier.
La directive AuthorizedKeysFile /etc/ssh/…
permet de versionner les clefs
d'accès au service.
Les directives ChrootDirectory DIR
et ForceCommand internal-sftp [OPTIONS]
fonctionnent de pair. Elles permettent de restreindre l'accès au système de
deux façons:
- Seuls les accès par sftp sont autorisés.
- Le répertoire de chroot devient la racine au niveau du client, qui ne
peut donc pas naviguer dans le reste du système. Le répertoire de chroot
doit avoir le mode
0755
et doit être propriété deroot:root
.