テクノロジー アパッチHTTP 非公開: Apache、Nginx、Cloudflareで.gitをブロックするにはどうすればよいですか?

Apache、Nginx、Cloudflareで.gitをブロックするにはどうすればよいですか?

機密情報が含まれている可能性がある .git フォルダーを公開しないでください。

Git を介してアプリケーションを初期化してデプロイすると、必要な情報を含む .git フォルダーが作成されます。 Web サーバーまたはフロントエンドを介してインターネット経由で .git フォルダーにアクセスできる場合、機密データが漏洩する可能性があります。

さらに悪いことに、認証情報が構成ファイルに保存されている場合は、

これらのツールを使用して、GitHub リポジトリで認証情報を検索します。

Web アプリケーションのどこかに .git があるかどうかわからない場合は、 OpenVAS Gitjacker 、またはここで説明したその他のセキュリティ脆弱性スキャナーを使用できます。

Gitjacker は .git ディレクトリを検出するだけではありません。ディレクトリ全体がダウンロードされます。

これに対処するには複数の方法があります。

サーバー上に .git フォルダーを保持しないことも、リクエストをブロックすることもできます。リクエストのブロックは非常に簡単で、使用する Web サーバーに応じてこれを実現できます。

Apache、Nginx、Cloudflareで.gitをブロックするにはどうすればよいですか?
Apache、Nginx、Cloudflareで.gitをブロックするにはどうすればよいですか?

Nginx

Nginx を使用している場合は、 nginx.conf ファイルに次の location ディレクティブを追加できます。

 location ~ /\.git {
  deny all;
}

上記は、.git を含むリクエストがあるたびに、以下のように 403 をスローするように Nginx に指示します。

攻撃者にサーバー上に .git があると思われたくない場合は、404 を返すこともできます。

 location ~ /\.git {
  return 404;
}

これにより、以下のように HTTP ステータス コード 404 が返されます。

どちらを選択する場合でも、構成を変更した後は Nginx を再起動することを忘れないでください。

 service nginx restart
Apache、Nginx、Cloudflareで.gitをブロックするにはどうすればよいですか?
Apache、Nginx、Cloudflareで.gitをブロックするにはどうすればよいですか?

アパッチHTTP

Apache Webサーバーで .git をブロックする方法を見てみましょう。これを実現するには、 RedirectMatch または DirectoryMatch を使用できます。

RedirectMatch を使用するのがおそらく最も簡単です。 httpd.conf または .htaccess ファイルに次の内容を追加するだけです。

 RedirectMatch 404 /\.git

上記の例では、誰かが .git にアクセスすると 404 がスローされ、次の例では 403 が表示されます。

 RedirectMatch 403 /\.git

次に、 httpd.conf ファイルに次の行を追加して、DirectoryMatch ルールを使用してみます。

 <DirectoryMatch "^/.*/\.git/">
  Deny from all
</Directorymatch>

Apache を再起動し、.git を含む URL にアクセスします。 403 Forbidden エラーが表示されます。

Apache、Nginx、Cloudflareで.gitをブロックするにはどうすればよいですか?
Apache、Nginx、Cloudflareで.gitをブロックするにはどうすればよいですか?

クラウドフレア

これは私のお気に入りです。リクエストは端でブロックしてください!

ただし、ご想像のとおり、これはサイトが Cloudflare ネットワークを通じて高速化されている場合にのみ機能します。

  • Cloudflareにログインする
  • [ファイアウォール]タブに移動 >> ファイアウォール ルール >> ファイアウォール ルールを作成します
  • ルール名を指定します – Block GIT
  • フィールドを選択 – URI
  • 演算子 – を含む
  • 値 – .git
  • アクションを選択 – ブロックして保存

すべてのCloudflareデータセンターにルールが伝播されるまでに約1分かかります。完了したら、残りは Cloudflare が実行します。

注意すべき点は、Cloudflare ファイアウォール ルールを実装してブロックする場合、オリジンが公開されていないことを確認する必要があることです。それ以外の場合、攻撃者は Cloudflare をバイパスして .git ファイルにアクセスする可能性があります。

Apache、Nginx、Cloudflareで.gitをブロックするにはどうすればよいですか?
Apache、Nginx、Cloudflareで.gitをブロックするにはどうすればよいですか?

結論

上記が .git ディレクトリを公開するリスクを軽減するのに役立つことを願っています。

Apache、Nginx、Cloudflareで.gitをブロックするにはどうすればよいですか?
Apache、Nginx、Cloudflareで.gitをブロックするにはどうすればよいですか?

「 Apache、Nginx、Cloudflareで.gitをブロックするにはどうすればよいですか?」についてわかりやすく解説!絶対に観るべきベスト2動画

【Webサーバー】NginxとApacheって何が違うのか解説してみた
Nginx(エンジンエックス)入門 | 人気のWebサーバーを15分で解説!

機密情報が含まれている可能性がある .git フォルダーを公開しないでください。

Git を介してアプリケーションを初期化してデプロイすると、必要な情報を含む .git フォルダーが作成されます。 Web サーバーまたはフロントエンドを介してインターネット経由で .git フォルダーにアクセスできる場合、機密データが漏洩する可能性があります。

さらに悪いことに、認証情報が構成ファイルに保存されている場合は、

これらのツールを使用して、GitHub リポジトリで認証情報を検索します。

Web アプリケーションのどこかに .git があるかどうかわからない場合は、 OpenVAS Gitjacker 、またはここで説明したその他のセキュリティ脆弱性スキャナーを使用できます。

Gitjacker は .git ディレクトリを検出するだけではありません。ディレクトリ全体がダウンロードされます。

これに対処するには複数の方法があります。

サーバー上に .git フォルダーを保持しないことも、リクエストをブロックすることもできます。リクエストのブロックは非常に簡単で、使用する Web サーバーに応じてこれを実現できます。

Apache、Nginx、Cloudflareで.gitをブロックするにはどうすればよいですか?
Apache、Nginx、Cloudflareで.gitをブロックするにはどうすればよいですか?

Nginx

Nginx を使用している場合は、 nginx.conf ファイルに次の location ディレクティブを追加できます。

 location ~ /\.git {
  deny all;
}

上記は、.git を含むリクエストがあるたびに、以下のように 403 をスローするように Nginx に指示します。

攻撃者にサーバー上に .git があると思われたくない場合は、404 を返すこともできます。

 location ~ /\.git {
  return 404;
}

これにより、以下のように HTTP ステータス コード 404 が返されます。

どちらを選択する場合でも、構成を変更した後は Nginx を再起動することを忘れないでください。

 service nginx restart
Apache、Nginx、Cloudflareで.gitをブロックするにはどうすればよいですか?
Apache、Nginx、Cloudflareで.gitをブロックするにはどうすればよいですか?

アパッチHTTP

Apache Webサーバーで .git をブロックする方法を見てみましょう。これを実現するには、 RedirectMatch または DirectoryMatch を使用できます。

RedirectMatch を使用するのがおそらく最も簡単です。 httpd.conf または .htaccess ファイルに次の内容を追加するだけです。

 RedirectMatch 404 /\.git

上記の例では、誰かが .git にアクセスすると 404 がスローされ、次の例では 403 が表示されます。

 RedirectMatch 403 /\.git

次に、 httpd.conf ファイルに次の行を追加して、DirectoryMatch ルールを使用してみます。

 <DirectoryMatch "^/.*/\.git/">
  Deny from all
</Directorymatch>

Apache を再起動し、.git を含む URL にアクセスします。 403 Forbidden エラーが表示されます。

Apache、Nginx、Cloudflareで.gitをブロックするにはどうすればよいですか?
Apache、Nginx、Cloudflareで.gitをブロックするにはどうすればよいですか?

クラウドフレア

これは私のお気に入りです。リクエストは端でブロックしてください!

ただし、ご想像のとおり、これはサイトが Cloudflare ネットワークを通じて高速化されている場合にのみ機能します。

  • Cloudflareにログインする
  • [ファイアウォール]タブに移動 >> ファイアウォール ルール >> ファイアウォール ルールを作成します
  • ルール名を指定します – Block GIT
  • フィールドを選択 – URI
  • 演算子 – を含む
  • 値 – .git
  • アクションを選択 – ブロックして保存

すべてのCloudflareデータセンターにルールが伝播されるまでに約1分かかります。完了したら、残りは Cloudflare が実行します。

注意すべき点は、Cloudflare ファイアウォール ルールを実装してブロックする場合、オリジンが公開されていないことを確認する必要があることです。それ以外の場合、攻撃者は Cloudflare をバイパスして .git ファイルにアクセスする可能性があります。

Apache、Nginx、Cloudflareで.gitをブロックするにはどうすればよいですか?
Apache、Nginx、Cloudflareで.gitをブロックするにはどうすればよいですか?

結論

上記が .git ディレクトリを公開するリスクを軽減するのに役立つことを願っています。

Apache、Nginx、Cloudflareで.gitをブロックするにはどうすればよいですか?
Apache、Nginx、Cloudflareで.gitをブロックするにはどうすればよいですか?

「 Apache、Nginx、Cloudflareで.gitをブロックするにはどうすればよいですか?」についてわかりやすく解説!絶対に観るべきベスト2動画

【Webサーバー】NginxとApacheって何が違うのか解説してみた
Nginx(エンジンエックス)入門 | 人気のWebサーバーを15分で解説!