ç¹å®ã®åœããã®ãã©ãã£ãã¯ããããã¯ããã¿ã¹ã¯ã¯ç°¡åããã«èŠããŸããã第äžå°è±¡ã¯æ¬ºãããå¯èœæ§ããããŸãã ä»æ¥ã¯ãããã©ã®ããã«å®è£
ã§ãããã説æããŸãã
èæ¯
ãã®ãããã¯ã«é¢ãã Google æ€çŽ¢ã®çµæã¯æ®å¿µã§ããã»ãšãã©ã®è§£æ±ºçã¯é·ãéãè
ã£ãŠããŠããæã«ã¯ãã®ãããã¯ãæ£äžããããæ°žé ã«å¿ãå»ãããŠããããã«èŠããããšããããŸãã ç§ãã¡ã¯å€ãã®å€ãèšé²ã調æ»ããææ°ããŒãžã§ã³ã®èª¬ææžãå
±æããæºåãã§ããŠããŸãã
ãããã®ã³ãã³ããå®è¡ããåã«ãèšäºå šäœãèªãããšããå§ãããŸãã
ãªãã¬ãŒãã£ã³ã° ã·ã¹ãã ã®æºå
ãã£ã«ã¿ãªã³ã°ã¯ãŠãŒãã£ãªãã£ã䜿çšããŠæ§æãããŸã iptablesãGeoIP ããŒã¿ãæäœããã«ã¯æ¡åŒµæ©èœãå¿
èŠã§ãã ãã®æ¡åŒµæ©èœã¯æ¬¡ã®å Žæã«ãããŸãã
ãã®èšäºã®å·çæç¹ã§ã¯ãxtables-addons ã®çŸåšã®ããŒãžã§ã³ã¯ 3.9 ã§ãã ãã ããæšæºã® Ubuntu 20.04 LTS ãªããžããªã«ã¯ 3.8 ã®ã¿ããããUbuntu 18.04 ãªããžããªã«ã¯ 3.0 ã®ã¿ããããŸãã 次ã®ã³ãã³ãã䜿çšããŠãããã±ãŒãž ãããŒãžã£ãŒããæ¡åŒµæ©èœãã€ã³ã¹ããŒã«ã§ããŸãã
apt install xtables-addons-common libtext-csv-xs-perl
ããŒãžã§ã³ 3.9 ãšãããžã§ã¯ãã®çŸåšã®ç¶æ ã®éã«ã¯ãå°ãããªãããéèŠãªéããããããšã«æ³šæããŠãã ãããããã«ã€ããŠã¯åŸã§èª¬æããŸãã ãœãŒã¹ ã³ãŒããããã«ãããã«ã¯ãå¿ èŠãªããã±ãŒãžããã¹ãŠã€ã³ã¹ããŒã«ããŸãã
apt install git build-essential autoconf make libtool iptables-dev libxtables-dev pkg-config libnet-cidr-lite-perl libtext-csv-xs-perl
ãªããžããªã®ã¯ããŒã³ãäœæããŸãã
git clone https://git.code.sf.net/p/xtables-addons/xtables-addons xtables-addons-xtables-addons
cd xtables-addons-xtables-addons
xtables-addons ã«ã¯å€ãã®æ¡åŒµæ©èœãå«ãŸããŠããŸãããç§ãã¡ãèå³ãããã®ã¯ xt_geoipã äžèŠãªæ¡åŒµæ©èœãã·ã¹ãã ã«ãã©ãã°ããããªãå Žåã¯ããããããã«ãããé€å€ã§ããŸãã ãããè¡ãã«ã¯ããã¡ã€ã«ãç·šéããå¿ èŠããããŸã mconfigã å¿ èŠãªãã¹ãŠã®ã¢ãžã¥ãŒã«ãã€ã³ã¹ããŒã«ããŸãã yãäžèŠãªãã®ããã¹ãŠããŒã¯ããŸã nã ç§ãã¡ã¯ä»¥äžãåéããŸã:
./autogen.sh
./configure
make
ã¹ãŒããŒãŠãŒã¶ãŒæš©éã§ã€ã³ã¹ããŒã«ããŸãã
make install
ã«ãŒãã« ã¢ãžã¥ãŒã«ã®ã€ã³ã¹ããŒã«äžã«ã次ã®ãããªãšã©ãŒãçºçããå ŽåããããŸãã
INSTALL /root/xtables-addons-xtables-addons/extensions/xt_geoip.ko
At main.c:160:
- SSL error:02001002:system library:fopen:No such file or directory: ../crypto/bio/bss_file.c:72
- SSL error:2006D080:BIO routines:BIO_new_file:no such file: ../crypto/bio/bss_file.c:79
sign-file: certs/signing_key.pem: No such file or directory
ãã®ç¶æ³ã¯ãã«ãŒãã« ã¢ãžã¥ãŒã«ã«çœ²åã§ããªãããã«çºçããŸãã 眲åãããã®ã¯äœããããŸããã ãã®åé¡ã¯ã次ã®ããã€ãã®ã³ãã³ãã§è§£æ±ºã§ããŸãã
cd /lib/modules/(uname -r)/build/certs
cat <<EOF > x509.genkey
[ req ]
default_bits = 4096
distinguished_name = req_distinguished_name
prompt = no
string_mask = utf8only
x509_extensions = myexts
[ req_distinguished_name ]
CN = Modules
[ myexts ]
basicConstraints=critical,CA:FALSE
keyUsage=digitalSignature
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid
EOF
openssl req -new -nodes -utf8 -sha512 -days 36500 -batch -x509 -config x509.genkey -outform DER -out signing_key.x509 -keyout signing_key.pem
ã³ã³ãã€ã«ãããã«ãŒãã« ã¢ãžã¥ãŒã«ãã€ã³ã¹ããŒã«ãããŠããŸãããã·ã¹ãã ã¯ãããæ€åºããŸããã æ°ããã¢ãžã¥ãŒã«ãèæ ®ããŠäŸåé¢ä¿ããããäœæããããã«ã·ã¹ãã ã«äŸé ŒãããããããŒãããŠã¿ãŸãããã
depmod -a
modprobe xt_geoip
xt_geoip ãã·ã¹ãã ã«ããŒããããŠããããšã確èªããŸãããã
# lsmod | grep xt_geoip
xt_geoip 16384 0
x_tables 40960 2 xt_geoip,ip_tables
ããã«ãæ¡åŒµæ©èœã iptables ã«ããŒããããŠããããšã確èªããŠãã ããã
# cat /proc/net/ip_tables_matches
geoip
icmp
ãã¹ãŠã«æºè¶³ããŠããŸããããšã¯ã¢ãžã¥ãŒã«åãè¿œå ããã ãã§ãã / etc /ã¢ãžã¥ãŒã«OS ã®åèµ·ååŸã«ã¢ãžã¥ãŒã«ãåäœããããã«ããŸãã ä»åŸãiptables 㯠geoip ã³ãã³ããç解ããŸãããæäœããã®ã«ååãªããŒã¿ããããŸããã geoip ããŒã¿ããŒã¹ã®ããŒããéå§ããŸãããã
GeoIP ããŒã¿ããŒã¹ã®ååŸ
iptables æ¡åŒµæ©èœã§ç解ã§ããæ å ±ãä¿åããããã£ã¬ã¯ããªãäœæããŸãã
mkdir /usr/share/xt_geoip
èšäºã®åé ã§ããœãŒã¹ ã³ãŒãããã®ããŒãžã§ã³ãšããã±ãŒãž ãããŒãžã£ãŒããã®ããŒãžã§ã³ã«ã¯éãããããšè¿°ã¹ãŸããã æãé¡èãªéãã¯ãããŒã¿ããŒã¹ ãã³ããŒãšã¹ã¯ãªããã®å€æŽã§ãã xt_geoip_dl, ææ°ã®ããŒã¿ãããŠã³ããŒãããŸãã
ããã±ãŒãžãããŒãžã£ãŒã®ããŒãžã§ã³
ãã®ã¹ã¯ãªããã¯ãã¹ /usr/lib/xtables-addons ã«ãããŸãããå®è¡ããããšãããšãããŸãæçã§ã¯ãªããšã©ãŒã衚瀺ãããŸãã
# ./xt_geoip_dl
unzip: cannot find or open GeoLite2-Country-CSV.zip, GeoLite2-Country-CSV.zip.zip or GeoLite2-Country-CSV.zip.ZIP.
以åã¯ãã©ã€ã»ã³ã¹ã«åºã¥ããŠé
åžãããŠãã GeoLite 補å (çŸåšã¯ GeoLite Legacy ãšããŠç¥ãããŠããŸã) ãããŒã¿ããŒã¹ãšããŠäœ¿çšãããŠããŸããã
ãŸãã¯2018幎XNUMXæã«
次ã«ã2019 幎 XNUMX æ以éãMaxMind
å瀟ã®è£œåã䜿çšãããã®ã§ããã®ããŒãžã«ç»é²ããŸãã
ãã®åŸããã¹ã¯ãŒãã®èšå®ãæ±ããã¡ãŒã«ãå±ããŸãã ã¢ã«ãŠã³ããäœæããã®ã§ãã©ã€ã»ã³ã¹ ããŒãäœæããå¿
èŠããããŸãã ããªãã®å人ã¢ã«ãŠã³ãã§ã¢ã€ãã ãèŠã€ããŸã ç§ã®ã©ã€ã»ã³ã¹ããŒãã¯ãªãã¯ãããã¿ã³ãã¯ãªãã¯ããŸãã æ°ããã©ã€ã»ã³ã¹ããŒãçæãã.
ããŒãäœæãããšãã«å°ãããã質å㯠XNUMX ã€ã ãã§ãããã®ããŒã GeoIP æŽæ°ããã°ã©ã ã§äœ¿çšããŸãã? åŠå®çã«çããŠãã¿ã³ãæŒããŸã 確èªããŸãã ããŒããããã¢ãã ãŠã£ã³ããŠã«è¡šç€ºãããŸãã ãããã¢ãã ãŠã£ã³ããŠãéãããšããŒå šäœã衚瀺ã§ããªããªãããããã®ããŒãå®å šãªå Žæã«ä¿åããŠãã ããã
GeoLite2 ããŒã¿ããŒã¹ãæåã§ããŠã³ããŒãããæ©èœã¯ãããŸããããã®åœ¢åŒã¯ xt_geoip_build ã¹ã¯ãªããã§äºæããã圢åŒãšäºææ§ããããŸããã ããã§ãGeoLite2xtables ã¹ã¯ãªããã圹ã«ç«ã¡ãŸãã ã¹ã¯ãªãããå®è¡ããã«ã¯ãNetAddr::IP perl ã¢ãžã¥ãŒã«ãã€ã³ã¹ããŒã«ããŸãã
wget https://cpan.metacpan.org/authors/id/M/MI/MIKER/NetAddr-IP-4.079.tar.gz
tar xvf NetAddr-IP-4.079.tar.gz
cd NetAddr-IP-4.079
perl Makefile.PL
make
make install
次ã«ãã¹ã¯ãªããã䜿çšããŠãªããžããªã®ã¯ããŒã³ãäœæãã以åã«ååŸããã©ã€ã»ã³ã¹ ããŒããã¡ã€ã«ã«æžã蟌ã¿ãŸãã
git clone https://github.com/mschmitt/GeoLite2xtables.git
cd GeoLite2xtables
echo YOUR_LICENSE_KEY=â123ertyui123' > geolite2.license
ã¹ã¯ãªãããå®è¡ããŠã¿ãŸãããã
# СкаÑОваеЌ ЎаММÑе GeoLite2
./00_download_geolite2
# СкаÑОваеЌ ОМÑПÑЌаÑÐžÑ ÐŸ ÑÑÑаМаÑ
(ÐŽÐ»Ñ ÑППÑвеÑÑÑÐ²ÐžÑ ÐºÐŸÐŽÑ)
./10_download_countryinfo
# ÐПМвеÑÑОÑÑеЌ GeoLite2 Ð±Ð°Ð·Ñ Ð² ÑПÑÐŒÐ°Ñ GeoLite Legacy
cat /tmp/GeoLite2-Country-Blocks-IPv{4,6}.csv |
./20_convert_geolite2 /tmp/CountryInfo.txt > /usr/share/xt_geoip/dbip-country-lite.csv
MaxMind ã§ã¯ã2000 æ¥ããã XNUMX 件ã®ããŠã³ããŒãå¶éã課ããŠããããµãŒããŒã®æ°ãå€ãå Žåã¯ããããã· ãµãŒããŒã«æŽæ°ããã£ãã·ã¥ããããšãææ¡ããŠããŸãã
åºåãã¡ã€ã«ãåŒã³åºãå¿ èŠãããããšã«æ³šæããŠãã ããã dbip-country-lite.csv..ã äžå¹žã«ãã 20_å€æ_ãžãªã©ã€ã2 å®ç§ãªãã¡ã€ã«ã¯çæãããŸããã èæ¬ xt_geoip_build XNUMX ã€ã®åãå¿ èŠã§ãã
- ã¢ãã¬ã¹ç¯å²ã®éå§ã
- ã¢ãã¬ã¹ç¯å²ã®çµããã
- iso-3166-alpha2 ã®åœã³ãŒãã
åºåãã¡ã€ã«ã«ã¯ XNUMX ã€ã®åãå«ãŸããŠããŸãã
- ã¢ãã¬ã¹ç¯å²ã®éå§ (æååè¡šçŸ)ã
- ã¢ãã¬ã¹ç¯å²ã®çµãã (æååè¡šçŸ)ã
- ã¢ãã¬ã¹ç¯å²ã®éå§ (æ°å€è¡šçŸ)ã
- ã¢ãã¬ã¹ç¯å²ã®çµãã (æ°å€è¡šçŸ);
- åœã®ã³ãŒãã
- åœã®ååã
ãã®äžäžèŽã¯é倧ã§ããã次㮠XNUMX ã€ã®æ¹æ³ã®ããããã§ä¿®æ£ã§ããŸãã
- æ²»äž 20_å€æ_ãžãªã©ã€ã2;
- æ²»äž xt_geoip_build.
æåã®ã±ãŒã¹ã§ã¯ã次ã®ããã«åæžããŸãã
/usr/lib/xtables-addons/xt_geoip_build -S /usr/share/xt_geoip/ -D /usr/share/xt_geoip
. . .
2239 IPv4 ranges for ZA
348 IPv6 ranges for ZA
56 IPv4 ranges for ZM
12 IPv6 ranges for ZM
56 IPv4 ranges for ZW
15 IPv6 ranges for ZW
äœè
ã«æ³šæããŠãã ãã
ãœãŒã¹ããŒãžã§ã³
ãœãŒã¹ã³ãŒãã¹ã¯ãªããããã€ã³ã¹ããŒã«ããå Žå xt_geoip_* ã«ã¿ãã°ã«æ²èŒãããŠããŸã /usr/local/libexec/xtables-addonsã ãã®ããŒãžã§ã³ã®ã¹ã¯ãªããã¯ããŒã¿ããŒã¹ã䜿çšããŸã
cd /usr/share/xt_geoip/
/usr/local/libexec/xtables-addons/xt_geoip_dl
/usr/local/libexec/xtables-addons/xt_geoip_build
ãããã®æé ãå®äºãããšãiptables ãåäœããæºåãæŽããŸãã
iptables ã§ã® geoip ã®äœ¿çš
ã¢ãžã¥ãŒã« xt_geoip è¿œå ããããŒã¯ XNUMX ã€ã ãã§ãã
geoip match options:
[!] --src-cc, --source-country country[,country...]
Match packet coming from (one of) the specified country(ies)
[!] --dst-cc, --destination-country country[,country...]
Match packet going to (one of) the specified country(ies)
NOTE: The country is inputed by its ISO3166 code.
iptables ã®ã«ãŒã«ãäœæããæ¹æ³ã¯ãäžè¬ã«å€æŽãããŸããã è¿œå ã¢ãžã¥ãŒã«ã®ããŒã䜿çšããã«ã¯ã-m ã¹ã€ããã䜿çšããŠã¢ãžã¥ãŒã«ã®ååãæ瀺çã«æå®ããå¿ èŠããããŸãã ããšãã°ããã¹ãŠã®ã€ã³ã¿ãŒãã§ã€ã¹ã§ç±³åœä»¥å€ããã®ããŒã 443 ã§ã®åä¿¡ TCP æ¥ç¶ããããã¯ããã«ãŒã«ã¯æ¬¡ã®ãšããã§ãã
iptables -I INPUT ! -i lo -p tcp --dport 443 -m geoip ! --src-cc US -j DROP
xt_geoip_build ã«ãã£ãŠäœæããããã¡ã€ã«ã¯ãã«ãŒã«ã®äœææã«ã®ã¿äœ¿çšãããŸããããã£ã«ã¿ãªã³ã°æã«ã¯èæ ®ãããŸããã ãããã£ãŠãgeoip ããŒã¿ããŒã¹ãæ£ããæŽæ°ããã«ã¯ããŸã iv* ãã¡ã€ã«ãæŽæ°ããŠãããiptables 㧠geoip ã䜿çšãããã¹ãŠã®ã«ãŒã«ãåäœæããå¿ èŠããããŸãã
ãŸãšã
åœã«åºã¥ããŠãã±ããããã£ã«ã¿ãªã³ã°ããããšã¯ãæéã®çµéãšãšãã«å¿ãå»ãããæŠç¥ã§ãã ããã«ããããããããã®ãããªãã£ã«ã¿ãªã³ã°ã®ããã®ãœãããŠã§ã¢ ããŒã«ã¯éçºãããŠãããããããéããªããæ°ãã geoip ããŒã¿ ãããã€ããŒãåãã xt_geoip ã®æ°ããããŒãžã§ã³ãããã±ãŒãž ãããŒãžã£ãŒã«è¡šç€ºãããã·ã¹ãã 管çè ã®äœæ¥ãå€§å¹ ã«ç°¡çŽ åãããã§ãããã
ç»é²ãŠãŒã¶ãŒã®ã¿ãã¢ã³ã±ãŒãã«åå ã§ããŸãã
åœã«ãããã£ã«ã¿ãªã³ã°ã䜿çšããããšããããŸãã?
-
èŠèŽè ã®ïŒïŒ%ãã¯ã13
-
èŠèŽè ã®ïŒïŒ%ãNo9
22 人ã®ãŠãŒã¶ãŒãæ祚ããŸããã 3åã®ãŠãŒã¶ãŒãæ£æš©ããã
åºæïŒ habr.com