APM 1 버전 설치 -> APM 2 버전 설치 


APM.vol1.egg

APM.vol2.egg

APM.vol3.egg

APM.vol4.egg

APM.vol5.egg

APM.vol6.egg

APM.vol7.egg


- 최신 APM 설치하기 -


- 순서 -

1. 이전 APM 삭제하기 

2. cmake 설치하기

3. mysql 설치하기

4. apache 설치하기

5. php 설치하기


-- 이전 APM 삭제하기 --

# /etc/init.d/mysqld stop

# /etc/init.d/httpd stop

# yum groupremove "MySQL 데이터베이스"

# yum groupremove "웹 서버"

# rm -rf /usr/local/mysql

# rm -rf /usr/local/php

# rm -rf /usr/local/apache



-- cmake 설치하기 --

- mysql 5.5.x 이상부터  mysql 컴파일 방법이 바뀌었다.


공식 다운로드 사이트 : http://cmake.org/


# rpm -qa | grep cmake    <-- 설치가 되어있다면 삭제를 먼저 한다.



# wget http://www.cmake.org/files/v2.8/cmake-2.8.12.1.tar.gz

# tar xzf cmake-2.8.12.1.tar.gz 

# cd cmake-2.8.12.1



# ./configure             <-- 실제 bootstrap 을 실행한다.

# make                    <-- 컴파일 

# make install            <-- 설치



# ls /usr/local/bin       <-- 설치된 파일들을 확인한다.

ccmake  cmake  cpack  ctest  

# ls /usr/local/doc/

cmake-2.8

# ls /usr/local/share/

cmake-2.8



- cmake 명령어 확인하기

- PATH 변수에 없으면 PATH 변수에 새로 추가한다.

# cmake

-bash: cmake: command not found

# PATH=$PATH:/usr/local/bin

# echo 'PATH=$PATH:/usr/local/bin' >> ~/.bashrc

# cmake

cmake version 2.8.12.1

Usage


  cmake [options] <path-to-source>

  cmake [options] <path-to-existing-build>

  :

  :


-- mysql 설치하기 --

##################

## MySQL 5.6.17 ##

##################


MySQL 설치 디렉토리 : /usr/local/mysql

MySQL 데이타 디렉토리 : /usr/local/mysql/data

MySQL 기본언어셋 : utf-8

MySQL 포트 : 3306

MySQL 설정파일 : /etc/mysql.conf -> /etc/my.cnf



공식 다운로드 사이트 : http://mysql.com 


다운로드 파일명 : mysql-5.6.17.tar.gz 

MD5: 82114fa7c13fa3ca897b34666577d9f4  



Downloads(GA) -> 

MySQL Community Edition (GPL) -> 

MySQL Community Server (GPL) -> 

Source Code 선택 ->  

Generic Linux (Architecture Independent), Compressed TAR Archive Download -> 

No thanks, just start my download 클릭해서 소스를 다운로드 한다.


# rpm -q ncurses-devel         <-- ncurses 개발 라이브러리가 없으면 설치한다.

# md5sum mysql-5.6.17.tar.gz   <-- md5sum 을 이용해서 md5 해쉬값을 확인한다.

82114fa7c13fa3ca897b34666577d9f4  mysql-5.6.17.tar.gz

# tar xzf mysql-5.6.17.tar.gz 

# cd mysql-5.6.17



- 환경설정

# cmake \

-DCMAKE_INSTALL=/usr/local/mysql \

-DWITH_EXTRA_CHARSETS=all \

-DMYSQL_DATADIR=/usr/local/mysql/data \

-DWITH_INNOBASE_STORAGE_ENGINE=1 \

-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \

-DSYSCONFDIR=/etc \

-DDEFAULT_CHARSET=utf8 \

-DDEFAULT_COLLATION=utf8_general_ci \

-DMYSQL_TCP_PORT=3306  


-- 컴파일/설치 작업 --

# make &&  make install



(오래 걸림 30분?)


-- 설치 후 세팅 작업 --

# cd support-files


- 설정파일을 복사한다. (설정내용은 수정해서 넣는다.)

# cp my-default.cnf /etc/my.cnf      


- 설정파일을 링크한다. (옵션)

# ln -s /etc/my.cnf /etc/mysql.conf  


- 실행스크립트를 복사한다.

# install -m 700 mysql.server /etc/init.d/mysqld   


- 부팅시 mysql 데몬을 자동으로 실행할 수 있도록 등록한다.

# chkconfig --add mysqld   

# chkconfig --list mysqld  

mysqld         0:off 1:off 2:on 3:on 4:on 5:on 6:off


- mysql 사용자를 생성한다. (없을때)

# useradd -M -u 27 -d /usr/local/mysql/data -s /bin/false mysql  


- MySQL DBMS의 실행파일들을 실행하기 위해 심볼릭링크를 생성

# ln -sf /usr/local/mysql/bin/* /usr/bin



- DB 초기화 작업 

# /usr/local/mysql/scripts/mysql_install_db \

> --user=mysql \

> --basedir=/usr/local/mysql \

> --datadir=/usr/local/mysql/data



- mysql 사용자로 권한을 모두 변경한다.

# chown -R mysql.mysql /usr/local/mysql/data   


- mysql 데몬을 실행한다.

# /etc/init.d/mysqld start

Starting MySQL...                                          [  OK  ]


- mysql 포트(3306)를 확인한다.

# netstat -nltp       

Active Internet connections (only servers)

Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name   

  :

  :  

tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN      480/mysqld          

  :

  :  


- mysql 접속을 한다. 

# rm -f ~/.my.cnf 



# mysql             <-- 접속이 잘되면 성공!!!

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 2

Server version: 5.6.17 Source distribution


Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.


Oracle is a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners.


Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.



mysql> select version();

+-----------+

| version() |

+-----------+

| 5.6.17    |

+-----------+

1 row in set (0.01 sec)


mysql> quit



-- mysql 관리자(root) 비번설정 --

- 사용법 :  mysqladmin -u root password 'new-password'

# mysqladmin -u root password 'qwer1234'

# vi ~/.my.cnf



-- my.cnf --

[client]

host = localhost

user = root

password = qwer1234

-- my.cnf --



# mysql   <-- 접속이 되면 비번변경 성공!!!



-- default user 삭제 --

mysql> select host,user,password from mysql.user;

+-------------------+------+-------------------------------------------+

| host              | user | password                                  |

+-------------------+------+-------------------------------------------+

| localhost         | root | *C369E7BF1EBB1D0B149AF952B9E31EC36536BEFC |

| ksw.boaniyagi.com | root |                                           |

| 127.0.0.1         | root |                                           |

| ::1               | root |                                           |

| localhost         |      |                                           |

| ksw.boaniyagi.com |      |                                           |

+-------------------+------+-------------------------------------------+

6 rows in set (0.00 sec)



mysql> delete from mysql.user where password = '';  <-- 삭제

Query OK, 5 rows affected (0.05 sec)


mysql> select host,user,password from mysql.user;  <-- 삭제확인

+-----------+------+-------------------------------------------+

| host      | user | password                                  |

+-----------+------+-------------------------------------------+

| localhost | root | *C369E7BF1EBB1D0B149AF952B9E31EC36536BEFC |

+-----------+------+-------------------------------------------+

1 row in set (0.00 sec)



-- default db 삭제 --

mysql> select host,user,db from mysql.db;  <-- 확인

+------+------+---------+

| host | user | db      |

+------+------+---------+

| %    |      | test    |

| %    |      | test\_% |

+------+------+---------+

2 rows in set (0.00 sec)


mysql> delete from mysql.db ;   <-- 삭제

Query OK, 2 rows affected (0.00 sec)


mysql> select host,user,db from mysql.db;  <-- 삭제확인

Empty set (0.00 sec)


mysql> flush privileges;   <-- 적용



--일반 유저를 생성할때--

- mysql 에서 사용자를 생성하기 위한 두 가지 방법

- 첫번째 : insert 를 이용하는 방법

- 두번째 : grant 문을 이용해서 생성하는 방법

- 사용자를 생성할때는 3가지가 쌍으로 가야된다. 

- 1. user table 에 사용자에 대한 권한 정보를 넣는다.

- 2. db   table 에 DB에 대한 권한 정보를 넣는다.

- 3. 사용자가 사용할 수 있는 DB를 생성한다.


mysql> insert into mysql.user (host,user,password,ssl_type,ssl_cipher,x509_issuer,x509_subject) 

    -> values ('localhost','ictsec', password('12345'),'','','',''); 

mysql> insert into mysql.db values ('localhost','ictsec','ictsec',

    -> 'y','y','y','y','y','y','y','y','y','y','y','y','y','y','y','y','y','y','y');

mysql> create database ictsec;



mysql> select * from mysql.user \G



--일반 유저를 생성할때--


o apache 설치하기

##################

## Apache 2.4.9 ##

##################


apache 설치 디렉토리 : /usr/local/apache

apache 데이타 디렉토리 : /usr/local/apache/htdocs

apache 기본언어셋 : utf-8

apache 포트 : 80

apache 설정파일 : /etc/httpd.conf -> /usr/local/apache/conf/httpd.conf


공식 다운로드 사이트 : httpd.apache.org/


다운로드 파일명 : httpd-2.4.9.tar.gz 

MD5: cad66480140a4444ec0af5bf037c73e1


http://apache.org -> HTTP Server (http://httpd.apache.org/)


Apache httpd 2.4.9 Released  -> 

Download 클릭 ->

Unix Source: httpd-2.4.9.tar.gz


# rpm -qa | grep http        <-- 설치가 되어있다면 삭제를 먼저 한다.



# yum -y install pcre-devel  <-- pcre-devel 패키지 설치(없으면 에러남)

# yum -y install zlib-devel  <-- 데이터 전송 압축 라이브러리 (없으면 openssl 쪽에서 에러발생)




-- 소스파일 다운로드 - 

- 아래 파일은 공식 사이트에서 링크를 확인한다.

# wget http://apache.tt.co.kr/httpd/httpd-2.4.9.tar.gz

# wget http://archive.apache.org/dist/apr/apr-1.5.0.tar.gz  

# wget http://archive.apache.org/dist/apr/apr-util-1.5.3.tar.gz 

# wget http://www.openssl.org/source/openssl-1.0.1g.tar.gz 

# wget http://sourceforge.net/projects/pcre/files/latest/download?source=files

-- apr 설치 --

# tar xzf apr-1.5.0.tar.gz 

# cd apr-1.5.0

# ./configure && make && make install



# ls /usr/local/apr/             <-- 설치시 이 디렉토리에 설치된다.

# cd ..


-- apr-util 설치 --

# tar xzf apr-util-1.5.3.tar.gz  

# cd apr-util-1.5.3

# ./configure --with-apr=/usr/local/apr && make && make install



# cd ..


-- openssl 설치 --

# tar xzf openssl-1.0.1g.tar.gz 

# cd openssl-1.0.1g

./config \

--prefix=/usr/local/openssl \

--openssldir=/usr/local/openssl \

threads  zlib  shared 

# make 

# make test

# make install



# cd ..



-- pcre 설치 --

# wget http://sourceforge.net/projects/pcre/files/latest/download?source=files

# tar xjf pcre-8.35.tar.bz2

# cd pcre-8.35

# ./configure

# make

# make install



-- 공유라이브러리 설정 --

# vi /etc/ld.so.conf


  :

/usr/local/lib                 <-- 추가

/usr/local/apr/lib             <-- 추가

/usr/local/openssl/lib         <-- 추가



# ldconfig (엘디컨피그)

# PATH=$PATH:/usr/local/bin    <-- 추가 (pcre-config 명령어 때문에)



-- 환경설정/컴파일/설치 --

# tar xzf httpd-2.4.9.tar.gz

# cd httpd-2.4.9

# ./configure \

--prefix=/usr/local/apache \

--enable-mods-shared=all \

--enable-module=ssl \

--enable-module=so \

--with-mpm=prefork \

--with-apr=/usr/local/apr \

--with-apr-util=/usr/local/apr

# make 

# make install



# ln -s /usr/local/apache/bin/* /usr/bin

# apachectl start 



-- 설치 후 세팅 작업 --


# ln -s /usr/local/apache/conf/httpd.conf /etc  <-- 설정파일을 링크한다.


# /usr/local/apache/bin/httpd -l                <-- (mod_so) 모듈을 확인한다.

# /usr/local/apache/bin/apachectl restart         <-- 웹서버를 재시작한다.

# netstat -nltp                                 <-- 80 번 포트를 확인한다.



브라우저에서 httpd://192.168.56.101 접속        <-- Host OS 에서 접속한다.

It works! 가 출력되면 성공 



# echo "<center> Hello~ webserver </center>" > /usr/local/apache/htdocs/test.html



브라우저에서 httpd://192.168.56.101/test.html 접속        <-- Host OS 에서 접속한다.

Hello~ webserver 가 출력되면 성공 



# cd ..


o php 설치

http://php.net


################

## PHP 5.5.11 ##

################

공식 다운로드 사이트 : http://php.net 

->  downloads page 링크를 클릭해서 kr1.php.net 링크를 클릭하면 

   자동으로 다운로드 된다.

자동으로 다운로드된 php 파일을 리눅스로 가져다 놓는다.


# tar xzf php-5.5.11.tar.gz 

# cd php-5.5.11

# ./configure \

--prefix=/usr/local/php \

--with-mysql=/usr/local/mysql \

--with-apxs2=/usr/local/apache/bin/apxs


+ 잘되면 GD 라이브러브 연동까지 같이 옵션을 줄것!

--enable-gd-native-ttf

--with-jpeg-dir

--with-png-dir

--with-gd


# make 

# make test 

# make install



-- 설치 후 세팅 작업 --

- 설정파일을 복사한다.

# cp php.ini-production /usr/local/php/lib/php.ini

# ln -s /usr/local/php/lib/php.ini /etc/php.conf  <-- 설정파일 링크



# vi /usr/local/apache/conf/httpd.conf            <-- php 인식 부분 확인/추가

-- /usr/local/apache/conf/httpd.conf --

  :

  :

LoadModule php5_module        modules/libphp5.so  <-- 확인 (166번 라인)

...

<IfModule dir_module>

  DirectoryIndex index.html index.php index.htm  <-- 추가 (266번 라인)

</IfModule>

...

AddType application/x-gzip .gz .tgz               <-- 이 밑에 아래 내용을 추가 (394번 라인)

AddType application/x-httpd-php .php .html .htm  <-- 추가

AddType application/x-httpd-php-source .phps           <-- 추가 (보안상 안쓰는 것이 좋다. 단! 여기서는 연습을 해야 하니까 쓴 것이다. ) 

-- /usr/local/apache/conf/httpd.conf --





# cp

# /etc/init.d/httpd stop          <-- restart 하면 php 파일이 다운로드 되므로 

# /etc/init.d/httpd start         <-- 반드시 stop 하고 start 한다.


# cd /usr/local/apache/htdocs  <-- Test Page 생성

# vi abcd.html  <-- 보안상 index.html에 추가하지 않고 abcd.html에 추가한다.



<?php

phpinfo();

?>



브라우저로 확인 : http://192.168.56.101/abcd.html



# rm -f abcd.html   <-- 확인 후 삭제한다. 



################

## phpmyadmin ##

################


다운로드 공식 사이트 : http://www.phpmyadmin.net


다운로드 받고 리눅스로 업로드한다.


- 업로드한 파일을 압축해제 한다.

# unzip phpMyAdmin-4.1.13-all-languages.zip 

# mv phpMyAdmin-4.1.13-all-languages \

> /usr/local/apache/htdocs/phpmyadmin



# include 지시자에 설정된 파일들의 수정된 내용을 사용하고자 한다면 

# 반드시 주석을 제거해야 한다.

Include conf/extra/httpd-default.conf



.htaccess 가 설정이 되었을때 보안이 뚫릴 가능성이 있다.

web 보안과 연결되어 있다.



APACHE-LAB> 아파치 버전 숨기기 



# vi /usr/local/apache/conf/httpd.conf



-- /usr/local/apache/conf/httpd.conf --

  :

  :

Include conf/extra/httpd-default.conf


-- /usr/local/apache/conf/httpd.conf --



# vi /usr/local/apache/conf/extra/httpd-default.conf



-- /usr/local/apache/conf/extra/httpd-default.conf --

  :

  :

ServerTokens Prod

-- /usr/local/apache/conf/extra/httpd-default.conf --



# apachectl restart


# nc localhost 80

GET / HTTP/1.1


HTTP/1.1 400 Bad Request

Date: Wed, 14 May 2014 10:57:47 GMT

Server: Apache                        <-- Apache 만 출력된다.

Content-Length: 226

Connection: close

Content-Type: text/html; charset=iso-8859-1



APACHE-LAB> 아파치의 mod_auth 모듈을 이용한 디렉토리 인증을 걸어보자.


- 순서 -

1. 인증 디렉토리 생성

2. 웹서버 설정 변경

3. 인증파일 생성 (.htaccess)

4. 사용자 인증 파일 생성 (.htpasswd)

5. 확인



1. 인증 디렉토리 생성

# cd /usr/local/apache/htdocs

# mkdir mysqladmin

# cd mysqladmin/

# echo "mysqladmin directory" > index.html



2. 웹서버 설정 변경

# vi /etc/httpd.conf

-- /etc/httpd.conf --

  :

  :

<Directory "/usr/local/apache/htdocs/mysqladmin">

     Options Indexes FollowSymLinks

     AllowOverride All               <-- None -> All 로 수정

     Require all granted

</Directory>

-- /etc/httpd.conf --



- 설정파일 구문 분석 (정상이면 웹서버를 재시작한다.)

# apachectl configtest

Syntax OK

# apachectl restart



3. 인증파일 생성 (.htaccess)


- 인증을 걸고자 하는 디렉토리에 .htaccess 파일을 생성한다.

# vi .htaccess



-- .htaccess --

AuthName "관리자 영역" 

AuthType Basic

AuthUserFile   "/usr/local/apache/.htpasswd"

AuthGroupFile  /dev/null

<Limit GET POST>

require valid-user

</Limit>

-- .htaccess --



4. 사용자 인증 파일 생성 (.htpasswd)

- htpasswd 명령어를 이용해서 .htpasswd를 생성

# cd /usr/local/apache/

# htpasswd -c .htpasswd webadmin

New password:             <-- 암호 입력

Re-type new password:     <-- 암호 입력

# cat .htpasswd 

webadmin:$apr1$lVRyr6VP$aqmTAE2q0xszpke0Boxe01



5. 확인

http://192.168.56.101/mysqladmin/  <-- 접근시 로그인창이 나오면 성공






php에서 불필요한 함수나 보안상의 이유로 사용하지 말아야하는 함수들은

php 설정파일에서 에서 disable_functions 에 넣어두면 된다.


display_errors 에 화면에 에러출력을 보여줄 것인지 말아야할 것인지 선택


- HTTP 헤더에 php 버전정보 출력여부

expose_php = Off


(/usr/local/apache/conf/extra/httpd-default.conf 에서


ServerTokens Full 로 되어 있어야 함. 또는 /usr/local/apache/conf/httpd.conf에서


Include conf/extra/httpd-default.conf 에 주석 추가)




on 이었을 경우



# apachectl restart (설정 바꾸면 항상)

# nc localhost 80

GET / HTTP/1.1


HTTP/1.1 400 Bad Request

Date: Wed, 14 May 2014 04:12:16 GMT

Server: Apache/2.4.9 (Unix) PHP/5.5.11




off 이었을 경우



GET / HTTP/1.1


HTTP/1.1 400 Bad Request

Date: Wed, 14 May 2014 04:13:25 GMT

Server: Apache/2.4.9 (Unix)




o 웹페이지에 접근시 읽어가는 사용자를 지정하는 지시자


<IfModule unixd_module>

 User daemon

 Group daemon

</IfModule>



[root@www htdocs]# ls -ld

drwxr-xr-x 4 root root 4096  5월 14 11:24 .

[root@www htdocs]# chmod o= .

[root@www htdocs]# ls -ld

drwxr-x--- 4 root root 4096  5월 14 11:24 .

[root@www htdocs]# 


- 웹페이지에 접근시 에러가 발생된다.


Forbidden


You don't have permission to access / on this server.



htdocs 디렉터리의 소유자를 daemon으로 바꿔봄


chown daemon .

ls -ld

chmod u-x .

ls -ld



다시 접근 했을때 정상적으로 접근 가능




.swp 파일은 vi로 수정할 때 임시로 만들어 놓는 임시 파일이다


vi a.txt 수정하고 있는 중이면

vi .a.txt.swp 가 생성된다.

a.txt 수정 중 비정상 종료를 하면

a.txt.swp가 그대로 남아있게 된다

보안상 좋지 않다


테스트



수정 



저장하지 않고 Ctrl + Z



http://192.168.0.13/.a.txt.swp 접근 시 다운로드 됨



임시 파일에서도 정확히는 아니어도


a.txt의 내용을 대충 알 수 있게 된다.




exe 파일 다운로드 막기


# cd /usr/local/apahce/htdocs

# touch 1.exe


/usr/local/apache/htdocs/1.exe


# vim /usr/local/apache/conf/httpd.conf



## 아래 추가

<Files "*.exe">

Require all denied

</Files>



# apachectl restart


http://192.168.0.13/1.exe 접근 시 거부 당함




에러 메시지 표시



# tail -f /usr/local/apache/logs/error_log



http://192.168.56.101/askjfakfajk.html




apache 로그포맷 형식

웹서버 상태코드 

참고 : http://ko.wikipedia.org/wiki/HTTP_%EC%83%81%ED%83%9C_%EC%BD%94%EB%93%9C

- 200(성공), 404(없는 파일)


LogFormat "%h %t \" %r \" %{Referer}i " test

CustomLog "logs/access_log" test


# grep 404 /usr/local/apache/logs/access_log 

# grep 200 /usr/local/apache/logs/access_log 




아파치 모듈 개발 


- alias 모듈은 DocumentRoot 디렉토리 밖에 위치하는 디렉토리를

- 웹디렉토리에 접근할 수 있도록 설정하는 지시자이다.

- DocumentRoot 디렉토리에 없으므로 보안이 좀더 강력하다.


LAB-APACHE> alias 모듈을 이용한 특정 디렉토리 접근 설정하기

alias 모듈 : alias_module modules/mod_alias.so

사용법 : alias /webpath /full/filesystem/path


- 순서 -

1. 서비스 디렉토리를 허용한다.

2. alias 를 설정한다.

3. 디렉토리를 생성한다.

4. 웹서버를 재시작한다.

5. 확인한다.


<Directory />  

    AllowOverride none

    Require all denied

</Directory>   

<Directory "/home/webpage">

    AllowOverride none

    Require all granted

</Directory>

<IfModule alias_module>

    Alias  /webpage/ "/home/webpage/"

</IfModule>



# mkdir /home/webpage

# echo webpage > /home/webpage/index.html

# cd /usr/local/apache/conf/

# chmod go= httpd.conf

# ls -l httpd.conf

-rw------- 1 root root 12217  5월 14 15:33 httpd.conf

# apachectl restart



http://192.168.56.101/webpage/ 접속

웹에서는 /webpage로 접근 했지만 실제 디렉터리는

/home/webpage



preforkMPM, workerMPM 알아볼것!!!



LAB-APACHE> userdir 모듈 사용하기 


- 순서 -

1. userdir 모듈 사용하기

2. 설정파일을 include 

3. 아파치 재시작

4. 사용자 세팅 

5. 확인



1. userdir 모듈 사용하기

LoadModule userdir_module modules/mod_userdir.so



2. 설정파일을 include 

Include conf/extra/httpd-userdir.conf



3. 아파치 재시작

apachectl restart

4. 사용자 세팅 

# useradd -D -b /home

# mkdir /etc/skel/public_html

# useradd testuser

# chmod 711 ~testuser

# install -m 644 -o testuser -g testuser /dev/null ~testuser/public_html/index.html

# echo testuser > ~testuser/public_html/index.html



5. 확인

http://192.168.56.101/~testuser/

    <-- testuser 가 출력이 되면 성공!



APACHE-LAB> 아파치의 mod_auth 모듈을 이용한 디렉토리 인증을 걸어보자.

--> 아까 해봤으니 패스


- 순서 -

1. 인증 디렉토리 생성

2. 웹서버 설정 변경

3. 인증파일 생성 (.htaccess)

4. 사용자 인증 파일 생성 (.htpasswd)

5. 확인



1. 인증 디렉토리 생성

# cd /usr/local/apache/htdocs

# mkdir mysqladmin

# cd mysqladmin/

# echo "mysqladmin directory" > index.html


2. 웹서버 설정 변경

# vi /etc/httpd.conf

-- /etc/httpd.conf --

  :

  :

<Directory "/usr/local/apache/htdocs/mysqladmin">

     Options Indexes FollowSymLinks

     AllowOverride All               <-- None -> All 로 수정

     Require all granted

</Directory>

-- /etc/httpd.conf --


- 설정파일 구문 분석 (정상이면 웹서버를 재시작한다.)

# apachectl configtest

Syntax OK

# apachectl restart


3. 인증파일 생성 (.htaccess)


- 인증을 걸고자 하는 디렉토리에 .htaccess 파일을 생성한다.

# vi .htaccess

-- .htaccess --

AuthName "관리자 영역" 

AuthType Basic

AuthUserFile   "/usr/local/apache/.htpasswd"

AuthGroupFile  /dev/null

<Limit GET POST>

require valid-user

</Limit>

-- .htaccess --


4. 사용자 인증 파일 생성 (.htpasswd)

- htpasswd 명령어를 이용해서 .htpasswd를 생성

# cd /usr/local/apache/

# htpasswd -c .htpasswd webadmin

New password:             <-- 암호 입력

Re-type new password:     <-- 암호 입력

# cat .htpasswd 

webadmin:$apr1$lVRyr6VP$aqmTAE2q0xszpke0Boxe01


5. 확인

http://192.168.56.101/mysqladmin/  <-- 접근시 로그인창이 나오면 성공



# 반드시 주석을 제거해야 한다.

Include conf/extra/httpd-default.conf


.htaccess 가 설정이 되었을때 보안이 뚫릴 가능성이 있다.

web 보안과 연결되어 있다.



APACHE-LAB> 아파치 버전 숨기기 

--> 아까 해봤으니 패스


# vi /usr/local/apache/conf/httpd.conf

-- /usr/local/apache/conf/httpd.conf --

  :

  :

Include conf/extra/httpd-default.conf


-- /usr/local/apache/conf/httpd.conf --


# vi /usr/local/apache/conf/extra/httpd-default.conf

-- /usr/local/apache/conf/extra/httpd-default.conf --

  :

  :

ServerTokens Prod

-- /usr/local/apache/conf/extra/httpd-default.conf --


# apachectl restart


# nc localhost 80

GET / HTTP/1.1


HTTP/1.1 400 Bad Request

Date: Wed, 14 May 2014 10:57:47 GMT

Server: Apache                        <-- Apache 만 출력된다.

Content-Length: 226

Connection: close

Content-Type: text/html; charset=iso-8859-1