관리 메뉴

IT창고

리눅스 웹 서버 사용자 접근제어 본문

서버운영/Linux

리눅스 웹 서버 사용자 접근제어

방구석여포 2018. 7. 23. 02:15

리눅스 웹서버에서 사용자 접근제어에 대해 알아보겠습니다.

httpd 데몬은 Apache 웹 서버인데 .htaccess파일로 사용자 접근제어를 합니다.

먼저 사용자계정과 패스워드를 기록할 디렉토리를 선택하고 httpasswd [-c] AuthUserFile 사용자명 명령어를 사용합니다. -c옵션은 처음 파일을 만들때 한번만 사용하면 됩니다.


사용자 패스워드가 있는 파일에 가보면 패스워드는 암호화되어 있습니다. 암호방식은 앞에 계정도 포함하여 암호화를 하기 때문에 a,b 사용자의 패스워드가 같다고 해도 다른 hash값을 가지게 됩니다.


httpd 주설정파일을 보면  409줄에 AccessFileName .htaccess가 있습니다. 이것은 사용자별 인증 관련 파일로 접근하려고 하는 디렉토리에 각각 이 파일과 설정을 넣어만들어야 합니다.


intra.gsk.com 사이트에 사용자 접근제어를 해보겠습니다.

해당 웹 디렉토리에 가서 vi편집기로 .htaccess파일을 만듭니다. 앞에 .는 숨김파일로 ls에 -a옵션을 붙여야 파일이 있는지 확인해볼수있습니다. 파일안에는 위의 사진과 같이 작성하는데 AuthName은 인증창 제목이고 AuthType은 인증 유형을 설정합니다. 인증 유형은 Basic(평문) , Digest(MD5)가 있습니다. AuthUserFile은 사용자의 ID와 패스워드 정보가 들어있는 이 글에서 가장 처음했던 작업입니다. 마지막으로 Require는 인증할 대상을 지정합니다.


사용자를 추가하기 위해서는 /accesspass/passwd 파일에 사용자를 추가해야하는데 httpasswd 명령어를 사용하여 추가합니다.


이제 다시 httpd 주설정 파일 /etc/httpd/conf/httpd.conf 로 돌아가서 302번 줄에 보면 디렉토리에 권한을 주는 옵션 내용을 확인해볼수있습니다. 이것을 참고하여 <VirtualHost>안에 내용을 수정합니다.

기존 가상호스트안에 3줄만 추가 해주면 됩니다. 


테스트PC에서 접속해보면 자격을 붙는 인증창이 앞에 나옵니다. 여기서 사용자ID와 패스워드는 /accesspass/passwd.txt 파일안에 있는 사용자만 접근이 가능하게 됩니다.


마지막으로 다른사람들에게 보여주고 싶지 않은 파일이 있을 경우 httpd 주설정 파일에 415번 줄에 보면 file 보호 설정이 있습니다. 이 내용을 참고하여 아까 가상호스트를 설정했던 곳에 자신의 형식에 맞춰서 설정하면 됩니다.


Tip.

주설정파일을 많이 수정하다보면 오타가 생길 우려가 있습니다. service httpd configtest 명령어로 설정파일의 구문을 확인해볼수있습니다.

Comments