Tomcat 업데이트(9.0.16->9.0.37)
Tomcat AJP 취약점 공개(CVE-2020-1938)
최근 Tomcat의 웹 원격코드실행 취약점(CVE-2020-1938)1이 발견되었다. 인증을 리버스 프록시에게 일임하여 AJP 커넥션은 신뢰도가 높은 연결로 간주하므로 AJP 연결에 따른 공격을 진행할 수가 있다는 건데2 위험도가 High이므로 해당 버전의 톰캣을 이용하고 있다면 꼭 패치하는게 좋겠다. 사실 8009 포트를 Any Connection으로 열어두지 않고 자신이 사용하는 리버스 프록시와만 연결할 경우 크게 문제는 없을 것 같다.
취약 버전
Apache Tomcat 9.0.0.M1 to 9.0.30 Apache Tomcat 8.5.0 to 8.5.50 Apache Tomcat 7.0.0 to 7.0.99
해결 방법
Apache Tomcat 9.0.31, 8.5.51 and 7.0.100 이상 버전 사용
완화책
- AJP Connector를 리버스 프록시 아이피만 연결할 수 있도록 IP 제한
- 방화벽 룰을 이용하여 신뢰할 수 있는 호스트만 AJP port를 사용할 수 있도록 설정
- shared secret을 리버스 프록시와 AJP Connector간에 설정
작업내용
방화벽 설정이나 shared secret은 별도로 알아보자. 으하; 작업일 기준으로 최신 버전이던 9.0.35를 설치하는 방법을 정리해본다.
다운로드 및 파일 풀기
어디선가 보고 따라 쓰는 설정인데, 톰캣을 사용할 때 /home/user/tomcat/apache-tomcat-9.0.x에 여러 버전을 넣어두고 사용하는 톰캣을 심볼릭 링크로 /home/user/tomcat/latest에 걸어두고 사용하고 있다. 사고가 나면 바로바로 바꿀 수 있도록...
$ wget http://mirror.navercorp.com/apache/tomcat/tomcat-9/v9.0.37/bin/apache-tomcat-9.0.37.tar.gz$ tar -xvf apache-tomcat-9.0.37.tar.gz
설정파일 옮기기
Tomcat 설정 파일들과 인증서를 옮겨둔다. 대상 폴더는 다음과 같다.
- tomcat/conf/*.*- tomcat/conf/ssl/
필요 폴더 생성 후 카피
war를 배치할 폴더나 기타 사용할 폴더들을 생성한다. 대부분 프로젝트들이 배포서버를 통해 배포되겠지만 테스트를 위하여 현재 배포된 소스를 옮겨서 잘 돌아가는지 보자.
- mkdir tomcat/webappscp -r old/webapps/ new/webapps/
심볼릭 링크 수정
새롭게 설치한 Tomcat이 잘 돌아가면 링크를 수정하여 차후에도 신규 설치한 버전이 돌도록 하자.
ln -Tfs /home/user/tomcat/apache-tomcat-9.0.37/ latest