2020. 10. 19. 23:11ㆍWAS
Tomcat을 이용하여 웹 애플리케이션을 구성할 때, 익셉션이 발생할 때 아래와 같은 페이지를 종종 맞닥뜨린 적이 있을 것입니다.
이 에러 페이지에는 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한 후 존재하지 않는 페이지로 접속해보면 이번에는 서버 정보가 출력되지 않음을 확인할 수 있습니다.
변경한 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가 모두 변경되었음을 확인할 수 있습니다.
'WAS' 카테고리의 다른 글
[Tomcat 보안] Tomcat 보안 고려사항 (0) | 2020.10.19 |
---|---|
[Embedded Tomcat] Spring Boot 앱에 SSL 인증서 설정하기 (0) | 2020.09.10 |