Erhan Yakut Software Developer @Binalyze | Founder @Passwall | Golang Enthusiast | Open Sorcerer

Sunucu Güvenliği | SSH (Secure Shell) Kullanımı

4 min read

Wikileaks‘in CIA ile ilgili paylaştığı 8000 sayfalık evrakları gördükten sonra güvenlik konusundaki yazılarıma ağırlık vermeye karar verdim. Her ne kadar güvenlik konusunda alınacak tedbirlerin sonu olmasa da kolay lokma olmamalı, alabildiğimiz kadar tedbiri almalıyız.

Web developer olarak öncelikle sunucu güvenliği konusuna değinmek istiyorum. Aklımda şimdiden bir yazı dizisi oluşturdum ve hızlı bir şekilde bu diziyi tamamlamaya çalışacağım. Bu dizinin ilk yazısı yani başlangıcı olarak da sunucuya bağlanmamızı sağlayan SSH konusunda değinmenin doğru olacağını düşündüm.

SSH Nedir?


SSH (Secure Shell), sunucunuza kriptolanmış bağlantı ile ulaşmanızı sağlayan bir ağ protokolüdür. SSH sayesinde kolaylıkla sunucunuzdaki dosyalarınızı yönetebilir, izinlerini değiştirebilir, sunucunuzu neredeyse tam anlamıyla yönetebilirsiniz.

SSH Programları Nelerdir?

SSH için Windows platformlarında en çok kullanılan program Putty‘dir. Linux ve MacOS işletim istemlerinde ise tüm konsol/terminal uygulamaları SSH bağlantı için kullanılabilir.

SSH ile Sunucuya Erişim Nasıl Yapılır?

Sunucunuza SSH ile bağlanmak için sunucu adresinizi ve bu sunucuda oluşturmuş/sahip olduğunuz kullanıcı adı ve şifreyi bilmeniz gereklidir. Aşağıdaki komutu standart bir SSH bağlantısı için yeterli olacaktır.
[php]$ ssh username@servername
// Örnek: ssh [email protected][/php]

Bu komutu girdikten sizden kullanıcı parolası istenir ve parolanın doğru girilmesiyle sunucuya bağlanmış olursunuz. Parolanızı yazarken ekranta hiçbir karaktere basılmıyormuş gibi olur, şaşırmayın ve parolanızı yazmaya devam edip enter’a basın.

SSH ile Farklı Porttan Sunucuya Erişim Nasıl Yapılır?

SSH’ın bir varsayılan portu vardı ve bu 22 numaralı porttur. Sunuculara yapılan saldırılar ve sızma girişimleri de sürekli olarak bu varsayılan porta yapılır. Eğer sunucu güvenliğinizi düşünüyorsanız ileride değineceğim şekilde SSH portunu 22’den farklı bir porta çevirirsiniz. Sonrasında da belirlemiş olduğunuz bu porttan sunucuya bağlanmak için aşağıdaki komutu kullanabilirsiniz.

[php]$ ssh -p portnumber username@servername
// Örnek: ssh -p 55 [email protected][/php]

Varsayılan SSH Portu Nasıl Değiştirilir?

Yukarıdaki madde 22 numaralı portun standart SSH portu olduğunu ve bu nedenle saldırılarda bir numaralı hedef olduğunu söylemiştim. İşte bu potansiyel tehdidi ortadan kaldırmak için varsayılan SSH portunu şu şekilde değiştirebilirsiniz:

  • Öncelikle SSH ile sunucunuza bağlanın: ssh username@servername
  • Ardından SSH config dosyasını bir metin editörü (nano, vi vb.) ile açın: vi /etc/ssh/ssh_config veya nano /etc/ssh/ssh_config. Config dosyasının ismi sshd_config de olabilir, ilgili klasörde ls komutu vererek bunu kontrol edersiniz.
  • Dosyada # Port 22 yazan satırı bulun ve başındaki # işaretini kaldırıp 22 rakamı yerine 4354 gibi farklı bir rakam yazıp dosyayı kaydedip kapatın. Seçeceğiniz yeni port numarası 0 ile 65,535 (64k) arasında değişebilir.
  • Son olarak SSH’ı CentOS için service sshd restart, Ubuntu için sudo restart ssh komutu ile yeniden başlatın.
  • Port değiştirme işlemi bu kadar. Artık yukarıda bahsedildiği şekilde istediğiniz porttan sunucuya bağlanabilirsiniz.

Sunucuya Güvenli Şekilde Nasıl Dosya Yüklenir?

Kendi sunucunuzu yönetiyorsanız eğer internette okumuş olduğunuz makalelerde sürekli olarak FTP (File Transfer Protocol) uygulamasının ne kadar güvensiz olduğundan bahsedildiğini görürsünüz. Hatta “mümkünse sunucunuza hiç FTP servisi/sunucusu kurmayın” şeklinde tavsiyelerle doludur internet siteleri. Dosya transfer işlemlerinin güvenli şekilde yapmak istiyorsanız FTP yerine SCP komutunu kullanabilirsiniz. Bu komutun genel kullanımı da aşağıdaki gibidir.

[php]$ scp /lokal/dizin/dosya.txt username@servername:/hedef/dizin
// Örnek: scp /home/desktop/dosya.txt [email protected]:/home/kendim/[/php]

Burada dikkat etmeniz gereken konu ilk dizinin kaynak, ikincisinin hedef dizin olduğudur. Yukarıdaki örnekte kaynak ve hedefin yerini değiştirirseniz sunucudan bilgisayarınıza güvenli şekilde dosya indirmiş olursunuz.

SCP ile 22’den farklı bir port kullanarak dosya yüklemek isterseniz SSH komutunda olduğu gibi port numarasını belirterek bunu yapabilirsiniz. Örneğe dikkat ederseniz port numarasını sunucunun önüne yazdım.

[php]$ scp /lokal/dizin/dosya.txt -P 55 username@servername:/hedef/dizin[/php]

İpucu: Linux sistemlerde bulunduğunuz dizini öğrenmek için pwd komutunu kullanabilirsiniz. Bu komut /home/yakuter/Desktop şeklinde çıktı verir.

En Çok Kullanılan SSH Komutları Nelerdir?

Sunucunuza bağlandıktan sonra dosyalarınızı ve sunucunuzu yönetmek için kullanabileceğiniz komutlar vardır. Şurada bahsetmiştim ama konu bütünlüğü olması açısından burada yeniden paylaşıyorum.

ls – İçinde bulunulan klasörün içeriğini listeler
pwd – Çalışmakta olduğunuz klasörün tam adresini verir
cd – Klasör değiştirme komutudur. Mesela “cd ..” Bir üst klasöre çıkmanızı sağlar
rm – Dosya silme komutudur
rmdir – Klasör silme komutudur. Klasörün içi dolu ise “rm -r klasör” komutunu kullanabilirsiniz
mkdir – Bir klasör oluşturur
ps – Mevcut çalışan işlemleri (process) gösterir
cp – Kopyalama komutudur
mv – Taşıma komutudur
grep – Dosya içinde arama yapmanızı sağlar
find – Belirli bir dosyayı bulmanızı sağlar
locate – Önbellekte arama ile dosya bulmanızı sağlar
man – Komutların kullanım kılavuzunu gösterir
clear – Ekranı temizler
less – Dosya içeriğini gösterir
nano – Basit bir metin editörüdür
sudo – Root olarak bir komutu çalıştırmanıza yarar
su – Root olmaya yarar
view – Dosyayı sadece okuma modunda açar

SSH Anahtarı (Key) Nasıl Oluşturulur?

SSH ile sitenize bağlanmak için sürekli parola girmek bir süre sonra sizi sıkmaya başlayabilir. Bunun yerine kriptolanmış SSH anahtarı (key) oluşturup bilgisayarınızı ve sunucunuzu eşleştirerek sürekli parola girme derdinden kurtulabilirsiniz. Bunun için yapmanız gerekenleri adım adım anlatmaya çalışacağım.

1. Öncelikle konsol/terminal/putty’de mkdir .ssh komutu ile bilgisayarınızda .ssh isimli bir klasör oluşturun.

2. Ardından aşağıdaki komut ile gerekli SSH anahtarını oluşturun.

ssh-keygen –t rsa

3. Bu komut ile .ssh klasörünüzde isimleri id_rsa ve id_rsa.pub isimli iki dosya oluşacaktır. İlk dosya (id_rsa) bilgisayarınızda kalacak, ikinci dosyayı (.pub ile biten) aşağıda belirtildiği şekilde sunucuya yükleyeceksiniz.

4. Bu aşamadan sonra öncelikle şu komut ile oluşturduğunuz SSH anahtarınızı bilgisayarınıza tanıtın.

ssh-add

5. Buradan sonra sıra geldi sunucu tarafına. Sunucunuzda bağlanıp cd komutu ile kullanıcı ana dizinine gelin ve burada öncelikle .ssh isimli bir klasör oluşturun (mkdir .ssh).

6. Ardından bilgisayarınızdaki id_rsa.pub dosyasını bu klasöre yükleyin.

7. Son olarak yüklemiş olduğunuz dosyayı tanıtmak için şu komutu komutu kullanın.

cat id_rsa.pub >> .ssh/authorized_keys

Yukarıdaki adımları hatasız şekilde tamamladıysanız bundan sonra sunucunuza bağlanırken ssh username@servername komutunu çalıştırdığınızda sizden parola talep edilmeden güvenli bağlantı sağlanacaktır.

Son Sözler

Umarım bu yazıda bahsettiklerim ile sunucu güvenliğinizi bir nebze daha artırabilirsiniz. Ben bizzat kullanmakta olduğum cloud sunucumda bu dediklerimi harfi harfine uyguluyorum. Geniş bir konu olduğu için bu yazıyı zaman zaman geliştirmeyi düşünüyorum. Sizin de tavsiyeleriniz varsa seve seve dinlemek isterim.

Erhan Yakut Software Developer @Binalyze | Founder @Passwall | Golang Enthusiast | Open Sorcerer