웹사이트 검색

.htaccess 파일을 사용하여 Apache에서 웹 디렉터리를 비밀번호로 보호하는 방법


온라인 프로젝트를 관리할 때 외부 세계로부터 프로젝트를 보호하기 위해 해당 프로젝트에 대한 액세스를 제한해야 하는 경우가 많습니다. 여기에는 여러 가지 이유가 있을 수 있습니다. 예를 들어 아직 개발 단계에 있는 동안 검색 엔진 크롤러가 사이트에 액세스하는 것을 방지하려는 경우입니다.

이 튜토리얼에서는 Apache 웹 서버에서 다양한 웹 사이트 디렉토리를 비밀번호로 보호하는 방법을 보여 드리겠습니다. 이를 달성할 수 있는 방법은 여러 가지가 있지만 그 중 가장 일반적으로 사용되는 두 가지 방법을 검토하겠습니다.

첫 번째 방법은 Apache 구성 파일에서 직접 비밀번호 보호를 구성하는 반면, 두 번째 방법은 .htaccess 파일을 사용합니다.

요구사항

웹 디렉토리에 대한 비밀번호 보호를 설정하려면 다음이 필요합니다.

  • 작동 중인 Apache 웹 서버
  • AllowOverride AuthConfig 지시어는 Apache 구성 파일에서 활성화되어야 합니다.

Apache 비밀번호 보호 디렉터리 설정

1. 이 튜토리얼에서는 기본 웹 루트 디렉토리 /var/www/html를 보호합니다. 해당 디렉터리를 보호하려면 Apache 구성을 엽니다.

---------------- On RedHat/CentOS based systems ----------------
vi /etc/httpd/conf/httpd.conf

---------------- On Debian/Ubuntu based systems ----------------
nano /etc/apache2/sites-available/000-default.conf

2. /var/www/html에 대한 Apache 문서 디렉토리 루트를 찾고 제안된 대로 다음 항목을 추가합니다.

Apache 2.2 버전

<Directory /var/www/html> 
Options Indexes Includes FollowSymLinks MultiViews 
AllowOverride All
Order allow,deny
Allow from all 
</Directory>

Apache 2.4 버전

<Directory /var/www/html> 
Options Indexes Includes FollowSymLinks MultiViews 
AllowOverride All 
Require all granted 
</Directory>

3. 다음 명령을 사용하여 파일을 저장하고 Apache를 다시 시작합니다.

--------------- On Systemd -------------------
systemctl restart httpd         [On RedHat based systems]
systemctl restart apache2       [On Debian based systems]


--------------- On SysV init -----------------
service httpd restart           [On RedHat based systems]
service apache2 restart         [On Debian based systems]

4. 이제 htpasswd 명령을 사용하여 보호된 디렉토리에 대한 사용자 이름과 비밀번호를 생성하겠습니다. 이 명령은 기본 인증을 위한 사용자 파일을 관리하는 데 사용됩니다.

명령의 일반 구문은 다음과 같습니다.

htpasswd -c filename username

-c 옵션은 암호화된 비밀번호를 보관할 파일을 지정하고 username은 인증을 위한 사용자를 지정합니다.

5. 비밀번호 파일은 안전하게 보호되도록 Apache의 웹 액세스 가능 디렉토리 외부에 위치해야 합니다. 이를 위해 새 디렉터리를 만듭니다.

mkdir /home/tecmint

6. 그런 다음 해당 디렉토리에 저장될 사용자 이름과 비밀번호를 생성합니다.

htpasswd -c /home/tecmint/webpass tecmint

이 명령을 실행하면 새 사용자 "tecmint"의 비밀번호를 두 번 입력해야 합니다.

그런 다음 Apache가 "webpass" 파일을 읽을 수 있는지 확인해야 합니다. 이를 위해서는 다음 명령을 사용하여 해당 파일의 소유권을 변경해야 합니다.

---------------- On RedHat/CentOS based systems ----------------
chown apache: /home/tecmint/webpass
chmod 640 /home/tecmint/webpass
---------------- On Debian/Ubuntu based systems ----------------
chown www-data /home/tecmint/webpass
chmod 640 /home/tecmint/webpass

7. 이제 새 사용자와 비밀번호가 준비되었습니다. 이제 대상 디렉토리에 액세스할 때 Apache에게 비밀번호를 요청하도록 지시해야 합니다. 이를 위해 /var/www/html.htaccess라는 파일을 만듭니다.

vi /var/www/html/.htaccess

다음 코드를 추가하세요.

AuthType Basic
AuthName "Restricted Access"
AuthUserFile /home/tecmint/webpass
Require user tecmint

8. 이제 파일을 저장하고 설정을 테스트해 보세요. 브라우저를 열고 웹 브라우저에 IP 주소나 도메인 이름을 입력하세요. 예:

http://ip-address

사용자 이름과 비밀번호를 입력하라는 메시지가 표시됩니다.

페이지로 이동하려면 설정한 사용자 이름과 비밀번호를 입력하세요.

추가 참고 사항

공유 호스팅을 사용하는 경우 Apache 구성 파일에 액세스하지 못할 가능성이 높습니다. 그러나 대부분의 호스팅 회사는 기본적으로 'AllowOverride All' 옵션을 활성화했습니다. 즉, 사용자 이름과 비밀번호를 생성한 다음 보호하려는 디렉터리를 선택하기만 하면 됩니다. 이렇게 하면 작업이 상당히 쉬워집니다.

결론

이 튜토리얼이 유용하고 목표 달성에 도움이 되기를 바랍니다. 질문이나 의견이 있으면 주저하지 말고 아래 섹션에 게시해 주세요.