Linux Sunucu Güvenlik Kontrol Listesi
Bir Linux sunucusu yayına alındığında, güvenlik yapılandırması başlangıçta değil sürekli olarak yönetilmesi gereken bir süreçtir. İnternete açık her sunucu, dakikalar içinde otomatize botların tarama hedefi haline gelir. Zayıf parola kullanan SSH portları, yamalanmamış paketler veya hatalı yapılandırılmış güvenlik duvarı kuralları; veri ihlalleri, fidye yazılımı saldırıları ve hizmet kesintileri gibi ciddi sonuçlara yol açabilir. Bu rehber, Linux sunucunuzu korumaya almak için uygulamanız gereken temel güvenlik adımlarını kapsamlı biçimde ele almaktadır.
1. SSH Güvenliği
SSH (Secure Shell), Linux sunucularının en temel uzaktan erişim protokolüdür. Aynı zamanda en çok saldırıya uğrayan giriş noktasıdır. Varsayılan port 22 üzerinde çalışan SSH servisi, brute-force saldırılarının birincil hedefidir.
Anahtar Tabanlı Kimlik Doğrulama (Key-Based Authentication)
Parola tabanlı kimlik doğrulamayı devre dışı bırakıp SSH anahtar çiftleri kullanmak, güvenliği dramatik biçimde artırır. Anahtar tabanlı doğrulamada sunucuya giriş yapmak için şifreyi bilmek yetmez; özel anahtarın (private key) fiziksel olarak elinizde bulunması gerekir.
- Yerel makinenizde SSH anahtar çifti oluşturun:
ssh-keygen -t ed25519 -C "kullanici@sunucu" - Açık anahtarı sunucuya kopyalayın:
ssh-copy-id kullanici@sunucu-ip /etc/ssh/sshd_configdosyasında şu değişiklikleri yapın:
PasswordAuthentication no— Parola ile girişi devre dışı bırakırPubkeyAuthentication yes— Anahtar tabanlı girişi etkinleştirirPermitEmptyPasswords no— Boş parola girişini engellerMaxAuthTries 3— Başarısız giriş denemesini sınırlar
SSH Portunu Değiştirme
Varsayılan 22. portu değiştirmek, otomatize tarama araçlarının büyük çoğunluğunu etkisiz kılar. Bu önlem tek başına yeterli bir güvenlik katmanı oluşturmasa da saldırı yüzeyini azaltır:
/etc/ssh/sshd_configdosyasındaPort 22satırını örneğinPort 2222olarak değiştirin.- Güvenlik duvarında yeni portu açmayı unutmayın:
ufw allow 2222/tcp - Değişiklikten sonra SSH servisini yeniden başlatın:
systemctl restart sshd
Diğer SSH Güvenlik Ayarları
- AllowUsers: Yalnızca belirli kullanıcıların SSH ile bağlanmasına izin verin.
- LoginGraceTime 30: Giriş için verilen süreyi kısaltın.
- ClientAliveInterval 300 / ClientAliveCountMax 2: Boşta kalan bağlantıları otomatik kapatın.
- X11Forwarding no: Grafiksel arayüz yönlendirmeyi devre dışı bırakın (gerekli değilse).
2. Güvenlik Duvarı Yapılandırması: UFW ve iptables
Güvenlik duvarı, sunucunuza gelen ve giden ağ trafiğini denetleyen ilk savunma hattıdır. Ubuntu/Debian sistemlerinde UFW (Uncomplicated Firewall), CentOS/RHEL sistemlerinde ise firewalld veya doğrudan iptables yaygın olarak kullanılır.
UFW ile Temel Güvenlik Duvarı Yapılandırması
- Tüm gelen trafiği varsayılan olarak reddedin:
ufw default deny incoming - Tüm giden trafiğe izin verin:
ufw default allow outgoing - SSH için izin verin (özel port kullanıyorsanız):
ufw allow 2222/tcp - Web trafiğine izin verin:
ufw allow 80/tcpveufw allow 443/tcp - UFW'yu etkinleştirin:
ufw enable - Durumu kontrol edin:
ufw status verbose
Gelişmiş iptables Kuralları
Daha ince taneli denetim için iptables kullanılabilir. Özellikle şu kurallar güvenliği artırır:
- SYN flood koruması: TCP SYN paket hızını sınırlayarak DDoS saldırılarına karşı koruma sağlayın.
- ICMP ping sınırlama: Ping isteklerini tamamen engellemeyin ancak hız limitini uygulayın.
- Durum takibi (stateful filtering):
-m state --state ESTABLISHED,RELATED -j ACCEPTile yalnızca bağlantı kurulmuş paketlere izin verin. - Loopback arayüzüne izin verin: Yerel servisler arası iletişim için gereklidir.
3. Fail2ban ile Brute-Force Koruması
Fail2ban, başarısız giriş denemelerini izleyerek belirli bir eşiği aşan IP adreslerini otomatik olarak geçici yasaklayan bir güvenlik aracıdır. SSH, Nginx, Apache, Postfix ve diğer servisler için hazır filtreler sunar.
Fail2ban Kurulumu ve Yapılandırması
- Kurulum:
apt install fail2ban(Ubuntu/Debian) veyayum install fail2ban(CentOS) /etc/fail2ban/jail.localdosyası oluşturarakjail.confdosyasını geçersiz kılın (doğrudanjail.conf'u düzenlemeyin; güncellemelerle üzerine yazılır).
Önerilen temel yapılandırma:
- bantime = 3600 — Yasaklama süresi (saniye): 1 saat
- findtime = 600 — İzleme penceresi: 10 dakika
- maxretry = 5 — İzin verilen başarısız deneme sayısı
- SSH jail'i etkinleştirin:
[sshd]bölümündeenabled = trueolarak ayarlayın. - Servisini başlatın:
systemctl enable --now fail2ban
Yasaklanan IP'leri görüntülemek için: fail2ban-client status sshd
4. Otomatik Güvenlik Güncellemeleri
Yamalanmamış açıklar, sunucu ele geçirmelerinin en yaygın nedenlerinden biridir. Güvenlik güncellemelerini zamanında uygulamak kritik önem taşır.
Ubuntu/Debian'da Otomatik Güncellemeler
unattended-upgradespaketini kurun:apt install unattended-upgrades/etc/apt/apt.conf.d/50unattended-upgradesdosyasında yalnızca güvenlik güncellemelerini otomatikleştirin.- Günlük kontrol için
/etc/apt/apt.conf.d/20auto-upgradesdosyasını yapılandırın. - E-posta bildirimleri için
Unattended-Upgrade::Mail "admin@example.com"satırını ekleyin.
CentOS/RHEL'de Otomatik Güncellemeler
dnf-automaticpaketini kurun ve yapılandırın.systemctl enable --now dnf-automatic.timerile zamanlayıcıyı etkinleştirin.
5. Dosya İzinleri ve Sahiplik
Yanlış yapılandırılmış dosya izinleri, yetkisiz erişimin önünü açar. Linux'ta dosya izin sistemi (rwx), düzgün yönetilmediğinde ciddi güvenlik açıkları yaratabilir.
- Hassas dosyaları koruyun:
/etc/passwd(644),/etc/shadow(640 veya 000),/etc/ssh/sshd_config(600) izinleri olmalıdır. - SUID/SGID bit'li dosyaları denetleyin:
find / -perm /6000 -type fkomutuyla listeleyip gereksizleri kaldırın. - Dünyaya yazılabilir dosyaları tespit edin:
find / -perm -0002 -type f - umask değerini ayarlayın: Yeni oluşturulan dosyaların varsayılan izinlerini kısıtlamak için
umask 027kullanın. - Web dizinlerinde özel dikkat: Web sunucusu çalıştıran dizinlerde yazma izinlerini minimumda tutun.
6. Root Erişimini Kısıtlama
Root hesabıyla doğrudan SSH girişine izin vermek, en temel güvenlik hatalarından biridir. Root ele geçirilirse sunucu üzerinde tam kontrol sağlanmış demektir.
- SSH ile root girişini devre dışı bırakın:
sshd_config'dePermitRootLogin noolarak ayarlayın. - Sudo kullanan yönetici hesabı oluşturun: Günlük işlemler için sudo ayrıcalıklı ayrı bir kullanıcı oluşturun.
- Sudo yetkilerini en aza indirin:
/etc/sudoersdosyasınıvisudoile düzenleyerek yalnızca gerekli komutlara izin verin. - Sudo loglarını kaydedin: Her sudo komutunun loglanması için
Defaults logfile="/var/log/sudo.log"ekleyin. - Root parola girişini kilitleyin:
passwd -l rootkomutuyla root hesabının parola ile girişini engelleyin.
7. Log İzleme ve Denetim
Güvenlik olaylarını gerçek zamanlı olarak izlemek, bir ihlali erken tespit etmenin en etkili yoludur.
Temel Log Dosyaları
- /var/log/auth.log (Debian/Ubuntu) veya /var/log/secure (CentOS): Kimlik doğrulama denemeleri
- /var/log/syslog: Genel sistem olayları
- /var/log/fail2ban.log: Fail2ban eylemler
- /var/log/nginx/access.log ve error.log: Web sunucusu erişim ve hata logları
Log İzleme Araçları
- Logwatch: Günlük log özeti e-posta raporu gönderir.
- Logrotate: Log dosyalarını otomatik döndürerek disk dolmasını engeller.
- Auditd: Kernel düzeyinde dosya erişimi ve sistem çağrılarını denetler.
- Ossec / Wazuh: Açık kaynaklı HIDS (Host-based Intrusion Detection System) çözümleri.
8. Yedekleme Stratejisi
En iyi güvenlik önlemi dahi %100 koruma garantisi vermez. Yedekleme, bir güvenlik ihlali veya donanım arızası durumunda iş sürekliliğini sağlamanın tek güvencesidir.
- 3-2-1 yedekleme kuralı: 3 kopya, 2 farklı medya türü, 1 uzak lokasyon.
- Otomatik günlük yedekleme: rsync, duplicati veya borgbackup gibi araçlarla cron tabanlı otomatik yedekleme kurgulayın.
- Veritabanı yedeklemesi: MySQL/PostgreSQL veritabanları için dump ve şifreli aktarım.
- Yedekleme bütünlüğünü test edin: Düzenli olarak yedekten geri yükleme testi yapın; test edilmemiş yedek, yedek sayılmaz.
- Yedekleme erişimini kısıtlayın: Yedekleme hesapları yalnızca yazma iznine sahip olmalı; geri yükleme ayrı bir işlemle yapılmalıdır.
TheDomain Sunucu Hizmetleri ile Güvenli Altyapı
Kendi Linux sunucunuzu yönetmek kapsamlı teknik bilgi ve sürekli dikkat gerektirir. TheDomain olarak sunduğumuz VPS ve dedicated sunucu hizmetlerinde güvenlik yapılandırması konusunda deneyimli teknik ekibimiz size destek olur. Aylık düzenli güvenlik taraması, otomatik yedekleme ve 7/24 izleme hizmetleriyle sunucularınız güvende kalır.
Ayrıca TheDomain'in yönetilen sunucu (managed server) seçeneğiyle işletim sistemi güncellemelerinden güvenlik duvarı yapılandırmasına kadar tüm teknik yönetimi bize devredebilirsiniz. Siz işinize odaklanın, teknik altyapıyı bize bırakın.
Sonuç
Linux sunucu güvenliği, bir kez yapılıp tamamlanan bir proje değildir. SSH hardening ile başlayan bu liste, güvenlik duvarı, fail2ban, otomatik güncellemeler, dosya izinleri, root kısıtlaması, log izleme ve yedekleme ile bütünleşik bir güvenlik katmanı oluşturur. Her adım tek başına değerli olmakla birlikte, hepsinin birlikte uygulanması derinlemesine savunma (defense in depth) prensibini hayata geçirir.
Bu kontrol listesini düzenli aralıklarla gözden geçirin, yeni açıkları takip edin ve güvenlik yapılandırmanızı sürekli güncel tutun. Güvenli bir sunucu, başarılı bir dijital altyapının temel taşıdır.