Solaris8 에서 APM(Apache, PHP, MY-SQL) 설치와 보안서버(SSL) 설치
Posted 2009. 9. 30. 18:29Solaris8 (SPARC) APM 과 보안서버(SSL)설치
현재 제가 직접 설치한것을 토대로 글을 작성합니다. (2009.09.30)
환경 : Solaris 8 SPARC
1. 필요한 APM 및
라이브러리 다운
http://sunfreeware.com 에서 접속하여 오른쪽에 있는 해당 하드웨어 사항들을 체크한 다음 클릭하여 아래에 적힌 목록들을
다운
apache-2.2.9-sol8-sparc-local.gz
mysql-5.0.67-sol8-sparc-local.gz
ncurses-5.6-sol8-sparc-local.gz
php-5.2.6-sol8-sparc-local.gz
expat-2.0.1-sol8-sparc-local.gz
openldap-2.4.11-sol8-sparc-local.gz
sasl-2.1.21-sol8-sparc-local.gz
gcc-3.4.6-sol26-sparc-local.gz
libgcc-3.4.6-sol26-sparc-local.gz
libiconv-1.11-sol26-sparc-local.gz
libintl-3.4.0-sol26-sparc-local.gz
libxml2-2.6.31-sol26-sparc-local.gz
openssl-0.9.8i-sol26-sparc-local.gz
zlib-1.2.3-sol26-sparc-local.gz
libidn-1.10-sol8-sparc-local.gz
libpng-1.2.33-sol8-sparc-local.gz
curl-7.19.1-sol8-sparc-local.gz
fontconfig-2.4.2-sol8-sparc-local.gz
freetype-2.3.1-sol8-sparc-local.gz
gd-2.0.35-sol8-sparc-local.gz
jpeg-6b-sol8-sparc-local.gz
xpm-3.4k-sol8-sparc-local.gz
새로 Server를 설치하였다면 위의 목록들을 모두 받아놓는게
정신건강상 좋습니다.
꼭~ 필요한거에요.
아~ 혹시 위에 버젼보다 높은 버젼이 나왔다면 그걸 받아서
설치하셔도 됩니다.
위의 파일들은 모두 패키지 형식이기 때문에 gzip으로
압축만 풀고 간단한 명령어가 치면 자동으로
설치 됩니다.
예) # gzip -d
gcc-3.4.6-sol26-sparc-local.gz
이렇게 모두 압축을 풀어주세요
압축을 풀게 되면 gcc-3.4.6-sol26-sparc-local 이렇게만 남습니다.
그다음 패키지를 풀면됩니다.
예) # pkgadd -d
gcc-3.4.6-sol26-sparc-local
Select package(s) you wish to process (or 'all' to process
all packages). (default: all) [?,??,q]: all
이렇게 모두 파일이름만 바꾸고 설치 하시면 됩니다.
2. PATH 설정
밑의 내용을 /etc/profile 에서 넣어주시면 됩니다.
# vi /etc/profile
# for Apache located at /usr/local/apache2
if [ -d /usr/local/apache2 ]
then
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/apache2/lib; export
LD_LIBRARY_PATH
PATH=$PATH:/usr/local/apache2/bin; export PATH;
fi
# for MySQL located at /usr/local/mysql
if [ -d /usr/local/mysql/lib/mysql ]
then
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/mysql/lib/mysql; export
LD_LIBRARY_PATH
PATH=$PATH:/usr/local/mysql/bin; export PATH;
fi
밑의 내용을 PATH 에 대해 적용 방법등을
적어놓았습니다.
현재 자신의 PATH 값을 보려면 아래와 같이 하면 됩니다.
# echo $PATH
그리고 PATH에 새로운 값을 추가하려면 아래와 같이 하면 됩니다.
# PATH=$PATH:/usr/local/bin:/usr/ccs/bin
# export PATH
위에서 /usr/local/bin 과
/usr/ccs/bin 디렉토리를 추가했습니다. 이제
/usr/local/bin에 있는 명령어를 아무곳에서나 경로명 없이 실행할 수 있습니다.
하지만 위의 방법은 로그아웃하기 전까지만 유효합니다. 다시 로그인하면 또 위와 같이 PATH를 설정해줘야합니다.
그래서 이걸 자동적으로 적용되는 방법이 있는데 그건 사용자의 profile에 위의 내용들을 추가하는 겁니다.
# vi $HOME/.profile
PATH=$PATH:/usr/local/bin:/usr/ccs/bin
export PATH
만약 csh을 사용한다면 아래와 같이 하세요.
# vi $HOME/.login
setenv PATH $PATH:/usr/local/bin:/usr/ccs/bin
3. APM 설정
1) Apache
밑의 내용처럼 httpd.conf 파일을 수정해
주세요~!
# vi /usr/local/apache2/conf/httpd.conf
User nobody
Group nobody
daemon 으로 되어 있는걸
nobody로 수정
DefaultType text/plain
<IfModule mime_module> 이부분에
AddType
application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
위 두 내용을 추가.
LoadModule
alias_module modules/mod_alias.so
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule php5_module
modules/libphp5.so
이부분 추가.
ServerName 192.168.1.69:80
IP 대신 도메인을 사용할 수 있음.
test를 위해서는 일단 ip로 해도 괜찮아요.
Include conf/extra/httpd-mpm.conf
Include conf/extra/httpd-multilang-errordoc.conf
Include conf/extra/httpd-autoindex.conf
Include conf/extra/httpd-languages.conf
Include conf/extra/httpd-userdir.conf
Include conf/extra/httpd-info.conf
Include conf/extra/httpd-vhosts.conf
Include conf/extra/httpd-manual.conf
Include conf/extra/httpd-dav.conf
Include conf/extra/httpd-default.conf
Include conf/extra/httpd-ssl.conf
위의 사항들을 사용하고 싶다면 # 주석을 없애면 됩니다.
# /usr/local/apache2/bin/apachectl start
혹시 에러가 생기다면 필요한 라이브러리를 설치하지 않아 생겼을 테니 꼭 라이브러리를 설치하시길 바랍니다.
부팅시 자동으로 Apache를 구동할 수 있도록 스크립을 작성하겠습니다.
위의 사항들을 제대로 구성하셨으면
/etc/init.d/apache 라는 파일이 만들어져 있을껍니다.
이건 그냥 무시하시고 저는 간단하게 하기 위해 짧게 할 예정이라 한줄 밖에 안됩니다.
#vi /etc/init.d/apache2
#!/sbin/sh
#
# apache starting script
#
/usr/local/apache2/bin/apachectl start
더 이상 없습니다.
# chown root:sys /etc/init.d/apache2
소유자와 그룹을 root : sys로 변경
# chmod 744 /etc/init.d/apache2
파일 권한은 744로
# ln /etc/init.d/apache2 /etc/rc2.d/S99apache
# ln /etc/init.d/apache2 /etc/rc1.d/K16apache
# ln /etc/init.d/apache2 /etc/rcS.d/K16apache
여기에 링크를 걸어주시면 부팅시 자동으로 Apache 데몬이 작동이 됩니다.
2) PHP
cp
/usr/local/php/doc/php/php.ini-recommended /usr/local/php/lib/php.ini
/usr/local/php/doc/php/php.ini-recommended를 /usr/local/php/lib/php.ini 복사합니다.
테스트를 위해 아래 내용을 새로 작성
# vi
/usr/local/apache2/htdocs/index.php
<?
phpinfo()
?>
확인방법은 http://192.168.1.69/index.php (이건
저의 셋팅에 따라 만든거에요)
제대로 되었다면 밑의 그림이 나올껍니다. 아~ 그리고
이 테스트는 APM 모두 설치 셋팅한다음 테스트를 하시길 바랍니다.
3) MySQL
# useradd -d /export/home/mysql -g staff -m -u 102 -s /bin/false mysql
MySQL을 사용할 계정을 추가
# cp /usr/local/mysql/share/mysql/my-medium.cnf /etc/my.cnf
# vi /etc/my.cnf
/usr/local/mysql/share/mysql 에 my-huge.cnf, my-large.cnf, my-medium.cnf, my-small.cnf 의 예제 설정
파일이 있다. 이를 /etc/my.cnf 으로 이름을 바꿔
복사하면 된다.
skip-networking
#log-bin
리플리케이션을 사용하지 않는다면 [log-bin]을 찾아
주석처리하고 외부에서 접속이 없다면 [skip-networking]의 주석을 푼다.
# /usr/local/mysql/bin/mysql_install_db
기본 MySQL DB를 생성
# chown -R mysql:staff /usr/local/mysql/var
기본 MySQL DB가 생성되는 /usr/local/mysql/var 의 디렉토리 및 파일들의 소유자를 mysql 그룹은 staff로 변경
# /usr/local/mysql/share/mysql/mysql.server start
MySQL 서버를 시작
종료는 /usr/local/mysql/share/mysql/mysql.server stop
# /usr/local/mysql/bin/mysqladmin -u root password 'PASSWORD'
MySQL의 root 패스워드를
변경
기본값은 없기 때문에 보안을 위해서 반드시 수정
# /usr/local/mysql/bin/mysqladmin -u root -h test -p password 'NEW-PASSWORD'
Enter password: PASSWORD
위처럼 하시면 새로운 패스워드로 변경이 됩니다. 위에서 test는 host 이름입니다.
부팅시 자동으로 Mysql를
구동할 수 있도록 스크립을 작성하겠습니다.
# vi /etc/init.d/mysql
#!/sbin/sh
#
# mysql starting script
#
/usr/local/mysql/bin/mysqld_safe &
# chown root:sys /etc/init.d/mysql
소유자와 그룹을 root : sys로 변경
# chmod 744 /etc/init.d/mysql
파일 권한은 744로
# ln /etc/init.d/mysql /etc/rc2.d/S99mysql
이렇게 하면 mysql도 부팅시 자동으로 데몬이 올라오게 됩니다.
4. 보안서버(SSL) 설치 및 설정
1) openssl 을 이용하여 key 파일 생성 및 csr
코드 생성
일단 ssle 인증서 키와 파일들을 저장할 디렉토리를 만들어놓습니다.
# mkdir /usr/local/apache2/conf/ssl
# cd /usr/local/apache2/conf/ssl
Ps. 꼭 개인키와 csr 코드 등은 복사등을 해서 백업을 해주시길 바랍니다.
- 개인Key 파일 생성
# openssl genrsa -des3 1024 > m-sys_co_kr.key
Generating RSA private key, 1024 bit long modulus
.................................++++++
...............++++++
e is 65537 (0x10001)
Enter pass phrase: <-
암호 필히 기억 (apache 실행시 사용함)
Verifying - Enter pass phrase:
만약 apache 실행시 암호를 사용하지 않고 사용하실려면 아래의 명령어를 통해 개인키를 생성하시길 바랍니다.
# openssl genrsa 1024 > m-sys_co_kr.key
- csr 코드 생성
# openssl req -new -key m-sys_co_kr.key -out m-sys_co_kr.csr
Enter pass phrase for m-sys_co_kr.key:
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) [AU]:KR
State or Province Name (full name) [Some-State]:Busan
Locality Name (eg, city) []:BusanJin
Organization Name (eg, company) [Internet Widgits Pty
Ltd]:Minerva Systems <-회사명
Organizational Unit Name (eg, section) []:Technical Support
Team <-소속 부서
Common Name (eg, YOUR name) []:www.m-sys.co.kr <-홈페이지 도메인
Email Address []:***@m-sys.co.kr
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
<- 암호 필히
기억
An optional company name []:
- csr 코드 확인(보안상 *** 처리하였습니다)
# cat m-sys_co_kr.csr
-----BEGIN CERTIFICATE REQUEST-----
MIIB/jCCAWcCAQAwgagxCzAJBgNVBAYTAktSMQ4wDAYDVQQIEwVCdXNhbjERMA8G
A1UEBxMIQnVzYW5KaW4xGDAWBgNVBAoTD01pbmVydmEgU3lzdGVtczEfMB0GA1UE
***********************
934AJEaN5VPO3RJR6w4O2GwW/AM3iNuNr2IaBJmfKip9gA==
-----END CERTIFICATE REQUEST-----
공공기관이나
교육기관 등등에서 사용하기 위해서는 위에 생성된 csr 코드를 SSL
인증키 업체에게 메일이나 웹으로 이 파일을 보내서 인증키 발급을 신청해야합니다.
메일이나 웹으로
csr 내용을 SSL 인증키 업체에게 보내서 인증서 발급을
받으면 key와 csr 파일이 있는 경로(저의 경우는
/usr/local/apache2/conf/ssl) 에 ftp를 이용하시던
다른 어떤수를 사용해서라도 넣어놓으세요. ㅎㅎ
자체 인증서를
만들어서 테스트하는 방법은 뒤에서 설명하도록 하겠습니다.
2) SSL을 사용하기 위한 httpd.conf & httpd-ssl.conf 수정
어떤 파일
형식으로 인증서를 받으실지 모르겠지만 대충 m-sys_co_kr.pem 으로 받았다고 가정하고 시작하도록
하겠습니다.
저는 그냥 m-sys_co_kr.pem 파일을 복사해서 이름을 바꾸어서 사용하였습니다.
# cp m-sys_co_kr.pem
m-sys_co_kr.crt
먼저 위에서 Apache의 옵션 httpd.conf 파일안에 있는
Include
conf/extra/httpd-vhosts.conf
Include
conf/extra/httpd-ssl.conf 이 두 부분에서 주석처리를 없애버렸기 때문에 바로 httpd-ssl.conf
를 수정하겠습니다.
# vi /usr/local/apache2/conf/extra/httpd-ssl.conf
##
## SSL Virtual Host Context
##
<VirtualHost 210.*.223.*:443> <-이부분 수정 해당 IP로 (보안상 * 표시하였습니다만..
-_-;)
# General setup for the
virtual host
DocumentRoot "/home1/homepage/www" <- 수정
ServerName www.m-sys.co.kr:443
<- 수정
ServerAdmin kwonbk@m-sys.co.kr
<- 수정
ErrorLog
"/usr/local/apache2/logs/m-sys.co.kr_ssl_error_log" <- 알아서 수정하세요 ^^
TransferLog "/usr/local/apache2/logs/m-sys.co.kr_ssl_access_log"
<- 이것도 ..
# SSL Engine Switch:
# Enable/Disable SSL
for this virtual host.
SSLEngine on
# SSL Cipher Suite:
# List the ciphers that
the client is permitted to negotiate.
# See the mod_ssl
documentation for a complete list.
SSLCipherSuite
ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
# Server Certificate:
# Point
SSLCertificateFile at a PEM encoded certificate. If
# the certificate is
encrypted, then you will be prompted for a
# pass phrase. Note that a kill -HUP will prompt again. Keep
# in mind that if you
have both an RSA and a DSA certificate you
# can configure both in
parallel (to also allow the use of DSA
# ciphers, etc.)
SSLCertificateFile
"/usr/local/apache2/conf/ssl/m-sys_co_kr.crt" <- 발급받은 인증서 경로
#SSLCertificateFile
"/usr/local/apache2/conf/server-dsa.crt"
# Server Private Key:
# If the key is not
combined with the certificate, use this
# directive to point at
the key file. Keep in mind that if
# you've both a RSA and
a DSA private key you can configure
# both in parallel (to
also allow the use of DSA ciphers, etc.)
SSLCertificateKeyFile
"/usr/local/apache2/conf/ssl/m-sys_co_kr.key" <- 개인키 경로
#SSLCertificateKeyFile
"/usr/local/apache2/conf/server-dsa.key"
# Server Certificate
Chain:
# Point
SSLCertificateChainFile at a file containing the
# concatenation of PEM
encoded CA certificates which form the
# certificate chain for
the server certificate. Alternatively
#SSLCACertificateFile "/usr/local/apache2/conf/ssl.crt/ca-bundle.crt" <- CA 있으면 추가~!
<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>
3) SSL 적용한 Apache 실행하기
이제 httpd-ssl.conf 파일을 저장하고 apache를 실행하시면
됩니다.
일단 테스트를
해서 옵션등에 에러가 없는지 확인하겠습니다.
# /usr/local/apache2/bin/apachectl –t
Syntax OK
이렇게 정상적인 OK 가 나오면 실행하시면 됩니다. 간혹 인증서 때문에 테스트에서는
정상 작동이 된다고 하지만 실행해보면 실패가 되는 경우가 있는데 운영중인 서버라면 httpd.conf 에서
Include conf/extra/httpd-ssl.conf 부분을 주석처리하고 일단 상황을 보시고 실행하시길 바랍니다.
그리고 Solaris에서는 모르겠지만 Linux 에서는 apache 2.x.x 버전은 openssl, 이 자체 내장되어서 나옵니다. 전 sunfreeware 사이트에서 설치시 받아야할 항목을 모두
받아서 설치한거니 헷갈리지 마세요 ^^; 아참 apache 1.3.x 버전의 경우 apache 실행시 apachectl startssl 을 해야 하지만 apache 2.x.x 의
경우 밑의 명령어 처럼 start 명령어만 해주면 됩니다.
# ./apachectl start
Apache/2.2.12 mod_ssl/2.2.12 (Pass Phrase Dialog)
Some of your private key files are encrypted for security
reasons.
In order to read them you have to provide the pass phrases.
Server www.m-sys.co.kr:443 (RSA)
Enter pass phrase:
OK: Pass Phrase Dialog successful.
이렇게 하고 443 Port가 사용하고 있는지 확인하세요.
# netstat –an | grep 443
*.443 *.* 0 0 24576 0 LISTEN
*.443 *.* 0 0 24576 0 LISTEN
443 Port 가 열려있다면 이제 익스플로러나 파폭등을 이용해서 https://m-sys.co.kr 주소로 들어가시면 SSL 보안이 실행되고 있는지 확인하실 수가 있습니다.
4) 자체 인증서 만들기
# openssl genrsa 1024 > m-sys_co_kr.key
# openssl req -new -key m-sys_co_kr.key -out m-sys_co_kr.csr
# openssl x509 -in m-sys.co.kr.csr -out m-sys.co.kr.crt -req
-signkey m-sys.co.kr.key -days 3650
Signature ok
subject=/C=KR/ST=Busan/L=Busan/O=Minerva Systems/OU=Technical
Support Team/CN=www.m-sys.co.kr/emailAddress=****@m-sys.co.kr
Getting Private key
이건 자체
테스트용으로 한것이기 때문에 기간은 10년으로… ㅎㅎ
이렇게 하신다음
apache를 재시작 하시면 됩니다.
5) 각 운영체제 별 현재 설치된 apache, openssl 등을 확인 방법
- Linux
# rpm –qa | grep
apache
# rpm –qa | grep ssl
# find / -name
apache
# find / -name ssl
- Solaris
# pkginfo | grep
apache
# pkginfo | grep ssl
# find / -name
apache
# find / -name ssl
'OS 운영체제 및 보안 > Solaris' 카테고리의 다른 글
Solaris Bind 자동 스크립 (0) | 2010.10.11 |
---|---|
[스크랩] 시스템 shutdown 명령어 (0) | 2010.06.01 |
Solaris DiskSuite (SVM) RAID 구성 및 제거 (0) | 2010.04.12 |
Solaris 설치 후 기본 설정 (0) | 2010.04.12 |
Solaris에서 DHCP를 이용시 hostname 변경 방법 (0) | 2009.07.07 |
/usr/sbin/pmconfig PROM 이름으로 변환하는데 실패 라는 Log가 나올때... (0) | 2009.06.15 |
SSH, FTP 접속 딜레이가 생길때... (0) | 2009.05.22 |
[스크랩] Disk sector error(soft or hard) 복구 방법 (0) | 2009.03.19 |
[스크랩] Solaris 시스템 점검 및 장애복구 방법 (0) | 2009.03.19 |
[스크랩] Solaris 시스템 현황보기 (0) | 2009.02.24 |
- Filed under : OS 운영체제 및 보안/Solaris