Ubuntu Sunucu Güvenliği: UFW, fail2ban, SSH Sıkılaştırma
Son güncelleme: 23 Eylül 2026
İnternete açık her sunucu, kurulduğu ilk dakikadan itibaren otomatik saldırı taramasına maruz kalır. İyi haber: temel bir sıkılaştırma, saldırıların büyük çoğunluğunu anlamsız kılar. Bu rehber yeni bir Ubuntu 22.04/24.04 sunucusunu ilk saatte güvene alır.
1. Güncel kalın
Yamanmamış yazılım, sunucu ele geçirmelerinin bir numaralı sebebidir.
sudo apt update && sudo apt upgrade -y
Otomatik güvenlik güncellemelerini açın:
sudo apt install unattended-upgrades -y
sudo dpkg-reconfigure --priority=low unattended-upgrades
2. Firewall: UFW
UFW (Uncomplicated Firewall), yalnızca ihtiyaç duyduğunuz portları açık bırakır.
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow OpenSSH
sudo ufw allow 80,443/tcp
sudo ufw enable
sudo ufw status verbose
ufw enable komutundan önce mutlaka ufw allow OpenSSH çalıştırın. Aksi halde aktif SSH oturumunuz kapanır ve sunucuya erişemezsiniz.
Veritabanı (3306), Redis (6379) gibi servisleri asla internete açmayın — yalnızca localhost veya özel ağ üzerinden erişin.
3. SSH sıkılaştırma
Önce SSH anahtarı kurun ve çalıştığını doğrulayın. Sonra /etc/ssh/sshd_config:
PermitRootLogin no
PasswordAuthentication no
KbdInteractiveAuthentication no
X11Forwarding no
MaxAuthTries 3
sudo systemctl restart ssh
SSH portunu değiştirmek gerekli mi?
Şart değil. Anahtar girişi zorunluysa varsayılan port 22'de kalmak güvenlik açısından sorun değildir; sadece log gürültüsünü azaltmak için farklı bir port seçebilirsiniz. Değiştirirseniz UFW kuralını da güncelleyin.
4. fail2ban
fail2ban, tekrar tekrar başarısız giriş denemesi yapan IP'leri otomatik banlar.
sudo apt install fail2ban -y
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
/etc/fail2ban/jail.local içinde [sshd] bölümü:
[sshd]
enabled = true
maxretry = 3
bantime = 1h
findtime = 10m
sudo systemctl restart fail2ban
sudo fail2ban-client status sshd
5. Paylaşılan sorumluluk: uygulama katmanı
- Web sunucusu: Nginx/Apache'de sunucu imzasını kapatın, güvenlik başlıklarını ekleyin (HSTS, X-Content-Type-Options, X-Frame-Options).
- Veritabanı: Ayrı, güçlü parolalar;
bind-address = 127.0.0.1; kullanılmayan varsayılan hesapları silin. - Uygulama: Framework ve bağımlılıkları güncel tutun;
.envve yedek dosyalarını web köküne koymayın. - SSL: Her siteye Let's Encrypt ile HTTPS.
6. Yedekleme — güvenliğin ayrılmaz parçası
Fidye yazılımı, silme hatası veya disk arızası karşısında tek gerçek koruma yedektir.
- 3-2-1 kuralı: 3 kopya, 2 farklı ortam, 1'i farklı lokasyonda.
- Yedekleri başka bir sunucuya/depolamaya gönderin — aynı sunucudaki yedek, sunucu gidince gider.
- Ayda bir geri yükleme testi yapın; test edilmemiş yedek yedek değildir.
7. İzleme
sudo journalctl -u ssh --since "1 hour ago"— giriş denemelerisudo lastb— başarısız girişlersudo apt install auditd -y— sistem çağrısı denetimi (isteğe bağlı, ileri seviye)- Bir uptime/monitoring servisi ile sunucunun ayakta olduğunu dışarıdan izleyin.
Hızlı kontrol listesi
- ☐ Sistem güncel + unattended-upgrades açık
- ☐ UFW etkin, yalnızca 22/80/443 açık
- ☐ SSH: root kapalı, parola kapalı, anahtar zorunlu
- ☐ fail2ban çalışıyor
- ☐ Veritabanı yalnızca localhost'a bağlı
- ☐ Otomatik, sunucu-dışı yedek + geri yükleme testi
- ☐ Tüm siteler HTTPS
Sık sorulan sorular
Yeni bir Ubuntu sunucuda minimum güvenlik için ne yapmalıyım?
SSH portunu 22'den değiştirmek gerçekten güvenlik sağlar mı?
fail2ban ne işe yarar?
Yedekleme güvenliğin parçası mı?
Bu makale yardımcı oldu mu?
Teşekkürler, geri bildirimin kaydedildi.
Hâlâ takıldıysan destek talebi aç.