4 votes

Définir le délai d'inactivité de SSH Ubuntu 20.04

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 message debug1: 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 message debug1: client_input_channel_req: channel 0 rtype keepalive@openssh.com reply 1 toutes les 10 secondes

3voto

Doug Smythies Points 12803

Dans les versions les plus récentes du serveur openssh, il n'y a aucun moyen de configurer un délai d'inactivité/de veille via la commande /etc/ssh/sshd_config .

Bien que l'on puisse trouver de nombreuses références indiquant qu'il faut mettre en place des ClientAliveCountMax 0 en liaison avec ClientAliveInterval N pour créer un délai d'inactivité/de veille, il est évident que cette possibilité n'était pas prévue et qu'elle a été intentionnellement supprimée.

La modification pertinente de la les pages de manuel sshd_config pour ClientAliveCountMax est cette phrase supplémentaire : " Setting a zero ClientAliveCountMax disables connection termination. "

Certains ont soumis des rapports de bogues contre openssh, en particulier celui-ci et celui-ci . Quelques extraits particulièrement pertinents :

ClientAliveCountMax=0 n'a jamais été spécifié pour fonctionner comme un d'inactivité. S'il l'a fait, c'est par accident et ce serait pas fiable. Par exemple, si le client spécifie son propre ServerAliveTimeout ou gardait une connexion TCP transférée ouverte, il ne se déclencherait jamais.

y

Si vous avez besoin d'un délai d'inactivité, je vous suggère de consulter les fonctionnalités de Shell. (par exemple TMOUT de bash) ou quelque chose comme un module PAM.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X