글타래: .DS_Store의 비밀
Mac OS X의 Finder는 각각의 디렉토리에 (파일 이름 앞에 점을 붙여서) 보이지 않는 ".DS_Store" 파일을 만들어서, 이 파일 속에 해당 디렉토리 안에 들어있는 파일들의 항목을 포함하는 정보를 담아놓게 됩니다. 그래서 이 .DS_Store를 간단한 글자 편집기로 불러서 읽어 보면 해당 디렉토리의 구조를 살펴볼 수가 있습니다.
여기서 문제가 되는 것은, Mac OS X "client version"에서 Apache를 돌릴 경우 만약 서버 운용자가 Finder에서 웹 디렉토리를 "한 번이라도 열어 본 적"이 있다면 생겼을 .DS_Store 파일로 인해, 악의를 품은 사용자가 웹 브라우저를 통해 http://your.mac.com/some_directory/.ds_store와 같은 주소로 해당 디렉토리에 어떤 파일들이 위치하고 있는 지를 알 수가 있게 되는 보안상의 허점이 생긴다는 것입니다.
이 문제에 대한 해결책으로는, 아래와 같이 Apache 설정 파일인 httpd.conf에 <FilesMatch> 지시자와 함께 적절한 regular expressions을 써서 해당 파일로의 접근을 막아낼 수가 있습니다.
# The Finder creates an invisible .DS_Store file in each directory.
# For 'no-index' access controls to be effective, we had better forbid
# retrieval of that file as well. Note that we have to protect
# against the same case-insensitivity bug as above.
#
<FilesMatch "^.[Dd][Ss]_[Ss]">
Order allow,deny
Deny from all
</FilesMatch>
위의 regular expression에서는 Mac OS X의 대소문자를 구별하지 못하는 문제도 같이 고려되어 있습니다. 물론, 위의 설정이 적용되기 위해서는 터미널에서 다음과 같은 명령으로 Apache를 재시동 하셔야 합니다.
sudo apachectl restart
참고로, Mac OS X Server 10.3.5의 경우에서는 위 문제에 대한 방지로 httpd.conf에 다음과 같이 설정이 되어 있습니다.
#### For Mac OS X Server: Note the method used to deny access to these
#### files so that files on case-insensitive HFS+ volumes are protected.
#### Also note that .DS_Store files created by the Finder are denied here.
#### (Consider adding .FBCIndex files)
#### (Note: Denying .DS_S* may interfere with Finder WebDAV operation)
#
<Files ~ "^.([Hh][Tt]|[Dd][Ss]_[Ss])">
Order allow,deny
Deny from all
Satisfy All
</Files>
여기에는 디렉토리의 Apache 설정 관련 .htaccess 파일과 .htpasswd 파일로의 접근 방지도 함께 추가되어 있음을 보실 수 있습니다.
:arrow: 여기서 제기된 Apache와 .DS_Store 파일에 관한 보안상의 문제는 Mac OS X Server 10.1 이후에서는 이미 고쳐진 것임을 밝혀둡니다.
참고 글: MacInTouch