SSH Tünelleri İçin Pratik Rehber: Yerel ve Uzak Port Yönlendirme
(labs.iximiuz.com)Özet Genel Bakış
- SSH tüneli, dışarıdan doğrudan erişilemeyen servislere güvenli biçimde bağlanmak veya iç servisleri geçici olarak dışarıya açmak için kullanılan bir tekniktir.
- SSH port yönlendirme genel olarak yerel yönlendirme, uzak yönlendirme, dinamik yerel yönlendirme, dinamik uzak yönlendirme olarak ayrılır.
-Lyerel SSH istemcisinin bir port açmasını,-Rise uzak SSH sunucusunun bir port açmasını sağlar.- Bir Bastion Host kullanıldığında yalnızca SSH sunucusuna değil, o sunucunun erişebildiği diğer özel ağ servislerine de bağlanılabilir.
- Dinamik yönlendirme, belirli bir hedefi sabitlemeden bir SOCKS proxy oluşturarak birden fazla host ve porta erişim sağlar.
- Uzak yönlendirmeyi dış ağa açmak için SSH sunucusundaki
GatewayPortsayarının gözden geçirilmesi gerekir.
Giriş
SSH tünelinin amacı
-
SSH, uzak komut çalıştırmanın yanı sıra ağ trafiğini şifreleyerek ileten tünel işlevi de sunar.
-
Ek bir VPN veya özel proxy programı olmadan, yalnızca standart SSH komutlarıyla özel ağa erişim ve servis yayını mümkündür.
-
Temel kullanım örnekleri şunlardır.
- Genel erişime açık bir sunucu üzerinden iç VPC servislerine bağlanmak
- Uzak geliştirme sunucusunun yerel portunu kullanıcının PC'sindeki tarayıcıda açmak
- Evdeki veya özel ağdaki servisleri geçici olarak dışarıya açmak
- Yerel tarayıcının hata ayıklama portunu uzak geliştirme ajanına bağlamak
-
SSH tünellerini anlamak için şu iki noktayı ayırmak gerekir.
- Hangi makinenin yeni bir port açıp dinlediği
- Tünelden geçen trafiğin, hangi makinenin bakış açısından hedefe bağlandığı
Ana Bölüm
Yerel yönlendirme uzak servisi yerel ortama bağlar
- Yerel port yönlendirme, uzak sunucuyu veya uzak sunucunun erişebildiği bir servisi kullanıcının PC'sindeki yerel bir porta bağlama yöntemidir.
- Temel komut yapısı şöyledir.
ssh -L [local_addr:]local_port:remote_addr:remote_port [user@]sshd_addr
-
SSH istemcisi, kullanıcının PC'sindeki
local_portüzerinde bağlantı bekler. -
Bu porta gelen trafik, SSH tüneli üzerinden
remote_addr:remote_portadresine iletilir. -
Nihai hedefe bağlantı, SSH sunucusunun bulunduğu ağın bakış açısından yapılır.
-
Başlıca kullanım örnekleri şunlardır.
- Uzak MySQL, PostgreSQL, Redis erişimi
- Yalnızca özel ağda açık olan web uygulamalarına erişim
- Sunucunun dış arayüzünde yayınlanmamış container portlarına erişim
Bastion Host özel ağ erişimini aracılık eder
-
remote_addrile SSH bağlantı hedefi olansshd_addraynı makine olmak zorunda değildir. -
SSH sunucusu başka iç servislere erişebiliyorsa, o sunucu bir ara nokta olarak kullanılabilir.
-
Bu tür aracılık yapan sunuculara Bastion Host veya Jump Host denir.
-
Yaygın bağlantı yapısı şöyledir.
- Kullanıcının PC'sinden genel erişime açık Bastion Host'a SSH bağlantısı
- Trafiğin, Bastion Host'un erişebildiği VPC içi servislere iletilmesi
-
Bu sayede dışarıya açık olmayan veritabanlarına, arama kümelerine ve iç API'lere erişilebilir.
Uzak yönlendirme yerel servisi uzakta yayınlar
- Uzak port yönlendirme, kullanıcının PC'sindeki veya iç ağdaki bir servisi dışarıdaki SSH sunucusunun bir portuna bağlama yöntemidir.
- Temel komut yapısı şöyledir.
ssh -R [remote_addr:]remote_port:local_addr:local_port [user@]gateway_addr
-
Uzak SSH sunucusu
remote_portportunu açar ve bağlantı bekler. -
Bu porta gelen trafik, SSH tüneli üzerinden SSH istemcisi tarafındaki
local_addr:local_portadresine iletilir. -
Başlıca kullanım örnekleri şunlardır.
- Dizüstü bilgisayarda çalışan geliştirme sunucusunu dış demo için yayınlamak
- Homelab servislerini internetten erişilebilir hale getirmek
- Yerel tarayıcının hata ayıklama portunu uzak geliştirme ortamına sunmak
Dışa açmak için GatewayPorts ayarı gerekir
- Varsayılan ayarlarda, uzak yönlendirme portu yalnızca SSH sunucusunun
localhostarayüzüne bind edilebilir. - Bu durumda ilgili servise uzak sunucunun içinden erişilebilir, ancak dışarıdan erişilemez.
- Uzak sunucunun genel IP'si üzerinden erişim sağlamak için
sshd_configiçindeki şu ayarın gözden geçirilmesi gerekir.
GatewayPorts yes
- Bu ayar portu dış arayüzde görünür hale getirebileceği için firewall ve erişim kontrolü birlikte uygulanmalıdır.
- Geliştirme servislerini doğrudan genel internete açmak, kimliği doğrulanmamış erişim ve saldırı riskini artırabilir.
Yerel makine özel ağ için bir Jump Host olabilir
-
Uzak yönlendirmenin hedefi yalnızca SSH istemcisinin çalıştığı makineyle sınırlı değildir.
-
Kullanıcının PC'si ev ağındaki başka sunuculara erişebiliyorsa, bu iç sunucuların portları da uzak SSH sunucusu üzerinden yayınlanabilir.
-
Bu durumda kullanıcının PC'si şu iki ağı birbirine bağlayan bir ara makine haline gelir.
- Ev ağı veya özel geliştirme ağı
- Genel SSH gateway sunucusu
-
Bu sayede internete doğrudan bağlı olmayan ev sunucularındaki veya iç geliştirme sunucularındaki servislere dışarıdan erişilebilir.
Dinamik yerel yönlendirme yerel bir SOCKS proxy oluşturur
- Normal yerel yönlendirme, tek bir yerel portu tek bir hedefe sabitler.
- Dinamik yerel yönlendirme ise SSH istemcisinde bir SOCKS proxy oluşturur.
- Temel komut yapısı şöyledir.
ssh -D [local_addr:]local_port [user@]sshd_addr
-
Kullanıcının PC'sindeki belirtilen portta bir SOCKS proxy çalışır.
-
SOCKS destekleyen uygulamalar, her bağlantıda farklı hedef adres ve port belirleyebilir.
-
Gerçek hedef bağlantısı, uzak SSH sunucusunun ağ bakış açısından kurulur.
-
Tek bir SSH bağlantısıyla uzak özel ağdaki birden fazla servise erişilebilmesi, bunu sabit yerel yönlendirmeden ayırır.
-
Başlıca kullanım örnekleri şunlardır.
- Bastion Host üzerinden birden fazla iç API çağrısı yapmak
- Özel ağ içindeki web uygulamalarını gezmek
- Tek bir EC2 instance üzerinden birden fazla VPC endpoint'ine bağlanmak
Dinamik uzak yönlendirme uzak bir SOCKS proxy oluşturur
-Rseçeneğinde sabit hedef atlanırsa, uzak SSH sunucusunda bir SOCKS proxy oluşturulabilir.- Temel komut yapısı şöyledir.
ssh -R [bind_address:]port [user@]gateway_addr
- Uzak gateway sunucusu, belirtilen portta SOCKS bağlantılarını bekler.
- Proxy'ye gelen istekler SSH tüneli üzerinden istemci tarafına iletilir.
- Nihai hedefe bağlantı, SSH istemcisinin bulunduğu ağın bakış açısından kurulur.
- Bu sayede uzak sunucu, kullanıcının PC'sinin erişebildiği tüm ev ağına veya özel ağa erişebilir.
- Dinamik uzak yönlendirme için istemci tarafında OpenSSH 7.6 veya üzeri gerekir.
- Uzak SOCKS proxy'yi dış arayüzde yayınlamak için, normal uzak yönlendirmede olduğu gibi
GatewayPortsayarı gerekir.
Arka planda çalıştırma seçenekleri yalnızca tüneli açık tutar
- SSH bağlantısından sonra komut çalıştırmadan yalnızca port yönlendirmeyi sürdürmek için
-Nseçeneği kullanılır. - Tüneli arka plana almak için buna ek olarak
-fseçeneği kullanılabilir. - Türlere göre örnekler şöyledir.
ssh -f -N -L ...
ssh -f -N -R ...
ssh -f -N -D ...
- Otomasyon veya uzun süreli çalışma ortamlarında, tünelin kapanması, yeniden bağlanma ve arıza algılama yöntemleri ayrıca planlanmalıdır.
Komutlar portun açıldığı yere göre ayrılır
ssh -L, yerel SSH istemcisinde yeni bir port açar.ssh -R, uzak SSH sunucusunda yeni bir port açar.ssh -D, yerel SSH istemcisinde bir SOCKS proxy oluşturur.- Hedef belirtilmeden kullanılan
ssh -R, uzak SSH sunucusunda bir SOCKS proxy oluşturur. - Komutları akılda tutmak için temel kural şöyledir.
-L = local:remote
-R = remote:local
- İki noktanın solundaki adres ve port, yeni açılan dinleme noktasıdır.
local, SSH istemcisinin kendisini veya istemcinin erişebildiği iç bir makineyi ifade edebilir.remote, SSH sunucusunun kendisini veya sunucunun erişebildiği başka bir iç makineyi ifade edebilir.
Sonuç
SSH tünelleri erişim yönüne göre seçilir
-
Uzak bir servisi kendi PC'nizde kullanmak için yerel yönlendirme
-Lkullanın. -
Kendi PC'nizi veya iç servislerinizi uzak sunucu tarafına açmak için uzak yönlendirme
-Rkullanın. -
Uzak ağdaki birden fazla hedefe esnek şekilde erişmek için dinamik yerel yönlendirme
-Dkullanın. -
İstemci tarafındaki tüm ağa uzak gateway üzerinden esnek erişim sağlamak için, hedefi belirtilmemiş dinamik uzak yönlendirme
-Rkullanın. -
SSH tüneli tasarlarken önce şu noktalar kontrol edilmelidir.
- Yeni portun nerede açılması gerektiği
- Nihai hedefe erişebilen makine
GatewayPorts, firewall ve SSH erişim yetkisi ayarları- Dışa açmanın doğurabileceği güvenlik riskleri
-
Temel karar ölçütü, servisi hangi tarafta görünür kılmak istediğiniz ve hangi makinenin hedefe gerçekten erişebildiğidir.
Henüz yorum yok.