htaccess 설정방법

리눅스 2015. 9. 22. 13:04

https://www.linux.co.kr/home2/board/subbs/board.php?bo_table=lecture&wr_id=216


이 문서를 다른 웹이나 출판물에 게시할 때는 반드시 출처를 밝혀 주시기 바랍니다.

최종 수정일 : 2001년 8월 23일
글쓴이  :  윤 일 (yunil@dreamwiz.com)

HOW-TO Using apache authorization

아파치 인증 방식은 소규모 사이트나 스터디 그룹에서 유용하게 사용할 수 있는 아파치 자체 인증 방식이다. 규모가 큰 웹 
사이트나 보안에 신경을 써야될 사이트에서는 아파치 인증을 사용하는 것을 신중히 생각해 봐야 된다. 아파치 인증 방식은 
믿을 만한 보안 체계는 이루어 지지 않아 보안상 헛점이 들어 날수도 있다는 것을 명심해야 된다.

아파치 인증을 위해 필요한 httpd.conf 설정을 위해서는 아파치의 httpd.conf에 다음과 같이 설정되어 있어야 된다.
아파치 인증을 할 디렉토리의 상위 디렉토리 설정의 AllowOverride  지시자 설정에 All 또는 AuthConfig등이 설정되어 
있어야 된다. 
지금 부터의 설명은 아파치 웹 문서의 홈 디렉토리인 /usr/local/apache/htdocs 디렉토리에 AllowOverride 설정을 하고 /usr/local/apache/htdocs/yunil 이라는 디렉토리에 아파치 인증을 통해 접근 허가 하도록 설정할 것이다. 

1.  httpd.conf 수정하기
가장 먼저 httpd.conf 의 다음 부분을 수정하자 

<Directory "/usr/local/apache/htdocs">
   Options Indexes FollowSymLinks MultiViews
   
AllowOverride  None  --> 이 부분의 None 을 All로 수정한다. 
   Order allow,deny
     Allow from all
</Directory>
 

위의 부분을 수정했으면 httpd.conf를 저장하고 아파치를  restart 시킨다.
[root@yunil /root]# /usr/local/apache/bin/apachectl   restart

2 . 아파치 인증을 적용할 디렉토리에 .htaccess 파일 만들기
이제 아파치 인증을 적용할 디렉토리로 이동하자. 
여기에서는 /usr/local/apache/htdocs/yunil 디렉토리에 아파치 인증을 적용할 것이다.
[root@yunil /root]# cd /usr/local/apache/htdocs/yunil

/usr/local/apache/htdocs/yunil  디렉토리에   아래와 같은 내용으로 .htaccess 파일을 만들자.
[ .htaccess 파일 내용 ]
AuthType  Basic
AuthName  "루트맨 관리자 로그인"          --->  이 부분은 알아서 마음대로 써주면 된다.
AuthUserFile  /usr/local/apache/.htrootman
Require  valid-user 

 
[ 참고 ]
사실 파일 이름은 꼭   .htaccess 로 만들지 않아도 되는데 이 파일 이름을 변경하고 싶으면 아파치의 httpd.conf 파일을
수정해야 된다. 수정할 부분은 다음과 같다.

AccessFileName    .htaccess 

--> 이 부분의  .htaccess를 수정하면 되는데 파일 이름의 시작을  .ht 로 하는 것이 좋다.
--> 그 이유는 httpd.conf 에서 .ht 로  시작하는 파일은 보안상 접근할 수 없게 설정되어 있기 때문이다.
--> 물론 이 설정도 변경할 수 있지만 여기서는 설명하지 않겠다. 
--> 정말 궁금해서 잠이 오지 않는 분은 게시판에 글 올려 주세요. 

다음 단계로 넘어 가기 전에 위의 설정이 뭘 의미 하는지 이해하고 넘어 가도록 하자.

AuthType  
인증 유형을 설정하는 지시자다. Basic과 Digest를 설정할 수 있다. 
Digest의 경우 MD5 방식을 사용하는데 MD5를 지원하는 브라우저가 제한 되어 있기 때문에 이 강좌에서는 언급하지 않겠다. 

AuthName   
인증창의 제목이라고 생각하면 된다. 간단한 스트링을 입력해서 설정하는것이 바람직하다.

AuthUserFile   
사용자 User_ID 정보와 Password 정보가 들어 있는 파일을 지정해 주는 것이다. 
보안상 꼭 웹 문서 디렉토리 밖에  위치 시키는 것이 좋다.  이 파일은 나중에 만들것이기 때문에 이 파일이 없다고 투덜 
거리지 마시길..

Require    
인증할 대상을 지정한다.  
Revalid-user     --> AuthUserFile에 등록된 모든 사용자를 인증을 통해 받아 들인다는 설정
Require  user  사용자1  사용자2   --> 사용자1과  사용자2만 인증을 통해 받아 들인다는 설정
Require  group  그룹1  그룹2      --> 그룹1 과 그룹2 에 속하는 사용자만을 인증을 통해 받아 들인다는 설정
Require 지시자는 하나의 .htaccess 파일에 2개 이상 설정을 할 수도 있다.

3 . 사용자 추가 하기
아파치 인증에 사용할 사용자 추가는 아파치의 bin 디렉토리 안에 있는 htpasswd 라는 명령어로 추가한다.
사용방법은 아주 간단하지만 주의를 기울려야 될 부분이 있다.  일반적인 사용법은 다음과 같다.

htpasswd    [ -c ]   AuthUserFile    사용자명

괄호 안에 있는  -c 옵션은 처음 사용자를 등록할 때 필요한 옵션이다.
AuthUserFile 경로 앞에 -c 옵션을 추가 하게 되면 AuthUserFile 파일에서 지정한 파일을 만들어 준다.
절대 2번째 사용자 등록부터는 -c 옵션을 쓰면 안된다. 
만약 실수로 -c 옵션을 쓸 경우 전에 있던 파일은 날라가고 새로운 파일이 만들어 지기 때문에 각별히 주의 해야 된다.

첫번째 사용자 등록을 할 경우


기존의 AuthFile에 사용자를 추가할 경우


3. 특정 사용자를 그룹에 추가 하기
아파치 인증은 사용자 뿐만아니라 그룹에 대해서도 인증을 할 수 있다.
특정 그룹을 아파치 인증을 통해 접근을 허가하기  위해서는 해당 디렉토리 안에 있는 .htaccess 파일에 AuthGroupFile 지시자를 이용해 그룹 정보가 담겨있는 파일의 경로를 지정하고 그룹 파일을 만들어 주면 된다.

[ .htaccess 파일에 추가할 부분 ]
AuthGroupFile   /usr/local/apache/.htgroup

.htaccess 파일의 AuthGroupFile 지시자로 설정했던 파일을 다음과 같이 만들면 된다.
파일의 텍스트 형식은 다음과 같다.

그룹명:  사용자명1  사용자명2  사용자명3  ....
--> 그룹에 포함할 각 사용자명은 공백(Space Bar)로 구분한다.


아피치 인증을 거쳐야 되는 디렉토리에 접근 할 경우 다음과 같은 창이 나타난다. 


 


'리눅스' 카테고리의 다른 글

리눅스 네임서빙 우선순위 결정 : /etc/host.conf  (0) 2016.03.03
tcpwrapper iptable 차이  (0) 2015.10.05
MySQL 외부 접속 설정  (0) 2015.09.07
리눅스 백업 관련  (0) 2015.08.31
DNS zone 파일  (0) 2015.08.27
Posted by 캐논볼
,