Korhan Köseoğlu olarak 18+ yıllık Linux ve açık kaynak altyapı tecrübemden yola çıkarak, yeni bir Linux sunucusuna ilk kurulum sırasında atılacak güvenlik adımlarını pratik ve uygulanabilir şekilde derledim. Aşağıdaki kontrol listesi, temel bir "güvenli başlangıç" sağlar; ileri düzey gereksinimler (PCI-DSS, HIPAA vb.) için ek ve özel sertleştirmeler yapılmalıdır.

Neler amaçlıyoruz? - Sunucunun işletim sistemi ve servislerinin temel saldırı yüzeyini azaltmak - Yetkisiz erişimleri engellemek ya da tespit etmek - Temel izleme ve otomatik güncelleme mekanizmalarını kurmak - Operasyonel kolaylık ve tekrar edilebilirlik sağlamak

Güvenli kurulumun ana bileşenleri 1. Minimal kurulum ve paket yönetimi 2. Güçlü kimlik doğrulama ve SSH sertleştirmesi 3. Güncelleme/yama yönetimi 4. Ağ ve servis sınırlamaları (firewall, port yönetimi) 5. Kayıt (logging) ve temel izleme 6. Erişim yönetimi ve izinler 7. Yedekleme ve geri dönüş planı

Her bir maddeyi kısa açıklama, örnek komut ve pratik notlarla veriyorum.

1) Minimal kurulum ve paket yönetimi - Amaç: Sadece gerekli bileşenleri tutarak saldırı yüzeyini küçültmek. - Uygulama: - Kurulum sırasında "minimal" veya "server" seçeneğini tercih edin. - Yüklü paketleri listeleyip gereksiz olanları kaldırın. - Örnek (Debian/Ubuntu): - apt list --installed - apt purge paket-adı - Not: Paketleri kaldırmadan önce bağımlılık etkilerini kontrol edin.

2) Güçlü kimlik doğrulama ve SSH sertleştirmesi - Amaç: SSH üzerinden kaba kuvvet veya yetkisiz erişimleri önlemek. - Temel adımlar: - Root ile SSH doğrudan girişini kapatın (PermitRootLogin no). - Parola ile girişleri limitleyin veya tamamen kapatıp anahtar tabanlı auth kullanın (PasswordAuthentication no). - SSH portunu değiştirmek güvenlik katmanı olarak zayıf bir engel olabilir; yine de saldırı gürültüsünü azaltmak için kullanılabilir. - Fail2ban veya benzeri araçlarla kaba kuvvet tespitini aktif edin. - Örnek /etc/ssh/sshd_config değişiklikleri: - PermitRootLogin no - PasswordAuthentication no - AllowUsers korhan - Fail2ban örneği (basit): - apt install fail2ban - systemctl enable --now fail2ban

Kısa kod örneği: anahtar tabanlı SSH kurulumu ve servis yeniden yükleme # Anahtar dizinini oluştur ve izinleri ayarla mkdir -p ~/.ssh chmod 700 ~/.ssh

Public key'i authorized_keys'e ekle echo "ssh-rsa AAAA... kullanıcı@makine" >> ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys

SSH yapılandırmasını düzenledikten sonra servisi yeniden yükle sudo sed -i 's/^PermitRootLogin .*/PermitRootLogin no/' /etc/ssh/sshd_config sudo sed -i 's/^#PasswordAuthentication .*/PasswordAuthentication no/' /etc/ssh/sshd_config sudo systemctl reload sshd

3) Güncelleme/yama yönetimi - Amaç: Bilinen zafiyetlerin kapatılması için düzenli güncelleme. - Uygulama: - Otomatik güvenlik güncellemelerini kurun (distrolara göre değişir). - Kritik kernel/daemon güncellemeleri için planlı yeniden başlatma prosedürleri belirleyin. - Örnek (Debian/Ubuntu): - apt install unattended-upgrades - dpkg-reconfigure --priority=low unattended-upgrades - Not: Otomatik güncelleme, değişiklik kontrolü ve test mekanizmalarıyla desteklenmeli.

4) Ağ ve servis sınırlamaları - Amaç: Sadece gerekli port ve servisleri açmak. - Temel araçlar: nftables, iptables, ufw, firewalld - Uygulama örneği (ufw): - ufw default deny incoming - ufw default allow outgoing - ufw allow 22/tcp comment 'ssh' - ufw allow 80/tcp comment 'http' - ufw enable - Not: Yönetim erişimini yalnızca belirli IP'lerle sınırlandırmak mümkünse uygulanmalı.

5) Kayıt (logging) ve temel izleme - Amaç: Olayları kaydetmek, anormallikleri tespit etmek. - Uygulama: - rsyslog veya syslog-ng ile merkezi log toplama düşünün. - Auditd ile kritik sistem çağrılarını izleyin. - Logrotate ile disk dolumunu engelleyin. - Örnek auditd kısa yapılandırma: - apt install auditd - systemctl enable --now auditd - Not: Loglar şifrelenmiş ve merkezi bir lokasyona gönderilmesi önerilir.

6) Erişim yönetimi ve izinler - Amaç: Ayrıcalıklı erişimi sınırlamak ve gereksiz hakları azaltmak. - Uygulama önerileri: - Sudo kullanımını kısıtlayın; kullanıcı bazlı ayrıcalıklar tanımlayın. - /etc/sudoers dosyasını visudo ile dikkatle düzenleyin. - Servis hesaplarını ve dosya izinlerini gözden geçirin (chmod, chown). - Komut: - visudo - find / -perm /4000 -type f -exec ls -ld {} \; # SUID dosyalarını listele

7) Yedekleme ve geri dönüş planı - Amaç: Veri ve konfigürasyon kaybına karşı hazırlıklı olmak. - Temel adımlar: - Konfigürasyon dosyalarını (ör. /etc) düzenli olarak yedekleyin. - Yedekleme doğrulama ve periyodik testleri planlayın. - Şifreleme ve erişim kontrolleri ile yedekleri koruyun. - Not: Yedekten geri dönüş prosedürü dokümante ve test edilmiş olmalı.

Pratik güvenlik kontrolleri (otomasyon için kullanılabilir) - SSH anahtarların varlığı, parola auth kapalı mı? - Fail2ban çalışıyor mu? - Sistemde root login kapalı mı? - Kritik paketlerin güncelliği kontrol edildi mi? - Açık portlar sadece beklenenlerle eşleşiyor mu? - Auditd veya benzeri izleme servisleri çalışıyor mu? - Loglar periyodik olarak rotalanıyor ve merkeziye gönderiliyor mu? - Yedekleme son durumu ve son test zamanı nedir?

Kısa kontrol listesi (kolay çıktı için) - [ ] Minimal paketlerle OS kurulumu - [ ] Root SSH ile login kapalı - [ ] Anahtar tabanlı SSH kullanılıyor - [ ] Fail2ban veya benzeri brute-force koruması aktif - [ ] Otomatik güvenlik güncellemeleri yapılandırıldı - [ ] Firewall kuralları varsayılan deny şeklinde ayarlandı - [ ] Loglama ve audit aktif, logrotate yapılandırıldı - [ ] Sudo izinleri gözden geçirildi - [ ] Kritik konfigürasyon dosyalarının yedeği alınıyor - [ ] Yedekten geri dönüş prosedürü test edildi

Ek notlar ve iyi uygulamalar - Her değişikliği versiyon kontrolüne (ör. Git) alın; konfigürasyon yönetimi araçları (Ansible, Puppet, Chef) ile tekrarlanabilir kurulum sağlayın. - İstihbarat ve güvenlik bültenlerini takip edin; ancak karar verirken kendi operasyonel ihtiyaçlarınızı göz önünde bulundurun. - Otomasyonu kullanın fakat insan denetimini tamamen kaldırmayın. Otomatik yamalar bazen uyumsuzluklara yol açabilir — staging ortamı önemlidir. - Kayıt, izleme ve uyarı politikalarını ekibinizin müdahale kapasitesine göre ayarlayın; fazladan uyarı yorgunluğa neden olabilir.

Sonuç Bu kontrol listesi, yeni bir Linux sunucusunu faaliyete alırken atılması gereken temel güvenlik adımlarını hızlıca uygulamanız için tasarlandı. Her ortamın farklı gereksinimleri vardır; listeyi organizasyonel politika ve risk değerlendirmesine göre özelleştirin. Daha derin sertleştirme adımları (ör. SELinux/AppArmor politikaları, kernel hardening, etkin anahtar yönetimi) gerektiğinde takip edilecek bir sonraki adım olmalıdır.

Eğer isterseniz bu checklist'i Ansible playbook veya benzeri bir otomasyon formatına çevirmeye yardımcı olabilirim.