У меня есть приложение Rails, обслуживаемое с использованием Apache 2 и Phusion Passenger. В качестве меры безопасности я пытаюсь подавить все заголовки HTTP, связанные с сервером. Я успешно отключил Apache, но у меня проблемы с использованием mod_headers
подавить Пассажирские. Я включил mod_headers
используя a2enmod
команда и перезапустила процесс Apache, но X-Powered-By
и X-Runtime
заголовки все еще появляются.
Это мой файл vhost:
<VirtualHost *:80>
ServerAdmin webmaster@example.com
ServerName example.com
ServerAlias www.example.com
DocumentRoot /home/deploy/public_html/railsapp/current/public
LogLevel warn
ErrorLog /home/deploy/public_html/railsapp/shared/log/error.log
CustomLog /home/deploy/public_html/railsapp/shared/log/access.log combined
# Suppress Phusion Passenger HTTP headers
<Location *>
<IfModule mod_headers.c>
Header unset X-Runtime
Header unset X-Powered-By
</IfModule>
</Location>
</VirtualHost>
Директивы, предоставляемые mod_headers, могут встречаться практически в любом месте конфигурации сервера. Они действительны в разделах конфигурации основного сервера и виртуального хоста, внутри разделов и, а также в файлах .htaccess.
Если вы хотите, чтобы это применялось ко всему vhost, зачем вставлять его внутрь <Location>
теги? Просто поместите директивы в основной конфиг vhost.
<VirtualHost *:80>
ServerAdmin webmaster@example.com
ServerName example.com
ServerAlias www.example.com
DocumentRoot /home/deploy/public_html/railsapp/current/public
LogLevel warn
ErrorLog /home/deploy/public_html/railsapp/shared/log/error.log
CustomLog /home/deploy/public_html/railsapp/shared/log/access.log combined
<IfModule mod_headers.c>
Header unset X-Runtime
Header unset X-Powered-By
</IfModule>
</VirtualHost>
Я не тестировал это, поэтому заранее извиняюсь, если это неправильно.
У меня нет под рукой установки Apache, но <Location *>
выглядит подозрительно. В документы сказать:
URL-адрес может использовать подстановочные знаки. В строке с подстановочными знаками? соответствует любому одиночному символу, а * соответствует любой последовательности символов. Ни один из подстановочных знаков не соответствует / в URL-пути.
Я подозреваю, что вы не соответствуете ни одному URL. Пытаться:
<Location />
<IfModule mod_headers.c>
Header unset X-Runtime
Header unset X-Powered-By
</IfModule>
</Location>
Не говоря уже о том, что по-прежнему очень легко определить сервер, по крайней мере, для версий Corse, даже без заголовков, а "скриптовые детишки" просто пробуют все атаки и не утруждают себя проверкой версий тем не мение.
Что будет, если убрать строчку, просто оставьте команды.
Интересно, загружается ли он вообще, попробуйте добавить статический заголовок для проверки.