[Tomcat 보안] Tomcat 서버정보 및 Built 날짜 변경하기

2020. 10. 19. 23:11WAS

반응형

Tomcat을 이용하여 웹 애플리케이션을 구성할 때, 익셉션이 발생할 때 아래와 같은 페이지를 종종 맞닥뜨린 적이 있을 것입니다.

08

이 에러 페이지에는 404 라는 HTTP 상태코드 외에도 Tomcat버전도 함께 출력되어있습니다.
Tomcat Server 정보는 위와같은 에러페이지 이외에 api header 에서도 등장되곤 합니다.

Server 종류나, 버전이 노출될 경우 해당 서버 및 버전에 관한 취약점을 이용하여 서버에 공격을 할 수 있기 때문에 서버관련 정보는 변경하는 것을 권장합니다.

Tomcat의 서버 관련 정보는 $CATALINA_BASE/lib/catalina.jar내에 있는 'org.apache.catalina.util.ServerInfo' 클래스로부터 읽어들이며, ServerInfo.properties 프로퍼티에 설정된 정보를 출력합니다.

java -cp lib/catalina.jar org.apache.catalina.util.ServerInfo

catalina.jar 에 들어있는 ServerInfo 클래스를 실행시키면 아래와 같이 서버 정보가 출력됩니다.

Server version: Apache Tomcat/9.0.36
Server built:   Jun 3 2020 17:07:09 UTC
Server number:  9.0.36.0
OS Name:        Linux
OS Version:     3.10.0-1127.13.1.el7.x86_64
Architecture:   amd64
JVM Version:    1.8.0_252-b09
JVM Vendor:     Oracle Corporation

catalina.jar 내에 있는 ServerInfo.properties를 변경하면, 톰캣내에 있는 웹 애플리케이션을 실행 할 경우 서버에 대한 정보 노출을 막을 수 있습니다.

mkdir lib_backup
mv ./lib/catalina.jar ./lib_backup/catalina.jar

Tomcat 디렉토리 내의 lib 디렉토리에 들어있는 catalina.jar를 backup 디렉토리에 옮깁니다.

cd lib_backup
mkdir catalina
cd catalina
jar -xvf ../catalina.jar

catalina.jar를 압축을 푼 후,

find . -name ServerInfo.properties
./org/apache/catalina/util/ServerInfo.properties

서버정보가 들어있는 ServerInfo.properties 의 파일 위치를 찾습니다.
프로퍼티 파일 위치를 찾았다면 vim을 이용하여 서버 정보를 변경합니다.

server.info=Apache Tomcat/9.0.36
server.number=9.0.36.0
server.built=Jun 3 2020 17:07:09 UTC

서버 정보를 변경합니다.
저의 경우 아래와 같이 변경하였습니다.
이제 서버를 추측할 수 없겠네요.

server.info=Jini Server/1.0.0
server.number=1.0.0
server.built=Oct 13 2020 10:01:00 KST

catalina 디렉토리를 다시 jar파일로 압축하여 lib디렉토리 아래에 저장합니다.

jar cvf ../../lib/catalina.jar ./*

그리고 다시 Tomcat을 start한 후 존재하지 않는 페이지로 접속해보면 이번에는 서버 정보가 출력되지 않음을 확인할 수 있습니다.

09


변경한 catalina.jar의 ServerInfo를 출력하면 아래와 같이 나옵니다.

java -cp lib/catalina.jar org.apache.catalina.util.ServerInfo
Server version: Jini Server/1.0.0
Server built:   Oct 13 2020 10:01:00 KST
Server number:  1.0.0
OS Name:        Linux
OS Version:     3.10.0-1127.13.1.el7.x86_64
Architecture:   amd64
JVM Version:    1.8.0_252-b09
JVM Vendor:     Oracle Corporation

Server version, Server built, Server number가 모두 변경되었음을 확인할 수 있습니다.

728x90
반응형