OpenSSH Sunucusunun Güvenliği ve Güçlendirilmesi Nasıl Yapılır?


Sunucular, yönlendiriciler ve anahtarlar gibi uzak cihazlara erişim söz konusu olduğunda, trafiği şifreleme ve bağlantılarınızı gizlice dinlemeye çalışabilecek herkesi engelleme yeteneği nedeniyle SSH protokolü şiddetle tavsiye edilir.

Öyle olsa bile, SSH'nin varsayılan ayarları hatasız değildir ve protokolü daha güvenli hale getirmek için ek ince ayarlara ihtiyaç vardır. Bu kılavuzda, sunucuda OpenSSH kurulumunu güvenli hale getirmek ve güçlendirmek için kullanabileceğiniz farklı yolları araştırıyoruz.

1. SSH Parolasız Kimlik Doğrulamasını Kurun

Varsayılan olarak SSH, kullanıcıların giriş yaparken şifrelerini girmelerini gerektirir. Ancak olay şu: Bilgisayar korsanları şifreleri tahmin edebilir, hatta özel bilgisayar korsanlığı araçlarını kullanarak kaba kuvvet saldırısı gerçekleştirebilir ve sisteminize erişebilir. Güvenli tarafta olmak için SSH şifresiz kimlik doğrulamasının kullanılması şiddetle tavsiye edilir.

İlk adım, bir genel anahtar ve bir özel anahtardan oluşan bir SSH anahtar çifti oluşturmaktır. Özel anahtar ana sisteminizde bulunurken, genel anahtar daha sonra uzak sunucuya kopyalanır.

Genel anahtar başarılı bir şekilde kopyalandıktan sonra, artık parola girmenize gerek kalmadan uzak sunucuya sorunsuz bir şekilde SSH girişi yapabilirsiniz.

Bir sonraki adım şifre kimlik doğrulamasını devre dışı bırakmaktır. Bunu başarmak için SSH yapılandırma dosyasını değiştirmeniz gerekir.

sudo vim /etc/ssh/sshd_config

Yapılandırma dosyasının içinde aşağıdaki yönergeyi kaydırıp bulun. Açıklamayı kaldırın ve 'evet' seçeneğini 'hayır' olarak değiştirin

PasswordAuthentication no

Ardından SSH arka plan programını yeniden başlatın.

sudo systemctl restart sshd

Bu noktada uzak sunucuya yalnızca SSH anahtar kimlik doğrulamasını kullanarak erişebileceksiniz.

2. Kullanıcı SSH Parolasız Bağlantı İsteklerini Devre Dışı Bırakın

Sunucunuzun güvenliğini güçlendirmenin önerilen diğer bir yolu da, parolası olmayan kullanıcıların SSH oturum açmalarını devre dışı bırakmaktır. Bu biraz garip gelebilir ancak bazen sistem yöneticileri kullanıcı hesapları oluşturabilir ve şifre atamayı unutabilir ki bu çok kötü bir fikirdir.

Parola olmadan kullanıcılardan gelen istekleri reddetmek için tekrar /etc/ssh/sshd_config adresindeki yapılandırma dosyasına gidin ve aşağıdaki yönergeye sahip olduğunuzdan emin olun:

PermitEmptyPasswords no

Daha sonra değişikliğin geçerli olması için SSH hizmetini yeniden başlatın.

sudo systemctl restart sshd

3. SSH Kök Girişlerini Devre Dışı Bırakın

Bir bilgisayar korsanının root şifrenize kaba kuvvet uygulamayı başarması durumunda ne olabileceği hiç de akıllıca değil. Uzaktan root girişine izin vermek her zaman sisteminizin güvenliğini tehlikeye atabilecek kötü bir fikirdir.

Bu nedenle, SSH uzaktan root oturum açma işlemini her zaman devre dışı bırakmanız ve bunun yerine root olmayan normal bir kullanıcıya bağlı kalmanız önerilir. Bir kez daha yapılandırma dosyasına gidin ve bu satırı gösterildiği gibi değiştirin.

PermitRootLogin no

İşiniz bittiğinde değişikliğin geçerli olması için SSH hizmetini yeniden başlatın.

sudo systemctl restart sshd

Bundan böyle uzaktan root girişi devre dışı bırakılacaktır.

4. SSH Protokolü 2'yi kullanın

SSH'nin iki sürümü vardır: SSH protokol 1 ve protokol 2. SSH protokol 2 2006 yılında kullanıma sunuldu ve güçlü şifreleme kontrolleri, toplu şifreleme ve güçlü algoritmalar sayesinde protokol 1'den daha güvenlidir.

SSH varsayılan olarak protokol 1'i kullanır. Bunu daha güvenli Protokol 2'ye değiştirmek için aşağıdaki satırı yapılandırma dosyasına ekleyin:

Protocol 2

Her zaman olduğu gibi değişikliklerin geçerli olması için SSH'yi yeniden başlatın.

sudo systemctl restart sshd

Bundan sonra SSH varsayılan olarak Protokol 2'yi kullanacak.

SSH protokol 1'in artık desteklenip desteklenmediğini test etmek için şu komutu çalıştırın:

ssh -1 user@remote-IP

"SSH protokolü v.1 artık desteklenmiyor" yazan bir hata alırsınız.

Bu durumda komut şuydu:

ssh -1 [email 

Ayrıca, Protokol 2'nin kullanılan varsayılan protokol olduğundan emin olmak için -2 etiketini belirtmeniz yeterlidir.

ssh -2 [email 

5. SSH Bağlantı Zaman Aşımı Boşta Değerini Ayarlayın

Boş bir SSH bağlantısıyla bilgisayarınızı uzun süre gözetimsiz bırakmak güvenlik riski oluşturabilir. Birisi kolayca geçip SSH oturumunuzu devralabilir ve ne isterse yapabilir. Sorunu çözmek için bu nedenle, aşıldığında SSH oturumunun kapatılacağı bir boşta kalma zaman aşımı sınırı belirlemek akıllıca olacaktır.

Bir kez daha SSH yapılandırma dosyanızı açın ve “ClientAliveInterval” yönergesini bulun. Makul bir değer atayın, örneğin ben sınırı 180 saniyeye ayarladım.

ClientAliveInterval 180

Bu, 180 saniyeye eşdeğer olan 3 dakikadan sonra herhangi bir etkinlik kaydedilmezse SSH oturumunun bırakılacağı anlamına gelir.

Daha sonra yapılan değişiklikleri uygulamak için SSH arka plan programını yeniden başlatın.

sudo systemctl restart sshd

6. SSH Erişimini Belirli Kullanıcılarla Sınırlayın

Ek bir güvenlik katmanı olarak, sistemde oturum açmak ve uzak görevleri gerçekleştirmek için SSH protokolüne ihtiyaç duyan kullanıcıları tanımlayabilirsiniz. Bu, onayınız olmadan sisteminize girmeye çalışabilecek diğer kullanıcıları uzak tutar.

Her zaman olduğu gibi, yapılandırma dosyasını açın ve "AllowUsers" yönergesini ve ardından vermek istediğiniz kullanıcıların adlarını ekleyin. Aşağıdaki örnekte 'tecmint' ve 'james' kullanıcılarının SSH aracılığıyla sisteme uzaktan erişmesine izin verdim. Uzaktan erişim sağlamaya çalışan diğer kullanıcılar engellenecektir.

AllowUsers tecmint james

Daha sonra değişikliklerin devam etmesi için SSH'yi yeniden başlatın.

sudo systemctl restart sshd

7. Şifre Girişimleri İçin Bir Sınır Yapılandırın

Bir güvenlik katmanı eklemenin başka bir yolu da, SSH oturum açma denemelerinin sayısını, bir dizi başarısız denemeden sonra bağlantının kesileceği şekilde sınırlamaktır. Bu nedenle bir kez daha yapılandırma dosyasına gidin ve “MaxAuthTries” yönergesini bulun ve maksimum deneme sayısı için bir değer tanımlayın.

Bu örnekte sınır, gösterildiği gibi 3 denemeye ayarlanmıştır.

MaxAuthTries 3

Ve son olarak önceki senaryolarda olduğu gibi SSH hizmetini yeniden başlatın.

Ayrıca SSH ile ilgili aşağıdaki makaleleri de faydalı bulabilirsiniz:

  • Linux'ta Kaynaktan OpenSSH 8.0 Sunucusu Nasıl Kurulur
  • CentOS/RHEL 8'de SSH'yi Korumak İçin Fail2Ban Nasıl Kurulur
  • Linux'ta SSH Bağlantı Noktası Nasıl Değiştirilir
  • Linux'ta SSH Tüneli veya Bağlantı Noktası Yönlendirme Nasıl Oluşturulur
  • Linux'ta SSH Bağlantılarını Hızlandırmanın 4 Yolu
  • Linux'ta Tüm Başarısız SSH oturum açma Girişimleri Nasıl Bulunur?
  • Linux'ta Etkin Olmayan veya Boşta SSH Bağlantılarının Bağlantısı Nasıl Kesilir
Çözüm

Bu, SSH uzak bağlantılarınızı güvence altına almak için alabileceğiniz bazı önlemlerin özetiydi. Kaba kuvvet saldırılarını engellemek için uzaktan erişimi olan kullanıcılara her zaman güçlü şifreler atamanız gerektiğini de eklemek önemlidir. Bu kılavuzu anlayışlı bulacağınızı umuyoruz. Geri bildiriminiz çok memnuniyetle karşılanır.