Sdílet prostřednictvím


Sledujte proces ověřování sítě k Databázovému Stroji

Tento článek představuje několik příkladů trasování sítě, které zachycuje různé sekvence handshake a ověřování během procesu vytváření připojení TCP (Transmission Control Protocol) mezi klientskou aplikací a databázovým strojem SQL Serveru (server).

Informace o ukončování připojení naleznete v tématu Sledování uzavírání síťového připojení v databázovém stroji.

Typy ověřování

K databázovému stroji se můžete připojit pomocí ověřování windows (pomocí protokolu Kerberos nebo ověřování NTLM) nebo ověřování SQL.

Tento článek popisuje také připojení MARS (Multiple Active Result Sets). MARS je funkce SQL Serveru představená v systému SQL Server 2005 (9.x), která umožňuje spouštění více příkazů na připojení, aniž by bylo nutné před spuštěním druhého příkazu vyčistit výsledky z prvního příkazu. MARS se dosahuje prostřednictvím multiplexování relací (SMUX).

Tento proces popisuje normální proces přihlášení pomocí ověřování SQL, který ukazuje jednotlivé kroky konverzace mezi klientem a serverem prostřednictvím podrobné analýzy trasování sítě. Příklad trasování sítě popisuje následující kroky:

  1. Třífázové navázání spojení TCP
  2. Navázání spojení s ovladačem
  3. Navázání spojení SSL/TLS
  4. Výměna přihlašovacích paketů
  5. Potvrzení přihlášení
  6. Spuštění příkazu a přečtení odpovědi
  7. Čtyřkrokové ukončení handshake TCP

Příklad trasování sítě

Této výměně je přidělena 1 sekunda bez ohledu na nastavení Login Timeout v rámci připojovacího řetězce.

  • IP adresa klienta je 10.10.10.10
  • IP adresa serveru je 10.10.10.120

Krok 1. Tříúrovňové navázání spojení TCP

Všechny konverzace TCP začínají paketem SYN (sada příznakůS) odesílaným z klienta na server. V frame 6127používá klient dočasný port (dynamicky přiřazený operačním systémem) a připojuje se k portu serveru, v tomto případě port 1433. Server odpoví vlastním paketem SYN s nastaveným příznakem ACK. Klient nakonec odpoví paketem ACK, aby server věděl, že obdržel svůj paket SYN.

Tento krok vytvoří základní připojení TCP stejným způsobem jako příkaz telnet. Operační systém zprostředkuje tuto část konverzace. V tuto chvíli klient a server o sobě nic neví.

diagram třícestného navázání spojení.

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=

V tomto kroku jsou upozornění [Bad CheckSum] neškodná a jsou indikátorem, že kontrolní součet je povolený. To znamená, že jsou přidávány na nižší úroveň v zásobníku sítě, než kde se provádí trasování. V případě absence dalších informací toto upozornění značí, jestli bylo trasování sítě pořízeno na klientovi nebo serveru. V tomto případě se zobrazí na počátečním paketu SYN, takže trasování bylo pořízeno na straně klienta.

Krok 2. Navázání spojení ovladače

Klientský ovladač i SQL Server musí o sobě něco vědět. V tomto procesu handshake ovladač odešle na server určité informace a požadavky. Tyto informace zahrnují, jestli se mají šifrovat datové pakety, jestli se má použít více aktivních sad výsledků (MARS), číslo verze, jestli se má použít federované ověřování, identifikátor GUID připojení atd.

Server odpoví svými informacemi, například jestli vyžaduje ověření. K této sekvenci dochází před provedením jakéhokoli druhu jednání o bezpečnosti.

diagram handshake ovladače.

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

Krok 3. Protokol SSL/TLS - navázání spojení

Metoda handshake protokolu SSL/TLS začíná paketem Hello klienta a potom paketem Hello serveru a některými dalšími pakety souvisejícími se zabezpečeným kanálem. V tomto kroku je klíč zabezpečení vyjednáván pro šifrování paketů. Za normálních okolností je zašifrovaný jenom přihlašovací paket, ale klient nebo server můžou vyžadovat šifrování datových paketů. Volba verze protokolu TLS probíhá v této fázi přihlášení. Klient nebo server může připojení v této fázi zavřít, pokud se verze TLS nerovnají nebo nemají společné žádné šifrovací sady.

Diagram protokolu SSL/TLS handshake

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

Krok 4. Přihlašovací paket

Tento paket je zašifrovaný a může se zobrazovat jako SSL Application Data nebo TDS:Datav závislosti na analyzátoru sítě. Pokud se všechny pakety po tomto kroku zobrazí také jako SSL Application Data, připojení se zašifruje.

diagram přihlášení do SQL

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

Krok 5. Potvrzení přihlášení

Jinak se zobrazí paket odpovědi, který buď potvrdí přihlášení (má přihlašovací ACK token), nebo klientovi vrátí chybovou zprávu Login Failed.

Tady je příklad, co se může zobrazit v datech paketů v šestnáctkové soustavě pro úspěšné přihlášení:

.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'

diagram potvrzení přihlášení SQL

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

Krok 6. Spuštění příkazu a přečtení odpovědi

Příkazy se posílají jako TDS:SQLBatch nebo jako paket TDS:RPCRequest. První spustí prosté Transact-SQL příkazy a druhý spustí uložené procedury. Pakety pokračování protokolu TCP se můžou zobrazit, pokud je příkaz dlouhý, nebo v paketu Odpovědi, pokud se vrátí více než několik řádků.

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=

Krok 7. Uzavírací handshake TCP se čtyřmi kroky

Ovladače Microsoft používají k zavření připojení čtyřnásobný handshake. Mnoho ovladačů třetích stran resetuje připojení, aby je uzavřelo, což ztěžuje rozlišení mezi normálním a neobvyklým uzavřením.

Čtyřcestný handshake se skládá z toho, že klient odesílá paket FIN serveru, na který server reaguje paketem ACK. Server pak odešle vlastní FIN paket, který klient potvrdí (ACK).

Pokud server nejprve odešle paket FIN, jedná se o neobvyklý závěr, který se nejčastěji vyskytuje v metodě handshake protokolu SSL/TLS, pokud klient a server nemohou vyjednat zabezpečený kanál.

diagram čtyřcestného zavírání rukou

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=