HTTP 응답 헤더의
Server필드(예: Apache/2.4, WebSphere Application Server/8.5)를 통해 서버의 종류와 버전이 노출되는 것을 방지하는 방법을 정리합니다. 앞단의 IBM HTTP Server(IHS)와 뒷단의 WebSphere(WAS) 양쪽 모두의 설정이 필요합니다.
0. 배경 및 원인 (Context)
서버의 구체적인 버전 정보가 노출되면, 해커는 해당 버전에 알려진 취약점(CVE)을 찾아 맞춤형 공격을 시도할 수 있습니다. 따라서 보안 모범 사례(Best Practice)에서는 서버 정보를 숨기거나 최소화할 것을 권고합니다.
Test Environment
- OS: CentOS 7.2
- Web Server: IBM HTTP Server (Apache 기반)
- WAS: WebSphere Application Server v8.5
1. IBM HTTP Server (Web Server) 설정
가장 앞단에서 요청을 받는 웹 서버의 설정을 변경합니다. httpd.conf 파일에 아래 지시어를 추가하거나 수정합니다.
설정 내용 (httpd.conf)
# 1. 서버 정보 최소화 (Apache/x.y.z -> Apache)
ServerTokens Prod
# 2. 에러 페이지 하단(Footer)에 서버 정보 숨김
ServerSignature Off
# 3. Server 헤더 자체를 응답에서 제거 (IHS 전용 기능, 가능할 경우 권장)
AddServerHeader Off
AddServerHeader Off는 표준 Apache에는 없고 IBM HTTP Server에만 존재하는 지시어일 수 있습니다. 적용 후 Syntax Error가 난다면 ServerTokens Prod까지만 적용하십시오.
2. WebSphere (WAS) 설정
WAS가 직접 클라이언트에게 응답을 줄 때 붙는 헤더를 제어합니다. WAS v8.5.0.2 이상부터는 기본 동작이 변경되었으나, 명시적으로 제어하기 위해 HTTP 전송 채널(Transport Channel) 설정을 수정합니다.
설정 경로
서버 > WebSphere Application Server > [서버명] > 웹 컨테이너 설정 > 웹 컨테이너 전송 체인 > WCInboundDefault > HTTP 인바운드 채널 (HTTP_2) > 사용자 정의 특성 (Custom properties)
주요 속성 (택 1)
상황에 맞춰 아래 두 가지 속성 중 하나를 선택하여 적용합니다.
| 속성 이름 (Name) | 설명 및 권장 값 |
|---|---|
| RemoveServerHeader |
값: true Server 헤더 자체를 아예 삭제합니다. 가장 강력한 보안 설정입니다. |
| ServerHeaderValue |
값: (임의의 문자열) 기본값인 "WebSphere Application Server..." 대신 사용자가 지정한 문자열(예: "AppServer")로 치환합니다. |
전송 채널 설정 외에도,
웹 컨테이너 > 사용자 정의 특성에서 com.ibm.ws.webcontainer.disableServerHeader 값을 true로 설정하는 방법도 존재합니다. (최신 버전에서 권장)
3. 검증 (Verification)
IHS와 WAS를 모두 재기동한 후, curl 명령어로 응답 헤더를 확인합니다.
# 헤더 확인
curl -I http://localhost/
# [Before]
HTTP/1.1 200 OK
Server: IBM_HTTP_Server/8.5 ...
...
# [After]
HTTP/1.1 200 OK
# Server 헤더가 아예 없거나 "Apache" 또는 지정한 값으로 표시됨
...
Next Step:
헤더 숨김 처리가 완료되었습니다. 다음으로는 HTTP 메소드(PUT, DELETE, TRACE) 차단 설정을 통해 불필요한 요청을 막는 웹 서버 강화 작업을 진행해 보십시오.