Autenticazione SSH tramite gssapi-keyex o gssapi-with-mic (chiave pubblica non consentita)


15

La mia azienda ha disabilitato l'autenticazione con chiave pubblica SSH, quindi devo inserire manualmente ogni volta la mia password (non suppongo di cambiare /etc/ssh/sshd_config).

Tuttavia gssapi-keyexe gssapi-with-micautenticazioni sono abilitati (vedi sotto sshoutput di debug).

Come posso utilizzare l'accesso automatico in questo caso?
Posso sfruttare gssapi-keyexe / o gssapi-with-micautenticazioni?

> ssh -v -o PreferredAuthentications=publickey hostxx.domainxx
OpenSSH_5.3p1, OpenSSL 1.0.0-fips 29 Mar 2010
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Applying options for *
debug1: Connecting to hostxx.domainxx [11.22.33.44] port 22.
debug1: Connection established.
debug1: identity file /home/me/.ssh/identity type -1
debug1: identity file /home/me/.ssh/id_rsa type -1
debug1: identity file /home/me/.ssh/id_dsa type 2
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.3
debug1: match: OpenSSH_5.3 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_5.3
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-md5 none
debug1: kex: client->server aes128-ctr hmac-md5 none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug1: Host 'hostxx.domainxx' is known and matches the RSA host key.
debug1: Found key in /home/me/.ssh/known_hosts:2
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: gssapi-keyex,gssapi-with-mic,password
debug1: No more authentication methods to try.
Permission denied (gssapi-keyex,gssapi-with-mic,password).

1
Il tessuto di Python fa un ottimo lavoro nel gestire l'automazione ssh.
Dan Garthwaite,

Ciao @DanGarthwaite Usi Fabric per accedere manualmente ad altri server remoti? Per favore, puoi spiegare come lo usi. Si prega di fornire una risposta. Saluti
olibre

3
Se non ti trovi in ​​un regno Kerberos (o dominio Active Directory), è improbabile che GSSAPI ti sia utile. Detto questo, disabilitare l'autenticazione con chiave pubblica sembra abbastanza assurdo.
Michael Hampton,

1
@olibre Fabric è un'utilità per eseguire comandi su uno o più server su SSH. Questi comandi sono generalmente organizzati in un "file fab", come un file Makefile. Fa un ottimo lavoro nel far scomparire SSH (una volta autenticato) e gestisce tutti i modi in cui client e server SSH tendono a interrompere il controllo. È disponibile un breve tutorial: docs.fabfile.org/en/1.7/tutorial.html
Dan Garthwaite,

Per favore, @DanGarthwaite, potresti dare un esempio di un fabfile che accederà a un altro computer (SSH gssapi senza chiedere una password) e aprire una shell? Puoi fornirlo in una risposta. (In cinque minuti, non ho trovato nel tutorial come farlo). Saluti;)
olibre

Risposte:


19

Può essere.

  • Puoi ottenere un ticket per il tuo principale sul tuo sistema client sia come parte del processo di accesso standard o manualmente ( kinit, MIT Kerberos per Windows)?
  • Il server ha un kerberos principal o puoi darlo a uno? Dovrebbe essere nella forma host/server.example.com@EXAMPLE.COM.
  • L' GSSAPIautenticazione è abilitata sul tuo client?
  • Il tuo client sa a quale dominio appartiene il server tramite record di risorse TXT DNS o mapping locale?

Se hai detto "sì" a tutto quanto sopra, quindi congratulazioni, puoi usare GSSAPIAuthentication.

  • Potrebbe inoltre essere necessario abilitare la delega delle credenziali, a seconda della configurazione.


Passaggi del test: (Supponendo: domain = example.com; realm = EXAMPLE.COM)

  1. kinit username@EXAMPLE.COM
    • Idealmente, questo viene gestito dal processo di accesso standard includendo pam_krb5o pam_sss(con auth_provider = krb5) l'appropriato pam stack.
  2. kvno host/server.example.com@EXAMPLE.COM
    • Questo è un passaggio di debug. sshlo fa automaticamente se hai una cache valida e stai parlando con una sshdche supporta gssapi-with-mico gssapi-keyex.
  3. dig _kerberos.example.com txt dovrebbe tornare "EXAMPLE.COM"
    • In alternativa, la mappatura potrebbe essere memorizzata nella [domain_realm]sezione di /etc/krb5.confas .example.com = EXAMPLE.COM, ma il dnsmetodo si ridimensiona molto meglio.
  4. ssh -o GSSAPIAuthentication=yes username@server.example.com
    • Per accedere a un nome utente diverso da quello del tuo principale sul server dovrai sapere per mapparlo i dettagli di cui non sto entrando qui.

Ciao. Ti ho dato +1 qualche tempo fa, ma in realtà non so come controllare i tuoi quattro punti. (Non sono un amministratore, solo uno sviluppatore). Potresti fornire una riga di comando per verificare la connessione SSH utilizzando gssapiauthentication? Forse posso anche usare gssapiauthenticationsulla mia macchina Linux. (dovrei usarlo kinitper quello?) Cin cin;)
olibre,

5

Il metodo in 4 passaggi è corretto (ci sono anche record Kerberos SRV in DNS che sono ancora più eleganti e sono presenti in ogni Active Directory). Lo uso tutto il tempo, e ho sostenuto questo sopra i metodi pubkey per, principalmente motivi di sicurezza e controllo.

Detto questo, questo dà solo l'accesso interattivo, anche se può essere quasi interattivo una volta che hai ricevuto un biglietto sulla tua workstation. Il ticket Kerberos si comporta in modo molto simile all'agente SSH; una volta che lo hai, le nuove connessioni sono istantanee e prive di password; sebbene con un limite di tempo.

Per ottenere l'accesso batch interattivo, è necessario ottenere un file keytab, un file che essenzialmente contiene la password per un account Kerberos, proprio come la metà privata di una chiave SSH. In base alle precauzioni di sicurezza applicabili; soprattutto perché il keytab non è crittografato o protetto con una password.

Sono abbastanza riluttante a fornire ai miei utenti i loro keytab per i loro account personali, ma sto usando in modo aggressivo account di servizio con autorizzazioni minime per vari lavori batch, soprattutto dove è fondamentale che le credenziali siano delegate al sistema remoto, qualcosa che pubkey può semplicemente " raggiungere.

I keytab possono essere creati usando ktutil su Unix o KTPASS.EXE su Windows (quest'ultimo dai servizi di AD Kerberos). Nota che ktutil esiste in due versioni, Heimdal e MIT, e la loro sintassi differisce. La lettura della manpage su un sistema pertinente aiuta.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.