Linux Sunucu Güvenliği için 7 Temel Önlem
Bir Linux sunucuyu internete açtığınız anda saldırılar başlar. Logları 24 saat takip ettiğinizde, port 22'ye dakikada birkaç SSH brute-force denemesi düşer. Bu yazıda her production sunucumuzda ilk kurulum sırasında uyguladığımız 7 önlemi paylaşıyorum.
1. SSH'ı key-only yapın, root login'u kapatın
Parola tabanlı SSH brute-force saldırılarına açık demektir. /etc/ssh/sshd_config dosyasında:
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
ChallengeResponseAuthentication noÖnce key'inizin sunucuda kayıtlı olduğundan emin olun (test bir oturum açıp bağlantıyı koparmadan systemctl reload sshd). Aksi halde kendinizi kilitlersiniz.
2. Firewall — varsayılan deny, sadece gerekli portlar
UFW veya iptables'la başlayın:
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow OpenSSH
sudo ufw allow 'Nginx Full'
sudo ufw enableCloud sağlayıcısı (AWS, Oracle, GCP) ek olarak network seviyesinde firewall sunar. İkisi de açık olmalı — birinin diğerini geçersiz kılmadığı katmanlı savunma.
3. Fail2ban — brute-force'a otomatik IP banı
SSH key-only olsa bile loglarda gürültü yapar. Fail2ban başarısız denemelerden sonra IP'yi banlar:
sudo apt install fail2ban
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.localjail.local içinde SSH için bantime 1 saat, maxretry 3 deneyin. Web sunucusunda nginx-http-auth jail'i de eklenebilir.
4. Otomatik güvenlik güncellemeleri
Ubuntu'da unattended-upgrades kuruludur ama varsayılan olarak sadece güvenlik güncellemeleri yapar — bu doğru. Production sunucuda full package upgrade otomatik OLMAMALI çünkü compatibility breakage olur. Yalnız security patch'leri:
sudo dpkg-reconfigure --priority=low unattended-upgrades/etc/apt/apt.conf.d/20auto-upgrades içinde Unattended-Upgrade::Automatic-Reboot "false" diyerek otomatik reboot'u kapatın — bunu siz planlı pencerede yapın.
5. Audit log — kim ne yaptı
auditd hangi process hangi dosyayı açtı, hangi syscall çağırıldı diye kayıt tutar. Olay sonrası forensic için kritik:
sudo apt install auditd
sudo systemctl enable --now auditd
# Hassas dosyalar için watch
sudo auditctl -w /etc/passwd -p wa -k passwd_changes
sudo auditctl -w /etc/shadow -p wa -k shadow_changesAudit kuralları kalıcı yapmak için /etc/audit/rules.d/audit.rules dosyasına yazın.
6. SELinux veya AppArmor — process izolasyonu
RHEL/Rocky/AlmaLinux'ta SELinux, Ubuntu/Debian'da AppArmor var. İkisi de Mandatory Access Control sağlar — bir process ele geçirilse bile zarar verebileceği yer kısıtlanır. SELinux'u kapatma alışkanlığı yaygın ama yanlış. Hata veriyorsa sealert ile tanı koyup policy ekleyin.
7. Düzenli denetim ve takip
Tek seferlik “sertleştirdim, bitti” yaklaşımı yanlış. Aylık denetimde kontrol edilmesi gerekenler: gereksiz açık portlar (ss -tlnp), gereksiz çalışan servisler (systemctl list-units), tüm kullanıcı listesi (cat /etc/passwd), sudo log'u (/var/log/auth.log "sudo" satırları). Bu işi SIEM'e (Wazuh) yıkmak ölçeklendiğinde daha pratik.
Sonuç
Bu 7 önlem ortalama 1-2 saatte uygulanır ve sunucunuzun saldırı yüzeyini büyük ölçüde daraltır. Kritik sunucularda CIS benchmark (Center for Internet Security) takip ederek 100+ kontrol noktasına kadar derinleşebilirsiniz — ama 80/20 kuralı: bu 7 madde kazanımın %80'ini sağlar.
Bu konuda yardım ister misiniz?
Yazıdaki konularla ilgili kurumsal projeniz varsa veya uygulamada takıldıysanız, bize yazın.
Diğer yazılarımız
15 Mayıs 2026 · 5 dk
Active Directory Replikasyon Komutları: Çoklu DC Ortamında Sağlık İzleme
Birden fazla Domain Controller'ın replikasyon sağlığını izlemek ve sorun gidermek için pratik repadmin komutları — replsummary, queue, showrepl, syncall.
Oku14 Mayıs 2026 · 6 dk
Yedekleme Stratejisi: 3-2-1 Kuralı ve Ransomware Çağı
Klasik 3-2-1 yedekleme kuralı ransomware ortamında hala geçerli mi? Pratik uyarlamalar ve immutable backup yaklaşımı.
Oku