정리하는 공간
리눅스) Apache 인증 사용(Basic 인증, Digest인증) 본문
Apache 인증
아파치 인증은 특정 디렉터리에 접근할 때 사용자의 ID와 PW를 요구하도록 설정하는 방법이다.
아파치 인증에는 basic 방식과 digest 방식이 있다.
둘의 차이는 일반적으로 사용자의 ID, PW를 정의한 파일을 이용해서 사용자 인증을 처리하는 것 같다.
근데 basic의 경우 클라이언트가 서버에 전달하는 인증정보는 암호화되지 않고
단지 base64 인코딩 방식에 의해 전달된다.
base64 인코딩 방식은 파일의 손실을 줄이고 간편하게 보내기 위해
텍스트 파일로 변환해서 전달하는데, 평문 데이터이기 때문에 보안에 취약할 수 있다.
반면 digset 방식은 클라이언트가 데이터를 전송할 때 처음부터 해시값으로 보내서 보안성이 좋다.
httpd.conf의 보조 conf.d 디렉터리
httpd.conf 주 환경파일에 모든 수정 사항을 넣어서 적용을 해도 되지만 나중엔 정리가 힘들어 진다.
그래서 주로 /etc/httpd/conf.d 디렉터리에 수정, 적용하는 보조 파일 *.conf 파일들을 담는다.
환경설정 파일 속 지시자 옵션
<Directory>
</Directoy>
디렉터리에 적용되는 내용을 열고 닫는다는 의미로 사이에 옵션들을 넣어준다
AllowOverride
어떻게 접근을 허락할 것인가에 대한 설정 AllowOverride None 으로 많이 사용
Order allow,deny
허용과 차단을 주문하는 것으로 밑에 나올 내용은 항상 주문 순서와 같게 써내려간다.
Allow from all
모든 사용자의 접근을 허용. from 뒤에는 원하는 대로 수정
Deny from 111.111.111.1
특정 아이피 주소로 접근하는 사용자는 차단.
Indexes
웹서버에 지정된 파일(ex, index.html)이 없을 경우 지정 디렉터리 내의 파일목록 리스트를 보여주겠다.
FollowSymlinks
심볼릭 링크를 허용. 브라우저에서 링크파일경로까지 확인 가능
Tip
두 옵션이 같이 있으면, 디렉터리에 웹문서가 없는 경우 파일 목록 리스트와 경로를 보여주게 된다. 보안상 좋지 않음
===========================
<Directory "/var/www/html/">
Options Indexes FollowSymLinks
AllowOverride None
Order allow ,deny
Allow from all
Deny from 111.111.111.1
</Directory>
===========================
이런 형태로 파일 스크립트에 만들어 주면 된다.
Apache 인증 [basic 방식]
일반사용자를 허용하는 경우
[auth_basic.conf 환경설정 파일]
우선 /etc/httpd/conf.d/auth_basic.conf 디렉터리로 basic 환경설정 파일을 만들어 준다.
httpd.conf에 스크립트를 추가해도 되지만, 추후 관리가 불편해 보조 디렉터리(conf.d)에 파일을 만들어준다.
위에서 설명했다 싶이 /var/www/html/basic 디렉터리의 지시자를 열어주고 옵션들을 차례대로 적어준다.
/etc/httpd/.htpasswd 이 곳에 인증에 관한 ID, PW정보가 담긴다.
굳이 해석을 해보자면
베이직 인증 테스트이고, 파일은 .htpasswd에 있으며, 사용자는 kim lee park 으로 유효 사용자만 인증하겠다.
권한 설정은 모두 접속을 거부하고, 아이피 대역대의 사용자만 허용하겠다.
이 내용을 보면 이 사이트에 접속하게 될 사용자는 불특정 다수 중 3명으로 vip라고 볼 수도 있는 것 같다.
[패스워드 설정]
일반적으로 최초 인증을 만들 땐 .htpasswd 파일이 없기 때문에 만들어줘야 한다.
htpasswd -c /etc/httpd/.htpasswd kim
htpasswd -c /etc/httpd/.htpasswd lee
htpasswd -c /etc/httpd/.htpasswd park
패스워드를 각각 지정해준다.
apachectl configtset 로 스크립트에 오류는 없는지 환경설정파일을 확인해준다.
이후엔 systemctl restart httpd 재가동을 해준다.
이후 웹 주소에 basic 디렉터리로 들어가보면 로그인 창이 뜨고 각각 지정했던 사용자 ID,PW입력후 로그인이 가능하다
그룹 사용자를 허용하는 경우
방법은 위의 방식과 같다. 위 사진 처럼 주석과 추가 옵션을 적어준다
Require group Admin: kim lee park (위의 내용 기준) 이렇게 사용자를 그룹에 지정해주면 된다.
Apache 인증 [digest 방식]
[auth_digest.conf 환경설정 파일]
/etc/httpd/conf.d/auth_digest.conf 해당 경로로 환경설정 파일을 만들어주자. 이유는 위에도 설명해놨다.
basic 방식과는 조금 다르게 AuthDigestDomain 을 넣어주고
중요한 건 AuthName "private Area" 와 사용자 ID,PW가 저장되는 파일이 .htdigest 이다.
[패스워드 설정]
basic 방식은 htpasswd 명령어를 사용했지만 digset는 htdigest 명령어로 설정한다.
htdigest -c /etc/httpd/conf.d/.htdigest 'Private Area' park
사용자 park의 패스워드를 .htdigest 파일에 최초 생성하는 것이기 때문에 똑같이 -c는 이후 작성하지 않아도 된다.
apachectl configest 입력 후 systemctl restart httpd
/var/www/html 디렉터리 밑에 /digset 디렉터리를 만들어주 그 밑에 html 파일을 하나 붙여넣는다.
똑같이 웹 브라우저에 해당 경로 (http://192.168.111.10/digset)를 입력하면 ID,PW를 입력하는 로그인창이 뜬다.
'리눅스 기초' 카테고리의 다른 글
리눅스) 프록시 서버 구성 [이론] (0) | 2022.05.12 |
---|---|
리눅스) Apache 가상호스트 (SELinux 설정) (0) | 2022.05.12 |
리눅스) SELinux (0) | 2022.05.12 |
리눅스) 웹 서버(아파치, html, perl, python) userdir (0) | 2022.05.12 |
리눅스) 방화벽(firewalld, iptables) (0) | 2022.05.12 |