Latest Intelligence

SSH (Secure Shell) Necə İşləyir?

12/30/2025
Research Report

Technical Presentation

SSH (Secure Shell) Necə İşləyir?

SSH (Secure Shell) Necə İşləyir? Pərdə Arxasındakı Sehr və Riyaziyyat

Niyə SSH? (Tarixi Zərurət)

İnternetin ilk vaxtlarında administratorlar serverləri idarə etmək üçün Telnet və ya RSH istifadə edirdilər. Bu protokolların böyük bir təhlükəsizlik boşluğu var idi: hər şey (parollar daxil olmaqla) şəbəkədə "plaintext" (açıq mətn) şəklində gedirdi. 1995-ci ildə Helsinki Universitetində bir şəbəkə "sniffing" hücumu baş verdi və Tatu Ylönen buna cavab olaraq SSH-1 protokolunu yazdı.

Bu gün istifadə etdiyimiz SSH-2 (2006-cı ildə standartlaşdı) sadəcə bir "remote shell" deyil, şifrlənmiş bir tunel protokoludur. Gəlin, onun necə işlədiyinə baxaq.

  1. SSH-in Üç Sütunu (Şifrləmə Prinsipləri)

SSH əlaqəsi qurularkən 3 fərqli şifrləmə texnologiyası istifadə olunur. Hər birinin öz rolu var:

  1. Simmetrik Şifrləmə (Symmetric Encryption): Məlumatın sürətli ötürülməsi üçün. (AES, ChaCha20).
  2. Asimmetrik Şifrləmə (Asymmetric Encryption): Təhlükəsiz açar mübadiləsi (Key Exchange) və Kimlik doğrulama üçün. (RSA, Ed25519).
  3. Hashing (HMAC): Məlumatın bütövlüyünü qorumaq, yolda dəyişdirilmədiyini yoxlamaq üçün. (SHA-2).
  4. Sessiyanın Qurulması: The Handshake (Əl sıxışma)

Çox adam elə bilir ki, SSH sessiyası başlayanda dərhal istifadəçi adı və şifrə yoxlanılır. Xeyr. Əvvəlcə təhlükəsiz tunel qurulmalıdır. Proses belə gedir:

Mərhələ 1: Razılaşma (Negotiation)

Client və Server bir-birinə dəstəklədikləri protokolları və şifrləmə alqoritmlərini göndərirlər.

  • Client: "Mən AES-256 və ChaCha20 bilirəm."
  • Server: "Mən də AES-256 bilirəm. Gəl bundan istifadə edək."

Mərhələ 2: Key Exchange (KEX) - Diffie-Hellman

Bura SSH-in ən maraqlı hissəsidir. İki tərəf bir-birinə şifrəni (açarı) göndərmədən, ortaq bir "Shared Secret" (Sessiya Açarı) yaradırlar.

Riyazi olaraq Diffie-Hellman alqoritmi istifadə olunur. Təsəvvür edin ki, iki tərəf rəng qarışdırır:

  1. Hər kəsin bildiyi bir rəng var (Sarı).
  2. Hər kəs öz gizli rəngini seçir (Mən: Qırmızı, Sən: Göy).
  3. Sarı ilə gizli rənglərini qarışdırıb bir-birinə göndərirlər (Mən sənə Narıncı, sən mənə Yaşıl göndərirsən). Man-in-the-Middle (Haker) ancaq bu qarışıq rəngləri görür.
  4. Sən mənim göndərdiyimi öz gizli rənginlə qarışdırırsan, mən də sənin göndərdiyini öz gizli rəngimlə.
  5. Nəticə: Hər ikimizdə eyni "Qəhvəyi" rəng (Shared Secret Key) yaranır.

Bu andan etibarən, serverlə sizin aranızdakı bütün trafik bu "Shared Key" (Simmetrik açar) ilə şifrlənir. Hələ heç kim login olmayıb!

  1. Autentifikasiya: Kimlik Doğrulama

Tunel qurulduqdan sonra Server soruşur: "Yaxşı, bəs sən kimsən?". Burada iki əsas üsul var:

A. Parol ilə giriş

Sadəcə şifrlənmiş tunel daxilindən parolu serverə göndərirsiniz. Server öz /etc/shadow faylındakı hash ilə yoxlayır. (Təhlükəsizlik baxımından zəifdir, Bruteforce-a açıqdır).

B. SSH Key (Açar) ilə giriş – "Challenge-Response"

DevSecOps mühəndisləri olaraq bizim seçimimiz budur. Burada Private Key heç vaxt serverə göndərilmir! İşləmə məntiqi belədir:

  1. Client: "Mən userəm və bu da mənim Public Key-im (Kilidim)."
  2. Server: "Baxım görüm bu kilid mənim ~/.ssh/authorized_keys qutumda varmı? Hə var. Amma bu kilidin açarı (Private Key) səndədirmi? Gəl yoxlayaq."
  3. Server (Challenge): Təsadüfi bir rəqəm yaradır, onu sizin Public Key ilə şifrləyir və sizə göndərir.
  4. Client (Response): Siz bu rəqəmi öz Private Key-inizlə açırsınız (Decrypt) və həmin rəqəmin MD5/SHA hash-ini serverə geri göndərirsiniz.
  5. Server: Hash düzgündürsə, deməli açar həqiqətən sizdədir. Qapı açılır.
  6. SSH-in Gizli Gücləri: Tunneling və Port Forwarding

  • Local Forwarding (-L): "Mənim kompüterimdəki 8080 portunu, Serverin daxili şəbəkəsindəki (məsələn, 192.168.1.50) 80 portuna bağla."
    • İstifadə: Database-ə qoşulmaq üçün (hansı ki, internetə birbaşa çıxışı yoxdur).
  • Remote Forwarding (-R): "Serverin 8080 portuna gələn sorğunu, mənim kompüterimdəki 3000 portuna yönləndir."
    • İstifadə: Öz local mühitini müvəqqəti olaraq internetə açmaq üçün (Ngrok alternativi).

Nəticə və Təhlükəsizlik Tövsiyələri

SSH təhlükəsizliyini maksimumda saxlamaq üçün sshd_config faylında bunları mütləq edin:

  1. PasswordAuthentication no (Yalnız SSH Key istifadə edin).
  2. PermitRootLogin no (Root olaraq birbaşa girməyin, sudo istifadə edin).
  3. Port 22-ni dəyişmək ("Security by obscurity" olsa da, logları təmiz saxlayır).
  4. Fail2Ban istifadə edin.

SSH, müasir infrastrukturun təməl daşıdır. Onun necə işlədiyini anlamaq, sadəcə əmrləri əzbərləməkdən daha vacibdir.