Temmuz 21, 2009

Reverse SSH ile Güvenlik Duvarlarını Aşın



Problem

Bir çok kurumsal şirket, güvenlik duvarlarıyla kurum içindeki bilgisayarlara dışarıdan erişimi kısıtlar. Örneğin, şirket bilgisayarı dışarıdaki sunuculara HTTP, FTP bağlantıları yapabilir ama eğer siz şirketteki bilgisayarınıza ofis dışından erişemezsiniz. Bu sorunun bulunduğu bir ağı şu şekilde şematize edebiliriz.


Çözüm

Bu sorunu çözmek için bazı şirketler VPN kullanmaktadır ama her şirket bunu sağlamadığı için burada reverse(ters) ssh ile ofisteki bilgisayarınıza nasıl erişebileceğiniz anlatacağım.

Teorikte bu problemi çözmek için ilk önce ofis bilgisayarından ev bilgisayarına ssh bağlantısı kurulur. Bu ssh bağlantısı üzerinden ev bilgisayarından ofis bilgisayarına yeni bir bağlantı kurulur. Yeni kurulan bağlantı mevcut ssh bağlantısı üzerinden olacağı için, firewall bunu içeri gelen yeni bir bağlantı olarak algılamayacaktır.




Örnek 1

Ev bilgisayarınıza ssh sunucusu kurulu olduğunu ve bu ssh sunucusunun dışıarıdan erişilebilir olduğunu varsayıyorum. Ip bilgileri şu şekilde olsun;

Ev IP: 88.xx.xx.xx
Ofis IP: 89.xx.xx.xx

Ofis Bilgisayarınızdan ev bilgisayarınıza ssh bağlantısı kurmanız gerekiyor.
ssh -R 2210:localhost:22 88.xx.xx.xx
-R 2210:localhost:22 parametresi ile bağlandığınız makinanın 2210 portu sizin şu an kullandığınız makinanın(localhost) 22 portuna yönlendirilir. Bu şekilde, ev bilgisayarınızda 2210 numaralı bir port açılacak ve siz evden 2210 portuna ssh ile bağlanmaya çalıştığınızda ofisteki bilgisayarınızın ssh sunucusuna bağlanmış olacaksınız.
Aşağıdaki komutu ev bilgisayarınızda çalıştırmanız gerekiyor.
ssh -p 2210 localhost
Bu komut ile ofisinizdeki ssh sunucusuna bağlanacaksınız.

Örneğin ofis bilgisayarınızda bir vnc sunucusu kurulu ve siz bu vnc sunucusuna erişerek ofis bilgisayarınızı yönetmek istiyorsunuz.
Bu durumda ofis bilgisayarında şu komutu çalıştırmanız gerekiyor.
ssh -R 5901:localhost:5900 88.xx.xx.xx
Ev bilgisayarınızda ofis sunucuza erişmek için artık vnc istemcisini kullanabilirsiniz.
vncviewer localhost:1

Örnek 2

Örnek 1'de verilen örneklere göre, aradığınız ofis arkadaşlarınızdan birinin sizin makinanıza giriş yapıp ev bilgisayarınıza ssh bağlantısı kurması gerekiyor. Bunun üstesinden de şu şekilde gelinebilir. Siz ofisten çıkmadan önce, ofis bilgisayarınızdan dışarıdaki bir sunucuya ssh bağlantısı yaparsınız ve ev bilgisayarınız ile bu dışarıdaki sunucuya bağlanırsınız. Dışarıdaki sunucu ip adresi, 90.xx.xx.xx olsun. Bahsettiğim işleyiş şu şekilde şematize edilebilir.

Ofis bilgisayarınızda vnc kurulu olsun ve siz evinizden vnc sunucusuna erişmek istiyorsunuz. Normal koşullarda, -R parametresi ile sunucuda açacağınız portu sadece localhost dinler. Oysa bu örnekte sunucu dışarıdan (ev bilgisayarınızdan) gelecek olan bağlantıları da kabul edeceği için ssh sunucusunun ayarlarında değişiklik gerekiyor. /etc/ssh/sshd_config dosyasına şu satırı eklemek gerekiyor.
GatewayPorts clientspecified
Ve ssh sunucusunu yeniden başlatın. Bu ayarı yaptıktan sonra bağlantıyı sağlayabiliriz.

Ofis bilgisayarınızdan sunucuya bağlantı kurmanız gerekiyor.
ssh 90.xx.xx.xx -R 90.xx.xx.xx:5901:localhost:5900

Artık tek yapmanız gereken ev bilgisayarınızdan sunucunuza vnc istemcisi ile bağlanmak.
vncviewer 90.xx.xx.xx:1

7 yorum:

Adsız dedi ki...

Cok guzel bir bilgi. Muhtemelen artik siklikla kullanirim. Tesekkur

Adsız dedi ki...

Bu SSH hakkaten başa bela :)

Çağrı dedi ki...

Dikkat et Necati de reverse shelli kaptırma :) Istsec'de güzel bir sunum vardı bu iş için :)

Tayfur Taybuğa dedi ki...

Aydınlatıcı bir yazı, ayrıca grafikleri ne ile hazırladığınız yönünde bilgi verebilir misiniz?

Necati DEMiR dedi ki...

"ayrıca grafikleri ne ile hazırladığınız yönünde bilgi verebilir misiniz?"

Grafikleri dia ile hazırladım.

Tayfur Taybuğa dedi ki...

Teşekkürler..

M.Kemal YENİGÜN dedi ki...

slm merhaba ssh -p 2210 localhost
windowsda çalışıyormu ben denedim ama olmadı. ssh iç yada dış komut çalıştırabilri pprogram yada komut dosyası oalrak tanınmıyor dedi.
@çağrı ayrıca itsecdeki ilgili sunum varsa elinde paylaşabilrmisin.