방화벽에서 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
iptables
geoip
Linux에는 기본적으로 포함되지 않는 모듈이 있습니다 . 플러그인을 설치할 수 있습니다 xtables
:
apt-get install xtables-addons-common xtables-addons-dkms
- MaxMinds geoip 데이터베이스를 가져옵니다(무료 데이터베이스를 사용하는 경우 최신 정보가 아닐 수 있음).
wget -O geolite2-csv.zip https://geolite.maxmind.com/download/geoip/database/GeoLite2-Country-CSV.zip ; unzip geolite2-csv.zip
csv
데이터베이스를 조회에 사용할 수 있는 바이너리 파일로 변환하는 gcsv2bin을 다운로드하세요 .
wget -O - http://people.netfilter.org/acidfu/geoip/tools/gcsv2bin.tar.gz | tar xzf -
make
- 실제 데이터베이스를 변환합니다.
./gcsv2bin path_to_IPv4.csv
- 모듈 로드
xt_geoip
:
sudo modprobe xt_geoip
- iptables 규칙:
sudo iptables -A INPUT -m geoip --src-cc DE -j DROP
그 중 매개변수는 --src-cc
CountryCode 입니다.