9 Mayıs 2013 Perşembe

SSH Hakkında

Bu yazım LPI-102 sınavı için hazırlandığımız konulardan SSH yapılandırması hakkında bir yazı olacak.

SSH'a direk dalmadan önce Telnet'ten bahsetmek gerekir tabi. Telnet, Unix ve Linux sistemlerde uzaktan oturum açmak için kullanılan bir protokol. Dezavantajı: Tüm akan veri ağ üzerinden şifresiz aktarılıyor. Bu da ağ trafiğinin izlenebileceği, hassas verilere ulaşılabileceği anlamına geliyor.

Burada SSH devreye giriyor(Secure Shell/Güvenli Kabuk). Ağ bağlantısının tüm parçaları için güçlü şifreleme teknikleri ile güvenlik açığını kapatıp kullanıcılara daha güvenli bir protokol olmuş. Ayrıca SSH ile dosya transferi de yapılabilir.

Sistemde SSH Seçeneklerini Ayarlamak için;

SSH çoğunlukla kurulu olarak gelir. Değişiklik yapmak istersek, erişimi sınırlamak ya da dosya düzenleme vs. /etc/ssh/sshd_config dosyasına bakmamız gerekir.

Temel SSH Özelliklerinin Yapılandırılması:

  /etc/ssh/sshd_config dosyası seçenek satırlarından oluşur.Kitapta bahsedilen birkaç seçeneği ben de yazayım.

protokol  : Bu seçenekte protokol seviyeleri belirtiliyor(1 ya da 2 değerini alabiliyor) her iki seviyeyi destekleyecek şekilde de yapılandırabilirsiniz.(1,2 a da 2,1 eşdeğerdir)

PermitRootLogin no/yes : root ile uzaktan bilgisayara erişime zin olup olmadığını belirtir.İlave güvenlik için varsayılan no'dur.

X11Forwarding : Bu seçenek OpenSSH'ın tünel özelliklerinin olup olmaığını belirtir.

Ek seçenekler hakkında daha fazla bilgi için: .sshd_config man sayfasına bakın.

Değişiklik yaparsanız SysV başlangıç komut dosyası ile yeniden başlatmanız gerekir.

SSH Anahtarları:

Her kullanıcının ve her sunucunun, sistemini tanımlamak amacıyla benzersiz bir  numarası ve ya anahtarı vardır.

Bir genel bir de özel anahtardan oluşur.Bu iki anahtar matematiksel belirli bir ortak anahtarla şifrelenir. Veriler sadece eşlenen özel anahtarlar ile deşifre olabilir.
Bir bağlantı kurulurken her iki tarafın da genel anahtarları gönderilir.Sonra her ik tarafın ortak anahtarı ile karşıya gidecek veriler şifrelenir.Sadece alıcı özel şifresi ile veriyi deşifre edebilir.

OpenSSH sunucusu, SysV başlatma komutu ile saklanan ortak ve özel anahtarları arar ve yoksa üretir.
Toplamda 4-6 anahtara ihtyaç vardır: 2 ya da 3 tanesi şifreleme aracı SSH için genel ve özel anahtarları destekler.Bu anahtarlar genellikler /etc/ssh 'da saklanır. ".pub" uzantılı dosyalar genel anahtarları içerir. 
 
Ssh-keygen aşagıdaki komutlarla anahtar luşturur:

# ssh-keygen -q -t rsa1 -f /etc/ssh/ssh_host_key -C ‘’ -N ‘’
# ssh-keygen -q -t rsa -f /etc/ssh/ssh_host_rsa_key -C ‘’ -N ‘’
# ssh-keygen -q -t dsa -f /etc/ssh/ssh_host_dsa_key -C ‘’ -N ‘’

-t anahtar tipini belirtmek için.
-C yorum
-N yeni parola

Özel anahtar dosyalarının uygun korumada olduklarından emin olun(dosya izinleri 600 olmalı: -rw------)
Genel anahtarlar herkes tarafından okunabilir olmalı.

SSH Erişim Kontrolü:

Ssh erişimi en temel olarak parola kimlik doğrulaması üzerinden gerçekleşir.Telnet'in de yaptığı gibi bir kullanıcı adı ve bir parola verilir.Parola doğrulamanın ötesinde, SSH bazı sınırlamaları destekler:

TCP Wrappers: Eğer bir sunucuda SSH çalıştırdıysanız ya da TCP Wrappers desteği ile sunucu derlendiğinde IP adreslerine göre erişimi sınırlamak için /etc/host.allow ve /etc/host.deny dosyalarını kullanabilirsiniz.Bu destek mevcut olabilir/olmayabilir.

Firewalls: Tüm sunucularda olduğu gibi, bir güvenlik duvarı kullanarak erişim kısıtlanabilir.SSH, TCP kullanır port 22.

SSH Yoluyla Dosya Kopyalama:

SSH'da dosya kopyalama komutu :scp. Bu komut yerel dosyaları kopyalamak için cp komutu gibi çalışır.Ancak hedef dosya adı önce, isteğe bağlı olarak kullanıcı adı ve zorunlu hedef bilgisayar belirtilmelidir.

Örnek:

ayse.gmail.com üzerinde ali hesabına deneme.c için :

$ scp deneme.c ali@ayse.gmail.com:

(:) yı unutursak scp, cp gibi çalışır. Dosyanın adını değiştirmek istersek : 'dan sonrayeni dosya adını yazmalıyız.

 
Parola Olmadan Girişleri Yapılandırma:

Eğer SSH'ı ya da otomatik araçları sıklıkla kullanıyorsanız ve sürekli parola yazmak istemiyorsanız bunun yolu:
Anahtar kullanarak Ssh istemcisi kurmak ve sunucu bilgisayar için ortak bir anahtar vermek.Bu yapılandırma ile parola yazmanıza gerek kalmaz. İstemci bilgisayar bunu sizin için kendisi belirler.


Not:
SSH' ı parola kullanmadan çalıştırmak için yapılandırma uygundur ancak güvenlik riski artar. Eğer birisi SSH istemci sisteminde hesabınıza erişirse, SSH sunucusuna da girişi mümkün olacaktır. Bu nedenle çok iyi korunan bir istemciden şifresiz giriş oluşturmalısınız.Bu şekilde yapılandırma root erişimi nedeniyle risklidir.

Parola gerektirmeyen yapılandırma için şu adımları izleyin :

1. Uzaktan erişimi yapacak kullanıcı olarak SSH istemci sistemine giriş.

2.sürüm 2 SSH anahtarı oluşturmak için aşağıdaki komutu yazın:
$ ssh-keygen -q -t rsa -f ~/.ssh/id_rsa -C ‘’ -N ‘’

3.adım2 de iki dosya oluşur: Id_rsa ve Id_rsa.pub . Kullanışlı herhangibir şekilde bu iki dosyayı SSH snucu bilgisayarına transfer edin-- disk üzerinden, scp ile ya da herhangibir başka yol--

4.Sunucu sistemine giriş yapın.SSH kullanıyorsanız parolanızı yazmanız gerekir.

5.Sadece ~/.ssh/autorized_keys dosyasını transfer ettik.İçeriği ekleyin.(Bu dosyaları kontrol etmelisiniz.Bazen ismi ~/.ssh/autorized_keys2 olabiliyor.)Eğer Orijinal dosya ~/temp.rsa olarak depolandıysa cat ile ~/temp.rsa >> ~/.ssh/authorized_keys bu işi yaparız.

İki bilgisayar otomatik olarak kimlik doğrular. Parola gerekmez.

SSH Agent Kullanımı:

Başka bir SSH kimlik doğrulama programıdır.Bu program bağlantıları başlatmak için bir parola gerektirir. Bu yüzden daha güvenli.Kullanmak için adımlar:

1.Parolasız giriş yapılandırmasının aynısı.1 şey farklı: -N parametresini yoksayın. Parola istenecek.Bu parola ssh-agent ile yönetilen tüm ssh giriş için anahtar olacak.
2.ssh istemci sistemi, türü ssh-agent /bin/bash . Ssh-agent başladığında /bin/bash de çalışmaya başladı.Sonraki ssh grişi için bu bash oturumunu kullanacağız.
3.yeni çekirdek, türü ssh_add ~/.ssh/id_rsa. Bu, ssh-agent tarafından yönetilen ayarlar için RSA anahtarı ekler.SSH şimdik parola yazmanızı işter.

Bu noktadan itibaren SSH size uzak bir sisteme bağlanmak için genel anahtar verdi.Parolaya ihtiyaç yok.Oturumdan çıkıldığında 2 ve 3. adım tekrarlanmak zorunda.


SSH Port Tünelleri Ayarlama:

SSH tünelinin temel fikri: Sunucu bilgisayar 2 sunucu program ile çalışır: tünel protokolü için bir sunucu (ınternet mail access protokol, İmap) ve ssh sunucusu.Tünel protokolü için SSH istemci de bağlantıları dinler.
Ssh istemcisi, tünel protokol istemcisinden bir bağlantı aldığında , tünel protokolü bağlantısı ssh kullanarak şifrelenmiş olur.Böylece veri şifrelenmiş biçimde, ağ üzerinden hedef protokol şifrelemeyi desteklemiyor olsa bile hedef sunucuya yönlendirilebilir.


Tabi tüm bunlar özel yapılandırma gerektirir.Sunucuda varsayılan yapılandırma tünel özelliğini sağlar.Ama emin olmak için, /etc/ssh/sshd_config dosyasını kontrol etmek gerekir.:
AllowTcpForwarding no ise yes olarak değiştirin.Eğer mevcut değil ya da zaten evet olarak ayarlıysa değiştirmek gerekmez.

İstemci tarafında, sunucu bilgisayara özel bir ssh bağlantısı kurmak gerekir. Normal ssh istemci programı ile bunu yapabiliriz. Ama birkaç parametre gerekir.

Örneğin:

#ssh -N -f -L 142:mail.ali.edu:143 ayse@mail.ali.edu

-N ve -f uzak bir komut çalıştırmak için değil.(n şifre sorar, f arka planda çalışması için)

Bu seçenekler tünel için gereklidir. -L herhangibir yerel bağlantı noktasını dinlemek için. (hangi uzak bilgisayar olacağı ve uzak bilgisayar noktasına bağlanmak için)

Örnekte, yerel bağlantı noktası 142, dinler ve mail.ali.edu üzerinde 143 bağlantı noktası bağlanır.
Her iki uçta da aynı bağlantı noktası kullanılabilir. Son parametre ayse@mail.ali.edu : Bir uzak kullanıcı adı ve bilgisayarın hangi tünele gireceğini belirtmek için.

Kolay gelsin..