양쪽 이전 판
이전 판
다음 판
|
이전 판
|
wiki:was:tomcat [2022/03/14 18:13] 127.0.0.1 바깥 편집 |
wiki:was:tomcat [2023/07/06 16:16] (현재) r_kimmk |
| 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]] |
body { background-repeat: repeat-x; background-color: white; font-family: "맑은 고딕", "Segoe UI", "verdana", "arial"; margin: 0em; color: #575757; } | 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 ; } | .mainContent { margin-top:80px; width: 700px; margin-left: 120px ; margin-right: auto ; } |
/* [[https.title { color: #2778ec; font-size: 30pt; font-weight: 300; vertical-align:bottom; margin-bottom: 20px; font-family: "맑은 고딕", "Segoe UI", "verdana"; position: relative; } */ | /* 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; } | .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; } | .errorExplanation { color: #000000; font-size: 12pt; font-family: "맑은 고딕", "Segoe UI", "verdana", "arial"; text-decoration: none; } |
.webpageURL { direction:ltr; } | .webpageURL { direction:ltr; } |
.hidden { display:none; } | .hidden { display:none; } |
/developer* a { color: #0066cc; font-family: "맑은 고딕", "Segoe UI", "verdana", "arial"; font-size: 11pt; text-decoration: 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 { color: #008000; font-family: "맑은 고딕", "Segoe UI", "verdana", "arial"; font-size: 11pt; text-decoration: none; } |
a:hover { text-decoration: underline; } | a:hover { text-decoration: underline; } |
.mozillalineBottom { border-bottom: 1px solid; } | .lineBottom { border-bottom: 1px solid; } |
.orglineTop { border-top: 1px solid; } | .lineTop { border-top: 1px solid; } |
.r { text-align: right; } | .r { text-align: right; } |
.l { text-align: left; } | .l { text-align: left; } |
</kostyle> | </style> |
</head> | </head> |
| |
<div id="contentContainer" class ="mainContent"> | <div id="contentContainer" class ="mainContent"> |
<div id="mainTitle" class="title">이 페이지를 표시할 수 없습니다.</div> | <div id="mainTitle" class="title">이 페이지를 표시할 수 없습니다.</div> |
<div class="taskSection" id="taskSespan>이(가) 올바른지 확인하세요.</Status|HTTP 상태 코드 li> | <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="task2">검색 엔진으로 페이지를 찾아보세요.</li> |
<li id="task3">몇 분 후에 페이지를 새로 고치세요.</li> | <li id="task3">몇 분 후에 페이지를 새로 고치세요.</li> |
<li id="task4">TLS 및 SSL 프로토콜이 사용되고 있는지 확인하세요. 도구 > 인터넷 옵션 > 고급 > 설정 리]]> 보안으로 이동하세요.</li> | <li id="task4">TLS 및 SSL 프로토콜이 사용되고 있는지 확인하세요. 도구 > 인터넷 옵션 > 고급 > 설정 > 보안으로 이동하세요.</li> |
</ul> | </ul> |
<ul id="cantDisplayTasks" class="tasks hidden"> | <ul id="cantDisplayTasks" class="tasks hidden"> |
</body> | </body> |
</html> | </html> |
| </code> |
</code> | |
===== 로깅 ===== | ===== 로깅 ===== |
톰캣 로그 관리 절차 | 톰캣 로그 관리 절차 |
<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 더 많은 옵션 정리]] \\ |
* [[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 ===== |
| |
* [[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]] |