WEB,WAS

[Nginx] Nginx 에서 ACL(Access Control List) 설정 방법

IT-PAPA 2023. 11. 24. 06:10
반응형

ACL은 Access Control List의 약어로, 접근 제어 목록이라고도 불립니다. 네트워크나 시스템에서 특정 자원에 대한 접근을 허용하거나 거부하기 위해 사용되는 보안 메커니즘입니다. Nginx에서의 ACL은 주로 IP 주소나 지리적 위치에 기반한 액세스 제어에 사용됩니다.

Nginx에서 ACL은 주로 geo 모듈이나 map 모듈을 사용하여 설정됩니다. 이러한 모듈을 사용하면 특정 조건에 따라 요청을 라우팅하거나 액세스를 제한하는 규칙을 정의할 수 있습니다.

geo 모듈을 이용한 ACL
geo 모듈은 IP 주소나 지리적 위치에 따라 변수 값을 설정할 수 있습니다. 이를 이용하여 특정 IP 주소 범위에서의 액세스를 제한하거나 허용할 수 있습니다. 예를 들어:

http {
    geo $allowed_ip {
        default   0; # 기본적으로 모든 IP 차단
        192.168.1.0/24  1; # 특정 IP 범위 허용
        10.0.0.0/8      1; # 다른 특정 IP 범위 허용
    }

    server {
        listen 80;
        server_name example.com;

        if ($allowed_ip = 0) {
            return 403; # 액세스 거부
        }

        # 나머지 설정은 계속 진행
        # ...
    }
}

map 모듈을 이용한 ACL
map 모듈은 변수의 값을 다른 값으로 매핑할 수 있습니다. 이를 이용하여 ACL을 구현할 수 있습니다. 예를 들어:

http {
    map $remote_addr $allowed_ip {
        default   0; # 기본적으로 모든 IP 차단
        ~192.168.1.  1; # 특정 IP 범위 허용
        ~10.0.0.     1; # 다른 특정 IP 범위 허용
    }

    server {
        listen 80;
        server_name example.com;

        if ($allowed_ip = 0) {
            return 403; # 액세스 거부
        }

        # 나머지 설정은 계속 진행
        # ...
    }
}

allow 및 deny 지시문 사용
allow와 deny 지시문은 특정 IP 주소나 범위를 명시적으로 지정하여 액세스를 허용 또는 거부하는 데 사용됩니다.

http {
    server {
        listen 80;
        server_name example.com;

        location / {
            allow 192.168.1.0/24; # 특정 IP 범위 허용
            allow 10.0.0.0/8;     # 다른 특정 IP 범위 허용
            deny all;             # 나머지 모든 IP 차단

            # 나머지 설정은 계속 진행
            # ...
        }
    }
}

위의 예제에서는 / 위치에 대해 allow와 deny 지시문을 사용하여 ACL을 설정했습니다. 이 설정은 192.168.1.0/24 및 10.0.0.0/8 IP 범위의 요청은 허용하고, 나머지 모든 IP는 거부합니다. deny all;은 이 위치에 대한 모든 액세스를 차단합니다.

 

주의사항
- if 지시문은 일반적으로 권장되지 않습니다. 가능한한 map 또는 다른 더 안전한 방법을 사용하는 것이 좋습니다.
- ACL 설정은 주로 보안 목적으로 사용되므로 신중하게 구성되어야 합니다.
- 실제 환경에서는 SSL/TLS 설정, 로깅, 백엔드 서버 프록싱 등의 추가 구성이 필요할 수 있습니다.


구성 파일 저장 및 Nginx 재시작:
구성 파일을 저장한 후 Nginx를 재시작하여 변경 사항을 적용합니다.

sudo service nginx restart
728x90
반응형
LIST