Apache에서 .svn 폴더에 대한 액세스 거부
Capistrano와 함께 배포하는 Subversion의 rails 응용 프로그램이 있지만 '/.svn'에있는 파일에 액세스 할 수 있다는 것을 알게되었습니다. 이는 보안 문제를 나타냅니다.
이 작업을 수행하는 가장 좋은 방법이 무엇인지 알고 싶었습니다. 몇 가지 아이디어 :
- 액세스를 거부하는 전역 Apache 구성
- 공용 폴더 및 모든 하위 폴더에 .htaccess 파일 추가
- 권한을 변경하는 작업 제한
나는 'svn info'를 유지하고 싶기 때문에 폴더를 삭제하거나 svn export를 사용하는 아이디어를 좋아하지 않습니다.
가장 좋은 방법은 Apache 구성을 사용하는 것입니다.
htaccess 또는 전역 구성 사용은 주로 서버를 제어하는지 여부에 따라 다릅니다.
그렇다면 다음과 같은 것을 사용할 수 있습니다.
<DirectoryMatch. * \. svn /.*> 모두 거부 </ DirectoryMatch>
그렇지 않은 경우 FilesMatch를 사용하여 .htaccess 파일에서 비슷한 작업을 수행 할 수 있습니다.
.svn 파일을 보호하는 또 다른 방법은 Apache 구성에서 리디렉션을 사용하는 것입니다.
RedirectMatch 404 /\\.svn(/|$)
따라서 403을 금지하는 대신 (그리고 공격자가 될 단서를 제공하는 대신) 경로를 임의로 입력 할 때 예상되는 404를 얻게됩니다.
나는 각 파일을 점으로 시작하는 404ing 아이디어가 마음에 들지 않습니다. 프로젝트에서 사용중인 cvs (예제에서는 svn)를 사용하여보다 선택적 접근 방식을 사용합니다.
RedirectMatch 404 /\\.svn(/|$)
또는 모든 cvs 시스템 잡기
RedirectMatch 404 /\\.(svn|git|hg|bzr|cvs)(/|$)
-오래된 답변이 이어집니다 (댓글 참조)-
아직 주석을 쓸 수 없습니다 ... 사용자가 .svn 폴더에 액세스 할 수 없지만 그 안의 모든 파일에 액세스 할 수 있기 때문에 csexton의 대답은 올바르지 않습니다! 예를 들어 http://myserver.com/.svn/entries에 액세스 할 수 있습니다 .
올바른 규칙은
RedirectMatch 404 /\\.svn(/.*|$)
리카르도 갈리가 옳았다 고 생각합니다. 아파치조차도 이미 .svn 설정이 금지되어 있지만 .svn / entries는 확실히 사용 가능했습니다 ... 내 svn 서버, 포트 번호, 사용자 이름 등을 노출했습니다.
나는 실제로 .git을 예방 조치로 제한하지 않는 이유를 파악했습니다 (아직 git을 사용하지 않지만 언젠가는 디렉토리 제한에 대해 생각하지 않을 수도 있습니다).
그리고 나는 왜 어쨌든 숨겨야 할 모든 것을 제한하지 않을까 생각했습니다. 누구든지 이것에 대한 문제를 생각할 수 있습니까?
RedirectMatch 404 /\\..*(/.*|$)
초기 기간 이후에 '. *'를 추가했습니다. Riccardo와 다른 점만 있습니다. 404 .svn, .git, .blah 등으로 보입니다.
일반적으로 웹에 액세스 할 필요가 없기 때문에 모든 도트 파일 (예 : .htaccess, .svn, .xxx 등)에 대한 액세스를 거부합니다.
이를 달성하기위한 규칙은 다음과 같습니다 (Apache 2.2가 포함될 때까지).
<LocationMatch "\/\..*">
Order allow,deny
Deny from all
</LocationMatch>
(업데이트) 또는 다음을 사용할 수 있습니다 (Apache 2.2 및 2.4에서 작동).
# Deny access to dot-files, as 404 error
# (not giving hint about potential existence to the file)
RedirectMatch 404 ".*\/\..*"
이:
RedirectMatch permanent .*\.(svn|git|hg|bzr|cvs)/.* /
사용자에게 오류를 다시 보내지 않으려는 경우에도 사용할 수 있습니다.
사이트 루트 페이지로만 리디렉션됩니다. 또한 이것은 영구적 인 리디렉션이므로 로봇은이 URL의 색인을 다시 생성하지 않습니다.
RedirectMatch는 404로 응답합니다.
그러나 "Options + Indexes"가 활성화 된 경우 사용자는 여전히 상위 디렉토리에서 '.svn'디렉토리를 볼 수 있습니다.
사용자는 디렉토리에 들어갈 수 없습니다. 여기에는 '404 Not Found'가 들어갑니다. 그러나 디렉토리를 볼 수 있고 공격자가 될 단서를 제공 할 수 있습니다.
내가보기에 Apache conf는 다음과 같아야합니다.
<Directory ~ "\.svn">
Order allow,deny
Deny from all
</Directory>
나는 RedirectMatch를 좋아하지 않으므로 대신 RewriteRule을 사용했습니다.
RewriteRule /\..*(/.*|$) - [R=404,L]
하이픈은 "대체하지 않음"을 의미합니다. 또한 위의 예에서 정규식에 두 개의 백 슬래시가있는 이유를 알 수 없습니다.
/\\..*(/.*|$)
그래서 하나 꺼내서 잘 작동합니다. 왜 거기에서 두 개를 사용하는지 알 수 없습니다. 누군가 나를 깨우쳐 주길 바라나요?
Apache Subversion FAQ는이 솔루션을 요약합니다.
# Disallow browsing of Subversion working copy administrative dirs.
<DirectoryMatch "^/.*/\.svn/">
Order deny,allow
Deny from all
</DirectoryMatch>
출처 : https://subversion.apache.org/faq.html#website-auto-update
mod_alias의 다른 지시문과 마찬가지로 RedirectMatch는 대소 문자를 구분하지 않는 파일 시스템에서도 대소 문자를 구분합니다 ( mod_alias 문서 참조 ). 따라서 모든 버전 제어 시스템의 파일 일치 및 차단에 대한 위의 답변은 올바르지 않습니다.
대신에
RedirectMatch 404 /\\.(svn|git|hg|bzr|cvs)(/|$)
또는
RedirectMatch permanent .*\.(svn|git|hg|bzr|cvs)/.* /
이와 같은 것이 필요합니다
RedirectMatch 404 "(?i)/\.?(cvs|svn|git|hg|bzr)"
정말 모든 것을 차단합니다.
- CVS 디렉토리는 대문자입니다. 과
- 앞에 점 (.)으로 시작하지 마십시오.
도움이 되었기를 바랍니다.
In .htaccess on your server config file.
(1)
RewriteEngine on
RewriteRule "^(.*/)?\.git/" - [F,L]
And (2)
RedirectMatch 404 /\.git
Place this both method in .htaccess
file.
It hides any file or directory whose name begins with .git Like .git directory or .gitignore file by returning a 404.
Create a access rights file in your subversion server installation.
e.g if you folder structure is
/svn
/svn/rights/svnauth.conf
create a configuration file and enter the path of that file in your apache subversion configuration file which you would normally find at /etc/httpd/conf.d/subversion.conf
In your svnauth.conf file define the rights as :
access rights for Foo.com
[foo.com:/trunk/source]
dev1=rw
dev2=rw .....
This way you can control the access rights from one single file and at much granular level.
For more information peruse through the svn red book.
ReferenceURL : https://stackoverflow.com/questions/398008/deny-access-to-svn-folders-on-apache
'programing tip' 카테고리의 다른 글
C # RSA 암호화 / 복호화 (전송 포함) (0) | 2020.12.28 |
---|---|
Android 재정의 onBackPressed () (0) | 2020.12.28 |
쿼리를 사용하여 기존 테이블에 대한 SQL 작성 스크립트 생성 (0) | 2020.12.27 |
ASP.NET MVC 로그인 ReturnUrl이 항상 NULL입니까? (0) | 2020.12.27 |
Maven에서 생성 된 jar에서 리소스를 제외하는 방법은 무엇입니까? (0) | 2020.12.27 |