Скрывать версию используемого программного обеспечения на сервере — хорошая практика, позволяющая запутать потенциальных взломщиков. Ведь зная версию, например, web-сервера, можно попытаться воспользоваться актуальной для этой версии уязвимостью.
А если хакер не знает, какая версия ПО используется на сервере, подбор уязвимости становится чуточку сложнее. На этой странице представлены параметры некоторых приложений, позволяющие скрыть версию и даже факт использования самого сервиса.
Содержание статьи:
- 1 NGINX
- 2 Apache
- 3 Postfix
- 4 PHP
- 5 MySQL
- 6 Lighttpd
- 7 Примечания
NGINX
Чтобы скрыть версию используемого сервера nginx, нужно добавить в конфигурационный файл /etc/nginx/nginx.conf строку:
server_tokens off;
Также можно изменить заголовок, посылаемый сервером.
Apache
Для скрытия версии Apache открываем файл /etc/apache2/conf.d/security.conf и прописываем там параметр:
ServerTokens Prod
Postfix
По-умолчанию, postfix не отображает свою версию в ответах при подключении. Но отображает, что используется именно он и установленную ОС на сервере (Debian, в нашем случае :). Это можно скрыть.
Открываем файл /etc/postfix/main.cf, из параметра smtpd_banner удаляем (Debian/GNU).
smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
Затем прописываем параметр:
mail_name = MailServer
После перезапуска Postfix при подключении к серверу клиенты будут видеть что-то вроде этого.
root@localhost:~# telnet localhost 25 Trying ::1... Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. 220 example.com ESMTP MailServer
А в письмах будет отображаться такой заголовок:
Received: by example.com (MailServer, from userid 1001)
PHP
Веб-сервер может в заголовках передавать используемую версию php.
X-Powered-By: PHP/5.6.19-0+deb8u1
За её скрытие отвечает параметр:
expose_php = Off
Установить его можно несколькими путями:
- Отредактировать файл /etc/php5/*/php.ini
- В файле пула php-fpm:
php_admin_value[expose_php] = "Off"
- В конфигурационном файле виртуального хоста apache:
php_admin_value expose_php Off
MySQL
Вообще, касательно MySQL нет смысла скрывать версию. Но следует ограничить доступ к нему извне, если вам не нужны внешние подключения (для которых следует разрешить доступ только с конкретных IP). Поэтому в конфигурационном файле /etc/mysql/my.cnf изменяем параметр:
bind-address = 127.0.0.1
Lighttpd
Здесь тоже ничего сложного нет. За скрытие версии (и факта использования) отвечает параметр server.tag. Можно указать вообще что-то другое:
server.tag = "FrontPage"
Примечания
Следует помнить, что после изменений конфигурационных файлов каждый сервис следует перезапускать. ;)
А также придерживаться правила «Не болтай».