
Я хочу повысить безопасность моего веб-сервера Apache.
Открыть:
/etc/apache2/conf.d/security
Редактировать:
ServerTokens Prod Подпись сервера выключена
Перезагрузить/Перезапустить:
/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.
Одним из способов решения этой проблемы было бы помещение отрицательных ifdefine
s вокруг проблемных строф конфигурации.
например: в вашем конфигурационном файле:
<ifdefine ! DONTRUNMYBADCONFIG >
ServerTokens Prod
ServerSignature Off
</ifdefine>
Тогда беги
httpd -t -DDONTRUNMYBADCONFIG
Для проверки вашей конфигурации. Я думаю, что все остальное будет протестировано нормально, но эти две директивы будут игнорироваться, пока -DDONTRUNMYBADCONFIG
находятся в командной строке Apache.
При желании вы можете добавить его -DDONTRUNMYBADCONFIG
в раздел «confgitest» скрипта, чтобы его можно было запустить в обычном режиме./etc/init.d/apache2
service httpd configtest