xtables-addons: paket filter miturut negara

xtables-addons: paket filter miturut negara
Tugas mblokir lalu lintas saka negara tartamtu katon prasaja, nanging kesan pisanan bisa ngapusi. Dina iki kita bakal pitutur marang kowe carane iki bisa dileksanakake.

prasejarah

Asil telusuran Google babagan topik iki nguciwani: umume solusi wis suwe "busuk" lan kadhangkala misale jek topik iki wis disimpen lan dilalekake ing salawas-lawase. Kita wis combed liwat akèh cathetan lawas lan siyap kanggo nuduhake versi modern saka instruksi.

Disaranake sampeyan maca kabeh artikel sadurunge nglakokake perintah kasebut.

Nyiapake sistem operasi

Nyaring bakal dikonfigurasi nggunakake sarana iptables, sing mbutuhake ekstensi kanggo nggarap data GeoIP. Ekstensi iki bisa ditemokake ing xtables-tambahan. xtables-addons nginstal ekstensi kanggo iptables minangka modul kernel independen, dadi ora perlu kanggo ngumpulake maneh kernel OS.

Nalika nulis, versi xtables-addons saiki yaiku 3.9. Nanging, mung 20.04 sing bisa ditemokake ing repositori Ubuntu 3.8 LTS standar, lan 18.04 ing repositori Ubuntu 3.0. Sampeyan bisa nginstal ekstensi saka manajer paket kanthi printah ing ngisor iki:

apt install xtables-addons-common libtext-csv-xs-perl

Elinga yen ana beda cilik nanging penting antarane versi 3.9 lan negara proyek saiki, kang bakal kita rembugan mengko. Kanggo mbangun saka kode sumber, instal kabeh paket sing dibutuhake:

apt install git build-essential autoconf make libtool iptables-dev libxtables-dev pkg-config libnet-cidr-lite-perl libtext-csv-xs-perl

Kloning repositori:

git clone https://git.code.sf.net/p/xtables-addons/xtables-addons xtables-addons-xtables-addons

cd xtables-addons-xtables-addons

xtables-addons ngandhut akeh ekstensi, nanging kita mung kasengsem ing xt_geoip. Yen sampeyan ora pengin nyeret ekstensi sing ora perlu menyang sistem, sampeyan bisa ngilangi saka mbangun. Kanggo nindakake iki, sampeyan kudu ngowahi file kasebut mconfig. Kanggo kabeh modul sing dikarepake, instal y, lan tandhani kabeh sing ora perlu n. Kita ngumpulake:

./autogen.sh

./configure

make

Lan nginstal kanthi hak superuser:

make install

Sajrone instalasi modul kernel, kesalahan sing padha karo ing ngisor iki bisa kedadeyan:

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

Kahanan iki muncul amarga ora bisa mlebu modul kernel, amarga apa-apa kanggo mlebu. Sampeyan bisa ngatasi masalah iki kanthi sawetara prentah:

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

Modul kernel sing dikompilasi wis diinstal, nanging sistem ora ndeteksi. Ayo takon sistem nggawe peta dependensi kanthi njupuk modul anyar, banjur muat:

depmod -a

modprobe xt_geoip

Ayo priksa manawa xt_geoip dimuat menyang sistem:

# lsmod | grep xt_geoip
xt_geoip               16384  0
x_tables               40960  2 xt_geoip,ip_tables

Kajaba iku, priksa manawa ekstensi kasebut dimuat menyang iptables:

# cat /proc/net/ip_tables_matches 
geoip
icmp

We are seneng karo kabeh lan kabeh sing isih kanggo nambah jeneng modul kanggo / lsp / modulsupaya modul bisa sawise rebooting OS. Wiwit saiki, iptables ngerti prentah geoip, nanging ora duwe data sing cukup kanggo digarap. Ayo miwiti mbukak database geoip.

Njupuk Database GeoIP

Kita nggawe direktori ing ngendi informasi sing bisa dingerteni kanggo ekstensi iptables bakal disimpen:

mkdir /usr/share/xt_geoip

Ing wiwitan artikel, kita nyebutake manawa ana bedane antarane versi kode sumber lan versi saka manajer paket. Bentenipun paling ngelingke iku owah-owahan ing vendor database lan script xt_geoip_dl, sing ngundhuh data paling anyar.

Versi manajer paket

Skrip kasebut ana ing path /usr/lib/xtables-addons, nanging nalika sampeyan nyoba mbukak, sampeyan bakal weruh kesalahan sing ora informatif:

# ./xt_geoip_dl 
unzip:  cannot find or open GeoLite2-Country-CSV.zip, GeoLite2-Country-CSV.zip.zip or GeoLite2-Country-CSV.zip.ZIP.

Sadurunge, produk GeoLite, saiki dikenal minangka GeoLite Legacy, disebarake kanthi lisensi, digunakake minangka basis data Creative Commons ASA 4.0 perusahaan MaxMind. Rong acara kedaden karo produk iki bebarengan sing "nyuwil" kompatibilitas karo extension iptables.

Kaping pisanan, ing Januari 2018 diumumake babagan mandap dhukungan kanggo produk kasebut, lan ing 2019 Januari 2, kabeh tautan kanggo ndownload versi lawas saka database dibusak saka situs web resmi. Pangguna anyar dianjurake kanggo nggunakake produk GeoLite2 utawa GeoIPXNUMX versi mbayar.

Kapindho, wiwit Desember 2019 MaxMind nyatakake babagan owah-owahan sing signifikan ing akses menyang database. Kanggo netepi Undhang-undhang Privasi Konsumen California, MaxMind mutusake kanggo "nutupi" distribusi GeoLite2 kanthi registrasi.

Amarga kita pengin nggunakake produke, kita bakal ndhaptar ing kaca iki.

xtables-addons: paket filter miturut negara
Sampeyan banjur bakal nampa email sing njaluk sampeyan nyetel sandhi. Saiki kita wis nggawe akun, kita kudu nggawe kunci lisensi. Ing akun pribadi sampeyan nemokake item kasebut Kunci Lisensi Kula, banjur klik tombol kasebut Gawe Kunci Lisensi anyar.

Nalika nggawe kunci, kita bakal dijaluk mung siji pitakonan: apa kita bakal nggunakake tombol iki ing program Pembaruan GeoIP? We njawab negatif lan pencet tombol konfirmasi. Tombol bakal ditampilake ing jendela pop-up. Simpen tombol iki ing panggonan sing aman, amarga yen sampeyan nutup jendhela pop-up, sampeyan ora bakal bisa ndeleng kabeh tombol maneh.

xtables-addons: paket filter miturut negara
Kita duwe kemampuan kanggo ndownload database GeoLite2 kanthi manual, nanging format kasebut ora cocog karo format sing dikarepake dening skrip xt_geoip_build. Iki ngendi skrip GeoLite2xtables teka kanggo ngluwari. Kanggo mbukak skrip, instal modul 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

Sabanjure, kita tiron repositori nganggo skrip lan nulis kunci lisensi sing dipikolehi sadurunge menyang file:

git clone https://github.com/mschmitt/GeoLite2xtables.git

cd GeoLite2xtables

echo YOUR_LICENSE_KEY=’123ertyui123' > geolite2.license

Ayo mbukak skrip:

# Π‘ΠΊΠ°Ρ‡ΠΈΠ²Π°Π΅ΠΌ Π΄Π°Π½Π½Ρ‹Π΅ 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 nemtokke watesan 2000 download saben dina lan, karo nomer akeh server, nawakake kanggo cache nganyari ing server proxy.

Elinga yen file output kudu disebut dbip-country-lite.csv... Sayang, 20_ngowahi_geolite2 ora ngasilake file sing sampurna. Skripsi xt_geoip_build ngarepake telung kolom:

  • wiwitan kisaran alamat;
  • mburi sawetara alamat;
  • kode negara ing iso-3166-alpha2.

Lan file output ngemot enem kolom:

  • wiwitan sawetara alamat (representasi string);
  • mburi sawetara alamat (representasi string);
  • wiwitan sawetara alamat (representasi angka);
  • mburi sawetara alamat (representasi angka);
  • kode negara;
  • jeneng negara.

Penyimpangan iki kritis lan bisa didandani kanthi salah siji saka rong cara:

  1. nyunting 20_ngowahi_geolite2;
  2. nyunting xt_geoip_build.

Ing kasus pisanan kita nyuda printf menyang format sing dibutuhake, lan ing kaloro - kita ngganti tugas menyang variabel $cc ing $row->[4]. Sawise iki, sampeyan bisa mbangun:

/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

Elinga yen penulis GeoLite2xtables ora nimbang Tulisan siap kanggo produksi lan nawakake trek kanggo pangembangan skrip xt_geoip_* asli. Mulane, ayo pindhah menyang perakitan saka kode sumber, sing skrip kasebut wis dianyari.

Versi sumber

Nalika nginstal saka skrip kode sumber xt_geoip_* dumunung ing katalog /usr/local/libexec/xtables-addons. Versi skrip iki nggunakake basis data IP menyang Negara Lite. Lisensi kasebut minangka Lisensi Atribusi Creative Commons, lan saka data sing kasedhiya ana telung kolom sing dibutuhake banget. Ngundhuh lan ngumpulake database:

cd /usr/share/xt_geoip/

/usr/local/libexec/xtables-addons/xt_geoip_dl

/usr/local/libexec/xtables-addons/xt_geoip_build

Sawise langkah-langkah kasebut, iptables siap digunakake.

Nggunakake geoip ing iptables

Modul xt_geoip mung nambah rong tombol:

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.

Cara kanggo nggawe aturan kanggo iptables, ing umum, tetep ora diganti. Kanggo nggunakake tombol saka modul tambahan, sampeyan kudu tegas nemtokake jeneng modul karo ngalih -m. Contone, aturan kanggo mblokir sambungan TCP mlebu ing port 443 ora saka AS ing kabeh antarmuka:

iptables -I INPUT ! -i lo -p tcp --dport 443 -m geoip ! --src-cc US -j DROP

File digawe dening xt_geoip_build digunakake mung nalika nggawe aturan, nanging ora dijupuk menyang akun nalika nyaring. Dadi, kanggo nganyari database geoip kanthi bener, sampeyan kudu nganyari file iv* dhisik, banjur gawe maneh kabeh aturan sing nggunakake geoip ing iptables.

kesimpulan

Nyaring paket adhedhasar negara minangka strategi sing rada dilalekake dening wektu. Senadyan mangkono, piranti lunak kanggo nyaring kasebut lagi dikembangake lan, mbok menawa, versi anyar xt_geoip karo panyedhiya data geoip anyar bakal katon ing manajer paket, sing bakal nyederhanakake urip administrator sistem.

xtables-addons: paket filter miturut negara

Mung pangguna pangguna sing bisa melu survey. mlebunggih.

Apa sampeyan tau nggunakake nyaring miturut negara?

  • 59,1%inggih13

  • 40,9%No9

22 pangguna milih. 3 pangguna abstain.

Source: www.habr.com

Add a comment