xtables-addons: pakét filter dumasar nagara

xtables-addons: pakét filter dumasar nagara
Tugas ngahalangan lalu lintas ti nagara-nagara anu tangtu sigana saderhana, tapi kesan anu munggaran tiasa nipu. Dinten ieu kami bakal ngabejaan ka maneh kumaha ieu bisa dilaksanakeun.

prasajarah

Hasil tina panéangan Google dina topik ieu nguciwakeun: kalolobaan solusi parantos lami "busuk" sareng sakapeung sigana topik ieu parantos disimpen sareng hilap salamina. Kami parantos nyisiran seueur rékaman lami sareng siap ngabagi vérsi modéren paréntah.

Kami nyarankeun yén anjeun maca sadayana tulisan sateuacan ngalaksanakeun paréntah ieu.

Nyiapkeun sistem operasi

Nyaring bakal dikonpigurasi nganggo utilitas iptables, nu merlukeun extension pikeun digawekeun ku data GeoIP. Ekstensi ieu tiasa dipendakan dina xtables-addons. xtables-addons masang ekstensi pikeun iptables salaku modul kernel bebas, jadi teu perlu recompile kernel OS.

Dina waktos nyerat, versi ayeuna xtables-addons nyaéta 3.9. Nanging, ngan ukur 20.04 tiasa dipendakan dina repositori Ubuntu 3.8 LTS standar, sareng 18.04 dina repositori Ubuntu 3.0. Anjeun tiasa masang ekstensi ti manajer pakét sareng paréntah di handap ieu:

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

Catet yén aya bédana leutik tapi penting antara versi 3.9 sareng kaayaan proyék ayeuna, anu bakal urang bahas engké. Pikeun ngawangun tina kode sumber, pasang sadaya pakét anu diperyogikeun:

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

Kloning gudang:

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

cd xtables-addons-xtables-addons

xtables-addons ngandung loba ekstensi, tapi urang ngan museurkeun xt_geoip. Upami anjeun henteu hoyong nyered ekstensi anu teu dipikabutuh kana sistem, anjeun tiasa ngaluarkeunana tina ngawangun. Jang ngalampahkeun ieu anjeun kudu ngédit file mconfig. Pikeun sakabéh modul nu dipikahoyong, install y, jeung cirian sagala nu teu perlu n. Urang ngumpulkeun:

./autogen.sh

./configure

make

Sareng pasang nganggo hak superuser:

make install

Salami pamasangan modul kernel, kasalahan anu sami sareng ieu tiasa lumangsung:

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

kaayaan ieu timbul alatan impossibility of Signing modul kernel, sabab euweuh tanda. Anjeun tiasa ngajawab masalah ieu ku sababaraha paréntah:

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 anu disusun dipasang, tapi sistem henteu ngadeteksi éta. Hayu urang naroskeun ka sistem pikeun nyiptakeun peta kagumantungan kalayan ngitung modul énggal, teras muatkeunana:

depmod -a

modprobe xt_geoip

Hayu urang pastikeun yén xt_geoip dimuat kana sistem:

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

Salaku tambahan, pastikeun yén ekstensi dimuat kana iptables:

# cat /proc/net/ip_tables_matches 
geoip
icmp

Kami senang jeung sagalana jeung sagala anu tetep nyaéta pikeun nambahkeun nami modul ka / jsb / modulku kituna modul jalan sanggeus rebooting OS. Ti ayeuna, iptables ngartos paréntah geoip, tapi teu gaduh data anu cekap pikeun dianggo. Hayu urang ngamimitian ngamuat database geoip.

Meunangkeun Database GeoIP

Kami nyiptakeun diréktori dimana inpormasi anu kaharti ku ekstensi iptables bakal disimpen:

mkdir /usr/share/xt_geoip

Dina awal tulisan, kami nyarios yén aya bédana antara versi tina kode sumber sareng versi tina manajer pakét. Beda anu paling katingali nyaéta parobahan dina ngajual database sareng naskah xt_geoip_dl, nu ngundeur data panganyarna.

Vérsi manajer pakét

Skripna aya dina jalur /usr/lib/xtables-addons, tapi nalika anjeun nyobian ngajalankeun éta, anjeun bakal ningali kasalahan anu henteu informatif:

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

Saméméhna, produk GeoLite, ayeuna katelah GeoLite Legacy, disebarkeun ku lisénsi, dipaké salaku database. Creative Commons ASA 4.0 perusahaan MaxMind. Dua kajadian kajantenan sareng produk ieu sakaligus yén "pegat" kasaluyuan sareng ekstensi iptables.

Anu mimiti, dina Januari 2018 ngumumkeun ngeunaan terminasi pangrojong pikeun produk, sareng dina 2019 Januari 2, sadaya tautan pikeun ngaunduh vérsi pangkalan data anu lami dihapus tina situs wéb resmi. Pamaké anyar disarankeun pikeun nganggo produk GeoLite2 atanapi versi GeoIPXNUMX anu mayar.

Kadua, saprak Désémber 2019 MaxMind nyatakeun ngeunaan parobahan signifikan dina aksés ka database maranéhanana. Pikeun matuh kana Undang-undang Privasi Konsumén California, MaxMind mutuskeun pikeun "nutupan" distribusi GeoLite2 kalayan pendaptaran.

Kusabab urang hoyong nganggo produkna, kami bakal ngadaptar dina halaman ieu.

xtables-addons: pakét filter dumasar nagara
Anjeun teras bakal nampi email anu naroskeun anjeun nyetél kecap konci. Ayeuna urang parantos nyiptakeun akun, urang kedah nyiptakeun konci lisénsi. Dina akun pribadi anjeun kami mendakan barang éta Konci Lisensi abdi, teras klik dina tombol Ngahasilkeun Key Lisensi anyar.

Nalika nyieun konci, urang bakal ditaroskeun ngan hiji patarosan: bakal kami nganggo konci ieu dina program Pembaruan GeoIP? Urang ngajawab négatip terus pencét tombol ngeceskeun. Konci bakal dipintonkeun dina jandela pop-up. Simpen konci ieu dina tempat anu aman, sabab pas anjeun nutup jandela pop-up, anjeun moal tiasa deui ningali sadaya konci.

xtables-addons: pakét filter dumasar nagara
Kami ngagaduhan kamampuan pikeun ngaunduh database GeoLite2 sacara manual, tapi formatna henteu cocog sareng format anu dipiharep ku naskah xt_geoip_build. Ieu dimana skrip GeoLite2xtables sumping ka nyalametkeun. Pikeun ngajalankeun skrip, pasang 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

Salajengna, urang clone Repository sareng skrip sareng nyerat konci lisénsi anu dicandak sateuacana kana file:

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

cd GeoLite2xtables

echo YOUR_LICENSE_KEY=’123ertyui123' > geolite2.license

Hayu urang ngajalankeun 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 maksakeun wates 2000 undeuran per dinten sareng, kalayan sajumlah ageung server, nawiskeun ka cache apdet dina server proxy.

Perhatikeun yén file output kudu disebut dbip-country-lite.csv... Hanjakalna, 20_convert_geolite2 teu ngahasilkeun file sampurna. naskah xt_geoip_build ngarepkeun tilu kolom:

  • ngamimitian rentang alamat;
  • tungtung rentang alamat;
  • kode nagara di iso-3166-alpha2.

Sareng file kaluaran ngandung genep kolom:

  • mimiti rentang alamat (ngawakilan string);
  • tungtung rentang alamat (ngawakilan string);
  • mimiti rentang alamat (numerik ngagambarkeun);
  • tungtung rentang alamat (numerik ngagambarkeun);
  • kode nagara;
  • ngaran nagara.

Kasalahan ieu kritis sareng tiasa dilereskeun ku salah sahiji tina dua cara:

  1. édit 20_convert_geolite2;
  2. édit xt_geoip_build.

Dina kasus nu pertama urang ngurangan printf kana format nu diperlukeun, sarta dina kadua - urang ngarobah tugas ka variabel $cc dina $baris->[4]. Saatos ieu anjeun tiasa ngawangun:

/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

Catet yén pangarang GeoLite2xtables teu nganggap naskah na siap pikeun produksi jeung nawaran lagu pikeun ngembangkeun skrip xt_geoip_* asli. Ku alatan éta, hayu urang ngaléngkah ka assembly tina kode sumber, nu Aksara ieu geus diropéa.

Vérsi sumber

Nalika masang tina skrip kode sumber xt_geoip_* aya dina katalog /usr/local/libexec/xtables-addons. Vérsi ieu naskah ngagunakeun database a IP ka Nagara Lite. Lisensina nyaéta Creative Commons Attribution License, sareng tina data anu sayogi aya tilu kolom anu diperyogikeun pisan. Unduh sareng ngumpul pangkalan data:

cd /usr/share/xt_geoip/

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

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

Saatos léngkah ieu, iptables siap dianggo.

Ngagunakeun geoip di iptables

Modul xt_geoip ngan ukur nambihan dua konci:

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.

Métode pikeun nyiptakeun aturan pikeun iptables, sacara umum, tetep teu robih. Pikeun make kenop ti modul tambahan, anjeun kudu eksplisit nangtukeun nami modul jeung switch -m. Contona, aturan pikeun meungpeuk sambungan TCP asup dina port 443 teu ti AS dina sakabéh interfaces:

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

File anu diciptakeun ku xt_geoip_build ngan ukur dianggo nalika nyiptakeun aturan, tapi henteu dipertimbangkeun nalika nyaring. Janten, pikeun ngapdet database geoip anu leres, anjeun kedah ngapdet heula file iv*, teras jieun deui sadaya aturan anu nganggo geoip dina iptables.

kacindekan

Nyaring pakét dumasar kana nagara mangrupikeun strategi anu rada hilap ku waktos. Sanaos ieu, alat parangkat lunak pikeun panyaring sapertos kitu nuju dikembangkeun sareng, sigana, engké versi anyar xt_geoip sareng panyadia data geoip énggal bakal muncul dina manajer pakét, anu bakal nyederhanakeun kahirupan pangurus sistem.

xtables-addons: pakét filter dumasar nagara

Ngan pamaké nu kadaptar bisa ilubiung dina survey. Daptar, Punten.

Naha anjeun kantos nganggo panyaring dumasar nagara?

  • 59,1%Leres13

  • 40,9%No9

22 pamaké milih. 3 pamaké abstained.

sumber: www.habr.com

Tambahkeun komentar