CyberFlow Logo CyberFlow BLOG
Ssh Pentest

SSH Protokolüne Giriş: Siber Güvenlikte Temel Bilgiler

✍️ Ahmet BİRKAN 📂 Ssh Pentest

SSH protokolü hakkında bilmeniz gereken her şey. Uzak sunuculara güvenli erişim sağlamak için gerekli bilgiler.

SSH Protokolüne Giriş: Siber Güvenlikte Temel Bilgiler

SSH (Secure Shell), uzak sunuculara güvenli erişim sağlamak için kullanılan kritik bir protokoldür. Bu yazıda, SSH protokolünün temel bileşenlerini keşfedeceğiz.

Giriş ve Konumlandırma

SSH Protokolüne Giriş: Siber Güvenlikte Temel Bilgiler

Siber güvenlik dünyasında, sistem yöneticileri ve güvenlik uzmanları için güvenli iletişim sağlamak kritik öneme sahiptir. Bu bağlamda, Secure Shell (SSH) protokolü, uzaktaki sistemlere güvenli bir şekilde erişim sağlamak için kullanılan temel araçlardan biridir. SSH, kullanıcıların ve yöneticilerin güvenli bir ortamda veri iletişimi yapmalarına olanak tanıyarak, şifreleme ve kimlik doğrulama mekanizmalarıyla donatılmış bir protokoldür. Bu yazıda, SSH protokolünün işleyiş mekanizmasına ve önemine derinlemesine bakacağız.

SSH Protokolünün Önemi

SSH, özellikle ağ üzerinde çalışan sistem yöneticileri için çok önemli bir araca dönüşmüştür. Daha önce altyapılarda popüler olan Telnet gibi protokoller, verileri ağ üzerinde açık metin olarak gönderdiği için büyük bir güvenlik açığı taşımaktadır. SSH, ulaşmak istediğiniz sunucunun güvenli bir "kanal" oluşturmasını sağlar ve bu yönüyle siber saldırılardan korunma ya da veri güvenliği sağlama noktasında kritik bir rol üstlenir.

Pentest (sızma testi) süreçlerinde, siber güvenlik uzmanları genellikle hedef sistemlerdeki SSH hizmetlerini keşfeder. Bu süreçte, standart port 22'nin açık olup olmadığı ilk izlenimlerden biridir. Eğer bu port yerel veya uzaktan erişime açıksa, bu, potansiyel bir zafiyet kaynağı olabilir. Hedef makinenin SSH servisi üzerinde hangi yazılımın çalıştığını tespit etmek, sızma testi sürecinin ilk adımlarındandır. Bu nedenle, SSH'nin detaylı bir anlayışa sahip olmak, sistemlerin güvenliğini sağlamak için kritik bir gereksinimdir.

Teknik Bağlam ve İlgili Konular

Güvenlik alanında SSH protokolünün kullanımı sadece oturum açma işlemleri ile sınırlı değil, aynı zamanda birçok diğer güvenlik önlemi ile de birleşmektedir. Örneğin, SSH protokolü, şifreleme algoritmaları, kimlik doğrulama yöntemleri ve veri bütünlüğü sağlama teknikleri gibi birçok katmanı içerir. Tüm bu katmanlar, sistemin güvenliğini artırmayı ve potansiyel zafiyetleri en aza indirmeyi hedefler.

SSH'nin iki ana sürümü bulunur: SSH-1 ve SSH-2. İlk sürüm olan SSH-1, kriptografik açıdan zayıf ve bazı saldırılara (örneğin, Man-in-the-Middle saldırıları) açık dizayn edilmiştir. Bu nedenle modern uygulamalarda genellikle SSH-2 tercih edilmektedir. SSH-2, günümüzde standart güvenlik özellikleriyle donatılmıştır ve Diffie-Hellman anahtar değişim protokollerini kullanarak iletişim güvenliğini sağlamaktadır.

SSH servisinin yapılandırması, sistemin güvenliğini belirleyen en önemli unsurlardan biridir. Sunucu yapılandırma dosyasının doğru bir şekilde ayarlanması, yetkisiz girişleri engellemek için kritik bir adımdır. Örneğin, "root" kullanıcı hesabının SSH üzerinden doğrudan girişine izin vermek, potansiyel bir saldırı yüzeyini artırabilir. Bu nedenle, bu ayarların dikkatle değerlendirilmesi gerekmektedir.

Okuyucuya Yönelik Hazırlık

SSH, ağ üzerindeki iletişimi sağlarken, bir dizi güvenlik mekanizmasını da devreye sokar. Kullanıcı anahtarları, oturum şifreleri ve parmak izi (fingerprint) kontrolü, bağlantı güvenliğinin sağlanmasında kritik rol oynar. Bu terimler ve kullanımları üzerinde durulması gereken önemli başlıklardır. Okuyucuların bu alanlarda bilgi sahibi olmaları, sızma testi uygulamaları sırasında karşılaşacakları potansiyel zafiyetler hakkında daha donanımlı bir bakış açısı geliştirmelerine yardımcı olacaktır.

SSH protokolünün detaylarını öğrenirken, yalnızca temel kavramlar ile sınırlı kalmamak önemlidir. İlk adımlar olarak, servis keşfi, kimlik doğrulama yöntemleri, port ayarları ve güvenlik politikalarının doğru bir biçimde stratejiye dönüştürülmesi gerekmektedir. Bu noktada, pratik uygulamaların gerçekleştirilmesi ve farklı senaryolar üzerinden deneyim kazanılması, güvenlik profesyonellerinin yetkinliğini artıracaktır.

Sonuç olarak, SSH, siber güvenlik için vazgeçilmez bir protokol olduğu gibi, güvenlik araştırmacıları ve sistem yöneticileri için de temel bir yetkinlik alanıdır. Protokolün işleyişine dair derin bir anlayış, hem sistem güvenliğini artırır hem de potansiyel riskleri en aza indirir. Geçmişte yaşanan güvenlik ihlallerinin ve saldırıların çoğu, bu tür güvenli iletişim protokollerinin uygulanmaması veya hatalı yapılandırmaları nedeniyle gerçekleşmiştir. Dolayısıyla, SSH öğrenimi, siber güvenlik kariyerinizde sağlam bir temel oluşturmak için kritik bir başlangıç noktası olacaktır.

Teknik Analiz ve Uygulama

SSH: Servis Keşfi ve İlk Temas

SSH (Secure Shell), uzak sunuculara güvenli bir şekilde erişim sağlamak için yaygın olarak kullanılan bir protokoldür. Penetrasyon testlerinde, sistem yöneticilerine sunucuya güvenli erişim imkanı sunan bu protokolün portu olan 22’nin açık olması, hedef sistemin keşfi için ilk adımı teşkil eder. Bununla birlikte, portun arkasında hangi yazılımın dinlediğini belirlemek de kritik bir öneme sahiptir.

Bir hedef makinedeki (örneğin 10.0.0.1), standart SSH portunu ve servis versiyonunu taramak için aşağıdaki Nmap komutunu kullanabiliriz:

nmap -sV -p 22 10.0.0.1

Bu komut, hem portun durumunu hem de bağlantı kurularak dinlenen yazılımın versiyonunu tespit etmemizi sağlar.

SSH Versiyonları ve Güvenlik Farklılıkları

SSH protokolünün iki ana sürümü vardır: SSH-1 ve SSH-2. SSH-1, kriptografik olarak zayıf bir yapıdadır ve Man-in-the-Middle saldırılarına açıktır. Bu nedenle SSH-2, güvenlik standartını belirleyen modern bir sürüm olarak kabul edilmektedir ve Diffie-Hellman anahtar değişimi gibi gelişmiş şifreleme yöntemleri kullanmaktadır.

Güvenlik Karakteristikleri

Gelişmiş güvenlik özelliklerini kullanmak için, sunucunun kullandığı SSH sürümünü tanımak önemlidir. Özellikle eski sürümleri hedef almak, bir saldırgan için avantaj sağlayabilir.

SSH Standart Portu

SSH, TCP protokolü üzerinden belirli bir portta dinleme yapar ve varsayılan olarak bu port 22’dir. Ancak, güvenlik nedeniyle bu port farklı bir port numarasına taşınabilir; örneğin, port 2222 gibi alternatif portlar kullanılabilir. Pentest sırasında, her iki durumda da port taraması yapmak kritik bir adımdır.

Banner Grabbing: Kimlik Bilgisi Yakalama

Bir SSH sunucusuna bağlandığınızda, sunucu kendini tanıtan bir bilgi mesajı, yani banner gönderir. Bu banner, işletim sistemine dair bilgiler ve SSH sürümü gibi kritik veriler barındırır. Banner bilgilerini yakalamak için basit bir Netcat komutu kullanılabilir:

nc -nv 10.0.0.1 22

Bu komutu kullanarak, hedef sunucunun kimlik bilgisine ulaşmak için gerekli bilgilere erişebilirsiniz.

SSH Kimlik Doğrulama Katmanları

SSH, farklı kimlik doğrulama yöntemleri sunar. Kullanıcı doğrulama amacıyla en yaygın kullanılan iki yöntem, parola ile doğrulama ve anahtar tabanlı doğrulamadır. Anahtar tabanlı doğrulama, genellikle daha güvenlidir ve RSA veya Ed25519 anahtar çiftleri kullanır.

Kimlik Doğrulama Yöntemleri

Anahtar tabanlı doğrulama, kullanıcıdan sadece public key gerektirir. Bu nedenle, kullanım kolaylığı ve güvenlik açısından etkilidir. Aşağıdaki örnek yapılandırma dosyası, OpenSSH üzerindeki ana yapılandırma dosyası olan sshd_config içerisindeki belirli ayarları içerebilir.

Sunucu Yapılandırma Dosyası

SSH servisinin güvenlik politikalarının belirlendiği ana dosya, sshd_config'dir. Bu dosya genellikle /etc/ssh/ dizininde bulunur ve sistemin SSH bağlantılarına dair genel ayarlarını kapsar. Örnek bir sshd_config yapılandırması şu şekilde olabilir:

# OpenSSH sunucusu için yapılandırma dosyası
PermitRootLogin no
PasswordAuthentication yes
PubkeyAuthentication yes

Bu ayarlar, root kullanıcısının doğrudan girişine izin verilmeyeceğini ve anahtar tabanlı doğrulamanın aktif olduğunu belirtir.

Algoritma Analizi ve Zayıf Şifreleme Tespiti

SSH, bağlantı sırasında üç farklı kriptografik işlem kullanarak veri güvenliğini sağlamaktadır: şifreleme için kullanılan algoritmalar (Ciphers), veri bütünlüğünü sağlamak için kullanılan MAC'ler (Message Authentication Codes) ve anahtar değişimi için belirli protokoller (KEX). Eski ve zayıf algoritmaların özelliklerini belirlemek için Nmap kullanılarak sunucunun desteklediği algoritmalar taranabilir:

nmap -p 22 --script ssh2-enum-algos 10.0.0.1

Kullanıcı Anahtar Dizini

SSH anahtarlarının saklandığı dizin genellikle kullanıcının ana dizininde bulunan .ssh klasörüdür. Bu dizin, kullanıcının anahtar çiftlerinin depolandığı yerdir ve genellikle id_rsa ya da id_rsa.pub dosyalarını içermektedir.

Temel Bağlantı ve Parmak İzi (Fingerprint)

Bir SSH sunucusuna ilk kez bağlandığınızda, sunucu tarafından sağlanan benzersiz bir "parmak izi" (fingerprint) ile karşılaşırsınız. Bu parmak izini doğrulamak, sahte bir sunucuya (spoofing) bağlanmadığınızdan emin olmanızı sağlar.

Geçerli Bağlantı Komutu

SSH bağlantısını başlatmak için aşağıdaki komutu kullanabilirsiniz:

ssh admin@10.0.0.1

Bu komut, belirtilen kullanıcı adıyla hedef sunucuya bağlanma girişiminde bulunur.

SSH ve Telnet Karşılaştırması

SSH, Telnet gibi eski yönetim protokollerinin yerini alarak güvenli bir yönetim aracı haline gelmiştir. Telnet, verileri açık metin olarak göndermesiyle bilinen bir protokoldür ve bu durum, şifrelerin ve diğer hassas bilgilerin ele geçirilmesine neden olabilir. SSH ise uçtan uca şifreleme sağladığı için, güvenli bir iletişim kanalı oluşturur.

Bu yazıda, SSH protokolü hakkında gerekli teknik bilgileri ele almayı hedefledik. SSH, siber güvenlik alanındaki en kritik bileşenlerden biridir ve doğru uygulanması, sistemlerin güvenliğini büyük oranda artırır.

Risk, Yorumlama ve Savunma

Siber güvenlik bağlamında, SSH (Secure Shell) protokolü üzerinde gerçekleştirilen veri toplama ve yapılandırma analizi, uzak sistemlere erişim sırasında potansiyel zafiyetleri belirlemek için kritik bir öneme sahiptir. SSH aracılığıyla yapılan her bağlantıda, doğru yapılandırmaların varlığı, sistemin güvenliğini doğrudan etkiler. Bu bölümde, SSH'nın risk değerlendirmesi, yorumlaması ve savunma stratejileri üzerinde durulacaktır.

Güvenlik Anlamında Yorumlama

SSH, güvenli bir erişim protokolü olmasına rağmen, yanlış yapılandırmalar ve eski versiyon kullanımı gibi durumlar ciddi güvenlik sorunlarına yol açabilir. Genellikle, port 22 üzerinde dinleme yapan bir SSH servisi, sisteme yapılan saldırılara karşı ilk hedef olur. Aşağıdaki komut ile bu port üzerinde çalışan servisin versiyonunu belirlemek mümkündür:

nmap -sV -p 22 10.0.0.1

Elde edilen bilgiler, SSH'nın hangi versiyonunun çalıştığını ve olası güvenlik açıklarını ortaya koyar. Örneğin, SSH-1 kullanımı, 'Man-in-the-Middle' saldırılarına açık olduğu için önerilmez. Modern sistemlerde SSH-2’nin kullanılması gerekmektedir.

Yanlış Yapılandırma ve Zafiyetlerin Etkisi

SSH yapılandırma dosyaları, genellikle /etc/ssh/sshd_config yolunda yer almaktadır. Bu dosyada, root girişinin engellenip engellenmediği, şifreleme algoritmalarının güvenliği gibi birçok kritik güvenlik politikası belirlenir. Yanlış yapılandırmalar, yetkisiz erişimin önünü açmakta veya güvenlik zafiyetlerine sebep olmaktadır. Örneğin, şifrelenmiş bağlantılar için zayıf algoritmaların kullanılması, veri güvenliğini tehdit eder:

nmap -p 22 --script ssh2-enum-algos 10.0.0.1

Bu komut ile sunucunun desteklediği şifreleme algoritmaları listelenebilir. Eğer zayıf şifreleme yöntemleri (örn. 3DES) mevcutsa, bu durum veri bütünlüğü ve gizliliği üzerinde olumsuz sonuçlara neden olabilir.

Sızan Veri ve Topoloji Tespiti

Bir sızma testinde, sunucunun yapılandırılmasında belirlenen tüm detaylar, saldırganların bu yapılandırmalardan yararlanarak sistemin iç yapısı hakkında bilgi edinmelerine olanak tanır. İlk kez bağlanıldığında sunucu tarafından sağlanan 'Fingerprint', kullanıcıların güvenliğini artırmak için kullanılmalıdır.

Eğer parmak izi doğrulanmazsa veya kullanıcı, sahte bir sunucuya bağlanıyorsa, bu durum büyük bir güvenlik riski taşır. SSH’daki oturum bilgileri, genellikle saldırganlar tarafından hedef alınmaktadır, bu yüzden bu bilgilerin güvenliği sağlanmalıdır.

Profesyonel Önlemler ve Hardening Önerileri

  1. Güncelleme ve Bakım: SSH servisinizin ve beraberinde kullanılan yazılımların güncel tutulması ve sürümlerin en son güvenlik yamanmaları ile güncellenmesi önemlidir.

  2. Kullanıcı Erişim Kontrolleri: Gereksiz kullanıcı hesaplarının kaldırılması veya devre dışı bırakılması ve sadece yetkili kullanıcıların SSH erişim izni alması sağlanmalıdır.

  3. Şifreleme Standartları: Zayıf şifreleme algoritmalarının kullanılmaması ve modern, güvenli algoritmaların tercih edilmesi önerilir.

  4. Port Değiştirme: SSH için varsayılan 22 numaralı port dışında bir port kullanmak, otomatik tarama işlemlerinden kaçınmak için etkilidir.

  5. Güvenlik Duvarı Yapılandırmaları: SSH trafiğini sadece belirli IP adreslerinden kabul eden bir güvenlik duvarı kurmak, dışarıdan gelen saldırıları önemli ölçüde azaltır.

  6. İki Aşamalı Kimlik Doğrulama: Kullanıcılara ek bir güvenlik katmanı sunmak için 2FA (iki faktörlü kimlik doğrulama) uygulanması önerilmektedir.

Sonuç

SSH protokolü, güvenli bir bağlantı sağlamak için geniş bir yelpaze sunmasına rağmen, kötü yapılandırmalar ve zayıf güvenlik uygulamaları ciddi tehditler yaratmaktadır. Bu nedenle, yapılandırma dosyalarının kontrol edilmesi, zayıf algoritmaların tespit edilmesi ve profesyonel önlemlerin alınması, sistemlerin güvenliğini sağlamak için vazgeçilmezdir. Siber güvenlik Türkiye'de her geçen gün daha fazla önem kazanıyor ve bu tür tehditlere karşı sürekli dikkatli olunmalıdır.