Teorik Bilgiler

IPsec Nedir?

IPsec IP protokolünün IP ve daha üst katmanlar için güvenlik sağlayan bir genişletmesidir. İlk olarak yeni IPv6 standadı için geliştirilmiş daha sonra IPv4 için "geriye yapılandırılmıştır". IPsec mimarisi RFC2401 belgesinde tanımlanmıştır. Aşağıdaki bir kaç paragraf IPsec icin kısa bir giriş olacaktır.

IPsec iletişimin doğruluğunu kanıtlamak, bütünlük ve gizliliğinden emin olmak için iki farklı protokol kullanır: AH ve ESP. Tüm IP datagramını koruyabileceği gibi sadece daha üst katmanların protokollerini de koruyabilir. Bu durumlar için karşılık gelen modlar tünel ve taşıma modlarıdır. Tünel modunda IP datagramı IPsec protokolünü kullanarak yeni bir IP datagramı tarafından tamamen kapsüllenir. Taşıma modunda ise IP datagramının sadece kullanıcı verisi (payload) IPsec protokolü tarafından IPsec başlığı IP başlığı ile daha üst katman protokol başlığı arasına yerleştirilerek işlenir. (Şekil 5.8'e bakınız.)

Şekil 5.8. IPsec Tünel ve Taşıma Modları

IPsec protokolleri IP datagramlarının bütünlüğünü korumak için hash mesaj doğrulama kodlarını (HMAC) kullanır. MD5 ve SHA gibi hash algoritmaları kullanarak IP datagramı ve bir gizli anahtarı temel alan HMAC'i çıkartırlar. Daha sonra bu HMAC IPsec protokol başlığına eklenir ve paketin alıcısı eğer gizli anahtara erişimi varsa bu HMAC'i kontrol edebilir.

IPsec protokolleri IP datagramlarının gizliliğini korumak için standat simetik şifreleme algoritmalarını kullanır. IPsec standartı NULL ve DES gerçeklenimlerine ihtiyaç duysa da günümüzde genel olarak 3DES, AES ve Blowfish gibi daha güçlü algoritmalar kullanılmaktadır.

IPsec protokolleri DoS ataklarına karşı korunmak için kayan pencere kullanırlar. Her paketin ardışık bir numarası vardır ve bir paket sadece numarasının pencerede olması veya daha yeni olması durumunda kabul edilir. Eski paketler hızla gözardı edilirler. Böylece saldırganın orjinal paketleri kaydedip daha sonra yanıtlamasıyla yapılan cevaplama saldırılarına karşı koruma sağlanmış olur.

IPsec paketlerini karşılıklı olarak kapsülleyip açabilen eşlerin gizli anahtarı, algoritmaları ve iletişimde izin verilen IP adreslerini saklamak için bir yönteme ihtiyaçları vardır. IP datagramlarının korunması için ihtiyaç duyulan bütün bu parametreler bir güvenlik anlaşmasında (security association) (SA) saklanır. Güvenlik anlaşmaları sırayla güvenlik anlaşmaları veritabanında (SAD) saklanırlar.

Her bir güvenlik anlaşması aşağıdaki parametreleri tanımlar:

  • Oluşan IPsec başlığının hedef ve kaynak IP adresleri. Bu adresler paketleri koruyan IPsec eşlerinin IP adresleridir.
  • IPsec protokolü (AH veya ESP), bazen sıkıştırma (IPCOMP) da desteklenir.
  • IPsec protokolünün kullandığı gizli anahtar ve protokol.
  • Güvenlik Parametre Dizini (Security Parameter Index - SPI). Bu güvenlik anlaşmasını belirleyen 32-bit bir sayıdır.

Bazı güvenlik anlaşması veritabanı gerçeklenimleri başka parametrelerin de saklanmasına izin verir:

  • IPsec modu (tünel veya taşıma)
  • Cevap ataklarına karşı koruma sağlayan kayan pencerenin büyüklüğü.
  • Güvenlik anlaşmasının geçerlilik süresi.

Güvenlik anlaşması kaynak ve hedef IP adreslerini tanımladığından çift yönlü IPsec iletişiminde sadece bir yöndeki trafikte koruma sağlayabilir. IPsec her iki yönde de koruma sağlamak için iki adet tek yönlü güvenlik anlaşmasına ihtiyaç duyar.

Güvenlik anlaşmaları sadece IPsec'in trafiği nasıl koruyacağını belirlerler. Hangi trafiğin ne zaman korunacağını tanımlamak için ilave bilgiye ihtiyaç duyulur. Bu bilgi günelik anlaşması veritabanında bulundurulan güvenlik politikasında (SP) saklanır.

Bir güvenlik politikası aşağıdaki parametreleri belirler:

  • Korunacak paketlerin kaynak ve hedef adresleri. Taşıma modunda bu adresler SA'daki adreslerle aynı olurlar! Tünel modunda farklı olabilirler!
  • Korunacak protokol (ve port). Bazı IPsec gerçeklenimleri özel protokolün korunmak için tanımlanmasın aizin vermezler. Böyle bir durumda belirtilen IP adresleri arasındaki tüm trafik korunur.
  • Paketlerin korunmasında kullanılacak güvenlik anlaşması.

Güvenlik anlaşmasının elle yapılandırılması hataya yatkın ve çok gğvenli de değildir. Gizli anahtarların ve şifreleme algoritmalarının sanal özel ağdaki tüm eşler arasında faylaşılması gerekir. Özellikle anahtarların değişimi sistem yöneticisi için kritik problemler yaratır: Henüz bir şifreleme sağlanmamışken simetrik anahtarların değişimi nasıl yapılacaktır?

Bu problemin çözümü için internet anahtar değişim protokolü (IKE) geliştirilmiştir. Bu protokol ilk olarak eşlerin kimlik denetimini yapar, ardından güvenlik anlaşmaları tertip edilir ve simetrik anahtarlar Diffie Hellmann anahtar değişimi kullanılarak seçilir. IKE protokolü gizli anahtarların güvenliğinden emin olmak için periyodik olarak yapılacak anahtar yenilemelerinde de devreye girer.

IPsec Protokolleri

IPsec protokol ailesi iki bağımsız IP protokolünden oluşur: Kimlik Kanıtlama Başlığı (AH) ve Kapsüllenen Güvenlik Yükü (ESP). AH 51 ve ESP ise 50 numaralı protokollerdir (ayrıntı için /etc/protocols dosyasına bakabilirsiniz). Aşağıdaki iki bölümde bu protokollerin özelliklerini özet olarak bulacaksınız.

AH - Kimlik Kanıtlama Başlığı

AH protokolü IP datagramının bütünlüğünü korur. Bunu yapabilmek için datagramın HMAC'ini hesaplar. HMAC hesaplanırken gizli anahtar, paketteki kullanıcı verisi ve IP başlığındaki IP adresi gibi değişmeyen bölümleri temel alınır. Bu bilgi daha sonra paketin AH başlığına eklenir. AH başlığı Şekil 5.9'de gösterilmektedir.

Şekil 5.9. Paketin bütünlüğünü koruyan AH Başlığı

AH başlığı 24 byte uzunluğundadır. İlk byte Next Header alanıdır. Bu alan takip eden başlığın protokolünü belirtir. Tünel modunda bütüm IP datagramı kapsüllendiğinden bu alanın değeri 4'tür. Bir TCP datagramı taşıma modunda kapsüllendiğinde kullanılan sayı ise 6'dır. Sonraki byte yükün uzunluğunu gösterir. Bu alanı iki adet ayırılmış byte takip eder. Sıradaki 32 bit uzunluğundaki alanda Güvenlik Parametre Dizini (SPI) bulunur. SPI, kapsüllenmiş paketin açılmasında kullanılacak güvenlik anlaşmasını belirler. 32 bit uzunluğundaki Ardışıklık Numarası cevaplama ataklarına karşı koruma sağlar. Son alan olan HMAC ise 96 bitlik alan kaplar. Sadece gizli anahtarı bilen eşler HMAC yaratıp onu kontrol edebildiklerinden HMAC alanı paketin bütünlüğünü korur.

AH protokolü IP datagramının IP başlığındaki IP adresi gibi değişmeyen parçalarını da koruduğundan NAT'a izin vermez. Ağ Adresi Çeviricisi (NAT) IP başlığındaki IP adresini (genellikle kaynak IP) başka bir IP adresiyle değiştirir. Böylece HMAC değişeceğinden artık geçersiz olur. IPsec protokolünün bir genişletmesi olan Aykırı-NAT bu kısıtlamanın etrafından dolanan bir çözümdür.

ESP - Kapsüllenen Güvenlik Yükü

ESP protokolü hem HMAC kullanarak paketin bütünlüğünü hem de şifreleme kullanarak paketin gizliğini garanti eder. Paketin şifrelendikten sonra HMAC hesaplanır ve ESP başlığı oluşturulur ve pakete eklenir. İki bölümden oluşan ESP başlığı Şekil 5.10'de gösterilmiştir.

Şekil 5.10. ESP Başlığı

ESP başlığındaki ilk bölüm Güvenlik Parametre Dizini (SPI)'dir. SPI kapsüllenmiş ESP paketinin açılmasında kullanılacak SA'yı belirtir. İkinci bölüm Ardışıklık Numarasıdır. Bu numara cevaplama ataklarına karşı koruma sağlar. Üçüncü bölümde ise şifreleme işleminde kullanılan İlklendirme Vektörü (IV) bulunur. Simetrik şifreleme algoritmaları eğer IV kullanılmazsa frekans saldırılarına karşı zayıftırlar. IV sayasinde iki eşit yüke karşılık iki farklı şifrelenmiş yük oluştuğundundan emin olunabilir.

IPsec şifreleme sürecinde blok şifreleme algoritmaları kullandığından eğer şifrelenecek yükün uzunluğu bir bloğun tam katı değilse takviye edilmelidir. Bu takviyenin uzunluğu da başlığa eklenir. Bunun ardından Next Header bölümü gelir. ESP başlığında son olarak paketin bütünlüğünden emin olunmasını sağlayan 96 bit uzunluğundaki HMAC bulunur. IP başlığı hesaplama sürecine dahil edilmez.

Bu yüzden ESP protokolü NAT kullanımına mani olmaz. Yine de bir çok durumda IPsec ile NAT'ın beraber kullanımı mümkün olmamaktadır. Aykırı-NAT ESP paketlerini UDP paketlerinin içine kapsülleyen bir çözüm sunar.

IKE Protokolü

IKE protokolü güvenli iletişimin en ünlü sorununu çözer: eşlerin kimlik kanıtlama yapması ve simetrik anahtarların değişimi. Bu sayede güvenlik anlaşmaları yapılır ve SAD oluşturulur. IKE protokolü genellikle kullanıcı tarafı sürecine ihtiyaç duyar, işletim sisteminde bir gerçekleştirmesi yoktur. İletişim için 500/UDP portunu kullanır.

IKE protokol fonksiyonları iki safhalıdır. İlk safhada Internet Güvenlik Anlaşması Anahtar Yönetimi Güvenlik Anlaşması (ISAKMP SA) tesis edilir. İkinci safhada ISAKMP SA kullanılarak IPsec SA'ları kurulur.

İlk safhada eşlerin kimlik kanıtlaması RSA anahtarları veya X.509 sertifikaları (hatta Kerberos desteğindeki racoon) gibi daha önceden paylaşılan anahtarlara dayanarak yapılır.

İlk safha genellikle iki farklı modu destekler: temel mod ve saldırgan mod. İki mod da eşlerin kimlik kanıtlamasını yapar ve bir ISAKMP SA oluşturur ama saldırgan mod bu işi yapmak için temel modun yarısı kadar mesaj kullanır. Bunun sakıncası saldırgan modun kimlik korumasını desteklemediğinden eğer önceden paylaşılmış anahtarlarla birlikte kullanılırsa aradaki-adam saldırılarına karşı korunmasız oluşudur. Diğer yandan bu saldırgan modun tek amacıdır. Temel mod, iç işleyişleri yüzünden bilinmeyen eşler için önceden paylaşılmış farklı anahtarların kullanımını desteklemez. Saldırgan mod kimlik korumasını desteklemez ve istemcinin kimliğini açık olarak gönderir. Bu nedenle eşler birbirini kimlik kanıtlaması gerçekleşmeden bilirler ve farklı eşler için önceden paylaşılmış farklı anahtarlar kullanılabilir.

İkinci safhada IKE protokolü güvenlik anlaşma tekliflerini karşılıklı değiştirir ve ISAKMP SA sayesinde sonuca bağlar. ISAKMP SA'nın sunduğu kimlik denetimi aradaki-adam ataklarına karşı koruma sağlar. İkinci safha hızlı modu kullanır.

Genellikle iki eş sadece bir ISAKMP SA üzerinde anlaşırlar ve bu kullanılarak bir çok (en azından iki adet) tek yönlü IPsec SA'ları kurulur.

Aykırı NAT

Aykırı NAT nedir ve neden ihtiyaç duyulur?

Sıklıkla VPN'deki taraflardan biri bir NAT aygıtının arkasında bulunur. Burada sadece Kaynak-NAT cihazlarını göz önüne alacağız. Bundan sonra NAT ile Kaynak-NAT veya Maskelemeyi kastediyor olacağım. Peki bunun VPN ile nesaıl bir ilgisi var? En başta taraflardan birinin orjinal IP adresi NAT aygıtı tarafından gizlenir. NAT cihazı orjinal kaynak IP adresini kendi IP adresiyle değiştirir.

Böylece IPsec AH protokolü kullanılamaz hale gelir. Ama iki taraf da doru yapılandırılırsa ESP hala kullanılabilir.

Öyleyse neden Aykırı-NAT'a ihtiyaç duyulsun? Çünkü aynı NAT aygıtının arkasındaki iki makinenin dışarıya bir tünel oluşturmaya çalışmalarıyla birlikte ikisi birden çalışmaz hale gelir.

Neden böyle olur? NAT aygıtı gönderdiği paketlere gelen yanıtları doğru istemcilere gönderebilmek için nat'ladığı bağlantıların kaydını tutmak zorundadır. Bu yüzden NAT aygıtında bir tablo bulunur ve nat'lanan tüm bağlantılar bu tabloya yazılır. Şimdi bir istemcinin internet üzerinden bir web sunucusuna bağladığını varsayalım. NAT cihazı istemcinin adresi yerine kendi adresini kaynak adres olarak gösterir ve tablosuna seçilen istemci protundan gelen tüm paketleri orjinal istemci1'e göndermesi gerektiği notunu alır. İkinci bir istemci iletişime başlar başlamaz aynı eşdeğer bağlantıyı kurar. Şayet ikinci istemci de tesadüfen aynı istemci portunu seçerse, NAT aygıtı bir belirsizlik olmaması için istemci portunu da değiştirecektir. Bu işlem TCP ve UDP kullanımında problem çıkartmayacaktır çünkü her ikisi de portlarla çalışmaktadır. Ama ESP port kullanmaz. Bu yüzden NAT aygıtı paketleri ayırt etmek için sadece protokolü kullanabilir. İlk istemci bağlandığında tabloya tüm ESP paketlerinin ilk istemciye "geriye-natlanması" gerektiği yazılır. İkinci istemci bağladığında bu girdinin üzerine ikinci istemciye uygun bilgiler yazılır ve böylece en azından ilk istemcinin bağlantısı kesilir.

Bu duruma yardımcı olmak için Aykırı-NAT ne sunar? Aykırı-NAT benzer şekilde ESP paketlerini UDP paketlerine kapsüller. Bu bir NAT aygıtı tarafından kolayca yapılabilir çünkü portlarla çalışabilirler. Öntanımlı olarak 4500/udp portu kullanılır. Aykırı-NAT için bir çok taslak bulunmasına rağmen henüz bir RFC yoktur. Aykırı-NAT'ın güzel bir özelliği bir kez aktif hale getirildiğinde tarafların ihtiyaç duyduklarında onu otomatik olarak kullanabilmeleridir.