SSH (Secure Shell), uzak sunuculara güvenli bir şekilde bağlanmak ve yönetmek için kullanılan en yaygın yöntemlerden biridir. Linux sunucuları üzerinde SSH erişimi genellikle yönetim, güncelleme ve yapılandırma işlemleri için kullanılır. Ancak, SSH erişimini açık bırakmak potansiyel bir güvenlik açığı yaratabilir. Bu nedenle SSH erişimini güvenli hale getirmek, yetkisiz erişimleri önlemek ve sunucunuzun siber tehditlerden korunmasını sağlamak çok önemlidir. Bu makalede, Linux sunucularında SSH erişiminin nasıl güvenli hale getirileceğini adım adım açıklayacağız.
SSH, güvenli bir protokol olmasına rağmen, varsayılan ayarlar genellikle birçok potansiyel güvenlik açığı bırakır. Özellikle internete açık bir sunucu kullanıyorsanız, brute-force saldırıları gibi tehditlerle karşı karşıya kalabilirsiniz. İşte SSH erişimini güvence altına almanızın bazı temel nedenleri:
Varsayılan olarak SSH hizmeti port 22'de çalışır. Bu portu değiştirmek, brute-force saldırılarını büyük ölçüde azaltacaktır. SSH konfigürasyon dosyasını düzenleyerek port numarasını değiştirebilirsiniz.
SSH konfigürasyon dosyasını açın:
sudo nano /etc/ssh/sshd_config
Aşağıdaki satırı bulun ve yeni bir port numarası belirleyin (örneğin, 2222):
Port 2222
Değişiklikleri kaydedip SSH hizmetini yeniden başlatın:
sudo systemctl restart sshd
Bu işlemle SSH bağlantınız artık port 22 yerine yeni belirlediğiniz port üzerinden gerçekleşecektir.
Root kullanıcısı, sistem üzerinde en geniş yetkilere sahip olduğu için root ile doğrudan SSH bağlantısını engellemek sunucu güvenliğini artırır. Bunun yerine kullanıcıları sudo kullanarak root yetkisi vermek daha güvenli bir yöntemdir.
sshd_config dosyasını tekrar açın:
sudo nano /etc/ssh/sshd_config
Aşağıdaki satırı bulup no
olarak değiştirin:
PermitRootLogin no
Değişiklikleri kaydedip SSH hizmetini yeniden başlatın:
sudo systemctl restart sshd
Bu sayede root kullanıcıyla doğrudan SSH bağlantısı artık engellenmiş olacak.
Parola tabanlı kimlik doğrulama yöntemleri, brute-force saldırılarına karşı savunmasızdır. Bunun yerine SSH anahtar tabanlı kimlik doğrulama yöntemi kullanarak güvenliği artırabilirsiniz.
Yerel makinenizde SSH anahtarı oluşturun:
ssh-keygen -t rsa -b 4096
Oluşturulan anahtarı sunucuya kopyalayın:
ssh-copy-id kullanıcı_adı@sunucu_ip_adresi
SSH anahtarı başarılı bir şekilde kopyalandıktan sonra, parola tabanlı kimlik doğrulamayı kapatmak için sshd_config dosyasını düzenleyin:
PasswordAuthentication no
Değişiklikleri kaydedip SSH hizmetini yeniden başlatın:
sudo systemctl restart sshd
Bu adımlar sayesinde, SSH girişleri artık sadece anahtarlar aracılığıyla yapılacak ve parolayla giriş tamamen engellenecektir.
Güvenli SSH erişimi sağlamak için sunucunuza yalnızca belirli IP adreslerinden bağlantılara izin vererek güvenlik duvarınızı yapılandırabilirsiniz.
UFW (Uncomplicated Firewall) kullanıyorsanız, önce UFW'yi etkinleştirin:
sudo ufw enable
Sadece belirli IP adreslerinden SSH bağlantısına izin verin:
sudo ufw allow from 192.168.1.100 to any port 2222
Bu işlem, sadece belirttiğiniz IP adresinden gelen SSH bağlantılarını kabul eder.
Fail2Ban, sunucunuza yapılan başarısız SSH giriş denemelerini tespit eder ve belirli bir süre boyunca IP'yi engeller. Bu, brute-force saldırılarına karşı etkili bir önlemdir.
Fail2Ban'i yükleyin:
sudo apt-get install fail2ban
Fail2Ban konfigürasyon dosyasını açın:
sudo nano /etc/fail2ban/jail.conf
SSH için bir bölüm ekleyin veya düzenleyin:
[sshd]
enabled = true
port = 2222
maxretry = 5
bantime = 3600
Fail2Ban hizmetini başlatın:
sudo systemctl start fail2ban
Bu ayarlarla, bir IP adresi 5 kez başarısız giriş yaparsa 1 saat boyunca SSH erişiminden yasaklanır.
SSH Bağlantı Zaman Aşımını Ayarlayın: Uzun süre aktif kalan, ancak kullanılmayan SSH bağlantılarını otomatik olarak sonlandırmak için ClientAliveInterval ve ClientAliveCountMax parametrelerini ayarlayabilirsiniz.
ClientAliveInterval 300
ClientAliveCountMax 0
Daha Güçlü Şifreleme Algoritmaları Kullanın: SSH konfigürasyon dosyanızda zayıf şifreleme algoritmalarını devre dışı bırakıp güçlü algoritmalar kullanın.
Ciphers aes256-ctr,aes192-ctr,aes128-ctr
SSH, uzaktan sunucu erişimi sağlamak için güçlü ve güvenli bir protokoldür. Ancak, varsayılan ayarlar güvenlik açısından yetersiz kalabilir. Yukarıda anlattığımız adımları izleyerek, sunucunuzun güvenliğini büyük ölçüde artırabilir ve kötü niyetli saldırılara karşı önlemler alabilirsiniz. Port değiştirme, root erişimini engelleme, SSH anahtar tabanlı kimlik doğrulama ve Fail2Ban gibi araçlarla saldırılara karşı daha dayanıklı bir SSH erişimi sağlayabilirsiniz.