Denegar el acceso a.carpetas svn en Apache


Tenemos una aplicación rails en subversion que desplegamos con Capistrano pero hemos notado que podemos acceder a los archivos en '/.svn', que presenta un problema de seguridad.

Quería saber cuál es la mejor manera de hacer esto. Algunas ideas:

  • Configuración global de Apache para denegar el acceso
  • Añadiendo .archivos htaccess en la carpeta pública y todas las subcarpetas
  • Cap tarea que cambia los permisos

Realmente no me gusta la idea de eliminar el carpetas o usando svn export, ya que me gustaría mantener el 'svn info' alrededor.

Author: csexton, 2008-12-29

12 answers

La mejor opción es usar la configuración de Apache.

El uso de htaccess o configuración global depende principalmente de si usted controla su servidor.

Si lo haces, puedes usar algo como

<DirectoryMatch .*\.svn/.*>
    Deny From All
</DirectoryMatch>

Si no lo haces, puedes hacer algo similar en .archivos htaccess con FilesMatch

 63
Author: Vinko Vrsalovic,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-12-29 16:36:08

, otra forma de proteger el .los archivos svn serían usar una redirección en la configuración de Apache:

RedirectMatch 404 /\\.svn(/|$)

Así que en lugar de obtener un 403 prohibido (y proporcionar pistas a los atacantes) se obtiene un 404, que es lo que esperaríamos al escribir aleatoriamente en rutas.

 43
Author: csexton,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-12-29 18:14:50

No me gusta la idea de 404ing cada archivo startig con un punto. Usaría un enfoque más selectivo, ya sea con el CV que estoy usando en el proyecto (svn en el ejemplo)

RedirectMatch 404 /\\.svn(/|$)

O una captura todos los sistemas cvs

RedirectMatch 404 /\\.(svn|git|hg|bzr|cvs)(/|$)

Follows respuesta obsoleta sigue (ver comentarios) {

Todavía no puedo escribir comentarios... La respuesta de csexton es incorrecta, porque un usuario no puede acceder al .svn carpeta, pero puede acceder a cualquier archivo dentro de ella ! por ejemplo, usted puede acceso http://myserver.com/.svn/entries

La regla correcta es

RedirectMatch 404 /\\.svn(/.*|$)
 30
Author: Riccardo Galli,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-11-05 12:54:22

Creo que Riccardo Galli acertó. Incluso Apache ya lo había hecho .configuración svn como prohibido para mí, pero .svn / entries estaba ciertamente disponible...exponiendo mi servidor svn, número de puerto, nombres de usuario, etc.

En realidad me imagino, ¿por qué no restringir .git como medida preventiva (digamos que no usas git todavía, pero puede que algún día no pienses en restricciones de directorio).

Y luego pensé, ¿por qué no restringir todo lo que debería estar oculto de todos modos? Puede alguien concebir un problema con esto?

RedirectMatch 404 /\\..*(/.*|$)

He añadido la '.* 'después del período inicial-solo diferencia de Riccardo. Parece 404 .svn, .git, .bla, etc.

 14
Author: triemstr,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-03-13 02:01:27

Preferiría negar el acceso a todos los archivos dot (por ejemplo:.htaccess, .svn, .xxx, etc.), ya que normalmente no necesitan ser accesibles a través de la web.

Aquí está la regla para lograr esto (hasta Apache 2.2 incluido):

<LocationMatch "\/\..*">
    Order allow,deny
    Deny from all
</LocationMatch>

(UPDATE) O puede usar lo siguiente (que funciona en Apache 2.2 y 2.4):

# Deny access to dot-files, as 404 error
# (not giving hint about potential existence to the file)
RedirectMatch 404 ".*\/\..*"
 6
Author: Christophe Deliens,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-04-11 15:28:07

Esto:

RedirectMatch permanent .*\.(svn|git|hg|bzr|cvs)/.* /

También se puede usar si no desea enviar un error al usuario.

Solo está redirigiendo a la página raíz del sitio. Además, este es un redireccionamiento permanente, por lo que los robots no intentarán reindexar esta URL.

 2
Author: Mikaciù,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-04-08 19:55:57

Un RedirectMatch responderá con un 404, lo cual es genial.

Sin embargo, si "Opciones +índices" está habilitado, entonces los usuarios todavía podrán ver el '.directorio svn ' del directorio Padre.

Los usuarios no podrán entrar en el directorio this aquí es donde entra el '404 Not Found'. Sin embargo, serán capaces de ver el directorio y proporcionar pistas a los atacantes.

 1
Author: Stefan Lasiewski,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-02-23 01:21:25

Me parece que Apache conf debería ser:

<Directory ~ "\.svn">
    Order allow,deny
    Deny from all
</Directory>
 1
Author: Xorax,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-05-22 22:30:33

No soy muy aficionado a RedirectMatch, así que usé una RewriteRule en su lugar:

RewriteRule /\..*(/.*|$) - [R=404,L]

El guion significa "no hacer ninguna sustitución". Tampoco pude entender por qué, en los ejemplos anteriores, la expresión regular tenía dos barras invertidas:

/\\..*(/.*|$)

Así que saqué uno y funciona bien. No puedo entender por qué usarías dos allí. ¿Alguien quiere iluminarme?

 1
Author: Spanky,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-05-20 17:28:48

Apache Subversion FAQ está sugiriendo esta solución:

# Disallow browsing of Subversion working copy administrative dirs.
<DirectoryMatch "^/.*/\.svn/">
    Order deny,allow
    Deny from all
</DirectoryMatch>

Fuente: https://subversion.apache.org/faq.html#website-auto-update

 1
Author: M_per,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-04-19 09:47:43

In .htaccess en el archivo de configuración del servidor.

(1)

RewriteEngine on
RewriteRule "^(.*/)?\.git/" - [F,L]

Y (2)

RedirectMatch 404 /\.git

Coloque este método en el archivo .htaccess.

Oculta cualquier archivo o directorio cuyo nombre comience con .me Gusta .directorio git or .gitignore file devolviendo un 404.

 0
Author: Pratik Kamani,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-11-23 04:46:12

Cree un archivo de derechos de acceso en su instalación del servidor subversion.

Por ejemplo, si la estructura de carpetas es

/svn

/svn / rights / svnauth.conf

Cree un archivo de configuración e introduzca la ruta de ese archivo en su archivo de configuración de apache subversion que normalmente encontraría en /etc/httpd/conf.d / subversion.conf

En su svnauth.archivo conf defina los derechos como:

Derechos de acceso para Foo.com

[foo. com: / trunk / source]

Dev1 = rw

Dev2 = rw .....

De esta manera puede controlar los derechos de acceso desde un solo archivo y a un nivel muy granular.

Para obtener más información, consulte el svn red book.

 -7
Author: user49550,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-12-29 17:07:44