Banner

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

11.03.2017
100 Okunma

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.

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.

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.

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.

İ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 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 ssh-keygen –t rsa komutu ile gerekli anahtarı oluşturun. Bu komut ile .ssh klasörünüzde isimleri id_rsa ve id_rsa.pub isimli iki dosya oluşacaktır. İlk dosya bilgisayarınızda kalacak, ikinci dosyayı (.pub ile biten) aşağıda belirtildiği şekilde sunucuya yükleyeceksiniz.
  3. Oluşturduğumuz anahtarın sadece okunabilir (readable) bir dosya olduğundan emin olmak için dosyanın izinlerini şu komut ile belirleyin: chmod 600 .ssh/id_rsa
  4. ssh-add komutu ile oluşturulan kimliği (identity) bilgisayarınıza tanıtın.
  5. Buradan sonra işiniz sunucu ile. SSH ile yukarıda anlatıldığı şekilde sunucunuza bağlanıp mkdir .ssh komutunu kullanarak sunucuda .ssh isimli bir klasör oluşturun.
  6. id_rsa.pub dosyasını yukarıda bahsetmiş olduğum SCP komutunu kullanarak sunucuya yükleyin: scp .ssh/id_rsa.pub username@servername: Komutun sonunda iki nokta (:) olduğuna dikkat edin.
  7. Sunucuya yüklediğiniz anahtar dosyasını yetki verilmiş anahtarlar klasörüne (.ssh/authorized_keys) şu komut ile kopyalayın: cat id_rsa.pub >> .ssh/authorized_keys
  8. Sunucudaki .ssh klasörü için gerekli izni şu şekilde verin: chmod 700 -R .ssh

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.

Kategori Güvenlik, Linux

Comments of this post

Sunucu Güvenliğini Artırma Yöntemleri - Yakuter

Sunucu Güvenliğini Artırma Yöntemleri - Yakuter
23 May 2017

[…] Root olarak SSH üzerinden sisteme giriş yapmak: SSH kullanımını şuradaki yazımda detaylı olarak anlattığım için bu konuya yeniden […]

Sunucu güvenliği nasıl artırılır? – AsosyalHatun – Anonymous Female Blog //

Sunucu güvenliği nasıl artırılır? – AsosyalHatun – Anonymous Female Blog //
25 July 2017

[…] Root olarak SSH üzerinden sisteme giriş yapmak: SSH kullanımını şuradaki yazımda detaylı olarak anlattığım için bu konuya yeniden […]