Ubuntu Server ortamlarında uzaktan erişim için kullanılan SSH (Secure Shell), sistem güvenliğinin temel taşlarından biridir.
Ubuntu Server ortamlarında uzaktan erişim için kullanılan SSH (Secure Shell), sistem güvenliğinin temel taşlarından biridir. Varsayılan ayarlarıyla gelen SSH servisi, brute force saldırıları ve yetkisiz erişim girişimlerine karşı savunmasız olabilir. Bu makalede, Ubuntu Server üzerinde SSH’ı güvenli hale getirmek için adım adım konfigürasyon rehberi sunacağız. Kurumsal ortamlarda standartlaşmış bu işlemler, sunucu güvenliğini artırırken erişim kolaylığını korur. Temel güncellemelerden başlayarak anahtar tabanlı kimlik doğrulamaya ve ek koruma katmanlarına kadar pratik talimatlar vereceğiz.
İlk adım, sistemin ve SSH paketinin en güncel sürüme yükseltilmesidir. Ubuntu Server’da terminali açın ve şu komutları sırayla çalıştırın: sudo apt update ardından sudo apt upgrade -y. SSH servisini yeniden başlatmak için sudo systemctl restart ssh komutunu kullanın. Bu işlem, bilinen güvenlik açıklarını kapatır ve stabilite sağlar.
Sonraki aşamada, SSH konfigürasyon dosyasını düzenleyin. Dosya konumunda /etc/ssh/sshd_config bulunur. sudo nano /etc/ssh/sshd_config ile açın. Temel güvenlik için şu değişiklikleri yapın: Port 22 satırını Port 2222 olarak değiştirin (standart portu gizlemek için). PermitRootLogin yesu PermitRootLogin no olarak ayarlayın. PasswordAuthentication yesu PasswordAuthentication no olarak değiştirin (anahtar tabanlı doğrulamaya geçiş için). Değişiklikleri kaydedin ve sudo systemctl restart ssh ile uygulayın. Bu ayarlar, root erişimini engelleyerek ve şifre kullanımını kısıtlayarak saldırıları minimize eder.
Varsayılan 22 numaralı port, otomatik tarama araçları tarafından hedef alınır. Portu 2222’ye taşımak, trafiği filtreleyen firewall kurallarıyla birleştiğinde etkin koruma sağlar. Firewall için UFW kullanıyorsanız, sudo ufw allow 2222/tcp ve sudo ufw deny 22/tcp komutlarını çalıştırın, ardından sudo ufw reload. Bu değişiklik, yalnızca yetkili istemcilerin erişmesini sağlar ve loglarda şüpheli trafiği belirginleştirir. Kurumsal ağlarda, bu port değişikliği standart prosedürdür ve izleme araçlarıyla entegre edilebilir.
Root hesabının doğrudan SSH üzerinden erişime kapatılması, yetkisiz giriş denemelerini önler. Bunun yerine sudo yetkisi olan normal bir kullanıcı oluşturun: sudo adduser adminuser ve sudo usermod -aG sudo adminuser. Artık tüm işlemler bu kullanıcıyla yapılmalıdır. Bu yaklaşım, hesap izolasyonu sağlar ve olası ihlallerde zararı sınırlar. Ek olarak, MaxAuthTries 3 satırını ekleyerek başarısız deneme sayısını sınırlayın; bu, brute force saldırılarını yavaşlatır.
Şifre tabanlı erişim yerine RSA veya ED25519 anahtar çifti kullanmak, güvenlik seviyesini dramatik artırır. İstemci makinede (örneğin yerel bilgisayarınızda) ssh-keygen -t ed25519 -C "[email protected]" komutunu çalıştırın. Varsayılan konumda (~/.ssh/id_ed25519) anahtarlar oluşur. Public anahtarı sunucuya kopyalamak için ssh-copy-id adminuser@server-ip -p 2222 kullanın. Sunucuda ~/.ssh/authorized_keys dosyasına public anahtar eklenir.
Sunucuda konfigürasyonu doğrulayın: sudo nano /etc/ssh/sshd_config içinde PubkeyAuthentication yes etkin olsun. Yeniden başlatma sonrası, ssh adminuser@server-ip -p 2222 ile test edin. Şifre sormadan giriş yapmalıdır. Anahtar dosyasını korumak için istemcide chmod 600 ~/.ssh/id_ed25519 uygulayın. Bu yöntem, şifre hırsızlığına karşı dirençlidir ve çok faktörlü kimlik doğrulamayla (örneğin Google Authenticator) genişletilebilir.
ED25519 anahtar tipi, hız ve güvenlik dengesiyle tercih edilir. Üretim sırasında passphrase ekleyin: ssh-keygen sırasında sorulduğunda güçlü bir şifre girin. Bu, anahtar dosyasının şifrelenmesini sağlar. Sunucuya yüklerken, ssh-copy-id yerine manuel kopyalama yapabilirsiniz: cat ~/.ssh/id_ed25519.pub çıktısını sunucudaki authorized_keys’e yapıştırın. Dosya izinlerini ayarlayın: chmod 700 ~/.ssh ve chmod 600 ~/.ssh/authorized_keys. Bu adımlar, yetkisiz okuma girişimlerini engeller.
Fail2Ban gibi araçlar, tekrarlanan başarısız giriş denemelerini IP tabanlı engelleyerek brute force saldırılarını durdurur. Ubuntu’da sudo apt install fail2ban -y ile yükleyin. Konfigürasyon için sudo nano /etc/fail2ban/jail.local oluşturun ve şu içeriği ekleyin:
sudo systemctl restart fail2ban ile etkinleştirin. Logları sudo fail2ban-client status sshd ile izleyin. Ayrıca, sudo nano /etc/ssh/sshd_configte LoginGraceTime 30 ve ClientAliveInterval 300 ekleyin; bu, bağlantı zaman aşımını yönetir ve kaynak tüketimini önler.
UFW’yi etkinleştirerek yalnızca belirli IP’lerden erişime izin verin: sudo ufw default deny incoming, sudo ufw default allow outgoing, sudo ufw allow from 192.168.1.0/24 to any port 2222 (ağınıza göre uyarlayın). sudo ufw enable ile aktifleştirin. Durumu sudo ufw status verbose ile kontrol edin. Bu, coğrafi kısıtlamalarla birleştiğinde katmanlı savunma oluşturur ve DDoS benzeri trafiğe karşı korur.
Bu konfigürasyonlar uygulandığında, Ubuntu Server’ınız SSH üzerinden yüksek güvenlik seviyesine ulaşır. Düzenli log inceleme (sudo tail -f /var/log/auth.log) ve yedekleme alışkanlıklarıyla riskleri minimize edin. Kurumsal kullanımda, bu adımlar standart denetim kriterlerini karşılar ve kesintisiz erişim sağlar.