WEB & WAS/Apache

htpasswd 웹페이지 암호걸기

서버엔지니어 2023. 3. 8.
728x90

htpasswd 사용법

​

▶ htpasswd 란?

​

특정 페이지를 제한하고 싶을때 홈페이지 특정 디렉토리에 패스워드 장치를 걸어 두고 특정 사용자에게 ID와 비밀번호를 발급하여 해당 디렉토리 접근시 ID와 비밀번호를 제시하여 특정 사용자만 통과할 수 있도록 하는 기능을 말합니다.

​

▶ .htaccess 파일 만들기

​

.htaccess 파일을 이용하여 가능합니다. 먼저 접근을 제어하고 싶은 디렉토리 내에 .htaccess 파일을 아래와 같은 내용으로 생성합니다.

​

htaccess 파일 만들기

​

ex) test라는 디렉토리에 특정 사용자만 접근가능하도록 하고 admin이라는 계정을 만들고 happy라는 계정을 추가합니다.

​

/.htaccess

​

------------------------------------------------------------------

AuthName '사용자인증연습'

AuthType Basic

AuthUserFile /home/username/test/.htpasswd

AuthGroupFile /dev/null

ErrorDocument 401 '' 죄송합니다!! 당신은 정식 사용자가 아닙니다.'

​

<Limit GET>

require valid-user

</Limit>

------------------------------------------------------------------

​

.htaccess파일을 생성후 htpasswd라는 유틸리티를 실행시켰을때 .htpasswd라는 파일이 자동으로 생성됩니다.

​​

▶ 사용자 만들기와 추가하기

​

1) .htaccess파일 생성후 htpasswd 명령어를 이용하여 해당 디렉토리에 접근가능한 사용자 계정 및 패스워드를 생성합니다.

​

Usage:

htpasswd -c .htpasswd admin [enter]

Adding password for admin.

New password: <비밀번호입력>

Re-type new password: <비밀번호입력확인>

​

​

2) test사용자 계정 추가

​

Usage:

htpasswd .htpasswd test [enter]

Adding password for admin.

New password: <비밀번호입력>

Re-type new password: <비밀번호입력확인>

​

'-c' 옵션은 초기화후 새롭게 적용될때 이용되는 옵션입니다.

만약 htpasswd -c .htpasswd test 적용하게 되면 admin이 아닌 test로 리셋됩니다.

 

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

​

<Directory />

Options FollowSymLinks

AllowOverride AuthConfig

Require all granted

</Directory>

​

AuthConfig 이부분이 되게 중요하다. 이유는 하드웨어서버한대 apache에 root도메인이 있을것이다. /usr/local/apache/htdocs 여기일꺼다. 해당 디렉토리에 연결된 루트도메인이있을것이다.

​

ex) www.abcdefgh.com or abcdefgh.com 일꺼다

하지만 하드웨어 서버한대의 apache에 여러도메인 즉 vhost를 쓸수 있다. 

ex) haha.abcdefgh.com (/home/hahaabcdefgh/html)

hoho.abcdefgh.com (/home/hohoabcdefgh/html)

haha.qwerasdf.com (/home/hahaqwerasdf/html)

hoho.qwerasdf.com (/home/hohoqwerasdf/html)

 

.htaccess 파일 만들기

vi /아파치 루트도메인, 가상도메인들에서 루트디렉토리의 경로/.htaccess

​

vi /usr/local/apache/htdocs/.htaccess

======================================================================

AuthName "login"

AuthType Basic

AuthUserFile /usr/local/apache/htdocs/.htpasswd

AuthGroupFile /dev/null

require valid-user

======================================================================

또는

======================================================================

AuthName "login"

AuthType Basic

AuthUserFile /usr/local/apache/htdocs/.htpasswd

AuthGroupFile /dev/null

<Limit GET POST> 

require valid-user

</Limit>

======================================================================

======================================================================

.htpasswd 파일 만들기

​

.htpasswd 는 .htaccess 를 작성 후 htpasswd 를 실행하면 자동으로 생성되는 패스워드 파일입니다.

======================================================================

처음 사용자 만들기

cd /usr/local/apache/htdocs

​

/usr/local/apache/bin/htpasswd -c /usr/local/apache/htdocs/.htpasswd [처음 생성할ID]

​

New password : ******** Re-type new password : ********

​

Adding password for user [처음 생성할ID]

​

ex) 

cd /home/hahaabcdefgh/html

htpasswd -c .htpasswd test1user1 해놓고 비밀번호를 test1user1 똑같이해보자

htpasswd .htpasswd test1user2 해놓고 비밀번호를 test1user2 똑같이해보자

​

cd /home/hohoqwerasdf/html

htpasswd -c .htpasswd test2user1 해놓고 비밀번호를 test2user1 똑같이해보자

htpasswd .htpasswd test2user2 해놓고 비밀번호를 test2user2 똑같이해보자

​

그럼 두 해당하는 디렉토리에 연결된 도메인 

haha.abcdefgh.com 에 들어갈시 아이디 비밀번호창이뜨면서 

​

ID test2user1

PW test2user1 하면 로그인안됨

​

ID test1user1

PW test1user1 하면 로그인됨

​

hoho.qwerasdf.com

​

ID test2user1

PW test2user1 하면 로그인안됨

​

ID test1user1

PW test1user1 하면 로그인됨

======================================================================

사용자 추가하기

​

/usr/local/apache/bin/htpasswd /home/html/.htpasswd [추가로 생성할 ID]

======================================================================

사용자 업데이트

(기존 사용자 암호 변경) –> * 주의) 사용자 추가와 같음

​

/usr/local/apache/bin/htpasswd /home/html/.htpasswd [생성되있는 ID]

​

New password : ******** Re-type new password : ********

​

Updating password for user [생성되있는 ID]

======================================================================

사용자 삭제

​

/usr/local/apache/bin/htpasswd -D /home/html/.htpasswd [생성되있는 ID]

​

Deleting password for user [생성되있는 ID]

​

!!주의!!

"-c" 옵션을 사용할 경우 기존 사용자는 모두 없어지고 신규파일을 생성하게 되므로

​

"-c" 옵션을 사용할 경우 기존파일이 있는지 확인 후 작업을 진행 하도록 해야 한다.

======================================================================

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

​

<Directory /웹페이지가 있고 설정해야하는 디렉토리 경로l/>

Options FollowSymLinks

AllowOverride ALL

Allow from ALL

Require all granted

</Directory>

'WEB & WAS > Apache' 카테고리의 다른 글

유료인증서를 위한 key, csr 생성  (0) 2023.03.08
Apache 마이그레이션 (2.2, 2.4)  (0) 2023.03.08
mod_rewrite 실전  (0) 2023.03.08
Apache MPM 튜닝  (0) 2023.03.08
Apache 컴파일 옵션  (0) 2023.03.08

댓글