Apacheサーバーを保護するためのベストプラクティス、推奨事項、必要な資料は何ですか?
Center for Internet Security(CIS)ガイドを入手して、Apacheを保護します(セキュリティを強化する方法を詳しく説明しています)。
編集:リンクを更新 CIS Apache HTTP Server 2.2.x Benchmark
Nessus のライセンスをお持ちの場合は、監査テンプレートを取得して自動チェックを実行できます。
これは良いガイドです:
https://serverfault.com/questions/212269/tips-for-securing-a-lamp-server
強化の基本ガイド: http://www.wpsecure.net/server-guide/
Phpを実行している場合: http://www.madirish.net/?article=229
Apacheログで404(またはその他のステータスコード)を見つけるawk '$9 == 404 {print $7}' access_log | uniq -c | sort -rn | head
Apache構成をセキュリティで保護するための20の方法 の直接の盗用だったため、当初受け入れられたこの質問に対する最初の高い投票の回答は削除されました。そのページは素晴らしいリソースです。
@RoryMcCuneもその回答へのリンクとしてこれを投稿しました:役立つ可能性のある ModSecurityコアルールセット を開発するOWASPプロジェクトがあります。
ここには良いアドバイスがたくさんあるので、すでに述べたことは繰り返さない。しかし、私が言うことは:
デフォルトのエラーページを、Webサーバーのリリースやカーネルリビジョンを提供しないものに置き換えることを忘れないでください。私は各デフォルトのhtmlを「エラー400」のような1つのライナーで置き換える傾向があります。それは離れてシステムについてほとんど何も与えません。このプリンシパルは、カスタムエラーページを表示できるすべてのWebサーバーに適用されます。これらはすべて、デフォルトでは必要以上の情報を提供します。 ServerSignatureはこれを隠すと思いますが、多くの場合は隠しません。
また、すべてのデフォルトのHTMLコンテンツ(言語固有など)を削除することを忘れないでください。そのため、フィンガープリント作成ははるかに困難です。
良い読み物に関する限り、ホワイトペーパー Apcon 2008から は読む価値があります。
Mod_Security が何度か言及されていますが、これはWebアプリケーションにより適しているため、静的コンテンツのみを提供している場合、too多くの攻撃がありますが、静的Webサーバーに影響を与える可能性のあるリクエスト処理中の防御に役立ちます。
私が言及するもう1つのことは、ログを適切に管理しておらず、システムを注意深く監視していない場合、攻撃者がそれに気付かずに強打する危険を冒すことです。
すべての一般的なセキュリティ原則が適用されます。必要なモジュールのみを実行し、不要な機能をオフにし、権限/所有権を整理します(ほとんどのコンテンツは読み取り専用です。ファイルに400パーミッション以上のものが必要なのはなぜですか?)。
CGIジョブや、2つの異なるセキュリティメカニズムを使用して同じコンテンツを2回提供する異なるvhostなど、Apacheに固有のものは、見つけるのがはるかに困難です。正確に自動化されたチェックではなく、Apache、基盤となるOS、およびApacheで実行されているアプリケーションが実行していることを実際に理解する必要があります。
完全を期すために、ここに Apache 2.2セキュリティチェックリスト をDISAから提供しています。更新:Webサーバー強化ドキュメントの 全体のコレクション へのリンクです。
Apache mod_security を見てみる価値があるかもしれません。
最近、一部のサーバーでそれを実行しています。バージョン番号の変更など、Apache自体にいくつかの構成の微調整を実行するだけでなく、SQLなどのさまざまな攻撃から保護するのに役立つWebアプリケーションファイアウォールとしても機能します注射など.
Apache Webサーバーを保護する方法
「ジャンボジェットを飛ばすにはどうすればよいですか」または「脳手術を行うにはどうすればよいですか」と尋ねた場合、どのような答えを期待できますか。Webサーバーを安全にする場合も同じです。何千時間ものトレーニング、練習、研究を行う必要があります。 。しかし、誰もがどこかから始めなければならないので...
サーバーを強化する方法についてのインターネット上の基本的なチェックリストはたくさんありますが、私のコメントによると、他の場所では、品質が大きく異なります。
良い情報源として sans one をお勧めします。
チェックリストをたどると、次のことができる手段を確立する必要があります
セキュリティインシデントが発生した場合の対処方法については計画しないでください。それが起こったときいつ何をすべきかを計画します。
システムをセットアップして構成したら、ハードディスクを交換し、元のディスクを使用せずにサービスを再開して実行するのにかかる時間を確認します。
これはApache関連だけでなく(nginx + php-fpmも含まれます)、しばしば忘れられます:php-eastereggs、php.ini経由で切り替えられる可能性があります
expose_php = off
phpinfo.phpを残しておくほどひどいことではありませんが、通常、非常に遅延したシステム管理へのヒントになります。
easter-eggs を参照
良い糸になった。多くの人が真実を言います。
彼らは1つ忘れました OpenBSD の方法:
OpenBSDでは、Apache httpd(8)サーバーはデフォルトでchroot(2)されています
httpd(Apacheのv.1)はデフォルトでOpenBSDに含まれており、デフォルトでchrootされています。
他のUnixライクなOSのApache2またはnginxを使用すると、簡単に繰り返すことができます。
Apacheの最新バージョンを使用し、OSにパッチを適用し、opensslやその他のサードパーティにもパッチを適用します。
不要なポートをブロックします。
これにより、いくつかの既知の脆弱性から保護されますが、もちろん、常にゼロデイの影響を受けやすくなります。
ここで6つの主要なステップ:
modsecurity
を使用して、アプリケーションレベルの攻撃からアプリケーションを保護します。ネットワークファイアウォールに依存しないでください。Webセキュリティについて話すときは役に立ちません。