본문으로 바로가기

- 조만간 수정예정입니다. 전자금융기반시설 2020-1호 진단기준에 allowoverride none인 경우도 양호로 진단되므로, none인 경우 굳이 설정하실 필요 없으신 것으로 확인됩니다.

주요정보통신기반시설 U-37(상) 

3. 서비스 관리 > 3.19 Apache 상위 디렉토리 접근 금지

  • 점검내용 : ".."와 같은 문자 사용 등으로 상위 경로로 이동이 가능한지 여부 점검

환경 설정 
 - AWS Linux에 httpd를 설치하여 구동
 - Server version : Apache/2.2.34 (Unix)
 - DocumentRoot "/var/www/html"
 - AccessFileName .htaccess
 - 테스트 경로 : "/var/www/html/test2/test3" 
 - AllowOverride 값을 "None", "AuthConfig" 두가지로 설정 변경
 - 각 디렉토리마다 .htaccess 및 .auth 파일 생성(유지)
 - 매 설정 변경시마다 service httpd restart로 데몬 재구동
 - 매 설정 변경시마다 크롬 종료 후 새 시크릿탭으로 접속


테스트 -1)

<Directory />~</Directory> 옵션과 <Directory "/var/www/html">~</Directory> 옵션이 설정되어 있는 경우

 

 

<http://웹사이트 IP주소> 접속 테스트

 

결과 -1)

해당 디렉토리에 설정값이 들어있는 경우, <Directory />의 설정값을 따라가지 않는다.


테스트 -2)

<Directory />~</Directory> 옵션만 있고, 하위 설정이 없는 경우

 

<http://웹사이트 IP주소, http://웹사이트 IP주소/test2/test2.html> 접속 테스트

 

최상위 결과가 None 이고 하위 디렉토리 옵션을 주석처리 하였을 때는 인증창이 뜨지 않았으나, 최상위를 AuthConfig로 바꾼 결과 모든 페이지에서 인증창이 나타났다. 이 때, 각 디렉토리별 .htaccess 파일이 존재하고 있어서 나온 결과일 수도 있어서 "/var/www/html/test2/.htaccess" 파일의 이름을 바꾸고 접속해본 결과 인증창이 떴고, "/var/www/html/.htaccess" 파일의 인증 계정/패스워드를 통해 인증이 되었다. 표에는 없지만 "/var/www/html/test2/test3/test3.html" 접속 시에는 "/var/www/html/test2/test3/.htaccess"의 정보로 로그인이 되었다.(해당 디렉토리 설정도 주석처리 되어있음)

Authconfig 인증모드 사용시 해당 디렉토리부터 최상위 디렉토리까지 .htaccess를 순서대로 검색하는 메커니즘에 따른 것으로 보인다.

결과 -2)

해당 디렉토리 설정 자체가 없는 경우 최상위 <Directory /> 설정을 따라가며, AuthConfig 사용시 인증파일은 해당 디렉토리부터 상위 디렉토리로 찾아가며 처음 찾게되는 인증정보를 따라간다.


테스트 -3)

httpd.conf 파일 내 <Directory>에 대한 아무 설정도 없는 경우

 

<각 경로의 .htaccess파일 유무에 따른 인증창 발생 유무>

 

모든 <Directory> 옵션값을 주석처리하고 인증창 확인시, 인증창이 발생하는 것을 확인했고, 설정이 없는 경우 기본값으로 각 디렉토리의 ".htaccess" 파일을 확인하는 것 같아 해당 파일들의 이름을 바꾸고 테스트를 해보았다.

결과 -3)

httpd.conf 파일 내 <Directory> ~</Directory> 관련된 옵션 자체가 없는 경우 기본적으로 각 디렉토리부터 상위 디렉토리 까지의 httpd.conf 파일 내 "AccessFileName"(.htaccess) 으로 설정된 파일 유무를 확인하고 자동으로 적용한다.


전체 테스트 총평

- AllowOverride는 /etc/httpd/conf/httpd.conf 파일 내 <Directory>~</Directory> 설정에 따르며, 해당 디렉토리 및 하위 디렉토리들에 대해 접근통제를 수행한다. 
-  해당 디렉토리에 설정이 존재하지 않는 경우, 상위 디렉토리의 AllowOverride값을 참조하며, <Directory> 옵션 자체가 없는 경우 기본값으로 httpd.conf 파일 내 "AccessFileName"(.htaccess) 으로 설정된 파일 유무를 확인하여 자동으로 적용한다.
- 상위 디렉토리에 AuthConfig 설정을 해두고, 하위 디렉토리에 None 설정을 하여도, 상위 디렉토리의 AllowOverride값을 참조하여 하위 경로 접근시에도 인증창이 나타나게 된다.
- 따라서 별도의 설정이 없는 경우 최상위 또는 중간 경로에 임의의 .htaccess파일을 삽입하는 경우 해당 페이지 및 하위 경로에 대하여 접근이 불가하게 되는 경우가 발생할 우려가 존재하는 것으로 판단된다.

- 현재 주요정보통신기반시설 점검 기준 항목은 <상위 디렉토리 접근 금지>이나, 해당 진단 방법 및 조치방안은 <해당 디렉토리 및 하위 디렉토리에 대한 접근통제>이므로 항목에 대한 적절성은 재검토해 보아야 할 것으로 판단된다.