CyberFlow Logo CyberFlow BLOG
Ssh Pentest

Siber Güvenlikte SSH Yapılandırma Hatalarını Önleme Yöntemleri

✍️ Ahmet BİRKAN 📂 Ssh Pentest

SSH yapılandırma hataları, siber saldırılara davetiye çıkarabilir. Bu blogda hata analizleri ve koruma yöntemleri detaylandırılmaktadır.

Siber Güvenlikte SSH Yapılandırma Hatalarını Önleme Yöntemleri

SSH yapılandırma hataları, sistem güvenliğini ciddi şekilde tehdit edebilir. Bu blog yazısında, sık karşılaşılan hatalar ve bunlardan korunma yöntemleri açıklanmaktadır.

Giriş ve Konumlandırma

Siber güvenlik, günümüzdeki en önemli teknoloji alanlarından biri haline gelmiştir. Kurumlar ve bireyler, dijital verilerini korumak için sürekli yeni önlemler almakta ve siber tehditlere karşı kendilerini gözden geçirmektedir. Bu bağlamda, Güvenli Shell (SSH) protokolü, güvenli uzaktan erişim ve yönetim için yaygın olarak tercih edilen bir çözümdür. Ancak, SSH yapılandırmalarında yapılacak basit hatalar, ciddi güvenlik açıklarına yol açabilir. Bu yazıda, siber güvenlikte SSH yapılandırma hatalarının nasıl önlenebileceği üzerine odaklanacağız.

SSH Protokolü ve Güvenlik Tehditleri

SSH, veri iletimi sırasında uç noktalar arasında güvenli bir iletişim sağlamak için kullanılan bir protokoldür. Ancak, protokolün düzgün uygulanmaması, ciddi güvenlik ihlallerine neden olabilir. Örneğin, eski SSH-1 protokolü, tasarımındaki zayıflıklar nedeniyle artık kullanılmamalıdır. Eğer bir sunucu hala bu protokolü destekliyorsa, bu durum, veri trafiğinin üçüncü şahıslar tarafından ele geçirilmesine neden olabilir. Bu nedenle, sistem yöneticileri önce sunucularının hangi protokolleri desteklediğini doğrulamalıdır.

nmap -p 22 --script sshv1 10.0.0.1

Bu komut, belirli bir IP adresinin SSH-1 desteğini kontrol etmek için kullanılabilir. Eğer sonuçlar pozitif çıkarsa, yapılandırmanın hemen güncellenmesi gerekir.

Yapılandırma Dosyası ve Önemi

SSH bağlantılarının güvenliğini sağlamak için en kritik adımlar, sshd_config dosyası üzerindeki yapılandırmaları dikkatle gözden geçirmektir. Bu dosya, sunucu ile istemciler arasındaki bağlantıların nasıl yönetileceğini belirleyen parametreleri içerir. Yapılandırma dosyasındaki her satır, güvenliğini doğrudan etkileyebilir.

Pentest sırasında, yetki kazandığınız bir sistemde ilk kontrol edilecek yer bu dosyadır. Zayıf şifreleme algoritmalarının (örneğin, arcfour ya da 3des) aktif olması, verinin çeşitli siber saldırılara karşı savunmasız kalmasına neden olur.

Güvenlik Riske Açıklığı ve Hatalı Parametreler

SSH'nin yapılandırmasında, kullanılan parametrelerin yanlış ayarlanması, sistemin hızla ele geçirilmesine yol açabilir. Örneğin, PermitEmptyPasswords ayarının "YES" olarak ayarlanması, şifresi olmayan hesapların sisteme giriş yapmasına izin verir, bu da potansiyel bir güvenlik tehdidi oluşturur.

PermitEmptyPasswords YES

Bu tür bir yapılandırma, saldırganların tüm boş şifreli hesapları kullanarak sisteme kolayca girmesine imkan tanır. Aynı şekilde, root kullanıcısının doğrudan SSH üzerinden erişime açık olması, yetki yükseltme süreci gerektirmeden saldırgana sisteme tam erişim sağlar. Bu, en az ayrıcalık prensibini ihlal etmektedir ve bu nedenle PermitRootLogin NO olması gereken bir ayardır.

PermitRootLogin NO

Kaba Kuvvet Saldırılarını Önleme Yöntemleri

Sistemlerin kaba kuvvet saldırılarına karşı korunması büyük bir öneme sahiptir. Giriş denemelerini kısıtlamak için kullanılan MaxAuthTries ve MaxStartups gibi parametreler, saldırganların bir oturumda deneyebileceği maksimum parola sayısını belirler. Bu ayarlar yanlış yapılırsa, sistem hızla ele geçirilebilir.

MaxAuthTries 3
MaxStartups 10:30:60

Bunların yanı sıra, kullanıcıların erişimini sınırlayan ve belirli kullanıcı listesinin (whitelist) oluşturulmasını sağlayan ayarlar da önemlidir. Örneğin, sadece belirli kullanıcıların SSH ile giriş yapabilmesi için AllowUsers kullanılmalıdır.

Sonuç ve Önleme Stratejileri

Siber güvenlikte SSH yapılandırma hatalarını önlemek, doğru yapılandırma ile başlar. Doğru protokollerin kullanılması, yapılandırma dosyasının dikkatlice incelenmesi ve güvenlik açığına neden olabilecek tüm parametrelerin doğru ayarlanması gerekmektedir. Uzun vadeli koruma stratejileri geliştirmek, sadece mevcut tehditlere karşı değil, gelecekteki güvenlik açıklarını da minimize etmek açısından kritik öneme sahiptir.

Bu yazıda, SSH yapılandırma hatalarının önüne geçmek için alınabilecek önlemler üzerinde durduk. Gelecek bölümlerde, daha detaylı teknik bilgilerle bu yapılandırmaların nasıl optimize edileceği ve en iyi uygulamaların neler olduğu üzerinde durulacaktır.

Teknik Analiz ve Uygulama

Zayıf Protokol Tespiti: SSH-1

Siber güvenlikte ilk adımlardan biri, kullanılan protokollerin güvenliğini sağlamaktır. SSH-1 protokolü, zamanla ortaya çıkan kriptografik zayıflıkları nedeniyle artık tamamen güvensiz kabul edilmektedir. Eğer bir sistem yöneticisi, sshd_config dosyasındaki Protocol satırında SSH-1’i etkinleştirdiyse, bu hem veri güvenliği hem de sistemin bütünlüğü açısından risk teşkil eder.

Bunu kontrol etmek için Nmap aracını kullanabiliriz. Aşağıdaki komutu uygulayarak sistemin SSHv1 desteğini test edebiliriz:

nmap -p 22 --script sshv1 <hedef_ip>

Bu komut, belirtilen hedefin SSHv1 protokolünü destekleyip desteklemediğini gösterir. Eğer destekliyorsa, derhal devre dışı bırakılmalıdır.

Hatalı Parametreler ve Riskler

sshd_config dosyasındaki her satırın güvenlik üzerinde doğrudan etkisi bulunmaktadır. Yapılandırma dosyasındaki hatalı veya kötü yapılandırılmış parametreler sistem üzerinde zayıflık yaratır. Örneğin, PermitEmptyPasswords YES ayarı, şifresiz kullanıcıların sisteme giriş yapmasına izin verir; bu, ciddi güvenlik riskleri barındırmaktadır.

Aşağıdaki satırı içeren bir yapılandırma, ele geçirme ihtimalini artırır:

PermitEmptyPasswords YES

Bu ayarın aktif olması durumunda, herhangi birisi şifresiz kullanıcılarla sisteme erişim sağlayabilir.

Yapılandırma Dosyası Yolu

OpenSSH servisinin standart yapılandırma dosyası yolu genellikle /etc/ssh/sshd_config şeklindedir. Bu dosya, servis başlatıldığında okunur ve burada yapılan değişiklikler sonrasında servisin yeniden başlatılması gerekmektedir:

sudo systemctl restart sshd

Yapılandırma dosyasına erişim izninin doğru şekilde ayarlandığından emin olmak, sistemi koruma altına almak için kritik bir adımdır.

Weak Ciphers: Zayıf Şifreleme Analizi

Güvenli bir SSH yapılandırmasında zayıf şifreleme algoritmalarının kullanılması önerilmez. Modern güvenlik standartlarına uygun olmayan şifreleme yöntemleri, verilerin "Man-in-the-Middle" saldırılarıyla çözülmesine yol açabilir. Zayıf şifreleme yöntemlerini tespit etmek için Nmap aracı ile aşağıdaki komutu kullanabiliriz:

nmap -p 22 --script ssh2-enum-algos <hedef_ip>

Sonuçlarda görülen şifreleme algoritmalarının zayıflıkları dikkate alınmalı ve mümkün olan en kısa sürede güncel ve güçlü algoritmalara geçiş yapılmalıdır.

Brute Force ve Limitler

Kaba kuvvet saldırılarına karşı etkili bir koruma sağlamak için bazı sınırlamalar getirilmelidir. MaxAuthTries parametresi, tek bir bağlantıda denenebilecek maksimum parola sayısını belirler. Bu değerin çok yüksek olması, saldırganların tek bir oturumda birçok şifre denemesine izin verebilir. Örneğin:

MaxAuthTries 3

Yukarıdaki örnekte, sadece 3 denemeden sonra bağlantı kesilecektir, böylece kaba kuvvet saldırılarına karşı önemli ölçüde bir koruma sağlanacaktır.

Şifresiz Giriş Felaketi

“PermitEmptyPasswords” parametresinin varlığı, şifresiz girişlere izin verir; bu durum özellikle sistem yöneticileri tarafından sıkça gözden kaçmaktadır. Şifresi olmayan tüm kullanıcıların sisteme giriş yapabilmesi, ciddi bir güvenlik açığı yaratır. Aşağıdaki yapılandırma satırı kesinlikle devre dışı bırakılmalıdır:

PermitEmptyPasswords NO

Root Login Denetimi

Root kullanıcısının doğrudan SSH ile erişilebilir olması, saldırganların yetki yükseltme (privilege escalation) gereksinimi olmadan sisteme hakim olmasına neden olabilir. Bu nedenle PermitRootLogin ayarının NO olarak belirlenmesi gerekmektedir:

PermitRootLogin NO

Giriş Güvenliği Yöntemleri

Sadece parola ile kimlik doğrulama yerine daha güvenli yöntemler tercih edilmelidir. Parola gibi savunmasız kimlik doğrulama işlemlerinin ötesinde, dijital anahtarlarla kimlik doğrulama (PubkeyAuthentication) kullanılmalıdır:

PasswordAuthentication NO
PubkeyAuthentication YES

Dosya İzinleri Denetimi

Yapılandırma dosyasının ve .ssh dizinlerinin uygun şekilde izinlerle ayarlanması, sistemin güvenliği açısından son derece önemlidir. Dosyaların yanlış izinlere sahip olması saldırganların arka kapı eklemesine olanak tanır. Dosya izinlerini kontrol etmek için şu komutu kullanabiliriz:

ls -la /etc/ssh/sshd_config

Doğru izinler genellikle 600 veya 400 olmalıdır.

Kullanıcı Kısıtlama Mekanizmaları

Yetkisiz kullanıcıların sisteme erişimini sınırlamak için AllowUsers ve DenyGroups gibi parametreler kullanılmalıdır. Bu parametreler yalnızca belirli kullanıcıların veya grupların erişime izin verir:

AllowUsers user1 user2
DenyGroups badusers

Bu yapılandırmayı kullanmak, sadece yetkilendirilmiş kullanıcıların sisteminize erişim sağlamasına olanak verecektir.

Parola Doğrulama Kontrolü

Sistem üzerinde parola ile kimlik doğrulamanın kontrol edildiği parametre PasswordAuthentication olarak adlandırılmaktadır. Eğer sadece anahtar tabanlı kimlik doğrulamanın kullanılmasını istiyorsanız, bu değeri şu şekilde ayarlamanız gerekmektedir:

PasswordAuthentication NO

Bu ayar, tüm kullanıcılara anahtar tabanlı kimlik doğrulama zorunluluğu getirerek sisteme olan tehditleri önemli ölçüde azaltacaktır.

Yukarıda belirtilen yöntemler dikkate alınarak oluşturulacak bir SSH yapılandırması, sistemin güvenliğini artıracak ve olası tehditleri minimize edecektir.

Risk, Yorumlama ve Savunma

Risk Değerlendirme ve Savunma

Siber güvenlikte risk değerlendirme, sistemlerin ve uygulamaların karşılaşabileceği tehditleri, zayıflıkları ve sonucu itibarıyla gerçekleşebilecek etkileri analiz etmek için kritik bir adımdır. Özellikle SSH (Secure Shell) gibi kritik protokollerin yapılandırılmasında yapılan hatalar, siber güvenlik zafiyetlerine yol açabilir. Bu bölümde, SSH yapılandırma hatalarının risk analizine, olası etkilerine ve savunma yöntemlerine değinilecektir.

Zayıf Protokol Tespiti: SSH-1

SSH-1 protokolü, tasarımındaki kriptografik zayıflıklar nedeniyle artık güvensiz kabul edilmektedir. Eğer yapılandırmada “Protocol 1” parametresi aktifse, siber saldırganlar araya girerek veri trafiğini deşifre edebilir. Bu durum, veri gizliliği ile bütünlüğü hakkında ciddi endişelere yol açar.

nmap -p 22 --script sshv1 [Hedef_IP]

Yukarıdaki komut ile bir sunucunun SSH-1 desteği olup olmadığı kontrol edilebilir. Eğer destekliyorsa, acil müdahale gerekmektedir.

Hatalı Parametreler ve Riskler

sshd_config dosyasındaki yapılandırma parametrelerinin her biri, güvenlik açısından doğrudan bir etkiye sahiptir. Örneğin, yanlış ayarlanmış bir MaxAuthTries değeri, bir saldırganın giriş denemeleri yaparak hesabı ele geçirmesine neden olabilir. Aynı zamanda LoginGraceTime ayarının uygun şekilde yönetilmemesi, DoS (Hizmet Engelleme) saldırılarına karşı savunmasız bırakabilir.

Weak Ciphers: Zayıf Şifreleme Analizi

Zayıf şifreleme algoritmalarının aktif bırakılması, özellikle “arcfour” ve “3des” gibi algoritmalar, Man-in-the-Middle (MitM) saldırılarına açık kapı bırakabilir. Bu nedenle, desteklenen şifreleme türlerini gözden geçirmek önemlidir.

nmap -p 22 --script ssh2-enum-algos [Hedef_IP]

Yukarıdaki komutla, sunucunun desteklediği zayıf şifreleme yöntemleri döküm haline getirilebilir.

Brute Force ve Limitler

Kaba kuvvet saldırılarına karşı savunma mekanizmalarının eksikliği, sistemin hızla ele geçirilmesine neden olabilir. Doğru yapılandırmalar ile saldırı denemeleri sınırlandırılmalıdır. MaxStartups ve MaxAuthTries ayarlarının gözden geçirilmesi gerekmektedir.

MaxStartups 10:30:100

Bu ayar, aynı anda yapılacak kimlik doğrulama isteklerinin maksimum sayısını belirler.

Şifresiz Giriş Felaketi

“PermitEmptyPasswords” parametresinin aktif olması, şifresi olmayan kullanıcıların sisteme girmesine izin verir. Bu durum, sistemin savunmasız hale gelmesine sebep olur ve saldırganların kıyaslanamayacak derecede kolay bir giriş yapmasına yol açar.

Root Login Denetimi

Root kullanıcısının doğrudan SSH üzerinden erişilebilir olması, kritik bir güvenlik açığıdır. Saldırganlar, yetki artırımı (privilege escalation) yapmadan sisteme tam erişim sağlayabilir.

PermitRootLogin NO

Bu ayar ile root erişimi kapatılmalı ve en az yetki prensibi uygulanmalıdır.

Giriş Güvenliği Yöntemleri

Giriş güvenliği, sadece parola kullanımına dayanmamalıdır. Anahtar tabanlı kimlik doğrulama (PubkeyAuthentication), güvenliği artırırken parola tabanlı girişin dezavantajlarını giderir.

PasswordAuthentication NO
PubkeyAuthentication YES

Sonuç

SSH yapılandırma hataları, siber güvenlik anlamında ciddi riskler barındırmaktadır. Yapılandırma dosyasındaki her parametrenin güvenliği doğrudan etkilediği unutulmamalı ve yapılandırma her zaman güncel ve en iyi uygulamalar doğrultusunda olmalıdır. Zayıf protokollerin, parametrelerin ve erişim kontrol mekanizmalarının kullanımında dikkatli olunmalı, sistemlerin herhangi bir aşamasında gözden kaçan detaylara karşı titizlikle yaklaşılmalıdır. Hardening süreçleri, sistemin genel güvenliğini artırmak ve saldırılara karşı dayanıklılığını sağlamak için kritik öneme sahiptir.