Ang gawain ng pagharang sa trapiko mula sa ilang mga bansa ay tila simple, ngunit ang mga unang impression ay maaaring mapanlinlang. Ngayon sasabihin namin sa iyo kung paano ito maipapatupad.
prehistory
Ang mga resulta ng isang paghahanap sa Google sa paksang ito ay nakakabigo: karamihan sa mga solusyon ay matagal nang "bulok" at kung minsan ay tila ang paksang ito ay naitago at nakalimutan na magpakailanman. Nakapagsuklay na kami ng maraming lumang record at handa kaming magbahagi ng modernong bersyon ng mga tagubilin.
Inirerekomenda namin na basahin mo ang buong artikulo bago isagawa ang mga utos na ito.
Paghahanda ng operating system
Ang pag-filter ay iko-configure gamit ang utility iptables, na nangangailangan ng extension upang gumana sa data ng GeoIP. Ang extension na ito ay matatagpuan sa
Sa oras ng pagsulat, ang kasalukuyang bersyon ng xtables-addons ay 3.9. Gayunpaman, 20.04 lamang ang makikita sa karaniwang mga repositoryo ng Ubuntu 3.8 LTS, at 18.04 sa mga repositoryo ng Ubuntu 3.0. Maaari mong i-install ang extension mula sa manager ng package gamit ang sumusunod na command:
apt install xtables-addons-common libtext-csv-xs-perl
Tandaan na may maliit ngunit mahalagang pagkakaiba sa pagitan ng bersyon 3.9 at ang kasalukuyang estado ng proyekto, na tatalakayin natin sa ibang pagkakataon. Upang bumuo mula sa source code, i-install ang lahat ng kinakailangang package:
apt install git build-essential autoconf make libtool iptables-dev libxtables-dev pkg-config libnet-cidr-lite-perl libtext-csv-xs-perl
I-clone ang repositoryo:
git clone https://git.code.sf.net/p/xtables-addons/xtables-addons xtables-addons-xtables-addons
cd xtables-addons-xtables-addons
Ang xtables-addons ay naglalaman ng maraming extension, ngunit interesado lang kami sa xt_geoip. Kung ayaw mong i-drag ang mga hindi kinakailangang extension sa system, maaari mong ibukod ang mga ito sa build. Upang gawin ito kailangan mong i-edit ang file mconfig. Para sa lahat ng gustong module, i-install y, at markahan ang lahat ng hindi kailangan n. Kinokolekta namin:
./autogen.sh
./configure
make
At i-install gamit ang mga karapatan ng superuser:
make install
Sa panahon ng pag-install ng mga kernel module, maaaring mangyari ang isang error na katulad ng sumusunod:
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
Ang sitwasyong ito ay lumitaw dahil sa imposibilidad ng pag-sign ng mga module ng kernel, dahil walang pipirmahan. Maaari mong lutasin ang problemang ito sa isang pares ng mga utos:
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
Ang pinagsama-samang kernel module ay naka-install, ngunit ang system ay hindi nakakakita nito. Hilingin natin sa system na gumawa ng dependency map na isinasaalang-alang ang bagong module, at pagkatapos ay i-load ito:
depmod -a
modprobe xt_geoip
Siguraduhin natin na ang xt_geoip ay na-load sa system:
# lsmod | grep xt_geoip
xt_geoip 16384 0
x_tables 40960 2 xt_geoip,ip_tables
Bukod pa rito, tiyaking na-load ang extension sa iptables:
# cat /proc/net/ip_tables_matches
geoip
icmp
Masaya kami sa lahat at ang natitira ay idagdag ang pangalan ng module sa / etc / modulesupang gumana ang module pagkatapos i-reboot ang OS. Mula ngayon, naiintindihan ng iptables ang mga geoip na utos, ngunit wala itong sapat na data upang magamit. Simulan natin ang pag-load ng geoip database.
Pagkuha ng GeoIP Database
Lumilikha kami ng isang direktoryo kung saan maiimbak ang impormasyong naiintindihan ng extension ng iptables:
mkdir /usr/share/xt_geoip
Sa simula ng artikulo, binanggit namin na may mga pagkakaiba sa pagitan ng bersyon mula sa source code at ang bersyon mula sa package manager. Ang pinaka-kapansin-pansing pagkakaiba ay ang pagbabago sa database vendor at script xt_geoip_dl, na nagda-download ng pinakabagong data.
Bersyon ng manager ng package
Ang script ay matatagpuan sa path /usr/lib/xtables-addons, ngunit kapag sinubukan mong patakbuhin ito, makikita mo ang isang hindi masyadong nagbibigay-kaalaman na error:
# ./xt_geoip_dl
unzip: cannot find or open GeoLite2-Country-CSV.zip, GeoLite2-Country-CSV.zip.zip or GeoLite2-Country-CSV.zip.ZIP.
Dati, ang produkto ng GeoLite, na kilala ngayon bilang GeoLite Legacy, na ipinamahagi sa ilalim ng lisensya, ay ginamit bilang isang database
Una, noong Enero 2018
Pangalawa, mula noong Disyembre 2019 MaxMind
Dahil gusto naming gamitin ang kanilang produkto, magrerehistro kami sa page na ito.
Makakatanggap ka ng email na humihiling sa iyong magtakda ng password. Ngayong nakagawa na kami ng account, kailangan naming gumawa ng license key. Sa iyong personal na account makikita namin ang item Aking Mga License Key, at pagkatapos ay mag-click sa pindutan Bumuo ng bagong License Key.
Kapag gumagawa ng susi, isang tanong lang ang tatanungin sa amin: gagamitin ba namin ang key na ito sa programang GeoIP Update? Sumasagot kami ng negatibo at pinindot ang pindutan Patunayan. Ang susi ay ipapakita sa isang pop-up window. I-save ang key na ito sa isang ligtas na lugar, dahil sa sandaling isara mo ang pop-up window, hindi mo na makikita ang buong key.
Mayroon kaming kakayahang mag-download nang manu-mano ng mga database ng GeoLite2, ngunit ang format ng mga ito ay hindi tugma sa format na inaasahan ng xt_geoip_build script. Dito sumagip ang mga script ng GeoLite2xtables. Upang magpatakbo ng mga script, i-install ang NetAddr::IP perl module:
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
Susunod, kino-clone namin ang repositoryo ng mga script at isulat ang dating nakuhang susi ng lisensya sa isang file:
git clone https://github.com/mschmitt/GeoLite2xtables.git
cd GeoLite2xtables
echo YOUR_LICENSE_KEY=β123ertyui123' > geolite2.license
Patakbuhin natin ang mga script:
# Π‘ΠΊΠ°ΡΠΈΠ²Π°Π΅ΠΌ Π΄Π°Π½Π½ΡΠ΅ 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
Ang MaxMind ay nagpapataw ng limitasyon na 2000 mga pag-download bawat araw at, na may malaking bilang ng mga server, nag-aalok upang i-cache ang update sa isang proxy server.
Mangyaring tandaan na ang output file ay dapat na tawagan dbip-country-lite.csv... Sa kasamaang palad 20_convert_geolite2 hindi gumagawa ng perpektong file. Script xt_geoip_build inaasahan ang tatlong column:
- simula ng hanay ng address;
- dulo ng hanay ng address;
- country code sa iso-3166-alpha2.
At ang output file ay naglalaman ng anim na column:
- simula ng hanay ng address (representasyon ng string);
- dulo ng hanay ng address (representasyon ng string);
- simula ng hanay ng address (numeric na representasyon);
- dulo ng hanay ng address (numeric na representasyon);
- code ng bansa;
- ang pangalan ng bansa.
Ang pagkakaibang ito ay kritikal at maaaring itama sa isa sa dalawang paraan:
- i-edit 20_convert_geolite2;
- i-edit xt_geoip_build.
Sa unang kaso binabawasan namin
/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
Tandaan na ang may-akda
Pinagmulan na bersyon
Kapag nag-i-install mula sa mga script ng source code xt_geoip_* ay matatagpuan sa catalog /usr/local/libexec/xtables-addons. Ang bersyon na ito ng script ay gumagamit ng database
cd /usr/share/xt_geoip/
/usr/local/libexec/xtables-addons/xt_geoip_dl
/usr/local/libexec/xtables-addons/xt_geoip_build
Pagkatapos ng mga hakbang na ito, handa nang gumana ang iptables.
Paggamit ng geoip sa iptables
Modyul xt_geoip nagdaragdag lamang ng dalawang susi:
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.
Ang mga pamamaraan para sa paglikha ng mga panuntunan para sa mga iptable, sa pangkalahatan, ay nananatiling hindi nagbabago. Upang gumamit ng mga key mula sa mga karagdagang module, dapat mong tahasang tukuyin ang pangalan ng module gamit ang -m switch. Halimbawa, isang panuntunan upang harangan ang mga papasok na koneksyon sa TCP sa port 443 hindi mula sa USA sa lahat ng mga interface:
iptables -I INPUT ! -i lo -p tcp --dport 443 -m geoip ! --src-cc US -j DROP
Ang mga file na nilikha ng xt_geoip_build ay ginagamit lamang kapag gumagawa ng mga panuntunan, ngunit hindi isinasaalang-alang kapag nag-filter. Kaya, upang mai-update nang tama ang database ng geoip, kailangan mo munang i-update ang mga iv* file, at pagkatapos ay muling likhain ang lahat ng mga patakaran na gumagamit ng geoip sa mga iptables.
Konklusyon
Ang pag-filter ng mga packet batay sa mga bansa ay isang diskarte na medyo nakalimutan ng panahon. Sa kabila nito, ang mga tool ng software para sa naturang pag-filter ay binuo at, marahil, sa lalong madaling panahon ang isang bagong bersyon ng xt_geoip na may bagong geoip data provider ay lalabas sa mga manager ng package, na lubos na magpapasimple sa buhay ng mga administrator ng system.
Ang mga rehistradong user lamang ang maaaring lumahok sa survey.
Nagamit mo na ba ang pag-filter ayon sa bansa?
-
59,1%Oo13
-
40,9%No9
22 na user ang bumoto. 3 user ang umiwas.
Pinagmulan: www.habr.com