Как скрыть версию серверных приложений

Скрывать версию используемого программного обеспечения на сервере — хорошая практика, позволяющая запутать потенциальных взломщиков. Ведь зная версию, например, 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

Установить его можно несколькими путями:

  1. Отредактировать файл /etc/php5/*/php.ini
  2. В файле пула php-fpm: php_admin_value[expose_php] = "Off"
  3. В конфигурационном файле виртуального хоста 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"

Примечания

Следует помнить, что после изменений конфигурационных файлов каждый сервис следует перезапускать. ;)

А также придерживаться правила «Не болтай».