Güvenlik rehberi
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

10 KiB

SSH Güvenliği

Günlük hayatımızda uzak sunucunuza bağlanıp belirli işlemler yapmanız gerekebilir. Bu tarz durumlarda çoğunlukla uzak sunucuya bağlanmak ve uzak sunucuda komut çalıştırmak için SSH kullanılabilir.

SSH Anahtarı Üretimi

SSH ile uzak suncunuza bağlanırken sürekli kullanıcı adı ve parola girmemek için bir SSH anahtarı sahibi olmanız gerekmektedir. SSH anahtarları RSA algoritması kullanılarak üretilir. Anahtar boyutu 1024 ile 4096 bit uzunluğu arasında olabilir. Ancak her zaman için anahtar boyutunu maksimum büyüklükte seçmek en doğru tercih olacaktır. Yine anahtarınızın bir parola ile korunması zorunlu değildir ancak bu durumda anahtar dosyanızın çalınması durumunda tüm mahremiyetinizi yitirebilir, sunucunuzun kontrolünü başkasına kaptırabilirsiniz. Bu yüzden güçlü bir parolaya sahip olmanız yerinde olacaktır. Güçlü bir parola belirlemek hakkında fikriniz yoksa Parola Rehberini inceleyebilirsiniz. Yeni bir anahtar üretmek için;

  1. Uçbirimi açın
  2. Aşağıdaki komutu yapıştırın
  3. ssh-keygen -t rsa -b 4096 -C "emailadresiniz@mailsaglayiciniz.com"
  4. Aşağıdakine benzer bir çıktıyla karşılaşacaksınız.
Generating public/private rsa key pair.
Enter file in which to save the key (/home/kullanici/.ssh/id_rsa): [eğer ssh anahtarınızı farklı bir yere kaydetmek isterseniz kaydetmek istediğiniz konumu girin.]
Enter passphrase (empty for no passphrase): [anahtarınızın parola ile korunması için belirlediğiniz parolayı girin]
Enter same passphrase again: [parolayı tekrar girin.]
Your identification has been saved in id_rsa
Your public key has been saved in id_rsa.pub
The key fingerprint is:
SHA256:gl4MZiit+Fzaa5oUTgKB7O1+h+A8OqcfDbKsidGSIbk emailadresiniz@mailsaglayiciniz.com
The key's randomart image is:
+---[RSA 4096]----+
|=.               |
|oE   . +         |
|=oo o o *        |
|++.B * +         |
|*** = + S        |
|o* o O .         |
|*.* = .          |
| * E .         |
|*o+ o .          |
+----[SHA256]-----+

Tüm bu işlemlerden sonra belirttiğiniz dizinde bulunan bir SSH anahtar çiftine sahipsiniz.

SSH Anahtarının Sunucuya Aktarımı

Anahtarınızı kullanmak için sunucunuza aktarmanın bir kaç yolu vardır. Bunlardan en kolay ve en etkili olanı ssh-copy-id kullanarak anahtarlarınızı aktarmaktır. Aşağıdaki adımları takip edin.

  1. Uçbirimi açın ve aşağıdaki komutu girin
  2. ssh-copy-id kullanici@uzaksunucunuzunadresi
  3. Aşağıdakine benzer bir çıktı alacaksınız;
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/your_username/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
kullanici@uzaksunucunuzunadresi's password: [parolanızı girin]

İşlemlerden sonra SSH ile sunucunuza bağlanmayı deneyerek başarılı olup olmadığınızı anlayabilirsiniz. Karşınıza her zamankinden farklı bir çıktı geldiyse ve en önemlisi sunucunuza bağlanabilmeniz için karşınıza bir parola girme alanı gelmediyse başarılı olduğunuza kanaat getirebilirsiniz.

SSH Yetkilendirmesinin Yalnızca Anahtarlarla Sınırlandırılması

Parolalar genellikle tahmin edilebilir şeylerdir. Tahmin edilemeyecek kadar güvenli olsa dahi ele geçirilebilir veya kaba kuvvet saldırıları ile kırılabilir. Bu yüzden sunuculara yapılan bağlantılar doğrudan kullanıcı adı ve parola kullanarak yapılan bağlantılar yerine yalnızca SSH anahtarıyla yapılan bağlantılarla sınırlandırılabilir hatta sınırlandırılması tavsiye edilir. Varsayılan olarak SSH servisi (sshd) SSH bağlantısını hem sunucudaki kullanıcınızın parolasını kullanarak hem de SSH anahtarlarını kullanarak bağlantı kurulmasına izin verir. Bunu yalnızca SSH anahtarlarıyla sınırlandırmak için aşağıdaki adımları takip edin;

  1. Uçbirimi açın
  2. SSH ile sunucunuza bağlanın
  3. nano /etc/ssh/sshd_config ile sshd_config dosyasını düzenlemek için açın. Eğer root kullanıcısında değilseniz dosyayı değiştirebilmek için sudo kullanmayı unutmayın!
  4. Ctrl + W kombinasyonu ile aramayı açın PasswordAuthentication'ı aratın.
  5. PasswordAuthentication yes kısmını PasswordAuthentication no olarak değiştirin.
  6. Ctrl + O ile kaydedin, Ctrl + X ile nano uygulamasından çıkış yapın.
  7. sshd servisini yeniden başlatın. Sisteminize göre bu değişiklik gösterse de genellikle service ssh restart veya systemctl restart sshd.service komutlarından birisi bu işi yapacaktır.

Varsayılan Portu Değiştirme

SSH varsayılan olarak 22 portu ile gelir. Bu üçüncü kişiler tarafından istismar edilmeye imkan tanır. Örneğin eğer varsayılan portu değiştirmediyseniz kaba kuvvet saldırısı denemek isteyen birisi hiç zaman kaybetmeden denemeye başlayabilir. Ancak portunuz varsayılandan farklı olduğunda bu kişinin önce seçtiğiniz portu bulması gerekecek. Birçok kullanıcı 22 yerine 222 veya 2222 gibi portları seçer. Bunların tahmin edilmesi zor olmayan portlar olduğunu unutmayın. Bunun yerine 1917 veya 1871 gibi daha zor tahmin edilebilecek portları kullanabilirsiniz. Varsayılan portunuzu değiştirmek için aşağıdaki adımları takip edin;

  1. Uçbirimi açın
  2. SSH ile sunucunuza bağlanın
  3. nano /etc/ssh/sshd_config ile sshd_config dosyasını düzenlemek için açın. Eğer root kullanıcısında değilseniz dosyayı değiştirebilmek için sudo kullanmayı unutmayın!
  4. Ctrl + W kombinasyonu ile aramayı açın Port'u aratın.
  5. #Port 22 kısmını Port 1917 olarak değiştirin. (1917 yerine kendi seçtiğiniz portu girin)
  6. Ctrl + O ile kaydedin, Ctrl + X ile nano uygulamasından çıkış yapın.
  7. sshd servisini yeniden başlatın. Sisteminize göre bu değişiklik gösterse de genellikle service ssh restart veya systemctl restart sshd.service komutlarından birisi bu işi yapacaktır.
  8. netstat -tulpn | grep ssh komutuyla SSH servisinin çalıştığı portu kontrol edin. Aşağıdaki gibi bir çıktıyla karşılaşıyorsanız işlem başarıyla gerçekleşmiş demektir.
# netstat -tulpn | grep ssh
tcp        0      0 0.0.0.0:1917            0.0.0.0:*               LISTEN      916118/sshd: /usr/s 
tcp6       0      0 :::1917                 :::*                    LISTEN      916118/sshd: /usr/s 

Root Kullanıcısına Bağlantının Sınırlandırılması

Her hangibir şekilde istenmeyen bir kişi ssh anahtarınızı ve parolanızı ele geçirdiğinde sunucunuza zarar vermek isterse root kullanıcısına erişmesi durumunda normal bir kullanıcıdan çok daha fazla zarar verebilir. Bu nedenle root kullanıcısına bağlantıyı engellemek isteyebilirsiniz. Bunun için aşağıdaki adımları takip edin;

  1. Uçbirimi açın
  2. SSH ile sunucunuza bağlanın
  3. nano /etc/ssh/sshd_config ile sshd_config dosyasını düzenlemek için açın. Eğer root kullanıcısında değilseniz dosyayı değiştirebilmek için sudo kullanmayı unutmayın!
  4. Ctrl + W kombinasyonu ile aramayı açın PermitRootLogin'i aratın.
  5. PermitRootLogin yes kısmını PermitRootLogin no olarak değiştirin.
  6. Ctrl + O ile kaydedin, Ctrl + X ile nano uygulamasından çıkış yapın.
  7. sshd servisini yeniden başlatın. Sisteminize göre bu değişiklik gösterse de genellikle service ssh restart veya systemctl restart sshd.service komutlarından birisi bu işi yapacaktır.

Normal Kullanıcı İle Bağlanma Ve Yetki Ayarları

Root kullanıcısını kullanmamaya karar verdiyseniz root kullanıcısını devredışı bırakmadan önce yapmanız gereken bir kaç işlem var. Öncelikle güvenli bir parolaya sahip yeni bir kullanıcı oluşturmalı ve ona gerekli yetkileri vermelisiniz. Güvenli parolalarla ilgili kafanızda soru işaretleri varsa Parola Rehberini inceleyebilirsiniz. Daha sonra SSH Anahtarının Sunucuya Aktarımı başlığında anlatıldığı gibi anahtarınızı ilgili kullanıcıya aktarmalısınız. Tüm bu işlemlerden sonra güvenle root kullanıcısına SSH ile bağlanmayı devredışı bırakabilirsiniz. Öncelikle yeni bir kullanıcı oluşturalım bunun için;

  1. Uçbirimi açın
  2. SSH ile sunucunuza bağlanın
  3. adduser [kullanıcıadı] komutunu çalıştırın. ([kullanıcıadı] kısmını kullanmak istediğiniz kullanıcı adı ile değiştirin.) Aşağıdaki gibi bir çıktı ile karşılaşacaksınız;
# adduser [kullanıcıadı]
Adding user `[kullanıcıadı]' ...
Adding new group `[kullanıcıadı]' (1001) ...
Adding new user `[kullanıcıadı]' (1001) with [kullanıcıadı] `[kullanıcıadı]' ...
Creating home directory `/home/[kullanıcıadı]' ...
Copying files from `/etc/skel' ...
New password: [parolanızı girin]
Retype new password: [parolanızı tekrar girin]
passwd: password updated successfully
Changing the user information for denis
Enter the new value, or press ENTER for the default
        Full Name []: [istege bağlı bilgileriniz]
        Room Number []: [boş bırakabilir]
        Work Phone []: [veya]
        Home Phone []: [doldurabilirsiniz]
        Other []: 
Is the information correct? [Y/n] Y [Y girerek tüm bilgilerin doğru olduğunu söylüyoruz. Bir hata varsa N girebiliriz.]
  1. visudo komutunu veya nano /etc/sudoers komutunu girin. İkisi de aynı işlemi yapacaktır.
  2. Uygun bir satırı (dosyanın en altı bu işlem için uygundur) [kullanıcıadı] ALL=(ALL:ALL) ALL şeklinde değiştirin.
  3. Ctrl + O ile kaydedin, Ctrl + X ile dosyayı kapatın.
  4. SSH Anahtarının Sunucuya Aktarımı başlığınındaki adımları takip ederek SSH anahtarınızı ilgili kulanıcıya aktarın.