1. 개요
Tomcat으로 요청을 보낸 후, Response Header를 확인하여 보면, 다음의 "Apache-Coyote/1.1"과 같이 Server: 정보가 노출된다. 크롬 브라우저의 요소 검사 기능 혹은 curl
명령어를 이용해서 확인해 볼 수도 있다.
$ curl -i http://192.168.1.100:8080 HTTP/1.1 200 OK Server: Apache-Coyote/1.1 Accept-Ranges: bytes ETag: W/"2457-1391593060000" Last-Modified: Wed, 05 Feb 2014 09:37:40 GMT Content-Type: text/html Content-Length: 2457 Date: Mon, 22 Sep 2014 04:33:54 GMT
2. 대응
이러한 노출을 방지하기 위하여 server.xml의 http Connector 설정에 다음과 같이 server=" "를 추가하고 그 사이에 노출을 원하는 문자열을 삽입한다.
<Connector port="8080" protocol="HTTP/1.1" server="Server" ...
그리고 다음과 같이 다시 curl을 통하여 확인하여 보면 Apache-Coyote/1.1이 아닌 지정한 Server라는 문자열로 표시된다.
$ curl -i http://192.168.1.100:8080 HTTP/1.1 200 OK Accept-Ranges: bytes ETag: W/"2457-1391593060000" Last-Modified: Wed, 05 Feb 2014 09:37:40 GMT Content-Type: text/html Content-Length: 2457 Date: Mon, 22 Sep 2014 04:40:20 GMT Server: Server
단, server=""로 할 경우 원래와 같이 Apache-Coyote/1.1 =가 표시되니 만일 blank 로 표시하고 싶다면 server=" "와 같이 공백을 포함하여 설정한다.
3. 참고 문서
- Apache Tomcat Console 콘솔 패스워드(password) 암호화
- [Security] Apache Tomcat (톰캣) 신규 보안 취약점
- Tomcat에 CORS(Cross-Origin Resource Sharing) 적용 잘 안될 때