# Tünel protokolü

**Tünel protokolü**, bir ağ protokolü farklı bir yük-taşıma protokolü içerdiğinde bilgisayar ağ bağlantısı, bir tünel protokolü kullanır. Tünel protokolü kullanılarak, uyumsuz olan bir iletim protokolü üzerinde bir yük-taşıma taşınabilir ya da güvenilmeyen ağlarda güvenli bir yol oluşumu sağlanabilir.

Tünel protokolü tipik olarak, OSI ya da TCP/IP gibi katmanlı protokol modelleriyle zıtlık gösterir. İletim protokolü genelde kalıp içerisinde, yük-taşıma protokolünden daha yüksek seviyede ya da aynı seviyede çalışır.
Belirli protokol yığınını anlamak için, ağ mühendisleri öncelikle payload ve iletim(delivery protocol) protokol gruplarını her ikisini de anlamak zorundadır.

Örnek olarak ağ katman üzerinde ağ katmanına örnek olarak, IP'nin üzerinde çalışan bir protokol olan Generic Routing Encapsulation(GRE); genel IP adresler ile teslimat paketlerini kullanan internet üzerinden, RFC 1918 özel adresi ile IP paketlerini taşıma servisi yapar. Bu durumda, teslimat ve yük-taşıma protokolleri uyumlu ancak yük-taşıma adresleri, bu teslimat ağ erişimininkileriyle uyumsuzdur.

Bunun tersine, bir IP payload, payload mekanizmasına data link layer'ın bir protokolü olarak görünen Layer 2 Tunneling Protocol (L2TP)'nün içerisinde taşındığında bir veri hattı katmanı teslimatı (data link layer delivery) görüyor sanabilir. Ancak, aslında IP üzerinde User Datagram Protocol(UDP) kullanarak taşıma katmanı üzerinde çalışır.

Tünel protokolleri genel ağ erişiminde emniyeti olmayan yük-taşıma (payload) protokollerini taşımak için veri şifrelemesi kullanabilir. Dolayısıyla VPN fonksiyonelliği sağlanır. IPsec'te end-to-end taşıma modu vardır. Ancak bunun yanında güvenilir güvenlik kapısı boyunca tünel modu içerisinde çalışabilir.

## Güvenlik kabuğu tüneli

Bir güvenlik kabuğu(SSH) tüneli, SSH protocol bağlantısı boyunca oluşturulmuş bir şifrelenmiş tünel içerir. Kullanıcılar SSH tünelleri, şifrelenmiş kanal boyunca ağ erişimi üzerinde şifrelenmemiş trafik transferini sağlamak için kurabilir. Örneğin;Microsoft Windows makineleri, şifrelenmemiş bir protokol olan Server Message Block(SMB) protokolü üzerinden dosyalar paylaşabilir. Eğer biri internet üzerinden Microsoft Windows dosya-sitemine uzaktan kontrol ile erişebilseydi, bağlantıda gezen herhangi biri transfer edilen dosyaları görebilirdi.

Windows dosya sistemine güvenli şekilde erişim için, tüm SMB trafiğini şifrelenmiş kanal içerisinden uzaktan-kontrol-dosya sunucusuna yönlendirmek için biri SSH tüneli kurabilir. Yine de SMB protokolü hiçbir şifreleme içermez.

Reverse ssh tunnel
SSH tüneli kurmak için, biri belirli bir yerel porttan uzaktan kontrol makinesinin bir portuna doğru ileriye bir SSH client yapılandırması yapar. SSH tünel kurulduğunda, kullanıcı ağ servisine giriş yapmak için belirli bir yerel porta bağlanabilir. Yerel port uzaktan erişim portu gibi aynı port numarasına ihtiyaç duymaz.

Site dışarıya dönük bağlantılara izin verdiği sürece, SSH tünelleri, belirli internet servislerini yasaklayan güvenlik duvarlarını(firewall) atlatmak için kolaylık sağlar. Örneğin;bir organizasyon bir kullanıcının internet sayfasına(port 80) girişini, organizasyonun proxy filtresi içerisinden geçmeden yasaklamak isteyebilir. Ancak kullanıcılar, organizasyonun proxy filtresi tarafından kendi internet trafiğinin görüntülenmesini veya engellenmesini istemeyebilirler.

Eğer kullanıcılar harici bir sunucuya bağlanabilirlerse, kendi yerel makineleri ile verilen porta doğru uzaktaki web sunucusunda olan port 80'e geçiş yapabilmeleri için SSH tüneli oluşturabilirler. Uzaktan web sunucusuna erişim için, kullanıcılar kendi tarayıcılarını  yerel porta belirtmelidirler.

SSH client'ların bazıları, kullanıcıların SOCKS 4/5 proxy oluşturmasına izin veren dinamik port iletimini (dynamic port forwarding) desteklemektedirler. Bu durumda kullanıcılar kendi yerel SOCKS proxy sunucularını kullanarak kendi uygulamalarını yapılandırabilirler. Bu durum tek bir porta, belirtilen SSH tüneli oluşturma durumundan daha çok esneklik sağlar. SOCKS, kullanıcının önceden tanımlanmış porta ve sunucuya bağlı bağlantı kısıtlamalarından kurtulmasını sağlar. Eğer bir uygulama SOCKS desteklemiyorsa, yerel SOCKS proxy sunucusuna uygulamanın direkt erişimi için "socksifier" kullanılabilir. Bazı socksifier'ler SSH client ihtiyacını engellemek için SSH'ı direkt olarak destekler.

## Güvenlik duvarı önlemine karşı tünelleme

Kullanıcılar tünellemeyi ayrıca güvenlik duvarına sızmak için de kullanabilir. Normalde güvenlik duvarının engel koyacağı protokole, protokol içerisinde "wrapped (paketlenmiş)" kullanımı, güvenlik duvarının engellemesinden kurtarır. HTTP gibi. Eğer güvenlik duvarı poliçesi özellikle "wrapping" tarzı şeyleri harici tutmazsa, bu hile, amaçlanan güvenlik duvarı ilkesinin yasal boşluğundan faydalanmak için fonksiyonel işlem gösterir.

Bir başka HTTP temelli tünelleme metodu, HTTP connect method/command kullanır. Client, HTTP proxy'ye HTTP connect emri yayınlar. Daha sonra proxy belirli sunucu veya porta TCP bağlantısı kurar ve client bağlantısı ile sunucu, port arasındaki veriyi gecikmeye uğratır.
Çünkü bu bir güvenlik çukuru oluşturur. CONNECT-capable HTTP proxy'leri CONNECT metoduna erişim için kısıtlama meydana getirir. Proxy sadece özel yetkilendirilmiş sunucuların beyaz listesine erişim izni verir.

## Ayrıca bakınız

* HTTP tüneli
* ICMP tüneli
* Sanal Özel Ağ
* VXLAN
* NVGRE

## Kaynakça

## Dış bağlantılar

* (PortFusion) tüm TCP protokolleri için tünelleme çözümleri 5 Eylül 2017 tarihinde Wayback Machine sitesinde arşivlendi.
* SSH VPN tunnel 5 Nisan 2014 tarihinde Wayback Machine sitesinde arşivlendi., SSH-temelli özel sanal ağ bağlantıları
* BarbaTunnel Project8 Ocak 2012 tarihinde Wayback Machine sitesinde arşivlendi., Windows'ta HTTP-tünel ve UDP-tünel için açık kaynak uygulamaları]