newtype
::: newtype의 지식창고 :::
newtype
전체 방문자
오늘
어제
  • 분류 전체보기 (392)
    • Dev (214)
      • C, C++ (43)
      • Go (5)
      • Web (49)
      • DBMS (21)
      • DevOps (8)
      • Java (2)
      • Windows, Win32 (4)
      • Visual Basic (5)
      • C# (2)
      • Mobile (25)
      • SQL CE (7)
      • Google Map (6)
      • Python (2)
      • cygwin (2)
      • 기타 (32)
      • Ruby (1)
    • 명언 (10)
    • 모임 (18)
      • 붕주회 (3)
      • 신흥컴정 (14)
      • 웹20기 (1)
    • 사진 (8)
    • 불펌 (29)
    • 막글 (98)
    • 게임 (6)
    • 여행 (8)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • 관리

공지사항

  • whoami
05-22 00:14
hELLO · Designed By 정상우.
newtype
Dev/Web

Nginx geoip 연동

Nginx geoip 연동
Dev/Web

Nginx geoip 연동

2022. 11. 17. 11:06

Lightsail 셋팅을 하고 나니, 해킹 시도로 의심되는 해외에서 접속이 많았습니다. geoip를 사용해서 해외 접속을 막아 보겠습니다.

차단 방법

  1. maxmind 에 가입하고 License key를 발급

    • https://dev.maxmind.com/geoip/geolite2-free-geolocation-data?lang=en 중간 배너를 클릭해서 계정을 만들고, License key를 발급 받습니다.

  2. geoipupdate 설치

    geoip 연동을 위해 geoipupdate를 설치합니다.

apt-get install build-essential 
apt-get install libpcre3 libpcre3-dev zlib1g zlib1g-dev libssl-dev
add-apt-repository ppa:maxmind/ppa
apt update
apt install geoipupdate libmaxminddb0 libmaxminddb-dev mmdb-bin
  1. 자동으로 update 받도록 crontab에 추가

    매주 오전 3시에 update 받습니다.

0 3 * * Mon /usr/bin/geoipupdate 2> /dev/null
  1. geoip 모듈 설치

    git에서 nginx 코드를 내려받아 직접 빌드 할 수도 있고, 설치해도 됩니다.

apt-get install nginx-plus-module-geoip2

설치 후 설정 파일에 발급받은 key를 넣여야 합니다.

vi /etc/GeoIP.conf

# are available from https://www.maxmind.com/en/my_license_key.
AccountID NNNNNNNN
LicenseKey XXXXXXXXXXXX
  1. geoip 모듈 로드

    nginx.conf 가장 위에 추가 합니다.

load_module modules/ngx_http_geoip2_module.so;
  1. 공통 설정

    /etc/nginx/conf.d/geoip2.conf 파일을 추가합니다.
    한국만 접속 되도록 설정했습니다.

    geoip2 /usr/share/GeoIP/GeoLite2-Country.mmdb {
      auto_reload 60m;
      $geoip2_metadata_country_build metadata build_epoch;
      $geoip2_data_country_code country iso_code;
      $geoip2_data_country_name country names en;
    }
    geoip2 /usr/share/GeoIP/GeoLite2-City.mmdb {
      auto_reload 60m;
      $geoip2_metadata_city_build metadata build_epoch;
      $geoip2_data_city_name city names en;
    }
    fastcgi_param COUNTRY_CODE $geoip2_data_country_code;
    fastcgi_param COUNTRY_NAME $geoip2_data_country_name;
    fastcgi_param CITY_NAME    $geoip2_data_city_name;

    map $geoip2_data_country_code $domain_allowed_country {
      default no;
      KR yes;
      RU no;
      CN no;
    }
  1. server별 설정

    server.location에 허용된 국가 아니면 444를 응답하도록 설정을 추가합니다.

server {
    listen       80;
    server_name  mydomain.com;

    location / {
        if ($domain_allowed_country = no) {
            return 444;
        }

        root   /home/bitnami/htdocs;
        index  index.html index.htm;
    }
}
  1. conf reload
sudo nginx -s reload

참고

  • https://dev.maxmind.com/geoip/geolite2-free-geolocation-data?lang=en
  • https://blog.kinsdayz.com/2020/07/25/nginx-geoip2%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%98%EC%97%AC-%EB%B6%88%EB%9F%89%ED%95%9C-%EC%A0%91%EC%86%8D%EA%B5%AD%EA%B0%80-%EB%A7%89%EB%8A%94-%EB%B0%A9%EB%B2%95/
  • https://docs.nginx.com/nginx/admin-guide/dynamic-modules/geoip2/
반응형
저작자표시 (새창열림)

'Dev > Web' 카테고리의 다른 글

websocket과 ssl 사용을 위한 nginx 설정  (0) 2023.04.25
Nginx SSL 설정  (0) 2022.11.16
Code Finder  (0) 2017.05.25
FAQ html 템플릿  (0) 2015.08.28
카카오톡 그룹 채팅방 통계  (2) 2013.12.17
  • 차단 방법
  • 참고
'Dev/Web' 카테고리의 다른 글
  • websocket과 ssl 사용을 위한 nginx 설정
  • Nginx SSL 설정
  • Code Finder
  • FAQ html 템플릿
newtype
newtype
지극히 개인적인 지식의 창고

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.