Где найти декларацию Apache configtest?

Где найти декларацию Apache configtest?

Я хочу повысить безопасность моего веб-сервера Apache.

  1. Открыть:

    /etc/apache2/conf.d/security
  2. Редактировать:

    ServerTokens Prod
    Подпись сервера выключена
  3. Перезагрузить/Перезапустить:

    /etc/init.d/apache2 перезагрузка
    /etc/init.d/apache2 перезапустить

Значения Prod и Off должны быть в порядке, но я получаю следующие ошибки:

ServerTokens принимает один аргумент, определяет токены, отображаемые в заголовке Server: - Min(imal), OS или Full
Действие «configtest» не выполнено.
ServerSignature принимает один аргумент, включение/выключение подписи сервера (вкл.|выкл.|email)
Действие «configtest» не выполнено.

Где мне найти декларацию Apache configtest, чтобы указать ему принимать Prod и Off?

Решение проблемы:

В моем конфигурационном файле были встроенные комментарии, которые не допускаются.

Поэтому НЕ делайте этого:

ServerTokens Prod # Добавлено 20.10.2012

Вместо этого сделайте это следующим образом:

# Добавлено 20.10.2012:
ServerTokens Prod

Однако сообщения об ошибках сбили меня с толку, так как в них было всего три параметра (Min, OS и Full) и все они были написаны строчными буквами (on|off|email), тогда как в файле конфигурации было больше параметров и ucfirst.

решение1

Похоже, вы используете Debian/Ubuntu или подобную систему. Вы можете запустить configtest с помощью

apache2ctl configtest

Вы не можете изменить его декларацию, чтобы он принимал Prod (он уже это делает), и вам это не нужно.

Сообщение об ошибке довольно понятное. ServerTokens takes one argument ... Я могу получить это сообщение об ошибке только в том случае, если укажу директиву ServerTokens с более чем одним параметром, поэтому

 ServerTokens Prod 1

терпит неудачу тем же способом, который вы наблюдаете. Вам нужно выяснить, почему ваши директивы ServerTokens и ServerSignature имеют более одного параметра. Первое, что я бы попробовал, это загрузить файлы в vim и использовать, :set invlistкоторый покажет все скрытые символы в вашем файле.

решение2

Не уверен, что вы имеете в виду. apache2 configtest(на RedHat Box) запускает apachectl. Если вы посмотрите на apachectl, который является скриптом, предоставляемым Apache, он по сути запускает httpd -t.

Таким образом, httpd сам по себе тестирует конфигурацию, когда вы запускаете configtest.

Одним из способов решения этой проблемы было бы помещение отрицательных ifdefines вокруг проблемных строф конфигурации.

например: в вашем конфигурационном файле:

<ifdefine ! DONTRUNMYBADCONFIG >
ServerTokens Prod
ServerSignature Off
</ifdefine>

Тогда беги

httpd -t -DDONTRUNMYBADCONFIG

Для проверки вашей конфигурации. Я думаю, что все остальное будет протестировано нормально, но эти две директивы будут игнорироваться, пока -DDONTRUNMYBADCONFIGнаходятся в командной строке Apache.

При желании вы можете добавить его -DDONTRUNMYBADCONFIGв раздел «confgitest» скрипта, чтобы его можно было запустить в обычном режиме./etc/init.d/apache2service httpd configtest

Связанный контент