3.4 · Seviye 0 · Dijital Dünyanın Temelleri
TCP ve UDP
bağlantılı ve bağlantısız iletim; üçlü el sıkışma
Siber Güvenlik Akademisi — M03, Ağlar Nasıl Çalışır · 1.912 kelime · 3 saha durumu · ≈ 9 dk okuma · 13 dk dinleme
Saha durumlarındaki kişiler ve kurumlar kurgusaldır; kaynaklar gerçektir. Bu akademi savunma odaklıdır: saldırılar mekanizma düzeyinde anlatılır, adım adım saldırı tarifi verilmez. Uygulamalar yalnız kendi cihazında, kendi hesabında ya da yalıtılmış bir laboratuvarda yapılır; başkasının sistemine izinsiz erişim suçtur. Dersler hukuki danışmanlığın yerini tutmaz.
Açılış
Pazar öğleden sonra Nilüfer Hanım torunlarıyla görüntülü konuşuyordu. Bağlantı zayıftı; görüntü arada bir donuyor, bir an sonra torununun yüzü birkaç saniye ileride, başka bir ifadeyle beliriyordu. Ses de kesik kesik geliyordu. Ama konuşma sürüyordu; donan anlar geri gelmiyor, konuşma kaldığı yerden değil, olduğu yerden devam ediyordu.
Aynı saatlerde kızı ona e-postayla bayram fotoğraflarını gönderdi. Fotoğraflar yavaş indi, çok yavaş. Ama inince eksiksizdi; hiçbirinde yarım bir yüz, bozuk bir köşe yoktu. Nilüfer Hanım farkı torununa sordu: aynı internet, aynı zayıf bağlantı, ama biri parça parça ve atlayarak geliyor, öbürü yavaş ama eksiksiz. Neden?
Ece'nin cevabı bu dersin konusu. İki uygulama, ağ üzerinde aynı adreslere ve portlara paket gönderse de, paketleri iki farklı anlaşmayla taşıyordu. Biri her paketin ulaştığından emin olmak için bekliyordu, öbürü beklemiyordu. Bu fark yalnız görüntünün kalitesini değil, güvenliği de etkiliyor.
Tek fikir
İnternetteki konuşmaların çoğu iki taşıma protokolünden biriyle yürür: TCP her paketin sırayla ve eksiksiz ulaşmasını garanti eder, UDP ise hızı garantiye tercih eder. Bu fark, hangi saldırıların mümkün olduğunu ve hangi savunmanın gerektiğini de belirler.
Nasıl çalışır
Bağlantının hedefi artık belli: hangi makine, hangi kapı. Ama paketlerin o porta nasıl taşınacağına, yani kaybolan bir paket olursa ne yapılacağına, paketlerin sırasının nasıl korunacağına başka bir kural karar verir. Bu kurallar taşıma protokolleridir ve en yaygın ikisi TCP ile UDP'dir.
TCP'nin güvencesinin bir bedeli var: her şeyi doğrulamak zaman alır. Kaybolan bir paket yeniden gönderilene kadar arkasındakiler bekler. Nilüfer Hanım'ın fotoğrafları bu yüzden yavaş ama eksiksiz indi.
Görüntülü konuşmada bir saniye önceki görüntüyü yeniden göndermenin anlamı yoktur; artık geçmişte kalmıştır. UDP bu yüzden donan bir görüntüyü geri getirmeye çalışmaz, bir sonraki kareyi gönderir. Nilüfer Hanım'ın gördüğü atlamalar buydu.
TCP bağlantısının kuruluşu, ağ güvenliğinin en çok anılan anlarından biridir.
El sıkışma savunmacıya iki şey söyler. Birincisi kaynak adresle ilgilidir. TCP'de bir bağlantı kurulabilmesi için cevabın gerçekten gönderene ulaşması gerekir; sahte bir kaynak adresle gelen bir istek, cevabı başka bir yere gönderttiği için bağlantıyı tamamlayamaz. UDP'de ise el sıkışma yoktur; bir paketin kaynak adresi sahte olabilir ve cevap, o sahte adresin gerçek sahibine gider. Bu, kötüye kullanılabilen bir özelliktir: saldırganlar sahte kaynak adresli küçük sorgularla, kurbanın adresine çok daha büyük cevaplar yağdırabilir. Hizmet engelleme saldırılarını Seviye 3'te ayrıca ele alacağız.
İkincisi bağlantıyı bekleyen sunucuyla ilgilidir. Bir sunucu ilk senkronizasyon paketini aldığında, üçüncü adımı beklerken bu yarım bağlantı için bellekte yer ayırır. Çok sayıda yarım bağlantı aynı anda gelir ve hiçbiri tamamlanmazsa, sunucunun bu bekleme alanı dolabilir ve gerçek kullanıcıların bağlantılarına yer kalmaz. Bu, erişilebilirliği hedefleyen bir saldırı türüdür ve işletim sistemleri ile koruma hizmetleri bu yüzden yarım bağlantıları daha akıllı yöneten önlemler taşır.
Sahada
Savunma
TCP ve UDP için savunma, her protokolün doğasına göre farklılaşır.
TCP'de el sıkışma bir ölçüde koruma sağlar: bir bağlantının kurulması için cevabın gerçekten gönderene dönmesi gerektiği için, sahte adresli tek bir paket bir oturum açamaz. Ama yarım bağlantılarla sunucunun bekleme alanını doldurma girişimleri mümkündür. Bunlara karşı işletim sistemlerinin yarım bağlantıları sınırlayan ve akıllıca yöneten yerleşik korumalarını açık tutmak, dışa açık sunucuların önünde trafiği emebilen koruma hizmetleri kullanmak ve sunucunun normal yarım bağlantı sayısını bilip olağandışı artışı izlemek gerekir. Kaan'ın gördüğü tepe, bu izlemenin ürünüydü.
UDP'de el sıkışma olmadığı için kaynak adrese güvenilemez. Bu yüzden UDP servisleri iki sorumluluk taşır. Kendi kullanıcılarını korumak için gelen sorguların gerçekten beklenen kaynaklardan geldiğini başka yollarla doğrulamaları gerekir. Başkalarını korumak için de, Selin'in ekibinin öğrendiği gibi, kimden gelirse gelsin herkese cevap veren servisler internete açık bırakılmamalıdır; aksi hâlde başkalarına yönelik saldırılarda yansıtıcı olarak kullanılabilirler. Bir servisin yalnız kendi kullanıcılarına cevap vermesi, hem seni hem interneti korur.
Ağı işleten kurumlar için ise en iyi güncel uygulama açıktır: ağdan çıkan trafiğin kaynak adresinin gerçekten o ağa ait olduğunu kontrol etmek. Bu, o ağın içinden sahte adresli saldırı yapılmasını engeller. Servis sağlayıcılar ve büyük kurumlar bu süzmeyi sınırlarında uygular.
Son olarak güvenlik duvarı kuralları yazılırken protokol de belirtilir. Bir kural "443 numaralı porta izin ver" demekle kalmaz, TCP mi UDP mi olduğunu da söyler. Defne Hanım'ın telefon sistemi için yazılan kural gibi, UDP kuralları mümkün olduğunca dar tutulur ve yalnız bilinen karşı taraflara açılır.
Uygulama
Şimdi kendi makinendeki konuşmaları iki taşıma protokolüne göre ayıracaksın; komutlar yalnız okur.
Bir bağlantının durumu SYN_SENT ya da SYN_RECEIVED gibi görünüyorsa, bu el sıkışmanın ortasında yakalanmış bir bağlantıdır; anlık olarak görmek normaldir, sürekli ve çok sayıda görmek ise araştırılacak bir durumdur.
Defter: Tehditler bölümüne kısa bir not: kendi bilgisayarında hangi uygulamaların UDP kullandığı ve dinleyen UDP servisleri varsa adları. Envanterde ağa açık bir UDP servisi bulduysan, örneğin bir oyun sunucusu ya da paylaşım servisi, yanına "kime cevap veriyor" sorusu.
Hata köşesi
Yaygın yanlış"UDP güvensiz, TCP güvenlidir."
İkisi de şifreleme yapmaz ve ikisi de güvenlik protokolü değildir; içeriği korumak, üzerlerine kurulan şifreleme katmanının işidir. Aralarındaki fark güvenilirlik ve bağlantı kurma biçimidir. UDP'nin el sıkışmasız yapısı sahte kaynak adresini kolaylaştırır, TCP'nin bekleme düzeni de yarım bağlantı saldırılarına imkân verir; her birinin kendine özgü riskleri vardır.
Yaygın yanlış"Bana gelen bir paketin kaynak adresi, onu gönderenin adresidir."
Özellikle UDP'de kaynak adres sahte olabilir ve bir cevap o adresin gerçek sahibine, habersiz bir üçüncü kişiye gidebilir. Bu yüzden yalnız kaynak adrese dayanan güvenlik kararları ya da başkasına yönelik suçlamalar dikkatle verilmelidir.
Yaygın yanlış"Benim sunucum saldırıya uğramadıysa sorun yok."
Selin'in şirketinin unutulmuş alan adı sunucusu saldırıya uğramadı, ama başkasına yönelik bir saldırının aracı oldu. Herkese cevap veren bir servis, sahibine zarar vermeden de internetin geri kalanına zarar verebilir; sorumluluk bu yüzden yalnız kendini korumakla bitmez.
Etik ve sınırlar
Bu derste sahte kaynak adresli paketlerin ve yarım bağlantıların nasıl kötüye kullanılabildiğini mekanizma düzeyinde gördün; amacı bu saldırıları tanımak ve önlemektir. Kendi ağında bile bir sunucuya yük bindirip dayanıp dayanmadığını denemek ancak o sunucunun ve ağın sahibinin yetkisiyle, planlanmış bir test olarak yapılır; başkasının sistemine böyle bir yük göndermek, sistemi engelleme suçu kapsamında değerlendirilebilir. Bir de pasif sorumluluk var: yönettiğin bir servis başkasına yönelik bir saldırıda araç olarak kullanılıyorsa, haberin olduğu anda onu durdurmak ve servis sağlayıcınla iş birliği yapmak gerekir. Selin'in ekibinin servis sağlayıcıdan gelen uyarıya aynı gün cevap vermesi bu sorumluluğun karşılığıydı.
Kapanış
- TCP bağlantı kurar, her paketin ulaştığını doğrular ve sırayı korur; UDP bağlantı kurmadan, garanti vermeden ve hızlıca taşır, bu yüzden canlı ses ve görüntü gibi işlerde tercih edilir.
- TCP bağlantısı üçlü el sıkışmayla kurulur; bu, sahte adresle bağlantı kurmayı zorlaştırır ama yarım bağlantılarla sunucunun bekleme alanını doldurma girişimlerine imkân verir.
- UDP'de kaynak adrese güvenilemez; herkese cevap veren servisler başkalarına yönelik saldırılarda yansıtıcı olabilir, bu yüzden UDP servisleri yalnız kendi kullanıcılarına açık tutulur ve ağlar sahte kaynak adresli trafiği sınırlarında süzer.
Üç soru
- Görüntülü konuşmada donan bir görüntünün geri gelmemesi, fotoğraf indirmede ise her parçanın eksiksiz gelmesi neden bir tasarım tercihidir?
- Sahte kaynak adresli bir istek TCP'de neden bağlantı kuramaz, UDP'de ise neden bir üçüncü kişiye zarar verebilir?
- Selin'in şirketinin unutulmuş alan adı sunucusu saldırıya uğramadığı hâlde neden bir güvenlik sorunuydu?
Yanıtlar
- Görüntülü konuşma UDP kullanır, çünkü geçmişte kalmış bir görüntüyü yeniden göndermenin anlamı yoktur ve geç gelen bir kare, hiç gelmemesinden daha rahatsız edicidir. Fotoğraf indirme TCP kullanır, çünkü tek bir bitin kaybolması dosyayı bozar; TCP kaybolan paketleri yeniden gönderir ve sırayı korur, bunun bedeli de hızdır.
- TCP'de bağlantı kurulabilmesi için sunucunun cevabının gerçek gönderene ulaşması ve onun üçüncü adımı göndermesi gerekir; sahte adresle gelen istekte cevap başka yere gittiği için el sıkışma tamamlanamaz. UDP'de el sıkışma yoktur; sunucu cevabını sahte kaynak adrese gönderir ve o adresin gerçek sahibi, istemediği cevapları alan habersiz bir üçüncü kişi olur.
- Çünkü kimden gelirse gelsin herkesin sorgusunu cevaplıyordu ve sahte kaynak adresli sorgularla başka bir kurumu hedef alan bir saldırıda yansıtıcı olarak kullanıldı. Şirket kendisi zarar görmedi ama internetteki başka birine zarar verilmesinin aracı oldu. Servisler yalnız kendi kullanıcılarına cevap verecek biçimde yapılandırılmalıdır.
Sonraki derse köprü
Bu modülde paketleri farklı açılardan konuştuk: bir yol ve fiziksel bağlantı, IP adresleri, portlar ve şimdi taşıma protokolleri. Her biri bir paketin farklı bir yönüyle ilgileniyor ve aslında bir paket bunların hepsini üst üste taşıyor. Sıradaki ders bu üst üste binen düzeni bir arada gösteren katmanlı modeli, OSI ve TCP/IP katmanlarını ele alıyor ve bir sorunun hangi katmanda olduğunu bulmanın neden önemli olduğunu anlatıyor.
Anlamadığın bir yer mi var?
Mentor yalnız bu dersin metnine dayanarak cevap verir. Metinde geçmeyen bir şey sorarsan uydurmaz, geçmediğini söyler.