문서의 이전 판입니다!
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. 에러 페이지 처리