Установка тайм-аута простоя SSH Ubuntu 20.04

I want incoming ssh-sessions to automatically disconnect upon inactivity for a security-critical server.

I've set the following settings

TCPKeepAlive no
ClientAliveInterval  30
ClientAliveCountMax 0

I would expect sshd not to send KeepAlive-Packages due to TCPKeepAlive and ClientAliveCountMax - and my sessions to timeout after 30 seconds. On top of that I think TCPKeepAlive could be left at its default which should be yes.

I've checked existing sessions like that:

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

The sessions won't timeout...

I restarted sshd of course.

root@<server>:/etc/apache2# sshd -T | grep -i "ClientAlive"
clientaliveinterval 30
clientalivecountmax 0

Could the client still be sending KeepAlive-Packages? I cannot control all versions of clients that connect..

References: https://www.golinuxcloud.com/disconnect-idle-ssh-session-tcpkeepaliv-linux/ https://secscan.acron.pl/centos7/5/2/13

EDIT: TCPKeepAlive yes не меняет поведения, сеансы по-прежнему задерживаются. Я также начал новый сеанс после перезапуска sshd, чтобы избежать старых настроек в моем ssh-сеансе.

EDIT2: добавлено ключевое слово "incoming" в описание выше, чтобы было понятнее, что я хочу, чтобы мой ssh-сервер (sshd) работал разрывать соединения после тайм-аута простоя, потому что пользователи могут забыть об открытых (и незакрытых) сеансах ssh.

EDIT3: Только для информации - использовалась версия 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

Работает, как ожидалось в

  • Debian 10 (OpenSSH_7.9p1 Debian-10 + deb10u2, OpenSSL 1.1.1d 10 сентября 2019 г.) *
  • Ubuntu 16.04 (OpenSSH_7.2p2 Ubuntu-4ubuntu2.8, OpenSSL 1.0. Options that differ: casignaturealgorithms, gssapikexalgorithms, hostbasedacceptedkeytypes, hostkeyalgorithms, kexalgorithms, passwordauthentication, permitrootlogin, pubkeyacceptedkeytypes, pubkeyauthoptions, securitykeyprovider

    I've only set passwordauthentication no

    I've connected from the same host, the only difference is I used pubkey authentication for the server in question and password authentication for the Debian 10 server.

    Sorry that it's getting long.. It kinda turns into a bug report..

    On Debian 10:

    • ClientAliveInterval 10, ClientAliveCountMax 3: ssh -v records the message debug1: client_input_channel_req: channel 0 rtype keepalive@openssh.com ответ 1 каждые 10 секунд
    • ClientAliveInterval 10 , ClientAliveCountMax 0 : сеанс отключается через 10 секунд.

    В Ubuntu 20.04:

    • ClientAliveInterval 10 , ClientAliveCountMax 0 : ssh -v записывает сообщение debug1: client_input_channel_req: channel 0 rtype keepalive@openssh.comответ 1 каждые 10 секунд
3
задан 7 August 2020 в 13:54

1 ответ

Примечание : размер sda4, вероятно, слишком велик, поскольку вы используете его только для передачи файлов между Windows и Ubuntu. В какой-то момент вы можете захотеть изменить размер sda4.

Убедитесь, что у вас есть хорошая резервная копия важных файлов Ubuntu, так как эта процедура может привести к повреждению или потере данных.

Помните следующее:

  • всегда запускайте вся процедура с выдачей swapoff на любых смонтированных разделах подкачки, в частности этот и этот . Некоторые особенно важные выдержки:

    ClientAliveCountMax = 0 никогда не указывался для работы в режиме ожидания. тайм-аут. Если бы это было так, то это было бы случайно и было бы ненадежный. Например, если клиент указал собственный ServerAliveTimeout или оставил открытым перенаправленное TCP-соединение, тогда оно никогда не сработало.

    и

    Если вам нужен тайм-аут простоя, я предлагаю посмотреть на функции оболочки (например, TMOUT в bash) или что-то вроде модуля PAM.

1
ответ дан 11 August 2020 в 20:09

Другие вопросы по тегам:

Похожие вопросы: