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
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.
Anu mimiti, dina Januari 2018
Kadua, saprak Désémber 2019 MaxMind
Kusabab urang hoyong nganggo produkna, kami bakal ngadaptar dina halaman ieu.
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.
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:
- édit 20_convert_geolite2;
- édit xt_geoip_build.
Dina kasus nu pertama urang ngurangan
/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
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
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.
Ngan pamaké nu kadaptar bisa ilubiung dina survey.
Naha anjeun kantos nganggo panyaring dumasar nagara?
-
59,1%Leres13
-
40,9%No9
22 pamaké milih. 3 pamaké abstained.
sumber: www.habr.com