Linux WEB

apache2.x - 보안서버 구축하기

2008.05.15 00:44

sylee 조회 수:24039

보안 서버(SSL) 구축하기- apache 2.2.4

아파치 2.x의 경우는 1.3과는 달리 mod_ssl을 별도로 추가해서 설치할 필요가 없다.
apache2.x 버전 자체에 모듈이 포함되어 있기 때문에 apache 설치시에 --enable-ssl 옵션만 추가해서 사용하면 된다.

mysql, gd, imap등의 패키지는 이미 깔려 있는 상태이며, 모든 패키지는 /usr/local/src/ 디렉토리 안에 다운로드 받은 상태로 설치를 시작한다.


1. 소스를 다운 받은 디렉토리로 이동

[root@hostway.co.kr root]# cd /usr/local/src


2. 압축 풀기

[root@hostway.co.kr src]# tar xvzf httpd-2.2.4.tar.gz
[root@hostway.co.kr src]# tar xvzfp php-5.2.3.tar.tar
[root@hostway.co.kr src]# tar xvzf ZendOptimizer-2.6.2-linux-glibc21-i386.tar.gz


3. apache 설치

- apache를 설치하기전에, source 디렉토리내의 server/mpm/prefork/prefork.c 파일에서 #define DEFAULT_SERVER_LIMIT 부분을 1024로 수정 한다.  디폴트값 256으로 컴파일 하게 되면, 아파치 데몬이 최대 256개 까지 밖에 뜰수 없게 된다, 이런 경우는 서버의 접속량이 많을경우 서버의 자원이 남아도 더 이상의 데몬을 띄우지 못해서 서버가 느려지게 된다.

[root@hostway.co.kr src]# cd httpd-2.2.4
[root@hostway.co.kr httpd-2.2.4]# ./configure --prefix=/usr/local/apache2 --enable-so --enable-mods-shared --enable-rewrite --enable-ssl
[root@hostway.co.kr httpd-2.2.4]# make
[root@hostway.co.kr httpd-2.2.4]# make install


4. PHP 설치 (DB,imap,gd,apache)

- 아래의 옵션을 모두 적용하여 php를 설치 할 경우는 몇몇 패키지가 설치되어 있지 않아 에러가 발생하게 된다. php-5.2.3버전의 경우는 libxml2, libxml2-devel 패키지의 버전문제로 설치가 되지 않기 때문에 패키지 버전을 업그레이드 한다.(http://rpmfind.net 에서 OS에 맞는 최신 패키지를 찾아서 설치한다)
그리고, freetype, libjpeg, libpng등의 라이브러리와 관련된 에러메지시가 발견되면 freetype-devel, libjpeg-devel, libpng-devel 패키지를 추가로 설치하고 php설치를 진행한다.

[root@hostway.co.kr httpd-2.2.4]# cd /usr/local/src/php-5.2.3
[root@hostway.co.kr php-5.2.3]# ./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.co.kr php-5.2.3]# make
[root@hostway.co.kr php-5.2.3]# make install
[root@hostway.co.kr php-5.2.3]# cp php.ini-dist /usr/local/php/lib/php.ini


5. ZendOptimizer 설치

[root@hostway.co.kr php-5.2.3]# cd /usr/local/src/ZendOptimizer-2.6.2-linux-glibc21-i386
[root@hostway.co.kr ZendOptimizer-2.6.2-linux-glibc21-i386]# sh install.sh

- install.sh 파일을 실행한 후 apache와 php관련된 정보를 입력한 후 설치를 완료한다.


6. httpd.conf 파일 수정후 apache 리스타트

- httpd.conf 파일에 php가 인식되도록 아래 구문을 추가한다.

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

- httpd.conf 수정후 apache 데몬은 재실행한다. ssl 서버로 시작하기 위해서 startssl 명령으로 시작.

[root@hostway.co.kr ZendOptimizer-2.6.2-linux-glibc21-i386]# cd /usr/local/apache2/conf
[root@hostway.co.kr conf]# /usr/local/apache/bin/apachectl stop
[root@hostway.co.kr conf]# /usr/local/apache/bin/apachectl startssl


7. key 파일 생성 및 csr 코드 생성

- key 파일 생성

[root@hostway.co.kr conf]# openssl genrsa 1024 > hostway.co.kr.key
Generating RSA private key, 1024 bit long modulus
....................................++++++
................++++++
e is 65537 (0x10001)

- csr 코드 생성

[root@hostway.co.kr conf]# openssl req -new -key hostway.co.kr.key -out hostway.co.kr.csr
Using configuration from /usr/share/ssl/openssl.cnf
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [GB]:KR
State or Province Name (full name) [Berkshire]:Gyunggido
Locality Name (eg, city) [Newbury]:Sungnam
Organization Name (eg, company) [My Company Ltd]:Hostway IDC
Organizational Unit Name (eg, section) []:Technical support Team
Common Name (eg, your name or your server's hostname) []:hostway.co.kr
Email Address []:support@hostway.co.kr

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

- 생성된 csr 코드 확인

[root@hostway.co.kr conf]# cat hostway.co.kr.csr
-----BEGIN CERTIFICATE REQUEST-----
MIIB4jCCAUsCAQAwgaExCzAJBgNVBAYTAktSMRIwEAYDVQQIEwlHeXVuZ2dpZG8x
EDAOBgNVBAcTB1N1bmduYW0xFDASBgNVBAoTC0hvc3R3YXkgSURDMR8wHQYDVQQL
ExZUZWNobmljYWwgc3VwcG9ydCBUZWFtMRUwEwYDVQQDEwxKb28gd29vIGt3b24x
HjAcBgkqhkiG9w0BCQEWD2pvb2tAam9vay5wZS5rcjCBnzANBgkqhkiG9w0BAQEF
AAOBjQAwgYkCgYEA0ZvDHAVHU5xbT/ZDsAebNPBjRaXAPtmaV/WEIi4YsYkwBC15
Ro/gsPqNNCe5CJUw+K3qGnhbQI9Nd0/UKfTn174NSFWUxQv9E1mE4k5xoD/2T1Jf
TcZ0a0WDjIG/Xd69D+nkCTDG1ZbQnZ8qq2DcbulbjwD6sB5HTusRVHeIu2sCAwEA
AaAAMA0GCSqGSIb3DQEBBAUAA4GBAEjfawGIByqF+fLLjpeX2XZAIkL0L/kfOJbs
vuFwVNJuWYiakJF+LJaCz5S40CoZMV/bD+w+223MVF5KqAKTc6NUBbYGfBvuGTHT
TwLtnTqVBP0Xla0opWZWZ8JbGQJAGd+fxMOfvqx0ES1oPn0J97NpknSOBPOO3Q9s
/ZA9CUYd
-----END CERTIFICATE REQUEST-----
[root@hostway.co.kr conf]#

- csr 코드 생성이 완료되면 생성된 csr 코드를 입력해서 ssl 인증키 발급업체에 인증키 발급을 신청 한다.


8. 인증서 및 CA 인증서 설치

- 인증키 발급 업체에서 인증키를 발급받으면 www_hostway_co_kr.crt(인증서), www_hostway_co_kr.ca-bundle(CA 인증서)와 같이 두개의 인증서 파일을 발급받게 된다.
- 두 파일을 서버의 /usr/local/apache/conf 디렉토리에 업로드한다.


9. SSL 가상호스트 설정

- apache2는 httpd.conf 파일이외에 /usr/local/apache2/conf/extra/ 디렉토리에 있는 파일들을 include해서 참조하도록 설정되어 있다. 가상호스트 설정과, ssl 설정을 include 할수 있도록 httpd.conf 파일에서 아래부분의 주석을 해제 한다.


# Virtual hosts
Include conf/extra/httpd-vhosts.conf


# Secure (SSL/TLS) connections
Include conf/extra/httpd-ssl.conf

- httpd-vhosts.conf 파일에 가상호스트를 추가하고 httpd-ssl.conf 파일에 아래와 같은 형식으로 ssl 가상호스트를 추가한다.

##
## SSL Virtual Host Context
##

NameVirtualHost 211.239.151.254:443

<VirtualHost 211.239.151.254:443>
DocumentRoot "/home/hostway/public_html"
ServerName www.hostway.co.kr
ServerAdmin support@hostway.co.kr
ErrorLog /usr/local/apache2/logs/error_log
TransferLog /usr/local/apache2/logs/access_log

SSLEngine on

SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
SSLCertificateFile /usr/local/apache2/conf/www_hostway_co_kr.crt
SSLCertificateKeyFile /usr/local/apache2/conf/hostway.co.kr.key
SSLCACertificateFile /usr/local/apache2/conf/ssl.crt/www_hostway_co_kr.ca-bundle

<FilesMatch ".(cgi|shtml|phtml|php)$">
    SSLOptions +StdEnvVars
</FilesMatch>
<Directory "/usr/local/apache2/cgi-bin">
    SSLOptions +StdEnvVars
</Directory>

BrowserMatch ".*MSIE.*"
         nokeepalive ssl-unclean-shutdown
         downgrade-1.0 force-response-1.0

CustomLog /usr/local/apache2/logs/ssl_request_log
          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x "%r" %b"

</VirtualHost>


10. apache 데몬 리스타트

- 모든 설정이 완료된 후 apache 데몬을 리스타트 하고 https://도메인으로 사이트를 띄워서 인증키를 확인한다.
- 여기서 https://www.hostway.co.kr은 실제로는 ssl 설정이 되어 있지 않기 때문에 안뜨는게 정상 ^^

[root@hostway.co.kr conf]# /usr/local/apache/bin/apachectl stop
[root@hostway.co.kr conf]# /usr/local/apache/bin/apachectl start

- apache2.x 에서는 apachectl startssl로 실행을 하지 않는다. httpd.conf 파일에서 httpd-ssl.conf 파일을 include하는 부분의 주석을 풀고 start 하게되면 자동으로 443포트까지 열리게 되며, ssl 서버가 가동되게 된다.

* csr 코드 확인 : openssl req -noout -text -in *.csr
번호 제목 글쓴이 날짜 조회 수
63 APM 설치 호스트웨이 2008.05.19 24801
62 Apache2.4.x 버전 설치 호스트웨이 2012.06.22 24723
61 http://도메인/~계정으로 접근하기 sylee 2008.05.15 24092
» apache2.x - 보안서버 구축하기 sylee 2008.05.15 24039
59 아파치 환경설정 파일분석 1번째 sylee 2008.05.14 22417
58 httpd-2.x.x 에서의 SERVER_LIMIT 변경 hostway 2008.05.14 21976
57 SSL 패스워드 삭제 하기 호스트웨이 2012.09.05 21709
56 Apache 설치 후 WEB 403 Forbidden 에러 호스트웨이 2015.09.08 21410
55 설치된 서버 php에서 지원되는 함수 확인 하기 hostway 2008.05.14 21256
54 apache에서 cgi를 사용하기 위한 설정 방법 호스트웨이 2012.04.27 21205
53 Debian에서 apm 설치할때의 패키지 목록 jook 2008.12.27 21179
52 apache1.3 + mod_ssl - 보안서버 구축하기 sylee 2008.05.15 21096
51 mod_GeoIP를 이용한 국가 IP 확인 및 국가별 접속 제한 호스트웨이 2012.05.04 21029
50 Debian 에서 mod_rewrite 활성화 하기 jook 2008.12.12 20811
49 Apache Max Client 값 수정 호스트웨이 2012.08.31 20754
48 apache internal dummy connection 로그 생성 방지하기 호스트웨이 2012.09.06 19747
47 server-status를 이용한 아파치 모니터링 방법 file 호스트웨이 2016.04.05 19308
46 [php] 세션 유지시간 설정하기 호스트웨이 2012.10.25 18922
45 nginx - redirect 설정 호스트웨이 2012.08.24 18909
44 Zend Guard Loader 설치 호스트웨이 2012.04.20 18861