Wo finde ich die Configtest-Deklaration von Apache?

Wo finde ich die Configtest-Deklaration von Apache?

Ich möchte die Sicherheit meines Apache-Webservers verbessern.

  1. Offen:

    /etc/apache2/conf.d/sicherheit
  2. Bearbeiten:

    ServerTokens Prod
    ServerSignature Aus
  3. 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 invlistwodurch 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 ifdefines 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 -DDONTRUNMYBADCONFIGsie in der Apache-Befehlszeile stehen.

Sie können es bei Bedarf -DDONTRUNMYBADCONFIGdem Skript im Abschnitt „confgitest“ hinzufügen , sodass Sie es weiterhin wie gewohnt ausführen können./etc/init.d/apache2service httpd configtest

verwandte Informationen