
Apache Web サーバーのセキュリティを強化したいと考えています。
開ける:
セキュリティ
編集:
ServerTokens 製品版 サーバー署名オフ
再読み込み/再起動:
/etc/init.d/apache2 をリロード /etc/init.d/apache2 を再起動
Prod と Off の値は問題ないはずですが、次のエラーが発生します。
ServerTokens は 1 つの引数を取り、Server: ヘッダーに表示されるトークン (最小、OS、または完全) を決定します。 アクション「configtest」が失敗しました。
ServerSignature は、サーバー署名の有効化/無効化 (on|off|email) という 1 つの引数を取ります。 アクション「configtest」が失敗しました。
Prod と Off を受け入れるように指示するには、Apache の configtest 宣言はどこにありますか?
問題解決:
設定ファイル内にインラインコメントがありましたが、これは許可されていません。
したがって、次のことを行わないでください。
ServerTokens Prod # 2012年10月20日に追加
代わりに、次のようにします。
# 2012 年 10 月 20 日に追加されました: ServerTokens 製品版
しかし、エラー メッセージにはオプションが 3 つ (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
ファイル内の隠し文字を表示する which を使用することです。
答え2
何を意味しているか分かりません。
apache2 configtest
(RedHat ボックスでは) apachectl を実行します。Apache が提供するスクリプトである apachectl を見ると、基本的に httpd -t が実行されています。
したがって、configtest を実行すると、httpd 自体が構成をテストすることになります。
ifdefine
これを回避する方法の1つは、問題のある設定スタンザの周りに否定のsをいくつか入れることです。
例: 設定ファイル内:
<ifdefine ! DONTRUNMYBADCONFIG >
ServerTokens Prod
ServerSignature Off
</ifdefine>
そして実行する
httpd -t -DDONTRUNMYBADCONFIG
-DDONTRUNMYBADCONFIG
設定をテストします。他のすべては正常にテストされると思いますが、これら 2 つのディレクティブはApache のコマンド ラインにある限り無視されます。
必要に応じて、「confgitest」セクションのスクリプト-DDONTRUNMYBADCONFIG
に追加して、通常どおり実行することもできます。/etc/init.d/apache2
service httpd configtest