изменение header apache2


Если вы хотите изменить отображение ответа сервера Apache о версии и добавить, скажем туда имя компании, это не очень сложный процесс, но он включает в себя изменение исходного кода

Пример команды

curl -sS -D - -o /dev/null http://google.ru
HTTP/1.1 301 Moved Permanently
Location: http://www.google.ru/
Content-Type: text/html; charset=UTF-8
date = "Mon, 22 Nov 2010 14:56:27TGMT:00+03:00"
Expires: Wed, 22 Dec 2010 14:56:27 GMT
Cache-Control: public, max-age=2592000
Server: gws
Content-Length: 218
X-XSS-Protection: 1; mode=block

как мы видим, сервер возвращает gws, сокарщенно от Google Web Server, хотя Google использует модифицированный Apache, хотя по словам Мэта Катса у Google самописный сервер. Apache в коде скрывает свою версию, нам нужно поменять всего одну строку.

if (ap_server_tokens == SrvTk_PRODUCT_ONLY) {
ap_add_version_component(pconf, AP_SERVER_BASEPRODUCT);
}
else if (ap_server_tokens == SrvTk_MINIMAL) {
ap_add_version_component(pconf, AP_SERVER_BASEVERSION);
}
else if (ap_server_tokens == SrvTk_MINOR) {
ap_add_version_component(pconf, AP_SERVER_BASEPRODUCT "/" AP_SERVER_MINORREVISION);
}
else if (ap_server_tokens == SrvTk_MAJOR) {
ap_add_version_component(pconf, AP_SERVER_BASEPRODUCT "/" AP_SERVER_MAJORVERSION);
}
else {
ap_add_version_component(pconf, AP_SERVER_BASEVERSION " (" PLATFORM ")");
}

Вот где стоит версия продукта, и если вы выставите только Prod, то отобразится base_product и больше ничего, нам стоит изменить base_product. И так, приступим

Перво-наперво, стащим копию «индейца» из http://www.apache.org и разархивируем.

Теперь нужно изменить include/ap_release.h перед компиляцией:

vim include/ap_release.h

Найдем

#define AP_SERVER_BASEPRODUCT "Apache"

и заменим на

#define AP_SERVER_BASEPRODUCT "Pupkin&Co"

Pupkin&Co - это пример, меняем на что угодно

Теперь компилируем Apache со своими параметрами под свои нужды и устанавливаем:

./configure --prefix=/usr/pupkinandco
make
make install

А теперь настроим apache2.conf, чтоб он читал только server_baseproduct. Путь в котором будет лежать конфиг зависит от параметра, с которым вы компилировали. В нашем примере это - /usr/pupkinandco. По умолчанию это будет /etc/apache2

vim /usr/pupkinandco/conf/apache2.conf

Найдем: ServerSig и заменим на ServerSig off или вставим этот параметр, если его нет. Добавим также ServerTokens Prod

Всё. Запускаем apache и наслаждаемся:

sudo /etc/init.d/apache2 start

и

curl -sS -D - -o /dev/null localhost
HTTP/1.1 200 OK
date = "Mon, 22 Nov 2010 15:17:06TGMT:00+03:00"
Server: Pupkin&Co
Last-Modified: Sun, 22 Nov 2010 15:16:41 GMT
ETag: "****"
Accept-Ranges: bytes
Content-Length: 177
Vary: Accept-Encoding
Content-Type: text/html
comments powered by Disqus