강좌
클라우드/리눅스에 관한 강좌입니다.
리눅스 분류

리눅스서버 어플리케이션 설치 및 운영 1

작성자 정보

  • 웹관리자 작성
  • 작성일

컨텐츠 정보

본문

리눅스서버 어플리케이션 설치 및 운영 1


작성자 : (주)수퍼유저코리아, http://www.superuser.co.kr 서버팀


■ 아파치(Apache)편

top



아파치 웹 서버 튜닝

설치하기전에 (configure전에...)

- apache/src/include/httpd.h:
HARD_SERVER_LIMIT 256 -> 1280

- apache/conf/httpd.conf:
MaxKeepAliveRequests 100 -> 10000
KeepAliveTimeout 15 -> 30
MinSpareServers 5 -> 20
MaxSpareServers 10 -> 40
StartServers 5 -> 20
MaxClients 256 -> 1024

# httpd.conf 에 다음과 같은 부분을 수정/추가 한다.

DirectoryIndex index.html index.htm index.php index.php3 index.cgi index.jsp

AddType application/x-tar .tgz
AddType application/x-httpd-php .php4 .php3 .php .htm .html .phtml .ph .inc
AddType application/x-httpd-php-source .phps


###. 아파치 cgi 실행옵션제거

Options 부분에서 ExecCGI 제거
AddHandler cgi-script .cgi 주석제거



###. httpd.conf파일을 이용하여 기본적인 아파치웹서버보안을 설정한다.

- Options 지시자중 Indexes를 제거한다.

- Options 지시자중 FollowSymLinks를 제거한다.
: 심블릭링크파일의 설정을 허용하지 않는다.

예)/home/sspark09/www/linkfile 이라는 파일이 ln -s /home/sspark/09/www/linkfile /etc/passwd라는 링크파일일 경우에 웹에서 linkfile을 로딩했을 경우에 /etc/passwd의 파일내용을 볼 수 있다.
SymFollowLinks라는 지시자가 없을 경우에는 이런 링크파일의 사용을 웹에서는 허용하지 않는다.

- Options 지시자중 IncludesNoExec옵션을 추가한다.
이는 SSI의실행 태그중 exec나 cmd를 실행하지 못하게 한다.

- CGI는 특정 디렉토리에서만 실행가능하도록 설정한다.
게시판등에서 cgi실행파일을 웹서버에 올려두고서 이를 실행하게 되면 시스템의 정보가 쉽게 유출이 될 수 있다.
이를 막기 위하여 다음 예와 같은 설정으로 특정 디렉토리에서만 cgi가 실행가능하도록 한다.

ScriptAlias /cgi-bin/ "//usr/local/apache/cgi-bin/"

- ServerTokens는 Apache서버에 접속했을 경우에 응답메시지의 헤더에 웹서버 버전, 설치된 응용프로그램등과 같은 정보를 전달한다. 이 정보들은 공격자들에게는 웹서버의 버전정보등을 유출함으로서 서버해킹을 용이하게 하는 문제를 야기할 수 있다. ServerTokens Full 이라고 되어 있다면 제거하고 ServerTokens Prod로 추가또는 수정한다. 기본적으로 ServerTokens키워드는 Apache 1.3이상에서 사용가능하며 일반적으로는 httpd.conf에 설정이 되어있지않다. 설정되어 있지 않을 경우에는 Full의 적용을 받게 되므로 전달가능한 모든 정보를 전달한다. 이를 ServerTokens Prod를 추가또는 수정함으로서 정보유출을 막을 수 있다.

- 웹서버 구동중에 문제나 에러발생시(401, 403, 404등)에 보여줄 에러페이지를 redirect하여 원하는 페이지를 보여줄 수 있도록 한다. (광고나 홍보들을 위한 수단으로 사용한다.)

 

■ PHP, PHP-Zender편

top


PHP 컨피그옵션 1

./configure --with-apache=/usr/local/apache --with-gd=/usr/local --with-mysql=/usr/local/mysql --with-config-file- --enable-ftp --enable-socket --enable-track-vars=yes

error발생시에는 어떤 옵션에서 에러가 발생했는가를 확인후에,,조치할것....

PHP 컨피그옵션 2

./configure --with-apache=/usr/local/apache --with-gd=/usr/local --with-mysql=/usr/local/mysql --with-config-file- --enable-ftp

Zend Optimizer를 설치하여 사용하려면 configure옵션에 "--disable-debug"을 추가해야한다.

############### PHP Zend Optimizer : 현재버전 : 1.3.3 ###########

설치버전 : 1.3.3

1. php설치시 사용 configure옵션
: ./configure --with-apache=/usr/local/apache --with-mysql=/usr/local/mysql --with-config-file- --enable-ftp --disable-debug 으로 php를 설치한다.

make

make install

한 후에 cp php.ini-dist /usr/local/lib/php.ini

2. ZendOptimizer-2[1].1.0a-Linux_glibc21-i386.tar.gz를 다운받는다.

mkdir /usr/local/Zend

mkdir /usr/local/Zend/lib

tar xvfz ZendOptimizer-2[1].1.0a-Linux_glibc21-i386.tar.gz

cd ZendOptimizer-2[1].1.0a-Linux_glibc21-i386

./install.sh

여기서 대부분 다음과 같다.

STEP1
STEP2
STEP3
STEP4
STEP5
STEP6
STEP7
STEP8
STEP9
STEP10 : 설치후에 /usr/local/lib/php.ini파일을 열어서 맨 마지막부분에 Zend부분이 추가된 것을 확인한다.STEP11 : 아래는 php.ini 파일에 Zend관련 추가된 행을 확인한 것이다.
STEP12 : 설치최종학인

Zend가 정상적으로 설치된 후에는 /usr/local/lib/php.ini파일은 /usr/local/Zend/etc/php.ini로 이동되고 원래위치인 /usr/local/lib/php.ini파일은 이동된 위치인 /usr/local/Zend/etc/php.ini파일로 링크되어 있다. 아래는 이를 확인한 것이다.

[root@su46 lib]# ls -l /usr/local/lib/
합계 32
drwxr-xr-x 18 root root 4096 5월 9 23:16 php
lrwxrwxrwx 1 root root 27 5월 9 23:23 php.ini -> /usr/local/Zend/etc/php.ini
-rw-r--r-- 1 root root 28372 5월 9 23:23 php.ini.optimizer-backup
[root@su46 lib]#
[root@su46 lib]#
[root@su46 lib]# ls -l /usr/local/Zend/
합계 12
drwxr-xr-x 2 root root 4096 5월 9 23:23 doc
drwxr-xr-x 2 root root 4096 5월 9 23:24 etc
drwxr-xr-x 2 root root 4096 5월 9 23:23 lib
[root@su46 lib]#
[root@su46 lib]# ls -l /usr/local/Zend/etc
합계 28
-rw-r--r-- 1 root root 28470 5월 9 23:23 php.ini
[root@su46 lib]#

Zend설치시 문제해결

./install.sh로 시작한 설치과정에서 php버전을 못찾는다는 에러문구와 함께 php.ini파일의 위치를 확인하라는 메시지가 계속반복될 경우에는 apache가 시작되지않아서 그러므로 apache를 완벽히 설치한 후에 Apache를 시작시키고 Zend를 재설치한다.


 
copyright.gif

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,037 명
  • 현재 강좌수 :  35,806 개
  • 현재 접속자 :  105 명