Bagikan melalui


Melacak proses autentikasi jaringan ke Mesin Database

Artikel ini menyajikan beberapa contoh jejak jaringan yang menangkap berbagai jabat tangan dan urutan autentikasi selama proses pembentukan koneksi Protokol Kontrol Transmisi (TCP) antara aplikasi klien dan Mesin Database SQL Server (server).

Untuk informasi tentang menutup koneksi, lihat Melacak urutan penutupan koneksi jaringan pada Mesin Database.

Jenis autentikasi

Anda dapat menyambungkan ke Mesin Database dengan autentikasi Windows (menggunakan autentikasi Kerberos atau NTLM ), atau autentikasi SQL .

Artikel ini juga menjelaskan beberapa koneksi Active Result Sets (MARS). MARS adalah fitur SQL Server, diperkenalkan dengan SQL Server 2005 (9.x), yang memungkinkan beberapa perintah dijalankan pada koneksi tanpa harus membersihkan hasil dari perintah pertama, sebelum menjalankan perintah kedua. MARS dicapai melalui multipleks sesi (SMUX).

Proses ini menjelaskan proses masuk normal menggunakan autentikasi SQL, memperlihatkan setiap langkah percakapan antara klien dan server melalui analisis pelacakan jaringan terperinci. Contoh jejak jaringan menguraikan langkah-langkah berikut:

  1. Jabat tangan tiga arah TCP
  2. Jabat tangan pengemudi
  3. Jabat tangan SSL/TLS
  4. Pertukaran paket log masuk
  5. Konfirmasi masuk
  6. Menjalankan perintah dan membaca respons
  7. Jabat tangan penutup empat arah TCP

Contoh jejak jaringan

Pertukaran ini dialokasikan 1 detik, terlepas dari pengaturan Login Timeout dalam connection string.

  • Alamat IP klien adalah 10.10.10.10
  • Alamat IP server adalah 10.10.10.120

Langkah 1. Jabat tangan tiga arah TCP

Semua percakapan TCP dimulai dengan SYN paket (bendera S diatur) yang dikirim dari klien ke server. Dalam Bingkai 6127, klien menggunakan port ephemeral (ditetapkan secara dinamis oleh sistem operasi) dan terhubung ke port server, dalam hal ini port 1433. Server membalas dengan paketnya sendiri SYN dengan flag ACK yang juga diaktifkan. Akhirnya, klien merespons dengan ACK paket untuk memberi tahu server bahwa ia menerima paketnya SYN .

Langkah ini menetapkan koneksi TCP dasar, dengan cara yang sama seperti telnet perintah. Sistem operasi menengahi bagian percakapan ini. Pada titik ini, klien dan server tidak tahu apa-apa tentang satu sama lain.

Diagram jabat tangan tiga arah.

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=

Dalam langkah ini, [Bad CheckSum] peringatan ini tidak membahayakan dan merupakan indikator bahwa pengalihmuatan checksum diaktifkan. Artinya, mereka ditambahkan pada lapisan yang lebih rendah di tumpukan jaringan dibandingkan tempat pelacakan diambil. Dengan tidak adanya informasi lain, peringatan ini menunjukkan apakah jejak jaringan diambil pada klien atau server. Dalam hal ini, muncul pada paket awal SYN, karena itu perekaman jejak dilakukan pada klien.

Langkah 2. Jabat tangan pengemudi

Baik driver klien maupun SQL Server perlu mengetahui sedikit tentang satu sama lain. Dalam jabat tangan ini, driver mengirimkan beberapa informasi dan persyaratan ke server. Informasi ini mencakup apakah akan mengenkripsi paket data, apakah akan menggunakan Beberapa Set Hasil Aktif (MARS), nomor versinya, apakah akan menggunakan autentikasi gabungan, GUID koneksi, dan sebagainya.

Server merespons dengan informasinya, seperti apakah memerlukan autentikasi. Urutan ini terjadi sebelum negosiasi keamanan dilakukan.

Diagram jabat tangan pengemudi.

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

Langkah 3. Jabat tangan SSL/TLS

Jabat tangan SSL/TLS dimulai dengan paket Hello Klien dan kemudian paket Hello Server, ditambah beberapa paket tambahan yang terkait dengan Saluran Aman. Langkah ini adalah tempat kunci keamanan dinegosiasikan untuk mengenkripsi paket. Biasanya, hanya paket masuk yang dienkripsi, tetapi klien atau server juga dapat memerlukan paket data untuk dienkripsi. Memilih versi TLS terjadi pada tahap login ini. Klien atau server dapat menutup koneksi pada tahap ini jika versi TLS tidak berbaris, atau mereka tidak memiliki cipher suite yang sama.

Diagram jabat tangan SSL/TLS.

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

Langkah 4. Paket masuk

Paket ini dienkripsi dan mungkin ditampilkan sebagai SSL Application Data atau TDS:Data, tergantung pada pengurai jaringan Anda. Jika semua paket setelah langkah ini juga ditampilkan sebagai SSL Application Data, koneksi dienkripsi.

Diagram SQL login.

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

Langkah 5. Konfirmasi masuk

Jika tidak, Anda akan melihat paket respons, yang mengonfirmasi login (memiliki token masuk ACK ), atau mengembalikan Login Failed pesan kesalahan kepada klien.

Berikut adalah contoh yang mungkin Anda lihat dalam data heksadesimal paket untuk login yang berhasil:

.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 konfirmasi masuk 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

Langkah 6. Menjalankan perintah dan membaca respons

Perintah dikirim sebagai TDS:SQLBatch paket atau TDS:RPCRequest . Yang pertama menjalankan pernyataan Transact-SQL biasa, dan yang terakhir menjalankan prosedur tersimpan. Anda mungkin melihat paket kelanjutan TCP jika perintahnya panjang, atau dalam paket Respons jika lebih dari beberapa baris dikembalikan.

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=

Langkah 7. Jabat tangan penutup empat arah TCP

Driver Microsoft menggunakan jabat tangan empat arah untuk menutup koneksi. Banyak driver pihak ketiga hanya mengatur ulang koneksi untuk menutupnya, sehingga lebih sulit untuk membedakan antara penutupan normal dan abnormal.

Jabat tangan empat arah terdiri dari FIN klien yang mengirim paket ke server, yang kemudian ditanggapi oleh server dengan ACK. Server kemudian mengirim paketnya sendiri FIN , yang diakui klien (ACK).

Jika server mengirim FIN paket terlebih dahulu, itu adalah penutupan abnormal, paling sering terlihat di jabat tangan SSL/TLS jika klien dan server tidak dapat menegosiasikan saluran aman.

Diagram jabat tangan penutup empat arah.

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=