사용자 도구

사이트 도구


wiki:was:tomcat

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판 이전 판
다음 판
이전 판
wiki:was:tomcat [2022/03/14 17:56]
r_kimmk 오류 페이지 대응 추가 2022.03.14
wiki:was:tomcat [2023/07/06 16:16] (현재)
r_kimmk
줄 19: 줄 19:
 | Apache Tomcat 3.3.2     | 2.2            | 1.1        | -                 | JDK 1.1이상  | [[https://archive.apache.org/dist/tomcat/tomcat-3/|다운로드]]  | | Apache Tomcat 3.3.2     | 2.2            | 1.1        | -                 | JDK 1.1이상  | [[https://archive.apache.org/dist/tomcat/tomcat-3/|다운로드]]  |
 ===== 보안 취약점 ===== ===== 보안 취약점 =====
 +
 +  * [[was:tomcat:로그_디렉토리/파일_권한_설정 |로그_디렉토리/파일_권한_설정]]\\
 +  * [[was:tomcat:로그_포맷_설정 |로그_포맷_설정]]\\
 +  * [[http://rwiki.repia.com/doku.php?id=wiki:was:tomcat:tip:tomcat_%EB%B2%84%EC%A0%84_%EC%A0%95%EB%B3%B4_%EC%88%A8%EA%B8%B0%EA%B8%B0 | 에러 메시지 관리 또는 에러 페이지에서 Tomcat 버전 숨기기 ]]\\
 +  * [[was:tomcat:불필요한_파일_및_디렉토리_삭제|불필요한_파일_및_디렉토리_삭제]]
 +  * [[was:tomcat:Tomcat_관리자_콘솔_접근통제|Tomcat_관리자_콘솔_접근통제]]
 +
 +
 2020.02.24 CVE-2020-1938 Apache Tomcat 취약점(Ghostcat) \\ 2020.02.24 CVE-2020-1938 Apache Tomcat 취약점(Ghostcat) \\
 [[wiki:was:tomcat:Apache-tomcat 연동하기:Apache-Tomcat-7.0.100 이상 server.xml AJP 설정|조치방법(김토피아)]] , [[https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-1938|CVE-2020-1938]] [[wiki:was:tomcat:Apache-tomcat 연동하기:Apache-Tomcat-7.0.100 이상 server.xml AJP 설정|조치방법(김토피아)]] , [[https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-1938|CVE-2020-1938]]
줄 64: 줄 72:
 ===== 오류 페이지 대응 ===== ===== 오류 페이지 대응 =====
  오류 코드에 대해서 상응하는 사용자가 직접 만든 페이지가 나올 수 있도록 조치하는 방법을 기술 \\  오류 코드에 대해서 상응하는 사용자가 직접 만든 페이지가 나올 수 있도록 조치하는 방법을 기술 \\
- 사용자가 만든 오류 페이지가 존재하지 않으면 was의 정보가 노출 됨을 방지\\+ 사용자가 만든 오류 페이지가 존재하지 않으면 was의 정보가 노출 됨을 방지  
 +> {RSA_WEB_ROOT}/WEB-INF/web.xml에 내용 추가, 필요에 따라 {TOMCAT_ROOT}/conf/web.xml 에도 내용 추가  
 +> <error-code>에 에러코드(숫자) 입력 
 +> 코드번호: 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 500, 501, 502, 503, 504, 505  
 +> JSP의 위치는 Context 디렉토리와 front 디렉토리에 둠 (필요에 따라 {TOMCAT_ROOT}/webapps/ROOT에 넣음 
 +* [[https://developer.mozilla.org/ko/docs/Web/HTTP/Status|HTTP 상태 코드 정리]] \\ 
  {TOMCAT_ROOT}/conf/web.xml  {TOMCAT_ROOT}/conf/web.xml
  <code bash>  <code bash>
줄 76: 줄 90:
 </error-page> </error-page>
 ..... 생략 ..... 생략
 +</code>
 +
 +> error.jsp 소스
 +<code bash>
 +  <%@ page language="java" contentType="text/html; charset=utf-8"%>
 +  <!DOCTYPE HTML>
 +  <html>
 + 
 +        <head> 
 +          <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
 +          <title>웹 페이지를 표시할 수 없습니다.</title> 
 +          <style type="text/css"> 
 +              body { background-repeat: repeat-x; background-color: white; font-family: "맑은 고딕", "Segoe UI", "verdana", "arial"; margin: 0em; color: #575757; } 
 +              .mainContent { margin-top:80px; width: 700px; margin-left: 120px ; margin-right: auto ; } 
 +              /* title { color: #2778ec; font-size: 30pt; font-weight: 300; vertical-align:bottom; margin-bottom: 20px; font-family: "맑은 고딕", "Segoe UI", "verdana"; position: relative; } */
 +              .title { color: #228b22; font-size: 30pt; font-weight: 300; vertical-align:bottom; margin-bottom: 20px; font-family: "맑은 고딕", "Segoe UI", "verdana"; position: relative; }
 +              .errorExplanation { color: #000000; font-size: 12pt; font-family: "맑은 고딕", "Segoe UI", "verdana", "arial"; text-decoration: none; } 
 +              .taskSection { margin-top: 20px; margin-bottom: 40px; position: relative; } 
 +              .tasks { color: #000000; font-family: "맑은 고딕", "Segoe UI", "verdana"; font-weight:200; font-size: 12pt; padding-top: 5px; } 
 +              li { margin-top: 8px; } 
 +              .diagnoseButton { outline: none; font-size: 9pt; } 
 +              .webpageURL { direction:ltr;
 +              .hidden { display:none;
 +              /* a { color: #0066cc; font-family: "맑은 고딕", "Segoe UI", "verdana", "arial"; font-size: 11pt; text-decoration: none; } */ 
 +              a { color: #008000; font-family: "맑은 고딕", "Segoe UI", "verdana", "arial"; font-size: 11pt; text-decoration: none; } 
 +              a:hover { text-decoration: underline; } 
 +              .lineBottom { border-bottom: 1px solid; } 
 +              .lineTop { border-top: 1px solid; } 
 +              .r { text-align: right; } 
 +              .l { text-align: left; } 
 +          </style> 
 +      </head> 
 +   
 +      <body> 
 +          <div id="contentContainer" class ="mainContent"> 
 +              <div id="mainTitle" class="title">이 페이지를 표시할 수 없습니다.</div> 
 +              <div class="taskSection" id="taskSection"> 
 +                  <ul id="taskList" class="tasks"> 
 +                      <li id="task1">웹 주소 <span id="webpage" class="webpageURL"></span>이(가) 올바른지 확인하세요.</li> 
 +                      <li id="task2">검색 엔진으로 페이지를 찾아보세요.</li> 
 +                      <li id="task3">몇 분 후에 페이지를 새로 고치세요.</li> 
 +                      <li id="task4">TLS 및 SSL 프로토콜이 사용되고 있는지 확인하세요. 도구 > 인터넷 옵션 > 고급 > 설정 > 보안으로 이동하세요.</li> 
 +                  </ul> 
 +                  <ul id="cantDisplayTasks" class="tasks hidden"> 
 +                      <li id="task1-1">웹 주소가 올바른지 확인하세요.</li> 
 +                      <li id="task1-2">검색 엔진으로 페이지를 찾아보세요.</li> 
 +                      <li id="task1-3">몇 분 후에 페이지를 새로 고치세요.</li> 
 +                  </ul> 
 +                  <ul id="notConnectedTasks" class="tasks hidden"> 
 +                      <li id="task2-1">모든 네트워크 케이블이 연결되어 있는지 확인하세요.</li> 
 +                      <li id="task2-2">비행기 모드가 꺼져 있는지 확인하세요.</li> 
 +                      <li id="task2-3">무선 스위치가 켜져 있는지 확인하세요.</li> 
 +                      <li id="task2-4">모바일 광대역에 연결할 수 있는지 확인하세요.</li> 
 +                      <li id="task2-5">라우터를 다시 시작하세요.</li> 
 +                  </ul> 
 +              </div> 
 +              <div class="lineTop l"><a href="http://<%=request.getServerName()%>" title=" 페이지 이동">http://<%=request.getServerName()%></a></div> 
 +              <% response.setStatus(404); %> 
 +          </div> 
 +      <script type="text/javascript"> 
 +      try { document.getElementById("webpage").innerHTML = location.href; } catch(e) {} 
 +      </script> 
 +      </body> 
 +  </html> 
 </code> </code>
 ===== 로깅 ===== ===== 로깅 =====
줄 107: 줄 185:
 <code bash> <code bash>
 // /etc/logrotate.d 아래에 tomcat 파일 생성 // /etc/logrotate.d 아래에 tomcat 파일 생성
-$> vi /etc/logrotate.d/tomcat //파일명은 편하게 생성하되 무엇을 가르키는지 명확하게 작성 +$> cat /etc/logrotate.d/tomcat //파일명은 편하게 생성하되 무엇을 가르키는지 명확하게 작성
-// 내용 작성+
 /usr/local/tomcat/*log { // *log 또는 catalina.out 가능 /usr/local/tomcat/*log { // *log 또는 catalina.out 가능
     copytruncate     copytruncate
     daily     daily
-    rotate 30+    rotate 200
     compress     compress
     missingok     missingok
     notifempty     notifempty
     dateext     dateext
 +    dateformat .%Y-%m-%d
 } }
  
-copytruncate : 기존 파일을 백업해서 다른 파일로 이동하고 기존 파일은 지워버리는 옵션 +$> // 로그파일 순환 테스트 
-daily : 로그파일을 날짜별로 변환 +$> $logrotate -f /etc/logrotate.d/tomcat  
-compress : 지나간 로그파일들을 gzip으로 압축 +$> // 디버그 모드 
-dateext : 순환된 로그파일의 날짜확장자 +$> $logrotate -d /etc/logrotate.d/tomcat  
-missingok : 로그파일이 없더라도 오류를 발생시키지 않음 +
-rotate 30 : 로그 파일은 30개만큼 저장된 다음 제거되거나 메일로 보내짐 +
-notifempty : 파일의 내용이 없으면 새로운 로그 파일을 생성 안 +
- +
 </code> </code>
 +> copytruncate : 기존 파일을 백업해서 다른 파일로 이동하고 기존 파일은 지워버리는 옵션 
 +> daily : 로그파일을 날짜별로 변환 
 +> compress : 지나간 로그파일들을 gzip으로 압축 
 +> dateext : 순환된 로그파일의 날짜확장자 
 +> missingok : 로그파일이 없더라도 오류를 발생시키지 않음 
 +> rotate 30 : 로그 파일은 30개만큼 저장된 다음 제거되거나 메일로 보내짐 
 +> notifempty : 파일의 내용이 없으면 새로운 로그 파일을 생성 안함 
 +> dateformat .%Y-%m-%d
 === catalina.out 계속 커지는 문제 === === catalina.out 계속 커지는 문제 ===
- +[[https://share9.tistory.com/39|linux tomcat catalina.out 안나오게 하는 방법 / linux tomcat catalina.out 이 나오지 않는다 / linux tomcat catalina.out 용량이 너무 클때]]\\
- +
 [[https://mycup.tistory.com/216|Tomcat 로그 관리 (logrotate.d)]] \\ [[https://mycup.tistory.com/216|Tomcat 로그 관리 (logrotate.d)]] \\
 [[https://m.blog.naver.com/ncloud24/220942273629|logrotate.d 더 많은 옵션 정리]] \\ [[https://m.blog.naver.com/ncloud24/220942273629|logrotate.d 더 많은 옵션 정리]] \\
줄 206: 줄 286:
   * [[https://java2017.tistory.com/29|톰캣 캐시 사용 안하기]]   * [[https://java2017.tistory.com/29|톰캣 캐시 사용 안하기]]
   * [[wiki:was:tomcat:Tip:Tomcat 버전 정보 숨기기]]   * [[wiki:was:tomcat:Tip:Tomcat 버전 정보 숨기기]]
 +  * [[wiki:was:tomcat:Tip:Tomcat 보안]]
  
 ===== Troubleshooting ===== ===== Troubleshooting =====
줄 266: 줄 347:
  
   * [[wiki:was:tomcat: hot deploy]]   * [[wiki:was:tomcat: hot deploy]]
 +
 +... 캐시에 추가할 수 없습니다. 왜냐하면 만료된 캐시 ... 오류 처리
 +해결 방법 ( context.xml 내 캐시 추가 )
 +<code xml>
 +<?xml version="1.0" encoding="UTF-8"?>
 +
 +<Context>
 +    <WatchedResource>WEB-INF/web.xml</WatchedResource>
 +    <WatchedResource>WEB-INF/tomcat-web.xml</WatchedResource>
 +    <WatchedResource>${catalina.base}/conf/web.xml</WatchedResource>
 +
 +    <Resources chahingAllowed="true" cacheMaxSize="1000000"/>
 +
 +</Context>
 +</code>
 +[[https://joohoon.tistory.com/95|( TOMCAT ) 톰캣 캐시 부족 현상 간단 해결]]
 +
 ===== Ref ===== ===== Ref =====
   * [[http://tomcat.apache.org/whichversion.html|Apache Tomcat Versions]]   * [[http://tomcat.apache.org/whichversion.html|Apache Tomcat Versions]]
/volume1/web/dokuwiki/data/attic/wiki/was/tomcat.1647248163.txt.gz · 마지막으로 수정됨: 2022/03/14 17:56 저자 r_kimmk