Apache Sunucusunun güvenliğini sağlamak için bazı en iyi uygulamalar, öneriler, gerekli okumalar nelerdir?
Apache'nin güvenliğini sağlamak için İnternet Güvenliği Merkezi (CIS) kılavuzunu edinin (güvenliğin nasıl geliştirileceğini ayrıntılı olarak açıklar):
Düzenleme: Güncelleme bağlantısı CIS Apache HTTP Sunucusu 2.2.x Kıyaslama
Nessus için lisansınız varsa, denetim şablonlarını kapatarak otomatik bir çek çalıştırabilirsiniz:
Bu iyi bir rehberdir:
https://serverfault.com/questions/212269/tips-for-securing-a-lamp-server
Sertleştirme için temel kılavuz: http://www.wpsecure.net/server-guide/
Eğer php çalıştırıyorsanız: http://www.madirish.net/?article=229
Apache günlüğünde 404'leri (veya diğer durum kodlarını) bulun
awk '$9 == 404 {print $7}' access_log | uniq -c | sort -rn | head
Kabul edilen bu sorunun asıl olarak oylanan cevabı, Apache yapılandırmanızı korumanın 20 yol doğrudan intihal olduğu için silindi. Bu sayfa harika bir kaynak.
@RoryMcCune bu yanıta bir bağlantı olarak da gönderdi: Kullanılabilir bir ModSecurity Çekirdek Kural Seti geliştirmek için bir OWASP projesi var.
Burada birçok iyi tavsiye var, bu yüzden daha önce bahsedilen şeyleri tekrarlamayacağım. Ama söyleyeceğim:
Varsayılan hata sayfalarını Web Sunucusu sürümünüzü veya çekirdek düzeltmenizi vermeyen öğelerle değiştirmeyi unutmayın. Ben her varsayılan html "Hata 400" gibi bir şey 1 gömlekleri ile değiştirme eğilimindedir. Sistem hakkında çok az şey verir. Bu ilke, özel hata sayfaları görüntüleyebilen tüm web sunucuları için geçerlidir, hepsi varsayılandan gereğinden fazla bilgi vermek için varsayılan değerdir. ServerSignature'ın bunu gizleyeceğini düşünürsünüz, ancak çoğu durumda değil.
Ayrıca, tüm varsayılan HTML içeriğini (dile özgü vb.) Silmeyi unutmayın, böylece parmak izi çok daha zordur.
Bildiğim kadarıyla iyi okumalar gitmek bir teknik inceleme Apcon 2008 bir okumaya değer.
Mod_Security birkaç kez bahsedilir, bu web uygulamaları için daha uygundur, bu nedenle yalnızca statik içerik sunuyorsanız, size yardımcı olmaz çok fazla olsa da, istek işleme sırasında statik bir Web Sunucusunu etkileyebilecek bazı saldırılara rağmen.
Bahsettiğim diğer bir şey iyi bir günlük yönetimi, eğer günlüklerinizi yetiştirmiyor ve sisteme yakından bakarsanız, bir saldırganın farkında olmadan ona vurma riskiyle karşı karşıya kalırsınız.
Tüm genel güvenlik ilkeleri geçerlidir: yalnızca ihtiyacınız olan modülleri çalıştırın, ihtiyacınız olmayan özellikleri kapatın, izinlerinizi/sahipliklerinizi toplayın (çoğu içerik salt okunurdur, bu yüzden dosyalar neden 400'den fazla izin gerektiriyor?).
CGI işleri gibi Apache'ye özgü şeylerin veya aynı içeriği iki farklı güvenlik mekanizmasıyla iki kez sunan farklı vhost'ların fark edilmesi daha zordur; tam olarak otomatik bir kontrol değil, aslında Apache'yi, temel işletim sistemini ve Apache'de çalışan uygulamaların ne yaptığını bilmelisiniz.
Apache'ye mod_security bir göz atmaya değer olabilir.
Son zamanlarda sunucularımdan bazılarına devam ediyorum, sadece sürüm numarasını vb. Değiştirmek gibi Apache'nin kendisine bazı yapılandırma ayarları yapmıyor, aynı zamanda SQL gibi çok çeşitli saldırılara karşı korunmaya yardımcı olan bir web uygulaması güvenlik duvarı gibi davranıyor enjeksiyon vb.
Apache Web Sunucusunu Nasıl Korurum?
"Nasıl bir jum-jet uçarım" veya "Beyin ameliyatı nasıl yaparım" diye sorduğunuzda ne cevap beklenir - aynı şey bir web sunucusunu güvenli hale getirmek için de geçerlidir - 1000 saatlik eğitim, uygulama ve araştırma yapmanız gerekir . Ama herkes bir yerden başlamak zorunda olduğu için ...
Nasıl bir sunucu sertleştirmek için internette temel kontrol listeleri bir sürü vardır - ama başka bir yerde benim yorum göre onlar büyük ölçüde kalite değişir.
İyi bir kaynak olarak sans one tavsiye ederim.
Kontrol listesini takip ettikten sonra,
Bir güvenlik olayıyla nasıl başa çıkacağınızı planlamayın eğer olur. Ne yapacağınızı planlayın ne zaman olur.
Sistem kurulumunuzu yaptıktan ve yapılandırdıktan sonra sabit diski çıkarın ve orijinal diski kullanmadan hizmeti yeniden açmanızın ne kadar sürdüğünü görün.
bu sadece Apache ile ilgili değildir (ve aynı zamanda nginx + php-fpm için de geçerlidir), fakat sıklıkla unutulur: php-eastereggs, php.ini ile değiştirilebilir
expose_php = off
bir phpinfo.php'yi geride bırakmak kadar korkunç değil, ancak genellikle çok tembel sistem yönetimine bir ipucu.
bkz. paskalya yumurtaları
İyi iş parçacığı döndü. Birçok insan gerçeği söyler.
Birini unuttular, OpenBSD yol:
OpenBSD'de, Apache httpd (8) sunucusu varsayılan olarak chroot (2) olarak düzenlenmiştir
httpd (Apache'nin v.1 sürümü) varsayılan olarak OpenBSD'ye dahil edilmiştir ve varsayılan olarak köklendirilmiştir.
Diğer Unix benzeri işletim sistemlerinde Apache2 veya nginx ile bunu tekrarlayabilirsiniz.
Apache'nin en son sürümünü kullanın, işletim sisteminizi ve ayrıca openssl veya diğer üçüncü tarafları yamalayın.
İstenmeyen bağlantı noktalarını engelleyin.
Bu sizi bilinen bazı güvenlik açıklarından koruyacaktır, ancak elbette 0 güne her zaman açık olacaksınız.
İşte 6 temel adım:
modsecuritykullanın.
Ağ güvenlik duvarınıza güvenmeyin, web güvenliği hakkında konuşmak işe yaramaz.