Toon posts:

Kerberos SSH / SSHD - TicketDeligation

Pagina: 1
Acties:

Onderwerpen


Anoniem: 464235

Topicstarter
Beste Tweakers,

Het afgelopen weekend heb ik geheel gespendeerd aan een kerberos - ssh SSO setup. Nu wil ik kerberos als SSO mechanisme inzetten om zorgenloos van de ene naar de andere machine te hoppen.

Uiteindelijk heb ik het voor elkaar gekregen, maar niet op een manier zoals ik het graag zie.
Het SSH-en van de ene naar de andere machine heb ik wel aan de gang gekregen maar dit werkt alleen als ik de sshserver vanaf de binary start, vanuit het init script of xinetd werkt niet. Kinit werkt goed dus de interactie met het KDC gaat goed ook heb ik ervoor gezorgd dat de onderstaande dingen juist geconfigureerd zijn:

- KDC / kadmin config
- DNS (A / reverse records)
- hostnames
- host keys
- principals
- principal login permissies (.k5login) (ksu-en werkt ook)
- ssh-server reverse DNS check staat uit (UseDNS = no)

Op het moment dat krb5 login niet werkt met ssh krijg ik de volgende debug ouput:
code:
1
2
3
4
5
6
7
8
9
debug3: authmethod_is_enabled gssapi-with-mic
debug1: Next authentication method: gssapi-with-mic
debug2: we sent a gssapi-with-mic packet, wait for reply
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password
debug2: we sent a gssapi-with-mic packet, wait for reply
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password
debug2: we sent a gssapi-with-mic packet, wait for reply
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password
debug2: we did not send a packet, disable method


Op het moment dat we sshd als binary starten "/usr/sbin/sshd -p99" en het wel werkt, zien we het volgende:
code:
1
2
3
4
5
6
7
8
9
debug3: authmethod_is_enabled gssapi-with-mic
debug1: Next authentication method: gssapi-with-mic
debug2: we sent a gssapi-with-mic packet, wait for reply
debug1: Authentication succeeded (gssapi-with-mic).
debug1: channel 0: new [client-session]
debug3: ssh_session2_open: channel_new: 0
debug2: channel 0: send open
debug1: Requesting no-more-sessions@openssh.com
debug1: Entering interactive session.


Als we naar de debug output van de server kijken op het moment dat het niet lukt zien we het volgende
code:
1
2
3
4
5
6
7
8
9
10
11
debug1: userauth-request for user root service ssh-connection method gssapi-with-mic
debug1: attempt 1 failures 0
debug1: Unspecified GSS failure.  Minor code may provide more information
Permission denied

debug1: userauth-request for user root service ssh-connection method gssapi-with-mic
debug1: attempt 2 failures 0
debug1: userauth-request for user root service ssh-connection method gssapi-with-mic
debug1: attempt 3 failures 0
debug1: userauth-request for user root service ssh-connection method publickey
debug1: attempt 4 failures 0


Een "permission denied" dus, ik kan alleen niet vinden waar dit vandaan komt,

strace op server process ten tijde van falende login:
code:
1
2
3
4
5
6
7
8
9
10
11
12
accept(3, {sa_family=AF_INET, sin_port=htons(3700), sin_addr=inet_addr("<IP ADDR>")}, [16]) = 5
fcntl(5, F_GETFL)                       = 0x2 (flags O_RDWR)
pipe([6, 7])                            = 0
socketpair(PF_FILE, SOCK_STREAM, 0, [8, 9]) = 0
clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x7fd387dfaa90) = 22982
close(7)                                = 0
write(8, "\0\0\2o\0", 5)                = 5
write(8, "\0\0\2f\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nProtocol"..., 622) = 622
close(8)                                = 0
close(9)                                = 0
close(5)                                = 0
select(7, [3 4 6], NULL, NULL, NULL


Hieruit conludeer ik dat de configuratie wel snor zit maar kan niet bevatten waar de permission denied vandaan komt op het moment dat sshd vanuit het init script of xinetd gestart word. Er verschijnen ook geen records in de ssh server log..

Hints en tips zijn zeer welkom, bij voorbaat dank!

  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 04-06 22:27

Hero of Time

Moderator LNX

There is only one Legend

Zelf ben ik ook bezig geweest met Kerberos login via SSH en meen gelezen te hebben dat root login daarmee geweigerd wordt. Neem dus eens een andere gebruiker.

Waarom het via manual starten wel werkt voor root, zou kunnen omdat 't dan defaults neemt, ipv je config bestand. Je ziet wellicht ook meer als je de ssh client met verbose gebruikt.

Commandline FTW | Tweakt met mate


Anoniem: 464235

Topicstarter
Het switchen van de gebruiker helpt helaas niet. De debug output van een client geeft het volgende weer
code:
1
2
3
4
5
6
7
8
debug1: Next authentication method: gssapi-with-mic
debug2: we sent a gssapi-with-mic packet, wait for reply
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password
debug2: we sent a gssapi-with-mic packet, wait for reply
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password
debug2: we sent a gssapi-with-mic packet, wait for reply
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password
debug2: we did not send a packet, disable method


De server geeft daarbij dezelfde permission denied:
code:
1
2
3
4
debug1: userauth-request for user blaat service ssh-connection method gssapi-with-mic
debug1: attempt 1 failures 0
debug1: Unspecified GSS failure.  Minor code may provide more information
Permission denied


Zou dit in pam kunnen zitten? Aangezien de authorisatie via ssh door pam gerouteerd word (correct me if im wrong). Wat ik dan nog niet kan verklaren is waarom het wel werkt vanuit een handmatige start van de binary.

De configuratie van de server zou goed moeten zijn, just to be sure. Dit is 'm:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
Protocol 2

# Logging
SyslogFacility AUTHPRIV

# Authentication:
#LoginGraceTime 2m
PermitRootLogin yes
#StrictModes yes
#MaxAuthTries 6
#MaxSessions 10
PasswordAuthentication yes
ChallengeResponseAuthentication no


Wat wellicht interessant is, is de "Unspecified GSS failure. Minor code may provide more information" melding.
SSHD stopt namelijk met exit code 130, brengt dit ons dichterbij? Ik heb nog niet kunnen vinden wat deze exitcode inhoud...

  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 04-06 22:27

Hero of Time

Moderator LNX

There is only one Legend

Zet die PasswordAuthentication eens uit of op no. Bij mij @ werk is het een comment.

WinBind ook geïnstalleerd en opgegeven in /etc/nsswitch.conf? Geef eens aan wat je allemaal hebt aangepast en toegepast voor je KRB login. Want het is niet 1 bestand, maar meerdere.

Commandline FTW | Tweakt met mate


Anoniem: 464235

Topicstarter
Winbind is naar mijn weten enkel voor Samba, daar maken we in dit scenario geen gebruik van.

Om uit te sluiten dat er iets binnen sshd zelf in de weg zit heb ik deze oldfashion zelf gecompiled (met configure optie --with-kerberos5), en wat blijkt dan werkt het wel!!

In het init script heb ik de binary van sshd naar /usr/local/sbin/sshd verwezen (zelf compiled versie)
En nu werkt de ticket delegatie ook op het moment dat ssh vanuit het script gestart word, ook xinetd werkt. Met dezelfde sshd_config...

Blij als ik ben dat dit werkt, vraag ik me af of we hieruit kunnen concluderen dat CentOS (gebruikte distro) sshd niet "kerberos vriendelijk" gecompiled heeft.

Tot zo ver bedankt voor de input!!


code:
1
2
3
4
debug2: we sent a gssapi-with-mic packet, wait for reply
debug1: Delegating credentials
debug1: Delegating credentials
debug1: Authentication succeeded (gssapi-with-mic).

[Voor 18% gewijzigd door Anoniem: 464235 op 26-06-2012 21:16]


34749

Hero Of Time schreef op dinsdag 26 juni 2012 @ 19:57:
WinBind ook geïnstalleerd en opgegeven in /etc/nsswitch.conf? Geef eens aan wat je allemaal hebt aangepast en toegepast voor je KRB login. Want het is niet 1 bestand, maar meerdere.
nsswitch heeft weinig te doen met een Kerberos setup. nsswitch gaat enkel over welke bronnen gebruikt moeten worden om UID's, GID's, hosts, etc. te converteren naar namen en omgekeerd. Kerberos is een authenticatie mechanisme en bied geen directory achtige diensten.
Blij als ik ben dat dit werkt, vraag ik me af of we hieruit kunnen concluderen dat CentOS (gebruikte distro) sshd niet "kerberos vriendelijk" gecompiled heeft.
Als ik kijk naar de spec file van OpenSSH in CentOS 6 (weet niet of je 6 gebruikt) dan lijkt er gewoon Kerberos support in te zitten:

# Do we want kerberos5 support (1=yes 0=no)
%define kerberos5 1

Daarnaast als er geen Kerberos support ingecompiled was had je nooit zover kunnen komen. Dan had het als root runnen van SSH niks uitgemaakt (dan zorgt niet opeens voor compile time Kerberos support). Het enige wat anders is is dat nu het configure script gerunned is op jouw systeem waardoor hij wellicht opeens zaken vind die hij voorheen niet kon vinden. Zelf SSH compilen op CentOS / RHEL zou ik niet adviseren. Dat betekend ook zelf updates rollen en in de gaten houden.

  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 04-06 22:27

Hero of Time

Moderator LNX

There is only one Legend

34749 schreef op dinsdag 26 juni 2012 @ 23:45:
[...]


nsswitch heeft weinig te doen met een Kerberos setup. nsswitch gaat enkel over welke bronnen gebruikt moeten worden om UID's, GID's, hosts, etc. te converteren naar namen en omgekeerd. Kerberos is een authenticatie mechanisme en bied geen directory achtige diensten.
Heb een paar weken geleden een van onze servers aan krb gehangen zodat er een veilige authenticatie met ons AD mogelijk is. Dus in zo'n geval voer ik wel wat directory achtige diensten uit.

Heb nog geen mogelijkheid gevonden om sftp met krb only te krijgen, zonder winbind voor AD. Maar goed, daar gaat het hier niet over.


Voor het zelf compilen vs repo versie met krb werken. Zou het kunnen dat je sshd nu alsnog als root uitvoert ipv een unprivileged user? Het zou moeten spawnen als unprivileged, weet je ook zeker dat dat lukt en niet als root blijft draaien? Want dan ben je niet veel verder.

Commandline FTW | Tweakt met mate


Anoniem: 464235

Topicstarter
Wat ik nog wel even had kunnen vermelden dat ik gebruik maak van centos 6 icm. Openssh 5.3
Bij het compileren heb ik gebruik gemaakt van openssh 6.xx. Daar werkte de delegatie wel.
Daarna heb ik versie 5.3 gecompileerd, waarbij het delegeren weer niet ging.
.
34749 schreef op dinsdag 26 juni 2012 @ 23:45:


Als ik kijk naar de spec file van OpenSSH in CentOS 6 (weet niet of je 6 gebruikt) dan lijkt er gewoon Kerberos support in te zitten:

# Do we want kerberos5 support (1=yes 0=no)
%define kerberos5 1

Daarnaast als er geen Kerberos support ingecompiled was had je nooit zover kunnen komen. Dan had het als root runnen van SSH niks uitgemaakt (dan zorgt niet opeens voor compile time Kerberos support). Het enige wat anders is is dat nu het configure script gerunned is op jouw systeem waardoor hij wellicht opeens zaken vind die hij voorheen niet kon vinden. Zelf SSH compilen op CentOS / RHEL zou ik niet adviseren. Dat betekend ook zelf updates rollen en in de gaten houden.
Hier heb je helemaal gelijk in, de kerberos support is eenvoudig weg aan of uit. Blijkbaar werkte het wel maar onder bepaalde condities niet...
Misschien dat het met de versies te maken heeft, met sshd 6 wilde het namelijk wel werken.

Een rpm installeren met sshd 6 is voor nu even geen opties aangezien deze afhankelijkheden heeft in nieuwere c libs dan centos op het moment bied.

Voor nu is de oplossing voor mij om sshd even buiten mijn standaard root in /usr/local te installeren in handmatig gecompileerde staat. Als sshd in versie 6 beland vanuit de Centos repos gaan we weer vanuit de repos werken. Het zijn geen productie servers dus het is voor nu geen ramp.
Hero Of Time schreef op woensdag 27 juni 2012 @ 00:03:
[...]
Voor het zelf compilen vs repo versie met krb werken. Zou het kunnen dat je sshd nu alsnog als root uitvoert ipv een unprivileged user? Het zou moeten spawnen als unprivileged, weet je ook zeker dat dat lukt en niet als root blijft draaien? Want dan ben je niet veel verder.
Het standaard sshd process voer ik inderdaad als root uit. Bij een clientconnectie word deze wel netjes gespawned onder de rechten van de betreffende gebruiker.

[Voor 84% gewijzigd door Anoniem: 464235 op 27-06-2012 22:27]


  • Big Mama
  • Registratie: Mei 2000
  • Laatst online: 07:11
Heb je "UsePAM yes" in /etc/ssh/sshd_config staan? Default is namelijk 'no'

Heb je de module pam_krb5.so in /etc/pam.d/password-auth-ac staan bij alle secties (auth/account/password/session)?

Klopt de /etc/krb5.conf?

Computers follow your orders, not your intentions.


Anoniem: 464235

Topicstarter
De UsePam optie staat nu inderdaad op yes
De pam_krb5.so lib staat onder auth / account / password / session in /etc/pam.d/password-auth-ac (ingesteld via authconfig-tui)

krb5.conf is naar mijn inziens correct:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[logging]
 default = FILE:/var/log/krb5libs.log
 kdc = FILE:/var/log/krb5kdc.log
 admin_server = FILE:/var/log/kadmind.log

[libdefaults]
 default_realm = LOOP0.COM
 dns_lookup_realm = true
 dns_lookup_kdc = true
 ticket_lifetime = 24h
 renew_lifetime = 7d
 forwardable = true

[realms]
 LOOP0.COM = {
  kdc = cerberus.loop0.com:88
  admin_server = cerberus.loop0.com:749
 }

[domain_realm]
 cerberus.loop0.com = LOOP0.COM
 .cerberus.loop0.com = LOOP0.COM


Ook sshd_config moet goed zijn zo:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
[root@cerberus ~]# cat /etc/ssh/sshd_config | grep -v ^\#

Protocol 2

SyslogFacility AUTHPRIV

PasswordAuthentication yes

ChallengeResponseAuthentication no

KerberosAuthentication yes
KerberosOrLocalPasswd yes

GSSAPIAuthentication yes
GSSAPICleanupCredentials yes

UsePAM yes

AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
AcceptEnv LC_IDENTIFICATION LC_ALL LANGUAGE
AcceptEnv XMODIFIERS

X11Forwarding yes
UseDNS no

Subsystem   sftp    /usr/libexec/openssh/sftp-server


Het werkt ook allemaal alleen met ssh 5.3 niet...

tot slot ssh_config:
code:
1
2
3
4
5
6
7
8
9
Host *
        GSSAPIAuthentication yes
        GSSAPIDelegateCredentials yes
    GSSAPIAuthentication yes
    ForwardX11Trusted yes
    SendEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES 
    SendEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT 
    SendEnv LC_IDENTIFICATION LC_ALL LANGUAGE
    SendEnv XMODIFIERS
Pagina: 1


Tweakers maakt gebruik van cookies

Tweakers plaatst functionele en analytische cookies voor het functioneren van de website en het verbeteren van de website-ervaring. Deze cookies zijn noodzakelijk. Om op Tweakers relevantere advertenties te tonen en om ingesloten content van derden te tonen (bijvoorbeeld video's), vragen we je toestemming. Via ingesloten content kunnen derde partijen diensten leveren en verbeteren, bezoekersstatistieken bijhouden, gepersonaliseerde content tonen, gerichte advertenties tonen en gebruikersprofielen opbouwen. Hiervoor worden apparaatgegevens, IP-adres, geolocatie en surfgedrag vastgelegd.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Toestemming beheren

Hieronder kun je per doeleinde of partij toestemming geven of intrekken. Meer informatie vind je in ons cookiebeleid.

Functioneel en analytisch

Deze cookies zijn noodzakelijk voor het functioneren van de website en het verbeteren van de website-ervaring. Klik op het informatie-icoon voor meer informatie. Meer details

janee

    Relevantere advertenties

    Dit beperkt het aantal keer dat dezelfde advertentie getoond wordt (frequency capping) en maakt het mogelijk om binnen Tweakers contextuele advertenties te tonen op basis van pagina's die je hebt bezocht. Meer details

    Tweakers genereert een willekeurige unieke code als identifier. Deze data wordt niet gedeeld met adverteerders of andere derde partijen en je kunt niet buiten Tweakers gevolgd worden. Indien je bent ingelogd, wordt deze identifier gekoppeld aan je account. Indien je niet bent ingelogd, wordt deze identifier gekoppeld aan je sessie die maximaal 4 maanden actief blijft. Je kunt deze toestemming te allen tijde intrekken.

    Ingesloten content van derden

    Deze cookies kunnen door derde partijen geplaatst worden via ingesloten content. Klik op het informatie-icoon voor meer informatie over de verwerkingsdoeleinden. Meer details

    janee