Aracılığıyla paylaş


Ağ kimlik doğrulama işlemini Veritabanı Altyapısı'na izleme

Bu makalede, bir istemci uygulaması ile SQL Server Veritabanı Altyapısı (sunucu) arasında İletim Denetimi Protokolü (TCP) bağlantısı kurma işlemi sırasında çeşitli el sıkışmalarını ve kimlik doğrulama dizilerini yakalayan bir ağ izlemesinin çeşitli örnekleri verilmiştir.

Bağlantıları kapatma hakkında bilgi için, Veritabanı Altyapısında ağ bağlantısı kapatma sırasını takip etme konusuna bakın .

Kimlik doğrulama türleri

Veritabanı Altyapısı'na Windows kimlik doğrulamasıyla (Kerberos veya NTLM kimlik doğrulaması kullanarak) veya SQL kimlik doğrulaması bağlanabilirsiniz.

Bu makalede, Birden Çok Etkin Sonuç Kümesi (MARS) bağlantısı da açıklanmaktadır. MARS, SQL Server 2005 (9.x) ile sunulan ve ikinci komutu çalıştırmadan önce ilk komuttan sonuçları temizlemek zorunda kalmadan bir bağlantıda birden çok komutun yürütülmesine olanak tanıyan bir SQL Server özelliğidir. MARS, oturum çoğullama (SMUX: Session Multiplexing) aracılığıyla elde edilir.

Bu işlem, ayrıntılı bir ağ izleme analizi aracılığıyla istemci ve sunucu arasındaki konuşmanın her adımını gösteren SQL kimlik doğrulaması kullanılarak normal bir oturum açma işlemini açıklar. Örnek ağ izlemesi aşağıdaki adımların çizgisini çizer:

  1. TCP üç yönlü el sıkışması
  2. Sürücü el sıkışması
  3. SSL/TLS el sıkışması
  4. Oturum açma paketi değişimi
  5. Oturum açma onayı
  6. Komut yürütme ve yanıtı okuma
  7. TCP dört yönlü kapatma el sıkışması

Örnek ağ izi

Bu değişim, bağlantı dizesindeki Login Timeout ayarından bağımsız olarak 1 saniye olarak ayrılır.

  • İstemci IP adresi 10.10.10.10
  • Sunucu IP adresi 10.10.10.120

Adım 1. TCP üç yönlü el sıkışması

Tüm TCP konuşmaları, istemciden sunucuya gönderilen bir SYN paketiyle (S bayrak kümesi) başlar. Çerçeve 6127'nde istemci kısa ömürlü bir bağlantı noktası kullanır (işletim sistemi tarafından dinamik olarak atanır) ve sunucu bağlantı noktasına bağlanır, bu durumda bağlantı noktası 1433. Sunucu, SYN bayrağının da ayarlandığı kendi ACK paketini kullanarak yanıt verir. Son olarak istemci, sunucuya ACK paketini aldığını bildirmek için bir SYN paketiyle yanıt verir.

Bu adım, telnet komutuyla aynı şekilde temel bir TCP bağlantısı kurar. İşletim sistemi konuşmanın bu bölümüne aracılık eder. Bu noktada, istemci ve sunucu birbirleriyle ilgili hiçbir şey bilmez.

Üç yönlü el sıkışma diyagramı.

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=

Bu adımda, [Bad CheckSum] uyarıları zararsızdır ve sağlama toplamı boşaltma’nin etkin olduğunu gösterir. Başka bir ifadeyle, izleme yapıldığından daha düşük bir düzeyde ağ katmanına ekleniyorlar. Diğer bilgilerin olmaması halinde bu uyarı, ağ izlemesinin istemcide mi yoksa sunucuda mı alındığını gösterir. Bu durumda, ilk SYN paketinde görünür, bu nedenle izleme istemcide alınmıştır.

Adım 2. Sürücü el sıkışması

Hem istemci sürücüsünün hem de SQL Server'ın birbiriyle ilgili biraz bilgi sahibi olması gerekir. Bu el sıkışmasında, sürücü sunucuya bazı bilgiler ve gereksinimler gönderir. Bu bilgiler veri paketlerinin şifrelenip şifrelemeyeceğini, Birden Çok Etkin Sonuç Kümesinin (MARS) kullanılıp kullanılmayacağını, sürüm numarasının, federasyon kimlik doğrulamasının, bağlantı GUID'sinin vb. kullanılıp kullanılmayacağını içerir.

Sunucu, kimlik doğrulaması gerekip gerektirmediği gibi bilgileriyle yanıt verir. Bu dizi, herhangi bir tür güvenlik anlaşması gerçekleştirilmeden önce gerçekleşir.

Sürücü el sıkışma diyagramı.

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

Adım 3. SSL/TLS el sıkışması

SSL/TLS el sıkışması, İstemci Hello paketi ve ardından Sunucu Hello paketiyle başlar ve Güvenli Kanal ile ilgili bazı ek paketler içerir. Bu adım, paketleri şifrelemek için güvenlik anahtarının anlaşıldığı yerdir. Normalde yalnızca oturum açma paketi şifrelenir, ancak istemci veya sunucu da veri paketlerinin şifrelenmesini gerektirebilir. TLS sürümünün seçilmesi, oturum açma işleminin bu aşamasında gerçekleşir. TLS sürümleri hizalı değilse veya ortak şifreleme paketleri yoksa istemci veya sunucu bu aşamada bağlantıyı kapatabilir.

SSL/TLS el sıkışma diyagramı .

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

Adım 4. Oturum açma paketi

Bu paket şifrelenir ve ağ ayrıştırıcınıza bağlı olarak SSL Application Data veya TDS:Dataolarak görünebilir. Bu adımdan sonraki tüm paketler SSL Application Dataolarak da gösteriliyorsa, bağlantı şifrelenir.

SQL oturum açma diyagramı.

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

Adım 5. Oturum açma onayı

Aksi takdirde, oturum açmayı onaylayan (oturum açma ACK belirteci olan) veya istemciye Login Failed bir hata iletisi döndüren bir yanıt paketi görürsünüz.

Başarılı bir oturum açma işlemi için paket onaltılık verilerinde neler görebileceğinize ilişkin bir örnek aşağıda verilmiştir:

.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 oturum açma onayı diyagramı .

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

Adım 6. Komut yürütme ve yanıtı okuma

Komutlar bir TDS:SQLBatch veya TDS:RPCRequest paketi olarak gönderilir. İlki basit Transact-SQL ifadelerini çalıştırır ve ikincisi saklı yordamları yürütür. Komut uzun ise TCP devam paketlerini veya birkaç satırdan fazla bir sonuç döndürülüyorsa Yanıt paketinde görebilirsiniz.

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=

Adım 7. TCP dört yönlü kapatma el sıkışması

Microsoft sürücüleri, bağlantıları kapatmak için dört yönlü el sıkışmayı kullanır. Birçok üçüncü parti sürücü, bağlantıyı kapatmak için bağlantıyı sıfırlayarak normal ve anormal bir kapanış arasında ayrım yapmayı daha zor hale getirir.

Dört yönlü el sıkışması, istemcinin sunucuya bir FIN paketi göndermesiyle başlar ve sunucu bu pakete ACKile yanıt verir. Ardından sunucu, istemcinin kabul ettiği (FIN) kendi ACK paketini gönderir.

Sunucu ilk olarak bir FIN paketi gönderirse, istemci ve sunucu güvenli kanalda anlaşma yapamazsa en yaygın olarak SSL/TLS el sıkışmasında görülen anormal bir kapatmadır.

Dört yönlü kapama el sıkışması diyagramı.

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=