İlan
Paylaşılan Evsahipliği. Bu ucuz seçenek, değil mi? Nüfusun büyük bir bölümü için, web sitelerini veya web uygulamalarını barındırmak için ihtiyaç duydukları tek şey budur. Ve iyi yapıldığında, paylaşılan barındırma ölçeklenebilir, hızlı ve güvenlidir.
Ama iyi yapılmadığında ne olur?
Tehlikeli güvenlik sorunları kaymaya başlar. İşte o zaman siteniz tahrif olma riski altındadır veya tuttuğunuz özel verilerin sızdırılması riski vardır. Ama üzülme. Web barındırma büyük çoğunluğu iyi güvenlik önlemleri var. Bu sadece dikkatli olmanız gereken gece uçuşu, pazarlık bodrum ana bilgisayarlarıdır.
Öneririz InMotion Hosting’in SSD depolama alanıyla paylaşılan barındırma.
Paylaşılan barındırma ile ilgili güvenlik sorunlarını keşfedeceğiz. Ancak önce paylaşılan bir barındırma platformunu nelerin güvenli kıldığından bahsedelim.
Güvenli Web Sunucusu Nedir?
Paylaşılan barındırma ile ilgili yapılması gereken birkaç göze çarpan güvenlik hususları vardır.
- Sunucudaki her kullanıcı diğer kullanıcılardan yalıtılmalı ve diğer kullanıcıların dosyalarına erişememeli veya değiştirememelidir.
- Sunucuda barındırılan bir web sitesinin mantığındaki güvenlik açığı diğer kullanıcıları etkileyemez.
- Sunucu, mimari güvenlik sorunlarını ele almak için düzenli olarak yamalanır, güncellenir ve izlenir.
- Her kullanıcının kendi yalıtılmış veritabanı erişimi olmalı ve diğer kullanıcıların depolanan kayıtlarında veya tablo izinlerinde değişiklik yapmasına izin verilmemelidir.
Yine, çoğu web barındırma paylaşılan teklifleri için bu gereksinimleri karşılar. Ancak bir sunucuda birden çok web sitesini barındırmayı düşünüyorsanız veya barındırma şirketinizin nasıl yığıldığını merak ediyorsanız, hatta kendi barındırma şirketinizi kurmayı düşünüyor ve kullanıcılarınızı nasıl güvenceye alacağınızı öğrenmek istiyorsa, lütfen okuyun üzerinde.
Ama Önce Bir Feragat
Paylaşılan barındırma düzeyindeki ortak saldırılara bakmanın etine girmeden önce, sadece bu yayının kapsamlı bir potansiyel güvenlik listesi olmayacağını (ve okunmaması gerektiğini) belirtin sorunlar.
Güvenlik, tek kelimeyle, büyüktür. Bir sitenin güvenliğini aşmanın birçok yolu vardır. Bu paylaşılan barındırma için iki katına çıkar. Onları tek bir makalede kapatmak asla kartlarda yoktu.
Güvenliğiniz konusunda paranoyaksanız, bir VPS veya özel sunucu edinin. Bunlar, neler olup bittiğini (çoğunlukla) mutlak kontrolünüz olan ortamlardır. Web barındırma farklı türlerinden emin değilseniz, bu yazıyı kontrol et Web Sitesi Barındırma Çeşitli Formlar Açıklaması [Teknoloji Açıkladı] Daha fazla oku meslektaşım James Bruce'dan.
Ayrıca, bu gönderinin paylaşılan barındırma saldırısı olarak yorumlanmaması gerektiğini de vurgulamalıyım. Aksine, bu web hosting kategorisini çevreleyen güvenlik konularına tamamen akademik bir bakış.
Dizin Geçişi
Dizin geçişi (genellikle ‘yol geçişi olarak bilinir) saldırılarıyla başlayalım. Bu tür saldırılar, web kökünün dışında depolanan dosyalara ve dizinlere erişmenizi sağlar.
Sade ingilizce? Pekala, Alice ve Bob'un web sitelerini barındırmak için aynı sunucuyu kullandıklarını düşünelim. Alice’in dosyaları / var / www / alice'de saklanırken Bob’un belgeleri / var / www / bob'da bulunabilir. Ayrıca, sunucuda başka bir klasör olduğunu varsayalım (/ usr / crappyhosting / myfolder) şifrelenmemiş düz metin dosyası içeren (buna pwd.txt adını vereceğiz) ve sistem kullanıcı adlarını içeren ve şifreler.
Benimle şimdiye kadar mı? İyi. Şimdi, Bob’un web sitesinin yerel olarak oluşturulan PDF dosyalarını sunduğunu ve yerel dosyaya URL'de referans verildiğini düşünelim. Gibi bir şey:
http://example.com/file?=report.pdf
‘Report.pdf’ yi dizini değiştiren bazı UNIX parametreleriyle değiştirirsem ne olur?
http://example.com/file?=../alice/
Sunucu yanlış yapılandırılırsa, bu Alice'in belge kökünü görmenizi sağlar. İlginç, ancak bu sulu pasaport dosyasıyla çok daha fazla ilgileniyoruz. Accio şifreleri!
http://example.com/file?=../../../usr/crappyhosting/myfolder/pwd.txt
Gerçekten bu kadar kolay. Fakat bununla nasıl başa çıkabiliriz? Bu kolay.
Şimdiye kadar az bilinen bir Linux yardımcı programını duydum chroot? Muhtemelen ne yaptığını tahmin etmişsinizdir. Linux / UNIX kökünü rasgele bir klasöre ayarlar ve kullanıcıların klasörden çıkmasını imkansız hale getirir. Etkili bir şekilde, dizinlerindeki çapraz geçiş saldırılarını durdurur.
Ev sahibinizin bunu yasaya aykırı olmadan yerinde olup olmadığını söylemek zor. Sonuçta, test etmek için erişim izniniz olmayan sistemlere ve dosyalara erişiyor olacaksınız. Bunu göz önünde bulundurarak, belki web barındırma ile konuşmak ve onların kullanıcıları birbirinden nasıl izole hakkında bilgi almak mantıklı olacaktır.
Kendi paylaşılan barındırma sunucunuzu çalıştırıyor ve kullanıcılarınızı korumak için chroot kullanmıyor musunuz? Kuşkusuz, ortamlarınızı renklendirmek zor olabilir. Neyse ki, bunu kolaylaştıran birçok eklenti var. Özellikle mod_chroot'a bir göz atın.
Komut Enjeksiyonu
Alice ve Bob'a geri dönelim. Yani, Bob’un web uygulamasında birkaç… Ahem… Güvenlik sorunu var. Bunlardan biri, çalıştırmanıza izin veren komut enjeksiyon güvenlik açığıdır gelişigüzel sistem komutları Linux Komut Satırına Başlamak için Hızlı KılavuzLinux'ta komutlarla birçok şaşırtıcı şey yapabilirsiniz ve öğrenmek gerçekten zor değil. Daha fazla oku .
Bob’un web sitesi, daha sonra tarayıcıda görüntülenen başka bir web sitesinde whois sorgusu çalıştırmanıza izin verir. Bir etki alanı adını kabul eden ve ardından whois sistem komutunu çalıştıran standart bir HTML giriş kutusu vardır. Bu komut system () PHP komutu çağrılarak yürütülür.
Birisi aşağıdaki değeri girerse ne olur?
example.com && cd ../alice/ && rm index.html
Hadi yıkalım. Eğer okuduysanız, bunlardan bazıları size tanıdık gelebilir. Linux Linux için Başlangıç Kılavuzu ’ Linux ve Ubuntu'ya BaşlarkenLinux'a geçmekle ilgileniyorsunuz... ama nereden başlıyorsun? PC'niz uyumlu mu? Favori uygulamalarınız çalışır mı? İşte Linux'u kullanmaya başlamak için bilmeniz gereken her şey. Daha fazla oku 2010 yılında daha önce yayınladığımız veya Linux Komut Satırı Hile Sayfası.
İlk olarak, example.com'da bir whois sorgusu çalıştırır. Ardından mevcut çalışma dizinini Alice’in belge köküne dönüştürür. Ardından, web sitesinin dizin sayfası olan "index.html" adlı dosyayı kaldıracaktır. Bu iyi değil. Hayır efendim.
Peki, sistem yöneticileri olarak buna karşı nasıl hafifletebiliriz? Bir önceki örneğe dönersek, her kullanıcıyı her zaman kendi yalıtılmış, sterilize edilmiş, krobe edilmiş ortamlarına koyabiliriz.
Buna dil seviyesinden de yaklaşabiliriz. İşlev bildirimlerini dillerden global olarak kaldırmak (ancak bu her şeyi kırabilir) mümkündür. Yani, kullanıcıların erişebildiği dillerdeki işlevselliği kaldırmak mümkündür.
Özellikle PHP'ye baktığımızda, dilin işlevselliğini değiştirmek için PHP’nin resmi araç takımı olan Runkit ile işlevselliği kaldırabilirsiniz. Dışarıda çok sayıda belge var. Bunu okuyun.
Bilgisayar korsanları tarafından sıklıkla kötüye kullanılan işlevleri devre dışı bırakmak için PHP'nin yapılandırma dosyasını da (php.ini) değiştirebilirsiniz. Bunu yapmak için sunucunuzda bir terminal açın ve php.ini dosyanızı bir metin düzenleyicide açın. VIM kullanmaktan hoşlanıyorum, ancak NANO da kabul edilebilir.
Enable_functions ile başlayan satırı bulun ve yasaklamak istediğiniz fonksiyon tanımlarını ekleyin. Bu durumda, bilgisayar korsanları tarafından sömürülen diğer yerleşik işlevlerin olduğunu belirtmekle birlikte, exec, shell_exec ve sistem olurdu.
devre dışı_ İşlevler = exec, shell_exec, sistem
Dil Ve Tercüman Temelli Saldırılar
Şimdi PHP'ye bakalım. Bu, şaşırtıcı sayıda web sitesine güç veren dildir. Aynı zamanda bir dizi kendine özgü deyimler ve garip davranışlarla birlikte gelir. Bunun gibi.
PHP genellikle Apache web sunucusuyla birlikte kullanılır. Çoğunlukla, bu yapılandırma ile dilin birden fazla sürümünü yüklemek imkansızdır.
Bu neden bir sorun? Bob’un web uygulamasının ilk olarak 2002 yılında oluşturulduğunu düşünelim. Çok uzun zaman önceydi. Michelle Branch hala listelerin zirvesindeyken, Michael Jordan hala Washington Sihirbazları için oynuyordu ve PHP çok farklı bir dildi.
Ama Bob’un web sitesi hala çalışıyor! Durdurulan ve kullanımdan kaldırılan PHP işlevlerinin bir demetini kullanıyor, ancak çalışıyor! PHP'nin modern bir versiyonunu kullanmak Bob’un web sitesini etkili bir şekilde bozabilir ve Bob neden web sitesini web sunucusunun kaprislerine hitap edecek şekilde yeniden yazmalıdır?
Bu size bazı web ev sahiplerinin karşılaştığı ikilem hakkında bir fikir vermelidir. Mimari açıdan sağlıklı ve güvenli bir hizmet sağlamayı dengede tutarken, ödeme yapan müşterilerin mutlu olmasını sağlamakla uyumludurlar.
Sonuç olarak, daha küçük, bağımsız ana bilgisayarların PHP'nin eski sürümlerini (veya bu konudaki herhangi bir dili) kullandığını görmek nadir değildir.
Daha küçük, bağımsız ana bilgisayarların PHP'nin eski sürümlerini kullandığını ve kullanıcıları güvenlik risklerine maruz bıraktığını görmek nadir değildir.
Bu neden kötü bir şey? Öncelikle, kullanıcıları bir dizi güvenlik riskine maruz bırakacaktır. Çoğu büyük yazılım paketi gibi, PHP de sürekli olarak keşfedilen (ve ifşa edilen) güvenlik açıklarının çokluğunu gidermek için sürekli güncellenmektedir.
Ayrıca, kullanıcıların en son (ve en büyük) dil işlevlerini kullanamayacağı anlamına gelir. Ayrıca bir nedenden dolayı kullanımdan kaldırılan işlevlerin devam ettiği anlamına gelir. Durumunda PHP programlama dili PHP ile İnşa Etmeyi Öğrenin: Bir Çarpışma KursuPHP, Facebook ve Wikipedia'nın her gün milyarlarca istek sunmak için kullandığı dildir; insanlara web programlama öğretmek için kullanılan fiili dil. Çok basit, ama çok güçlü. Daha fazla oku , etkileşimde kullanılan gülünç korkunç (ve yakın zamanda kullanımdan kaldırılmış) mysql_ işlevlerini içerir MySQL İlişkisel Veritabanı Sistemi ve kullanıcıların kendi dillerini içe aktarmalarını sağlayan dl () ile uzantıları.
Kullanıcı olarak, hizmetinizde bir tercümanın hangi sürümünün çalıştığını görebilmeniz gerekir. Eskiyse veya bir dizi güvenlik açığı içeriyorsa, barındırıcınıza başvurun.
Sistem yöneticileri ne olacak? Burada birkaç seçeneğiniz var. İlk (ve en umut verici), her bir kullanıcı için Docker'ı kullanmaktır. Docker, başka bir işletim sistemi çalıştırmak zorunda kalmasanız da, sanal bir makinenin yaptığı gibi, aynı anda birden çok yalıtılmış ortamı çalıştırmanıza izin verir. Sonuç olarak, bu hızlı. Gerçekten, gerçekten hızlı.
Sade ingilizce? Müşterilerinizin çoğu için en son ve en büyük kanayan tercümanları çalıştırabilirsiniz. diğerlerinden ödün vermeden eski, kullanım dışı tercümanlar kullanan eski uygulamaları kullanan kullanıcılar.
Bu dilin agnostik olma avantajına da sahiptir. PHP, Python, Ruby. Her neyse. Hepsi aynı.
Kabuslar Olmaz.
Bu gönderi birkaç şey yapmak için tasarlandı. Birincisi, dikkatinizi web hosting firmalarının müşterilerinin ve verilerinin güvenliğini sağlamak için karşılaşmak zorunda güvenlik sorunları sayısını getirmek oldu.
Aynı sunucuda barındırılan sitelerin birbirlerini nasıl etkileyebileceğini göstermek de amaçlanmıştır. Buna bir çentik koymak ister misiniz? İyi, güvenli kodlama standartlarına uymaya başlayın. Özellikle, girişlerinizi hem ön uçta hem de arka uçta sterilize etmeye başlayın.
Yeni HTML5 form doğrulama işleviyle iyi bir başlangıç. Bunu daha önce HTML5 kılavuzumuzda konuşmuştuk. Toplu olarak, daha iyi, daha vicdanlı programcılar olarak web sitelerini daha güvenli hale getirebiliriz.
Her zaman olduğu gibi, düşüncelerinizi duymaya hazırım. Bana aşağıya bir yorum bırakın.
Fotoğraf kredisi: Herkesin Hacker'a İhtiyacı Var (Alexandre Dulaunoy), Taksi Penceresinde Etiket (Cory Doctorow), Sunucu odası (Torkild Retvedt), Linux Kitaplar ve Dergiler (library_mistress), PHP Fil (Markus Tacker)
Matthew Hughes, Liverpool, İngiltere'den bir yazılım geliştiricisi ve yazarıdır. Elinde bir fincan güçlü siyah kahve olmadan nadiren bulunur ve kesinlikle Macbook Pro ve kamerasına hayran kalır. Blogunu şurada okuyabilirsiniz: http://www.matthewhughes.co.uk ve @matthewhughes'da Twitter'da takip edin.