Есть несколько способов скрыть версию Апача.
1. Используя httpd.conf.
Добавляем в него следующие строки
code:
ServerSignature Off
ServerTokens ProductOnly
В результате, в заголовках, будет выводиться только
code:
Server: Apache
без указания конкретной версии.
Плюсы:
- затрудняет идентификацию сервера для злоумышленников
- мало влияет на работу скриптов
Минусы:
- приблизительное определение версии все равно возможно посредством fingerprint'а
2. Можно пойти далее и покопаться в исходных кодах.
Первое что попадается на глаза, это определение констант:
code:
~/src/apache_1.3.41/src/include/httpd.h:420
#define SERVER_BASEVENDOR "Apache Group"
#define SERVER_BASEPRODUCT "Apache"
#define SERVER_BASEREVISION "1.3.41"
#define SERVER_BASEVERSION SERVER_BASEPRODUCT "/" SERVER_BASEREVISION
#define SERVER_PRODUCT SERVER_BASEPRODUCT
#define SERVER_REVISION SERVER_BASEREVISION
#define SERVER_VERSION SERVER_PRODUCT "/" SERVER_REVISION
enum server_token_type {
SrvTk_MIN, /* eg: Apache/1.3.0 */
SrvTk_OS, /* eg: Apache/1.3.0 (UNIX) */
SrvTk_FULL, /* eg: Apache/1.3.0 (UNIX) PHP/3.0 FooBar/1.2b */
SrvTk_PRODUCT_ONLY /* eg: Apache */
};
Переопределяем константы, пересобираем сервер и, вуаля, теперь у нас собственный веб-сервер Neolite версии 1.2 =)
Плюсы:
- скрипткиддисов, просматривающих HTTP заголовки это введет в ступор =)
Минусы:
- возможны проблемы с различными скриптами, которым требуется знать имя и версию веб-сервера
- точное имя и приблизительную версию все равно можно определить посредством fingerprint'а
Материалы по теме:
http://apachedev.ru/2006/08/27/sokryitie-versii-se...sob-povyisheniya-bezopasnosti/