본문 바로가기

Computer/JAVA

Tomcat 기본 에러 페이지 설정

SI 프로젝트를 하다 보면 보안점검 중에 모의해킹을 진행하는 경우가 있는데

Proxy 도구를 이용해서 Tomcat의 에러페이지를 공격하는 경우가 있다.

전달해 준 보안가이드 상으로는 web.xml에 에러페이지를 설정하라고 되어있지만 Proxy 도구를 이용해서 직접공격을 할 경우 웹애플리케이션으로 가기 전에 Tomcat에서 에러페이지를 표시해 버린다.

다음은 Tomcat의 기본에러 페이지 설정에 관한 내용이다.

1.Tomcat 기본에러 페이지 설정

server.xml에서 Valve 태그 중 ErrorReportVale를 이용해서 설정한다.

 

<!-- ErrorReportValve //-->
<Valve className="org.apache.catalina.valves.ErrorReportValve
            showReport="false" 
            showServerInfo="false" 
            errorCode.0="C:\Program Files\Apache Software Foundation\apache-tomcat-9.0.40\webapps\error.html"/>

 

  • showReport="false": 상세 에러내용 표시하지 않음(default: true - 상세내용 표시)
  • showServerInfo="false": 페이지 하단에 Tomcat 서버의 정보(버전 등)를 표시하지 않음(default: true - 서버정보 표시)
  • errorCode.0: Tomcat 9.x이상 가능한 옵션으로 ""안에는 $CATALINA_BASE의 상대 경로 혹은 절대경로로 UTF-8로 된 HTML 에러페이지의 위치를 적는다.

[주의]

errorCode.nnn 옵션은 Tomcat 9.x 이상만 동작하는 옵션임!!!

'$CATALINA_BASE의 상대경로' 라고 했지만 시도한 결과 안 나올 수 있으니 절대 경로를 써주는 게 좋아 보인다.

 

[Tip 1]

또한 errorCode.nnn 속성으로 nnn은 HTTP 에러 코드를 나타낸다.

0은 특별값으로 Tomcat의 기본 에러페이지를 설정할 때 사용 한다.

404를 설정하고 404 관련 에러페이지를 설정하면 기본적으로 0 페이지가 보이다가 404일 경우 404 페이지가 보인다.

 

[참고]

https://tomcat.apache.org/tomcat-9.0-doc/config/valve.html#Error_Report_Valve

2. 기타

  • tomcat 서버정보를 표시하지 않는 다른 방법이 있다.

CATALINA_BASE/lib/org/apache/catalina/util/ServerInfo.properties 를 만들고 내용을 아래 형식으로 작성할 수 있다.


server.info=Apache Tomcat/9.0.x <--- Apache Tomcat/9.0.x 대신 다른 값으로

 

[주의]

위 방법은 다른 관리도구 들에서 Tomcat의 버전도 변경되며 실제 버전을 없게 하기 때문에 추천하지 않는다.

[참고]
https://tomcat.apache.org/tomcat-9.0-doc/security-howto.html