본문 바로가기
서버구축 (WEB,DB)

Apache 웹 서버 URL 접근제어 Access Control 통제 및 인증

by 날으는물고기 2024. 2. 29.

Apache 웹 서버 URL 접근제어 Access Control 통제 및 인증

Apache 웹 서버에서 IP 제한을 설정하려면 httpd.conf 또는 관련된 설정 파일을 열고 다음과 같이 Require 지시어를 사용하여 원하는 IP 주소나 범위를 지정할 수 있습니다.

<Directory "/var/www/html">
    Options FollowSymLinks
    AllowOverride None
    Order deny,allow
    Deny from all
    Allow from 192.168.1.1
</Directory>

위의 예제에서 Allow from 뒤에 원하는 IP 주소나 범위를 추가하세요. 또는, Apache 2.4 버전 이상을 사용하는 경우 다음과 같이 Require를 사용할 수 있습니다.

<Directory "/var/www/html">
    Options FollowSymLinks
    AllowOverride None
    Require ip 192.168.1.1
</Directory>

변경 후에는 Apache를 재시작하여 설정을 적용해야 합니다.

특정 IP 대역을 허용하려면 다음과 같이 Require를 사용합니다.

<Directory "/var/www/html">
    Options FollowSymLinks
    AllowOverride None
    Require ip 192.168.1.0/24 10.0.0.0/8
</Directory>

위의 예제에서는 192.168.1.0/2410.0.0.0/8과 같이 CIDR 표기법을 사용하여 IP 대역을 지정합니다. 이렇게 설정하면 해당 IP 대역의 모든 주소가 허용됩니다. 변경 후에는 Apache를 재시작하여 설정을 적용하세요.

 

특정 IP 대역을 제외하고 나머지를 차단하려면 Require를 반대로 사용하여 구성할 수 있습니다. 다음은 특정 IP 대역을 제외하고 나머지를 차단하는 예제입니다.

<Directory "/var/www/html">
    Options FollowSymLinks
    AllowOverride None
    Require all granted
    Require not ip 192.168.1.0/24
</Directory>

위의 구성은 모든 IP 주소를 허용하되, 192.168.1.0/24 대역을 제외한 나머지는 차단합니다. 이를 통해 192.168.1.0/24 대역의 IP 주소는 허용되고, 다른 IP 주소는 차단됩니다. 설정 변경 후에는 Apache를 재시작하여 변경 사항을 적용하세요.

 

아래는 설정된 내용의 설명입니다.

  1. <Directory "/var/www/html">: 이 설정은 /var/www/html 디렉터리에 대한 디렉터리 지시어를 시작합니다. 즉, 이 디렉터리 내의 파일 및 디렉터리에 대한 설정을 지정합니다.
  2. Options FollowSymLinks: 이 옵션은 심볼릭 링크를 따르도록 설정합니다.
  3. AllowOverride None: 이 설정은 .htaccess 파일에 대한 오버라이드를 허용하지 않도록 합니다. .htaccess 파일은 디렉터리마다 특정 설정을 오버라이드할 수 있는 파일입니다.
  4. Require all granted: 이 부분은 모든 IP 주소를 허용하는 부분입니다. 즉, 기본적으로 모든 접근을 허용합니다.
  5. Require not ip 192.168.1.0/24: 이 부분은 192.168.1.0/24 대역의 IP 주소를 차단합니다. 따라서 이 IP 대역에 속하는 주소로부터의 접근은 차단됩니다.

따라서, 이 설정은 기본적으로 모든 IP 주소에 대한 접근을 허용하고, 192.168.1.0/24 대역의 IP 주소만을 차단합니다. 변경된 설정을 적용하려면 Apache를 재시작해야 합니다.

 

Apache의 설정 파일인 httpd.conf 또는 이와 관련된 다른 설정 파일을 통해 이러한 제한을 설정할 수 있습니다. 설정에는 주로 <Directory> 지시어를 사용하여 특정 디렉터리에 대한 접근 규칙을 정의합니다.

  • Apache 2.2 버전에서는 Order, Deny, Allow 지시어를 사용하여 IP 접근 제어를 설정합니다.
  • Apache 2.4 버전 이상에서는 Require 지시어를 사용하여 보다 간결하고 유연하게 IP 접근 제어를 설정할 수 있습니다.

예를 들어, 특정 IP 주소나 대역에 대한 접근을 허용하려면 Require ip 지시어를 사용하여 해당 IP 주소나 CIDR 표기법으로 표현된 IP 대역을 지정할 수 있습니다. 반대로, 모든 IP 주소에 대한 접근을 허용하되 특정 IP 대역만을 제외하려면 Require all grantedRequire not ip 지시어를 조합하여 사용할 수 있습니다.

 

설정을 변경한 후에는 Apache 웹 서버를 재시작하여 변경 사항을 적용해야 합니다. 이는 일반적으로 서버의 커맨드 라인 인터페이스에서 sudo systemctl restart apache2 (Debian/Ubuntu 기반 시스템) 또는 sudo systemctl restart httpd (Red Hat/CentOS 기반 시스템)와 같은 명령어를 사용하여 수행할 수 있습니다.

 

Apache 웹 서버의 IP 접근 제어 설정은 웹 서버의 보안을 강화하는 중요한 수단 중 하나입니다. 이를 통해 민감한 웹 리소스에 대한 무단 접근을 방지하고, 특정 사용자나 네트워크만이 리소스에 접근할 수 있도록 제한할 수 있습니다.

 

웹 서버의 보안을 강화하기 위해 IP 주소 기반의 접근 제어 외에도 사용자 인증을 요구하는 방법이 있습니다. Apache 웹 서버에서는 .htaccess 파일과 함께 mod_authz_host 모듈을 사용하여 이러한 인증을 설정할 수 있습니다. 사용자 인증을 통해 특정 디렉토리에 대한 접근을 제한하려면, 기본적으로 사용자 이름과 비밀번호를 요구하는 HTTP 기본 인증(Basic Authentication) 또는 HTTP 다이제스트 인증(Digest Authentication)을 사용할 수 있습니다.

HTTP 기본 인증 설정

  1. .htpasswd 파일 생성: 인증에 사용될 사용자 이름과 비밀번호를 저장하는 파일입니다. 이 파일은 웹 루트 디렉토리 외부에 위치하는 것이 안전합니다. 예를 들어, /etc/apache2/.htpasswd에 파일을 생성할 수 있습니다. 사용자를 추가하기 위해 다음 커맨드를 사용할 수 있습니다.
     htpasswd -c /etc/apache2/.htpasswd username
    -c 옵션은 파일을 생성합니다. 이미 파일이 존재하고 추가 사용자만을 추가하려면 -c 옵션을 생략합니다.
  2. .htaccess 파일 설정: 접근 제한을 적용할 디렉토리에 .htaccess 파일을 생성하거나 편집합니다. 다음 설정을 파일에 추가합니다.
     AuthType Basic
     AuthName "Restricted Access"
     AuthUserFile /etc/apache2/.htpasswd
     Require valid-user
    • AuthType Basic은 기본 인증을 사용함을 지정합니다.
    • AuthName은 인증 시 보여줄 메시지입니다.
    • AuthUserFile은 사용자 이름과 비밀번호가 저장된 파일의 경로를 지정합니다.
    • Require valid-user는 유효한 사용자만 접근을 허용합니다.
  3. Apache 재시작: 설정을 적용하기 위해 Apache를 재시작합니다.

HTTP 다이제스트 인증 설정

다이제스트 인증은 기본 인증보다 보안성이 높습니다. 사용자 이름과 비밀번호가 암호화되어 전송됩니다.

  1. .htdigest 파일 생성: 다이제스트 인증에 사용될 사용자 이름, 영역(realm), 비밀번호를 저장하는 파일입니다. .htpasswd와 유사하게 생성할 수 있으나, htdigest 명령어를 사용합니다.
     htdigest -c /etc/apache2/.htdigest realm username
  2. .htaccess 파일 설정: 기본 인증과 유사하지만, AuthTypeAuthUserFile 경로가 다릅니다.
     AuthType Digest
     AuthName "realm"
     AuthDigestDomain /protected/ 
     AuthDigestProvider file
     AuthUserFile /etc/apache2/.htdigest
     Require valid-user
    • AuthType Digest는 다이제스트 인증을 사용함을 지정합니다.
    • AuthName은 인증 영역을 지정합니다. .htdigest 파일에서 사용된 영역과 일치해야 합니다.
    • AuthDigestDomain은 인증이 적용될 URI를 지정합니다.
    • AuthUserFile.htdigest 파일의 경로를 지정합니다.
  3. Apache 재시작: 설정을 적용하기 위해 Apache를 재시작합니다.

이러한 인증 방법을 사용하면, 사용자 이름과 비밀번호를 입력하지 않는 이상 웹 리소스에 접근할 수 없으므로 보안을 강화할 수 있습니다. 선택한 인증 방식에 따라 .htaccess 파일과 사용자 데이터 파일(.htpasswd 또는 .htdigest)을 적절히 설정해야 합니다.

728x90

댓글