Rehber Yeni VDS'te İlk 30 Dakika: Ubuntu Sunucu Güvenliği İçin Adım Adım Kontrol Listesi

Yeni bir VDS teslim aldığınızda sunucu, internete açık ve genellikle yalnızca root şifresiyle korunur durumdadır. Otomatik tarayıcıların SSH portunu dakikalar içinde bulduğunu düşünürsek, ilk yarım saatte yapacağınız birkaç ayar sunucunun geleceği için belirleyicidir. Aşağıdaki adımlar Ubuntu 24.04 ve 26.04 üzerinde denenmiş, sade bir başlangıç listesidir.

1. Sistemi güncelleyin​

Bash:
sudo apt update && sudo apt full-upgrade -y
# Çekirdek güncellendiyse:
sudo reboot

2. Root yerine yetkili bir kullanıcı oluşturun​

Bash:
adduser yonetici
usermod -aG sudo yonetici
Bundan sonraki işlemleri bu kullanıcıyla ve gerektiğinde sudo ile yapacağız.

3. SSH anahtarıyla giriş​

Şifre yerine anahtar kullanmak, kaba kuvvet saldırılarını pratikte anlamsız hâle getirir. Kendi bilgisayarınızda:
Bash:
ssh-keygen -t ed25519 -C "benim-laptopum"
ssh-copy-id yonetici@SUNUCU_IP
Ardından yeni bir terminalde ssh yonetici@SUNUCU_IP ile şifre sormadan girebildiğinizi doğrulayın.

4. Root girişini ve şifreli girişi kapatın​

Ubuntu'da ana yapılandırma dosyası en başta /etc/ssh/sshd_config.d/ klasöründeki dosyaları okur ve bir ayar için ilk okunan değer geçerli olur. Bulut imajlarında bu klasörde çoğu zaman şifreli girişi açan bir 50-cloud-init.conf bulunur. Bu yüzden kendi dosyanızın adını 00 ile başlatın:
Bash:
sudo tee /etc/ssh/sshd_config.d/00-guvenlik.conf > /dev/null <<'EOF'
PermitRootLogin no
PasswordAuthentication no
KbdInteractiveAuthentication no
EOF

sudo sshd -t && sudo systemctl restart ssh
sudo sshd -T | grep -Ei 'permitrootlogin|passwordauthentication'
Son komutun çıktısında permitrootlogin no ve passwordauthentication no görmelisiniz. Mevcut oturumu kapatmadan yeni bir terminalden giriş yapabildiğinizi test edin; bir hata varsa açık oturum sizi kurtarır.

Not: Ubuntu'nun yeni sürümlerinde SSH, systemd soket etkinleştirmesiyle çalışır. Portu değiştirmek isterseniz yalnızca sshd yapılandırması yetmez; ssh.socket ayarlarını da güncellemeniz gerekir. Başlangıç için port değiştirmek şart değil, anahtarla giriş çok daha etkili bir önlem.

5. Güvenlik duvarını etkinleştirin​

Bash:
sudo ufw allow OpenSSH
sudo ufw allow 80,443/tcp     # web sunucusu çalışacaksa
sudo ufw enable
sudo ufw status verbose
SSH kuralını eklemeden ufw'yi etkinleştirmeyin; aksi hâlde kendinizi sunucunun dışında bırakırsınız.

6. Fail2ban ile tekrar eden denemeleri engelleyin​

Bash:
sudo apt install -y fail2ban
sudo tee /etc/fail2ban/jail.local > /dev/null <<'EOF'
[sshd]
enabled  = true
maxretry = 5
findtime = 10m
bantime  = 1h
EOF
sudo systemctl restart fail2ban
sudo fail2ban-client status sshd
Son komut hapisteki (jail) IP'leri gösterir. Servis günlük dosyasını bulamadığı için başlamıyorsa jail.local'daki [sshd] bölümüne backend = systemd satırını ekleyip yeniden başlatın.

7. Otomatik güvenlik güncellemeleri​

Bash:
sudo apt install -y unattended-upgrades
sudo dpkg-reconfigure --priority=low unattended-upgrades
Bu ayar güvenlik yamalarının siz unutsanız bile kurulmasını sağlar.

8. Küçük ama faydalı ayarlar​

Bash:
sudo timedatectl set-timezone Europe/Istanbul   # günlüklerde doğru saat
sudo ss -tulpn                                  # hangi servis hangi portu dinliyor?
Dinleyen portlar listesinde tanımadığınız bir servis görürseniz kapatmadan önce ne işe yaradığını araştırın. Veritabanı gibi servislerin yalnızca 127.0.0.1 üzerinde dinlemesi idealdir.

Sık yapılan hatalar​

  • SSH kuralı eklemeden güvenlik duvarını açmak: En yaygın "kendini kilitleme" sebebi.
  • Anahtarı tek bir cihazda tutmak: Bilgisayarınız bozulursa sunucuya erişemezsiniz. Özel anahtarınızın güvenli bir yedeğini alın ya da ikinci bir cihaz için ayrı bir anahtar ekleyin.
  • Sudo yetkisini test etmeden root'u kapatmak: Yeni kullanıcıyla sudo whoami komutunun "root" döndürdüğünü doğrulamadan root girişini kapatmayın.
  • "Acil durum için" şifreli girişi açık bırakmak: Acil durumlar için sağlayıcınızın web tabanlı konsolunu (VNC/KVM) kullanın; SSH'ı şifreye açık bırakmak kaba kuvvet saldırılarına kapı bırakır.
  • Güncellemeleri ertelemek: Otomatik güvenlik güncellemeleri açık olsa bile çekirdek güncellemeleri için ara ara yeniden başlatma gerekir.

9. Geri dönüş noktası oluşturun​

Sağlayıcınız snapshot sunuyorsa bu temiz ve güvenli hâlin bir kopyasını alın. Sonraki kurulumlarda bir şeyler ters giderse dakikalar içinde bu noktaya dönebilirsiniz.

Sonraki adımlar​

  • Web sunucusu ve PHP kurulumunu yaparken yalnızca ihtiyaç duyduğunuz modülleri etkinleştirin.
  • Veritabanı sunucusunu yalnızca yerel bağlantılara açın ve uygulama başına ayrı kullanıcı tanımlayın.
  • Düzenli yedekleme planı kurun ve yedeğin geri yüklenebildiğini en az bir kez test edin.
  • Disk, bellek ve servis durumunu izleyen basit bir izleme ve uyarı sistemi ekleyin.

Bu liste bir başlangıç; üzerine kuracağınız web sunucusu, veritabanı ve uygulamaların da kendi güvenlik ayarları olacak. Siz yeni bir sunucuda ilk olarak neyi yapıyorsunuz? Kendi kontrol listenizi yorumlarda paylaşırsanız bu konuyu birlikte geliştirebiliriz.
 
Geri
En Üst