- 23 Kasım 2025
- 1,003
- 59
Secure Shell (SSH), sunucular ve istemciler arasında şifreli bir iletişim kanalı kurmak için kullanılan vazgeçilmez bir protokoldür. Bu protokol sayesinde, uzaktaki sunucularımıza güvenli bir şekilde bağlanabilir, komutlar çalıştırabilir ve dosya transferleri gerçekleştirebiliriz. Ancak, SSH'nin sunduğu güvenlik avantajlarından tam olarak yararlanabilmek ve potansiyel tehditlere karşı korunmak için belirli ipuçlarına dikkat etmek büyük önem taşır. Yanlış yapılandırılmış bir SSH bağlantısı, sisteminizi saldırılara karşı savunmasız bırakabilir. Bu nedenle, aşağıda belirtilen adımları uygulayarak SSH bağlantılarınızın güvenliğini en üst seviyeye çıkarabilirsiniz.
SSH bağlantınızın temel güvenliği, kullandığınız kimlik doğrulama yöntemine bağlıdır. Parola tabanlı kimlik doğrulama kullanılıyorsa, daima karmaşık, uzun ve tahmin edilmesi zor parolalar seçmelisiniz. Büyük/küçük harf, rakam ve özel karakterlerin birleşimi, parolanızın gücünü artıracaktır. Ancak, çok daha güvenli bir yöntem olan anahtar tabanlı kimlik doğrulamayı tercih etmek, güvenlik seviyenizi önemli ölçüde yükseltir. Bu yöntemde, bir genel ve bir özel anahtar çifti oluşturulur. Genel anahtar sunucuya yerleştirilirken, özel anahtar bilgisayarınızda güvenli bir şekilde saklanır. Bu sayede, parolanın çalınması riski ortadan kalkar ve brute-force saldırılarına karşı çok daha dirençli bir sistem elde edilir. Ek olarak, özel anahtarınızı da bir parola ile korumanız ek bir güvenlik katmanı sağlar.
SSH hizmetleri genellikle varsayılan olarak 22 numaralı TCP portunda çalışır. Bu durum, otomatik botlar ve kötü niyetli kişiler için kolay bir hedef haline gelmesine neden olur. Çünkü saldırganlar ilk olarak bu bilinen portu tararlar. SSH portunu standart 22'den farklı, yüksek numaralı ve rastgele seçilmiş bir porta değiştirmek, sunucunuzu bu tür otomatik taramalardan ve hedefli saldırılardan korumanın basit ama etkili bir yoludur. Port değişikliği, `sshd_config` dosyasında kolayca yapılandırılabilir. Örneğin, 22 yerine 2222 veya 54321 gibi bir port numarası belirlemek, saldırganların sunucunuzu bulmasını zorlaştırır. Bununla birlikte, bu değişiklik port tünelleme gibi diğer SSH özelliklerinin kullanımını etkilemez.
Sistemin en yetkili kullanıcısı olan root hesabıyla doğrudan SSH bağlantısı kurmak, ciddi bir güvenlik riski taşır. Çünkü root hesabının ele geçirilmesi durumunda, saldırgan sunucu üzerinde tam kontrole sahip olur. Bu nedenle, `PermitRootLogin no` ayarını kullanarak root erişimini devre dışı bırakmak kritik bir adımdır. Bunun yerine, normal bir kullanıcı hesabı ile bağlanıp gerektiğinde `sudo` komutu aracılığıyla root yetkileri almalısınız. Ek olarak, `PasswordAuthentication no` ayarını kullanarak parola tabanlı kimlik doğrulamayı tamamen kapatmak, anahtar tabanlı kimlik doğrulamayı zorunlu hale getirir. Bu iki ayar birleştiğinde, sunucunuzun güvenliği önemli ölçüde artırılır.
Güvenliği bir üst seviyeye taşımak için iki faktörlü kimlik doğrulama (2FA) kullanmak vazgeçilmezdir. 2FA, birincil kimlik doğrulama yönteminizin (parola veya anahtar) yanı sıra, kullanıcıdan ikinci bir doğrulama bilgisi (örneğin, bir mobil uygulama tarafından üretilen tek kullanımlık kod veya fiziksel bir güvenlik anahtarı) sağlamasını gerektirir. Başka bir deyişle, sadece bir kimlik bilgisiyle sisteme erişilemez. Bu, bir saldırganın parolanızı veya özel anahtarınızı ele geçirse bile, ikinci faktöre sahip olmadığı sürece sunucunuza erişemeyeceği anlamına gelir. Bu nedenle, özellikle hassas veriler barındıran veya kritik sistemler için 2FA'nın etkinleştirilmesi şiddetle tavsiye edilir. Örneğin, Google Authenticator gibi uygulamalarla kolayca kurulabilir.
SSH anahtarlarınızı şifrelemek, özel anahtarınızın çalınması durumunda bile yetkisiz erişimi engellemek için önemli bir güvenlik önlemidir. Anahtarınızı oluştururken bir parola belirleyerek bu şifrelemeyi sağlayabilirsiniz. Ancak, her SSH bağlantısında bu parolayı tekrar tekrar girmek zaman alıcı olabilir. İşte bu noktada SSH ajanı devreye girer. SSH ajanı, şifrelenmiş özel anahtarlarınızı bellekte saklayarak, siz bilgisayarınızı yeniden başlatana veya ajanı kapatana kadar parolanızı yalnızca bir kez girmenizi sağlar. Bu, hem güvenliği artırır hem de kullanım kolaylığı sunar. Sonuç olarak, anahtarlarınızı şifreleyerek ve SSH ajanını kullanarak güvenliğinizi ve verimliliğinizi aynı anda sağlayabilirsiniz.
Sunucunuzun güvenlik duvarı (firewall), SSH bağlantılarınızı kimlerin ve nereden yapabileceğini kontrol etmek için güçlü bir araçtır. Belirli IP adreslerinden veya IP aralıklarından gelen bağlantılara izin verip diğerlerini engellemek, sunucunuzu geniş çaplı taramalardan ve yetkisiz erişim girişimlerinden korur. Örneğin, sadece ofisinizin veya evinizin sabit IP adresinden SSH bağlantılarına izin vermek, dışarıdan gelebilecek saldırı yüzeyini önemli ölçüde daraltır. Uncomplicated Firewall (UFW) veya iptables gibi araçlarla bu kuralları kolayca yapılandırabilirsiniz. Ek olarak, port tarama saldırılarına karşı ek bir savunma katmanı olarak başarısız SSH giriş denemelerini algılayıp IP adreslerini geçici olarak engelleyen fail2ban gibi araçları kullanmak da büyük fayda sağlar.
SSH yazılımını ve temel işletim sistemi paketlerini düzenli olarak güncellemek, bilinen güvenlik açıklarına karşı korunmanın en temel yollarından biridir. Yazılım geliştiricileri, sürekli olarak yeni güvenlik yamaları yayınlar. Bu nedenle, sunucunuzdaki SSH sunucusu (sshd) ve istemci yazılımlarını güncel tutmak, potansiyel zafiyetleri ortadan kaldırır. Ek olarak, SSH erişim günlüklerini (genellikle `/var/log/auth.log` veya `/var/log/secure` altında bulunur) düzenli olarak kontrol etmek hayati öneme sahiptir. Bu günlükler, başarısız giriş denemeleri, başarılı bağlantılar ve diğer SSH etkinlikleri hakkında değerli bilgiler içerir. Olağan dışı veya şüpheli etkinlikleri erken fark etmek, olası bir ihlali önlemenize veya hızlı bir şekilde yanıt vermenize olanak tanır. Sonuç olarak, güvenlik sadece kurulumla bitmez, sürekli bakım ve izleme gerektirir.
Güçlü Parolalar ve Anahtar Tabanlı Kimlik Doğrulama
SSH bağlantınızın temel güvenliği, kullandığınız kimlik doğrulama yöntemine bağlıdır. Parola tabanlı kimlik doğrulama kullanılıyorsa, daima karmaşık, uzun ve tahmin edilmesi zor parolalar seçmelisiniz. Büyük/küçük harf, rakam ve özel karakterlerin birleşimi, parolanızın gücünü artıracaktır. Ancak, çok daha güvenli bir yöntem olan anahtar tabanlı kimlik doğrulamayı tercih etmek, güvenlik seviyenizi önemli ölçüde yükseltir. Bu yöntemde, bir genel ve bir özel anahtar çifti oluşturulur. Genel anahtar sunucuya yerleştirilirken, özel anahtar bilgisayarınızda güvenli bir şekilde saklanır. Bu sayede, parolanın çalınması riski ortadan kalkar ve brute-force saldırılarına karşı çok daha dirençli bir sistem elde edilir. Ek olarak, özel anahtarınızı da bir parola ile korumanız ek bir güvenlik katmanı sağlar.
Varsayılan Portu Değiştirmek
SSH hizmetleri genellikle varsayılan olarak 22 numaralı TCP portunda çalışır. Bu durum, otomatik botlar ve kötü niyetli kişiler için kolay bir hedef haline gelmesine neden olur. Çünkü saldırganlar ilk olarak bu bilinen portu tararlar. SSH portunu standart 22'den farklı, yüksek numaralı ve rastgele seçilmiş bir porta değiştirmek, sunucunuzu bu tür otomatik taramalardan ve hedefli saldırılardan korumanın basit ama etkili bir yoludur. Port değişikliği, `sshd_config` dosyasında kolayca yapılandırılabilir. Örneğin, 22 yerine 2222 veya 54321 gibi bir port numarası belirlemek, saldırganların sunucunuzu bulmasını zorlaştırır. Bununla birlikte, bu değişiklik port tünelleme gibi diğer SSH özelliklerinin kullanımını etkilemez.
Root Erişimi ve Parola Kimlik Doğrulamasını Devre Dışı Bırakmak
Sistemin en yetkili kullanıcısı olan root hesabıyla doğrudan SSH bağlantısı kurmak, ciddi bir güvenlik riski taşır. Çünkü root hesabının ele geçirilmesi durumunda, saldırgan sunucu üzerinde tam kontrole sahip olur. Bu nedenle, `PermitRootLogin no` ayarını kullanarak root erişimini devre dışı bırakmak kritik bir adımdır. Bunun yerine, normal bir kullanıcı hesabı ile bağlanıp gerektiğinde `sudo` komutu aracılığıyla root yetkileri almalısınız. Ek olarak, `PasswordAuthentication no` ayarını kullanarak parola tabanlı kimlik doğrulamayı tamamen kapatmak, anahtar tabanlı kimlik doğrulamayı zorunlu hale getirir. Bu iki ayar birleştiğinde, sunucunuzun güvenliği önemli ölçüde artırılır.
İki Faktörlü Kimlik Doğrulama (2FA) Kullanımı
Güvenliği bir üst seviyeye taşımak için iki faktörlü kimlik doğrulama (2FA) kullanmak vazgeçilmezdir. 2FA, birincil kimlik doğrulama yönteminizin (parola veya anahtar) yanı sıra, kullanıcıdan ikinci bir doğrulama bilgisi (örneğin, bir mobil uygulama tarafından üretilen tek kullanımlık kod veya fiziksel bir güvenlik anahtarı) sağlamasını gerektirir. Başka bir deyişle, sadece bir kimlik bilgisiyle sisteme erişilemez. Bu, bir saldırganın parolanızı veya özel anahtarınızı ele geçirse bile, ikinci faktöre sahip olmadığı sürece sunucunuza erişemeyeceği anlamına gelir. Bu nedenle, özellikle hassas veriler barındıran veya kritik sistemler için 2FA'nın etkinleştirilmesi şiddetle tavsiye edilir. Örneğin, Google Authenticator gibi uygulamalarla kolayca kurulabilir.
SSH Ajanı ve Anahtar Şifrelemesi
SSH anahtarlarınızı şifrelemek, özel anahtarınızın çalınması durumunda bile yetkisiz erişimi engellemek için önemli bir güvenlik önlemidir. Anahtarınızı oluştururken bir parola belirleyerek bu şifrelemeyi sağlayabilirsiniz. Ancak, her SSH bağlantısında bu parolayı tekrar tekrar girmek zaman alıcı olabilir. İşte bu noktada SSH ajanı devreye girer. SSH ajanı, şifrelenmiş özel anahtarlarınızı bellekte saklayarak, siz bilgisayarınızı yeniden başlatana veya ajanı kapatana kadar parolanızı yalnızca bir kez girmenizi sağlar. Bu, hem güvenliği artırır hem de kullanım kolaylığı sunar. Sonuç olarak, anahtarlarınızı şifreleyerek ve SSH ajanını kullanarak güvenliğinizi ve verimliliğinizi aynı anda sağlayabilirsiniz.
Firewall Kuralları ile Erişim Kısıtlamaları
Sunucunuzun güvenlik duvarı (firewall), SSH bağlantılarınızı kimlerin ve nereden yapabileceğini kontrol etmek için güçlü bir araçtır. Belirli IP adreslerinden veya IP aralıklarından gelen bağlantılara izin verip diğerlerini engellemek, sunucunuzu geniş çaplı taramalardan ve yetkisiz erişim girişimlerinden korur. Örneğin, sadece ofisinizin veya evinizin sabit IP adresinden SSH bağlantılarına izin vermek, dışarıdan gelebilecek saldırı yüzeyini önemli ölçüde daraltır. Uncomplicated Firewall (UFW) veya iptables gibi araçlarla bu kuralları kolayca yapılandırabilirsiniz. Ek olarak, port tarama saldırılarına karşı ek bir savunma katmanı olarak başarısız SSH giriş denemelerini algılayıp IP adreslerini geçici olarak engelleyen fail2ban gibi araçları kullanmak da büyük fayda sağlar.
Güncel Tutmak ve Logları İzlemek
SSH yazılımını ve temel işletim sistemi paketlerini düzenli olarak güncellemek, bilinen güvenlik açıklarına karşı korunmanın en temel yollarından biridir. Yazılım geliştiricileri, sürekli olarak yeni güvenlik yamaları yayınlar. Bu nedenle, sunucunuzdaki SSH sunucusu (sshd) ve istemci yazılımlarını güncel tutmak, potansiyel zafiyetleri ortadan kaldırır. Ek olarak, SSH erişim günlüklerini (genellikle `/var/log/auth.log` veya `/var/log/secure` altında bulunur) düzenli olarak kontrol etmek hayati öneme sahiptir. Bu günlükler, başarısız giriş denemeleri, başarılı bağlantılar ve diğer SSH etkinlikleri hakkında değerli bilgiler içerir. Olağan dışı veya şüpheli etkinlikleri erken fark etmek, olası bir ihlali önlemenize veya hızlı bir şekilde yanıt vermenize olanak tanır. Sonuç olarak, güvenlik sadece kurulumla bitmez, sürekli bakım ve izleme gerektirir.
