Apache ile HTTP yanıtından Server: header nasıl kaldırılır?


20

Hattı kaldırmak istiyorum:

Server: Apache/2.2.8 (Ubuntu) PHP/5.2.4-2ubuntu5.6 with Suhosin-Patch mod_ssl/2.2.8 OpenSSL/0.9.8g

sunucumun HTTP yanıtlarından, ancak include/ap_release.hApache'yi kendim değiştirmek ve derlemek dışında bir şey bulamadım . Bilmediğim bir yol olup olmadığını merak ediyordum.

Yanıtlar:


16

ModSecurity açık kaynak web uygulaması güvenlik duvarını kullanarak sunucu kimliğini Http Başlığından kaldırabilir veya maskeleyebilirsiniz .

Sunucu kimliği maskeleme

Saldırganların yavaşlamasına ve karıştırılmasına yardımcı olan bir teknik, web sunucusu kimlik değişikliğidir. Web sunucuları kimliklerini genellikle Sunucu üstbilgisindeki her HTTP yanıtıyla gönderir. Apache, özellikle varsayılan olarak adını ve tam sürümünü göndermekle kalmaz, aynı zamanda sunucu modüllerinin sürümlerini de eklemesine izin verir.

Apache web sunucusunun kimliğini değiştirmek için kaynak koduna gitmeli, "Apache" isminin sabit kodlandığı yeri bulmalı, değiştirmeli ve sunucuyu yeniden derlemelisiniz. Aynı etki,

SecServerSignature yönergesi:

SecServerSignature "Microsoft-IIS/5.0"

Her ne kadar bu oldukça iyi çalışsa da, yetenekli saldırganların (ve araçların) web sunucusunu "parmak izi" için başka teknikler kullanabileceği unutulmamalıdır. Örneğin, varsayılan dosyalar, hata mesajı, giden üstbilgilerin sırası, sunucunun belirli isteklere yanıt verme şekli ve benzerleri - hepsi gerçek kimliği verebilir. Mod_security'in gelecekteki sürümlerinde kimlik maskeleme desteğini daha da artıracağım.

Apache imzasını değiştirirseniz ancak hata günlüğündeki garip mesajdan rahatsız olursanız (bazı modüller hala görülebilir - bu sadece hata günlüğünü etkiler, dışarıdan beklendiği gibi çalışır):

[Fri Jun 11 04:02:28 2004] [notice] Microsoft-IIS/5.0 mod_ssl/2.8.12 OpenSSL/0.9.6b \ configured -- resuming normal operations

Daha sonra mod_security'nin en son çalışmasına izin vermek için modülleri yükleme sırasını yeniden ayarlamanız gerekir.

Not

Bu direktifin çalışması için ServerTokens'i Tam olarak bırakmanız / ayarlamanız gerekir.

SecServerSignature yönergesi ortak sunucu imzasını değiştirmek için kullanıldığında, ModSecurity gerçek imzayı hata günlüğüne yazmaya başlayarak web sunucusunu ve kullanılan modülleri tanımlamanızı sağlar.

Kaynak: ModSecurity Başvuru Kılavuzu


Şu anda çalışıyor, ancak saldırı eylemlerini tetikleyebileceğiniz için mevcut başka bir sunucu adını kullanmanın akıllıca olmadığını düşünüyorum.
Codebeat

27

ServerTokens" Prod" Olarak ayarlarsanız , başlığı " Server: Apache" değerine düşürebilirsiniz . Seçeneklerin tam listesi için belgelere bakın:

Apache 2.2 belgeleri

Apache 2.4 belgeleri

Not: Ayarlar her iki sürümde de aynıdır, ancak 2.4 belgesi bu notu ekler:

Birlikte çalışma sorunlarının hatalarını ayıklamayı zorlaştırdığı için ServerTokens öğelerini minimumdan daha düşük bir değere ayarlamak önerilmez. Ayrıca, Sunucu: başlığının devre dışı bırakılmasının sunucunuzu daha güvenli hale getirmek için hiçbir şey yapmadığını unutmayın. "Belirsizlik yoluyla güvenlik" fikri bir efsanedir ve yanlış bir güvenlik duygusuna yol açar.

"Apache" kelimesini tamamen kaldırmak istiyorsanız, kaynağı değiştirmeniz gerekir.


Cevap için +1 tnx, bunun farkında olduğumu söylemeyi unuttum, ancak Microsoft IIS veya başka bir şey söylemesini istiyorum. Bunu netleştirmeliydim.
Neo
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.