
Ich möchte die Sicherheit meines Apache-Webservers verbessern.
Offen:
/etc/apache2/conf.d/sicherheit
Bearbeiten:
ServerTokens Prod ServerSignature Aus
Neu laden/Neustart:
/etc/init.d/apache2 neu laden /etc/init.d/apache2 Neustart
Die Werte „Prod“ und „Off“ sollten in Ordnung sein, aber ich erhalte diese Fehlermeldungen:
ServerTokens nimmt ein Argument an, Bestimmen Sie die im Server angezeigten Token: Header - Min(imal), OS oder Full Aktion „configtest“ fehlgeschlagen.
ServerSignature benötigt ein Argument, Serversignatur aktivieren/deaktivieren (an|aus|E-Mail) Aktion „configtest“ fehlgeschlagen.
Wo finde ich die Configtest-Deklaration von Apache, damit ich ihm sagen kann, dass es Prod und Off akzeptieren soll?
Problemlösung:
Ich hatte Inline-Kommentare in meiner Konfigurationsdatei, die nicht zulässig sind.
Tun Sie dies also NICHT:
ServerTokens Prod # Hinzugefügt am 20.10.2012
Gehen Sie stattdessen folgendermaßen vor:
# Dies wurde am 20.10.2012 hinzugefügt: ServerTokens Prod
Die Fehlermeldungen haben mich jedoch verwirrt, da sie nur drei Optionen (Min, OS und Full) hatten und alle in Kleinbuchstaben (on|off|email) geschrieben waren, während in der Konfigurationsdatei mehr Optionen und ucfirst standen.
Antwort1
Dies sieht so aus, als ob Sie ein Debian/Ubuntu oder ähnliches System verwenden. Sie können einen Konfigurationstest mit
apache2ctl configtest
Sie können die Deklaration nicht ändern, um Prod zu akzeptieren (das tut sie bereits) und das sollte auch nicht nötig sein.
Die Fehlermeldung ist ziemlich klar. ServerTokens takes one argument ...
Ich kann diese Fehlermeldung nur erhalten, wenn ich die ServerTokens-Direktive mit mehr als einem Parameter übergebe.
ServerTokens Prod 1
schlägt auf die gleiche Weise fehl, wie Sie es beobachten. Sie müssen herausfinden, warum Ihre ServerTokens- und ServerSignature-Anweisungen mehr als einen Parameter haben. Als Erstes würde ich versuchen, die Dateien in vim zu laden und zu verwenden, :set invlist
wodurch alle versteckten Zeichen in Ihrer Datei angezeigt werden.
Antwort2
Ich bin mir nicht sicher, was Sie meinen.
apache2 configtest
(Auf einer Redhat-Box) läuft apachectl. Wenn Sie sich apachectl ansehen, ein von Apache bereitgestelltes Skript, führt es im Grunde httpd -t aus.
Wenn Sie einen Konfigurationstest ausführen, testet also httpd selbst die Konfiguration.
Eine Möglichkeit, dies zu umgehen, wäre, einige negierte ifdefine
s um die öffnenden Konfigurationszeilen zu setzen.
zB: In Ihrer Konfigurationsdatei:
<ifdefine ! DONTRUNMYBADCONFIG >
ServerTokens Prod
ServerSignature Off
</ifdefine>
Dann renne
httpd -t -DDONTRUNMYBADCONFIG
Um Ihre Konfiguration zu testen. Ich glaube, alles andere wird normal getestet, aber diese beiden Anweisungen werden ignoriert, solange -DDONTRUNMYBADCONFIG
sie in der Apache-Befehlszeile stehen.
Sie können es bei Bedarf -DDONTRUNMYBADCONFIG
dem Skript im Abschnitt „confgitest“ hinzufügen , sodass Sie es weiterhin wie gewohnt ausführen können./etc/init.d/apache2
service httpd configtest