Приховаємо версію нашого веб сервера Apache і інтерпретатора PHP.

[root@lin1 conf.d]# HEAD http://10.2.0.102/index.php

200 OK

Connection: close

Date: Sat, 09 Apr 2011 11:22:31 GMT

Server: Apache/2.2.3 (CentOS)

Content-Type: text/html; charset=UTF-8

Client-Date: Sat, 09 Apr 2011 11:22:31 GMT

Client-Peer: 10.2.0.102

Client-Response-Num: 1

X-Powered-By: PHP/5.1.6

Що ми бачимо :

….

Server: Apache/2.2.3 (CentOS)

….

X-Powered-By: PHP/5.1.6

….

Або ж  в баузері спробуємо  набрати неіснуючий файл на сервері тоді сервер видасть сторінку 404 і покаже наступне:

 

Це не зовсім  те що нам потрібно.

Тоді починаємо….

За видачу  поля  «Serverв  Apache  відповідає опція

# cat httpd.conf |grep ServerTokens

ServerTokens OS

 

В таблиці представлені можливі варіанти  видачі:

ServerTokens Setting

Server Banner Header

ProductOnly

Server: Apache

Major

Server: Apache/2

Minor

Server: Apache/2.0

Minimal

Server: Apache/2.0.55

OS

Server: Apache/2.0.55 (Debian)

Full (or not specified) default

Server: Apache/2.0.55 (Debian) PHP/5.1.2-1+b1 mod_ssl/2.0.55 OpenSSL/0.9.8b

 

Ми бажаємо приховати по максимуму інформацію, тоді вибираємо першу директиву —

# cat httpd.conf |grep ServerTokens

ServerTokens ProductOnly

Також змінимо  «ServerSignature» — дана опція відповідає за вивід інформації внизу  сторінок,  які з генеровані  Apache,  таких як 404, списки каталогів і т.д. Після  установки  Apache для « ServerSignature » стоїть :

#cat httpd.conf |grep ServerSignature

ServerSignature On

Є три можливі варіанти запуску даної опції

# Set to one of:  On | Off | EMail

То ж  ми міняємо на   Off

#cat httpd.conf |grep ServerSignature

ServerSignature Off

Після  внесених змін в httpd.conf перезапускаємо сервер:

#service httpd restart

Тепер перевіримо що нам видає Apache:

# HEAD http://10.2.0.102/index.html

200 OK

Connection: close

Date: Sat, 09 Apr 2011 12:06:51 GMT

Accept-Ranges: bytes

ETag: «7f704-13b3-13994040»

Server: Apache

Content-Length: 5043

Content-Type: text/html; charset=UTF-8

Last-Modified: Mon, 30 Aug 2010 16:37:13 GMT

Client-Date: Sat, 09 Apr 2011 12:06:51 GMT

Client-Peer: 10.2.0.102

Client-Response-Num: 1

Результат :

Server: Apache

Наступний етап – приховати версію php. Для цього відкриємо

# vim  /etc/php.ini

Знайдемо такий рядок

expose_php = On

і поміняємо на « Off ».

Також після  внесених змін  php.ini  перезапускаємо сервер:

#service httpd restart

перевіряємо

# HEAD http://10.2.0.102/index.php

200 OK

Connection: close

Date: Sat, 09 Apr 2011 12:15:56 GMT

Server: Apache

Content-Type: text/html; charset=UTF-8

Client-Date: Sat, 09 Apr 2011 12:15:56 GMT

Client-Peer: 10.2.0.102

Client-Response-Num: 1

Все тепер у нас не виводиться версія PHP.

І у браузері зовсім інший вид:

 

Установка Apache2 в CentOS і почткова конфігурація.

Тепер встановлюємо сам Httpd і інші пакети необхідні пакети для роботи вебсервера

# yum install httpd mod_ssl php php-devel php-common php-gd php-mcrypt php-memchache php-mhash php-mysql php-xml mysql mysql-server php-mbstring php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc curl curl-devel perl-libwww-perl ImageMagick libxml2 libxml2-devel

Після завершення інсталяції, переходимо до  конфігурування Apache2.

# cd /etc/httpd/conf/ &&  vi httpd.conf

1) в httpd.conf зняти комент з рядка

NameVirtualHost *:80

2) додати в  секцію, яка відноситься до дефолтного віртуального хоста:

//<VirtualHost *:80>

ServerName default.example.com 
DocumentRoot /var/www/html
ServerAdmin webmaster@default.example.com

//</VirtualHost>

3) додати секцію, яка відноситься до нового віртуального хоста:

//<VirtualHost *:80>

ServerName site1.example.com
DocumentRoot /home/www/site1.example.com/html
ServerAdmin webmaster@site1.example.com
ErrorLog logs/site1_example_com_errorlog
CustomLog logs/site1_example_com_accesslog common

//<Directory «/home/www/site1.example.com/html»>
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all

//</Directory>

//</VirtualHost>

Відповідно потрібно потрібно створити всі директорії, які необхідні для роботи віртуального хоста.

4) Переконатись що параметр  ServerName основного хоста визначений, і йому присвоєно або

default.example.com:80,

або

:80

якщо доменного імені у сайту не було.

Зберігаємо наші зміни і перевіряємо чи все зроблено правильно, командою:

# apachectl -t

Syntax OK

Тепер перезапускаємо його:

#service httpd restart

Вказуємо щоб  Apache2 стартував при завантаженні системи

# chkconfig httpd on