Odmowa dostępu do.foldery svn na Apache

Mamy aplikację rails w subversion, którą wdrażamy z Capistrano, ale zauważyliśmy, że możemy uzyskać dostęp do plików w'/.svn", co stanowi zagrożenie dla bezpieczeństwa.

Chciałem wiedzieć, jak najlepiej to zrobić. Kilka pomysłów:

  • globalna konfiguracja Apache do odmowy dostępu
  • Dodawanie .pliki htaccess w folderze publicznym i wszystkich podfolderach
  • Cap zadanie, które zmienia uprawnienia

Nie podoba mi się pomysł usunięcia foldery lub używając svn export, ponieważ chciałbym zachować 'svn info' wokół.

Author: csexton, 2008-12-29

12 answers

Najlepszą opcją jest użycie konfiguracji Apache.

Korzystanie z htaccess lub Konfiguracja globalna zależy głównie od tego, czy kontrolujesz swój serwer.

Jeśli to zrobisz, możesz użyć czegoś w rodzaju

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

Jeśli nie, możesz zrobić coś podobnego w .pliki htaccess z 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/doraprojects.net/template/agent.layouts/content.php on line 54
2008-12-29 16:36:08

Inny sposób ochrony .pliki svn będą używać przekierowania w Apache config:

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

Więc zamiast 403 zakazanego (i podawania wskazówek do atakujących) dostajesz 404, czego byśmy się spodziewali, gdy losowo wpisujemy ścieżki.

 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/doraprojects.net/template/agent.layouts/content.php on line 54
2008-12-29 18:14:50

Nie podoba mi się pomysł 404, aby każdy plik zaczynał się kropką. Użyłbym bardziej selektywnego podejścia, albo z cvs używam w projekcie (svn w przykładzie)

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

Or a catch all CVs systems

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

-- nieaktualna odpowiedź następuje (patrz komentarze) --

Nie mogę jeszcze pisać komentarzy... Odpowiedź csexton jest błędna, ponieważ użytkownik nie może uzyskać dostępu do .folder svn, ale może uzyskać dostęp do wszystkich plików wewnątrz niego ! np. można dostęp http://myserver.com/.svn/entries

Poprawna reguła to

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/doraprojects.net/template/agent.layouts/content.php on line 54
2011-11-05 12:54:22

Myślę, że Riccardo Galli dobrze to zrozumiał. Nawet Apacz już miał .konfiguracja svn jako zabroniona dla mnie, ale .svn / entries był na pewno dostępny...wyświetlanie mojego serwera svn, numeru portu, nazw użytkowników itp.

Myślę, dlaczego nie ograniczyć .git jako środek zapobiegawczy (powiedzmy, że jeszcze nie używasz git, ale może kiedyś w tym czasie nie będziesz myślał o ograniczeniach katalogów).

I wtedy pomyślałem, dlaczego nie ograniczyć wszystko, co powinno być ukryte? Czy ktoś może począć masz z tym problem?

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

Dodałem '.* "po okresie początkowym-tylko różnica w stosunku do Riccardo. Wygląda na 404 .svn,git,bla, itp.

 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/doraprojects.net/template/agent.layouts/content.php on line 54
2011-03-13 02:01:27

Wolałbym odmówić dostępu do wszystkich plików dot (np: .htaccess,svn,xxx itp.), ponieważ zwykle nie muszą być dostępne w Internecie.

Oto zasada, aby to osiągnąć (dopóki Apache 2.2 nie zostanie dołączony):

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

(UPDATE) lub możesz użyć następującej (która działa w Apache 2.2 i 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/doraprojects.net/template/agent.layouts/content.php on line 54
2016-04-11 15:28:07

To:

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

Może być również używany, jeśli nie chcesz wysyłać błędu z powrotem do użytkownika.

To tylko przekierowanie z powrotem na stronę rootpage. Jest to również stałe przekierowanie, więc roboty nie będą próbowały reindeksować tego adresu 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/doraprojects.net/template/agent.layouts/content.php on line 54
2013-04-08 19:55:57

RedirectMatch odpowie 404, co jest świetne.

Jeśli jednak opcja" Options +Indexes " jest włączona, użytkownicy nadal będą mogli zobaczyć '.SVN ' katalog z katalogu nadrzędnego.

Użytkownicy nie będą mogli wejść do katalogu - tutaj pojawia się "404 Not Found". Jednak będą mogli zobaczyć katalog i dostarczyć wskazówek, aby być napastników.

 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/doraprojects.net/template/agent.layouts/content.php on line 54
2010-02-23 01:21:25

Wydaje mi się, że Apache conf powinien być :

<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/doraprojects.net/template/agent.layouts/content.php on line 54
2011-05-22 22:30:33

Nie przepadam za RedirectMatch, więc zamiast tego użyłem RewriteRule:

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

Myślnik oznacza "nie zastępuj". Nie mogłem również zrozumieć, dlaczego w powyższych przykładach regex miał dwa ukośniki:

/\\..*(/.*|$)
Więc wyjąłem jedną i działa dobrze. Nie wiem, dlaczego użyłeś dwóch. Ktoś mnie oświeci?
 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/doraprojects.net/template/agent.layouts/content.php on line 54
2015-05-20 17:28:48

Apache Subversion FAQ jest sugesting tego rozwiązania:

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

Źródło: 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/doraprojects.net/template/agent.layouts/content.php on line 54
2016-04-19 09:47:43

W .htaccess w pliku konfiguracyjnym serwera.

(1)

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

Oraz (2)

RedirectMatch 404 /\.git

Umieść obie metody w pliku .htaccess.

Ukrywa każdy plik lub katalog, którego nazwa zaczyna się od .git Like .katalog git lub .plik gitignore, zwracając 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/doraprojects.net/template/agent.layouts/content.php on line 54
2017-11-23 04:46:12

Utwórz plik praw dostępu w instalacji serwera subversion.

Np. jeśli struktura folderów jest

/svn

/svn / rights / svnauth.conf

Utwórz plik konfiguracyjny i wprowadź ścieżkę tego pliku w pliku konfiguracyjnym Apache subversion, który normalnie znajdziesz w /etc/httpd / conf.d / subversion.conf

W Twoim svnauth.plik conf definiuje prawa jako:

Prawa dostępu do Foo.com

[foo. com:/trunk / source]

Dev1=rw

Dev2=RW .....

W ten sposób możesz kontrolować prawa dostępu z jednego pliku i na bardzo szczegółowym poziomie.

Więcej informacji można znaleźć w Czerwonej Księdze svn.

 -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/doraprojects.net/template/agent.layouts/content.php on line 54
2008-12-29 17:07:44