Modern web siteleri ve sunucular, otomatik saldırılar, güvenlik açığı taramaları, fidye yazılımları, kaba kuvvet denemeleri ve veri hırsızlığı kampanyalarının sürekli hedefidir. Küçük ve orta ölçekli web siteleri, genellikle uygun güvenlik önlemlerinden yoksun oldukları için sıkça hedef alınır.
Bu doküman, sistem yöneticileri, DevOps mühendisleri ve web sitesi sahipleri için yapılandırılmış, pratik ve uygulamaya odaklı güvenlik rehberliği sunar. Amaç, saldırı yüzeyini azaltmak, hassas bilgileri korumak ve operasyonel sürekliliği sağlamaktır.
"İşletim Sistemi Güçlendirme"yi, bir güvenlik sistemi kurmadan önce dağınık bir evi temizlemek gibi düşünün. Varsayılan olarak, çoğu işletim sistemi kurulumu kolaylık için yapılır - tüm özellikler açık gelir, bu kullanıcı için harikadır ama saldırganlar için bir altın madeni olur. Her ekstra paket veya açık port, açık bırakılmış bir pencere demektir.
"Az Çoktur" Yaklaşımı: Amaç, saldırı yüzeyinizi gerçekten ihtiyacınız olan şey dışında hiçbir şey kalmayana kadar küçültmektir.
Gereksizleri Atın: Bir üretim sunucusunun geliştirme araçlarına veya 90'lardan kalma eski FTP servisine ihtiyacı yoktur. Kullanmıyorsanız, kaldırın. Her zaman "minimal" bir kurulumla başlamanızı öneririz, böylece daha sonra işletim sistemiyle uğraşıp bir şeyleri kapatmak zorunda kalmazsınız.
Servislerinizi Denetleyin: Linux'ta systemctl veya Windows'ta Hizmetler Yöneticisi kullanarak arka planda nelerin çalıştığını görün. Bir servisin neden çalıştığını açıklayamıyorsanız, muhtemelen çalışmamalıdır.
Ön Kapıyı Güvenceye Almak (SSH): SSH, Linux sunucularıyla konuşmanın ana yolu olduğu için, genellikle hackerların ilk baktığı yerdir.
Root Girişini Kapatın: Kimsenin doğrudan root olarak giriş yapmasına asla izin vermeyin.
Şifrelerin Ötesine Geçin: SSH anahtarları kullanın. Çalınmaları daha zordur ve "tahmin edilmeleri" imkansızdır.
Bir Güvenlik Görevlisi Ekleyin:Fail2Ban gibi araçlar, girişinizi kaba kuvvetle zorlamaya çalışanları otomatik olarak engellemek için harikadır. Günlüklerinizdeki "gürültüyü" önemli ölçüde azaltır.
Tekerleği Yeniden İcat Etmeyin: "Güvenli"nin neye benzediğini tahmin etmek zorunda değilsiniz. CIS (Center for Internet Security) kıstaslarına sadık kalın. Güçlendirilmiş bir sistemin nasıl olması gerektiği konusunda zaten çalışmayı yaptılar, siz sadece haritayı takip edin.
Çoğu veri ihlali, yüksek teknolojili bir "Görevimiz Tehlike" saldırısının sonucu değildir. Genellikle birisi açık bir kapıdan içeri girer. Erişiminizi güvenceye almak hayatı zorlaştırmak için değil; sadece doğru kişilerin anahtarlara sahip olduğundan emin olmak içindir.
Güvenlikte buna En Az Ayrıcalık İlkesi denir, ama bunu "herkese ana anahtarı vermemek" olarak düşünebilirsiniz.
Hedef: Bir geliştiricinin test ortamında tam kontrole ihtiyacı olabilir, ancak üretimde root erişimine sahip olmamalıdır.
Gerçeklik Kontrolü: Bir veritabanı kullanıcısının işini yapmak için yönetici olması gerekmiyorsa, onu yönetici yapmayın. Bu, o hesabın ele geçirilmesi durumunda "patlama alanını" sınırlar.
Hâlâ sadece bir şifreye güveniyorsanız, ön kapınızı kilitlemeden bırakıyorsunuz demektir. Çok Faktörlü Kimlik Doğrulama (MFA) sizin güvenlik ağınızdır.
Önemli olan her şey için etkinleştirilmiş olmalı: SSH erişiminiz, bulut panelleriniz ve CMS panelleriniz. On saniyelik küçük bir rahatsızlık, tam bir felaketi önler.
Hepimiz "Password123!" gördük - ve hackerlar da gördü.
Uzun Tutun: 12-16 karakter hedefleyin. Uzunluk, karmaşıklığı her zaman yener.
Bir Yöneticiden Yararlanın: Yirmi farklı anlamsız dizeyi ezberlemeye çalışmayın. Bir şifre yöneticisi kullanın ve kimlik bilgilerini ekip üyeleri arasında paylaşmayı bırakın. Daha temiz, daha güvenli ve herkes için daha az baş ağrısıdır.
Güvenlik bir "kur ve unut" işi değildir. Düzenli olarak "hayalet hesaplar" için tarama yapın - orada öylece duran eski test profilleri veya etkin olmayan kullanıcılar. Kimse kullanmıyorsa, silin.
Güvenlik duvarınızı, sunucunuzun kapısındaki güvenlik görevlisi olarak düşünün. Listede yoksa, içeri giremez. Çoğu varsayılan kurulum çok naziktir - neredeyse herkesi içeri alır. Varsayılan olarak şüpheci bir güvenlik görevlisi istersiniz.
Ubuntu'da UFW, RHEL'de Firewalld veya Windows Defender kullanıyor olun, felsefe aynıdır: Her şeyi reddet, sonra istisna olarak izin ver.
Sıkı Tutun: Gerçekten sadece birkaç kapının açık olması gerekir. Genellikle bu 80 ve 443 web trafiği içindir.
SSH (Port 22): Bu sizin "arka kapınız"dır. Tüm dünyaya açık bırakmayın. Sadece sizin (ve ekibinizin) görebileceği şekilde belirli IP adresinize kısıtlayın.
Geri Kalanı Susturun: Bir port belirli bir iş yapmıyorsa, kapatın.
Bir davetsiz misafir mutfağınıza girerse, otomatik olarak yatak odanıza ve kasanıza anahtarının olmasını istemezsiniz. Ağ segmentasyonu bunun içindir.
Veritabanınız asla doğrudan internete açık olmamalıdır. Web sunucularınızı, veritabanlarınızı ve yönetim sistemlerinizi kendi ayrı "odalarında" tutun. Böylece web sunucunuz saldırıya uğrasa bile, verileriniz başka bir savunma katmanının arkasında güvende kalır.
Harika bir güvenlik duvarınız olsa bile, insanlar kilitleri açmaya çalışacaktır. Saldırı Tespit (IDS) ve Önleme (IPS) sistemleri akıllı bir güvenlik kamerası gibi çalışır.
Onlar "şüpheli" davranışları arar: her kapıyı deneyen biri (port tarama), dakikada bin kez şifre tahmini yapan biri (kaba kuvvet) veya bilinen bir açığı kullanmaya çalışan biri.
Günlükleri 7/24 izlemeniz gerekmeden, bu araçlar ağır işi yapar, sizi uyarır - ya da daha iyisi, tehdidi gerçek bir sorun olmadan önce engeller.
Teknoloji dünyasında "eski" genellikle "savunmasız" demektir. Hackerlar her zaman dahi değildir; çoğu zaman sadece sahibi tarafından unutulmuş kırık kilitli bir ev arayan insanlardır. Güncel kalmak, bu kilitleri birisi fark etmeden önce onarmanın yoludur.
Güncelleme için "sessiz bir hafta" beklemeyin - öyle bir hafta yok. Bir ritminiz olmalı:
Haftalık Ritüel: Her hafta standart güvenlik yamaları için zaman ayırın.
"Acil" Düğmesi: Kritik bir güvenlik açığı (Zero-Day) ortaya çıkarsa, her şeyi bırakın ve hemen yama yapın.
Sadece işletim sistemini güncellemeyin. Tüm "yığınınızı" takip etmeniz gerekir - web sunucularınız (Nginx/Apache), dilleriniz (PHP, Python, Node), veritabanlarınız ve özellikle CMS eklentileriniz. Bunlar genellikle zincirin en zayıf halkasıdır.
Sorunsuz Güncellemeler İçin İpuçları:
Sıkıcı İşleri Otomatikleştirin: İşletim sisteminiz otomatik güvenlik güncellemelerini destekliyorsa, etkinleştirin. Unutmanız gereken bir şey daha az olur.
Kırmadan Önce Test Edin: Mümkünse bir güncellemeyi doğrudan üretime göndermeyin. Önce bir test ortamında çalıştırın, böylece bir "düzeltme" yanlışlıkla tüm sitenizi devre dışı bırakmaz.
Güvenlik sadece hackerları durdurmakla ilgili değildir; en kötü durum gerçekleşse bile - fidye yazılımı, donanım arızası veya kazara bir silme rm -rf - geceleri rahat uyuyabilmeniz içindir.
Verilerinizi önemsiyorsanız, bu basit matematiği izleyin:
3 Kopya: Canlı veriniz artı iki yedek.
2 Farklı Ortam: Tüm yedeklerinizi aynı tür sürücüde veya aynı sunucuda tutmayın.
1 Dışarıda: En az bir kopya fiziksel olarak (veya bulut tabanlı) başka bir yerde olmalı. Ofisiniz su basarsa veya bir veri merkezi kapanırsa, o binada olmayan bir yedeğe ihtiyacınız var.
Şifreleme Vazgeçilmezdir: Yedeğiniz şifrelenmemişse, verilerinizi bulan kişiye elden teslim etmiş olursunuz.
"Değiştirilemez" Hilesi: Yazıldıktan sonra değiştirilemeyen veya silinemeyen depolama kullanmaya çalışın. Fidye yazılımlarına karşı en iyi savunmadır.
Acı Gerçek: Test etmediğiniz bir yedek, yedek değildir - sadece bir dilektir. Her çeyrekte verilerinizi gerçekten geri yüklemeyi deneyin. Sisteminizi birkaç saat içinde tekrar çalışır hale getiremiyorsanız, planınızın üzerinde çalışılması gerekir.
Siteniz HTTPS kullanmıyorsa, kullanıcılarınızın özel verilerini megafonla yayınlıyorsunuz demektir. Artık sadece "güzel bir özellik" değil - modern webde yer almak için giriş ücretidir.
Neden önemli: Verileri meraklı gözlerden gizlemenin ötesinde, "ortadaki adam" saldırılarını (birinin trafiğinizi ele geçirdiği durumlar) engeller ve Google'ın sitenizi arama sonuçlarında gömmesini önler.
Profesyonel Hamle: Sadece bir sertifika almakla kalmayın; zorunlu kılın. HSTS kullanın, böylece tarayıcı güvensiz bir bağlantı üzerinden sizinle konuşmayı reddeder ve SSLv3 veya TLS 1.0 gibi eski, "sızıntılı" protokolleri devre dışı bırakın.
Mükemmel şekilde güçlendirilmiş bir sunucu bile, kodunuzda "arka kapı" varsa sizi kurtaramaz.
Bir kullanıcının bir forma yazdığı her veriyi radyoaktifmiş gibi ele alın. Doğrulayın, temizleyin ve asla-veritabanınıza Hazırlanmış Sorgular kullanmadan dokunmasına izin vermeyin. SQL Injection'ı öldürmenin en iyi yolu budur.
Kodunuz üretimde çöktüğünde, "Bir şeyler ters gitti" demeli, "config.php'nin 42. satırında hata" dememeli. Sırlarınızı kendinize saklayın ve ayrıntılı günlükleri yalnızca sizin görebileceğiniz şekilde dahili olarak kaydedin.
Neyin tehlikeli olduğunu tahmin etmek zorunda değilsiniz. Sadece OWASP Top 10 listesini takip edin. İnsanların gerçekten nasıl sistemleri kırdığının kesin listesidir.
WordPress, Joomla ve Drupal çok yaygın oldukları için büyük hedeflerdir. Bir CMS çalıştırıyorsanız, aslında "Beni Hackle" tabelası asıyorsunuz demektir, eğer sade kalmazsanız.
Bir eklenti veya tema kullanmıyorsanız, silin. Sadece devre dışı bırakmayın - sunucunuzdan tamamen kaldırın. İhtiyacınız olmayan her kod satırı, istismar edilemeyecek bir satırdır.
Dosyaları doğrudan panelden düzenleme yeteneğini devre dışı bırakın. Bir hacker giriş bilgilerinizi ele geçirirse, işi bitirmesi için ona yerleşik bir kod editörü vermek istemezsiniz.
İzinleri 777 yapmak, ön kapınızı "İçeride Ücretsiz Eşya Var" yazısıyla açık bırakmak gibidir. Çoğu kurulum için klasörlerinizi 755 ve dosyalarınızı 644 olarak tutun. Bu "Altın Orta"dır - sistemin çalışması için yeterli, ama bir yabancının dosyalarınızı yeniden yazmaya başlaması için yeterli değil.
Bir dosya veritabanı şifresi veya bir API anahtarı tutuyorsa, onu 600 olarak kilitleyin. Böylece sadece sahibi içeri bakabilir.
Standart bir güvenlik duvarını binanızın etrafındaki çit olarak düşünün. Mülkte olmaması gerekenleri uzak tutmak için harikadır. Ama bir WAF ise doğrudan resepsiyonda duran özel bir güvenlik görevlisidir. Sadece kimlikleri kontrol etmez; her paketi açar ve her konuşmayı inceler, kimsenin tehlikeli bir şey sokmadığından emin olur.
Bir WAF, uygulamanızın önünde durur ve trafiği "temizler", zararlı şeyleri kodunuzun karşılaşmasına gerek kalmadan yakalar. Şunlara karşı en iyi savunmanızdır:
"Enjektörler": Birinin veritabanınızı kandırmaya çalıştığı sinsi SQL enjeksiyon girişimlerini tespit eder.
Script Kiddie'ler: Sitenizi kullanıcılarınıza karşı kullanmaya çalışan XSS (Cross-Site Scripting) saldırılarını filtreler.
Zorbalar (DDoS): Siteniz, sunucunuzu çökertmek için koordineli bir "kalabalık" sahte trafik tarafından doldurulduğunda bunu tanır.
Botlar: Gerçek bir insan müşteri ile yönetici panelinize kaba kuvvetle girmeye çalışan bir script arasındaki farkı ayırt edebilir.
Bulut tabanlı bir WAF (Cloudflare veya AWS WAF gibi) kullanıyorsanız, sadece bir filtreden fazlasını alıyorsunuz. Küresel bir kalkan elde ediyorsunuz. Bu hizmetler milyonlarca başka sitede gerçekleşen saldırıları görebildiği için, sitenizde yeni bir tehdidi siz daha varlığından haberdar olmadan engelleyebilirler. Bu, şehirdeki diğer tüm korumalarla konuşup sorun çıkaranları öğrenebilen bir korumanızın olması gibidir.
Veritabanınız "kasa"dır. Diğer her şey ev ise, altının saklandığı yer burasıdır. Kasayı ön verandada bırakmazsınız.
Her Şeyi İzole Edin: Veritabanınız ve web sunucunuz farklı "adalar"da olmalıdır. Veritabanınızı asla herkese açık internete açmayın. Sadece özel, IP ile kısıtlanmış bir bağlantı üzerinden web sunucunuzla iletişim kurmalıdır.
İç Kapıları Kilitleyin: "Güçlü" parolalar kullanın, hassas sütunları şifreleyin ve varsayılan kurulumlarla gelen "test" veritabanlarını silin. Bunlar, hackerların kendilerine yer edinmek için kullandığı gereksiz kalabalıktır.
Güvenli bir sunucu kurup günlükleri hiç kontrol etmemek, güvenlik kamerası takıp görüntüleri hiç izlememek gibidir.
Nelere dikkat etmeli: "Garip" davranışları arıyorsunuz. Sabah 3:00'te ani bir trafik artışı mı? Bir kullanıcının aniden yönetici dosyalarına erişmeye çalışması mı? Müşterinizin olmadığı bir ülkeden birden fazla başarısız giriş denemesi mi? Bunlar sizin için uyarı işaretleridir.
"Denetim Kaydı": Günlüklerinizi merkezi bir yerde tutun ki bir sunucu ele geçirilirse silinmesinler. Onları en az 90 gün saklayın. Eğer saldırıya uğrarsanız, nasıl girdiklerini anlamanın tek yolu bu günlüklerdir.
DNS'iniz veya e-postanız ele geçirilirse, markanızın itibarı yerle bir olur.
"Kimlik Kartı" Üçlüsü (SPF, DKIM, DMARC): Bunlar, bir e-postanın gerçekten sizden geldiğini kanıtlayan dijital imzalardır. Onlar olmadan, dolandırıcıların alan adınızı taklit edip müşterilerinize oltalama e-postaları göndermesi çok kolaydır.
DNSSEC: Bunu dijital adres defterinizdeki bir mühür gibi düşünün; birisi URL'nizi yazdığında gerçekten sitenize ulaştığından ve kötü niyetli bir kopyaya yönlendirilmediğinden emin olur.
Bir DDoS saldırısı akıllıca bir hack değildir; sadece bir grup botun aynı anda ön kapınızdan içeri girmeye çalışmasıdır, ta ki bina çökene kadar.
Bir Kalkan Kullanın: Bir CDN (Cloudflare gibi), sahte trafiği sunucunuza ulaşmadan önce emen bir tampon görevi görür.
Sınırlar Belirleyin: Oran sınırlaması ve bağlantı limitleri kullanarak sunucuya "Bir kişi aynı sayfayı saniyede 500 kez isterse, onu görmezden gel" diyebilirsiniz.
En iyi korunan şirketler bile saldırıya uğrayabilir. "Kötü bir gün" ile "işi bitiren bir felaket" arasındaki fark, bir plana sahip olmaktır.
Herkese tam olarak ne yapacağını söyleyen bir dokümana ihtiyacınız var. Kimi arayacağız? Enfekte sunucuyu nasıl izole edeceğiz? Müşterilere nasıl bilgi vereceğiz?
"Kurtarma Planınızı" ilk kez gerçek bir acil durumda okumayın. Takımın adımları bildiğinden emin olmak için yılda bir veya iki kez "yangın tatbikatı" yapın.
Ne yaptığınıza bağlı olarak (örneğin PCI-DSS ile kredi kartı veya HIPAA ile sağlık verisi işliyorsanız), güvenlik yasal bir gereklilik olabilir. Uyumluluk sadece güvenli olmakla ilgili değildir; aynı zamanda kanıtlamak ile ilgilidir. Denetim izlerinizi ve gizlilik belgelerinizi düzenli tutun. Denetçiler geldiğinde hayatınızı çok daha kolaylaştırır.
Güvenlik bir "kur ve unut" projesi değildir. Daha çok bir bahçe gibidir - eğer bakım yapmaz ve sulamazsanız, dağılır. Sürekli kontrol, yamalama ve öğrenme döngüsüdür. Bugün proaktif olmak, yarın bir felakete tepki vermekten çok daha ucuz (ve daha az stresli) olur.