6 dk okuma

Linux Sunucu Güvenliği için 7 Temel Önlem

linuxgüvenliksunucu yönetimi

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 enable

Cloud 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.local

jail.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_changes

Audit 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