GNU/Linux >> Linux Esercitazione >  >> Linux

Come limitare un utente SSH a consentire solo il tunneling SSH?

Sul lato server, puoi limitare questo impostando la loro shell utente su /bin/true . Ciò consentirà loro di autenticarsi, ma in realtà non eseguire nulla poiché non hanno una shell per eseguirlo. Ciò significa che saranno limitati a qualsiasi sottoinsieme di cose che SSH è in grado di offrire loro. Se offre il port forwarding, saranno comunque in grado di farlo.

Sul lato client, probabilmente vorrai connetterti con il -N . Ciò impedisce al client di CHIEDERE un comando remoto come una shell, si interrompe solo dopo che la parte di autenticazione è stata eseguita. Grazie ai commentatori per averlo segnalato.


Quanto segue ha il vantaggio che anche gli inoltri di socket dell'agente X11 e SSH non sono consentiti, che potrebbero essere ancora consentiti in modo Calebs. Un altro vantaggio è che se l'utente è in grado di modificare la sua shell predefinita in qualsiasi altro modo, ciò limiterà comunque il suo accesso SSH ai soli inoltri TCP.

Inserisci quanto segue nel tuo /etc/ssh/sshd_config :

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

per consentire all'utente that-restricted-guy per inoltrare qualsiasi connessione TCP attraverso la tua macchina abilitata SSH (connessione a questa macchina, anche a localhost e persino la connessione da questa macchina ad altre macchine).

Se lo vuoi ancora più restrittivo (che è una buona idea) puoi anche fare quanto segue:

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

Ciò consentirà all'utente even-more-restricted-guy per inoltrare sempre e solo le connessioni alla porta 127.0.0.1 TCP 12345 (poiché è visibile attraverso la tua macchina abilitata SSH).

Quando l'utente si connette normalmente, verrà immediatamente disconnesso a causa del /bin/false verrà attivato il comando che non fa altro che uscire istantaneamente con un codice 1. Se vuoi evitare questo e mantenere aperta la tua connessione di inoltro, aggiungi -N flag all'ssh comando. Questo non tenterà di eseguire alcun comando ma consentirà comunque di impostare gli inoltri TCP.

Un esempio di comando forward che dovrebbe funzionare in quest'ultima configurazione:

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

Puoi controllare cosa possono fare le persone in ssh abbinando i gruppi, supponendo che la tua versione di ssh sia abbastanza nuova da supportarla (openssh 5.x+).

Fondamentalmente, li trattiamo come se fossero utenti sftp, ma consentiamo l'inoltro tcp e facoltativamente specificare le destinazioni a cui possono inoltrare. Se dai loro una home directory ma non crei alcuna directory al suo interno, non potranno trasferire alcun file perché non avranno il permesso di farlo.

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

Puoi ripetere questi gruppi di corrispondenza blocchi per ogni gruppo a cui desideri fornire comportamenti o restrizioni diversi.

Puoi controllare ulteriormente dove questa persona può andare sulla rete usando iptables

/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

Ciò presuppone che il GID del gruppo "nicepeople" sia 500.

Alcune delle opzioni ssh di cui sopra sono disponibili nelle versioni precedenti di openssh, ma non nella sezione Match Group. Match Group è molto limitato in OpenSSH 4.xe versioni precedenti.


Linux
  1. Come limitare l'accesso SSH per l'utente con LShell (shell limitata)

  2. Come disabilitare l'accesso dell'utente root tramite SSH

  3. Ssh:limitare un utente Ssh/scp/sftp a una directory?

  4. Come creare un nuovo utente con accesso Ssh?

  5. Limita l'accesso SSH a un IP o host specifico

Come consentire o negare l'accesso SSH a un particolare utente o gruppo in Linux

Come disabilitare l'accesso SSH a un utente specifico in Linux

Come limitare l'accesso SSH a determinati utenti in Linux

Come consentire l'accesso remoto al server di database MySQL

Come configurare Chroot SFTP in Linux (consenti solo SFTP, non SSH)

Come configurare SSH per limitare utenti/gruppi con direttive di autorizzazione e di negazione