리눅스(우분투) nginx 해외 IP 접속 차단 설정 방법

2023. 1. 1. 18:16 / 서기랑

 서버 로그를 보면 해외 IP의 접속 로그가 보이는 경우가 있다.

 해외에 서비스하는 것이 아닌이상 이러한 해외 IP의 접속 로그는 대부분 해킹을 위한 취약점 분석 등 안좋은 의도로 접속하는 경우가 많은데 IP를 일일히 선별해서 차단하기 힘들다면 아예 해외 IP의 접속을 차단하는 것이 편할 수 있다.

 

nginx 해외 IP 접속 차단 설정 하기

1. geoip 모듈 설치.

 해외 IP의 접속을 차단하기 위해 필요한 모듈이다.

 apt를 이용하여 설치를 하자.

sudo apt install libnginx-mod-http-geoip geoip-database

 

2. nginx.conf 파일 열기.

 모듈의 설치가 끝났다면 nginx.conf 파일 수정해야 한다.

 vi나 namo 등 파일을 편집할 수 있는 도구를 이용하여 nginx.conf 파일을 열자.

sudo vi /etc/nginx/nginx.conf

 

3. nginx.conf 파일 수정.

 http {} 사이에 아래의 코드를 추가하자.

 (전체 IP를 차단하고 국내 IP만 허용하는 코드)

http {
 ...
 geoip_country /usr/share/GeoIP/GeoIP.dat;
 map $geoip_country_code $allowed_country {
  default no;
  KR yes;
 }
 ...
}

nginx.conf 파일에 코드 추가

4. default 파일 열기.

 이번에는 default 파일을 열자.

 (default.conf 와는 다른 경로의 파일이다.)

sudo vi /etc/nginx/sites-available/default

 

5. default 파일 수정.

 location {} 사이에 아래의 코드를 추가하자.

server {
 ...
 location / {
  # First attempt to serve request as file, then
  # as directory, then fall back to displaying a 404.
  #try_files $uri $uri/ =404;
  try_files $uri $uri/ /index.php?$args;
  if ($allowed_country = no) {
   return 403;
  }
 }
 ...
}

default 파일에 코드 추가

6. nginx 서버 재시작.

 두 파일에 코드를 추가했다면 이제 nginx 서버를 재시작하자.

service nginxrestart

 

7. 접속 확인.

 VPN 사이트나 프로그램을 이용하여 해외 IP로 접속을 시도해 보자.

 403 페이지가 나타나며 접속이 되지 않는 것을 확인할 수 있을 것이다.

 

그 외 내용

 위 방법은 간단하게 해외 IP를 차단하는 방법이다.

 다만 IP 정보는 시간이 지나면 변하기 때문에 정확하게 하고자 한다면 GeoIP.dat 파일은 주기적으로 업데이트 해야 한다.