리눅스(우분투) nginx 해외 IP 접속 차단 설정 방법
서버 로그를 보면 해외 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; } ... } |

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; } } ... } |

6. nginx 서버 재시작.
두 파일에 코드를 추가했다면 이제 nginx 서버를 재시작하자.
service nginxrestart |
7. 접속 확인.
VPN 사이트나 프로그램을 이용하여 해외 IP로 접속을 시도해 보자.
403 페이지가 나타나며 접속이 되지 않는 것을 확인할 수 있을 것이다.
그 외 내용
위 방법은 간단하게 해외 IP를 차단하는 방법이다.
다만 IP 정보는 시간이 지나면 변하기 때문에 정확하게 하고자 한다면 GeoIP.dat 파일은 주기적으로 업데이트 해야 한다.