GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie kann man einen SSH-Benutzer darauf beschränken, nur SSH-Tunneling zuzulassen?

Auf der Serverseite können Sie dies einschränken, indem Sie deren Benutzer-Shell auf /bin/true setzen . Dadurch können sie sich authentifizieren, aber nichts ausführen, da sie keine Shell zum Ausführen erhalten. Das bedeutet, dass sie auf die Teilmenge von Dingen beschränkt sind, die SSH ihnen bieten kann. Wenn es eine Portweiterleitung anbietet, können sie das trotzdem tun.

Auf der Client-Seite möchten Sie sich wahrscheinlich mit -N verbinden . Dies hält den Client davon ab, nach einem Remote-Befehl wie einer Shell zu FRAGEN, er stoppt einfach, nachdem der Authentifizierungsteil abgeschlossen ist. Danke an die Kommentatoren für den Hinweis.


Folgendes hat den Vorteil, dass auch X11- und SSH-Agent-Socket-Forwardings verboten sind, die in Calebs Art vielleicht noch erlaubt sind. Ein weiterer Vorteil ist, dass, wenn der Benutzer seine Standard-Shell auf andere Weise ändern kann, dies seinen SSH-Zugriff immer noch auf TCP-Weiterleitungen beschränkt.

Geben Sie Folgendes in Ihren /etc/ssh/sshd_config ein :

Match User that-restricted-guy
  AllowTcpForwarding yes
  X11Forwarding no
  AllowAgentForwarding no
  ForceCommand /bin/false

um dem Benutzer that-restricted-guy zu erlauben um alle TCP-Verbindungen über Ihren SSH-fähigen Rechner weiterzuleiten (Verbindung zu diesem Rechner, auch zu localhost und sogar Verbindung von dieser Maschine zu anderen Maschinen).

Wenn Sie es noch restriktiver haben möchten (was eine gute Idee ist), können Sie auch Folgendes tun:

Match User even-more-restricted-guy
  PermitOpen 127.0.0.1:12345
  X11Forwarding no
  AllowAgentForwarding no
  ForceCommand /bin/false

Dies erlaubt dem Benutzer even-more-restricted-guy Verbindungen immer nur an 127.0.0.1 TCP-Port 12345 weiterzuleiten (wie er durch Ihren SSH-fähigen Rechner sichtbar ist).

Wenn sich der Benutzer normal verbindet, wird er jetzt sofort getrennt, weil der /bin/false wird der Befehl ausgelöst, der nichts anderes tut, als sich sofort mit dem Code 1 zu beenden. Wenn Sie dies vermeiden und Ihre Weiterleitungsverbindung offen halten möchten, fügen Sie den -N hinzu Flag auf ssh Befehl. Dies wird nicht versuchen, irgendeinen Befehl auszuführen, ermöglicht aber dennoch die Einrichtung von TCP-Weiterleitungen.

Ein Beispiel für einen Weiterleitungsbefehl, der im letzteren Setup funktionieren sollte:

ssh -L 12345:127.0.0.1:12345 -N [email protected]

Sie können steuern, was Personen in ssh tun können, indem Sie Gruppen zusammenbringen, vorausgesetzt, Ihre ssh-Version ist neu genug, um sie zu unterstützen (openssh 5.x+).

Grundsätzlich behandeln wir sie so, als ob sie sftp-Benutzer wären, erlauben aber TCP-Weiterleitung und optional Geben Sie die Ziele an, an die sie weiterleiten können. Wenn Sie ihnen ein Home-Verzeichnis geben, aber keine Verzeichnisse darunter erstellen, können sie keine Dateien übertragen, da sie dazu keine Berechtigung haben.

Match Group                     nicepeople
    PubkeyAuthentication        yes
    PasswordAuthentication      yes
    PermitEmptyPasswords        no
    GatewayPorts                no
    ChrootDirectory             /opt/dummy_location/%u
    ForceCommand                internal-sftp
    AllowTcpForwarding          yes
        PermitOpen              192.168.0.8:22
        PermitOpen              192.168.0.5:8080
    # Or leave out the PermitOpen to allow forwarding to anywhere.
    HostbasedAuthentication     no
    RhostsRSAAuthentication     no
    AllowAgentForwarding        no
    Banner                      none

Sie können diese Match Group wiederholen Blöcke für jede Gruppe, der Sie unterschiedliche Verhaltensweisen oder Einschränkungen zuweisen möchten.

Mit iptables können Sie weiter kontrollieren, wohin diese Person im Netzwerk gehen darf

/sbin/iptables -I OUTPUT -m owner --gid-owner 500 -j REJECT
/sbin/iptables -I OUTPUT -m owner --gid-owner 500 -m tcp -p tcp -d 192.168.0.0/24 -j ACCEPT

Dies setzt voraus, dass die GID der Gruppe "nette Leute" 500 ist.

Einige der oben genannten ssh-Optionen sind in den älteren Versionen von openssh verfügbar, jedoch nicht im Abschnitt Match Group. Match Group ist in OpenSSH 4.x und früher sehr eingeschränkt.


Linux
  1. So beschränken Sie den SSH-Zugriff für Benutzer mit LShell (Limited Shell)

  2. So deaktivieren Sie die Root-Benutzeranmeldung über SSH

  3. Ssh – Beschränken eines Ssh/scp/sftp-Benutzers auf ein Verzeichnis?

  4. Wie erstelle ich einen neuen Benutzer mit SSH-Zugriff?

  5. Beschränken Sie die SSH-Anmeldung auf eine bestimmte IP oder einen bestimmten Host

So gewähren oder verweigern Sie einem bestimmten Benutzer oder einer bestimmten Gruppe in Linux den SSH-Zugriff

So deaktivieren Sie die SSH-Anmeldung für einen bestimmten Benutzer in Linux

So beschränken Sie den SSH-Zugriff auf bestimmte Benutzer in Linux

So erlauben Sie den Fernzugriff auf den MySQL-Datenbankserver

So richten Sie SSH-Schlüssel unter Debian ein

Wie man als anderer Benutzer ssh