개발자 공부 업무 정보/ETC

악성 IP 리스트 확인 및 NGINX IP차단 설정

회님 2022. 7. 11. 14:32
반응형

1. 악성 IP 리스트 확인


우선 악성 IP리스트를 구해봅시다

 

유료버전으로 워드프레스 보안 플러그인인 워드펜스 나 iThemes Security 그리고 Sucuri Security 등이 있으며 
이를 무료버전으로 사용할 시 30일 후에나 추가로 리스트를 제공하는 등 실시간으로 처리가 어려운 부분이 있습니다.

 

그렇다면 실시간 악성 IP LIST는 어디서 구할 수 있을까요?

 

==  > 레스큐사이버 https://rescure.me/ 에서 구할 수 있습니다.

https://rescure.me/feeds.html에 접속하여

Malicious IP Blacklist 를 선택하면 실시간 악성 IP를 확인 할 수 있습니다.서버에 .txt 형식으로 저장 되어 있는걸 볼 수 있습니다.

 

 

2. NGINX 설정에서 악성 IP 차단 리스트 추가

NGINX를 이용해 가장 간단하게 악성 IP 차단 리스트를 추가하는 방법은 NGINX 설정의 Block 섹션에서 deny 명령어를 사용해 악성 IP 리스트를 추가하는 것입니다.


************************************************************

EX ) 

location / {
   deny 41.104.8.106; # wordfence에서 추가한 Block ip
   deny 41.109.68.211; # wordfence에서 추가한 Block ip
}

************************************************************

그런데 아무래도 대량의 악성 IP차단 리스트를 추가한다면 이러한 방식은 비효율적인 방법이죠.

NGINX에서 적용되는 include 명령을 사용해 악성 IP 차단 리스트를 불러오는 것이 더 좋을 것 같습니다.

악성 IP 차단 리스트 파일 만들기

우선 아래와 같은 형식의 ip-block-list.conf 파일을 만듭니다. 이름은 원하는대로 만들면 되겠죠. 저는 이 파일을 /etc/nginx 폴더에 만들었습니다. 마찬가지로 만들어진 파일 위치만 명확하면 됩니다.

  • 디폴트 값은 0으로 차단하지 않음
  • 차달할 IP 다음에 1값을 주면 NGINX에서는 이 ip를 차달할 ip로 인식

************************************************************

geo $bad_ip {
       default 0;
       41.104.8.106 1;
       41.109.68.211 1;
       차단1;
       차단1;
       ...
}
************************************************************

차단 리스트 불러오기

앞서 만들어진 악성 IP 차단 리스트 파일을 NGINX에서 불러와 인식시킵니다.

이는 앞서 이야기한대로 include명령을 사용합니다. nginx.conf 파일의 http 섹션에서 아래와 같은 명령어를 추가해줍니다.

************************************************************
include /etc/nginx/ip-block-list.conf
************************************************************

444 화면 띄워주기

마직막으로 이렇게 차단된 ip가 접근 시 아무런 응답도 보내지 않고 444 상태로 연결을 종료합니다.

이는 NGINX 설정 중 Block 섹션중에 아래와 같은 명령어를 추가합니다.

************************************************************

location / {
    if ($bad_ip) {
      return 444;
      }
}

************************************************************
NGINX 다시 시작

이렇게 변경 후 NGINX를 다시 가동합니다.

************************************************************
Service nginx restart

************************************************************

반응형