Kazi ya kuzuia trafiki kutoka nchi fulani inaonekana rahisi, lakini maoni ya kwanza yanaweza kudanganya. Leo tutakuambia jinsi hii inaweza kutekelezwa.
kabla ya historia
Matokeo ya utafutaji wa Google juu ya mada hii ni ya kukatisha tamaa: wengi wa ufumbuzi kwa muda mrefu wamekuwa "kuoza" na wakati mwingine inaonekana kwamba mada hii imehifadhiwa na kusahau milele. Tumepitia rekodi nyingi za zamani na tuko tayari kushiriki toleo la kisasa la maagizo.
Tunapendekeza kwamba usome makala yote kabla ya kutekeleza amri hizi.
Kuandaa mfumo wa uendeshaji
Uchujaji utasanidiwa kwa kutumia matumizi iptables, ambayo inahitaji ugani ili kufanya kazi na data ya GeoIP. Kiendelezi hiki kinaweza kupatikana katika
Wakati wa kuandika, toleo la sasa la xtables-addons ni 3.9. Walakini, ni 20.04 tu zinazoweza kupatikana katika hazina za kawaida za Ubuntu 3.8 LTS, na 18.04 kwenye hazina za Ubuntu 3.0. Unaweza kusakinisha kiendelezi kutoka kwa msimamizi wa kifurushi kwa amri ifuatayo:
apt install xtables-addons-common libtext-csv-xs-perl
Kumbuka kwamba kuna tofauti ndogo lakini muhimu kati ya toleo la 3.9 na hali ya sasa ya mradi, ambayo tutajadili baadaye. Ili kuunda kutoka kwa nambari ya chanzo, sasisha vifurushi vyote muhimu:
apt install git build-essential autoconf make libtool iptables-dev libxtables-dev pkg-config libnet-cidr-lite-perl libtext-csv-xs-perl
Funga hazina:
git clone https://git.code.sf.net/p/xtables-addons/xtables-addons xtables-addons-xtables-addons
cd xtables-addons-xtables-addons
xtables-addons ina viendelezi vingi, lakini tunavutiwa tu xt_geoip. Ikiwa hutaki kuburuta viendelezi visivyo vya lazima kwenye mfumo, unaweza kuwatenga kutoka kwa ujenzi. Ili kufanya hivyo unahitaji kuhariri faili mconfig. Kwa moduli zote zinazohitajika, sakinisha y, na uweke alama zote zisizo za lazima n. Tunakusanya:
./autogen.sh
./configure
make
Na usakinishe na haki za mtumiaji mkuu:
make install
Wakati wa usanidi wa moduli za kernel, hitilafu sawa na ifuatayo inaweza kutokea:
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
Hali hii inatokea kutokana na kutowezekana kwa kusaini moduli za kernel, kwa sababu hakuna cha kusaini. Unaweza kutatua shida hii kwa amri kadhaa:
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
Moduli ya kernel iliyokusanywa imewekwa, lakini mfumo hauioni. Wacha tuulize mfumo kuunda ramani ya utegemezi kwa kuzingatia moduli mpya, na kisha kuipakia:
depmod -a
modprobe xt_geoip
Wacha tuhakikishe kuwa xt_geoip imepakiwa kwenye mfumo:
# lsmod | grep xt_geoip
xt_geoip 16384 0
x_tables 40960 2 xt_geoip,ip_tables
Kwa kuongeza, hakikisha kuwa kiendelezi kimepakiwa kwenye iptables:
# cat /proc/net/ip_tables_matches
geoip
icmp
Tumefurahishwa na kila kitu na kilichobaki ni kuongeza jina la moduli / nk / moduliili moduli ifanye kazi baada ya kuanza tena OS. Kuanzia sasa, iptables inaelewa amri za geoip, lakini haina data ya kutosha kufanya kazi nayo. Wacha tuanze kupakia hifadhidata ya geoip.
Kupata Hifadhidata ya GeoIP
Tunaunda saraka ambayo habari inayoeleweka kwa kiendelezi cha iptables itahifadhiwa:
mkdir /usr/share/xt_geoip
Mwanzoni mwa kifungu, tulitaja kuwa kuna tofauti kati ya toleo kutoka kwa msimbo wa chanzo na toleo kutoka kwa msimamizi wa kifurushi. Tofauti inayoonekana zaidi ni mabadiliko ya muuzaji wa hifadhidata na hati xt_geoip_dl, ambayo hupakua data ya hivi punde.
Toleo la msimamizi wa kifurushi
Hati iko kwenye njia /usr/lib/xtables-addons, lakini unapojaribu kuiendesha, utaona kosa lisilo la kuelimisha sana:
# ./xt_geoip_dl
unzip: cannot find or open GeoLite2-Country-CSV.zip, GeoLite2-Country-CSV.zip.zip or GeoLite2-Country-CSV.zip.ZIP.
Hapo awali, bidhaa ya GeoLite, ambayo sasa inajulikana kama GeoLite Legacy, iliyosambazwa chini ya leseni, ilitumika kama hifadhidata.
Kwanza, mnamo Januari 2018
Pili, tangu Desemba 2019 MaxMind
Kwa kuwa tunataka kutumia bidhaa zao, tutajiandikisha kwenye ukurasa huu.
Kisha utapokea barua pepe ikikuuliza uweke nenosiri. Sasa kwa kuwa tumefungua akaunti, tunahitaji kuunda ufunguo wa leseni. Katika akaunti yako ya kibinafsi tunapata bidhaa Funguo Zangu za Leseni, na kisha bonyeza kitufe Tengeneza Ufunguo mpya wa Leseni.
Wakati wa kuunda ufunguo, tutaulizwa swali moja tu: tutatumia ufunguo huu katika programu ya Usasishaji wa GeoIP? Tunajibu vibaya na bonyeza kitufe kuthibitisha. Kitufe kitaonyeshwa kwenye dirisha la pop-up. Hifadhi ufunguo huu mahali salama, kwani ukifunga dirisha ibukizi, hutaweza tena kuona ufunguo wote.
Tuna uwezo wa kupakua hifadhidata za GeoLite2 sisi wenyewe, lakini umbizo lake halioani na umbizo linalotarajiwa na hati ya xt_geoip_build. Hapa ndipo hati za GeoLite2xtables huja kuwaokoa. Ili kuendesha hati, sakinisha moduli ya 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
Ifuatayo, tunaunganisha hazina na hati na kuandika ufunguo wa leseni uliopatikana hapo awali kwa faili:
git clone https://github.com/mschmitt/GeoLite2xtables.git
cd GeoLite2xtables
echo YOUR_LICENSE_KEY=β123ertyui123' > geolite2.license
Wacha tuendeshe maandishi:
# Π‘ΠΊΠ°ΡΠΈΠ²Π°Π΅ΠΌ Π΄Π°Π½Π½ΡΠ΅ 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 inaweka kikomo cha upakuaji 2000 kwa siku na, pamoja na idadi kubwa ya seva, inatoa akiba ya sasisho kwenye seva mbadala.
Tafadhali kumbuka kuwa faili ya pato lazima iitwe dbip-country-lite.csv... Kwa bahati mbaya, 20_badilisha_geolite2 haitoi faili kamili. Hati xt_geoip_build inatarajia safu tatu:
- kuanza kwa anuwai ya anwani;
- mwisho wa anuwai ya anwani;
- msimbo wa nchi katika iso-3166-alpha2.
Na faili ya pato ina safu wima sita:
- kuanza kwa anuwai ya anwani (uwakilishi wa kamba);
- mwisho wa anuwai ya anwani (uwakilishi wa kamba);
- kuanza kwa anuwai ya anwani (uwakilishi wa nambari);
- mwisho wa anuwai ya anwani (uwakilishi wa nambari);
- kanuni za nchi;
- jina la nchi.
Tofauti hii ni muhimu na inaweza kusahihishwa kwa njia mbili:
- hariri 20_badilisha_geolite2;
- hariri xt_geoip_build.
Katika kesi ya kwanza tunapunguza
/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
Kumbuka kwamba mwandishi
Toleo la chanzo
Wakati wa kusakinisha kutoka kwa hati za msimbo wa chanzo xt_geoip_* ziko kwenye katalogi /usr/local/libexec/xtables-addons. Toleo hili la hati hutumia hifadhidata
cd /usr/share/xt_geoip/
/usr/local/libexec/xtables-addons/xt_geoip_dl
/usr/local/libexec/xtables-addons/xt_geoip_build
Baada ya hatua hizi, iptables iko tayari kufanya kazi.
Kutumia geoip katika iptables
Moduli xt_geoip inaongeza funguo mbili tu:
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.
Njia za kuunda sheria za iptables, kwa ujumla, hazibadilika. Ili kutumia funguo kutoka kwa moduli za ziada, lazima ueleze kwa uwazi jina la moduli na -m kubadili. Kwa mfano, sheria ya kuzuia miunganisho ya TCP inayoingia kwenye bandari 443 sio kutoka USA kwenye miingiliano yote:
iptables -I INPUT ! -i lo -p tcp --dport 443 -m geoip ! --src-cc US -j DROP
Faili zilizoundwa na xt_geoip_build hutumiwa tu wakati wa kuunda sheria, lakini hazizingatiwi wakati wa kuchuja. Kwa hivyo, ili kusasisha kwa usahihi hifadhidata ya geoip, lazima kwanza usasishe faili za iv*, na kisha uunda upya sheria zote zinazotumia geoip kwenye iptables.
Hitimisho
Kuchuja pakiti kulingana na nchi ni mkakati uliosahaulika kwa kiasi fulani na wakati. Licha ya hili, zana za programu za kuchuja vile zinatengenezwa na, labda, hivi karibuni toleo jipya la xt_geoip na mtoaji mpya wa data ya geoip itaonekana katika wasimamizi wa vifurushi, ambayo itarahisisha sana maisha ya wasimamizi wa mfumo.
Watumiaji waliojiandikisha pekee ndio wanaweza kushiriki katika utafiti.
Je, umewahi kutumia uchujaji kulingana na nchi?
-
59,1%Ndiyo13
-
40,9%No9
Watumiaji 22 walipiga kura. Watumiaji 3 walijizuia.
Chanzo: mapenzi.com