Kurduğumuz linux sunucumuzun güvenliğini sağlamak adına olmazsa olmaz adımlardan biri şifre ile erişimi iptal edip SSH Key ile bağlanmaktır. Sunucuya şifre ile girişi pasif hale getirerek sadece SSH Key‘imizle girişe izin vereceğiz. Bu sayede brute-force (tahminle şifre kırma) girişimlerinin büyük oranda önüne geçmiş olacağız.

SSH Nedir?

Secure Shell’in kısaltması olan SSH, kullanıcıların sunucularını internet üzerinden kontrol etmelerini sağlayan ve sunucuya giden/gelen iletişimlerin güvenli bir şifreleme tekniği ile saklanmasını sağlayan bir uzak yönetim protokolüdür.

Biz de bu güvenli protokolü kullanmak adına sunucumuz için SSH Key’ler oluşturacağız ve alfa-nümerik şifreler yerine oluşturduğumuz bu keyler ile bağlantımızı gerçekleştireceğiz.

SSH Key Oluşturalım

Bir önceki yazıda PuTTY’i indirmiş ve kurduğumuz sunucumuza başarıyla bağlanmıştık. Şimdi yine aynı programın dosya konumunda SSH Key’lerimizi oluşturmamıza yarayan puttygen.exe isimli programı açıyoruz. C:\Program Files\PuTTY\puttygen.exe Bilgisayarımızdan bu konuma gidiyoruz, puttygen.exe uygulamasına çift tıklıyoruz. Aşağıdaki görsel serisindeki adımları uygulayacağız:

  1. Birinci resimde; programı açtıktan sonra sadece Key menüsündeki seçeneklerden SSH-2 RSA key olmasına dikkat edin.
  2. İkinci resimde; key’inizi oluşturmak için “Generate” butonuna tıklayın ve imlecinizi program penceresi üzerinde gezdirin (bu hareket bir güvenlik önlemidir).
  3. Üçüncü resimde; artık key’leriniz oluşturulmuştur. Yapmanız gereken public ve private key’lerinizi bilgisayarınıza kaydetmektir. Public key’imizi siyah çerçeve içine aldığım kısmı kopyalayarak bir not defterine public-key adıyla kaydedin. Kırmızı çerçeve içerisine aldığım alanda key comment kısmına dilediğiniz bir isim verin, bu public key’inizin kısa açıklaması niteliğinde olacaktır. Türkçe karakter ve boşluk kullanmayın. Key passphrase kısmına kısa bir şifre belirleyebilirsiniz. Bu çok gerekli değildir, eğer bir key passphrase şifresi belirlerseniz ssh key ile sunucunuza bağlanırken key dosyanızın yanında bu şifreyi de girersiniz. Ayrıca bu işlemleri bitirdiğinizde FTP erişimi sağlarken de key passphrase şifresi isteyecektir. Bu kişisel olarak güvenliğinize ekstra katkı sağlar. Save private key butonu ile de private key’imizi bilgisayarımıza kaydedelim.
  4. Dördüncü resimde ise kaydettiğimiz key dosyaları kullanıma hazır vaziyette bir sonraki uygulayacağımız adımı beklerler. Burada özellikle bilgisayarımızda saklayacağımız private key dosyasını özel bir yere saklayın. Bu sizin sunucuya girmek için kullanacağınız özel anahtarınızdır. Buradaki public key dosyası ise sunucuya bizim özel anahtarımızı tanıtacağımız herkese açık key dosyasıdır.

Public Key’i Sunucya Tanımlayalım

Bunun için FTP ile sunucumuzdaki dosyaların barındığı alana gidelim. FileZilla veya WinSCP kullanabilirsiniz:

Sunucu: ip.adresiniz 
Kullanıcı Adı: root
Parola: root şifreniz (UNIX password)
Kapı Numarası: 22

FTP ile giriş yaptıktan sonra /root/.ssh/authorized_keys konumuna gidin. Eğer root klasöründe .ssh klasörü ve içinde authorized_keys dosyası yok ise bunları kendiniz oluşturun. authorized_keys dosyasını bir editör programı ile açın ve içine yukarıda siyah çerçeve ile belirttiğim public-key‘ini yapıştırın ve kaydedin. Burada dikkat etmeniz gereken kısım; public-key dosyasının içindeki yazıları authorized_keys dosyasına aşağıdaki resimdeki gibi tek satır halinde yapıştırmış olmanızdır.

Artık key oluşturma ve key’imizi sunucuya tanıtma işlemlerimiz bitti. Şimdi PuTTY üzerinden SSH Key ile sunucumuza bağlanabiliriz.

SSH Key İle PuTTY Üzerinden Sunucuya Bağlanma

Bunun için kendi tarafımızdaki alana (PC) private-key dosyasını tanıtmamız gerekiyor ki sunucu tarafına tanıttığımız public-key dosyası ile etkileşim kurabilsin. Birbirini tanısın ve doğrulasın. Ardından şifresiz erişime izin versin.

PuTTY Configuration

Bunun için PuTTY programını açın. Soldaki hiyerarşiden Connection > SSH > Auth kısmına gelin. Buradaki “Browse” butonuna tıklayarak bilgisayarımıza kaydettiğimiz private-key.ppk dosyasını seçin. Ardından tekrar ilk açılıştaki Session sekmesine geçerek İP Adresi yazılan kısma İP Adres’inizi girin ve “Open” deyin. Şimdi açılan konsol ekranında kullanıcı adınızı (root) yazın. Eğer bir key passphrase belirlediyseniz root yazdıktan sonra sizden bunu isteyecektir. Ve artık sunucumuza SSH Key ile bağlanmış olduk. Tebrikler. 😉

Her seferinde bu dosyayı göstermek istemiyorsanız, önce dosyayı “Browse” kısmında bir kere seçtikten sonra soldaki hiyerarşiden Session sekmesine gelin. Burada ki Saved Sessions kısmından Default Settings‘e tıklayın ve sağdaki Save butonuna tıklayarak ayarları kaydedin.

Sunucuya Şifre İle Erişimi İptal Edelim (Sadece SSH Key İle Bağlanma)

Bütün bu yaptığımız işlemlerin ardından artık şifre ile (UNIX password) sunucuya erişimi iptal edelim ki bu yaptığımız şeylerin bir anlamı olsun. 😉

Şimdi tekrar FTP ile sunucumuza bağlanalım (eğer ssh key oluştururken key passphrase şifresi belirlediyseniz FTP’ye bağlanırken tek seferliğine bu şifreyi isteyecektir) ve /etc/ssh dizinine gidelim. Buradaki sshd_config dosyasını düzenleyelim:

Not 1: Aşağıdaki komutlarda üstü çizili değerleri silerek yerine yanındaki değerleri yazın. Üstü çizili değerler sshd_config dosyasındaki varsayılan değerlerdir. Bu komutların başında # işareti varsa kaldırın.

LogLevel INFO VERBOSE
ChallengeResponseAuthentication yes no
PasswordAuthentication yes no

Not 2: Bu kısımda yapacağınız değişiklikler sunucuyla olan iletişiminize etki edecektir. Kullanıcının yapacağı herhangi bir yanlışlıktan dolayı tarafım sorumlu tutulamaz. Sadece belirtilen yerlerde değişiklik yapılmalıdır.

Dosyayı kaydedelim ve yaptığımız değişikliklerin aktif olması için PuTTY ile sunucumuza bağlanıp aşağıdaki komutu yazarak sshd servisini yeniden başlatalım:

service sshd restart

Evet, artık tüm bu işlemlerin ardından sunucumuza şifre ile erişimi iptal ederek sadece oluşturduğumuz SSH Key’lerimiz üzerinden erişim sağlayabileceğiz. Root şifresi (UNIX password) ile sunucuya bağlanmaya çalışıldığında konsol ekranı aşağıdaki uyarıyı verecektir:

PuTTY terminal screen

UNIX password, yani sunucumuza önceden erişim sağladığımız root şifresi ile FTP erişimi sağlamaya devam edebilirsiniz.

Neler Yaptık?

Sonuç olarak, yaptığımız bu işlemlerin ardından sunucu güvenliğimizi belirli bir seviyede yukarı çıkarmış olduk. Bu işlemler özellikle sunucumuzda tahminle şifre bulma (brute-force) ataklarının önemli ölçüde önüne geçmiş olacaktır. Yazıda da bahsettiğimiz gibi bu noktadan sonra private-key ve public-key dosyalarının önemli olduğunu unutmayın. private-key sunucunuz adına evinizin anahtarı niteliğinde bir öneme sahiptir. Kaybetmeyin. 🙂

Bu yazıyla birlikte çok detaylı konuları geride bırakmış olduk. Serinin devamında hızlı bir şekilde sunucuyu bir panele (VestaCP) bağlayarak panel kullanımına ve ardından site ekleme, yönetme gibi konulara değineceğiz. Kendi geminizin kaptanı olmak için bir sonraki yazıya geçebilirsiniz. 😉

Takıldığınız yer veya sormak istediğiniz bir şeyler olursa yorum yapmaktan çekinmeyin. Okuduğunuz için teşekkür ederim.

Seri YazılarıÖnceki: ← VPS sunucusu nedir? Nasıl kurulur? (Linux)Sonraki: → VPS sunucusuna hosting kontrol paneli kurulumu (VestaCP)

Write A Comment