
İnternete açık her Ubuntu sunucu, kurulduğu andan itibaren otomatik taramaların hedefidir. Bu rehberde yeni kurulmuş bir Ubuntu Server'ı birkaç adımda güvenli bir başlangıç seviyesine getiriyoruz: güncel paketler, yetkili kullanıcı, anahtarla SSH girişi, UFW güvenlik duvarı, Fail2ban ve log denetimi.
1. Sistemi güncelleyin ve otomatik güvenlik yamalarını açın
İlk iş, tüm paketleri güncellemek ve kritik güvenlik yamalarının otomatik yüklenmesini sağlamaktır.
sudo apt update && sudo apt full-upgrade -y
sudo apt install unattended-upgrades -y
sudo dpkg-reconfigure --priority=low unattended-upgrades2. Root yerine yetkili bir kullanıcıyla çalışın
Günlük yönetim işlemlerini root hesabıyla yapmak, tek bir hatanın tüm sistemi etkilemesine yol açar. sudo yetkisine sahip ayrı bir kullanıcı oluşturun.
sudo adduser deploy
sudo usermod -aG sudo deploy3. SSH'ta parola yerine anahtar kullanın
Kendi bilgisayarınızda bir ED25519 anahtar çifti oluşturup açık anahtarı sunucuya kopyalayın.
# Kendi bilgisayarınızda
ssh-keygen -t ed25519 -C "deploy@sirketiniz"
ssh-copy-id deploy@SUNUCU_IPÖnemli: Anahtarla giriş yapabildiğinizi yeni bir terminal penceresinde doğrulamadan parola girişini kapatmayın; mevcut oturumunuzu da açık tutun.
4. SSH yapılandırmasını sıkılaştırın
Ana yapılandırma dosyasını değiştirmek yerine ayrı bir dosya oluşturmak, paket güncellemelerinde ayarlarınızın korunmasını sağlar. Aşağıdaki içeriği /etc/ssh/sshd_config.d/99-hardening.conf dosyasına kaydedin.
PermitRootLogin no
PasswordAuthentication no
KbdInteractiveAuthentication no
PubkeyAuthentication yes
MaxAuthTries 3
LoginGraceTime 30
AllowUsers deploy5. Yapılandırmayı test edip uygulayın
sshd -t komutu yapılandırmada hata varsa servisi yeniden yüklemeden önce sizi uyarır.
sudo sshd -t && sudo systemctl reload ssh6. UFW ile güvenlik duvarını yapılandırın
Varsayılan olarak tüm gelen bağlantıları reddedin, yalnızca ihtiyaç duyulan servislere izin verin. limit kuralı, kısa sürede çok sayıda bağlantı deneyen IP adreslerini geçici olarak engeller.
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw limit OpenSSH
sudo ufw allow 'Nginx Full' # yalnızca web sunucusu varsa
sudo ufw enable
sudo ufw status verbose7. Fail2ban ile kaba kuvvet denemelerini engelleyin
Fail2ban, log dosyalarını izleyerek tekrar tekrar başarısız giriş deneyen adresleri belirli bir süre engeller. Ayarlarınızı /etc/fail2ban/jail.local dosyasına yazın.
[sshd]
enabled = true
maxretry = 5
findtime = 10m
bantime = 1h8. Fail2ban'ı başlatın ve durumunu kontrol edin
sudo apt install fail2ban -y
sudo systemctl enable --now fail2ban
sudo fail2ban-client status sshd9. Logları düzenli denetleyin
Güvenlik, kurulumla bitmez. Şu komutlarla sunucunuza kimin, ne zaman erişmeye çalıştığını takip edebilirsiniz:
- journalctl -u ssh --since "1 hour ago" — son bir saatteki SSH olayları
- grep "Invalid user" /var/log/auth.log — var olmayan kullanıcılarla giriş denemeleri
- last -n 10 — son başarılı oturumlar
- sudo lastb -n 10 — son başarısız oturum denemeleri
- sudo ufw status numbered — aktif güvenlik duvarı kuralları
Kontrol listesi
- Paketler güncel ve otomatik güvenlik yamaları açık
- Root ile SSH girişi kapalı
- Parola ile giriş kapalı, yalnızca anahtar kabul ediliyor
- UFW aktif ve yalnızca gerekli portlar açık
- Fail2ban SSH denemelerini izliyor
- Log denetimi için periyodik kontrol planlandı

