Je veux entrant ssh-sessions de se déconnecter automatiquement en cas d'inactivité pour un serveur critique sur le plan de la sécurité.
J'ai défini les paramètres suivants
TCPKeepAlive no
ClientAliveInterval 30
ClientAliveCountMax 0
Je m'attendrais à ce que sshd n'envoie pas de KeepAlive-Packages à cause de TCPKeepAlive
et ClientAliveCountMax
- et mes sessions se terminent au bout de 30 secondes. De plus, je pense que TCPKeepAlive
pourrait être laissée à sa valeur par défaut, qui devrait être yes
.
J'ai vérifié des sessions existantes de ce type :
root@<server>:/etc/apache2# w
06:53:51 up 2 days, 21:25, 2 users, load average: 0,00, 0,00, 0,00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
_____-ad pts/0 ____________ Do11 6.00s 0.99s 0.00s sshd: _____-admin [priv]
_____-us pts/1 ____________ 06:40 13:26 0.02s 0.02s -bash
Les sessions ne sont pas interrompues...
J'ai redémarré sshd bien sûr.
root@<server>:/etc/apache2# sshd -T | grep -i "ClientAlive"
clientaliveinterval 30
clientalivecountmax 0
Le client pourrait-il encore envoyer des paquets KeepAlive ? Je ne peux pas contrôler toutes les versions des clients qui se connectent
Références : https://www.golinuxcloud.com/disconnect-idle-ssh-session-tcpkeepaliv-linux/ https://secscan.acron.pl/centos7/5/2/13
EDIT: TCPKeepAlive yes
ne modifie pas le comportement, les sessions perdurent. J'ai également démarré une nouvelle session après avoir redémarré sshd pour éviter d'avoir d'anciens paramètres dans ma session ssh.
EDIT2 : J'ai ajouté le mot-clé "incoming" à la description ci-dessus pour rendre plus clair le fait que je veux que mon serveur ssh (sshd) abandonne les connexions après un délai d'inactivité, parce que les utilisateurs peuvent oublier leurs sessions ssh ouvertes (et non sauvegardées).
EDIT3 : Juste pour information - j'ai utilisé la version sshd :
root@<server>:/etc/apache2# dpkg -l openssh-server
Gewünscht=Unbekannt/Installieren/R=Entfernen/P=Vollständig Löschen/Halten
| Status=Nicht/Installiert/Config/U=Entpackt/halb konFiguriert/
Halb installiert/Trigger erWartet/Trigger anhängig
|/ Fehler?=(kein)/R=Neuinstallation notwendig (Status, Fehler: GROSS=schlecht)
||/ Name Version Architektur Beschreibung
+++-==============-==================-============-=================================================================
ii openssh-server 1:8.2p1-4ubuntu0.1 amd64 secure shell (SSH) server, for secure access from remote machines
root@<server>:/etc/apache2# sshd -V
unknown option -- V
OpenSSH_8.2p1 Ubuntu-4ubuntu0.1, OpenSSL 1.1.1f 31 Mar 2020
Fonctionne comme prévu en
- Debian 10 (OpenSSH_7.9p1 Debian-10+deb10u2, OpenSSL 1.1.1d 10 Sep 2019)*.
- Ubuntu 16.04 (OpenSSH_7.2p2 Ubuntu-4ubuntu2.8, OpenSSL 1.0.2g 1 Mar 2016)
*Pour Debian 10, je voulais comparer sshd -T
. Les options qui diffèrent : casignaturealgorithms
, gssapikexalgorithms
, hostbasedacceptedkeytypes
, hostkeyalgorithms
, kexalgorithms
, passwordauthentication
, permitrootlogin
, pubkeyacceptedkeytypes
, pubkeyauthoptions
, securitykeyprovider
Je n'ai mis que passwordauthentication no
Je me suis connecté depuis le même hôte, la seule différence étant que j'ai utilisé l'authentification par pubkey pour le serveur en question et l'authentification par mot de passe pour le serveur Debian 10.
Désolé que ça devienne long C'est en quelque sorte un rapport de bogue
Sur Debian 10 :
-
ClientAliveInterval 10
,ClientAliveCountMax 3
:ssh -v
enregistre le messagedebug1: client_input_channel_req: channel 0 rtype keepalive@openssh.com reply 1
toutes les 10 secondes -
ClientAliveInterval 10
,ClientAliveCountMax 0
La session se déconnecte au bout de 10 secondes.
Sur Ubuntu 20.04 :
-
ClientAliveInterval 10
,ClientAliveCountMax 0
:ssh -v
enregistre le messagedebug1: client_input_channel_req: channel 0 rtype keepalive@openssh.com reply 1
toutes les 10 secondes