none
Kerberos badoption Fehler bei double hop RRS feed

  • Frage

  • Hallo zusammen,

    wir haben ein Problem bei der Client-Authentifizierung mit Kerberos in einer 3-Tier Umgebung gegen einen MS-SQL-Cluster über einen WebService-Server (kein IIS oder PHP).

    Ich habe mir das Verhalten mit netmon und fiddler angeschaut. Bei Aufruf der Webanwendung vom Webservice-Server gelingt das Aushandeln mittels Kerberos. Versuche ich selbiges von einem Client, sehe ich ein gültiges Ticket, welches vom KDC1 (Domain Controller 1) an den Client ausgegeben wird. Gleichzeitig bekommt der WebService-Server vom KDC2 (Domain Controller 2) im response ein fehlerhaftes Ticket mit badoption 0xc.

    Grundsätzlich sieht es nach einem fehlenden SPN aus. Allerdings habe ich diese mit dem SQL Configuration Manager von Microsoft bereits geprüft - keine Fehler.

    Hat jemand eine Idee?

    Donnerstag, 31. Dezember 2020 10:40

Alle Antworten

  • Moin,

    wenn Single Hop klappt und Double Hop nicht, könnte man sich auch die Delegation anschauen.


    Evgenij Smirnov

    http://evgenij.smirnov.de

    Donnerstag, 31. Dezember 2020 10:48
  • Servus.

    Das hatte ich mir auch gedacht und für den AD-Service-User der Applikation eine Delegierung für den AD-Service-User des SQL-Clusters eingerichtet.

    Der Webservice funktioniert dann zwar sofort, aber ich erreich dann keine Netzwerkressourcen mehr. So bekomme ich dann bspw. bei einem Zugriffsversuch auf ein Netshare ein Kerberos badoption cifs.


    • Bearbeitet rajuhn Freitag, 1. Januar 2021 15:28 verschrieben
    Freitag, 1. Januar 2021 15:28
  • Moin,

    ich fürchte, Du wirst beschreiben müssen, was Du genau wo aktiviert hast. Das ist mir jetzt zu vage.


    Evgenij Smirnov

    http://evgenij.smirnov.de

    Freitag, 1. Januar 2021 16:45
  • Servus Evgenij,

    das wird sehr umfangreich und ich denke auch, dass wir einiges an weiterer Interaktion benötigen. Ich melde mich mal per PM bei dir. 


     
    Sonntag, 3. Januar 2021 09:01
  • Für das Forum möchte ich die Problemstellung etwas ausführlicher darstellen. Vielleicht ergibt sich eine Konvergenz.

    Wir haben eine 3-Tier-Umgebung mit Client, MS-SQL AlwayOn Cluster und einem Applikationsserver für das ERP MS Dynamics 2009 SP1, welcher gleichzeitig auch den Webservice für Dynamics NAV stellt. Der Webservice selbst ist rudimentär - kein IIS oder PHP - und wird via Dynamics NAV konfiguriert.

    Bei einem Zugriff auf die Webapplikation, sehe ich mit netmon auf Clientseite das Aushandeln des Tickets mit dem KDC1 (Domaincontroller 1), der dem Client ein valides Ticket ausstellt, mit dem er den Applikationsserver anfragt (Hop 1): Authorization: Negotiate YII.....Der Applikationsserver bzw. Webservice handelt nach dem HTTP GET über den KDC2 (Domaincontroller 2) anschließend mit dem SQL-Server eine Autorisierung aus (Hop 2): Kerberos: TGS Request Realm: MYDOMAIN.LOCAL Sname: MSSQLSvc/SQLCLUSTER.mydomain.local:1433 

    Als Antwort bekomme ich das folgende Kerberos Paket mit badoption. Die Autorisierung geht dann mit NTLM weiter, welche richtigerweise am SQL als anonymer Loginversuch fehl schlägt.

    192.168.235.26 = KDC2 / 192.168.235.32 = Applikations- bzw. Webservice

      Frame: Number = 879, Captured Frame Length = 202, MediaType = ETHERNET
    + Ethernet: Etype = Internet IP (IPv4),DestinationAddress:[00-50-56-B2-AF-80],SourceAddress:[00-50-56-B2-7B-8B]
    + Ipv4: Src = 192.168.235.26, Dest = 192.168.235.32, Next Protocol = TCP, Packet ID = 27091, Total IP Length = 188
    + Tcp: Flags=...AP..., SrcPort=Kerberos(88), DstPort=61716, PayloadLen=148, Seq=1333524216 - 1333524364, Ack=547410901, Win=8212 (scale factor 0x8) = 2102272
    - Kerberos: KRB_ERROR  - KDC_ERR_BADOPTION (13)
      - Length: Length = 144
         Reserved: (0...............................) Must be Zero (Incorrect formatter specifier for type: %d)
         Length:  (.0000000000000000000000010010000) (144)
      - KrbError: KRB_ERROR (30)
       + ApplicationTag: 
       + SequenceHeader: 
       + Tag0: 
       + PvNo: 5
       + Tag1: 
       + MsgType: KRB_ERROR (30)
       + Tag4: 
       + Stime: 12/29/2020 18:42:23 UTC
       + Tag5: 
       + SuSec: 403837
       + Tag6: 
       - ErrorCode: KDC_ERR_BADOPTION (13)
        - Value: 13
         - AsnIntegerHeader: 
          - AsnId: Integer type (Universal 2)
           + LowTag: 
          - AsnLen: Length = 1, LengthOfLength = 0
             Length: 1 bytes, LengthOfLength = 0
           AsnInt: 13 (0xD)
       + Tag9: 
       + Realm: MYDOMAIN.LOCAL
       + TagA: 
       - Sname: MSSQLSvc/SQLCLUSTER.mydomain.local:1433
        - SequenceHeader: 
         + AsnId: Sequence and SequenceOf types (Universal 16)
         + AsnLen: Length = 49, LengthOfLength = 0
        - Tag0: 
         + AsnId: Context Specific Constructed Tag (0)
         + AsnLen: Length = 3, LengthOfLength = 0
        - NameType: NT-SRV-INST (2)
         - AsnIntegerHeader: 
          + AsnId: Integer type (Universal 2)
          + AsnLen: Length = 1, LengthOfLength = 0
           AsnInt: 2 (0x2)
        + Tag1: 
        + SequenceOfHeader: 
        + NameString: MSSQLSvc
        + NameString: SQLCLUSTER.mydomain.local:1433
       + TagC: 
       + EData: 

    Eingestellt ist für den Applikationsserver Trust this computer to any services (Kerberos only). 

    Stelle ich dann um auf constrained delgation - Trust this computer for delegation to specified services only | Use any authentication protocol und trage auf dem Applikationsserver über den AD-Serviceuser des SQL-Clusters alle MSSQLSvc-Ressourcen ein, klappt es zwar sofort mit der Webservicedelegierung, dagegen verliere ich dann aber alle übrigen Netzressourcen. Nach dem Eintrag ist bspw. kein Zugriff auf jeglichen Netshare mehr möglich. Ab dann bekomme ich hierfür ein Kerberos badoption z.B. für cifs

    Sonntag, 3. Januar 2021 10:17
  • "Stelle ich dann um auf constrained delgation - Trust this computer for delegation to specified services only | Use any authentication protocol"

    -> "Use Any Protocol" heisst dann aber auch vermutlich das das User's Kerberos ticket nicht verwendet wird sondern der Web-Service dieses erneut selbst anfordert (Stichwort: "S4U2self" versus "S4U2proxy" - s.a. unten "Background") - sind Frontend und Backend in der selben Domäne (s.a. https://docs.microsoft.com/en-us/windows-server/security/kerberos/kerberos-constrained-delegation-overview)? Ist der User ggf. restricted, sprich: "Account is sensitive and cannot be delegated"?

    Wurde die Konfiguration exakt nach folgendem Artikel aufgebaut:

    Walkthrough: Installing the Three Tiers on Three Computers | Microsoft Docs

    Background:

    https://blog.netspi.com/cve-2020-17049-kerberos-bronze-bit-theory/

    -> Constrained Delegation with Protocol Transition

    Mittwoch, 6. Januar 2021 09:45
  • Frontend und Backend in der selben Domäne? Ist der User ggf. restricted, sprich: "Account is sensitive and cannot be delegated"?

    Danke für diese hilfreiche Antwort. Ja, alles ist in derselben Domäne. Auf dem User gibt es keine Einschränkungen auch GPOs, die Kerberos einschränken würden, gibt es nicht.  KB Walktrough bin ich gestern komplett durchgegangen. Wir hatten alles genauso, bis auf die Empfehlung, denselben AD-User für Middle-Tier und SQL zu verwenden. Das habe ich geändert, leider ohne Erfolg.

    Ich würde die Option Use any authentication protocol als workaround durchaus nutzen, aber die Delegierungen funktionieren scheinbar nur für den Webservice. Auch wenn in der Delegation sämtliche cifs (zzgl. host und weitere) als Service aufgenommen sind, lehnt das Ziel den smb Zugriff mit Kerberos badoption ab.

    Donnerstag, 7. Januar 2021 09:04
  • Wenn Bedarf kann ich mal Remote mit drauf schauen und ggf. über Network Tracing (s.a. https://techcommunity.microsoft.com/t5/ask-the-directory-services-team/kerberos-errors-in-network-captures/ba-p/400066) herausfinden, was da genau hakt  bzw. überhaupt von der "alten" Version supported wird.

    P.S: "Use any authentication protocol" ist sicherheitstechnisch fast so übel wie "Delegation to any service" - s.u.a. z.B. auch: https://improsec.com/tech-blog/the-mind-blowing-kerberos-use-any-authentication-protocol-delegation

    --

    Tobias Redelberger

    D-10365 Berlin
    Germany

    Mobil:    +49 (163) 84 74 421
    Email:    T.Redelberger@starnet-services.net



    Freitag, 8. Januar 2021 11:13
  • P.S.S.: Ich hab mir die obige Doku von Microsoft Dynamics NAV 2009 noch mal genauer angesehen - wurde wirklich auch folgendes im "RoleTailored client configuration file" angepasst:

    [..]

    On the Delegation tab, click Trust this user for delegation to specified services only, and then click Use Kerberos only.

    There is also the option to not restrict authorization to Kerberos, although the environment is not as secure when you are less restrictive. Your decision must be reflected in the value that you assign to the AllowNtlm setting in the RoleTailored client configuration file (ClientUserSettings.config). For details, see Configuring the RoleTailored Client.

    [..]
    Source:
    https://docs.microsoft.com/en-us/previous-versions/dynamicsnav-2009/dd301254(v=nav.60)#to-delegate-access-to-the-sql-server-Service

    Freitag, 8. Januar 2021 11:23