htpasswd, htdigest - Apache HTTP authentication
htpasswd, htdigest command
For Apache HTTP authentication
htpasswd -> HTTP basic authentication
htdigest -> HTTP digest authentication
두 명령어는 거의 유사하나 basic 인증이냐 digest 인증이냐의 차이가 있다.
두 명령어 모두 사용자명과 암호 정보를 저장할 파일을 관리한다. (HTTP 인증용)
htdigest의 경우 추가로 영역(realm)을 기재해야 한다.
* 보안상 basic 인증보다는 digest 인증 사용 권장
파일명 : file.txt / 사용자명 : user001 / 비밀번호 : 1234
->file.txt에 인증 정보가 생성된다.
- 만일 같은 사용자명을 입력하면 해당 사용자의 암호가 변경된다.
- 다른 사용자명을 입력하면 사용자 추가가 이루어진다.
<Directory "폴더위치">
AllowOverride AuthConfig
AuthType Basic
AuthName "메시지명"
AuthUserFile 인증파일위치
Require valid-user
</Directory>
<Directory "폴더위치">
AllowOverride AuthConfig
AuthType Digest
AuthName "메시지명"
AuthDigestDomain 폴더위치 host명
AuthDigestProvider file
AuthUserFile 인증파일위치
Require valid-user
</Directory>
* host명 예시 : www.example.com (서비스하는 host명 기재)
https://security.stackexchange.com/questions/988/is-basic-auth-secure-if-done-over-https/990#990
즉, htpasswd는 HTTP basic authentication에 대한 이해, 해당 웹서비스의 구조 등을 종합적으로 판단하여 사용할 필요가 있다. (가급적 자제)
* 인증 파일들의 권한
- 644 root:root에서 아무런 문제 없이 돌아감(Amazon AMI / Apache 2.4 기준)
- 인증 파일들을 DocumentRoot 바깥에 둘 것(보안상)
* 테스트시
잘못된 값 입력시 웹서버에서 401 Unauthorized 에러를 리턴하는지 확인해야 함
* 호환성 문제
일부 버전이 낮은 브라우저에선 HTTP digest Authentication 사용이 불가능하다.
Case #2
* http.conf 작성 완료 후 데몬을 재실행(restart) 한다.
[레퍼런스]
https://httpd.apache.org/docs/2.4/ko/programs/htpasswd.html
https://httpd.apache.org/docs/2.4/ko/programs/htdigest.html
https://httpd.apache.org/docs/2.4/mod/mod_auth_basic.html
https://httpd.apache.org/docs/2.4/mod/mod_auth_digest.html
For Apache HTTP authentication
htpasswd -> HTTP basic authentication
htdigest -> HTTP digest authentication
두 명령어는 거의 유사하나 basic 인증이냐 digest 인증이냐의 차이가 있다.
두 명령어 모두 사용자명과 암호 정보를 저장할 파일을 관리한다. (HTTP 인증용)
htdigest의 경우 추가로 영역(realm)을 기재해야 한다.
* 보안상 basic 인증보다는 digest 인증 사용 권장
1. htpasswd
(1) 파일 생성/수정
1 | htpasswd -c 파일명 사용자명 | cs |
->file.txt에 인증 정보가 생성된다.
- 만일 같은 사용자명을 입력하면 해당 사용자의 암호가 변경된다.
- 다른 사용자명을 입력하면 사용자 추가가 이루어진다.
(2) Apache에 적용(http.conf) 후 데몬 재실행
Directory 단위로 적용한다.<Directory "폴더위치">
AllowOverride AuthConfig
AuthType Basic
AuthName "메시지명"
AuthUserFile 인증파일위치
Require valid-user
</Directory>
* Require valid-user 항목이 없으면 Apache는 HTTP authentication을 진행하지 않는다.
* 기존에 AllowOverride 항목이 있으면, 그 항목 옆에 AuthConfig를 추가한다.2. htdigest
(1) 파일 생성/수정
1 | htdigest -c 파일명 realm 사용자명 | cs |
파일명 : file.txt / 사용자명 : user001 / 영역명(realm) : test / 비밀번호 : 1234
->file.txt에 인증 정보가 생성된다.
->file.txt에 인증 정보가 생성된다.
추가/삭제 원리는 htpasswd와 같음
(2) Apache에 적용(http.conf) 후 데몬 재실행
Directory 단위로 적용한다.
주의 : AuthName의 메시지명이 realm과 일치해야 한다
(#Comment-> 버그인지 아닌지 체크 필요)
(#Comment-> 버그인지 아닌지 체크 필요)
AllowOverride AuthConfig
AuthType Digest
AuthName "메시지명"
AuthDigestDomain 폴더위치 host명
AuthDigestProvider file
AuthUserFile 인증파일위치
Require valid-user
</Directory>
* host명 예시 : www.example.com (서비스하는 host명 기재)
* Require valid-user 항목이 없으면 Apache는 HTTP authentication을 진행하지 않는다.
* 기존에 AllowOverride 항목이 있으면, 그 항목 옆에 AuthConfig를 추가한다.3. 주의점
* HTTP basic authentication 은 취약한가?https://security.stackexchange.com/questions/988/is-basic-auth-secure-if-done-over-https/990#990
즉, htpasswd는 HTTP basic authentication에 대한 이해, 해당 웹서비스의 구조 등을 종합적으로 판단하여 사용할 필요가 있다. (가급적 자제)
* 인증 파일들의 권한
- 644 root:root에서 아무런 문제 없이 돌아감(Amazon AMI / Apache 2.4 기준)
- 인증 파일들을 DocumentRoot 바깥에 둘 것(보안상)
* 테스트시
잘못된 값 입력시 웹서버에서 401 Unauthorized 에러를 리턴하는지 확인해야 함
* 호환성 문제
일부 버전이 낮은 브라우저에선 HTTP digest Authentication 사용이 불가능하다.
4. 실 사용 예시
Case #11 | htpasswd -c /var/www/.auth USER | cs |
1 2 3 4 5 6 7 8 9 | <Directory "/var/www/html/www"> AllowOverride AuthConfig AuthType Basic AuthName "메시지명" AuthUserFile /var/www/.auth Require valid-user </Directory> | cs |
Case #2
1 | htdigest -c /var/www/.auth area USER | cs |
1 2 3 4 5 6 7 8 9 10 11 | <Directory "/var/www/html/www"> AllowOverride AuthConfig AuthType Digest AuthName "area" AuthDigestDomain /var/www/html/www/ https://www.dwer.kr/ AuthDigestProvider file AuthUserFile /var/www/.auth Require valid-user </Directory> | cs |
* http.conf 작성 완료 후 데몬을 재실행(restart) 한다.
[레퍼런스]
https://httpd.apache.org/docs/2.4/ko/programs/htpasswd.html
https://httpd.apache.org/docs/2.4/ko/programs/htdigest.html
https://httpd.apache.org/docs/2.4/mod/mod_auth_basic.html
https://httpd.apache.org/docs/2.4/mod/mod_auth_digest.html
댓글
댓글 쓰기