[2026 주요정보통신기반시설] WEB-17 웹서비스가상디렉터리삭제

가상 디렉터리(Virtual Directory)는 웹 서버의 문서 루트 외부에 있는 파일이나 디렉터리를 웹을 통해 접근 가능하게 만드는 기능입니다. 편리하지만 불필요한 가상 디렉터

WEB-17 웹서비스가상디렉터리삭제

가이드라인 원문

항목내용
항목코드WEB-17
점검내용가상 디렉터리(Virtual Directory)는 웹 서버의 문서 루트 외부에 있는 파일이나 디렉터리를 웹을 통해 접근 가능하게 만드는 기능입니다. 편리하지만 불필요한 가상 디렉터
점검대상Apache, Tomcat, Nginx, WebtoB
판단기준양호: 불필요한 가상 디렉터리가 존재하지 않는 경우
판단기준취약: 불필요한 가상 디렉터리가 존재하는 경우
조치방법상세 조치 방법 참고


상세 설명

1. 항목 개요

가상 디렉터리(Virtual Directory)는 웹 서버의 문서 루트 외부에 있는 파일이나 디렉터리를 웹을 통해 접근 가능하게 만드는 기능입니다. 편리하지만 불필요한 가상 디렉터리는 공격자에게 추가적인 공격 경로를 제공할 수 있습니다. 특히 테스트용, 백업용, 샘플용 가상 디렉터리는 보안 허점이 될 수 있습니다. 마치 건물에 정문 외에도 아무나 출입 가능한 뒷문을 여러 개 만드는 것과 같습니다.

2. 왜 이 항목이 필요한가요?

실제 시나리오:

  • 웹 서버에 /backup, /test, /old-site 등의 가상 디렉터리가 설정되어 있습니다.
  • 이 디렉터리들은 개발 기간에 사용되다가 운영 환경에서도 그대로 남아 있습니다.
  • 공격자가 이 가상 디렉터리들을 발견하고 탐색합니다.
  • 백업 파일, 테스트 파일, 구버전 파일에서 취약점을 찾아 공격합니다.

가상 디렉터리 위험성:

  • 추가 공격 경로: 문서 루트 외부 접근 가능
  • 보안 약화 영역: 테스트, 백업용으로 보안이 느슨한 경우 많음
  • 정보 노출: 개발 문서, 테스트 데이터, 구버전 노출
  • 권한 상승: 취약한 스크립트를 통한 시스템 장악

삭제가 필요한 가상 디렉터리 예시:

  • /test, /testing, /dev: 테스트용
  • /backup, /old, /archive: 백업용
  • /sample, /examples: 샘플용
  • /admin-old, /v1: 구버전용
  • /temp, /tmp: 임시 파일용

3. 점검 대상

  • Apache: Apache HTTP Server
  • Tomcat: Apache Tomcat 웹 서버
  • Nginx: Nginx 웹 서버
  • WebtoB: Tmax WebtoB 웹 서버

4. 판단 기준

  • 양호: 불필요한 가상 디렉터리가 존재하지 않는 경우
  • 취약: 불필요한 가상 디렉터리가 존재하는 경우

5. 점검 방법

Apache

1
2
3
4
5
# Alias 지시자 확인
grep -r "Alias" /etc/apache2/sites-available/

# 또는
grep -r "Alias" /<Apache 설치 디렉터리>/conf/

Tomcat

1
2
# Context 요소의 path 속성 확인
grep -A 3 "Context path=" /<Tomcat 설치 디렉터리>/conf/server.xml

Nginx

1
2
# alias 지시자 확인
grep -r "alias" /<Nginx 설치 디렉터리>/conf/

WebtoB

1
2
# ALIAS 절 확인
grep -A 2 "*ALIAS" /<WebtoB 설치 디렉터리>/config/http.m

6. 조치 방법

Apache

Step 1) Alias 지시자 확인

1
vi /<Apache 설치 디렉터리>/conf/httpd.conf (또는 apache2.conf)
1
2
3
4
5
6
7
8
<!-- 변경 전 (취약) -->
Alias /virtual /var/www/virtual

<Directory /var/www/virtual>
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>

Step 2) 불필요한 가상 디렉터리 삭제

1
2
3
4
5
6
7
8
<!-- 변경 후 (양호) - 주석 처리 또는 제거 -->
#Alias /virtual /var/www/virtual
#
#<Directory /var/www/virtual>
#    Options Indexes FollowSymLinks
#    AllowOverride None
#    Require all granted
#</Directory>

Step 3) Apache 재시작

1
systemctl restart apache2

Tomcat

Step 1) Context 블록 요소의 path 속성값 확인

1
vi /<Tomcat 설치 디렉터리>/server.xml
1
2
3
4
5
6
7
8
9
<!-- 변경 전 (취약) -->
<Host name="localhost"
      appBase="webapps"
      unpackWARs="true"
      autoDeploy="true">
    <Context path="/virtual"
             docBase="/path/to/your/virtual/directory"
             reloadable="true"/>
</Host>

Step 2) Context 블록 요소 가상 디렉터리 제거

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
<!-- 변경 후 (양호) - 주석 처리 또는 제거 -->
<Host name="localhost"
      appBase="webapps"
      unpackWARs="true"
      autoDeploy="true">
    <!--
    <Context path="/virtual"
             docBase="/path/to/your/virtual/directory"
             reloadable="true"/>
    -->
</Host>

Step 3) Tomcat 재시작

1
systemctl restart tomcat

Nginx

Step 1) Alias 지시자 확인

1
vi /<Nginx Dir>/nginx.conf
1
2
3
4
5
# 변경 전 (취약)
location /virtual {
    alias /var/www/virtual;
    index index.html index.htm;
}

Step 2) 설정된 모든 디렉터리의 불필요한 Alias 지시자 제거

1
2
3
4
5
# 변경 후 (양호) - 주석 처리 또는 제거
#location /virtual {
#    alias /var/www/virtual;
#    index index.html index.htm;
#}

Step 3) Nginx 재구동

1
systemctl restart nginx

WebtoB

Step 1) NODE 절의 Alias 설정 확인

1
vi /<WebtoB 설치 디렉터리>/config/http.m
1
2
3
4
# 변경 전 (취약)
*ALIAS alias1
    URI = '/cgi-bin/'
    RealPath = '/home/tmax/webtob/cgi-bin/'

Step 2) NODE 절의 불필요한 Alias 설정 삭제

1
2
3
4
# 변경 후 (양호) - 주석 처리
#*ALIAS alias1
#    URI = '/cgi-bin/'
#    RealPath = '/home/tmax/webtob/cgi-bin/'

Step 3) 설정 파일 컴파일 및 재구동

1
2
3
wscfl -I http.m
wsdown
wsboot

7. 조치 시 주의사항

  • 일반적인 경우 영향이 없습니다.
  • 실제 운영 중인 가상 디렉터리인지 확인 후 삭제해야 합니다.
  • 삭제 전에 해당 디렉터리에서 제공되는 서비스가 있는지 확인하세요.
  • 가상 디렉터리가 필요한 경우라도 별도 인증을 설정하는 것을 권장합니다.
  • 삭제 후 웹사이트 정상 작동 여부를 테스트해야 합니다.
  • 정기적으로 불필요한 가상 디렉터리가 추가되지 않았는지 감사해야 합니다.

8. 참고 자료

요약

불필요한 가상 디렉터리를 삭제하여 공격 표면을 최소화하고 추가적인 공격 경로를 차단해야 합니다.

Hugo로 만듦
JimmyStack 테마 사용 중