Megosztás:


A hálózati hitelesítési folyamat nyomon követése az adatbázismotorra

Ez a cikk több példát mutat be egy hálózati nyomkövetésre, amely különböző kézfogásokat és hitelesítési sorozatokat rögzít az ügyfélalkalmazás és az SQL Server-adatbázismotor (a kiszolgáló) közötti Átviteli vezérlési protokoll (TCP) kapcsolatlétrehozási folyamata során.

A kapcsolatok bezárásáról szóló további információért lásd: A hálózati kapcsolat bezárási folyamatának nyomon követése az Adatbázismotoron.

Hitelesítési típusok

Csatlakozhat az adatbázismotorhoz Windows-hitelesítéssel (Kerberos vagy NTLM hitelesítéssel), vagy SQL-hitelesítéssel.

Ez a cikk a több aktív eredményhalmaz (MARS) kapcsolatát is ismerteti. A MARS az SQL Server egyik funkciója, amelyet az SQL Server 2005 -ben (9.x) vezetnek be, amely lehetővé teszi, hogy több parancsot is végrehajtson egy kapcsolaton anélkül, hogy törölnie kellene az eredményeket az első parancsból a második parancs futtatása előtt. A MARS munkamenet-multiplexálással (SMUX) érhető el.

Ez a folyamat egy SQL-hitelesítést használó normál bejelentkezési folyamatot ír le, amely részletes hálózati nyomkövetési elemzésen keresztül mutatja be az ügyfél és a kiszolgáló közötti beszélgetés minden lépését. A példa hálózati nyomkövetés a következő lépéseket ismerteti:

  1. TCP háromirányú kézfogás
  2. Vezető kézfogása
  3. SSL/TLS kézfogás
  4. Bejelentkezési csomagcsere
  5. Bejelentkezés megerősítése
  6. Parancs végrehajtása és a válasz elolvasása
  7. TCP négyirányú záró kézfogás

Példa hálózati nyomkövetésre

A rendszer a kapcsolati sztring Login Timeout beállításától függetlenül 1 másodpercet foglal le.

  • Az ügyfél IP-címe 10.10.10.10
  • A kiszolgáló IP-címe 10.10.10.120

1. lépés. TCP háromirányú kézfogás

Minden TCP-beszélgetés egy SYN csomaggal (S jelzőkészlettel) kezdődik, amelyet az ügyfél küld a kiszolgálónak. A Keret 6127az ügyfél egy rövid élettartamú portot használ (amelyet az operációs rendszer dinamikusan hozzárendel), és csatlakozik a kiszolgálóporthoz, ebben az esetben a port 1433. A kiszolgáló saját SYN csomaggal válaszol, és a ACK jelző is be van állítva. Végül az ügyfél egy ACK csomaggal válaszol, amely tudatja a kiszolgálóval, hogy megkapta a SYN csomagot.

Ez a lépés egy alapszintű TCP-kapcsolatot hoz létre, ugyanúgy, ahogyan egy telnet parancs tenné. Az operációs rendszer közvetíti a beszélgetés ezen részét. Ezen a ponton az ügyfél és a kiszolgáló semmit sem tud egymásról.

háromutas kézfogás diagramja.

Frame Time Offset Source IP    Dest IP      Description
----- ----------- ------------ ------------ ---------------------------------------------------------------------------------------------------
6127  116.5776698 10.10.10.10  10.10.10.120 TCP:Flags=......S., SrcPort=60123, DstPort=1433, PayloadLen=0, Seq=4050702293, Ack=0, Win=8192 ( Ne
6128  116.5776698 10.10.10.120 10.10.10.10  TCP:Flags=...A..S., SrcPort=1433, DstPort=60123, PayloadLen=0, Seq=4095166896, Ack=4050702294, Win=
6129  116.5786458 10.10.10.10  10.10.10.120 TCP:Flags=...A...., SrcPort=60123, DstPort=1433, PayloadLen=0, Seq=4050702294, Ack=4095166897, Win=

Ebben a lépésben a [Bad CheckSum] figyelmeztetések ártalmatlanok, és azt jelzik, hogy engedélyezve van a ellenőrzőösszeg-kiszervezés. Vagyis a hálózati verem alacsonyabb szintjén vannak hozzáadva, mint a nyomkövetés. Más információ hiányában ez a figyelmeztetés azt jelzi, hogy a hálózati nyomkövetés az ügyfélen vagy a kiszolgálón történt-e. Ebben az esetben a kezdeti SYN csomagon jelenik meg, így az ügyfélen történt az adatgyűjtés.

2. lépés. Vezető kézfogása

Az ügyfélillesztőnek és az SQL Servernek is tudnia kell egy kicsit egymásról. Ebben a kézfogásban az illesztőprogram információkat és követelményeket küld a kiszolgálónak. Ez az információ magában foglalja az adatcsomagok titkosítását, a több aktív eredményhalmaz (MARS) használatát, a verziószámát, az összevont hitelesítés használatát, a kapcsolat GUID azonosítóját stb.

A kiszolgáló az információival válaszol, például azt, hogy hitelesítést igényel-e. Ez a sorozat a biztonsági egyeztetés végrehajtása előtt következik be.

vezető kézfogásának ábrája.

Frame Time Offset Source IP    Dest IP      Description
----- ----------- ------------ ------------ ---------------------------------------------------------------------------------------------------
6130  116.5786458 10.10.10.10  10.10.10.120 TDS:Prelogin, Version = 7.1 (0x71000001), SPID = 0, PacketID = 0, Flags=...AP..., SrcPort=60123, Ds
6131  116.5805998 10.10.10.120 10.10.10.10  TDS:Response, Version = 7.1 (0x71000001), SPID = 0, PacketID = 1, Flags=...AP..., SrcPort=1433, Dst

3. lépés. SSL/TLS kézfogás

Az SSL/TLS kézfogás a Client Hello csomaggal, majd a Server Hello csomaggal kezdődik, valamint néhány további, a Biztonságos csatornához kapcsolódó csomaggal. Ebben a lépésben egyeztetik a biztonsági kulcsot a csomagok titkosításához. Általában csak a bejelentkezési csomag van titkosítva, de az ügyfél vagy a kiszolgáló is megkövetelheti az adatcsomagok titkosítását. A TLS verziójának kiválasztása a bejelentkezés ezen szakaszában történik. Az ügyfél vagy a kiszolgáló ebben a szakaszban bezárhatja a kapcsolatot, ha a TLS-verziók nem sorakoznak fel, vagy nincsenek közös rejtjelcsomagok.

SSL/TLS kézfogás diagramja.

Frame Time Offset Source IP    Dest IP      Description
----- ----------- ------------ ------------ ---------------------------------------------------------------------------------------------------
6132  116.5835288 10.10.10.10  10.10.10.120 TLS:TLS Rec Layer-1 HandShake: Client Hello. {TLS:328, SSLVersionSelector:327, TDS:326, TCP:325, IP
6133  116.5845058 10.10.10.120 10.10.10.10  TLS:TLS Rec Layer-1 HandShake: Server Hello. Certificate. Server Hello Done. {TLS:328, SSLVersionSe
6134  116.5864588 10.10.10.10  10.10.10.120 TLS:TLS Rec Layer-1 HandShake: Client Key Exchange.; TLS Rec Layer-2 Cipher Change Spec; TLS Rec La
6135  116.5923178 10.10.10.120 10.10.10.10  TLS:TLS Rec Layer-1 Cipher Change Spec; TLS Rec Layer-2 HandShake: Encrypted Handshake Message. {TL

4. lépés. Bejelentkezési csomag

Ez a csomag titkosítva van, és a hálózati elemzőtől függően SSL Application Data vagy TDS:Datajelenhet meg. Ha a lépés után az összes csomag SSL Application Datais megjelenik, a kapcsolat titkosítva lesz.

SQL-bejelentkezés diagramja.

Frame Time Offset Source IP    Dest IP      Description
----- ----------- ------------ ------------ ---------------------------------------------------------------------------------------------------
6136  116.5932948 10.10.10.10  10.10.10.120 TLS:TLS Rec Layer-1 SSL Application Data {TLS:328, SSLVersionSelector:327, TDS:326, TCP:325, IPv4:3

5. lépés. Bejelentkezés megerősítése

Ellenkező esetben megjelenik egy válaszcsomag, amely megerősíti a bejelentkezést (rendelkezik a bejelentkezési ACK jogkivonattal), vagy egy Login Failed hibaüzenetet ad vissza az ügyfélnek.

Íme egy példa arra, hogy mit láthat a csomag hexadecimális adataiban a sikeres bejelentkezéshez:

.C.h.a.n.g.e.d. .d.a.t.a.b.a.s.e. .c.o.n.t.e.x.t. .t.o. .'.A.d.v.e.n.t.u.r.e.W.o.r.ks'

SQL-bejelentkezés megerősítésének diagramja.

Frame Time Offset Source IP    Dest IP      Description
----- ----------- ------------ ------------ ---------------------------------------------------------------------------------------------------
6137  116.5962248 10.10.10.120 10.10.10.10  TDS:Response, Version = 7.1 (0x71000001), SPID = 96, PacketID = 1, Flags=...AP..., SrcPort=1433, Ds

6. lépés. Parancs végrehajtása és a válasz elolvasása

A parancsok TDS:SQLBatch vagy TDS:RPCRequest csomagként lesznek elküldve. Az előbbi egyszerű Transact-SQL utasításokat hajt végre, az utóbbi pedig tárolt eljárásokat hajt végre. Előfordulhat, hogy TCP-folytatási csomagok jelennek meg, ha a parancs hosszadalmas, vagy a válaszcsomagban, ha több mint néhány sort ad vissza.

Frame Time Offset Source IP    Dest IP      Description
----- ----------- ------------ ------------ ---------------------------------------------------------------------------------------------------
6138  116.5991538 10.10.10.10  10.10.10.120 TDS:SQLBatch, Version = 7.1 (0x71000001), SPID = 0, PacketID = 1, Flags=...AP..., SrcPort=60123, Ds
6139  116.5991538 10.10.10.120 10.10.10.10  TDS:Response, Version = 7.1 (0x71000001), SPID = 96, PacketID = 1, Flags=...AP..., SrcPort=1433, Ds
6266  116.8032558 10.10.10.10  10.10.10.120 TCP:Flags=...A...., SrcPort=60123, DstPort=1433, PayloadLen=0, Seq=4050702956, Ack=4095168204, Win=

7. lépés. TCP négyirányú záró kézfogás

A Microsoft illesztőprogramjai a négyirányú kézfogással zárják be a kapcsolatokat. Számos külső meghajtóprogram egyszerűen visszaállítja a kapcsolatot annak lezárása érdekében, megnehezítve ezzel a normál és rendellenes lezárás megkülönböztetését.

A négyirányú kézfogás abból áll, hogy az ügyfél egy FIN csomagot küld a kiszolgálónak, amelyre a kiszolgáló egy ACKválaszol. A kiszolgáló ezután elküldi a saját FIN csomagját, amelyet az ügyfél elismer (ACK).

Amennyiben a kiszolgáló először küld egy FIN csomagot, az szokásostól eltérő lezárás, ami leggyakrabban az SSL/TLS kézfogás során tapasztalható, ha az ügyfél és a kiszolgáló nem tudják kialakítani a biztonságos csatornát.

Négyirányú záró kézfogás diagramja.

Frame Time Offset Source IP    Dest IP      Description
----- ----------- ------------ ------------ ---------------------------------------------------------------------------------------------------
6362  116.9097008 10.10.10.10  10.10.10.120 TCP:Flags=...A...F, SrcPort=60123, DstPort=1433, PayloadLen=0, Seq=4050702956, Ack=4095168204, Win=
6363  116.9097008 10.10.10.120 10.10.10.10  TCP:Flags=...A...., SrcPort=1433, DstPort=60123, PayloadLen=0, Seq=4095168204, Ack=4050702957, Win=
6364  116.9097008 10.10.10.120 10.10.10.10  TCP:Flags=...A...F, SrcPort=1433, DstPort=60123, PayloadLen=0, Seq=4095168204, Ack=4050702957, Win=
6366  116.9106778 10.10.10.10  10.10.10.120 TCP:Flags=...A...., SrcPort=60123, DstPort=1433, PayloadLen=0, Seq=4050702957, Ack=4095168205, Win=