parent
3cb97cec1e
commit
15581875ad
@ -1 +1,122 @@ |
|||||||
[Bu bölüme katkı verebilirsiniz](https://git.oyd.org.tr/oyd/guvenlik) |
# 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](../beseri_guvenlik/parolalar.md#guclu-parola) 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](../beseri_guvenlik/parolalar.md#guclu-parola) inceleyebilirsiniz. Daha sonra [SSH Anahtarının Sunucuya Aktarımı](#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.] |
||||||
|
``` |
||||||
|
4. ```visudo``` komutunu veya ```nano /etc/sudoers``` komutunu girin. İkisi de aynı işlemi yapacaktır. |
||||||
|
5. 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. |
||||||
|
6. Ctrl + O ile kaydedin, Ctrl + X ile dosyayı kapatın. |
||||||
|
7. [SSH Anahtarının Sunucuya Aktarımı](#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. |
Loading…
Reference in new issue