SSH Zeit einschränken

S

Samhain

Grünschnabel
Wie kann man SSH so einschrenken das ein gewisser User nur um eine bestimmte Uhrzeit (z.B. 12:00 - 15:00) SSH benutzen darf/kann?

Hab leider noch nichts hilfreiches gefunden.
Danke im Vorraus. :winke:
 
Alle Benutzer oder nur ein spezieller?
 
Das ist nicht so einfach.

Annahme: Du hast Benutzer B1, B2 und B3 und die sollen alle gleichzeitig ab 6 Uhr morgens gesperrt werden, dann kannst du einen Cronjob erstellen, der eine zweite SSH-Konfiguration (sshd_config) in das entsprechende Verzeichnis kopiert und den SSHD neustartet:

DenyUsers B1,B2,B3... muss dann in der "Sperr-Konfiguration" stehen. Eine dynamische Möglichkeit fällt mir nicht ein, denn selbst per Firewall wirst du die User nicht abfragen können nehme ich an (außer jeder Benutzer hat ne feste IP von der er sich anmeldet).

Beachte aber: Wenn bestehende Verbindungen werden nicht getrennt. Wenn B1 also ab 6 Uhr nicht mehr per SSH Zugriff haben soll, aber zu diesem Zeitpunkt noch eine Verbindung besteht, dann bleibt sie bestehen bis er sie trennt (oder du killst sie mit einem entsprechenden Befehl, was aber sehr ärgerlich sein kann).

Andere Lösungsvorschläge sind denkbar, aber so auf die Schnelle wäre das mein erster Hinweis.
 
Puh, klingt ziemlich komplex das ganze oO
Gibts keine einfachere Lösung?
 
Naja, es hört sich aber auch nur komplex an. Eine elegantere Lösung wirst du nur schwer finden, da dieses Problem wohl eher selten ist.

Schreib doch einfach ein Skript was ungetestet prinzipiell so aussehen könnte:
Code:
#!/bin/sh
echo "Starte SSHD mit eingeschränkter Konfiguration..."
if [ -f /var/run/sshd.pid ]
then
   /usr/sbin/sshd stop
   /usr/sbin/sshd -f /etc/sshd/sshd_config_locked start
fi
Die Pfade musst du natürlich anpassen. Je nach System ist es auch ratsam, die Startskripte statt einer direkten Verlinkung zu verwenden. Dann ist nur fraglich, ob diese Parameter (-f /etc...) entgegennehmen und verarbeiten. Das musst du ausprobieren.

Dieses Skript kannst du dann in einen Cronjob stecken und gut. Wenn du dann willst, dass der SSH-Zugang wieder frei ist, änderst du die Zeilen so ab, dass der SSHD gestoppt wird und mit der Standardkonfiguration wieder gestartet wird.

Prinzipiell also gaaanz einfach :-)
 
Hi,

pam_time tut was Du willst und ist m.E. "eleganter". ;)

Code:
man pam_time

.
 
pam_time...interessant. Wieder was gelernt, was ich wohl nie brauchen werde :D

Aber danke für den eleganten Tipp. Ich wusste, dass es was geben könnte... ;)
 
Alternativ lässt sich auch im /etc/profile etwas implementieren, dass die Benutzer rauswirft! Finde ich schöner, als mit SSH Konfigurationen rumzuspielen. PAM ist natürlich die allerschönste Lösung :)
 
Wenn man IT-Infrastrukturen nach BSI-Grundschutz auditiert, ist das keine ganz unwichtige Maßnahme. Da gibt es für Clients unter Unix M 4.16 Zugangsbeschränkungen für Accounts und / oder Terminals :oldman
(Link)

Ist dann immer gut, wenn man dem Kunden sagen kann _wie_ er sowas umsetzen kann.:brav:

Kann man wissen, muss man wohl nicht...;)

.

Edith sagt: @tronix röschtösch
 
Der owner match sowie timestart und timestop von iptables wäre für die Firewallregel Lösung eine Möglichkeit
 
Wunderbare Vorgehensweise um einen Denial of Service zu provozieren nice2kn0w. Was machst du, wenn die User von der selben Maschine kommen, einige dürfen einloggen, andere nicht?
 

Ähnliche Themen

SSH auf bestimmte IPs für bestimmte User

xrandr: cant open display

Samba4 AD Gruppen erlauben/erbieten über PAM und Winbind

Mein Server versendet SPAM in Massen

CSV Datei mit sed manipulieren/optimieren/ergänzen

Zurück
Oben