본문 바로가기
백엔드

[Nginx] 유저 ip를 통해 Nginx에 들어오는 요청 차단/허용하기

by 책 읽는 개발자_테드 2021. 4. 3.
반응형

유저 ip를 통해 Nginx에 들어오는 요청 차단/허용하기

보안을 위해 서버에게 요청할 수 있는 사용자 ip를 제한 해야 하는 경우가 있다. Nginx 웹서버를 통해 해당 문제를 해결해보자. 

 

우분투를 기준으로 Nginx를 설치하면 /etc/nginx에 아래와 같이 설정 파일들이 존재한다.

 

여기서 sites-available 디렉토리에 위치하는 default 파일을 열어보면 다음과 같은 부분이 존재한다.

server { 

       ~ 생략 ~

        location / {

        ~ 생략 ~
        }
}

 

여기서 location에 allow, deny 설정을 추가해서 Nginx로 들어오는 요청을 차단, 허용할 수 있다. 예를 들어 다음과 같이 설정하면 ip 주소 111.111.111.11 를 허용하고, ip 주소 222.222.222.22를 차단할 수 있다.

server {

       ~ 생략 ~

        location / {  

        ~ 생략 ~

        allow 111.111.111.11; 
        deny 222.222.222.22;
        }
}

 

allow와 deny는 복수 개도 설정이 가능하다.

server {

       ~ 생략 ~

        location / {  

        ~ 생략 ~

        allow 111.111.111.11; 
        allow 111.111.111.12; 
        deny 222.222.222.21;
        deny 222.222.222.22;
        }
}

 

ip 주소 대신 all을 적으면 모든 ip에 대한 설정이 된다. 예를 들어 다음과 같이 설정하면 모든 ip 주소를 차단하고, ip 주소 111.111.111.11만 허용한다.

server {

       ~ 생략 ~

        location / {  

        ~ 생략 ~

        allow 111.111.111.11; 
        deny all;
        }
}

 

허용하는 ip 주소가 여러 개일 경우 default 파일이 아닌 추가적인 파일을 만들어서 관리할 수 있다. 이때 include 설정을 사용한다. 예를 들어 111.111.111.11 ~ 111.111.111.15의 ip 주소들만 접속을 허용하려면 다음과 같이 작성한다.

 

allowed-ips

allow 111.111.111.11; 
allow 111.111.111.12; 
allow 111.111.111.13; 
allow 111.111.111.14;  
allow 111.111.111.15;

 

 

sites-available/default

server {

       ~ 생략 ~

        location / {  

        ~ 생략 ~

        include allowed-ips;
        deny all;
        }
}

 

이때 다수의 ip를 표기하기위해 prefix를 사용하면 더 간단하게 설정을 표현할 수 있다. 예를 들어 111.111.111.0 ~ 111.111.111.127의 ip들을 다음과 같이 표기할 수있다.

 

allowed-ips

allow 111.111.111.11/25; 

 

위 표현이 이해가 되지 않는다면 서브넷 마스크에 대해서 공부해보자!

gun0912.tistory.com/44

korean-daeddo.blogspot.com/2016/01/blog-post_26.html

 

 

반응형

댓글