xtables-addons: vifurushi vya chujio kulingana na nchi

xtables-addons: vifurushi vya chujio kulingana na nchi
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 xtables-addons. xtables-addons husakinisha viendelezi vya iptables kama moduli za kernel zinazojitegemea, kwa hivyo hakuna haja ya kukusanya kernel ya OS.

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. Creative Commons ASA 4.0 kampuni MaxMind. Matukio mawili yalitokea kwa bidhaa hii mara moja ambayo "yalivunja" utangamano na kiendelezi cha iptables.

Kwanza, mnamo Januari 2018 alitangaza kuhusu kusitishwa kwa usaidizi wa bidhaa, na mnamo Januari 2019, 2, viungo vyote vya kupakua toleo la zamani la hifadhidata viliondolewa kwenye tovuti rasmi. Watumiaji wapya wanapendekezwa kutumia bidhaa ya GeoLite2 au toleo lake la kulipia la GeoIPXNUMX.

Pili, tangu Desemba 2019 MaxMind alisema kuhusu mabadiliko makubwa katika upatikanaji wa hifadhidata zao. Ili kutii Sheria ya Faragha ya Wateja ya California, MaxMind imeamua "kushughulikia" usambazaji wa GeoLite2 kwa usajili.

Kwa kuwa tunataka kutumia bidhaa zao, tutajiandikisha kwenye ukurasa huu.

xtables-addons: vifurushi vya chujio kulingana na nchi
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.

xtables-addons: vifurushi vya chujio kulingana na nchi
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:

  1. hariri 20_badilisha_geolite2;
  2. hariri xt_geoip_build.

Katika kesi ya kwanza tunapunguza printf kwa muundo unaohitajika, na kwa pili - tunabadilisha mgawo kwa kutofautisha $cc juu ya $mlalo->[4]. Baada ya hayo, unaweza kuunda:

/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 GeoLite2xtables haizingatii hati zake tayari kwa uzalishaji na matoleo wimbo kwa ukuzaji wa hati asili za xt_geoip_*. Kwa hivyo, wacha tuendelee kwenye mkusanyiko kutoka kwa nambari za chanzo, ambazo maandishi haya tayari yamesasishwa.

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 IP hadi Country Lite. Leseni ni Leseni ya Creative Commons Attribution, na kutoka kwa data inayopatikana kuna safu wima tatu zinazohitajika sana. Pakua na ukusanye 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.

xtables-addons: vifurushi vya chujio kulingana na nchi

Watumiaji waliojiandikisha pekee ndio wanaweza kushiriki katika utafiti. Weka sahihitafadhali.

Je, umewahi kutumia uchujaji kulingana na nchi?

  • 59,1%Ndiyo13

  • 40,9%No9

Watumiaji 22 walipiga kura. Watumiaji 3 walijizuia.

Chanzo: mapenzi.com

Kuongeza maoni