Linux WEB

보안 서버 구축 - TOMCAT

2008.07.08 22:23

호스트웨이 조회 수:25785

본 문서는 Linux 에서 JAVA 를 사용할 수 있도록 Apache, Tomcat 을 연동하고 SSL Tomcat 에 적용하기 위한 목적으로 작성되었습니다.

 

 

 

테스트 시스템 정보   

Cent OS 5   kernel 2.6.24.2   httpd-2.2.2   php-5.1.6   mysql-5.0.22  

jakarta-tomcat-5.0.28   jdk-1_5_0_15-linux-i586

 

 

 

◈ 보안 서버 구축

 

 

1. MYSQL                                                      

 

Mysql RPM pakage 가 설치되어 있는 경우 해당 패키지를 삭제해야 하며,  mysql 계정은 미리 생성해 놓아야 한다.

 

1-1 configuration & make & make install

[root@hostway mysql-5.0.22]# ./configure --prefix=/usr/local/mysql --with-charset=euckr

[root@hostway mysql-5.0.22]# make

[root@hostway mysql-5.0.22]# make install

 

1-2 mysql 데이터 디렉토리 생성 & 권한 설정

[root@hostway mysql-5.0.22]# /usr/local/mysql/bin/mysql_install_db

[root@hostway mysql]# chown -R mysql.mysql var/

 

1-3 데이터베이스 시작

[root@hostway mysql-5.0.22]# /usr/local/mysql/bin/mysqld_safe &

 

 

 

2. APACHE                                                

   

2-1 아파치 소스 파일 수정

[root@hostway httpd-2.2.2]# pwd

/usr/local/src/httpd-2.2.2

[root@hostway httpd-2.2.2]# vi server/mpm/prefork/prefork.c

#define DEFAULT_SERVER_LIMIT 256 --à 256 에서 2048 로 수정

 

[root@hostway httpd-2.2.2]# vi server/mpm/worker/worker.c

#define DEFAULT_SERVER_LIMIT 16 --à 16 에서 256 으로 수정

 

 

2-2 configuration & make & make install

 

 

 

*참고 : linux 버전에 따라 openssl 관련 에러가 발생할 수 있으며, mod_ssl 2.1.6 OpenSSL 0.8.1b 0.9.1c 버전 사이에서만 동작한다.

 

 

 

 

 

 

2-3 apache 파라미터 수정

[root@hostway ~]# vi /usr/local/apache2/conf/extra/httpd-mpm.conf

<IfModule mpm_prefork_module>

    StartServers            5

    MinSpareServers        5

    MaxSpareServers      10

    MaxClients           150  --à 150 에서 1024 or 2048 로 수정

    MaxRequestsPerChild   0

</IfModule>

 

2-4 apache start

[root@hostway httpd-2.2.2]# /usr/local/apache2/bin/apachectl start

 

 

3. PHP & Zend Optimizer                                                                                                      

 

3-1 configuration & make & make install

[root@hostway php-5.1.6]# ./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql --with-apxs2=/usr/local/apache2/bin/apxs --enable-sysvshm=yes --enable-sysvsem=yes --enable-debug=no --enable-track-vars=yes --enable-url-fopen-wrapper=yes --with-ttf --with-png-dir=/usr --with-zlib-dir --with-jpeg-dir=/usr --with-gdbm=/usr --enable-ftp --with-tiff-dir=/usr --enable-memory-limit --enable-mbstring --with-expat-dir=/usr --enable-sockets --enable-wddx --with-freetype-dir=/usr --enable-bcmath --enable-mbstr-enc-trans --enable-mbregex --enable-exif --with-gd --enable-gd-native-ttf --enable-gd-imgstrttf --enable-calendar --with-openssl=/usr

[root@hostway php-5.1.6]# make && make install

 

3-2 php.ini 복사

[root@hostway php-5.1.6]# cp -a php.ini-recommended /usr/local/php/lib/php.ini

 

 

 

 

 

3-3 httpd.conf 수정

[root@hostway ~]# vi /usr/local/apache2/conf/httpd.conf

AddType application/x-httpd-php .php .htm .html

AddType application/s-httpd-php-source .phps

DirectoryIndex index.html index.htm index.php index.jsp

 

3-4 Zend 설치

[root@hostway src]# cd ZendOptimizer-2.6.2-linux-glibc21-i386

[root@hostway ZendOptimizer-2.6.2-linux-glibc21-i386]# sh install.sh

 

 

*참고 : phpinfo 함수를 실행하여 PHP 페이지가 정상적으로 로딩되는지 확인한 후 다음 작업을 진행한다.


 

4. JAVA                                                                                                                           

 

4-1 jdk-1_5_0_15-linux-i586.bin 다운로드 후 실행하고 라이센스 사용에 동의한다.

[root@hostway src]# sh jdk-1_5_0_15-linux-i586.bin

 

4-2 jdk1.5.0_15 디렉토리가 생성되면 java 로 디렉토리 이름과 위치를 변경한다.

[root@hostway src]# mv jdk1.5.0_15 /usr/local/java

 

 

5. TOMCAT                                                              

 

 

5-1 소스의 압축을 풀고 디렉토리 이름을 변경한다.

[root@hostway src]# tar zxvf jakarta-tomcat-5.0.30.tar.gz

[root@hostway src]# mv jakarta-tomcat-5.0.30 /usr/local/tomcat

 

 

5-2 vi /etc/profile 에 자바 환경변수 추가 적용

[root@hostway src]# vi /etc/profile

JAVA_HOME=/usr/local/java

CATALINA_HOME=/usr/local/tomcat

PATH=$PATH:$JAVA_HOME/bin:$CATALINA_HOME/bin

export JAVA_HOME CATALINA_HOME

[root@hostway src]# source /etc/profile

 

 

5-3 tomcat start & 포트 확인

[root@hostway src]# cd /usr/local/tomcat/bin/

[root@hostway bin]# sh startup.sh

Using CATALINA_BASE:   /usr/local/tomcat

Using CATALINA_HOME:   /usr/local/tomcat

Using CATALINA_TMPDIR: /usr/local/tomcat/temp

Using JAVA_HOME:       /usr/local/java

 

[root@hostway bin]# netstat -atn |grep 8080

tcp        0      0 0.0.0.0:8080            0.0.0.0:*               LISTEN

  

 

5-4 8080 포트에 접속하여 tomcat 기본 페이지가 로딩되는지 확인

6. Tomcat-connector                                                                                                 

 

6-1 Tomcat의 경우 기본적으로 8080포트를 사용한다. 이것을 80포트와 연동 시키기 위해서 tomcat-connector 를 설치 한다.

 

[root@hostway src]# tar zxvf tomcat-connectors-1.2.26-src.tar.gz

[root@hostway src]# cd tomcat-connectors-1.2.26-src/native

[root@localhost native]# sh buildconf.sh (not required unless you are a developer)

[root@hostway native]# ./configure --with-apxs=/usr/local/apache2/bin/apxs

[root@hostway native]# make && make install

 

 

6-2 mod_jk.so 모듈이 생성되었는지 확인

[root@hostway apache2]# ls -al /usr/local/apache2/modules/mod_jk.so

-rwxr-xr-x 1 root  root  736022 Mar 14 11:01/usr/local/apache2/modules/mod_jk.so

 

 

6-3 아파치 설정 파일에 모듈 추가

LoadModule jk_module        modules/mod_jk.so

 

 

6-4 httpd.conf 수정

DocumentRoot "/usr/local/tomcat/webapps/ROOT"

<Directory "/usr/local/tomcat/webapps/ROOT">

 

6-5 httpd.conf 에 톰캣 설정 파일 경로 지정

JkWorkersFile /usr/local/tomcat/conf/workers.properties

JkLogFile /usr/local/tomcat/logs/mod_jk.log

JkLogLevel info

JkMount /*.jsp ajp13

JkMount /webapps/* ajp13

JkMount /ROOT/* ajp13

 

 

6-6 workers.properties 을 생성하고 다음 내용을 입력한다.

*참고 : 5.5 버전은 workers.properties 파일이 존재하며 톰캣, 자바 경로만 수정하면 됨

[root@hostway conf]# cd /usr/local/tomcat/conf/

[root@hostway conf]# vi workers.properties

# Start setup file

#

workers.tomcat_home=/usr/local/tomcat

workers.java_home=/usr/local/java

ps=/

worker.list=ajp12, ajp13

 

# Definition for Ajp13 worker

#

worker.ajp13.port=8009

worker.ajp13.host=localhost

worker.ajp13.type=ajp13

#

# End setup file

 

 

 

 

 

6-7 server.xml 편집

[root@hostway htdocs]# vi /usr/local/tomcat/conf/server.xml

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

       unpackWARs="true" autoDeploy="true"

       xmlValidation="false" xmlNamespaceAware="false">

위 부분을 찾아서 아래 내용 추가

      <Context docBase="/usr/local/tomcat/webapps/ROOT" path=""/>

 

6-8 /usr/local/tomcat/webapps/ROOT aaa.jsp 테스트 파일 생성

[root@hostway htdocs]# vi /usr/local/tomcat/webapps/ROOT/aaa.jsp

<%

out.println("Hello, JSP");

%>

 

80 번 포트로 웹페이지에 접속하여 JSP 파일을 잘 처리하는지 확인한다.

 

 

7. JDBC                                                            

 

 

7-1 압축을 풀고 디렉토리 변경

[root@hostway src]# tar zxvf mysql-connector-java-5.1.6.tar.gz

[root@hostway src]# mv mysql-connector-java-5.1.6 /usr/local/mysql-jdbc

 

 

7-2 jdbc 환경 설정

[root@hostway src]# vi /etc/profile

export CLASSPATH=$CLASSPATH:/usr/local/mysql-jdbc/mysql-connector-java-5.1.6-bin.jar

[root@hostway src]# sourece /etc/profile

 

 

 

 

 

 

 

 

7-3 자바 코드로 드라이버 로딩 테스트

[root@hostway root]# vi d.java

import java.sql.*;

 

public class d{

        public static void main(String [] args){

 

                String driver = "org.gjt.mm.mysql.Driver";

                String user = "root";

                String pass = "";

                String dbURL = "jdbc:mysql://localhost/mysql";

 

                Connection conn = null;

 

                try {

                        Class.forName(driver);

                        conn = DriverManager.getConnection(dbURL, user, pass);

 

                        System.out.println("Driver found! Connection Good!");

                }catch(ClassNotFoundException cne){

 

                        System.out.println("jdbc driver not founded!");

                }catch(SQLException se){

 

                        System.out.println("sql error: "+se);

 

                }

 

        }

}

 

7-4 컴파일

[root@hostway ~]# javac d.java

 

7-5 connection test

[root@hostway root]# java d

Driver found! Connection Good!

 

 

 

8. SSL                                                                   

 

아파치와 톰캣은 서로 다른 인증서를 사용한다. 인증서 발급 신청서에 아파치에 적용할 것인지 톰캣에 적용할 것인지를 명시해야 한다.

 

 

8-1 인증키 생성

[root@hostway conf]# keytool -genkey -alias tomcat -keyalg RSA -keystore  kaka.key

 

 

8-2 kaka.key 를 이용하여 CSR 코드 생성

[root@hostway conf]# keytool -certreq -keyalg RSA -alias tomcat -file kaka.csr -keystore /usr/local/tomcat/conf/kaka.key

 

 

8-3 체인 인증서 를 keystore에 저장

keytool -import -alias root -keystore /usr/local/tomcat/conf/kaka.key -trustcacerts -file /usr/local/tomcat/conf/UTNAddTrustServerCA.crt

 

 

8-4 실제 웹 서버 인증서를 keystore에 저장

keytool -import -alias tomcat -keystore /usr/local/tomcat/conf/kaka.key -trustcacerts -file /usr/local/tomcat/conf/kaka.crt

 

 

 

  

8-5 server.xml configuration

[root@hostway ~]# vi /usr/local/tomcat/conf/server.xml

<Connector port="443"

               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"

               enableLookups="false" disableUploadTimeout="true"

               acceptCount="100" debug="0" scheme="https" secure="true"

               clientAuth="false" sslProtocol="TLS"

               keystoreFile="/usr/local/tomcat/conf/kaka.key"

               keystorePass="12345"/>

 

port 443 으로 변경하고 keystore 의 경로를 적는다.

keystorePass csr 생성 시 입력했던 암호를 넣어준다.

 

 

8-6 tomcat stop & start & apache restart

[root@hostway ~]# shutdown.sh

[root@hostway ~]# startup.sh

[root@hostway ~]# /usr/local/apache2/bin/apachectl restart

 

 

8-7 인증서 확인

 

인터넷 익스플로러 7에서는 상단에 자물쇠 마크가 있다. 자물쇠 마크가 올바르게 표시되면 암호화 통신이 되고 있음을

 의미한다. 이것을 클릭하면 인증서 정보를 볼 수 있다.

 

 

 

번호 제목 글쓴이 날짜 조회 수
23 PHP 컴파일시 에러 메세지가 나오는 경우 조치방법 호스트웨이 2012.12.14 3118
22 PHP 컴파일시 에러 메세지가 나오는 경우 조치방법-2 호스트웨이 2012.12.20 537
21 아파치 특정폴더에 암호걸기 호스트웨이 2012.12.28 1627
20 64bit 에서 php 컴파일시 에러 메세지 발생 시 대처방법-3 호스트웨이 2012.12.28 2310
19 apache 쓸모없는 로그 남기지 않는 방법. 호스트웨이 2012.12.28 866
18 apache 가상호스트(virtualhost) 사용하기 호스트웨이 2013.06.03 10794
17 Apache event MPM, Prefork MPM, Worker MPM 방식의 차이점 및 설치 시 설정 방법 호스트웨이 2014.07.20 14872
16 mod_evasive를 이용한 웹 DDoS 방어 호스트웨이 2014.08.19 4994
15 Apache-Tomcat Multi Instance 설정 file 호스트웨이 2015.05.28 3404
14 Apache 설치 후 WEB 403 Forbidden 에러 호스트웨이 2015.09.08 7997
13 WEB에 특정 IP접근 차단 호스트웨이 2015.09.10 1753
12 외부 링크 도용을 막기 위한 아파치 설정 호스트웨이 2015.09.11 2103
11 httpd.pid 파일 오류 메시지 (20014) 호스트웨이 2015.09.12 2513
10 Apache 동시접속자 수 알아내기 호스트웨이 2015.09.13 2890
9 Linux LVS 사용하기 호스트웨이 2015.09.16 3191
8 Apache Log 관리 방법 (Logrotate) 호스트웨이 2015.09.17 2871
7 웹부하 테스트 - httperf 호스트웨이 2015.09.18 1769
6 Alternative PHP Cache 설치 & 설정 호스트웨이 2015.09.18 713
5 apache - mod_url 설치 호스트웨이 2015.09.18 2630
4 cronlog 설정 호스트웨이 2015.09.18 1870