Flip Upside Down Cute Turtle
 

Tomcat 9 에러 페이지 설정

 

정보 누출

 

위 항목은 에러 메시지를 통하여 과도한 정보(서버 데이터 정보 등)가 노출되는지 여부를 점검하는 항목

 

대표적인 두 가지 경우는,

1) 응답 헤더 내 서버 버전 정보 노출

2) 상태 오류 페이지 내 WAS 버전 정보가 노출

 

 

진단 중 아래 두가지 경우에서 WAS 버전 정보가 노출되고 있었다.

첫번째는 존재하지 않는 URL  또는 허용되지 않는 메서드 요청 시 노출되고 있었고,

 

404, 405 에러 내 WAS 버전 정보 노출

 

 

두번째는 Host 에 특수문자 삽입 또는 URL에 대량에 문자열 요청 시 예외 메시지와 WAS 버전 정보가 노출되는 것을 확인하였다.

400 에러 내 WAS 버전 정보 노출

 

 


 

 

WAS 설정 예시 [Tomcat]

 

 

1. 루트 디렉터리 안에 별도의 에러 페이지를 추가해준다.

ex) apache-tomcat-9.0.76/webapps/ROOT/error.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<% response.setStatus(HttpServletResponse.SC_OK); %>    // JSP 에러페이지에서 항상 200을 전달해야 할 경우 추가

<html>
<head>	
	<title>Error Page</title>
</head>
<body>
<div style = "padding: 120px 0px 0px 0px;">  
    <h1 align="center">페이지에 에러가 발생했습니다.<br> 다시 접속하여 주세요.</h1>
</div>
</body>
</html>
 

 

2. apache-tomcat-9.0.76/conf/web.xml 설정 파일에 400-415, 500-510 상태코드에 대한 에러 코드를 추가해준다.

(1번에서 추가한 에러 페이지 사용)

...
<!-- If you define welcome files in your own application's web.xml        -->
  <!-- deployment descriptor, that list *replaces* the list configured      -->
  <!-- here, so be sure to include any of the default values that you wish  -->
  <!-- to use within your application.                                       -->

    <welcome-file-list>
        <welcome-file>index.html</welcome-file>
        <welcome-file>index.htm</welcome-file>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>
	
	<error-page>
		<error-code>400</error-code>
		<location>/error.jsp</location>
	</error-page>
	
	<error-page>
		<error-code>404</error-code>
		<location>/error.jsp</location>
	</error-page>
	
	<error-page>
		<error-code>405</error-code>
		<location>/error.jsp</location>
	</error-page>


</web-app>
 

 

3. 서버 재기동은 필수

 

 

4. 조치 결과, 별도의 사용자 정의 에러 페이지로 리다이렉트 되는 것을 확인할 수 있다.

사용자 정의 에러페이지로 리다이렉트

 

 

BUT,,,

400 상태 코드는 조치가 되지 않아 다른 방안을 찾던 중...

 

/conf/server.xml 파일에 errorReportValveClass="com.motolies.config.CustomErrorReportValve" 코드 추가했더니 WAS 정보는 노출되지 않지만 400 상태 코드로 남았다... (이 부분은 사실 잘 모르겠다ㅠ... 그냥 대충 보고 넘어가주세요)

...
      </Realm>

      <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true"
			errorReportValveClass="com.motolies.config.CustomErrorReportValve">

        <!-- SingleSignOn valve, share authentication between web applications
             Documentation at: /docs/config/valve.html -->
        <!--
        <Valve className="org.apache.catalina.authenticator.SingleSignOn" />
        -->
...
 

위 가이드를 책임님께 들고 갔지만 사용자 정의 에러 페이지로 리다이렉트 되는 방안을 더 찾아보면 좋겠다고 하셔서

찾아봤더니 있더라.

 

 

1. /conf/server.xml 파일에 별도의 에러페이지 코드를 추가해줬다.

...
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />
			   
			   
		<!-- 에러페이지 처리 방식 추가 -->
		<Valve className="org.apache.catalina.valves.ErrorReportValve" 
			showReport="false" 
			showServerInfo="false" 
			errorCode.0="C:\apache-tomcat-9.0.76-windows-x64\apache-tomcat-9.0.76\webapps\ROOT\error.html"/>
		<!-- 이때, html 파일만 사용 가능 -->	   
		

      </Host>
    </Engine>
  </Service>
</Server>
 

 

2. 조치 결과

 

 

 


 

 

WEB 설정 예시 [Apache] httpd.conf

 

httpd.conf

 

위와 같이 특정 에러 코드에 대해 에러 메시지를 출력할 수도 있고 특정 웹 페이지로 Redirect 시킬 수 있으며,

이 설정은 httpd.conf 의 전역 설정에 추가하거나 원하는 가상 호스트의 사이에 추가하면 된다.

 

'security > web' 카테고리의 다른 글

넥사크로(Nexacro) 사설 인증서 허용 방법  (0) 2025.01.10