유저 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;
위 표현이 이해가 되지 않는다면 서브넷 마스크에 대해서 공부해보자!
korean-daeddo.blogspot.com/2016/01/blog-post_26.html
'백엔드' 카테고리의 다른 글
부하 테스트란? 부하 테스트 직접 해보기 (0) | 2021.11.26 |
---|---|
[Cookie] 쿠키를 주고 받을 때 HTTP 요청과 응답에 어떤 헤더 데이터가 오가는가? 쿠키 값을 어떻게 인코딩하나? (0) | 2021.10.14 |
웹 프로그래밍 기초 - URL과 웹 페이지, 웹 브라우저와 웹 서버, HTML과 HTTP, 정적 자원과 동적 자원 (0) | 2021.10.02 |
[Nginx] 멀티 도메인 지원하기 (0) | 2021.04.06 |
댓글