от Vladsun(24-10-2006)

рейтинг (17)   [ добре ]  [ зле ]

Printer Friendly Вариант за отпечатване

1. Увод

В Интернет може да намерите достатъчно сайтове посветени на пробивите в сигурността на различни web-приложения и техните версии. Много от хакерските атаки започват именно с разгадаването на продукта и версията, която използвате за определена web-услуга на сървера Ви. Също така някои от script-kiddies атаките започват с такава проверка.


След като определи продукта и версията на приложението атакуващият най-често търси в специализираните сайтове дали съществуват пробиви за съответното приложение и преценява дали атаката му ще има резултат.
Един от най-лесните методи за определяне на продукта и неговата версия е чрез така наречените "банери", които изпращат самите приложения. Всеки от Вас е виждал под съобщението за грешка 404 информация от вида на "Apache/1.3.31 Server at XXX.XXX.XXX.XXX Port 80", а в някои случаи и по-подробно.
Настоящата статия има за цел да покаже как да отстраним или променим тези банери с цел повишаване на сигурността.

2. Решения за някои web-приложения

2.1. Apache

Най-лесната операция в случая е да промените/добавите директивите в конфигурационния файл httpd.conf по следния начин:
 ServerSignature Off
 ServerTokens ProductOnly
 

Това ще доведе до скриване на информацията за версията на Apache и инсталираните модули към него, но няма да скрие името на продукта (Apache).
Вторият, но по-труден вариант е да промените сорса на Apache преди да го компилирате. Отворете include/httpd.h и променете:
 #define SERVER_BASEVENDOR "Apache Group"
 #define SERVER_BASEPRODUCT "Apache"
 #define SERVER_BASEREVISION ""
 
Примерно на (BASEVENDOR: Microsoft, BASEPRODUCT: Microsoft-IIS, BASEREVISION: 5.0).

2.2. PHP

За PHP4, Apache редактирайте php.ini, като промените директивата:
ExposePHP off


2.3. ProFTPd

Отворете в директорията, където сте разархивирали пакета, src/main.c и потърсете за:
if((id = find_config(server->conf,CONF_PARAM,"ServerIdent",FALSE))
Коментирайте (/* if-блок */) целия if-блок и добавете под него следния ред:
send_response("220", "%s", server->ServerName);
Прекомпилирайте proftpd. След това редактирайте proftpd.conf и променете "ServerName" примерно на "Microsoft FTP Service (Version 5.0).".

2.4. OpenSSH

Отворете в директорията, където сте разархивирали пакета version.h и променете реда:
#define SSH_VERSION     "OpenSSH_4.1"
Прекомпилирайте.

2.5. Postfix

Редактирайте main.cf, като търсите за smtpd_banner. В случая, обаче съшествува един проблем - ако искате да представите се представите за Microsoft’s ESMTP - този сървер връща текущата дата, докато Postfix не. За да отстраните този проблем, редактирайте /src/smtpd/smtpd.c и потърсете реда:
smtpd_chat_reply(state, "220 %s", var_smtpd_banner);
Сменете го с тези два реда:
 state->time = time((time_t *) 0);
 smtpd_chat_reply(state, "220 %s ready at %s", var_smtpd_banner, mail_date(state->time));
 
Прекомпилирайте, редактирайте main.cf с "Microsoft ESMTP MAIL Service, Version: 5.0.2195.5329" и сте готови.

2.6. Sendmail

Отворете /etc/mail/sendmail.cf и променете следния ред:
O SmtpGreetingMessage=$j Sendmail $v/$Z; $b
на
O SmtpGreetingMessage=OpenSMTP 2.1.1;
или нещо по Ваш избор.

2.7. Qmail

Доколкото ми е известно Qmail не подава банери при опит за връзка.

2.8. Bind

Редактирайте named.conf, като промените/добавите примерно:
 ....
 	options {
 
         version "smallDNS 2.1";
 .....
 


3. Заключение

В статията бях дадени начини за промяна на банерите подавани от някои от най-често използваните web-приложения. Тази промяна, като цяло, води до повишаване на сигурността на цялата система. В повечето от случаите дори и nmap дава невярна информация за стартираните приложения.
Все пак, не трябва да се разчита много на постигнатата по този начин сигурност. Изградете си добри защитни стени, следете за обновявания на използваните от Вас приложения, както и за новооткритите пробиви в тях.

4. Използвани материали

[1] http://projects.vanscherpenseel.nl/documents/howto_banners.html
[2] http://bulhack.org/educ/secure/bannersfaking.pdf




<< Как да използваме Linux-BG като RHSBL | Vodafone Mobile Connect под Линукс >>