İlk on dakika neden önemli?
Yeni bir VPS genel bir IP adresi aldığı anda, otomatik botlar SSH üzerinden yaygın kullanıcı adı ve parolaları denemeye başlar. Hemen her yeni sunucunun günlüğünde bunu birkaç dakika içinde görebilirsiniz. Sunucu hazırlıklıysa bunun bir tehlikesi yoktur; on dakikalık temel ayarlar bu saldırıları boşa çıkarmaya yeter.
Bu rehber Ubuntu 22.04 veya 24.04 üzerinde (Debian'da da neredeyse aynıdır) olağan ilk adımları anlatır: sistemi güncelleme, normal kullanıcı oluşturma, parola yerine SSH anahtarıyla giriş, güvenlik duvarını açma, otomatik güvenlik güncellemelerini etkinleştirme ve Fail2ban kurma. Tek ihtiyacınız bir terminal, sunucunun IP adresi ve root bilgileridir.
1. adım: Giriş yapın ve sistemi güncelleyin
Sunucu panelindeki IP adresiyle root olarak bağlanın:
ssh root@SUNUCU_IPArdından paket listesini yenileyin ve bekleyen tüm güncellemeleri kurun:
apt update && apt upgrade -yYeni bir çekirdek kurulduysa sistem yeniden başlatma isteyecektir. reboot komutunu verin, bir dakika bekleyin ve tekrar bağlanın.
2. adım: sudo yetkili normal kullanıcı oluşturun
Sürekli root olarak çalışmak risklidir; yanlış bir komut sistemi bozabilir. Normal bir kullanıcı oluşturup sudo yetkisi verin:
adduser deploy
usermod -aG sudo deploydeploy yerine istediğiniz adı seçebilirsiniz; parola uzun ve benzersiz olsun. Bu parola girişte değil, yalnızca sudo için kullanılacak.
3. adım: SSH anahtarıyla girişi kurun
SSH anahtar çifti her paroladan çok daha güçlüdür. Özel anahtar bilgisayarınızda kalır, sunucuya yalnızca genel anahtar kopyalanır.
Kendi bilgisayarınızda (Linux, macOS veya Windows PowerShell) anahtar üretin:
ssh-keygen -t ed25519 -C "vps-anahtarim"Varsayılan konumu kabul edin ve bir parola ifadesi (passphrase) belirleyin. Sonra genel anahtarı yeni kullanıcıya kopyalayın:
ssh-copy-id deploy@SUNUCU_IPWindows'ta ssh-copy-id yoksa id_ed25519.pub dosyasının içeriğini sunucudaki /home/deploy/.ssh/authorized_keys dosyasına yapıştırın.
Şimdi ikinci bir terminal açıp deneyin:
ssh deploy@SUNUCU_IP
sudo whoamiİkinci komut root yazdırmalı. Bu çalışana kadar ilk oturumu açık tutun; böylece kendinizi dışarıda bırakmazsınız.
4. adım: Parola ve root girişini kapatın
Anahtarla giriş çalışınca parolayı ve doğrudan root girişini yasaklayın. Güncel Ubuntu'da temiz yöntem ek yapılandırma dosyasıdır:
sudo nano /etc/ssh/sshd_config.d/00-hardening.confİçeriği şöyle olsun:
PermitRootLogin no
PasswordAuthentication no
KbdInteractiveAuthentication noSözdizimini denetleyin ve servisi yeniden yükleyin:
sudo sshd -t
sudo systemctl reload sshHiçbir şeyi kapatmadan önce üçüncü bir terminalde ssh deploy@SUNUCU_IP komutunun hâlâ çalıştığını doğrulayın. sudo sshd -T | grep -i passwordauthentication çıktısı no olmalı. Bazı bulut imajları parolaya izin veren kendi dosyasını getirir; SSH dosyaları alfabetik sırayla okur ve ilk değer geçerli olur, bu yüzden dosya adı 00- ile başlıyor.
5. adım: UFW güvenlik duvarını açın
UFW (Uncomplicated Firewall) Ubuntu'da hazır gelir. Mantık basit: gelen her şeyi engelle, yalnızca gerekeni aç. Önce SSH'ı izin listesine alın, yoksa kendi bağlantınızı kesersiniz:
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow OpenSSH
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
sudo ufw status verbose80 ve 443 portlarını yalnızca sunucu web sitesi yayınlayacaksa açın. Veritabanı, yönetim paneli veya oyun sunucusu gibi diğer hizmetlere port ancak gerektiğinde, mümkünse yalnızca kendi IP adresiniz için açılmalı: sudo ufw allow from EV_IP to any port 5432.
6. adım: Otomatik güvenlik güncellemelerini açın
Saldırıların çoğu, yaması çoktan yayımlanmış bilinen açıkları kullanır. Ubuntu güvenlik yamalarını kendisi kursun:
sudo apt install unattended-upgrades -y
sudo dpkg-reconfigure --priority=low unattended-upgradesSoruya "Yes" deyin. Çekirdek güncellemeleri ara sıra yeniden başlatma gerektirir; zaman zaman ls /var/run/reboot-required ile bakın, dosya varsa sunucuyu sakin bir saatte yeniden başlatın.
7. adım: Kaba kuvvete karşı Fail2ban
Fail2ban günlükleri okur ve art arda giriş denemesi başarısız olan IP adreslerini geçici olarak engeller:
sudo apt install fail2ban -y
sudo systemctl enable --now fail2ban
sudo fail2ban-client status sshdVarsayılan ayarlar SSH'ı zaten korur. Yalnızca anahtarla girişte botlar zaten içeri giremez, ama Fail2ban günlükleri temiz tutar ve biraz işlemci tasarrufu sağlar.
Her yeni sunucu için kontrol listesi
- Sistem güncel ve yeniden başlatılmış.
- sudo'lu normal kullanıcı var; root girişi kapalı.
- Parola ile giriş kapalı, SSH anahtarı passphrase'li.
- UFW açık, yalnızca gerekli portlar izinli.
- Otomatik güvenlik güncellemeleri açık.
- Fail2ban çalışıyor.
- Kaybetmek istemediğiniz veriler için yedek veya anlık görüntü (snapshot) var.
Bonus: yedek almayı unutmayın
Güvenlik duvarı ve anahtarlar saldırıları azaltır ama disk arızası, yanlış silinen dosya veya hatalı bir güncellemeye karşı koruma sağlamaz. Önemli verileriniz için düzenli yedek planlayın: sağlayıcının anlık görüntüsü (snapshot) yanında, veritabanı dökümlerini ve yapılandırma dosyalarını rsync ile başka bir sunucuya kopyalamak iyi bir alışkanlıktır. Yedeği geri yükleyebildiğinizi ayda bir kez denemek, yedeğin kendisi kadar önemlidir.
Sunucuyu nerede çalıştırmalı?
Güvenlik kararın yalnızca yarısı; konum da hızı etkiler. Ziyaretçileriniz Türkiye veya Avrupa'daysa Almanya ya da lokasyonlar sayfasındaki başka bir veri merkezi genellikle en düşük gecikmeyi verir. HironServer ile 50'den fazla ülkede saatlik, haftalık veya aylık faturalamayla Ubuntu sunucu açıp konumu düşük maliyetle deneyebilirsiniz; güncel planlar için fiyatlar sayfasına bakın.
Sık sorulan sorular
SSH'ı 22 portunda bırakmak güvenli mi?
Evet, parolayla giriş kapalı ve anahtar kullanıyorsanız. Portu değiştirmek yalnızca günlük gürültüsünü azaltır, gerçek bir güvenlik önlemi değildir. Anahtar ve güvenlik duvarı çok daha önemlidir.
Kendimi dışarıda bıraktım, ne yapmalıyım?
Sağlayıcınızın panelindeki web veya VNC konsolunu kullanın; bu konsol SSH'a bağlı değildir. Oradan SSH yapılandırmasını veya UFW kurallarını düzeltebilirsiniz. Bu yüzden ayar değiştirirken çalışan bir oturumu açık tutmalısınız.
Parolayı kapattıysam Fail2ban gerekli mi?
İsteğe bağlı. Yalnızca anahtarla çalışan SSH'a ek koruması az olsa da web paneli gibi giriş gerektiren başka hizmetleriniz varsa faydalıdır.
Her uygulama için ayrı kullanıcı kullanmalı mıyım?
İdeal olan evet. Her hizmeti kendi yetkisiz kullanıcısıyla çalıştırmak, bir uygulama ele geçirilirse zararı sınırlar.
Ne sıklıkla güncelleme yapmalıyım?
Güvenlik güncellemelerini otomatik bırakın; bir iki haftada bir bağlanıp sudo apt update && sudo apt upgrade çalıştırın ve reboot-required dosyasına bakın.