웹 서버가 특정 디렉토리 내의 파일 목록을 브라우저에 노출하는 '디렉토리 리스팅' 취약점을 해결하기 위한 WebSphere 설정 가이드입니다. 애플리케이션 레벨(xml) 수정 방식과 관리 콘솔(Admin Console)을 통한 전역 설정 방식을 다룹니다.
0. 배경 및 원인 (Context)
디렉토리 리스팅이 활성화되어 있으면 공격자가 서버의 디렉토리 구조와 파일 목록(백업 파일, 소스 코드 등)을 파악할 수 있어 2차 공격의 빌미가 됩니다.
WebSphere는 정적 파일 처리를 위한 fileServingEnabled 속성과 목록 노출을 위한 directoryBrowsingEnabled 속성을 가지고 있으며, 이를 적절히 제어해야 합니다.
Test Environment
- OS: CentOS 7.2
- Web Server: IBM HTTPServer v8.5.0.0
- WAS: WebSphere Application Server v8.5
1. Method A: 애플리케이션 설정 파일 수정
개별 애플리케이션 단위로 설정을 적용할 때 사용합니다. WAR/EAR 파일 내부의 IBM 확장 설정 파일을 직접 수정합니다.
설정 파일 대상
- WAS v7.0 이상:
ibm-web-ext.xml - WAS v6.1 이하:
ibm-web-ext.xmi(Legacy)
설정 내용 (ibm-web-ext.xml)
enable-directory-browsing 속성을 false로 명시합니다.
<?xml version="1.0" encoding="UTF-8"?>
<web-ext
xmlns="http://websphere.ibm.com/xml/ns/javaee/web-ext/1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://websphere.ibm.com/xml/ns/javaee/web-ext/1.0 http://websphere.ibm.com/xml/ns/javaee/web-ext/1.0/web-ext.xsd">
<!-- 정적 파일 서빙 활성화 (이미지, HTML 등) -->
<enable-file-serving value="true"/>
<!-- 핵심: 디렉토리 리스팅 비활성화 -->
<enable-directory-browsing value="false"/>
</web-ext>
2. Method B: 웹 컨테이너(Web Container) 전역 설정
WAS 관리 콘솔에서 서버 단위로 속성을 추가하여 제어하는 방식입니다. 애플리케이션을 재배포하지 않고 설정을 변경할 수 있어 운영 환경에서 선호됩니다.
설정 경로
서버(Servers) > 서버 유형(Server Types) > WebSphere application servers > [서버명] > 웹 컨테이너 설정(Web Container Settings) > 웹 컨테이너(Web container) > 사용자 정의 특성(Custom properties)
주요 속성 값
아래 속성을 새로 작성(New)하여 추가합니다.
| 이름 (Name) | 값 (Value) | 설명 |
|---|---|---|
| directoryBrowsingEnabled | false | 디렉토리 목록 조회 기능을 비활성화합니다. (보안 필수) |
| fileServingEnabled | true | WAS가 정적 파일(html, img 등)을 처리할지 여부입니다. (false 설정 시 정적 파일 처리가 불가할 수 있음) |
참고:
fileServingEnabled를 false로 설정하면 디렉토리 리스팅도 차단되지만, WAS가 이미지나 CSS 같은 정적 리소스를 전혀 제공하지 않게 되므로 주의가 필요합니다. 일반적으로는 directoryBrowsingEnabled만 false로 설정합니다.
3. 검증 (Verification)
- 설정 적용 후 WAS 인스턴스를 재기동합니다.
- 브라우저에서
index.html이 없는 디렉토리 경로(예:http://domain/images/)로 접속합니다. - 403 Forbidden 에러가 발생하면 보안 설정이 정상적으로 적용된 것입니다.