Opnsense의 GeoIP를 적용해서 해외 IP 차단하기
안녕하세요. 달소입니다.
이번글에서는 Opnsense의 GeoIP를 적용해서 해외 IP를 차단하는방법입니다.
기본적으로 홈서버를 운영하다보면 스캔도 많이오고 이렇게 중국쪽에서 접근이 많은케이스가 있는데
홈랩에 접근하는 사용자가 제한되어있다면 해외 IP는 굳이 받을필요없이 다 차단하면 됩니다.
이때 지역별로 IP를 구별해주는걸 GeoIP라고합니다.

사전 준비사항
Opnsense의 경우 방화벽 OS답게 GeoIP를 기본적으로 지원하는데요.
DB의 경우 Maxmind사의 DB를 쓰기 때문에 아래 링크에서 먼저 회원가입을 해주세요
https://www.maxmind.com/en/geolite2/signup
가입 후 로그인을 하게되면 Account쪽에서 라이선스 키 생성이 가능한데 생성해주세요

여기서 기록할건 Account ID 부분과 License key 부분입니다.
이 두개를 복사해서
아래와 같은 형식으로 만들어 주시면 됩니다. 그걸 웹에 넣었을때 geo ip가 다운로드 되면 준비된것입니다.
https://AccountID:LicenseKey@download.maxmind.com/geoip/databases/GeoLite2-Country-CSV/download?suffix=zip
Opnsense GeoIP 셋팅 및 차단설정하기
이제 Opnsense의 콘솔창으로가서 Firewall -> Aliases로 간다음
GeoIP settings 탭으로 가서 위에서 만들어놓은 Url을 넣어주고 Apply 해줍니다.
Total number of ranges가 0에서 저렇게 바뀌어야하는데 라이선스 발급받고 좀 시간이 지나야 되더라구요

이제 설정한 GeoIP를 가지고 차단룰을 만들어야겠죠?
다시 Aliases로 가서 우측 하단 + 를 눌러줍니다.

이름을 잘 적고
Type을 GeoIP로 선택하면 Content에 이렇게 각 대륙의 나라들을 선택할 수 있습니다.
저는 일단 최근 요청이 많았던 China를 선택했습니다.

저장하면 이런 Aliases가 생깁니다.

이제 차단 룰을 만들어야겠죠?
외부에서 들어오는것이니 Firewall -> Rules -> WAN으로 가서 Rule을 만들어줍니다.

Action은 Block을 해주시면 됩니다.
Block의 경우 패킷이 룰에 걸리게되면 drop하는것이고
reject의 경우 요청자에게 응답을 보내는데 굳이 보낼필요없겠죠?
Interface는 당연히 외부에서 오는것이니 WAN, IP는 그냥 v4,v6 다 해줍니다.
그리고 중요한 Source에 아까 Aliase로 지정한 이름을 찾아서 선택해주면됩니다.
나머지는 그냥 잘 읽고 체크해주세요

저장 후 꼭 Apply도 한번 더 해줘야합니다.

로그는 좌측 경로에서 live view로 볼 수 있습니다.
왜이렇게 요청이 많은지 참;

서버단에서 적용하는것보다는 훨씬 직관적이고 쉽기때문에 opnsense를 운영하시는 분들이라면 꼭 적용하시면 좋습니다.