##############################[ HTTP Response Code ]###############################
~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'
<웹서버 메시지 함축적 의미 내용>
{100번대 [정보전송]}: 임시적인 응답을 나타내는 것은 status-Line과 선택적인
헤더들로 구성되어 있고 빈 줄로 끝을 맺는다. HTTP/1.0 까지는 계열에 대한
어떤 정의도 이루어지지 않았기 때문에 실험적인 용도 이외에는 추가적인
서버 측의 응답은 없다.
{200번대 [성공]}: 클라이언트의 요구가 성공적으로 수신되어 처리되었음을
의미한다.
{300번대 [리다이렉션]}: 해당 요구사항을 처리하기 위해서는 사용자 에이전트에
의해 수행되어야 할 추가적인 동작이 있음을 의미한다.
{400번대 [클라이언트에러]}: 클라이언트가 서버에게 보내는 요구 메시지를
완전히 처리하지 못한 경우와 같이 클라이언트에서 오류가 발생한 경우
사용된다.
{500번대 [서버측에러]}: 서버 자체에서 발생된 오류상황이나 요구사항을 제대로
처리할 수 있을 때 사용된다.
</웹서버 메시지 함축적 의미 내용>
~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'
~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'
<HTTP Response Code>
성공(2xx)
200ok 요청이 성공적으로 수행되었음
재전송(3xx)
301 Moved Premanently : 요청한 리소스에 Location field에 위치한
새로운 영구적인 URL이 주어진 경우
302 Moved Temporanly : 요청한 리소스에 Location field에 위치한 임시적으로
새로운 URL 이 주어진 경우
클라이언트에러(4xx)
400 Bad Request : 클라이언트의 요청을 서버가 이해하지 못함
401 Unauthorized : 요청한 리소스에 접근시 사용자 인증이 필요함
403 Fortidden : 서버가 클라이언트의 요청에 대한 응답을 거절한 상태 일반적으로
GET 방식을 사용할 때 이런 응답을 받을 수 있는데 아직 적은 정보만 보여준다.
그러나 HEAD 방식을 사용하면 일부 서버는 왜 이러한 상태가 발생했는지에 대한
자세한 정보를 주기도 한다.
404 Not Found : 요청한 리소스가 없는 경우
서버 에러 (5xx)
500 Internal Server Error : 서버가 요청을 처리할 때 내부적인 에러가 발생한 경우
501 Not Implemented : 서버가 요청을 처리하지 못하는 경우
502 Bad Gateway : 서버가 필요한 리소스를 가지고 있어 그 리소스를 요청한 상위
서버로 부터 잘못된 응답을 받은 경우 이 응답은 HTTP프락시에 의해 나타난다.
503 Service Unavailable : 서버가 일시적으로 과부하 상태가 되어 요청에 대한
응답을 할 수 없는 경우
</HTTP Response Code>
~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'
~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'
~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'
------------------------------------[ END ]------------------------------------
########################[ 아파치 에러메시지 출력방법 ]########################
[root@kakasi:09:51:08]#vi httpd.conf
``````````````````````````````````````````````````````````````````````````````
417 # 1) plain text 2) local redirects 3) external redirects
3)별도의 서버를 둬서 에러메시지를 출력해주는 방법
420 #ErrorDocument 500 "The server made a boo boo." //plain text
421 #ErrorDocument 404 /missing.html //local redirects
422 #ErrorDocument 404 "/cgi-bin/missing_handler.pl" //local redirects
423 #ErrorDocument 402 http://www.example.com/subscription_info.html
(특정한 사이트에 에러 스크립트를 보여주는 것)
424 #
425 ErrorDocument 403 "Forbidden Error getout of here!!!!" <--추가 삽입
``````````````````````````````````````````````````````````````````````````````
:wq
[root@kakasi:09:57:09]#service httpd restart
~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'
[root@kakasi:09:57:26]#mv index.html index.html.old
[root@kakasi:09:57:29]#ls
index.html.old test test1 test2 test.html
[root@kakasi:09:57:30]#pwd
/usr/local/http/web
~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'
http://192.168.10.180/
[인터넷 익스플로러] --> [도구] --> [고급] --> [HTTP 오류 메시지 표시] 체크해제
http://192.168.10.180/
Forbidden Error getout of here!!!! <--내가 쓴 메시지대로 나옴.
(Plain text 에러메시지 출력방법)
~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'
[root@kakasi:09:57:33]#ll ../error/
total 288
drwxr-xr-x 3 root root 4096 Oct 14 04:05 .
drwxr-xr-x 16 root root 4096 Oct 15 12:05 ..
-rw-r--r-- 1 usera usera 4256 Nov 13 2005 contact.html.var
-rw-r--r-- 1 usera usera 9108 Nov 13 2005 HTTP_BAD_GATEWAY.html.var
-rw-r--r-- 1 usera usera 6633 Nov 13 2005 HTTP_BAD_REQUEST.html.var
-rw-r--r-- 1 usera usera 11193 Nov 13 2005 HTTP_FORBIDDEN.html.var
-rw-r--r-- 1 usera usera 12700 Nov 13 2005 HTTP_GONE.html.var
-rw-r--r-- 1 usera usera 12846 Nov 13 2005 HTTP_INTERNAL_SERVER_ERROR.html.var
-rw-r--r-- 1 usera usera 7539 Nov 13 2005 HTTP_LENGTH_REQUIRED.html.var
-rw-r--r-- 1 usera usera 6773 Nov 13 2005 HTTP_METHOD_NOT_ALLOWED.html.var
-rw-r--r-- 1 usera usera 13255 Nov 13 2005 HTTP_NOT_FOUND.html.var
-rw-r--r-- 1 usera usera 6336 Nov 13 2005 HTTP_NOT_IMPLEMENTED.html.var
-rw-r--r-- 1 usera usera 6565 Nov 13 2005 HTTP_PRECONDITION_FAILED.html.var
-rw-r--r-- 1 usera usera 7802 Nov 13 2005 HTTP_REQUEST_ENTITY_TOO_LARGE.html.var
-rw-r--r-- 1 usera usera 7099 Nov 13 2005 HTTP_REQUEST_TIME_OUT.html.var
-rw-r--r-- 1 usera usera 7103 Nov 13 2005 HTTP_REQUEST_URI_TOO_LARGE.html.var
-rw-r--r-- 1 usera usera 7822 Nov 13 2005 HTTP_SERVICE_UNAVAILABLE.html.var
-rw-r--r-- 1 usera usera 13035 Nov 13 2005 HTTP_UNAUTHORIZED.html.var
-rw-r--r-- 1 usera usera 6353 Nov 13 2005 HTTP_UNSUPPORTED_MEDIA_TYPE.html.var
-rw-r--r-- 1 usera usera 7009 Nov 13 2005 HTTP_VARIANT_ALSO_VARIES.html.var
drwxr-xr-x 2 usera usera 4096 Sep 24 08:28 include
-rw-r--r-- 1 usera usera 1979 Jul 12 2006 README
~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'
[root@kakasi:10:01:46]#vi ../conf/extra/httpd-multilang-errordoc.conf
``````````````````````````````````````````````````````````````````````````````
35 ErrorDocument 400 /error/HTTP_BAD_REQUEST.html.var
36 ErrorDocument 401 /error/HTTP_UNAUTHORIZED.html.var
37 ErrorDocument 403 /error/HTTP_FORBIDDEN.html.var
38 ErrorDocument 404 /error/HTTP_NOT_FOUND.html.var
39 ErrorDocument 405 /error/HTTP_METHOD_NOT_ALLOWED.html.var
40 ErrorDocument 408 /error/HTTP_REQUEST_TIME_OUT.html.var
41 ErrorDocument 410 /error/HTTP_GONE.html.var
42 ErrorDocument 411 /error/HTTP_LENGTH_REQUIRED.html.var
43 ErrorDocument 412 /error/HTTP_PRECONDITION_FAILED.html.var
44 ErrorDocument 413 /error/HTTP_REQUEST_ENTITY_TOO_LARGE.html.var
45 ErrorDocument 414 /error/HTTP_REQUEST_URI_TOO_LARGE.html.var
46 ErrorDocument 415 /error/HTTP_UNSUPPORTED_MEDIA_TYPE.html.var
47 ErrorDocument 500 /error/HTTP_INTERNAL_SERVER_ERROR.html.var
48 ErrorDocument 501 /error/HTTP_NOT_IMPLEMENTED.html.var
49 ErrorDocument 502 /error/HTTP_BAD_GATEWAY.html.var
50 ErrorDocument 503 /error/HTTP_SERVICE_UNAVAILABLE.html.var
51 ErrorDocument 506 /error/HTTP_VARIANT_ALSO_VARIES.html.var
52 이미 세팅이 다 되어있다.
``````````````````````````````````````````````````````````````````````````````
:wq
[root@kakasi:09:57:13]#vi httpd.conf
``````````````````````````````````````````````````````````````````````````````
425 #ErrorDocument 403 "Forbidden Error getout here!!!!" <--주석달기
448 # Multi-language error messages
449 Include conf/extra/httpd-multilang-errordoc.conf <--주석 풀고
``````````````````````````````````````````````````````````````````````````````
:wq
[root@kakasi:10:04:02]#service httpd restart
~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'
http://192.168.10.180/ 접속하여 확인
접근이 거부됨!
요청한 디렉토리에 접근할 수 있는 권한이 없습니다. 디렉토리에 첫 페이지가 없거나 아니
면 읽기 보호가 되어 있습니다.
만약 이것이 서버 오류라고 생각되면, 웹 관리자에게 연락하시기 바랍니다.
Error 403
192.168.10.180
Fri Oct 16 10:04:20 2009
Microsoft IIS/6.0/6.0.15
~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'
에러 메시지 내용을 바꾸려면 /usr/local/http/error/ 안에 있는 파일들의 내용을
바꾸면 된다.
root@kakasi:10:05:07]#pwd
/usr/local/http/error/include
[root@kakasi:10:05:08]#ls
bottom.html spacer.html top.html
위 파일을 수정하면 정보를 안 뜨게 할 수 있다.
------------------------------------[ END ]------------------------------------
###########################[ HTTP Method 접근 제어]############################
~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'
#LimitExcept - 특정 디렉터리 내에서 허용할 HTTP Method 지정
일반적으로 HEAD GET POST 정도만 허용하는 것이 좋다.
<HTTP Method>
GET - 일반적인 웹 문서를 보기 위해 사용하는 Method로 URI에 위치한 정보에
HEAD – 클라이언트의 요청에 대해 서버가 응답할 때 데이터를 보내지 않고 헤더 정보만 보
낸다.
POST – CGI 등을 이용하여 서버에 데이터를 업로드 하는 경우 등에 사용된다. 주로 서버에
글을 올리거나 파일을 업로드 할 때 사용된다. GET 과 달리 서버에 보낸 데이터는 body 부
분에 위치한다.
DELETE - 서버에 잇는 특정 데이터를 삭제하도록 요청한다.
OPTION - 서버로투터 옵션을 됴청한다.
TRACE - 디버깅등에 사용된다.
PROPFIND, PROPPATCH DAV/WebDAV 등에서 사용된다.
CONNECT Proxy - 클라이언트의 요청을 허용하는데 사용된다.
~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'
~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'
[root@kakasi:10:08:47]#telnet localhost 80
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
OPTIONS / HTTP/1.0
HTTP/1.1 200 OK
Date: Fri, 16 Oct 2009 01:08:53 GMT
Server: Microsoft IIS/6.0/6.0.15
Allow: GET,HEAD,POST,OPTIONS,TRACE
Content-Length: 0
Connection: close
Content-Type: httpd/unix-directory
Connection closed by foreign host.
~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'
이렇게 하면 HTTP 버젼 정보 나오고 내가 사용할 수 있는
HTTP Method들을 확인할 수 있다.
내가 필요없는 Method들을 올려놓을 필요가 없다.
이런 Method들을 잘 구별하여 사용하여야 한다.
사용하는 놈만 올려야한다.
그걸 제어하는게 LimitExcept 부분이다.
[root@kakasi:09:57:13]#vi httpd.conf
``````````````````````````````````````````````````````````````````````````````
168 <LimitExcept GET POST> <-- GET POST를 빼고 제한 하겠다.
169 Order allow,deny
170 Deny from all <-- GET POST를 뺀 다른 모든 Method는 다 거부함.
169 </LimitExcept GET POST>
``````````````````````````````````````````````````````````````````````````````
:wq
<실습>
[root@kakasi:09:57:13]#vi httpd.conf
``````````````````````````````````````````````````````````````````````````````
190 <Directory "/usr/local/http/web">
191 #
192 <LimitExcept POST>
193 Order allow,deny
194 Deny from all
195 </LimitExcept>
``````````````````````````````````````````````````````````````````````````````
:wq
[root@kakasi:10:20:25]#service httpd restart
[root@kakasi:10:16:50]#tail -f /weblogs/access_log.20091016
[인터넷 익스플로러] --> [http://192.168.10.180] --> 접속
[로그 보기]
[root@kakasi:10:04:02]#service httpd restart
[root@kakasi:10:09:31]#cd ../../web
[root@kakasi:10:16:49]#ls
index.html.old test test1 test2 test.html
[root@kakasi:10:16:49]#mv index.html.old index.html
[root@kakasi:10:16:50]#
_____________________________________________________________________________
127.0.0.1 - - [16/Oct/2009:10:08:53 +0900] "OPTIONS / HTTP/1.0" 200 - "-" "-"
192.168.10.26 - - [16/Oct/2009:10:16:59 +0900] "GET / HTTP/1.1" 200 12 "-"
"Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; Mozilla/4.0
(compatible; M
-----------------------------------------------------------------------------
-----------------------------------------------------------------------------
q192.168.10.26 - - [16/Oct/2009:10:20:32 +0900] "GET / HTTP/1.1" 403 1002 "-"
"Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; Mozilla/4.0
(compatible; MSIE 6.0; Windows NT 5.1; SV1) ; InfoPath.2)"
_____________________________________________________________________________
:설명:
처음에 LimitExcept 에서 POST 방식을 제외하고 다 제한 했기때문에
인터넷 익스플로러로 웹서버에 접속할때 GET으로 들어오는데
제한을 걸기전엔 200 코드로 정상이었으나 제한을 건다음 403 에러코드를 출력하는
것을 볼 수 있다.
이런 식으로 HTTP Method 를 가지고 접근 제어를 할 수 있다.
~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'
{이제 디렉토리마다 설정하게끔 .htaccess 파일을 생성하여
HTTP Method를 가지고 LimitExcept를 해보자}
시작하기 전에 아까 httpd.conf 파일에서 LimitExcept로 제한했던 것을 주석달아서
없애자.
[root@kakasi:10:21:21]#pwd
/usr/local/http/web
[root@kakasi:10:21:21]#vi .htaccess
``````````````````````````````````````````````````````````````````````````````
RewriteEngine On
RewriteCond %{REQUEST_METHOD} ^GET
RewriteRule .* -[F]
``````````````````````````````````````````````````````````````````````````````
:wq
[root@kakasi:11:35:23]#service httpd restart
[root@kakasi:10:16:50]#tail -f /weblogs/access_log.20091016
[인터넷 익스플로러] --> [http://192.168.10.180] --> 접속
[로그 보기]
_____________________________________________________________________________
192.168.10.26 - - [16/Oct/2009:11:36:51 +0900] "GET / HTTP/1.1" 404 1011 "-"
"Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; Mozilla/4.0
(compatible; MSIE 6.0; Windows NT 5.1; SV1) ; InfoPath.2)"
_____________________________________________________________________________
404 에러 나옴.
RewriteEngine Off <-- On 에서 Off로 바꾸면 원래대로 돌아온다.
RewriteCond %{REQUEST_METHOD} ^GET
RewriteRule .* -[F]
인터넷으로 접속해보면 원래대로 접속되는 것을 볼 수 있다.
</실습>
~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'
------------------------------------[ END ]------------------------------------
############################[ mod_rewrite 지시자 ]#############################
_______________________________________________________________________
<RewriteEngine>
설정 문법: RewriteEngine On/Off
Rewritering 엔진을 사용할지 여부를 설정합니다.
기본 설정은 당연히 off 로 되어 있으며 RewriteEngine On으로 설정하지
않는 이상 Rewriting 엔진을 활성화 시키지 않습니다.
현재 Apache 에서 실행중인 모든 RewriteRule 을 비활성화 시킬 때
RewriteRule 라인을 주석처리 하기보다 RewriteEngin off 로 설정하는 것이
더 간편하고 올바른 방법입니다.
_______________________________________________________________________
_______________________________________________________________________
<RewriteLog>
설정 문법: RewriteLog file명
RewriteLog 지시자는 Rewrite 엔진의 로그를 기록할 파일을
지정한다.
RewriteLog파일을 항상 남기기 보다 잘못된 Rewrite 규칙들을
디버깅할 때 사용하기를 권장한다.
RewriteLog 지시자는 반드시 RewriteLogLevel 지시자와 함께
사용하여야 한다.
_______________________________________________________________________
_______________________________________________________________________
<RewriteLogLevel>
설정 문법: RewriteLogLevel Level
RewriteLogLevel지시자는 RewriteLog 지시자로 설정한 로그파일에
기록할 로그들에 대해 얼마나 자세한 내용을 로그로 남길 것인가에
대해 설정하는 지시자이다.
기록할 로그 Level은 0 ~ 9 까지 사용할 수 있으며 0은 로그를 기록하지
않겠다는 의미이다. Level숫자가 높을수록 자세한 로그를 기록한다.
_______________________________________________________________________
_______________________________________________________________________
<RewriteCond>
설정 문법 : RewriteCond Teststring Condition
RewriteCond와 같이 사용되는 지시자로 RewriteCond 다음에 오는
RewriteRule은 RewriteCond의 조건과 일치하는 경우 다음의 RewriteRule이
실행된다.
RewriteCond에서 쓰이는 명령어를 알아보도록 하겠다.
-d : 디렉토리를 의미한다. TestString이 이 디렉토리를 가리키거나
포함하고 있을 때 처리된다.
-f : 파일을 의미한다. TestString이 파일을 가리키거나 포함하고 잇을
때 처리된다
-l : 심볼록링크를 의미한다. TestString이 심볼릭링크를 가리키거나 포함하고
있을 때 처리된다.
마지막으로 느낌표 '!'는 부정을 뜻함.
_______________________________________________________________________
_______________________________________________________________________
<RewriteRule>
설정 문법 : RewriteRule Pattern Substitution
Rewrite 모듈의 실질적인 Rewrite 규칙들을 적용하는 지시자이다.
Pattern(Input URL)을 Substitution(Return URL)로 변경하기 위한
모든 규칙들은 이 지시자를 사용해서 설정해야 된다.
Pattern(Input URL) 에는 Perl 정규표현식을 사용할 수 있기 때문에
Input URL의 규칙을 유연하게 적요할 수 있다.
_______________________________________________________________________
_______________________________________________________________________
<Rewrite 정규표현식>
_______________________________________________________________________
정규 표현식 ┃ 내용 ┃예제
_______________________________________________________________________
. ┃ 한문자 ┃
_______________________________________________________________________
? ┃ 0개 문자 또는 1개 문자 ┃
_______________________________________________________________________
* ┃ 0개 이상의 문자(열) ┃
_______________________________________________________________________
+ ┃ 1개 이상의 문자(열) ┃
_______________________________________________________________________
(chars) ┃ 괄호안의 문자(열)을 그룹으로 묶고 ┃
┃ Substitution(Return URL)에서 $n의 ┃
┃ 변수로 활용 ┃
_______________________________________________________________________
^ ┃ 문자(열) 시작 지정 ┃
_______________________________________________________________________
$ ┃ 문자(열) 끝 지정 ┃
_______________________________________________________________________
\(역슬래쉬) ┃ 정규표현식에서 특별한 의미로 사용 ┃예> (,),[,].
┃ 되는 문자의 특수 기능을 제거하는 ┃등
┃ 데 사용 ┃
_______________________________________________________________________
{n} ┃ 정확히 n번 반복 ┃
_______________________________________________________________________
{n,} ┃ n번 이상 m번 이하 반복 ┃
_______________________________________________________________________
{n,m} ┃ n번 이상 m번 이하 반복 ┃
_______________________________________________________________________
[chars] ┃ 문자들의 범위 또는 표현할 수 있는 ┃예>[a-z]:a부터
┃ 문자들을 설정 ┃z까지 소문자
┃ ┃[tT]:소문자 t
┃ ┃또는 대문자 T
_______________________________________________________________________
<정규표현식 단축 표현들>
[:alpha:] 알파벳 [a-zA-Z]와 같은 표현
[:alnum:] 알파벳 숫자 [a-ZA-Z0-9]와 같은 표현
[:digit:]
------------------------------------[ END ]------------------------------------
##############################[ .htaccess & htpasswd ]###############################
[root@kakasi:12:12:16]#vi .htaccess
````````````````````````````````````````````````
RewriteEngine Off
RewriteCond %{REQUEST_METHOD} ^GET
RewriteRule .* -[F]
##### .htaccess & .htpasswd Auth
AuthName "Boanlab"
AuthType Basic
AuthUserFile /usr/local/http/web/.htpasswd
AuthGroupFile /dev/null
ErrorDocument 401 "Are You Kidding me?!!!!!!!"
<Limit GET POST>
require valid-user
Satisfy all
Order deny,allow
Allow from 192.168.10
Deny from all
</Limit>
````````````````````````````````````````````````
:wq
[인터넷 익스플로러] --> [http://192.168.10.180] --> 접속
ID/PW 입력창이 나온다. --> 취소를 누르면
에러 메시지("Are You Kidding me?!!!!!!!")가 출력될 것이다.
[root@kakasi:12:13:10]#/usr/local/http/bin/htpasswd -c /usr/local/http/web/.htpasswd
user1
New password:
Re-type new password:
Adding password for user user1
처음 만들때 -c 그 다음 생성할 디렉토리(.htacces 파일이 있는 곳을 지정) 그 다음
생성할 유저명
-p 옵션은 패스워드 저장할 때 평문으로 저장함.
[인터넷 익스플로러] --> [http://192.168.10.180] --> 접속
ID/PW 입력 후 접속 하면 index.html 페이지가 제대로 나올 것이고
틀릴 경우 .htaccess에 설정한 에러 메시지가 뜰 것이다.
디렉토리마다 생성하여 따로 따로 적용할 수 있다.
디렉토리에 생성하지 않으면 상위 디렉토리에서 적용한 .htaccess 파일이나
.htpasswd파일에 적용받을 것이다.
<.htaccess 응용>
특정 파일에 대한 인증 설정 방법
Location 또는 Files 지시자를 이용하자
<Location/secret.html>
Order deny,allow
Deny from all
Allow from 192.168.1.1
</Location>
또는
<Files secret.html>
AuthName "ID/PW를 입력하세요"
AuthType Basic
AuthUserFile /usr/local/secret-data/.htpasswd
Require vlaid-user
</Files>
------------------------------------[ END ]------------------------------------
############################[ HTTP 인증방식 ]##################################
<HTTP 인증방식 Basic>
HTTP 기본 인증 (RFC2617)
안전도가 높지 않음
사용자명과 패스워드는 Base64로 인코딩
HTTPS를 채용해 요구와 응답을 암호화 하는 것으로 개선
GET /auth HTTP/1.1
Host: siempre.homeip.net
Authorization: Basic aG9heDpob2F4
$perl -MMIME::Base64 -le 'print decode-
base64("aG9heDpob2F4")'
hoax:hoax
<HTTP 인증방식 Digest>
HTTP 다이제스트 인증 (RFC2617)
MD5 해시 알고리즘을 채용하여 사용자명과 패스워드를 암호화
다이제스트에 의해 서버는 패스워드를 인식하여 클라이언트를 증명
Basic 인증을 대체하기 위한 시도/응답 스키마
서버에서는 nonce라고 하는 난수 데이터의 문자열을 시도로 클라이언트에 보냄
클라이언트에서는 추가 정보 중에서 사용자 이름, 암호 및 nonce를 포함하는
해시를 사용하여 응답 .htpasswd X
.htdigest 이걸 사용해서 만든다.
ls -l /usr/local/http/bin
------------------------------------[ END ]------------------------------------
##############################[ httpd-userdir.conf ]###############################
[root@kakasi:12:22:10]#vi extra/httpd-userdir.conf
[root@kakasi:09:57:13]#vi httpd.conf
```````````````````````````````````````````
462 Include conf/extra/httpd-userdir.conf
```````````````````````````````````````````
:wq
chmod 755 /home/user1
------------------------------------[ END ]------------------------------------