커뮤니티 정보

제목 보안서버 APM셋팅 방법
등록자 admin 등록일 2007.05.16 14:39:21 접속 89733
AS4 서버및 CentOS4.4 에서 설치 테스트.

프로그램 다운
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[Apache] http://httpd.apache.org
[MySQL] http://www.mysql.org ftp://ftp.sayclub.co.kr/pub/mysql/Downloads/MySQL-4.0/
[PHP] http://kr.php.net
[zendoptimizer] http://www.zend.com http://downloads.zend.com/optimizer/
[Freetype] http://www.freetype.org
[Gd] http://www.libgd.org/Main_Page
[LibXml2] xmlsoft.org
[OpenSSL] www.openssl.org/
[ModSSL] www.modssl.org/
[IMAP] ftp://ftp.cac.washington.edu/imap/

준비한파일들
drwxr-xr-x 4 root root 4096 4월 26 17:33 ZendOptimizer-3.2.8-linux-glibc21-i386
-rw-r--r-- 1 suhan suhan 9731967 5월 14 13:04 ZendOptimizer-3.2.8-linux-glibc21-i386.tar.gz
drwxr-xr-x 8 root root 4096 5월 14 14:36 apache_1.3.37
-rw-r--r-- 1 suhan suhan 2665370 5월 14 13:04 apache_1.3.37.tar.gz
drwxr-xr-x 2 1000 1000 4096 5월 14 15:00 chkrootkit-0.47
-rw-r--r-- 1 root root 37791 5월 14 14:59 chkrootkit.tar.gz
-rw-r--r-- 1 root root 133591 5월 14 14:50 cronolog-1.6.2.tar.gz
drwxr-xr-x 9 root root 4096 5월 14 13:08 gd-2.0.34
-rw-r--r-- 1 suhan suhan 1273059 5월 14 13:04 gd-2.0.34.tar.gz
drwxr-xr-x 10 root root 4096 5월 14 13:16 mod_ssl-2.8.28-1.3.37
-rw-r--r-- 1 suhan suhan 820417 5월 14 13:04 mod_ssl-2.8.28-1.3.37.tar.gz
drwxr-xr-x 22 root root 4096 5월 14 13:12 openssl-0.9.8e
-rw-r--r-- 1 suhan suhan 3341665 5월 14 13:04 openssl-0.9.8e.tar.gz
drwxr-xr-x 18 1002 1002 4096 5월 14 14:31 php-5.2.2
-rw-r--r-- 1 suhan suhan 9201988 5월 14 13:04 php-5.2.2.tar.gz
drwxr-xr-x 3 root root 4096 5월 14 14:50 rkhunter
-rw-r--r-- 1 root root 126314 5월 14 14:50 rkhunter-1.2.8.tar.gz
-rw-r--r-- 1 root root 252664 5월 14 14:50 webalizer-2.01-10-src.tar.bz2

사전작업
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
======= Gd설치 =======
./configure --prefix=/usr/local/gd
make;make install

====== LibXml2 설치 (필요시에만) =====
./configure
make ;make install


====== openssl 설치 =====
#tar xvzf openssl-0.9.8.tar.gz
#cd openssl-0.9.8
#./config
#make ; make install


make install 시 /usr/local/ssl위치에 설치된다.


====== mod_ssl 설치 =====
mod_ssl이 컴파일 될 때 Apache 소스 코드 트리 내부로 컴파일되어야 한다.
따라서 Apache 코드에 대한 경로를 확인하고 이 경로를 Apache 옵션과 함께 --with-apache에 대한 값으로 사용한다.

#tar xvzf mod_ssl-.2.8.23-1.3.37.tar.gz
#cd mod_ssl-.2.8.23-1.3.37
#./configure --with-apache=/usr/local/src/apache_1.3.37 --with-ssl=/usr/local/ssl



1> MySql 설치
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
# /usr/local/ 디렉에 Mysql 을 푼다.
# tar zxvf mysql-standard-4.0.27-pc-linux-gnu-i686-glibc23.tar.gz
# adduser mysql ==>mysql 계정필수
# ln -s mysql-standard-4.0.27-pc-linux-gnu-i686-glibc23 mysql
# cd mysql
# scripts/mysql_install_db --user=mysql
# chown -R root .
# chown -R mysql data
# chgrp -R mysql .
# /usr/local/mysql/bin/safe_mysqld &


2> 아파치 가설치.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
apache1.3.37/src/include/httpd.h 파일에 리눅스의 경우 HARD_SERVER_LIMIT 값이 256으로 기본 설정되어 있으며,
이 값은 서버가 수용할 수 있는 최대 접속을 의미한다.
이 값을 1280으로 설정한다.

# cd /usr/local/src 소스디렉토리로 다시 이동

[root@wow src]# tar zxvf apache_1.3.37.tar.gz
[root@wow src]# cd apache_1.3.37
[root@wow apache_1.3.37]# ./configure --prefix=/usr/local/apache


3> PHP설치.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
# cd /usr/local/src/php-5.2.2
기본옵션
#./configure --with-mysql=/usr/local/mysql --with-apache=/usr/local/src/apache_1.3.37
--with-charset=euc_kr --with-gd=/usr/local/gd
--with-language=korean --with-config-file-path=/usr/local/apache/conf --enable-shmop
--with-track-debug --with-zlib --enable-track-vars --enable-calendar
--prefix=/usr/local/php --enable-ftp --enable-sockets
--enable-mailparse --enable-magic-quotes --enable-mbstring
--with-zlib-dir=/usr/local/zlib --disable-debug --enable-track-vars=yes
--with-xml --enable-sysvsem --enable-sysvshm
--with-zlib-dir=/usr/lib --with-iconv --with-dom
--with-jpeg-dir=/usr/lib --with-png-dir=/usr/lib
--with-freetype-dir=/usr/include/freetype2/freetype



# make
# make test (생략가능)
# make install

libphp4.a 카피하기
[root@wow php-5.2.2]# cp /usr/local/src/apache_1.3.37/src/modules/php5/libmodphp5.a /usr/local/src/apache_1.3.37/src/modules/php5/libphp5.a



4> 아파치 본설치
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
# cd /usr/local/src/apache_1.3.37

# SSL_BASE=/usr/local/src/openssl-0.9.8e
./configure --prefix=/usr/local/apache
--activate-module=src/modules/php5/libphp5.a
--enable-rule=SHARED_CORE
--enable-module=ssl
--enable-shared=ssl

# make
# make certificate
# make install


인증서 설치후엔 # apachectl startssl 명령 이용구동



[root@wow apache_1.3.26]# vi /usr/local/apache/conf/httpd.conf

AddType 을 검색해서 AddType application/x-tar .tgz 를 찾아 그아랫줄에 아래 두줄을 추가

AddType application/x-httpd-php .php .html .htm .inc
AddType application/x-httpd-php-source .phps

@php에서 사용할 확장자를 정의하는 곳입니다.

기본확장자추가 ===

DirectoryIndex index.html index.htm index.php



SetEnvIfNoCase Request_URI ".(gif)|(jpg)|(js)|(css)|(png)|(swf)$" img
CustomLog "|/usr/local/sbin/cronolog /home/ftpbackup/logs/%Y/%m/%d_access_log" common env=!img

@cronolog 로 로그파일을 줄이는구문
설치는 # ./configure ; make ; make install 한다

ErrorLog /dev/null
@에러로그를 줄인다.


php.ini 파일을 만든다.
[root@wow apache_1.3.26]# cp ../php-5.1.4/php.ini-dist /usr/local/apache/conf/php.ini

allow_url_fopen = Off 반드시 수정:



5> ZendOptimizer 설치
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

# cd ZendOptimizer-2.5.7-linux-glibc21-i386
# ./install.sh

설명에 따라 셋팅설정.

Zend php.ini 설치 디렉토리를

/usr/local/apache/conf/ 로 지정하세요..
php.ini는 적으면 안돼여...


6> http 환경설정... 웹튜닝..
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
아파치 튜닝법
KeepAliveTimeout
===================
클라이언트가 서버로 접속을 했을 경우 하나의 웹 서버 프로세스가 해당 웹 페이지의
여러 개체들의 전송을 새로운 프로세스를 생성하지 않고 지속적으로 접속을 유지하며
담당하며, 이 클라이언트의 요청에 대한 타임아웃에 대한 값이다. 기본 15초에서
30초로 증가.

MaxKeepAliveRequests
========================
웹 서버 프로세스가 지속적으로 접속을 유지하면서 처리할 수 있는 요청 개수이다.
100으로 설정되어 있으며, 10000으로 증가.

StartServer, Min/MaxSpareServer
=================================
기본 설정은 5, 5, 10정도이며, 웹 서버가 Standalone 방식일 경우 새로운 접속
요청을 받으면 기존의 Spare Child Process를 포크하여 새로운 Child Process를
만들어내므로 기본적으로 Spare Process가 많을수록 폭주에 빨리 대처할 수 있다.
StartServer 20, MinSpareServer 20, MaxSpareServer 40으로 증가.

MaxRequestsPerChild
========================
웹 서버 프로세스가 일정 횟수의 클라이언트 요청을 처리하고 종료되는 수치이며,
1000으로 증가.

MaxClients
===============
동시에 실행될 수 있는 최대 프로세스 수를 제한하는 것이며, 기본 256으로 설정되어
있다. 이를 1024까지 증가.

로그파일 생성
=================
이용자가 접속할 때마다 기록되는 access_log 파일의 경우 한번 접속당 약 85바이트가
증가하며, 접속량이 많을 경우 이 파일의 크기는 실제로 엄청나다. 이럴 경우
접속때마다 로그파일을 액세스하는데 상당한 시간과 부하가 걸리므로 로그 파일을
일정시간마다 초기화하여 항상 경량화 시켜 줄 필요가 있다. 아파치에서 제공하는
rotatelog를 이용.

7> 추가 셋팅
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
root@how-web webalizer]# ./configure --with-lang=korean --with-gdlib=/usr/local/gd/lib --with-gd=/usr/local/gd/include
~~~ ZZZ
~~~ZZZZ
[root@how-web src]# make
~~~ZZZ
[root@how-web src]# make install
~~~ZZZ
/etc/profile 에
export LD_LIBRARY_PATH=/usr/local/gd/lib:LD_LIBRARY_PATH
를 추가해주면 됩니다.



[root@www2 bin]# cat webalizer.sh
#!/bin/sh
dyear=`date +%Y`
dmon=`date +%m`
echo $dyear/${dmon}_eng_access
webalizer -p -n www2.on-english.com -o /usr/local/apache/htdocs/weblog /backup/logs/${dyear}/${dmon}_eng_access

웹얼라이즈+크론로그 연동 되게 할땐. .이렇게하세요..


CronoLog 설치
1> 다운 받는다
http://www.cronolog.org/download/index.html

2> 다운 받은걸 /usr/loal/src/에 푼다

3> # ./configure ; make ; make install 한다

4> httpd.conf 파일 연다
SetEnvIfNoCase Request_URI ".(gif)|(jpg)|(js)|(css)|(png)$" img
CustomLog "|/usr/local/sbin/cronolog /backup/logs/%Y/%m_access_log" common env=!img

두줄을 추가한다. 윗줄은 그림 이미지 로그등을 줄이는거
아랫줄에서 bakcup/logs 의 로그 파일 위치 설정은 알어서 하고
%Y/%m/%d
%Y/%m_%d 등 디렉토리 구조를 어떻게 생기게 할지 결정해서 파일명을 정한다.

%Y/%m_access_log 를 권장 (년도별 디렉토리가 생김)

5># /usr/local/apache/bin/apachectl restart 데몬 재시작
(# apachectl configtest 함해주는게 좋다.)





8> 보안셋팅
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
http://www.chkrootkit.org http://www.chkrootkit.org/download/
# make sense <= 설치

rkhunter 도 설치
iptable 셋팅 등등..



8> https 셋팅
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
인증서 받은 파일은
apache/ssl/cert.pem
apache/ssl/key.perm 으로 카피한후에

httpd.conf 에서
SSLCertificateFile
SSLCertificateKeyFile 에서 경로를 지정해주고 # apachectl startssl 로 데몬을 띠운다.
... 자료없음 ...