SSH
SSH (Secure Shell) güvenli veri iletimi için kriptografik ağ protokolüdür. Ssh ile ağa bağlı olan iki bilgisayar arasında veri aktarımı güvenlik kanalı üzerinden güvensiz bir ağda yapılır. Bu durumda ağda Ssh ile haberleşen makinelerden biri ssh sunucusu diğeri ssh istemcisi olur. Bu protokol şartları SSH-1 ve SSH-2 olmak üzere iki önemli sürüm üzerinden birbirinden ayrılır.
Ssh kabuk hesabına erişim için Unix ve benzeri işletim sistemlerinde protokolün en iyi uygulaması olarak bilinir, ama aynı zamanda Windows üzerindeki hesaplara erişim için de kullanılabilir. Ssh Telnet ve diğer uzaktan kabuğa erişim yapan güvensiz protokollerin (Berkeley rsh ve rexec protokolü gibi) yerine güvenli veri iletimini sağlaması için tasarlanmıştır.
Tanımlama
SSH uzaktaki makineye bağlanıp kimlik kanıtlaması yapmak için açık anahtarlı şifrelemeyi kullanır ve bu sayede kullanıcıya sistemi kullanmasına izin vermiş olur. SSH kullanmanın birçok farklı yolu vardır. Birincisi otomatik olarak açık-gizli anahtar çifti üretme ve parolayı kullanarak yetki sahibi olmak.
Diğeri ise kimlik kanıtlaması için açık ve gizli anahtar çiftini manuel olarak üretmek, bu durum kullanıcılara ya da programlara özel bir parola kullanmadan sistemde kimlik kanıtlaması yapmayı sağlar. Bu durumda açık ve gizli anahtarı üreten kişi birbiriyle eşleşen bir anahtar çifti (gizli ve açık ) üretmiş olur ve ürettiği gizli anahtarı kendinde muhafaza eder. Kimlik kanıtlaması yapılması gizli anahtara göredir ve gizli anahtar hiçbir şekilde ağ üzerinden başka bir yerdeki makineye gönderilmemelidir. SSH sadece makine üzerinde aynı kişiye ait gizli anahtara karşılık gelen açık anahtar olup olmadığını kontrol eder. SSH'ın tüm sürümlerinde açık anahtar geçerli sayılmadan önce bilinmeyen açık anahtarın doğrulanması önemlidir (açık anahtar sahibinin bilgisiyle ilişkilendirilmiştir).
Anahtar Yönetimi
Unix benzeri sistemlerde, kullanıcıların ev dizininlerinde uzaktaki makineye bağlanamaya izin veren yetkili açık anahtarlar depolanır. Ev dizininde depolandığı yer ise ~/.ssh/authorized_keys dosyasıdır. Açık anahtar uzaktaki makine üzerinde mevcut olduğunda ve yereldeki makinenin gizli anahtarıyla eşleşdiğinde, istemci gizli anahtarını açmak için olan anahtarı doğru girerse uzaktaki makinede kimlik kanıtlaması yapılmış olur.
Aynı zamandan gizli anahtar standart olarak belirli bir yerde bulunur. Eğer bu anahtarın makine üzerindeki yeri değiştirildiyse anahtarın tam yolu komut satırından belirtilmelidir. (ssh komutu için -i parametresi kullanılarak). ssh-keygen kullanıldığında ise her zaman bir açık ve gizli anahtar çifti üretilmiş olunur.
SSH aynı zamandan parola tabanlı kimlik kanıtlamayı destekler. Bu durumda saldırganlar parola sorulduğu için parolayı araya girerek bulmaya çalışabilirlerdi. Ancak bu sadece uzaktaki makinede daha önce hiç kimlik kanıtlaması yapılmadıysa geçerli olur. Sadece bir kez bile uzaktaki makinede kimlik kanıtlaması yapıldığında SSH bu parolayı hatırlar ve parola ile kimlik kanıtlaması geçersiz olur.
Kullanımı
SSH genellikle uzaktaki makinede oturum açma ve komut çalıştırma için kullanılır, fakat aynı zamanda tünellemeyi de destekler, TCP portları üzerinden taşınır ve X11 bağlantısı sağlar. SSH dosya gönderme işlemini SSH dosya transfer protokolü (SFTP) ya da güvenli kopyalama protokolüyle (SCP) yapar. SSH istemci-sunucu modelini kullanır. Standart TCP portu olan 22 SSH bağlantısı için atanmıştır.
SSH istemci programı genenllikle bağlantının kurulması için SSH'ı arka planda (daemon olarak) çalıştırır. SSH iki yayıgın işletim sistemi olan Mac OS X ve pek çok GNU/Linux dağıtımında, OpenBSD, FreeBSD, NetBSD, Solaris ve OpenVMS mevcuttur. Özellikle, Windows az modern olan masaüstü/sunucu işletim sistemlerinden biri olarak varsayılan olarak SSH içermez.
SSH, bulut bilgisayarların bağlanma problemini çözdüğü için önemlidir, bulut tabanlı sanal makinenin internette güvenlik konularında açığa çıkabilecek problemlerini de önler. SSH tüneli internet üzerinde sanal makinelere güvenlik duvarı (firewall) sayesinde güveli bir yol sağlayabilir.
Tarihçesi ve Gelişimi
Sürüm 1.x
Tatu Ylönen Finlandiya'daki Helsinki Üniversitesi'nde 1995'de araştırmacı olarak görev yapmıştır. Şimdi SSH-1 olarak bilinen protokolün ilk versiyonunu tasarlamıştır. SSH'ın amacı daha önceki rlogin, TELNET ve rsh protokollerinin (bu protokoller güçlü bir kimlik kanıtlama kuralı ya da gizliliği garantilemezler) yerine geçme olmuştur. Ylönen yaptığı çalışmayı ücretsiz olarak Temmuz 1995'de çıkardı ve bu yaptığı çalışma hızlıca popülerlik kazandı. İlerleyen zamanlarda 1995 sonlarına doğru, SSH kullanıcı sayısı 50 farklı ülkede 20000'lere ulaştı.
Aralık 1995'de ise, Ylönen SSH Communications Security'yi pazarladı ve böylece SSH geliştirdi. SSH yazılımının orijinal sürümü özgür yazılımların çeşitli parçalarında kullanıldı, örnek olarak GNU libgmp gibi, fakat sonraki sürümlerinde SSH Secure Communications'ı gittikçe artan patentli bir yazılım olarak geliştirdi.
2000'lere yaklaşıldığında 2 millyona yakın SSH kullanıcısı oldu.
Dikkate Değer Güvenlik Açıkları
1998'de SSH 1.5'de güvenlik açığı olduğu tanımlandı. Protokolün bu versiyonunda CRC-32 kullanıldı. Bu güvenlik açığı şifrelenmiş SSH akışına veri bütünlüğü korumasının yetersizliği nedeniyle yetkisiz girişler yapılabilmesiydi. SSH Compensation Attack Detector tarafından yapılan birçok düzeltmeler sunuldu. Bu işlem güncellemelerinin pek çoğu tam sayı taşma zayıflığı içerir, bu durum ise saldırganlara arka planda çalışan SSH'ın haklarıyla (genellikle yönetici olarak) isteklerine göre kod çalıştırmaya izin verir.
Ocak 2001'de başka bir güvenlik açığı saptandı, bu ise saldırganların Uluslararası Veri Şifreleme Algoritması (IDEA) ile yapılan şifrelemede son bloğu değiştirmeye izin veren bir güvenlik açığıydı. Aynı ayda belirlenen başka bir güvenlik açığı ise kötü amaçlı sunuculara istemci yetkilendirmesini başka bir sunucunun yapmasına izin veren bir açıktı.
OpenSSH ve OSSH
1999'da, geliştiriciler SSH'ın özgür yazılım olan halini istediler ve bu yüzden orijinal SSH programının 1.2.12 olan sürümüne (bu sürümü özgür yazılım olarak çıkmıştı) geri döndüler. Björn Grönvall daha sonra OSSH'ı bu kod tabanıyla geliştirdi. Kısaca bundan sonra, OpenBSD geliştiricileri Grönvall'ın kodunu çatalladı ve geniş ölçüde bunun üzerinde çalıştılar, OpenSSH oluşturuldu ve OpenSD'nin 2.6 sürümüyle birlikte çıktı. Bu sürümde, OpenSSH'ı diğer işletim sistemlerine taşımak için alan oluşturulmuş oldu. 2005 itibariyle, OpenSSH diğer işletim sistemlerinin büyük bir kısmıyla varsayılan olarak kurulu gelerek ve çok popüler olan SSH ile birleşerek tek uygulama oldu. Aynı zamanda OSSH ise artık kullanılmadı. OpenSSH'ın bakımı devam ediyor ve şimdi 1.x ve 2.0 sürümlerinin ikisinide destekliyor.
Sürüm 2.x
2006'da protokolün gözden geçirilmiş bir sürümü olan SSH-2 bir standart olarak kabul edildi. Bu sürüm SSH-1 ile bağdaşmayan bir sürümdü. SSH-2 güvenliği ve gelişmiş özellikleri SSH-1'in üzerindeydi. Artık daha iyi bir güvenliğe sahipti, örneğin Diffie-Helman anahtar değişimi ve mesaj üzerinden yetkilendirme kodları ile güçlü bir bütünlük kontrolü sağladı. SSH-2'nin yeni özelliği tek bir SSH bağlantısının üzerinde bir grup kabuk oturumu çalıştırmadır. SSH-2'nin üstünlüğü ve SSH-1'den fazla olan popülerliği nedeniyle bazı uygulamalar (Lsh ve Dropbear) sadece SSH-2 protokolünü destekler.
Zayıflıkları
Kasım 2008'de, SSH'ın tüm sürümlerinde teorik bir güvenlik açığı fark edildi. Bu şifrelenmiş metnin bir bloğundan düz metnin 32 bit üzerinde bir düz metin dönüşümüne izin veren bir güvenlik açığıydı.
OpenSSH
Bu durumda Standart OpenSSH yapılandırmasını kullanarak, saldırganların başarı olasılığı düz metnin 32 bitlik dönüşümü içindi. OpenSSH 5.2 ise bu tür güvenlik açıklarına karşı davranışları değiştirilmiş bir şekilde çıkarıldı.
Kullanıldığı Yerler
SSH birçok platform için kullanılabilen bir protokoldür, bu platformlardan pek çoğu Unix türevleridir, bunun yanı sıra Microsoft Windows tarafından da kullanılır. Bazı uygulamalar SSH sunucu ya da istemcileri ile uyumlu ya da sadece SSH'da mevcut olan özelliklere ihtiyaç duyabilirler. Örneğin SSH VPN'i uygulamak için kullanılabilir ama şu an sadece OpenSSH sunucu ve istemcisinin uygulaması mevcuttur.
- Uzaktaki bir makine üzerindeki kabuğa giriş yapmak için
- Uzaktaki bir makine üzerinde tek bir komut çalıştırmak için
- Güvenli dosya iletimi için
- rsync ile birleşiminden yedekleme yapma, dosyaların kopyalarını ya da yansılarını güvenli ve verimli bir şekilde almak için
- Bir portu tünellemek ya da sevk etmek için (bu VPN ile karıştırılmamalı, SSH paketleri farklı ağlar arasında yönlendirir, ya da iki broadcast alanını birine köprüler)
- Tam teşekküllü şifrelenmiş VPN'i kullanmak için. Bu özelliği sadece OpenSSH sunucu ya da istemcilerinin desteklediğine dikkat edin.
- Uzak makineden X'i ilerletmek için (birçok ara host sayesinde sağlanabilir)
- SSH istemcilerinin desteklediği SOCKS protokolü ile şifrelenmiş vekil bağlantısı sayesinde webi taramak için
- Uzak bir makine üzerinde dizinleri güvenli bir şekilde bağlamak için, yerel bilgisayarda kullanılan SSHFS gibi
- Yukarıda tartışılan bir ya da birkaç mekanizma sayesinde, uzaktaki makineyi izlemeyi ve sunucu yönetimini otomatikleştirmek için
- SSH'ı destekleyen taşınabilir ya da gömülü cihazların üzerinde geliştirme yapmak için
SSH Kullanarak Dosya İletim Protokolleri
SSH protokollünü kullanarak dosya iletimi için birçok yöntem mevcuttur.
- Güvenli kopyalama (SCP), bu protokol SSH üzerinde RCP'den geliştirilmiş
- rsync, SCP'den daha verimli olma niyetindedir
- SSH Dosya İletim Protokolü (SFTP), FTP'ye bir güvenlik alternatifidir (SSH üzerinde FTP ile karıştırılmamalıdır)
- Dosya iletimi 1998'de çıkan, bir kabuk üzerinden yapılırdı (FISH olarak da bilinir), Fish'de SSH üzerinden Unix kabuk komutlarından geliştirildi.
SSH Bağlantısı İçin Gerekli Olabilecek Bash Komutları
Genel Komutlar
- sudo (Root erişimi yetkisi için)
- apt-get (Paket Kurulumu)
- wget bulunduğunuz dizine download etmenizi sağlar
- ls Dizinde bulunan her şeyi listeler.
- ls -a Gizli dosyalar ve dizinlerle beraber listeler.
- ls -l Bütün dosyaları boyut ve tarihini göstererek listeler.
- tar -zxpf Uzantısı tar.gz olan sıkıştırılmış dosyaları açar.
- tar -xpf Uzantısı .tar olan dosyaları açar.
- gunzip Uzantısı .gz olan dosları açar.
- cp Dosyayı kopyalar.
- mv Bir dosyayı başka bir dizine taşımanızı sağlar ya da dosya adını değiştirir.
- mkdir Yeni bir dizin oluşturmanızı sağlar.
- rmdir Belirtilen dizini silmenizi sağlar.
- rm Dosya silmenizi sağlar.
- rm -rf Dizin silmenizi sağlar.
- cd Belirtilen dizine geçmenizi sağlar.
- cd .. Bir üst dizine geçmenizi sağlar.
- cd / En üst dizine çıkmanızı sağlar.
- cd ~ kullanıcının ev dizinine geçmenizi sağlar.
- pwd O anda bulunduğunuz dizini görüntüler.
- pico Belirtilen dosyayı text editör ile düzenlemenizi sağlar.
- ftp Belirtilen siteye FTP bağlantısı sağlar.
- lynx Belirtilen siteyi görüntüler.
- df Harddisk istatistiklerini gösterir.
- quota Disk kullanımınızı gösterir.
- uname İşletim sisteiminin durumunu gösterir.
- whoami Kendi bilgilerinizi gösterir.
- who Sunucuya bağlı olanları gösterir.
- last Hesabınıza yapılan en son bağlantıyı gösterir.
- whereis Belirtilen dosyanın nerede olduğunu gösterir.
- BitchX IRC programını çalıştırır.
- mail Postalarınızı kontrol eder.
- ps -x Sizin çalıştırdığınız işlemleri gösterir.
- ps -a Sunucuda çalıştırılan tüm işlemleri gösterir.
- ps -ux Çalıştırılan işlemlerin CPU/RAM kullanımıyla gösterir.
- kill Pid numarası verilen işlemi durdurur.
- kill -9 Pid numarası verilen eggdrop işlemini durdurur.
- killall Belirtilen program türündeki tüm işlemleri durdurur.
- whatis Belirtilen komutun açıklamasını verir.
- man Komut hakkında yardım görüntüler
- passwd Shell hesabınıza girerken kullandığınız şifreyi değiştirmenizi sağlar.
- vhosts ya da vhost Sistemde bulunan vhostları (virtual host) listeler.(BNC için kullanabilirsiniz)
- ROOTMAKİNADAN İP ÖĞRENME: ip addr
- ROOTTA HESAP AÇMAK : adduser login & chown mavigok /home/login & passwd pass1 , passwd pass2
- reboot: Sunucuya restart atar
- service mysql restart: mysql restart atar
- service httpd restart: apache ye restart atar
- service httpd stop : Sitelere ulaşımı kapatır
- apf -d ipadresi : verilen ipe ban atar
- service apf restart : apf ye restart atar
- netstat -n : sunucuya baglanan ipleri gösterir
- netstat -a sunucuya baglanan reseller ipleri gösterir(Proxy kullanmanız fark etmez her zaman gercek cıkış ipi görünür)
- pico : ssh üzerinden text editor ile dosya içeriğini görme ve düzenlemeye yarar.
- top : Sistem cpu kulalnımını gösterir.
- uptime : Uptime Durumu
Dosya İndirme
wget http://www.baskoylu.net/test.rar
IP Adresi Yasaklama
*iptables -A INPUT -s 85.159.54.48 -j DROP
IP Adresi Yasak Kaldırma
*iptables -X INPUT -s 85.159.54.48 -j DROP
Sunucuya Dosya İndirme
*wget http://www.indirilecek-dosya-adresi.com/ornek-dosya.rar
ZIP dosyasını çıkartma/açma
*unzip dosya.zip
TAR.GZ dosyasını çıkartma/açma
*tar -xvsf dosya.tar.gz
GZIP dosyasını çıkartma/açma
*gunzip dosya.tar.gz
Dosya Sıkıştırmak
*tar cvzf dosyam.tar.gz sıkıştırılacak-dosya
SQL Yükleme
*mysql -h dbname -u dbuser -p dbpasword < dbname.sql
Dış bağlantılar
- SSH.com
- OpenSSH
- Tunnelier & WinSSHD (SSH-Client und Server)
- lsh
- OpenSSH for Windows
- PuTTY
- WinSCP
- Jsch (Java SSH2 Client)
- Ganymed SSH2 (Java SSH2 client library)