APM 1 버전 설치 -> APM 2 버전 설치
- 최신 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