GeoLite2 mmdb(iptables 또는 Firewalld)를 통해 국가를 차단하는 방법

GeoLite2 mmdb(iptables 또는 Firewalld)를 통해 국가를 차단하는 방법

방화벽에서 GeoLite2 데이터베이스(mmdb)를 사용하여 독일을 제외한 모든 국가를 차단하려면 어떻게 해야 합니까?

답변1

독일 IP 주소는 다음에서 얻을 수 있습니다.성숙한(유럽 레지스트리) 이를 사용하여 IPset을 생성합니다. 그러면 iptables의 ipset을 쉽고 효율적으로 사용할 수 있습니다.

RIPE에는 국가별 IP 주소를 얻을 수 있는 API와 웹 리소스가 있습니다. 예를 들어 독일 IP를 얻으려면 이 URL이 .json 형식으로 나열됩니다.

https://stat.ripe.net/data/country-resource-list/data.json?v4_format=prefix&resource=de

실제로 스크립트가 있습니다(https://github.com/mivk/ip-country/blob/master/get-ripe-ipscrontab) IP 목록을 업데이트하기 위해 호출합니다 . 해당 목록을 사용하여 ipset을 업데이트하십시오.

ipset이 있으면 이름을 ipv4_de로 지정하면 iptables의 줄은 다음과 같습니다.

-A INPUT -m set ! --match-set ipv4_de src -j DROP

그러면 ipv4_de 세트에 없는 모든 IP가 제거됩니다.

답변2

iptablesgeoipLinux에는 기본적으로 포함되지 않는 모듈이 있습니다 . 플러그인을 설치할 수 있습니다 xtables:

apt-get install xtables-addons-common xtables-addons-dkms

  1. MaxMinds geoip 데이터베이스를 가져옵니다(무료 데이터베이스를 사용하는 경우 최신 정보가 아닐 수 있음).

wget -O geolite2-csv.zip https://geolite.maxmind.com/download/geoip/database/GeoLite2-Country-CSV.zip ; unzip geolite2-csv.zip

  1. csv데이터베이스를 조회에 사용할 수 있는 바이너리 파일로 변환하는 gcsv2bin을 다운로드하세요 .
wget -O - http://people.netfilter.org/acidfu/geoip/tools/gcsv2bin.tar.gz | tar xzf - 
make
  1. 실제 데이터베이스를 변환합니다.

./gcsv2bin path_to_IPv4.csv

  1. 모듈 로드 xt_geoip:

sudo modprobe xt_geoip

  1. iptables 규칙:

sudo iptables -A INPUT -m geoip --src-cc DE -j DROP

그 중 매개변수는 --src-ccCountryCode 입니다.

관련 정보