Dijital dünyada varlık gösteren her kurum ve birey için sunucu güvenliği, en kritik önceliklerden biridir. Sunucular, web sitelerinden uygulamalara, veritabanlarından e-postalara kadar tüm dijital operasyonların kalbinde yer alır. Bu merkezi rol, onları siber saldırganlar için cazip bir hedef haline getirir. İşte bu noktada “sunucu hardening” veya “sunucu sağlamlaştırma” kavramı devreye girer. Sunucu sağlamlaştırma, bir sunucunun potansiyel güvenlik zafiyetlerini en aza indirmek ve siber saldırılara karşı direncini artırmak için atılan proaktif adımların bütünüdür. Bu süreç, sadece bir yazılım kurmaktan ibaret olmayıp, işletim sisteminden uygulamalara, ağ ayarlarından kullanıcı yetkilerine kadar her katmanı kapsayan bütüncül bir güvenlik yaklaşımıdır.
İçerik Tablosu
Sunucu Sağlamlaştırmaya Giriş ve Temel Prensipler
Sunucu sağlamlaştırma sürecine başlamadan önce, bu disiplinin temelini oluşturan kavramları ve prensipleri anlamak, atılacak adımların etkinliğini artıracaktır. Bu bölüm, sunucu hardening’in ne olduğunu, neden bu kadar önemli olduğunu ve hangi temel güvenlik ilkeleri üzerine inşa edildiğini açıklamaktadır. Güvenli bir altyapı kurmanın ilk adımı, sağlam bir teorik temel oluşturmaktır.
Sunucu Hardening (Sağlamlaştırma) Nedir?
Sunucu Hardening, bir sunucunun işletim sistemi, yazılımları ve ağ yapılandırması üzerinde gerçekleştirilen bir dizi metodolojik güvenlik iyileştirmesidir. Amacı, sistemin potansiyel güvenlik açıklarını kapatarak ve gereksiz bileşenleri ortadan kaldırarak siber saldırganların sisteme sızma veya zarar verme olasılığını en aza indirmektir. Bu, varsayılan ayarları değiştirmek, güçlü parolalar uygulamak, gereksiz servisleri kapatmak ve erişim kontrollerini sıkılaştırmak gibi çok çeşitli teknikleri içerir.
Sunucu Sağlamlaştırmanın Önemi ve Amaçları
Sunucu sağlamlaştırmanın önemi, dijital varlıkların korunması ve iş sürekliliğinin sağlanmasında yatar. Sağlamlaştırılmamış bir sunucu, veri sızıntıları, hizmet kesintileri, fidye yazılımı saldırıları ve itibar kaybı gibi ciddi risklere açıktır. Temel amaçları şunlardır: hassas verileri korumak, yetkisiz erişimleri engellemek, sistemin kararlılığını ve performansını artırmak, yasal ve düzenleyici uyumluluk gereksinimlerini karşılamak ve genel siber güvenlik direncini yükseltmektir.
Saldırı Yüzeyi (Attack Surface) Kavramı ve Azaltma Stratejileri
Saldırı yüzeyi (Attack Surface), bir siber saldırganın bir sisteme yetkisiz erişim sağlamak veya veri çıkarmak için deneyebileceği tüm potansiyel giriş noktalarının (vektörlerin) toplamıdır. Bu yüzey ne kadar genişse, sistem o kadar fazla risk altındadır. Saldırı yüzeyini azaltma stratejileri, hardening sürecinin merkezindedir. Bu stratejiler; gereksiz yazılımları, kullanıcı hesaplarını, açık portları ve aktif servisleri kaldırmayı içerir. Prensip basittir: Eğer bir bileşen veya servis sistemin çalışması için zorunlu değilse, potansiyel bir güvenlik açığı oluşturmaması için devre dışı bırakılmalı veya kaldırılmalıdır.
Temel Güvenlik Prensipleri
Etkili bir sunucu sağlamlaştırma stratejisi, siber güvenlik dünyasında kabul görmüş temel prensipler üzerine kuruludur. Bu prensipler, alınan kararlara rehberlik eder ve katmanlı bir savunma mekanizması oluşturur.
En Az Yetki Prensibi (Principle of Least Privilege)
Bu prensip, bir kullanıcı hesabına veya bir uygulamaya, görevini yerine getirmesi için gereken minimum düzeyde yetki ve erişim hakkı verilmesini savunur. Örneğin, bir web sunucusu yazılımının tüm dosya sistemine yazma erişimine ihtiyacı yoktur; sadece kendi dosyalarını okuması ve belirli dizinlere yazması yeterlidir. Bu yaklaşım, bir hesabın veya uygulamanın ele geçirilmesi durumunda saldırganın sistem genelinde hareket etme kabiliyetini önemli ölçüde kısıtlar.
Derinlemesine Savunma (Defense in Depth)
Derinlemesine savunma, tek bir güvenlik önlemine güvenmek yerine, birbiri ardına sıralanmış çok katmanlı bir güvenlik duvarı oluşturma stratejisidir. Bir saldırganın ilk savunma hattını (örneğin, ağ güvenlik duvarı) aşması durumunda, ikinci (ana makine tabanlı güvenlik duvarı), üçüncü (güçlü parola politikaları) ve diğer katmanlarla karşılaşmasını sağlar. Her katman, saldırıyı yavaşlatmak, tespit etmek ve engellemek için ek bir fırsat sunar.
Varsayılan Olarak Reddet (Default Deny)
Bu ilke, bir güvenlik sisteminin (örneğin bir güvenlik duvarı) temel tutumunun, açıkça izin verilmeyen her şeyi reddetmesi gerektiğini belirtir. Yani, “izin verilmeyen her şey yasaktır” mantığıyla çalışır. Bu, yalnızca belirli ve bilinen trafiğe veya eyleme izin verilmesini sağlayarak, bilinmeyen veya beklenmedik tehditlere karşı proaktif bir koruma sağlar. Güvenlik kuralları oluşturulurken, önce her şey engellenir ve ardından sadece gerekli olan erişimlere tek tek izin verilir.
İşletim Sistemi Seviyesinde Sağlamlaştırma
Sunucu güvenliğinin temeli, üzerinde çalışan işletim sisteminin (OS) kendisidir. İşletim sistemi seviyesinde yapılacak sağlamlaştırma, diğer tüm güvenlik katmanlarının üzerine inşa edileceği zemini güçlendirir. Bu aşama, kurulumdan başlayarak çekirdek ayarlarına ve ağ trafiği kontrolüne kadar uzanan kritik yapılandırmaları içerir. Sağlam bir işletim sistemi temeli olmadan, uygulama ve veri seviyesindeki güvenlik önlemleri yetersiz kalabilir.
Minimal Kurulum Yapılandırması
Güvenli bir sunucu yapılandırmasının ilk adımı, “minimal kurulum” felsefesini benimsemektir. Bu, işletim sistemini kurarken sadece sunucunun planlanan rolü için kesinlikle gerekli olan paketlerin ve servislerin yüklenmesi anlamına gelir. Örneğin, bir veritabanı sunucusu olarak kullanılacak bir makineye grafik arayüz (GUI), e-posta istemcileri veya web tarayıcıları gibi bileşenlerin kurulmasına gerek yoktur. Minimal kurulum, saldırı yüzeyini en baştan itibaren daraltır ve yama yönetimi yükünü hafifletir.
Gereksiz Paket, Servis ve Uygulamaların Kaldırılması
Minimal kurulumdan sonra bile, varsayılan olarak gelen bazı paketler veya servisler gereksiz olabilir. Sunucunun işleviyle ilgisi olmayan tüm yazılımlar, kütüphaneler ve çalışan servisler dikkatlice incelenmeli ve kaldırılmalıdır. Örneğin, bir Linux sanal sunucu üzerinde baskı hizmeti (CUPS) veya Bluetooth desteği gibi servislerin çalışması genellikle gereksizdir. `systemctl`, `apt`, `yum` gibi araçlar kullanılarak bu bileşenler sistemden tamamen arındırılmalıdır.
İşletim Sistemi Güncellemeleri ve Yama Yönetimi (Patch Management)
Hiçbir yazılım mükemmel değildir ve zamanla güvenlik açıkları keşfedilir. İşletim sistemi üreticileri, bu açıkları kapatmak için düzenli olarak güncellemeler ve yamalar yayınlar. Etkili bir yama yönetimi (Patch Management) politikası, bu güncellemelerin düzenli olarak ve zamanında sunuculara uygulanmasını sağlamaktır. Otomatik güncelleme mekanizmalarını yapılandırmak veya düzenli olarak manuel kontrol ve güncelleme yapmak, bilinen zafiyetlere karşı sistemi korumanın en temel yollarından biridir.
Çekirdek (Kernel) Parametrelerinin Güvenlik Odaklı Yapılandırılması
İşletim sisteminin kalbi olan çekirdek (kernel), ağ iletişimi, bellek yönetimi ve süreç kontrolü gibi temel işlevleri yönetir. Linux sistemlerde `/etc/sysctl.conf` dosyası üzerinden çekirdek parametreleri, güvenliği artıracak şekilde ayarlanabilir. Örneğin, IP sahtekarlığına (spoofing) karşı korumayı etkinleştirmek, ICMP yönlendirmelerini engellemek ve SYN flood saldırılarına karşı koruma mekanizmalarını (SYN cookies) aktif hale getirmek gibi ince ayarlar, sistemin direncini önemli ölçüde artırabilir.
Güvenli Önyükleme (Secure Boot) Ayarları
Modern sunucuların çoğunda bulunan UEFI Güvenli Önyükleme (Secure Boot) özelliği, önyükleme işlemi sırasında yalnızca dijital olarak imzalanmış ve güvenilir önyükleyicilerin (bootloader) ve çekirdeklerin çalıştırılmasını sağlar. Bu, rootkit gibi önyükleme sürecini hedef alan ve işletim sistemi başlamadan önce devreye giren kötü amaçlı yazılımların çalışmasını engeller. BIOS/UEFI ayarlarından Secure Boot’un etkinleştirilmesi, sistemin en temel seviyede bütünlüğünü korumaya yardımcı olur.
Ana Makine Tabanlı Güvenlik Duvarı (Host-Based Firewall) Konfigürasyonu
Ağdaki genel güvenlik duvarına ek olarak, her sunucunun kendi üzerinde çalışan bir ana makine tabanlı güvenlik duvarına sahip olması, derinlemesine savunma prensibinin önemli bir parçasıdır. Linux için `iptables` veya `ufw`, Windows için ise `Windows Defender Firewall` gibi araçlar, sunucunun kendisine gelen ve sunucudan çıkan ağ trafiğini kontrol eder. Bu, ağdaki diğer makineler ele geçirilse bile sunucunun kendisini korumasına olanak tanır.
Gelen (Ingress) ve Giden (Egress) Trafik Kurallarının Belirlenmesi
Güvenlik duvarı yapılandırılırken hem gelen (ingress) hem de giden (egress) trafik için sıkı kurallar belirlenmelidir. Gelen trafik kuralları, sunucunun hangi portlardan ve hangi IP adreslerinden bağlantı kabul edeceğini tanımlar. Örneğin, bir web sunucusu yalnızca 80 ve 443 portlarından gelen trafiğe izin vermelidir. Giden trafik kuralları ise sunucunun dışarıya hangi bağlantıları başlatabileceğini kısıtlar. Bu, sunucunun ele geçirilmesi durumunda dışarıya veri sızdırmasını veya diğer sistemlere saldırmasını zorlaştırır.
Varsayılan Kuralların Sıkılaştırılması
“Varsayılan Olarak Reddet” prensibi burada kritik rol oynar. Güvenlik duvarının varsayılan politikası, hem gelen hem de giden trafik için “DROP” veya “REJECT” (Trafiği Reddet) olarak ayarlanmalıdır. Bu, açıkça tanımlanmış bir “ALLOW” (İzin Ver) kuralıyla eşleşmeyen tüm ağ paketlerinin otomatik olarak engellenmesini sağlar. İzinler, sadece sunucunun çalışması için mutlak surette gerekli olan servisler ve bağlantılar için istisnai olarak oluşturulur.
Erişim Kontrolü ve Kullanıcı Yönetimi
Bir sunucunun güvenliği, yalnızca teknik yapılandırmalarla değil, aynı zamanda o sunucuya kimin, ne zaman ve hangi yetkilerle erişebildiğinin kontrolüyle de sağlanır. Zayıf kimlik doğrulama ve yetersiz kullanıcı yönetimi, en iyi yapılandırılmış sistemleri bile savunmasız bırakabilir. Bu bölüm, güçlü parola politikalarından çok faktörlü kimlik doğrulamaya kadar, sunucuya erişimi güvenli hale getirecek temel adımları ele almaktadır.
Güçlü Parola Politikalarının Uygulanması
Parolalar, kimlik doğrulamanın ilk ve en temel hattıdır. Kaba kuvvet (brute-force) ve sözlük saldırılarına karşı dayanıklı parolaların kullanılmasını zorunlu kılmak esastır. Güçlü bir parola politikası, işletim sistemi seviyesinde uygulanmalı ve tüm kullanıcıları kapsamalıdır.
Karmaşıklık, Uzunluk ve Geçerlilik Süresi Kuralları
Etkili bir parola politikası şu üç temel unsuru içermelidir: Karmaşıklık (büyük harf, küçük harf, rakam ve özel karakterlerin bir arada kullanılmasını zorunlu kılma), Uzunluk (parolaların en az 12-14 karakter olmasını sağlama) ve Geçerlilik Süresi (parolaların düzenli aralıklarla, örneğin her 90 günde bir, değiştirilmesini zorunlu tutma). Bu kurallar, parolaların tahmin edilmesini veya kırılmasını önemli ölçüde zorlaştırır.
Parola Geçmişi Kontrolü
Kullanıcıların eski parolalarını tekrar kullanmalarını engellemek de önemli bir güvenlik önlemidir. Parola geçmişi kontrolü, sistemin son N adet (örneğin, son 5 veya 10) parolayı hatırlamasını ve kullanıcının bu parolalardan birini yeniden seçmesini engellemesini sağlar. Bu, parola geçerlilik süresi kuralının basitçe aynı parolanın tekrar tekrar ayarlanarak atlatılmasının önüne geçer.
Root ve Administrator Hesaplarının Güvenliği
Sistemdeki en yüksek yetkilere sahip olan `root` (Linux) ve `Administrator` (Windows) hesapları, saldırganlar için birincil hedeftir. Bu hesapların ele geçirilmesi, sistem üzerinde tam kontrol anlamına gelir. Bu nedenle, bu hesapların güvenliği özel bir dikkat gerektirir.
Doğrudan Root/Administrator Girişinin Engellenmesi
En iyi uygulamalardan biri, bu süper kullanıcı hesaplarına doğrudan (özellikle SSH veya RDP üzerinden uzaktan) giriş yapılmasını tamamen engellemektir. Yöneticiler, kendi standart kullanıcı hesaplarıyla sisteme giriş yapmalı ve yalnızca gerektiğinde yetkilerini yükseltmelidirler. Bu, hem denetim izlerinin daha net olmasını sağlar hem de kaba kuvvet saldırılarının doğrudan en yetkili hesabı hedeflemesini önler.
Yetki Yükseltme Araçlarının (sudo, UAC) Yapılandırılması
Doğrudan root girişi yerine, Linux sistemlerde `sudo` komutu kullanılmalıdır. `sudo`, belirli kullanıcıların veya grupların, kendi parolalarını kullanarak, yalnızca belirli komutları root yetkileriyle çalıştırmasına izin verir. Bu, yetkilerin daha granüler bir şekilde dağıtılmasını sağlar. Windows’ta ise Kullanıcı Hesabı Denetimi (UAC), yönetici yetkisi gerektiren işlemlerden önce kullanıcıya bir onay istemi göstererek benzer bir koruma katmanı sunar.
Gereksiz veya Kullanılmayan Kullanıcı Hesaplarının Kaldırılması
Sistemde bulunan her kullanıcı hesabı, potansiyel bir saldırı vektörüdür. Artık şirkette çalışmayan personelin hesapları, test için oluşturulmuş geçici hesaplar veya varsayılan olarak gelen ancak kullanılmayan (örn: `guest`, `lp`, `news`) hesaplar derhal kaldırılmalı veya devre dışı bırakılmalıdır. Düzenli olarak kullanıcı hesabı denetimi yapmak, bu “yetim” hesapların birikmesini önler.
Çok Faktörlü Kimlik Doğrulama (MFA/2FA) Entegrasyonu
Çok Faktörlü Kimlik Doğrulama (MFA), bir kullanıcının kimliğini doğrulamak için parola gibi “bildiği bir şey”e ek olarak, mobil uygulama kodu veya donanım anahtarı gibi “sahip olduğu bir şey”i de talep eden bir güvenlik mekanizmasıdır. Parolanın çalınması veya sızdırılması durumunda bile, ikinci faktör olmadan hesaba erişimi imkansız hale getirir. Özellikle uzaktan yönetim erişimi (SSH, RDP) için MFA entegrasyonu, sunucu güvenliğini büyük ölçüde artırır.
Başarılı ve Başarısız Oturum Açma Denemelerinin Sınırlandırılması ve İzlenmesi
Kaba kuvvet saldırılarını yavaşlatmak ve tespit etmek için, belirli bir zaman dilimi içinde yapılabilecek başarısız oturum açma denemelerinin sayısı sınırlandırılmalıdır. Örneğin, bir IP adresinden 5 dakika içinde 3’ten fazla yanlış parola denemesi yapılması durumunda, o IP adresinin geçici veya kalıcı olarak engellenmesi (fail2ban gibi araçlarla) etkili bir yöntemdir. Ayrıca, hem başarılı hem de başarısız tüm oturum açma denemeleri kaydedilmeli (loglanmalı) ve şüpheli aktiviteler için düzenli olarak incelenmelidir.
Ağ Güvenliği ve Servislerin Sağlamlaştırılması
Bir sunucu, dış dünya ile ağ üzerinden iletişim kurar. Bu iletişim kanalları, sunucunun işlevini yerine getirmesi için gerekli olsa da aynı zamanda potansiyel saldırı yollarıdır. Ağ güvenliği ve servislerin sağlamlaştırılması, sunucunun yalnızca gerekli iletişim kanallarını, en güvenli şekilde kullanmasını sağlamayı hedefler. Bu aşama, portların kapatılmasından, iletişim protokollerinin güvenli hale getirilmesine kadar geniş bir yelpazeyi kapsar.
Ağ Servislerinin Dinlediği Arayüzlerin Kısıtlanması
Sunucular genellikle birden fazla ağ arayüzüne (örneğin, genel internete açık bir arayüz ve özel bir yönetim ağı arayüzü) sahip olabilir. Bir servisin, tüm arayüzlerde (genellikle `0.0.0.0` adresiyle temsil edilir) bağlantı kabul etmesi gereksiz bir risktir. Örneğin, bir veritabanı sunucusunun yalnızca uygulama sunucularının bulunduğu özel ağdan gelen bağlantıları dinlemesi gerekir. Servis yapılandırmaları, yalnızca ilgili ağ arayüzüne “bağlanacak” (bind) şekilde ayarlanmalıdır. Bu, internetten doğrudan veritabanına erişim denemelerini en başından engeller.
Gereksiz Ağ Portlarının Kapatılması
Sunucuda çalışan her ağ servisi, bir veya daha fazla ağ portunu “dinler”. Kullanılmayan veya gereksiz olan her açık port, saldırganların sisteme sızmak için kullanabileceği bir kapı gibidir. Sunucu üzerinde çalışan tüm servisler listelenmeli (`netstat`, `ss` gibi komutlarla) ve işlevi bilinmeyen veya gereksiz olan servisler durdurulmalı ve devre dışı bırakılmalıdır. Ana makine tabanlı güvenlik duvarı, yalnızca kesinlikle gerekli olan portlara (örneğin, web sunucusu için 80/TCP ve 443/TCP, SSH için 22/TCP) izin verecek şekilde yapılandırılmalıdır.
Güvenli Uzak Yönetim Protokollerinin Kullanımı
Sunucuların uzaktan yönetimi, operasyonel verimlilik için kaçınılmazdır. Ancak bu yönetim, mutlaka güvenli ve şifreli protokoller üzerinden yapılmalıdır. Güvensiz protokoller, oturum açma bilgilerinin ve komutların ağ üzerinde açık metin olarak gönderilmesine neden olabilir.
SSH için Parola Tabanlı Girişin Yasaklanması ve Anahtar (Key) Kullanımı
Secure Shell (SSH), Linux sunucularını yönetmek için standart bir protokoldür. Ancak parola tabanlı kimlik doğrulama, kaba kuvvet saldırılarına karşı savunmasızdır. Daha güvenli bir yöntem, kriptografik anahtar çifti (public/private key) kullanımını zorunlu kılmaktır. Yönetici, kendi bilgisayarında bir anahtar çifti oluşturur, genel anahtarı (public key) sunucuya yükler ve sunucunun SSH yapılandırmasında (`/etc/ssh/sshd_config`) parola ile girişi tamamen yasaklar. Bu sayede, yalnızca özel anahtara (private key) sahip olan kişi sunucuya bağlanabilir.
RDP için Ağ Seviyesinde Kimlik Doğrulama (NLA) Aktivasyonu
Uzak Masaüstü Protokolü (RDP), Windows sunucularını yönetmek için yaygın olarak kullanılır. Ağ Seviyesinde Kimlik Doğrulama (Network Level Authentication – NLA), RDP için önemli bir güvenlik katmanıdır. NLA etkinleştirildiğinde, sunucu tam bir uzak masaüstü oturumu başlatmadan önce kullanıcının kimliğini doğrular. Bu, sunucu kaynaklarını tüketen hizmet reddi (DoS) saldırılarını ve RDP protokolündeki bazı zafiyetlerin sömürülmesini önler.
Ağ Trafiğinin Şifrelenmesi (SSL/TLS Sertifikaları)
Sunucu ile istemciler arasındaki veri alışverişinin şifrelenmesi, verilerin ağ üzerinde gizli ve bütünlüğünün korunarak iletilmesini sağlar. Özellikle web sunucuları, e-posta sunucuları ve diğer halka açık servisler için SSL sertifikaları (güncel adıyla TLS) kullanımı bir zorunluluktur. SSL/TLS, kullanıcıların parolaları, kişisel bilgileri ve diğer hassas verileri gibi bilgilerin, araya giren üçüncü şahıslar tarafından okunmasını engeller.
| Protokol Amacı | Güvensiz Protokol | Güvenli Alternatif |
|---|---|---|
| Uzak Komut Satırı Erişimi | Telnet (Port 23) | SSH (Port 22) |
| Dosya Transferi | FTP (Port 21) | SFTP (SSH File Transfer Protocol) veya FTPS (FTP over SSL) |
| Web Trafiği | HTTP (Port 80) | HTTPS (HTTP over SSL/TLS, Port 443) |
| E-posta Gönderimi | SMTP (Port 25) | SMTPS (Port 465) veya STARTTLS ile SMTP (Port 587) |
| E-posta Alımı | POP3 (Port 110), IMAP (Port 143) | POP3S (Port 995), IMAPS (Port 993) |
Bilinen Zafiyetlere Sahip Protokollerin (Telnet, FTP) Devre Dışı Bırakılması
Telnet, FTP, RSH gibi eski protokoller, tüm iletişimi (kullanıcı adları ve parolalar dahil) şifrelenmemiş olarak, yani açık metin (plaintext) formatında iletir. Bu, ağ trafiğini dinleyen herhangi birinin bu hassas bilgilere kolayca erişebileceği anlamına gelir. Bu tür güvensiz protokollere hizmet veren servisler sunucudan tamamen kaldırılmalı ve yerlerine yukarıdaki tabloda belirtilen güvenli alternatifleri (SSH, SFTP, HTTPS vb.) kullanılmalıdır.
Dosya Sistemi ve Veri Güvenliği
Sunucu sağlamlaştırmanın önemli bir boyutu da dosya sisteminin kendisini ve üzerinde barındırılan verileri korumaktır. Yetkisiz erişimler, kritik sistem dosyalarında yapılan değişiklikler veya hassas verilerin sızdırılması, bir sunucunun bütünlüğünü ve güvenilirliğini temelden sarsabilir. Bu bölüm, dosya ve dizin izinlerinin sıkılaştırılmasından disk şifrelemeye kadar veri güvenliğini sağlamaya yönelik temel teknikleri ele almaktadır.
Dosya ve Dizin İzinlerinin Sıkılaştırılması (chmod, chown)
Linux ve diğer UNIX benzeri işletim sistemlerinde, dosya ve dizin izinleri, kimin neyi okuyabileceğini, yazabileceğini veya çalıştırabileceğini kontrol eden temel mekanizmadır. `chmod` (izinleri değiştir) ve `chown` (sahipliği değiştir) komutları bu kontrolü sağlar. En az yetki prensibi burada da geçerlidir: Dosya ve dizinler, yalnızca ilgili kullanıcıların ve servislerin erişebileceği en kısıtlayıcı izinlere sahip olmalıdır. Örneğin, web sitesi dosyalarının sahibi web sunucusu kullanıcısı olmalı ve diğer kullanıcıların bu dosyalara yazma izni olmamalıdır.
Kritik Sistem Dosyalarının Değişmez (Immutable) Olarak İşaretlenmesi
Bazı kritik sistem yapılandırma dosyaları veya log dosyaları, normal şartlar altında sık sık değişmemelidir. Linux sistemlerde `chattr +i` komutu, bir dosyayı “değişmez” (immutable) olarak işaretler. Değişmez olarak işaretlenmiş bir dosya, root kullanıcısı dahil hiç kimse tarafından silinemez, yeniden adlandırılamaz, içeriği değiştirilemez veya üzerine link oluşturulamaz. Bu, bir saldırganın sisteme sızması durumunda bile, kritik dosyaları değiştirmesini veya silmesini engelleyerek ek bir koruma katmanı sağlar.
Geçici Dizinler İçin Güvenlik Ayarları (noexec, nosuid)
`/tmp`, `/var/tmp` gibi geçici dizinler, genellikle saldırganlar tarafından kötü amaçlı betikleri (script) yüklemek ve çalıştırmak için kullanılır. Bu riski azaltmak için, bu dizinlerin bulunduğu disk bölümleri (`/etc/fstab` dosyasında) özel seçeneklerle bağlanmalıdır. `noexec` seçeneği, bu dizin içinden herhangi bir programın çalıştırılmasını engeller. `nosuid` seçeneği ise, SUID bitine sahip dosyaların (kullanıcı yetkilerini geçici olarak yükselten dosyalar) bu dizinde çalışmasını önleyerek yetki yükseltme saldırılarının önüne geçer.
Disk Şifreleme (Full Disk Encryption) Yöntemleri
Sunucunun fiziksel olarak çalınması veya yetkisiz kişilerce erişilmesi durumunda, disk üzerindeki verileri korumanın en etkili yolu disk şifrelemedir. Tam Disk Şifreleme (Full Disk Encryption – FDE), işletim sistemi de dahil olmak üzere diskin tamamını şifreler. Sunucu her başlatıldığında, önyükleme işlemi sırasında doğru parolanın veya anahtarın girilmesi gerekir. Linux’ta LUKS (Linux Unified Key Setup) ve Windows’ta BitLocker, bu amaçla kullanılan yaygın teknolojilerdir. Bu yöntem, sunucu kapalıyken verilerin okunmasını imkansız hale getirir.
Hassas Veri ve Konfigürasyon Dosyalarının Erişim Kontrolü
Uygulama yapılandırma dosyaları (örneğin, veritabanı bağlantı bilgilerini içeren `wp-config.php` veya `.env` dosyaları), parolaları, API anahtarlarını ve diğer hassas bilgileri barındırır. Bu dosyaların izinleri özellikle sıkı olmalıdır. Genellikle bu tür dosyaların yalnızca sahibi olan kullanıcı (örneğin, web sunucusu kullanıcısı) tarafından okunmasına izin verilmeli (`chmod 400` gibi) ve diğer tüm kullanıcıların erişimi engellenmelidir. Hassas bilgilerin asla genel erişime açık web dizinleri altına konulmaması da kritik bir kuraldır.
İzleme (Monitoring), Kayıt Tutma (Logging) ve Denetim (Auditing)
Sağlamlaştırma, yalnızca önleyici tedbirler almaktan ibaret değildir. Aynı zamanda, sistemde ne olup bittiğini anlamak, potansiyel güvenlik olaylarını tespit etmek ve gerçekleşen bir olayın ardından “kim, ne, ne zaman, nerede, nasıl yaptı?” sorularına cevap bulabilmek için de bir çerçeve oluşturmayı gerektirir. İzleme, kayıt tutma ve denetim, bir sunucunun güvenliğini proaktif olarak yönetmenin ve olaylara müdahale etmenin temelini oluşturur. Bu süreç, görünürlük sağlayarak kör noktaları ortadan kaldırır.
Kapsamlı Sistem ve Uygulama Kayıtlarının Etkinleştirilmesi
Varsayılan olarak, birçok sistem ve uygulama yalnızca temel düzeyde kayıt (log) tutar. Etkili bir izleme için, bu kayıt seviyelerinin artırılması gerekir. İşletim sistemi, güvenlik duvarı, web sunucusu, veritabanı ve diğer kritik uygulamaların tüm önemli olayları (oturum açma denemeleri, yapılandırma değişiklikleri, sistem hataları, erişim istekleri vb.) detaylı bir şekilde kaydetmesi sağlanmalıdır. Bu loglar, anormallikleri tespit etmek ve olay analizi yapmak için hayati önem taşır.
Log Dosyalarının Merkezi Bir Sunucuya Gönderilmesi (Syslog, SIEM)
Logları sadece sunucunun kendi üzerinde tutmak risklidir. Eğer bir saldırgan sunucuya tam erişim sağlarsa, yapacağı ilk işlerden biri bu log dosyalarını silerek veya değiştirerek izlerini kaybettirmek olacaktır. Bu riski ortadan kaldırmak için, tüm sunuculardan toplanan loglar, ağ üzerinde güvenli bir kanal üzerinden merkezi bir kayıt sunucusuna (Syslog server) veya daha gelişmiş bir Güvenlik Bilgi ve Olay Yönetimi (SIEM) sistemine gerçek zamanlı olarak gönderilmelidir. Bu, logların bütünlüğünü korur ve tüm altyapıdaki olayların tek bir noktadan analiz edilmesini sağlar.
Dosya Bütünlüğü İzleme (File Integrity Monitoring – FIM) Araçlarının Kurulumu
Dosya Bütünlüğü İzleme (FIM) araçları, kritik sistem ve yapılandırma dosyalarının durumunu sürekli olarak izler. Bu araçlar, ilk kurulumda bu dosyaların bir “parmak izini” (hash) oluşturur ve daha sonra düzenli aralıklarla mevcut durumlarını bu orijinal parmak iziyle karşılaştırır. Herhangi bir dosyada yetkisiz bir değişiklik, silme veya ekleme olduğunda, FIM sistemi derhal bir uyarı üretir. AIDE (Advanced Intrusion Detection Environment) veya Tripwire gibi araçlar, bu amaçla yaygın olarak kullanılır.
Periyodik Güvenlik Taramaları ve Zafiyet Analizleri
Sağlamlaştırma tek seferlik bir işlem değildir; sürekli bir süreçtir. Yeni zafiyetler her zaman ortaya çıkabilir. Bu nedenle, sunucuların düzenli aralıklarla (örneğin, aylık veya üç aylık) otomatik zafiyet tarama araçları (Nessus, OpenVAS gibi) ile taranması gerekir. Bu taramalar, eksik yamaları, güvensiz yapılandırmaları ve bilinen diğer güvenlik açıklarını tespit ederek giderilmeleri için bir yol haritası sunar.
Sistem Denetim (Audit) Kayıtlarının Yapılandırılması ve İncelenmesi
İşletim sistemleri, belirli olayları çok daha detaylı bir şekilde izlemek için denetim (auditing) yeteneklerine sahiptir. Örneğin, Linux’taki `auditd` servisi, belirli bir dosyaya yapılan her erişimi, belirli bir sistem çağrısını (system call) kullanan her işlemi veya belirli bir kullanıcı tarafından gerçekleştirilen her eylemi kaydedebilir. Bu denetim kayıtları, standart sistem loglarından çok daha ayrıntılı bilgi sağlar ve özellikle adli analiz (forensics) süreçlerinde paha biçilmezdir. Bu kayıtların düzenli olarak gözden geçirilmesi, gizli kalmış anormalliklerin ortaya çıkarılmasına yardımcı olabilir.
Uygulama Seviyesinde Sağlamlaştırma
İşletim sistemi ve ağ katmanları ne kadar güvenli olursa olsun, üzerinde çalışan uygulamalardaki zafiyetler tüm sistemi riske atabilir. Uygulama seviyesinde sağlamlaştırma, sunucuda hizmet veren web sunucusu, veritabanı sunucusu gibi yazılımların kendilerine özgü güvenlik ayarlarının yapılandırılmasına odaklanır. Bu aşama, saldırıların doğrudan hedefi olan uygulamaları güçlendirerek savunmanın son hattını oluşturur.
Web Sunucusu (Apache, Nginx) Güvenlik Ayarları
Web sunucuları, internete en açık servislerdir ve bu nedenle en sık saldırıya uğrayan bileşenlerdendir. Güvenliklerini artırmak için bir dizi özel önlem alınmalıdır.
| Güvenlik Ayarı | Zayıf Yapılandırma (Riskli) | Güçlü Yapılandırma (Önerilen) |
|---|---|---|
| Sunucu Bilgileri | Apache/2.4.29 (Ubuntu) Server at ornek.com Port 443 | ServerTokens Prod / server_tokens off; |
| Dizin Listeleme | Ziyaretçilerin dosya ve dizinleri görmesine izin verir (Indexes aktif) | Dizin listelemeyi devre dışı bırakır (Options -Indexes) |
| Gereksiz Modüller | Kullanılmayan tüm modüller varsayılan olarak yüklenir. | Yalnızca ihtiyaç duyulan modüller etkinleştirilir. |
| Güvenli Başlıklar | X-Frame-Options, X-XSS-Protection gibi başlıklar eksiktir. | Strict-Transport-Security, Content-Security-Policy gibi başlıklar eklenir. |
Sunucu Bilgilerinin Gizlenmesi
Varsayılan olarak, Apache veya Nginx gibi web sunucuları, HTTP yanıt başlıklarında kendi adlarını ve sürüm numaralarını açıkça belirtir. Bu bilgi, saldırganların o sürüme özgü bilinen zafiyetleri aramasına yardımcı olur. Yapılandırma dosyalarında `ServerTokens Prod` (Apache) veya `server_tokens off;` (Nginx) gibi direktifler kullanılarak bu bilgilerin gösterilmesi engellenmelidir.
Gereksiz Modüllerin Devre Dışı Bırakılması
Web sunucuları, işlevselliklerini artıran modüler bir yapıya sahiptir. Ancak kullanılmayan her modül, potansiyel bir güvenlik açığı veya performans sorunu demektir. Web sitesinin veya uygulamanın çalışması için gerekli olmayan tüm modüller (örneğin, `mod_userdir`, `mod_autoindex`) devre dışı bırakılmalıdır.
Güvenli HTTP Başlıklarının (Security Headers) Yapılandırılması
Web sunucusu, tarayıcılara web sitesinin nasıl davranması gerektiği konusunda talimatlar veren özel HTTP başlıkları gönderebilir. `Strict-Transport-Security` (HSTS) başlığı tarayıcıyı siteye yalnızca HTTPS üzerinden bağlanmaya zorlar. `X-Frame-Options` başlığı Clickjacking saldırılarını önler. `Content-Security-Policy` (CSP) ise Siteler Arası Betik Çalıştırma (XSS) saldırılarına karşı güçlü bir koruma sağlar. Bu başlıkların doğru bir şekilde yapılandırılması, tarayıcı seviyesinde güvenliği önemli ölçüde artırır.
Veritabanı Sunucusu (MySQL, PostgreSQL, MSSQL) Güvenlik Ayarları
Veritabanları, bir kurumun en değerli varlığı olan verileri barındırır. Bu nedenle veritabanı sunucularının güvenliği son derece kritiktir.
Varsayılan Hesapların Kaldırılması
Veritabanı sistemleri kurulduğunda genellikle test amaçlı veya anonim kullanıcı hesapları ile birlikte gelir. Örneğin, MySQL‘deki anonim kullanıcılar veya `test` veritabanı gibi. Bu varsayılan ve genellikle zayıf parolalara sahip hesaplar ve veritabanları derhal kaldırılmalıdır.
Ağ Erişiminin Kısıtlanması
Bir veritabanı sunucusu, genellikle sadece belirli uygulama sunucularından gelen bağlantılara ihtiyaç duyar. İnternet dahil olmak üzere, gereksiz hiçbir yerden ağ erişimine izin verilmemelidir. Veritabanı yapılandırmasında, sunucunun yalnızca yerel ağ arayüzünü (örn: `127.0.0.1` veya özel ağ IP’si) dinlemesi (`bind-address`) sağlanmalı ve veritabanının kendi güvenlik duvarı kuralları (veya işletim sistemi güvenlik duvarı) ile yalnızca güvenilir IP’lerden gelen bağlantılara izin verilmelidir.
Veritabanı Erişim Yetkilerinin Sınırlandırılması
Uygulamaların veritabanına bağlanmak için kullandığı kullanıcı hesaplarına, en az yetki prensibine uygun olarak, yalnızca ihtiyaç duydukları yetkiler verilmelidir. Örneğin, bir uygulamanın yalnızca belirli tablolardan veri okuması (`SELECT`) gerekiyorsa, o kullanıcıya veri silme (`DELETE`) veya tablo yapısını değiştirme (`ALTER`) yetkisi verilmemelidir. Root veya `sa` gibi en yetkili veritabanı hesapları, uygulamalar tarafından asla kullanılmamalıdır.
Uygulamaların Düşük Yetkili Servis Hesapları ile Çalıştırılması
Web sunucusu, veritabanı sunucusu veya diğer servisler asla `root` veya `Administrator` gibi yüksek yetkili hesaplar altında çalıştırılmamalıdır. Her servis için, yalnızca kendi dosyalarına ve kaynaklarına erişim yetkisi olan, düşük ayrıcalıklı özel bir servis hesabı oluşturulmalıdır (örneğin, `www-data`, `mysql`, `nginx`). Bu, uygulamalardan birinde bir zafiyet sömürülse bile, saldırganın elde edeceği yetkilerin o uygulamanın servis hesabıyla sınırlı kalmasını sağlar ve tüm sistemi ele geçirmesini engeller.
Sunucu Güvenliği ve Hardening Hizmetleri İçin Neden İHS Telekom’u Tercih Etmelisiniz?
Sunucu sağlamlaştırma, derinlemesine teknik bilgi, tecrübe ve sürekli dikkat gerektiren karmaşık bir süreçtir. Yapılandırma hataları, güvenlik açıklarına veya hizmet kesintilerine yol açabilir. Bu nedenle, sunucu güvenliğinizi uzman ellere emanet etmek, dijital varlıklarınızı korumanın en etkili yoludur. İHS Telekom, yılların getirdiği tecrübe ve alanında uzman ekibiyle sunucu kiralama ve yönetimi konusunda size kapsamlı çözümler sunar. Sunduğumuz yönetimli hizmetler kapsamında, bu makalede bahsedilen tüm hardening adımlarını ve en iyi güvenlik uygulamalarını sizin için titizlikle hayata geçiriyoruz. Altyapınızı proaktif bir şekilde izliyor, düzenli olarak güncelliyor ve olası tehditlere karşı 7/24 koruma sağlıyoruz. İşletmenizin temel operasyonlarına odaklanırken, sunucularınızın güvenliğini ve performansını İHS Telekom’un güvencesine bırakarak içiniz rahat olsun.

