ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Nginx에서 해외 IP 차단 설정하기
    Nginx 2024. 2. 24. 01:18

    문제

    갑자기 개발 서버 인스턴스의 CPU 사용률이 말도 안되게 높아졌다.

    원래 왼쪽이 정상적인 사용률인데, 갑자기 오른쪽처럼 100%를 찍어버린 것이다.

     

     

    인스턴스에 접속하여 top 명령어를 통해 확인해 보니,

     

    top 명령어를 사용했을 때, 나오는 예시

     

    프로세스를 실행한 커맨드를 의미하는 COMMAND에 java라고 써져있는 프로세스가

    CPU 사용량이 90 ~ 100을 왔다 갔다하고 있었는데, 스프링부트쪽인거 같았다.

     

    이런적이 한번도 없었는데 뭔가 느낌이 이상해서 nginx log를 살펴보니...

    해외 IP에서 각종 취약점을 악용하여 우리쪽으로 API 요청을 보내고 있었고

    대부분의 API 요청은 막혔지만, 어느 하나 걸려서 서버에 과부화가 걸린 것으로 파악된다.

     

     

     

    Nginx 해외 IP 차단

    현재 서버는 해외 접속을 허용할 필요가 전혀 없기 때문에

    해외 IP를 전부 차단하는 방법을 적용하게 되었다.

    GeoIP 사용하기

    1. geoip 설치

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

     

    2. nginx 설정 파일 수정

    $ sudo vi /etc/nginx/nginx.conf

     

    이제 http { 로 시작하는 블럭안에 아래 내용을 넣고 저장해준다.

    한국 IP만 허용할 것이기 때문에 아래와 같이 작성해주면 된다.

    http {
            ##
            # Blocking overseas ip access
            ##
            geoip_country /usr/share/GeoIP/GeoIP.dat;
            map $geoip_country_code $allowed_country {
                    default no;
                    KR yes;
            }
            
            .....
    }

     

    이제 $allowed_country 값이 no인 IP에 대한 차단을 수행해야 하므로

    /etc/nginx/sites-available/default 또는 자신이 설정한 nginx의 server 블럭 안에

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

     

    아래 내용을 추가해준다.

    if ($allowed_country = no) {
    	return 403;
    }

     

    3. nginx 리로드

     

    리로드 전에, 수정한 nginx 설정 파일이 문법 문제가 없는지 확인하기

    $ sudo nginx -t

     

    리로드

    $ sudo service nginx reload

     

     

     

    확인

    VPN을 키고 접속을 해보면 403 forbidden 페이지가 뜨면서 요청을 거부하는 것을 확인할 수 있다.

     

    해외 IP를 차단한 와중에도 열심히 돌리는 나쁜놈들..

     

    해외 IP 차단으로 일단락 되었지만, 방심할 수 없기 때문에 추가적인 보안설정을 하려고 한다.

    이번에도 경각심을 가지면서 보안을 좀 더 강화해야겠다는 걸 뼈저리게 느꼈다.

     

     

     

    참고

     

    [Ubuntu] Nginx 설정

    [Ubuntu] Nginx 설정 이 글에서는 Ubuntu에서 Nginx의 기본적인 설치와 설정에 대해서 정리하고자 한다. Nginx 설치 Nginx 설치를 위해서는 아래 명령어를 입력해주면 된다. sudo apt-get install nginx 설치 후 Ngin

    computer-science-student.tistory.com

     

    velog

     

    velog.io

     

Designed by Tistory.