본문 바로가기
Tomcat

[Tomcat] Tomcat 에러 페이지 설정

by dbs_ 2025. 11. 17.

 

 

최근에 회사 솔루션에 보안취약점 리포트가 들어와서 패치를 하였는데 그중 하나가 에러 페이지에 Tomcat 정보가 보인다는 것이었다. 에러가 발생하였을 때 노출되는 에러 페이지에 Tomcat 버전이 그대로 보이면 공격자에게 힌트를 주는 셈이다. 이번엔 Tomcat에서 에러 페이지를 안전하게 설정하는 방법을 정리해봤다.

 

Tomcat 정보 숨기기

에러 메시지를 통해 노출되는 정보는 크게 두 가지다.

1. 응답 헤더에 서버 종류를 노출 (예 : Server: Apache-Coyote/1.1)
2. 에러 페이지에 서버의 정확한 버전 노출 (예 : Apache Tomcat/9.0.XX)

이런 정보들은 공격자가 알려진 취약점을 공략하는 데 사용할 수 있다.

1. 응답 헤더 정보 숨기기

<!-- server.xml -->
<Connector port="8080" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8443"
           server="Web Server" 
           xpoweredBy="false" />
  • server="Web Server"
    • 이게 있어야 Server: Apache-Coyote/1.1 헤더가 Server: Web Server로 바뀜.
  • xpoweredBy="false"
    • X-Powered-By: Servlet/3.1 JSP/2.3 (Apache Tomcat/9.0.XX) 같은 헤더도 제거해야 함.
# 설정 전
Server: Apache-Coyote/1.1
X-Powered-By: Servlet/3.1 JSP/2.3 (Apache Tomcat/9.0.50)

# 설정 후  
Server: Web Server
(X-Powered-By 헤더 제거됨)

 

2. 에러 페이지 버전 정보 숨기기

<!-- server.xml의 Host 섹션 -->
<Host name="localhost" appBase="webapps"
      unpackWARs="true" autoDeploy="true">
      
    <!-- 기존 Valve 주석처리하고 새로 추가 -->
    <Valve className="org.apache.catalina.valves.ErrorReportValve"
           showReport="false"
           showServerInfo="false" />
           
</Host>
 

속성 설명

속성 기본값 설명
showServerInfo true 에러 페이지에 서버 정보(Tomcat 버전) 표시 여부
showReport true 에러 페이지에 상세 에러 리포트(스택 트레이스 등) 표시 여부

이 설정만 해도 에러 페이지가 훨씬 깔끔해지고 정보 노출이 줄어든다!

 

커스텀 에러 페이지 설정

에러 코드별로 다른 페이지 설정

<!-- web.xml (프로젝트 또는 Tomcat 전역) -->
<error-page>
    <error-code>404</error-code>
    <location>/error/404.html</location>
</error-page>

<error-page>
    <error-code>500</error-code>
    <location>/error/500.html</location>
</error-page>

<error-page>
    <error-code>403</error-code>
    <location>/error/403.jsp</location>
</error-page>

 

Exception 타입별로 페이지 설정

<error-page>
    <exception-type>java.lang.Exception</exception-type>
    <location>/error/exception.jsp</location>
</error-page>

<error-page>
    <exception-type>java.lang.NullPointerException</exception-type>
    <location>/error/null-pointer.jsp</location>
</error-page>
 

 

설정 파일 위치별 적용 범위

파일 위치 적용 범위 설명
$CATALINA_HOME/conf/web.xml Tomcat 전체 애플리케이션 모든 웹앱에 공통 적용
프로젝트/WEB-INF/web.xml 해당 웹 애플리케이션만 개별 프로젝트 설정

전역 설정과 프로젝트 설정이 충돌하면 프로젝트 설정이 우선한다. 또한 에러페이지 우선순위는 구체적인 에러가 우선이 된다.