Tomcat은 Apache와 연계하여 많이 사용하나, 독립적으로 Web 서비스를 사용하는 경우가 있다.
이때 기본 설정으로만 서비스 구동 시에 Response Header나 Default Error Page 등에서 톰캣 버전이 노출된다.
이렇게 버전이 노출이 된 경우 현재 사용하고 있는 해당 톰캣 버전에 알려진 취약점을 이용하여 좀 더 쉽게 공격이 가능하다.
* 초기 설정 *
1. 기본 에러 페이지 정보 제거
1) CATALINA_HOME/server/lib 으로 이동
cd {$CATALINA_HOME}/lib
2) catalina.jar 에서 ServerInfo.properties 파일만 압축 해제
jar xvf catalina.jar org/apache/catalina/util/ServerInfo.properties
3) ServerInfo.properties 수정
server.info=Apache Tomcat server.number= server.built=
4) catalina.jar ServerInfo.properties파일 repackage
jar uf catalina.jar org/apache/catalina/util/ServerInfo.properties
2. Header(헤더) 버전 정보 제거
server.xml 파일 수정
Connector 태그에 server 속성을 추가.
vi {$CATALINA_HOME}/conf/server.xml <Connector port="8080" ... server="apache tomcat" />
결과
curl -i 192.168.10.86:8080/search/front/Search.jsp HTTP/1.1 200 OK Server: apache tomcat Content-Type: text/html;charset=UTF-8 Content-Language: koTransfer-Encoding: chunked Date: Tue , 02 Jan 2018 04:33:57 GMT
3. ErrorReportValve 설정을 통한 정보 제거
<Host> </Host> 사이에 <Valve> 추가
<Valve> 태그를 통해 Tomcat에 들어오는 각 요청에 대한 전처리를 수행할 수 있다.
아래 내용 추가
<Valve className="org.apache.catalina.valves.ErrorReportValve" showReport="false" showServerInfo="false"/>
4. 불필요한 examples 디렉토리(/examples) 제거
{$CATALINA_HOME}/webapps/examples 폴더 삭제
5. 에러 페이지 처리