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

댓글