1. 먼저 다운받은 톰캣파일의 압축을 풀고 나면 apache-tomcat-6.0.14 폴더가 생긴다.

이 폴더를 클릭하면 똑같은 apache-tomcat-6.0.14 폴더가 있는데 이 안에 실질적인

폴더와 파일은 다 있다.

그럼 그 실질적인 apache-tomcat-6.0.14 폴더를 c: root 에 복사하여 붙여 넣는다.

그리고,cmd 창을 연후 cd\apache-tomcat-6.0.14\bin 으로 들어가

startup 이란 명령을 실행 시킨다.

그러면 cmd 창에 (심각 :~~~~~~~ )이런 메세지가 뜰것이다. 그러면 정상인것이다.

그 다음 다음과 같이 시작 , 프로그램으로 들어가서 마지막 클릭된

Database Configuration Asistant를 실행 시킨다.

2. 다음 버튼 누른다.

3. 데이터베이스의 데이터베이스 옵션 구성을 클릭하고 다음 누른다.

4. 이름확인하고 다음

5. 체크박스가 enable 상태여야 정상이다 그림은 정상이다 . 여기서 사용자 정의를 누른다.

6. 다음과 같이 세팅하고 HTTP 포트8888 로 맞춘다.

7. 확인을 누르면 다음과 같이 종료창이 나온다. 이때 아니오 크릭



8. 잘 설치가 됐다면 다음과 같이 고양이 3마리가 뜰것이다.

9. 이제 window 메뉴 ==> Preference 창을 열어 다음과 같이 세팅한다

먼저 다운받은 version을 맞춰주고 브라우저 창을 열어 c:root에 붙인

C:\apache-tomcat-6.0.14 를 클릭해 경로를 지정한다.

밑에도 다음과 같이 지정해주고 적용 시킨다.

10. 이번엔 좌측 tomcat 중 클릭하여 jre형식이 맞나 확인한다.

11. 그다음 밑에 Manager 창을 클릭후 username 과 password 를 세팅한다.

13. 다음은 톰캣 설치 성공한 후 localhost로 접속하면 username password

기입하라는 창이 보이고 성공적으로 접속이 되면 이런 창이 뜨는 것을 볼 수 있을 것이다.

14. 다음은 모두 성공한 Tomcat 의 실행완료후 의 모습이다.

=============================================================================================

*** 다음은 설정시 포트번호를 바꾸고 싶을때 바꿀 수 있는 방법이다.***

먼저 C:\apache-tomcat-6.0.14\conf 의 폴더에서

server.xml 파일을 EditPlus로 연다.

그 다음 ctrl + F (찾기단축버튼) 로 현 포트번호 8080을 찾으면

다음과 같이 나오는데 여기서 바꿔주면 된다.

[출처] Tomcat 설치|작성자 rlaals6961




'Oracle' 카테고리의 다른 글

[펌] Pro*c참고  (0) 2009.06.30
간단한 Linux Pro*C 컴파일  (0) 2007.01.22
Select 시 Table 이름을 Dynamic 하게 이용하기  (0) 2007.01.22
Pro*C를 이용한 간단 Data Select  (0) 2007.01.22
Pro*c로 PL/SQL 실행하기  (0) 2007.01.22
, .

Tomcat 보안 개요

Security 2009. 3. 12. 14:39

1. Tomcat 컨테이너 구조

톰켓은 다음그림과 같이 중첩된 컨테이너 구조로 되어 있습니다. Server 라는 컨테이너가 가장 바깥쪽의 컨테이너 이고 그 안에 Service라는 컨테이너가 있으며톰켓은 디폴트로 Catalina Service 컨테이너를 정의하고 있습니다.

Catalina Service 컨테이너에는 다수의 Connector와 하나의 Engine이 정의됩니다. Connector는 외부의 HTTP/HTTPS/AJP 요청을 직접 받아들이는 컴포넌트입니다. 정의된 모든 Connector로부터 수신된 요청은 Engine으로 전달됩니다.

Engine 컨테이너에는 다수의 Host 컨테이너들과 Realm 그리고 Valve들로 구성됩니다.

Host 컨테이너에는 다수의 Context들과 Valve들로 구성됩니다. Valve는 요청 체인의 일부분을 구성하는 컴포넌트로 Engine 컨테이너 및 Host컨테이너에서 정의합니다.

요청 체인의 예를 들면 아마도 다음과 같은 구조일 것입니다.

ConnectoràEngineàValveàValve… àHostà ValveàValve…

àContextàServlet FilteràServlet







설정 파일 예:

Serverport는 서버를 shutdown 시킬 때 사용되는 포트입니다. 8005 포트로 소켓을 열고 “SHUTDOWN”이란 문자열을 전송하면 톰켓이 종료됩니다. , shutdown은 동일 시스템에서만 가능합니다.

<Server port="8005" shutdown="SHUTDOWN">

……

<Service name="Catalina">

……

<Connector port="80" ……/>

……

<Connector port="8443" …… scheme="https" clientAuth="false" sslProtocol="TLS" />

……

<Connector port="8009" …… protocol="AJP/1.3" />

……

<Engine name="Catalina" defaultHost="localhost">

<Valve className="org.apache.catalina.valves.RequestDumperValve"/>

<Realm className="org.apache.catalina.realm.MemoryRealm" />

<Host name="localhost" appBase="webapps" ……>

<Valve className="org.apache.catalina.authenticator.SingleSignOn" />

<Context path="/ROOT" … docBase="C:\webroot" />

<Context path="/abc" … docBase="C:\abc" />

</Host>

</Engine>

</ Service>

</Server>

2. Tomcat 인증 메커니즘

톰켓에서 제공하는 인증 방법은 다음과 같이 네 가지가 있습니다. BASIC DIGEST 인증은 브라우저가 보안이 설정된 영역(페이지)에 접근을 시도하면, 웹 서버는 클라이언트 인증을 요청합니다. 브라우저는 이에 대한 응답을 위하여 사용자에게 사용자 인증 정보 입력을 요청합니다. 브라우저가 입력 받은 인증을 위한 정보를 가지고 다시 페이지를 요청합니다. 인증이 성공적으로 수행되면 웹 페이지가 다운로드 됩니다.

- BASIC

- DIGEST

- Form

- HTTPS Client Certification

2.1 BASIC 인증

브라우저에서 다이얼로그로부터 입력 받은 ID/PWD base64로 인코드 하여 서버에 전달합니다. 암호화되지 않은 사용자 비밀번호가 그대로 전달되며 한번 로그인 후에 인증 정보가 브라우저의 Cache에 저장되어 있으므로 브라우저 종료 전에 로그아웃 방법 없습니다.

2.2 DIGEST 인증

브라우저에서 비밀번호의 digest(해쉬) 값을 전달합니다. 비밀번호가 전달되지 않으므로 BASIC 인증 보다 더 안전한 방법입니다. 하지만 톰켓에서는 서버에 비밀번호를 일반 텍스트 문자로 관리해야 합니다. 또한 BASIC 인증과 같이 브라우저 Cache 문제를 가지고 있습니다.

2.3 Form 인증

브라우저가 인증 프로세스에 직접적으로 관여하지 않습니다. 인증은 사용자가 작성한 Html From 페이지를 통하여 인증정보를 전달합니다. 다만 form action 속성 및 사용자 ID, 비밀 번호 입력 필드의 이름이 다음과 같은 규칙을 따르도록 작성하시면 됩니다.

j_security_check : <form> 태그의 action 속성값

j_username : 사용자 이름 입력 필드 태그의 name 속성

j_password : 비밀번호 입력 필드 태그의 name 속성

2.4 HTTPS Client Certification 인증

클라이언트 인증서를 이용하여 인증을 수행합니다.

3. Security Realm

웹 응용프로그램을 위한 Credential 저장소로 웹 어플리케이션 사용자 인증을 위하여 사용하는 사용자이름, 비밀번호 및 각 사용자와 관련된 역할(Role)리스트를 관리하는 데이터베이스입니다. RealmServlet 스팩에 정의된 표준 메커니즘이며, 표준 인터페이스이며 톰켓 5.0에는 다음과 같은 Credential이 구현되어 있습니다.

- File based, in-memory realm

- JDBC Realm

- JNDI-based Realm

- JAAS-based Realm

4. Configuration Authentication

보호되어야 하는 웹 페이지에 대한 접근 제한을 설정합니다. 설정은 WEB-INF 폴더에 있는 web.xml 파일에서 정의합니다.

다음은 웹 응용프로그램 전체에 대하여 user 라는 권한(Role)을 가진 사용자만 접근할 수 있도록 설정한 예 입니다. 사용자 인증을 위하여 사용한 방법은 FORM 인증 방법이고 “/login.jsp” 파일을 로그인 Form 페이지로 설정하고 있습니다. 여기서 realm-name Realm을 가리키는 이름이 아닙니다. 실제로 Realm과 관계가 업습니다. 다만 브라우저가 BASIC DIGEST 인증을 위하여 인증 창을 띄울 때 영역: ” 이라는 텍스트 문구에 보여지는 문자열입니다.

<web-app ...>

<security-constraint>

<web-resource-collection>

<web-resource-name>Entire Application</web-resource-name>

<url-pattern>/*</url-pattern>

</web-resource-collection>

<auth-constraint>

<role-name>user</role-name>

</auth-constraint>

</security-constraint>

<login-config>

<auth-method>FORM</auth-method>

<realm-name>Single Sign-on Example</realm-name>

<form-login-config>

<form-login-page>/login.jsp</form-login-page>

<form-error-page>/notAuthenticated.jsp</form-error-page>

</form-login-config>

</login-config>

5. Configuration Realm

Realmserver.xml 파일의 <Engine> 컨테이너 설정 내에서 정의하며 하나만 정의해야 합니다.

다음 예는 톰켓에서 제공하는 메모리기반 Realm을 설정한 것이며, 인증 관련 정보는 “$CATALINA_HOME/conf/tomcat-users.xml“ 파일에 설정합니다.

메모리기반 Realm의 단점은 수행 중에 변경할 수 없다는 것입니다. 예를 들어 어던 사용자의 권한을 변경하고자 한다면 xml파일을 편집하고 Tomcat을 다시 구동해야 합니다.

<Realm className="org.apache.catalina.realm.MemoryRealm" />

$CATALINA_HOME/conf/tomcat-users.xml :

<?xml version='1.0' encoding='utf-8'?>

<tomcat-users>

<role rolename="tomcat"/>

<role rolename="role1"/>

<role rolename="manager"/>

<role rolename="admin"/>

<user username="tomcat" password=" tomcat " roles="tomcat"/>

<user username="both" password=" tomcat " roles="tomcat,role1"/>

<user username="role1" password=" tomcat " roles="role1"/>

<user username="admin" password=" tomcat " roles="admin,manager"/>

</tomcat-users>

6. 사용자 인증정보 이용

접근제어가 필요한 페이지에 대하여 인증이 성공적으로 수행되면 Servlet JSP 페이지에서 HttpServletRequest 객체의 메소드를 이용하여 로그인한 사용자의 정보를 이용할 수 있습니다.

- public java.lang.String getRemoteUser()

로그인 시 사용한 사용자 로그인 ID를 조회합니다.

- public boolean isUserInRole(java.lang.Stringrole)

로그인한 사용자가 인자로 주어진 role에 해당하는 Role을 가지고 있는지 확인합니다.

- public java.security.Principal getUserPrincipal()

로그인한 사용자의 Principal을 조회합니다.

'Security' 카테고리의 다른 글

웹해킹 분석과 웹쉘 탐지 및 대응방법 2  (0) 2009.04.05
웹 해킹 서버 분석과 웹쉘 대응방법 1편  (0) 2009.04.05
centos5 geoip patch하기  (0) 2008.07.30
MySQL DB 보안(1)  (0) 2007.06.11
FreeBSD 보안 하드닝 Tip  (0) 2007.06.11
, .

이번에는 Tomcat의 설정파일 server.xml에 대해 알아보기로 한다.

■ server.xml에 의한 Tomcat의 기본 설정

$CATALINA_HOME/conf/server.xml은 Tomcat의 메인 설정 파일로 Tomcat 기동시에 참조 된다.

$CATALINA_HOME/conf/ 디렉토리에는 디폴트 server.xml 이외에 최소한의설정만으로 구성된

server-minimal.xml이 준비되어 있다. 새로 서버를 설정하고자 할 경우에는 server-minimal,xml의 이름을 변경하여 사용하면 편리하다.

■server.xml의 구조

Tomcat은 몇개의 구성요소로 이루어져 있으며, server.xml에서는 XML의 요소를 통해 구성요소를 정의하고있다. server.xml의 요소는 다음과 같이 트리구조를 갖고 있다.

<Server>

|

+---<Service>

|

+---<Connector>

|

+---<Engine>

|

+---<DefaultContext>

|

+---<Realm>

|

+---<Logger>

|

+---<Host>

|

+---<Context>

|

+---<Value>

|

+---<Realm>

|

+---<Logger>

상위의 속성은 자동적으로 하위의 요소에 계승된다. 예를 들어 <Host>의 구성요소 <Logger>의 속성은 아무것도 지정하지 않은 경우 <Engine>의 구성요소 <Logger>의 설정이 사용된다. 변경이 필요한 경우에는 <Host>의 구성요소 <Logger>에 별도의 설정을 함으로서 상위의 설정을 덮어 쓸수 있다.

1. <Server>요소

Tomcat 서버 구성요소의 정의 부분이다. 기본값은 <Server port="8005" shutdown="SHUTDOWN"> 로 되어 있으며, 포트 8005를 감시하고 shutdown 명령어를 접수하도록 설정되어 있다. 서버에서는 복수의 서비스를 관련 지울 수 있다.

2. <Service>요소

<Service> 구성요소를 정의하고 있다. <Service>는 뒤에 기술 할 <Engine>과 그것에 관련된 모든<Connector>를 그룹화 한 것이다. 기본값은<Service name="Catalina">로 되어 있다.

name 속성에서 Catalina 라고 하는 이름으로 서비스가 정의 되어 있고, 에러 로그 및 관리툴은 이 이름으로 식별합니다.하나의 서버에 복수의 서비스를 정의하는 경우, 다른 name 속성을 기입할 필요가 있다.

<Service>는 <Engine>과 하나 이상의 <Connector>를 관련짓는 것이 가능하다. <Service>와 <Engine>의 관계는 1:1 이다.

3. <Service>요소

<Engine>은 servlet 컨테이너의 인스턴스를 표시하며, <Connector>로부터 보내진 요구를 처리한다. 기본값은 <Engine name="Catalina" defaultHost="localhost">로 되어 있다.

name 속성은 <Engine>의 이름을 표시하며, 에러 로그 및 관리툴은 이 이름으로 <Engine>을 식별한다.

defaultHost 속성은 server.xml에 정의 되어 있지 않은 <Host>에 요구가 있을 경우 발송되는 가상호스트를 지정한다. <Engine>에는 하나 이상의 <Host>가 관련지어져 있다.

4. <Connector>요소

요구를 <Engine>에 건네 주는 역할을 하는것이 <Connector>다. <Service>는 하나 이상의 <Connector>를 갖을 필요가 있다.

사용자는 HTTP 또는 HTTPS/SSL등 여러가지 방법으로 <Engine>에 요구를 보낸다.이것들의 접속 요건의 처리는 <Connector>구성요소에 맡겨진다. 각 프로토콜에 대해 복수의 <Connector>를 갖는 것으로서어떤 접속에서 요구가 보내져와도 <Engine>이 동일하게 처리하고, 응답을 <Connector>에 맡길 수 있다.

Tomcat에는 몇개의 표준 <connector>가 탑재되어 있으며, 기본값은 HTTP 1.1 <Connector>와 AJP <Connector>가 준비되어 있다.

5. <DefaultContext>요소

모든 <Context>공통의 정의부. 기본적으로는 설정되어 있지 않다.

6. <Realm>요소

<Realm>는 보안을 위해 role명과 사용자명, 비밀번호의 맵핑을 외부의 데이타베이스로 부터 가져오는 장치다. Tomcat은 UserDataBase, Memory, JDBC, JNDI등 몇개의 <Realm>을 가지고 있다.

각 <Realm>의 차이는 어디로 부터 정보를 가져왔는가의 차이밖에 없다. 기본값으로는 UserDataBsase이외의 <Realm>은 주석 처리되어 무효로 되어 있다.

7. <Logger>요소

<Logger>는 로그파일의 작성 방법을 설정 한다. <Logger>는 server.xml 구조에서 보듯이 <Engine>레벨에서 설정할 수 있다.

<Logger className="org.apache.catalina.logger.FileLogger">
prefix="server-log." suffix=".txt"
timestamp="true"/>

위의 <예>에서는 Tomcat의 FileLogger 클래스를 사용, prefix, suffix, timestamp 속성에서 로그파일명을 정의하고 있다. 이 경우, 로그파일은 [server-log.2008_08_04.txt]과 같은 형식으로 $CATALINA_HOME/logs 디렉토리에 출력된다.

8. <Host>요소

<Engine>에 관련된 가상호스트를 정의 한다. 기본값으로는 다음과 같이 되어 있다.

<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">

가상 호스트명을 "localhost"로 설정하고 appBase 속성에서 어플리케이션이 탑재되어 있는 디렉토리를 "webapps"로 설정하고 있다. 별도로 unpackWARs 속성에서는 WAR파일을 전개하고나서 실행할 것인지의 여부를, autoDeploy 속성에서는 Tomcat이 기동중에웹어플리케이션을 배치한 경우에 자동으로 읽어 들일 것인지의 여부를 설정할 수 있다.

9. <Value>요소

<Value>는 Tomcat 특유의 기능이다. <Value>는 상위 구성요소로의 필터 처리를 담당한다. <Engine>, <Host>, <Context>와 관련짓는 것이 가능하다. 또, Tomcat에는 표준으로 다음과 같은 몇개의 <Value>가 준비되어 있다.

AccessLogValue

<Valve className="org.apache.catalina.valves.AccessLogValve"
directory="logs" prefix="server-log-" fileDateFormat="yyyy-MM-dd" suffix=".txt"/>

RemoteAccessValve

<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="127.0.0.1,192.168.0.1" />

SingleSignOnValue

<Valve className="org.apache.catalina.authenticator.SingleSignOn"/>

RequestDumpValue

<Valve className="org.apache.catalina.valves.RequestDumperValve"/>

AccessLogValue 의 <예>에서는 $CATALINA_HOME/logs 디렉토리에 server-log-2008-08-04.txt 의 형식으로 로그파일을 작성한다.

RemoteAccessValue는 접근을 IP주소 단위로 제한한다. 지정주소에서의 접근을 허가, 거부를 설정할 수 있다. <예>에서는 로컬 IP주소 192.168.0.1로 부터의 접근을 허가하고 있다. 또 RemoteHostValue를 사용하면 호스트 단위로 접근제한을 설정할 수 있다.

SingleSignOnValue는 요구와 응답의 헤더와 쿠키를 <Logger>로 설정한 로그파일이 작성된다.

10. <Context>요소

<Host>에는 웹어플리케이션의 복수개의 <Context>가 관련지어져 있다. <Context>요소에는 웹어플리케이션의 일련의 설정 프로퍼티가 들어간다. 웹어프리케이션 배치에서 소개 한대로 이 설정은 웹어플리케이션마다에 설정파일을 가질 수 있다.

Tomcat설정과 관련된 자세한 내용은 Tomcat 홈페이지에서 확인하시기 바랍니다.

, .

Apache Tomcat 설정

Web 2009. 3. 12. 14:32

(1) c:/Tomcat5.5/conf/server.xml 파일 열기

▼ (2) 98번째줄 disableUploadTimeout="true" 뒷부분에 URIEncoding="euc-kr" 추가해줄것




(3) 209번째줄
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"> 이 부분을
바로 위쪽에 복사 붙여 넣기 후 뒷부분에 </Host> 추가. name을 ip 주소로 변경

(4) 120번 라인에
<Connector port="8009" enableLookups="false" redirectPort="8443" protocol="AJP/1.3" /> 이 부분에
reloadable="true" 추가
<Connector port="8009" enableLookups="false" redirectPort="8443" protocol="AJP/1.3" reloadable="true"/>

(5) C:/Tomcat5.5/conf 폴더 아래에 209번째줄 name에 썼던 아이피 주소와 같은 이름의 폴더를 만들어 준다.


(6) 만든 폴더 안에 C:/Tomcat5.5/conf/Catalina/localhost/manager.xml를 복사하여 붙여넣고
파일 이름을 ROOT로 변경해준다.
파일 이름을 꼭대문자로 해줄 것

(7) ROOT.XML 파일을 열어서 주석을 모두 삭제. context 부분만 남겨둔 후 context를 아래와 같이 수정.
<Context path="" docBase="C:/Tomcat5.5/mysite" reloadable="true">
</Context>



(8) tomcat을 stop 했다가 다시 start 한다.

[출처] Apache Tomcat 설정|작성자 lbiryu

, .