No exponga la carpeta .git, que puede contener información sensible.

Cuando inicializa y despliega su aplicación a través de Git, se crea una carpeta . git que contiene información necesaria. Si la carpeta . git es accesible a través de un servidor web o frontend a través de Internet, puede potencialmente filtrar datos sensibles.

Peor aún, si tiene credenciales almacenadas en algún archivo de configuración.

Utilice estas herramientas para encontrar las credenciales en el repositorio de GitHub.

Si no está seguro de tener .git en algún lugar de sus aplicaciones web, puede utilizar un escáner de vulnerabilidades de seguridad como OpenVAS, Gitjacker u otros mencionados aquí.

Gitjacker es más que detectar el directorio .git. Descarga el directorio completo.

Hay múltiples maneras de manejar esto.

Puede optar por no mantener la carpeta .git en el servidor o bloquear cualquier petición. Bloquear la petición es bastante sencillo, y así puede conseguirlo dependiendo del servidor web que utilice.

Nginx

Si utiliza Nginx, puede añadir la siguiente directiva de ubicación en el archivo nginx.conf

location ~ /\.git {
  deny all;
}

Lo anterior instruiría a Nginx para lanzar 403 como a continuación cada vez que haya una solicitud que contenga .git

Alternativamente, puede devolver 404 si no quiere que un atacante asuma que tiene .git en el servidor.

location ~ /\.git {
  devolver 404;
}

Y esto devolvería el código de estado HTTP como 404 como se muestra a continuación.

Elija lo que elija, no olvide reiniciar el Nginx después de realizar el cambio de configuración.

service nginx restart

Apache HTTP

Veamos cómo bloquear .git en el servidor web Apache. Puede utilizar RedirectMatch o DirectoryMatch para conseguirlo.

Utilizar RedirectMatch es probablemente lo más fácil. Sólo tiene que añadir lo siguiente en httpd.conf o en el archivo .htaccess.

RedirectMatch 404 /\.git

Lo anterior arrojaría 404 cuando alguien accede a .git, y lo siguiente mostrará 403.

RedirectMatch 403 /\.git

A continuación, intentemos utilizar la regla DirectoryMatch añadiendo lo siguiente en el archivo httpd.conf.

<DirectoryMatch "^/.*/\.git/">
  Denegar desde todos
</Directorymatch>

Reinicie el Apache y acceda a la URL, incluyendo .git; mostrará el error 403 Forbidden.

Cloudflare

Este es mi favorito. ¡Bloquea la petición en el borde!

Pero, como puede adivinar, esto sólo funcionará si su sitio está acelerado a través de la red Cloudflare.

  • Inicie sesión en Cloudflare
  • Vaya a la pestaña Cortafuegos >> Reglas del cortafuegos >> Crear una regla del cortafuegos

  • Dé un nombre a la regla – Bloquear GIT
  • Seleccione el campo – URI
  • Operador – contiene
  • Valor – .git
  • Elija una acción – Bloquear y guardar

Tardará alrededor de 1 minuto en propagar la regla por todos los centros de datos de Cloudflare. Una vez hecho esto, Cloudflare hará el resto.

Una cosa a tener en cuenta, cuando implemente la regla del cortafuegos de Cloudflare para bloquear, tiene que asegurarse de que el origen no está expuesto. De lo contrario, un atacante puede eludir Cloud flare para acceder a los archivos .git.

Conclusión

Espero que lo anterior le ayude a mitigar el riesgo de exponer el directorio .git.