Uzdevums bloÄ·Ät satiksmi no noteiktÄm valstÄ«m Ŕķiet vienkÄrÅ”s, taÄu pirmais iespaids var bÅ«t maldinoÅ”s. Å odien mÄs jums pateiksim, kÄ to var Ä«stenot.
AizvÄsture
Google meklÄÅ”anas rezultÄti par Å”o tÄmu sagÄdÄ vilÅ”anos: lielÄkÄ daļa risinÄjumu jau sen ir āsapuvuÅ”iā un brīžiem Ŕķiet, ka Ŕī tÄma ir nolikta plauktÄ un aizmirsta uz visiem laikiem. MÄs esam izgÄjuÅ”i cauri daudziem veciem ierakstiem un esam gatavi dalÄ«ties ar modernu instrukciju versiju.
Pirms Å”o komandu izpildes iesakÄm izlasÄ«t visu rakstu.
OperÄtÄjsistÄmas sagatavoÅ”ana
FiltrÄÅ”ana tiks konfigurÄta, izmantojot utilÄ«tu iptables, kam nepiecieÅ”ams paplaÅ”inÄjums, lai strÄdÄtu ar GeoIP datiem. Å o paplaÅ”inÄjumu var atrast
RakstÄ«Å”anas laikÄ paÅ”reizÄjÄ xtables-addons versija ir 3.9. TomÄr tikai 20.04 var atrast standarta Ubuntu 3.8 LTS krÄtuvÄs un 18.04 Ubuntu 3.0 krÄtuvÄs. PaplaÅ”inÄjumu var instalÄt no pakotÅu pÄrvaldnieka, izmantojot Å”Ädu komandu:
apt install xtables-addons-common libtext-csv-xs-perl
Å emiet vÄrÄ, ka starp versiju 3.9 un paÅ”reizÄjo projekta stÄvokli pastÄv nelielas, bet bÅ«tiskas atŔķirÄ«bas, par kurÄm mÄs runÄsim vÄlÄk. Lai izveidotu no pirmkoda, instalÄjiet visas nepiecieÅ”amÄs pakotnes:
apt install git build-essential autoconf make libtool iptables-dev libxtables-dev pkg-config libnet-cidr-lite-perl libtext-csv-xs-perl
KlonÄt repozitoriju:
git clone https://git.code.sf.net/p/xtables-addons/xtables-addons xtables-addons-xtables-addons
cd xtables-addons-xtables-addons
xtables-addons satur daudz paplaÅ”inÄjumu, taÄu mÅ«s interesÄ tikai tie xt_geoip. Ja nevÄlaties vilkt sistÄmÄ nevajadzÄ«gus paplaÅ”inÄjumus, varat tos izslÄgt no bÅ«vÄjuma. Lai to izdarÄ«tu, fails ir jÄrediÄ£Ä mconfig. Visiem vajadzÄ«gajiem moduļiem instalÄjiet y, un atzÄ«mÄjiet visus nevajadzÄ«gos n. MÄs savÄcam:
./autogen.sh
./configure
make
Un instalÄjiet ar superlietotÄja tiesÄ«bÄm:
make install
Kodola moduļu instalÄÅ”anas laikÄ var rasties Å”Äda kļūda:
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
Å Ä« situÄcija rodas tÄpÄc, ka nav iespÄjams parakstÄ«t kodola moduļus, jo nav ko parakstÄ«t. Å o problÄmu var atrisinÄt ar pÄris komandÄm:
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
KompilÄtais kodola modulis ir instalÄts, bet sistÄma to neatklÄj. LÅ«gsim sistÄmai izveidot atkarÄ«bas karti, Åemot vÄrÄ jauno moduli, un pÄc tam to ielÄdÄt:
depmod -a
modprobe xt_geoip
PÄrliecinÄsimies, ka xt_geoip ir ielÄdÄts sistÄmÄ:
# lsmod | grep xt_geoip
xt_geoip 16384 0
x_tables 40960 2 xt_geoip,ip_tables
TurklÄt pÄrliecinieties, vai paplaÅ”inÄjums ir ielÄdÄts iptables:
# cat /proc/net/ip_tables_matches
geoip
icmp
Esam apmierinÄti ar visu, un atliek tikai pievienot moduļa nosaukumu / etc / moduļilai modulis darbotos pÄc OS pÄrstartÄÅ”anas. No Ŕī brīža iptables saprot geoip komandas, taÄu tai nav pietiekami daudz datu, ar kuriem strÄdÄt. SÄksim ielÄdÄt geoip datubÄzi.
GeoIP datu bÄzes iegÅ«Å”ana
MÄs izveidojam direktoriju, kurÄ tiks saglabÄta iptables paplaÅ”inÄjumam saprotamÄ informÄcija:
mkdir /usr/share/xt_geoip
Raksta sÄkumÄ mÄs minÄjÄm, ka pastÄv atŔķirÄ«bas starp versiju no avota koda un versiju no pakotÅu pÄrvaldnieka. VisievÄrojamÄkÄ atŔķirÄ«ba ir datu bÄzes piegÄdÄtÄja un skripta izmaiÅas xt_geoip_dl, kas lejupielÄdÄ jaunÄkos datus.
PakeÅ”u pÄrvaldnieka versija
Skripts atrodas ceÄ¼Ä /usr/lib/xtables-addons, taÄu, mÄÄ£inot to palaist, jÅ«s redzÄsit ne pÄrÄk informatÄ«vu kļūdu:
# ./xt_geoip_dl
unzip: cannot find or open GeoLite2-Country-CSV.zip, GeoLite2-Country-CSV.zip.zip or GeoLite2-Country-CSV.zip.ZIP.
IepriekÅ” GeoLite produkts, tagad pazÄ«stams kÄ GeoLite Legacy, izplatÄ«ts saskaÅÄ ar licenci, tika izmantots kÄ datubÄze
PirmkÄrt, 2018. gada janvÄrÄ«
OtrkÄrt, kopÅ” 2019. gada decembra MaxMind
TÄ kÄ mÄs vÄlamies izmantot viÅu produktu, mÄs reÄ£istrÄjamies Å”ajÄ lapÄ.
PÄc tam jÅ«s saÅemsit e-pastu ar lÅ«gumu iestatÄ«t paroli. Tagad, kad esam izveidojuÅ”i kontu, mums ir jÄizveido licences atslÄga. JÅ«su personÄ«gajÄ kontÄ mÄs atrodam preci Manas licences atslÄgasun pÄc tam noklikŔķiniet uz pogas Ä¢enerÄjiet jaunu licences atslÄgu.
Veidojot atslÄgu, mums tiks uzdots tikai viens jautÄjums: vai mÄs izmantosim Å”o atslÄgu GeoIP Update programmÄ? Atbildam noraidoÅ”i un nospiežam pogu ApstiprinÄt. AtslÄga tiks parÄdÄ«ta uznirstoÅ”ajÄ logÄ. SaglabÄjiet Å”o atslÄgu droÅ”Ä vietÄ, jo, aizverot uznirstoÅ”o logu, vairs nevarÄsit skatÄ«t visu atslÄgu.
Mums ir iespÄja manuÄli lejupielÄdÄt GeoLite2 datu bÄzes, taÄu to formÄts nav saderÄ«gs ar xt_geoip_build skripta paredzÄto formÄtu. Å eit palÄ«gÄ nÄk GeoLite2xtables skripti. Lai palaistu skriptus, instalÄjiet NetAddr::IP perl moduli:
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
TÄlÄk mÄs klonÄjam repozitoriju ar skriptiem un failÄ ierakstÄm iepriekÅ” iegÅ«to licences atslÄgu:
git clone https://github.com/mschmitt/GeoLite2xtables.git
cd GeoLite2xtables
echo YOUR_LICENSE_KEY=ā123ertyui123' > geolite2.license
Palaidīsim skriptus:
# Š”ŠŗŠ°ŃŠøŠ²Š°ŠµŠ¼ Š“Š°Š½Š½ŃŠµ 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 nosaka ierobežojumu 2000 lejupielÄžu dienÄ un ar lielu serveru skaitu piedÄvÄ keÅ”atmiÅÄ saglabÄt atjauninÄjumu starpniekserverÄ«.
LÅ«dzu, Åemiet vÄrÄ, ka izvades fails ir jÄizsauc dbip-country-lite.csv... DiemžÄl 20_convert_geolite2 nerada perfektu failu. Skripts xt_geoip_build sagaida trÄ«s kolonnas:
- adreses diapazona sÄkums;
- adreses diapazona beigas;
- valsts kods ISO-3166-alpha2.
Un izvades failÄ ir seÅ”as kolonnas:
- adreses diapazona sÄkums (virknes attÄlojums);
- adreÅ”u diapazona beigas (virknes attÄlojums);
- adreses diapazona sÄkums (ciparu attÄlojums);
- adreÅ”u diapazona beigas (ciparu attÄlojums);
- valsts kods;
- valsts nosaukums.
Å Ä« neatbilstÄ«ba ir kritiska, un to var labot vienÄ no diviem veidiem:
- rediÄ£Ät 20_convert_geolite2;
- rediÄ£Ät xt_geoip_build.
PirmajÄ gadÄ«jumÄ mÄs samazinÄm
/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
Å
emiet vÄrÄ, ka autors
Avota versija
InstalÄjot no pirmkoda skriptiem xt_geoip_* atrodas katalogÄ /usr/local/libexec/xtables-addons. Å Ä« skripta versija izmanto datu bÄzi
cd /usr/share/xt_geoip/
/usr/local/libexec/xtables-addons/xt_geoip_dl
/usr/local/libexec/xtables-addons/xt_geoip_build
PÄc Ŕīm darbÄ«bÄm iptables ir gatavs darbam.
Geoip izmantoÅ”ana programmÄ iptables
Modulis xt_geoip pievieno tikai divas atslÄgas:
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.
Iptables noteikumu izveides metodes kopumÄ paliek nemainÄ«gas. Lai izmantotu atslÄgas no papildu moduļiem, ar slÄdzi -m ir skaidri jÄnorÄda moduļa nosaukums. PiemÄram, noteikums, lai visÄs saskarnÄs bloÄ·Ätu ienÄkoÅ”os TCP savienojumus 443. portÄ, nevis no ASV:
iptables -I INPUT ! -i lo -p tcp --dport 443 -m geoip ! --src-cc US -j DROP
Faili, kas izveidoti ar xt_geoip_build, tiek izmantoti tikai, veidojot noteikumus, bet netiek Åemti vÄrÄ filtrÄjot. TÄdÄjÄdi, lai pareizi atjauninÄtu geoip datu bÄzi, vispirms ir jÄatjaunina iv* faili un pÄc tam atkÄrtoti jÄizveido visi kÄrtulas, kas izmanto geoip iptables.
SecinÄjums
PakeÅ”u filtrÄÅ”ana, pamatojoties uz valstÄ«m, ir laika gaitÄ nedaudz aizmirsta stratÄÄ£ija. Neskatoties uz to, programmatÅ«ras rÄ«ki Å”Ädai filtrÄÅ”anai tiek izstrÄdÄti un, iespÄjams, drÄ«zumÄ pakotÅu pÄrvaldniekos parÄdÄ«sies jauna xt_geoip versija ar jaunu geoip datu nodroÅ”inÄtÄju, kas ievÄrojami vienkÄrÅ”os sistÄmu administratoru dzÄ«vi.
AptaujÄ var piedalÄ«ties tikai reÄ£istrÄti lietotÄji.
Vai esat kÄdreiz izmantojis filtrÄÅ”anu pÄc valsts?
-
59,1%JÄ 13
-
40,9%Nr.9
Balsoja 22 lietotÄji. 3 lietotÄji atturÄjÄs.
Avots: www.habr.com