Ubuntu Sunucuda SSH Güvenliğini Artırmanın 5 Kritik Adımı 
Selam sistemciler!
Sunucu dünyasının kapısı olan SSH, aynı zamanda en çok hedef alınan servislerden biri. Bugün, terminalimizin tozunu alırken, Ubuntu sunucularımızı brute-force saldırılarına ve yetkisiz erişimlere karşı nasıl sağlamlaştırabileceğimizi konuşacağız. Bu adımlar, yeni kurduğunuz her sunucuda ilk yapmanız gerekenler listesinin başında geliyor.
1. Varsayılan SSH Portunu Değiştirin (Port Knocking'den Daha Basiti)
Varsayılan 22 numaralı port, otomatik tarama yapan botların ilk hedefi. Portu değiştirmek, gürültüyü ciddi oranda azaltır.
Açılan dosyada `#Port 22` satırını bulun, başındaki `#` işaretini kaldırın ve 22 yerine 1024-65535 arasında, başka bir servis tarafından kullanılmayan bir port numarası yazın (örneğin: 45678).
Değişikliği kaydedip çıkın ve SSH servisini yeniden başlatın. DİKKAT: Bu işlemi yaparken mevcut SSH bağlantınızı kapatmayın! Yeni bir terminal penceresinden yeni portla bağlanabildiğinizi test ettikten sonra eski bağlantıyı kapatın.
2. Kök (Root) Kullanıcı ile Doğrudan SSH Bağlantısını Engelleleyin
Root kullanıcı, saldırganların tahmin etmeye çalıştığı ilk isim. Doğrudan root ile bağlanmayı yasaklayıp, önce normal bir kullanıcı ile bağlanıp ardından `sudo` komutu ile yükseltmek çok daha güvenli.
Aynı config dosyasında şu satırı bulun veya ekleyin:
3. Parola ile Kimlik Doğrulamayı Kapatıp, SSH Anahtarlarına Geçin
Bu, belki de yapabileceğiniz en güçlü güvenlik önlemi. Parolalar kaba kuvvet saldırılarına açıktır, ancak şifreli SSH anahtarları (key-pair) neredeyse kırılamaz.
Öncelikle, kendi bilgisayarınızda (istemcide) bir anahtar çifti oluşturun (Eğer yoksa):
Oluşturduğunuz public key'i (`id_ed25519.pub`) sunucunuza kopyalayın:
Artık sunucudaki `~/.ssh/authorized_keys` dosyasında public anahtarınız var. Şimdi, sunucudaki SSH config dosyasında parola girişini tamamen kapatabiliriz:
Unutmayın: Private anahtarınızı (`id_ed25519`) asla paylaşmayın ve güvende tutun!
4. Fail2ban ile Otomatik Engelleme Mekanizması Kurun
Tüm önlemleri alsanız bile, botlar yine de kapınızı yoklayacak. Fail2ban, belirli sayıda başarısız girişimden sonra, saldırganın IP adresini belli bir süreliğine güvenlik duvarında otomatik olarak engeller.
Fail2ban'ı kurun ve SSH için jail (hapsedilme) kuralını aktif edin:
Dosyada `[sshd]` bölümünü bulun ve aşağıdaki gibi düzenleyin (eğer portu değiştirdiyseniz `port = ssh` satırını `port = 45678` olarak güncelleyin):
Bu ayar, 3 başarısız denemeden sonra ilgili IP'yi 1 saat (3600 saniye) engeller.
Durumu kontrol etmek için: `sudo fail2ban-client status sshd`
5. Yalnızca Güvenilir IP Aralıklarına İzin Verin (İsteğe Bağlı, Ama Çok Güçlü)
Eğer sunucunuza yalnızca belirli yerlerden (örneğin ofis IP'niz) erişmeniz gerekiyorsa, SSH erişimini sadece o IP'lere açabilirsiniz. Ubuntu'da bunun en kolay yolu `UFW` (Uncomplicated Firewall) kullanmaktır.
Önce UFW'yi kurup, yeni SSH portunuzu ve izin vermek istediğiniz IP'yi ekleyin:
Uyarı: Bu kuralı eklemeden önce kendi IP'nizin doğru olduğundan ve bağlantınızın aktif olduğundan emin olun! Aksi takdirde kendinizi kilitleyebilirsiniz.
Tüm bu değişiklikleri yaptıktan sonra, son bir kez SSH servisini yeniden başlatmayı unutmayın ve yeni bir oturum açarak her şeyin çalıştığını test edin.
Bu 5 adım, sunucunuzun SSH katmanını bir kaleye dönüştürecek. Siz sunucularınızda ekstra hangi SSH güvenlik önlemlerini alıyorsunuz? Özellikle yüksek trafikli sistemlerde farklı taktikleriniz var mı? Yorumlarda deneyimlerinizi paylaşın!
Selam sistemciler!
1. Varsayılan SSH Portunu Değiştirin (Port Knocking'den Daha Basiti)
Varsayılan 22 numaralı port, otomatik tarama yapan botların ilk hedefi. Portu değiştirmek, gürültüyü ciddi oranda azaltır.
Bash:
sudo nano /etc/ssh/sshd_config
Açılan dosyada `#Port 22` satırını bulun, başındaki `#` işaretini kaldırın ve 22 yerine 1024-65535 arasında, başka bir servis tarafından kullanılmayan bir port numarası yazın (örneğin: 45678).
NGINX:
Port 45678
Değişikliği kaydedip çıkın ve SSH servisini yeniden başlatın. DİKKAT: Bu işlemi yaparken mevcut SSH bağlantınızı kapatmayın! Yeni bir terminal penceresinden yeni portla bağlanabildiğinizi test ettikten sonra eski bağlantıyı kapatın.
Bash:
sudo systemctl restart sshd
2. Kök (Root) Kullanıcı ile Doğrudan SSH Bağlantısını Engelleleyin
Root kullanıcı, saldırganların tahmin etmeye çalıştığı ilk isim. Doğrudan root ile bağlanmayı yasaklayıp, önce normal bir kullanıcı ile bağlanıp ardından `sudo` komutu ile yükseltmek çok daha güvenli.
Aynı config dosyasında şu satırı bulun veya ekleyin:
NGINX:
PermitRootLogin no
3. Parola ile Kimlik Doğrulamayı Kapatıp, SSH Anahtarlarına Geçin
Bu, belki de yapabileceğiniz en güçlü güvenlik önlemi. Parolalar kaba kuvvet saldırılarına açıktır, ancak şifreli SSH anahtarları (key-pair) neredeyse kırılamaz.
Öncelikle, kendi bilgisayarınızda (istemcide) bir anahtar çifti oluşturun (Eğer yoksa):
Bash:
ssh-keygen -t ed25519 -C "email@orneksite.com"
Oluşturduğunuz public key'i (`id_ed25519.pub`) sunucunuza kopyalayın:
Bash:
ssh-copy-id -p 45678 kullanici_adiniz@sunucu_ip_adresi
Artık sunucudaki `~/.ssh/authorized_keys` dosyasında public anahtarınız var. Şimdi, sunucudaki SSH config dosyasında parola girişini tamamen kapatabiliriz:
NGINX:
PasswordAuthentication no
PubkeyAuthentication yes
Unutmayın: Private anahtarınızı (`id_ed25519`) asla paylaşmayın ve güvende tutun!
4. Fail2ban ile Otomatik Engelleme Mekanizması Kurun
Tüm önlemleri alsanız bile, botlar yine de kapınızı yoklayacak. Fail2ban, belirli sayıda başarısız girişimden sonra, saldırganın IP adresini belli bir süreliğine güvenlik duvarında otomatik olarak engeller.
Fail2ban'ı kurun ve SSH için jail (hapsedilme) kuralını aktif edin:
Bash:
sudo apt update && sudo apt install fail2ban -y
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local
Dosyada `[sshd]` bölümünü bulun ve aşağıdaki gibi düzenleyin (eğer portu değiştirdiyseniz `port = ssh` satırını `port = 45678` olarak güncelleyin):
NGINX:
[sshd]
enabled = true
port = 45678
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 3600
Bu ayar, 3 başarısız denemeden sonra ilgili IP'yi 1 saat (3600 saniye) engeller.
Bash:
sudo systemctl restart fail2ban
sudo systemctl enable fail2ban
Durumu kontrol etmek için: `sudo fail2ban-client status sshd`
5. Yalnızca Güvenilir IP Aralıklarına İzin Verin (İsteğe Bağlı, Ama Çok Güçlü)
Eğer sunucunuza yalnızca belirli yerlerden (örneğin ofis IP'niz) erişmeniz gerekiyorsa, SSH erişimini sadece o IP'lere açabilirsiniz. Ubuntu'da bunun en kolay yolu `UFW` (Uncomplicated Firewall) kullanmaktır.
Önce UFW'yi kurup, yeni SSH portunuzu ve izin vermek istediğiniz IP'yi ekleyin:
Bash:
sudo apt install ufw -y
sudo ufw allow from 88.255.100.50 to any port 45678
sudo ufw enable
Uyarı: Bu kuralı eklemeden önce kendi IP'nizin doğru olduğundan ve bağlantınızın aktif olduğundan emin olun! Aksi takdirde kendinizi kilitleyebilirsiniz.
Tüm bu değişiklikleri yaptıktan sonra, son bir kez SSH servisini yeniden başlatmayı unutmayın ve yeni bir oturum açarak her şeyin çalıştığını test edin.
Bash:
sudo systemctl restart sshd
Bu 5 adım, sunucunuzun SSH katmanını bir kaleye dönüştürecek. Siz sunucularınızda ekstra hangi SSH güvenlik önlemlerini alıyorsunuz? Özellikle yüksek trafikli sistemlerde farklı taktikleriniz var mı? Yorumlarda deneyimlerinizi paylaşın!