Inaktive Bash-Sitzung automatisch ausloggen

von | 06.09.2016 | Linux

Ist ein Computer, etwa ein Server, auch für andere zugänglich als nur die, die daran arbeiten, sollte man ihn nicht verlassen, solange man eingeloggt ist. Muss man es doch, lässt sich eine Bash-Sitzung in Linux bei Inaktivität nach gewisser Zeit auch automatisch abmelden.

Normalerweise bleibt die Bash-Konsole solange verfügbar, bis man sich manuell abmeldet. Auf Wunsch kann die Shell den aktuellen Benutzer nach einer bestimmten Zeit auch von selbst abmelden.

tux

Die klassische TMOUT-Variable

Die bewährteste Methode funktioniert über die TMOUT-Variable in der Bash. Diese Einstellung wird für alle Benutzer angewendet, indem man folgende Zeile in eine neue Datei namens /etc/profile.d/bash_autologout.sh einfügt:

export TMOUT=600

Ab der nächsten Anmeldung greift automatisch ein Timer, der die Sitzung nach 10 Minuten (600 Sekunden) Inaktivität beendet.

Moderne Alternativen: systemd und SSH-Konfiguration

Seit Ubuntu 20.04 LTS und anderen modernen Distributionen gibt es zusätzliche Möglichkeiten, inaktive Sessions zu verwalten. Über systemd könnt ihr das Idle-Verhalten systemweit steuern:

sudo systemctl edit –full systemd-logind

In der Datei /etc/systemd/logind.conf setzt ihr:

UserStopDelaySec=600
KillUserProcesses=yes

Das beendet alle User-Prozesse nach 10 Minuten Inaktivität.

SSH-spezifische Timeouts

Für SSH-Verbindungen könnt ihr in /etc/ssh/sshd_config diese Parameter setzen:

ClientAliveInterval 300
ClientAliveCountMax 2

Das sendet alle 5 Minuten ein Keep-Alive-Signal und beendet die Verbindung nach zwei fehlgeschlagenen Versuchen (also nach 10 Minuten).

Benutzerspezifische Einstellungen

Wollt ihr das Timeout nur für bestimmte User aktivieren, tragt die TMOUT-Variable in deren ~/.bashrc oder ~/.profile ein:

export TMOUT=1800 # 30 Minuten
readonly TMOUT

Das readonly verhindert, dass User die Variable einfach überschreiben.

Erweiterte Sicherheit mit PAM

Für Hochsicherheitsumgebungen könnt ihr PAM (Pluggable Authentication Modules) nutzen. In /etc/pam.d/common-session fügt ihr hinzu:

session optional pam_lastlog.so
session required pam_limits.so

Anschließend definiert ihr in /etc/security/limits.conf:

* hard maxlogins 3
* soft cpu 600

Container und Cloud-Umgebungen

In Docker-Containern und Cloud-Instanzen (AWS EC2, Google Cloud, Azure) funktionieren die klassischen Methoden weiterhin. Bei Kubernetes-Pods solltet ihr jedoch auf die Pod-Security-Standards achten und Timeouts über die Container-Runtime definieren.

Für AWS Systems Manager Sessions könnt ihr in der Session-Konfiguration direkte Timeouts setzen:

„idleSessionTimeout“: „20“ # Minuten

Monitoring und Logging

Um zu überwachen, welche Sessions automatisch beendet werden, aktiviert ihr das Audit-Logging:

sudo auditctl -w /var/log/wtmp -p wa -k session_events

Die Logs findet ihr dann in /var/log/audit/audit.log.

Best Practices für verschiedene Umgebungen

Produktionsserver: 5-10 Minuten Timeout, kombiniert mit SSH-Key-Authentication
Entwicklungsumgebungen: 30-60 Minuten, abhängig vom Workflow
Jump-Hosts: 2-5 Minuten, da diese nur als Sprungbrett dienen
Database-Server: 3-5 Minuten mit zusätzlicher Connection-Pool-Überwachung

Troubleshooting häufiger Probleme

Falls der Timeout nicht greift, prüft zunächst, ob tmux oder screen läuft – diese Tools können das automatische Logout verhindern. Mit ps aux | grep -E ‚(tmux|screen)‘ findet ihr aktive Sessions.

Bei SSH-Verbindungen kann auch der Client-seitige ServerAliveInterval das Server-Timeout übersteuern. Prüft die lokale SSH-Config in ~/.ssh/config.

Fazit: Sicherheit durch Automation

Automatische Logouts sind ein einfacher aber effektiver Baustein der Server-Sicherheit. In Zeiten von Remote-Work und Multi-Cloud-Umgebungen solltet ihr diese Funktion standardmäßig aktivieren. Die Kombination aus TMOUT-Variable, SSH-Timeouts und systemd-Konfiguration bietet mehrschichtigen Schutz gegen vergessene Sessions.

Denkt daran: Ein kurzes Timeout nervt vielleicht anfangs, verhindert aber potentiell schwerwiegende Sicherheitslücken.

Zuletzt aktualisiert am 06.04.2026