1. 설치환경 apache php mysql proftp Linux 2019-01-12 정보보안학과 20021002 조정현
Index 설치 환경 Library 3. mysql 4. httpd php httpd.conf 7. proftpd 4. httpd php httpd.conf 7. proftpd 8. web server test 9. apm 연동 테스트 2019-01-12 정보보안학과 20021002 조정현
/usr/lib /usr/include 1. 설치환경 1. 설치 환경 System: cpu - p4-3.2ghz ram - 512mb hdd – 160gb Linux: Centos 5.2 kernel_2.6.18-92.el5 library and utility zendoptimizer-3.0.1 gd-2.0.35 libpng-1.2.5 zlib-1.2.3 freetype-2.1.5 libiconv-1.12 libxml2-2.6.32 libxslt-1.1.14 jpegsrc.v6b httpd-2.2.9 mysql-5.0.67 php-5.2.5 proftpd-1.3.1 qmail /usr /usr/local /usr/lib /usr/include 2019-01-12 정보보안학과 20021002 조정현
"Development Libraries“, "Development Tools“ 을 꼭 설치 1. 설치 환경 Linux 설치시 "Development Libraries“, "Development Tools“ 을 꼭 설치 하여 gcc 관련 툴이 설치되어야 한다. 설치하지 않았을 경우. Yum 으로 설치.. rpm –qa 로 확인. # yum groupinstall "Development Libraries" # yum groupinstall "Development Tools" [root@localhost src]# rpm -qa | grep make make-3.81-3.el5 automake16-1.6.3-8 automake17-1.7.9-7 automake14-1.4p6-13 automake-1.9.6-2.1 imake-1.0.2-3 automake15-1.5-16 [root@localhost src]# rpm -qa | grep gcc gcc-4.1.2-42.el5 gcc-c++-4.1.2-42.el5 libgcc-4.1.2-42.el5 gcc-gfortran-4.1.2-42.el5 2019-01-12 정보보안학과 20021002 조정현
1 2 파일 다운로드하기 ftp 서버 접속하기 다운로드한 파일 확인 httpd-2.2.9 mysql-5.0.67 1. 설치환경 1. 설치 환경 파일 다운로드하기 ftp 서버 접속하기 1번 그룹의 File 들을 /usr/local/src/apm 디렉터리에. 2번 그룹의 File 들을 /usr/local/src/libs 디렉터리에 다운로드 한다. httpd-2.2.9 mysql-5.0.67 php-5.2.5 proftpd-1.3.1 qmail 다운로드한 파일 확인 1 “ftp superuser.co.kr” 로 접속하여 파일들을 받거나 “ftp 203.237.211.230” 로 접속하여 파일들을 받는다. ID: ftp PW: 없음 library and utility zendoptimizer-3.0.1 gd-2.0.35 libpng-1.2.5 zlib-1.2.3 freetype-2.1.5 libiconv-1.12 libxml2-2.6.32 libxslt-1.1.14 jpegsrc.v6b 2 2019-01-12 정보보안학과 20021002 조정현
library files libpng-1.2.5 zlib-1.2.3 Library file들을 압축을 해제하고 설치한다. libiconv-1.12 libxml2-2.6.32 libxslt-1.1.14 jpegsrc.v6b freetype-2.1.5 gd-2.0.35 libpng 설치 [root@localhost libs]# tar xvfz libpng-1.2.5.tar.gz [root@localhost libs]# cd libpng-1.2.5 [root@localhost libpng-1.2.5]# cp scripts/makifile.linux makefile [root@localhost libpng-1.2.5]# make && make install [root@localhost libpng-1.2.5]# cd .. zlib 설치 [root@localhost libs]# tar xvfz zlib-1.2.3.tar.gz [root@localhost libs]# cd zlib-1.2.3 [root@localhost zlib-1.2.3]# ./configure [root@localhost zlib-1.2.3]# make && make install [root@localhost zlib-1.2.3]# cd .. libiconv 설치 [root@localhost libs]# tar xvfz libiconv-1.12.tar.gz [root@localhost libs]# cd libiconv-1.12 [root@localhost libiconv-1.12]# ./configure [root@localhost libiconv-1.12]# make && make install [root@localhost libiconv-1.12]# cd .. libxml2 설치 [root@localhost libs]# tar xvfz libxml2-2.6.32.tar.gz [root@localhost libs]# cd libxml2-2.6.32 [root@localhost libxml2-2.6.32]# ./configure [root@localhost libxml2-2.6.32]# make && make install [root@localhost libxml2-2.6.32]# cd .. libxslt 설치 [root@localhost libs]# tar xvfz libxslt-1.1.14.tar.gz [root@localhost libs]# cd libxslt-1.1.14 [root@localhost libxslt-1.1.14]# ./configure [root@localhost libxslt-1.1.14]# make && make install [root@localhost libxslt-1.1.14]# cd .. jpeg 설치 [root@localhost libs]# tar xvfz jpegsrc.v6b.tar.tar [root@localhost libs]# cd jpeg-6b [root@localhost jpeg-6b]#./configure [root@localhost jpeg-6b]# make [root@localhost jpeg-6b]# make test [root@localhost jpeg-6b]# mkdir /usr/local/man/man1 [root@localhost jpeg-6b]# make install [root@localhost jpeg-6b]# cd .. freetype2 설치 [root@localhost libs]# tar xvfz freetype-2.1.5.tar.tar [root@localhost libs]# cd freetype-2.1.5 [root@localhost freetype-2.1.5]# ./configure [root@localhost freetype-2.1.5]# make && make install [root@localhost freetype-2.1.5]# cd .. gd 설치 [root@localhost libs]# tar xvfz gd-2.0.35.tar.gz [root@localhost libs]# cd gd-2.0.35 [root@localhost gd-2.0.35]# ./configure --prefix=/usr --with-png=/usr –with-freetype=/usr –with-fontconfig=/usr –with-jpeg=/usr –with-xpm=/usr 2019-01-12 정보보안학과 20021002 조정현
ls /usr/include ls /usr/lib 2. Library ls /usr/include ls /usr/lib Compile 오류 ./configure 를 하고 compile(make)도중 오류가 날 수 있다. 이런 경우 관련 Library file의 위치경로가 잘 못 설정되어 오류가 나는 경우가 대부분이다. 경로 설정을 안 해줬을 경우 default 값으로 라이브러리 파일들은 /usr 밑에 /usr/lib 라이브러리의 헤더파일들은 /usr/include 에 설치가 되게 된다. 위 디렉토리안에서 파일을 찾지 못했다면 … 다시 설치해야 한다. 설치할 디렉토리를 지정하고자 한다면 " --prefix=directory " 제대로 설치 되었는지 각 Library file들을 확인해보자. 2019-01-12 정보보안학과 20021002 조정현
mysqld 프로세스확인 mysql 유저 생성 compile,, mysql 환경설정,, 시작스크립트 복사 mysql database 초기화 및 디렉토리 퍼미션 설정 mysql root@localhost의 패스워드 설정 [root@localhost mysql-5.0.67]# user –M –s /bin/false mysql mysqld 프로세스확인 [root@localhost mysql-5.0.67]# ./configure --prefix=/usr/local/mysql \ > --localstatedir=/usr/local/mysql/data \ > --disable-shared \ > --enable-assembler \ > --with-thread-safe-client \ > --with-mysql-user=“mysql” \ > --with-client-ldflags=-all-static \ > --with-mysqld-ldflags=-all-static \ > --with-readline \ > --without-debug \ > --without-docs \ > --without-bench \ > --with-charset=utf8 \ > --with-extra-charsets=all [root@localhost mysql-5.0.67]# make && make install [root@localhost mysql-5.0.67]# cp support-files/my-medium.cnf [root@localhost mysql-5.0.67]# cp support-files/mysql.server etc/init.d/mysqld [root@localhost mysql-5.0.67]# chmod 755 /etc/init.d/mysqld [root@localhost mysql-5.0.67]# /usr/local/mysql/bin/mysql_install_db [root@localhost mysql-5.0.67]# chown –R mysql:mysql /usr/local/mysql [root@localhost mysql-5.0.67]# ln –s /usr/local/mysql/bin/mysql /usr/bin/ [root@localhost mysql-5.0.67]# ln –s /usr/local/mysql/bin/mysqldump /usr/bin/ [root@localhost mysql-5.0.67]# /etc/init.d/mysqld start Staring MySQL [ OK ] [root@localhost mysql-5.0.67]# [root@localhost mysql-5.0.67]# /usr/local/mysql/bin/mysqladmin –u root password “암호” 2019-01-12 정보보안학과 20021002 조정현
[root@localhost httpd-2.2.9]# ./configure \ 4. Httpd 컴파일 및 설치 아파치 시작 스크립트 복사 및 수정 [root@localhost httpd-2.2.9]# ./configure \ > --prefix=/usr/local/httpd \ > --enable-so \ [root@localhost httpd-2.2.9]# make && make install [root@localhost httpd-2.2.9]# cp /usr/local/server/httpd/bin/apachectl /etc/init.d/httpd 2019-01-12 정보보안학과 20021002 조정현
컴파일 또는 설치 중 에러 발생할 경우 > --enable-sysvshm \ > --enable-sockets \ 3. Php > --enable-sysvshm \ > --enable-sockets \ > --enable-ftp \ > --with-snmp \ > --with-openssl=/usr \ > --with-zlib=/usr \ > --with-jpeg-dir=/usr \ > --with-png-dir=/usr \ > --with-freetype-dir=/usr \ > --with-gd=/usr \ > --enable-gd-native-ttf \ > --with-ttf \ > --with-gettext \ > --enable-exif \ > --with-xpm-dir=/usr \ > --with-libxml-dir=/usr \ > --with-pcre-dir=/usr \ > --with-imap \ > --with-imap-ssl \ > --with-kerberos \ > --with-curl \ > --with-ncurses \ > --with-iconv-dir=/usr \ > --with-xsl=/usr \ --enable-wddx \ PHP 컴파일 및 설치 [root@localhost php-5.2.5]# ./configure \ > --prefix=/usr/local/php \ > --with-apxs2=/usr/local/httpd/bin/apxs \ > --with-mysql=/usr/local/mysql \ > --with-mysqli=/usr/local/mysql/bin/mysql_config \ > --with-pdo-mysql=/usr/local/mysql \ > --with-config-file-path=/usr/local/httpd/conf \ > --enable-magic-quotes \ > --enable-mod-charset \ > --enable-mbstring \ > --enable-sigchild \ > --enable-safe-mode \ > --enable-bcmath \ > --enable-calendar \ > --enable-sysvsem \ > --enable-sysvmsg \ 컴파일 또는 설치 중 에러 발생할 경우 각종 라이브러리들이 설치가 안되어 있을 경우 에러가 발생하는데 아래처럼 라이브러리들을 yum 으로 설치해주거나 소스파일로 설치해준다. yum install libjpeg-devel -y yum install libpng-devel -y yum install libXpm-devel -y yum install freetype-devel -y yum install gd-devel -y yum install libc-client -y yum install libc-client-devel -y yum install net-snmp-devel -y yum install libmcrypt libmcrypt-devel –y [root@localhost php-5.2.5]# make && make install 2019-01-12 정보보안학과 20021002 조정현
5. Php php.ini 복사하기 [root@localhost php-5.2.5]# cp php.ini-dist /usr/local/httpd/conf/php.ini 2019-01-12 정보보안학과 20021002 조정현
vi httpd.conf vi httpd.conf 6. Httpd.conf “httpd.conf “에 “php” 를 인식하도록 수정 vi httpd.conf vi httpd.conf 2019-01-12 정보보안학과 20021002 조정현
가상호스트(virtual hosts) httpd.conf 의 default 값은 6. Httpd.conf 가상호스트(virtual hosts) httpd.conf 의 default 값은 웹페이지를 /usr/local/httpd/htdocs 디렉토리에 저장해야 한다. 보통 원격접속지에서 ftp프로그램(알ftp, sunny ftp 등) 으로 접속하여 웹페이지 작업을 하게 되는데 /usr/local/httpd/htdocs 디렉터리에 파일들을 업로드시키기위해서는 root 계정으로 접속해야한다. 아니면 다른 계정으로 올려서 다시 파일을 이동시켜줘야 한다. root 계정을 이용하여 ftp 를 이용하는 것은 보안상 좋지 않고, 후자의 경우는 불편하고 번거롭다. 그래서 가상호스트(/usr/local/httpd/conf/extra/httpd-vhosts.conf 파일 수정 ) 로 웹서버를 구축한다. 2019-01-12 정보보안학과 20021002 조정현
httpd.conf 가상호스트로 설정…httpd.conf 파일 이해 ./extra/httpd-vhosts.conf 6. Httpd.conf 가상호스트로 설정…httpd.conf 파일 이해 httpd.conf ./extra/httpd-vhosts.conf ./extra/httpd-others.conf include include 2019-01-12 정보보안학과 20021002 조정현
vi. httpd-vhosts.conf vi httpd.conf 6. Httpd.conf vi. httpd-vhosts.conf <virtualhost *:80>……~…</virtualhost> 이 부분을 수정해야 한다. 위 부터 차례로 설명. 서버관리자의 이메일 주소 웹서비스할 파일들이 들어가는 디렉토리 지정 서버의 도메인 네임 또는 IP주소 vi httpd.conf 주석 처리 되어 있는 이 부분을 # Virtual hosts #Include conf/extra/httpd-vhosts.conf Include conf/extra/httpd-vhosts.conf 로 ‘#’을 빼준다. 이 파일을 수정 하여 가상호스트를 구축 2019-01-12 정보보안학과 20021002 조정현
[root@localhost /]# /etc/init.d/httpd start 6. Httpd.conf httpd 시작 port 80 열려있는 지 확인 [root@localhost /]# /etc/init.d/httpd start [root@localhost /]# ps -ef | grep httpd root 28966 1 3 23:37 ? 00:00:00 /usr/local/httpd/bin/httpd -k start daemon 28967 28966 0 23:37 ? 00:00:00 /usr/local/httpd/bin/httpd -k start daemon 28968 28966 0 23:37 ? 00:00:00 /usr/local/httpd/bin/httpd -k start daemon 28969 28966 0 23:37 ? 00:00:00 /usr/local/httpd/bin/httpd -k start daemon 28970 28966 0 23:37 ? 00:00:00 /usr/local/httpd/bin/httpd -k start daemon 28971 28966 0 23:37 ? 00:00:00 /usr/local/httpd/bin/httpd -k start root 28979 27222 0 23:37 pts/0 00:00:00 grep httpd 확인해보니 httpd가 프로세스에 띄어져 있다. [root@localhost /]# netstat -an | grep LISTEN | grep 80 tcp 0 0 :::80 :::* LISTEN unix 2 [ ACC ] STREAM LISTENING 8072 /var/run/dbus/system_bus_socket unix 2 [ ACC ] STREAM LISTENING 1708074 /tmp/ssh-asGQk27220/agent.27220 [root@localhost /]# 80번 포트가 잘 열려있다. 2019-01-12 정보보안학과 20021002 조정현
Centos5.2 에 Library files, mysql, httpd, php를 소스파일로 설치 6. Httpd.conf 지금까지… Centos5.2 에 Library files, mysql, httpd, php를 소스파일로 설치 httpd.conf 수정, 80번 포트 확인. 앞 장부터… ftp 서비스를 위해 proftpd를 설치 하고 web server test 를 시작 ….php로 아주 간단한 게시판을 만들어 db 와 연동되는 걸 확 인한다. 그 다음 메일 서버 구축을 위한 Qmail을 설치해 본다. 2019-01-12 정보보안학과 20021002 조정현
anonymous (계정 ftp로 alias) 접속 vi /etc/xinetd.d/proftpd standalone, 또는 inetd 방식 선택 standalone proftpd 데몬이 메모리에 항상 상주를 하여 ftp service를 해주는 형태 inetd inetd라는 데몬 프로그램이 client가 요청할때 proftpd를 호출하는 형태 현재 시스템은 메모리가 512램으로 작고 사용자가 적을 것이라 예상되기 때문에 inetd방식으로 한다. xinetd 를 재시작한다. [root@localhost /]# /etc/rc.d/init.d/xinetd restart xinetd ? ?? ?: [ OK ] xinetd (?)? ?? ?: [ OK ] xinetd 확인 [root@localhost bin]# ftpwho inetd FTP daemon: no users connected proftpd 다운로드 컴파일 및 설치 proftpd.conf 수정 xinetd 방식으로 운영하기 [root@localhost src]# wget ftp://ftp.proftpd.org/distrib/source/proftpd-1.3.1.tar.gz [root@localhost src]# tar xvfz proftpd-1.3.1.tar.gz [root@localhost src]# ls apm libs proftpd-1.3.1 proftpd-1.3.1.tar.gz [root@localhost src]# ./configure --prefix=/usr/local/proftpd --enable-autoshadow ….생략….. [root@localhost src]# make && make install [root@localhost proftpd-1.3.1]# ls /usr/local Zend bin etc games httpd include lib libexec mysql php proftpd sbin share src [root@localhost src]# cd /usr/local/proftpd [root@localhost proftpd]# ls bin etc include libexec man sbin share var [root@localhost proftpd]# cd etc [root@localhost etc]# ls proftpd.conf [root@localhost etc]# vi proftpd.conf /etc/xinetd.d/proftpd 가 없으면 새로 생성 [root@localhost xinetd.d]# vi proftpd anonymous (계정 ftp로 alias) 접속 vi /etc/xinetd.d/proftpd [root@localhost /]# cd etc/xinetd.d [root@localhost xinetd.d]# ls chargen-dgram discard-dgram ekrb5-telnet proftpd chargen-stream discard-stream gssftp rsync cvs echo-dgram klogin tcpmux-server daytime-dgram echo-stream krb5-telnet time-dgram daytime-stream eklogin kshell time-stream [root@localhost xinetd.d]# vi proftpd 2019-01-12 정보보안학과 20021002 조정현
selinux를 적용된 시스템에서는 디렉토리 보안문맥이 user_home_t로 구성되어 8. web server test selinux를 적용된 시스템에서는 디렉토리 보안문맥이 user_home_t로 구성되어 퍼미션이 755로 되어있어도 80포트에서 접근이 불가능. 해당 디렉토리를 chcon 을 이용해 변경 [root@localhost home]# ls -lZ drwx-----x ambition6 ambition6 user_u:object_r:httpd_sys_content_t ambition6 drwx-----x ataraxia ataraxia user_u:object_r:user_home_t ataraxia drwxrwxrwx ftp ftp user_u:object_r:httpd_sys_content_t ftp drwx------ root root system_u:object_r:file_t lost+found drwx-----x test test user_u:object_r:httpd_sys_content_t test [root@localhost home]# [root@localhost home]# chcon –R –t httpd_sys_content_t /home/ataraxia [root@localhost home]# ls –lZ /home/ataraxia drwx-----x ataraxia ataraxia user_u:object_r:httpd_sys_content_t ataraxia 2019-01-12 정보보안학과 20021002 조정현
웹서버 테스트 phpinfo() 함수 출력…. 8. web server test 웹서버 테스트 phpinfo() 함수 출력…. 2019-01-12 정보보안학과 20021002 조정현
mysql DB 생성 및 사용자에게 DB 권한 부여하기 9. apm 연동 테스트 mysql DB 생성 및 사용자에게 DB 권한 부여하기 2019-01-12 정보보안학과 20021002 조정현
9. apm 연동 테스트 간단한 방명록 만들기 2019-01-12 정보보안학과 20021002 조정현
insert.html, insert.php, list.php 파일 ftp로 올리기 9. apm 연동 테스트 insert.html, insert.php, list.php 파일 ftp로 올리기 2019-01-12 정보보안학과 20021002 조정현
9. apm 연동 테스트 2019-01-12 정보보안학과 20021002 조정현