Table des matières
Configuration serveur ssh
Durcissement de la configuration d'un serveur SSH
# HostKey for protocol version 2 # HostKey /etc/ssh/ssh_host_dsa_key # HostKey /etc/ssh/ssh_host_rsa_key # HostKey /etc/ssh/ssh_host_ecdsa_key HostKey /etc/ssh/ssh_host_ed25519_key Protocol 2 Compression no LogLevel verbose MaxAuthTries 3 MaxSessions 2 AuthenticationMethods publickey PubkeyAcceptedKeyTypes ssh-ed25519-cert-v01@openssh.com,ssh-ed25519 ChallengeResponseAuthentication no PasswordAuthentication no UsePAM yes X11Forwarding no PrintMotd no AllowTcpForwarding no AllowStreamLocalForwarding no GatewayPorts no PermitTunnel no TCPKeepAlive no AllowAgentForwarding no PermitRootLogin prohibit-password ClientAliveInterval 1200 ClientAliveCountMax 3 port 22 AcceptEnv LANG LC_* Subsystem sftp /usr/lib/openssh/sftp-server KexAlgorithms curve25519-sha256@libssh.org,diffie-hellman-group-exchange-sha256 Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes128-gcm@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
Explication des options de configurations
Desactiver les clefs d'hôte obsolète
Utilisation des clefs à base de courbes elliptique : ED25519. Il est possible d'utiliser RSA mais avec une longueur de clef de 4096. Il faut mettre la ligne commenté, l'absence de ligne ne suffit pas.
# HostKey /etc/ssh/ssh_host_dsa_key # HostKey /etc/ssh/ssh_host_rsa_key # HostKey /etc/ssh/ssh_host_ecdsa_key HostKey /etc/ssh/ssh_host_ed25519_key
Activer l'authentification par Clef
AuthenticationMethods publickey PasswordAuthentication no
Restriction des types de clefs autorisées ( ed25519 ) :
PubkeyAcceptedKeyTypes ssh-ed25519-cert-v01@openssh.com,ssh-ed25519
Root
Ici deux options et deux visions des choses.
1) Interdire la connexion root avec un mot de passe, mais laisser l'accès avec la clef
PermitRootLogin prohibit-password
2) Interdire complètement la connexion root, et donner le droit de connexion à des utilisateurs bien identifiés
PermitRootLogin no AllowUsers mbe tla
Même si
- L'utilisation d'un compte non privilégié donne un faux sentiment de sécurité.
- La commande sudo ne vous empêchera pas de faire des erreurs en tant que root.
- Une fois qu'un pirate se connecte avec un compte même non privilégié sur un serveur, celui-ci est entièrement compromis, où il le sera très rapidement.
- On a tendance à utiliser un mot de passe trop faible pour les comptes non privilégiés.
Timeout de session
Valeur de timeout = ClientAliveInterval * ClientAliveCountMax
# 15 minutes de timeout ClientAliveInterval 300 ClientAliveCountMax 3
Interdire les fonctions inutiles
Desactiver les fonctions qui ne sont pas utiles. A activer selon les besoins.
X11Forwarding no PrintMotd no AllowTcpForwarding no AllowStreamLocalForwarding no GatewayPorts no PermitTunnel no Compression no TCPKeepAlive no AllowAgentForwarding no
Configuration des algorithmes de chiffrement
On ne garde que les algorithmes récents.
- KexAlgorithms : méthode d'échanges de clef de chiffrement.
- Ciphers : algorithme de chiffrement
- MACs : Message Authentication Code
Référence
- https://github.com/evict/SSHScan : Outils “offline” de vérification des algorithme de chiffrement.
- https://www.octopuce.fr/suivi-des-commandes-saisies-sur-nos-serveurs/ : un exemple de mise en place du suivit des commandes executé sur un serveur