Apache Tomcat에서는 Error를 유발했더니 서버 버전 정보가 노출되었다. Error 페이지에서 출력되는 버전 정보를 숨기는 방법은 아래와 같다.
일단 Error 페이지에서 노출되는 서버 버전 정보를 확인하기 위해 404 Error를 발생시켰더니 아래와 같이 Apache Tomcat/7.0.68 (Ubuntu)
라는 정보가 출력되었다.
Apache Tomcat에서 버전 정보를 숨기기 위해서는 /etc/tomcat7/server.xml
파일을 수정해야 한다.
server.xml
파일을 열고 가장 아래로 내려보면 <Host>
태그를 발견할 수 있다.
해당 태그 안에 <Valve>
라는 태그가 있는데, <Valve>
태그를 통해 Tomcat
에 들어오는 각 요청에 대한 전처리를 수행할 수 있다.
따라서 Error 페이지에 대한 전처리 설정을 하기 위해 아래와 같이 새로운 <Valve>
를 추가 해 준다.
|
|
이 후 Tomcat을 재실행 해 주어야 한다.
재실행을 하기 위해서는 /usr/share/tomcat7/bin
디렉터리의 shutdown.sh
와 startup.sh
를 차례로 실행 해 주면 된다.
그런데 내 경우, shutdown.sh
를 실행하니 아래와 같은 오류가 났다.
|
|
이 오류를 해결하기 위해서는 /usr/share/tomcat7
디렉터리로 가 아래의 명령어를 입력 해 주면 된다.
|
|
이 후, shutdown.sh
와 startup.sh
를 차례로 실행 해 주면 아래와 같이 Tomcat started
라는 문구가 뜨며 재실행이 된 것을 확인할 수 있다.
다시 웹으로 돌아가 아까와 똑같이 404 Error를 발생 해 보면 서버 버전 정보 뿐만 아니라 오류의 세부 내용도 함께 사라진 것을 확인할 수 있다.
참고
인터넷에서 Tomcat의 서버 버전 정보 노출 방지 방법을 찾으면 catalina.jar
를 찾아 특정 폴더 내에 있는 버전 정보를 지우도록 하는 방법이 나온다.
나도 처음엔 그렇게 해보려 했는데, 저렇게 할 경우 catalina.jar
를 repackaging
되면서 의도치 않은 오류가 발생할 수 있다고 한다.
그래서 위와 같이 <Valve>
를 사용 해 처리하는 방법을 권장한다고 한다.