xtables-addons: suodata paketit maan mukaan

xtables-addons: suodata paketit maan mukaan
Tietyistä maista tulevan liikenteen estäminen näyttää yksinkertaiselta, mutta ensivaikutelma voi pettää. Tänään kerromme sinulle, kuinka tämä voidaan toteuttaa.

esihistoria

Google-haun tulokset tästä aiheesta ovat pettymys: suurin osa ratkaisuista on ollut pitkään "mätä" ja joskus näyttää siltä, ​​että tämä aihe on hyllytetty ja unohdettu ikuisiksi ajoiksi. Olemme kampanneet läpi paljon vanhoja levyjä ja olemme valmiita jakamaan ohjeista modernin version.

Suosittelemme, että luet koko artikkelin ennen näiden komentojen suorittamista.

Käyttöjärjestelmän valmistelu

Suodatus määritetään apuohjelman avulla iptables, joka vaatii laajennuksen toimiakseen GeoIP-tietojen kanssa. Tämä laajennus löytyy osoitteesta xtables-addons. xtables-addons asentaa iptables-laajennukset itsenäisinä ydinmoduuleina, joten käyttöjärjestelmän ydintä ei tarvitse kääntää uudelleen.

Kirjoitushetkellä xtables-addonsin nykyinen versio on 3.9. Kuitenkin vain 20.04 löytyy tavallisista Ubuntu 3.8 LTS -varastoista ja 18.04 Ubuntu 3.0 -varastoista. Voit asentaa laajennuksen paketinhallinnasta seuraavalla komennolla:

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

Huomaa, että version 3.9 ja projektin nykytilan välillä on pieniä mutta tärkeitä eroja, joista keskustelemme myöhemmin. Jos haluat rakentaa lähdekoodista, asenna kaikki tarvittavat paketit:

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

Kloonaa arkisto:

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

cd xtables-addons-xtables-addons

xtables-addons sisältää monia laajennuksia, mutta olemme vain kiinnostuneita xt_geoip. Jos et halua vetää tarpeettomia laajennuksia järjestelmään, voit jättää ne pois rakentamisesta. Tätä varten sinun on muokattava tiedostoa mconfig. Asenna kaikki haluamasi moduulit y, ja merkitse kaikki tarpeettomat n. Keräämme:

./autogen.sh

./configure

make

Ja asenna superkäyttäjän oikeuksilla:

make install

Ydinmoduulien asennuksen aikana saattaa ilmetä seuraavanlainen virhe:

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

Tämä tilanne johtuu siitä, että ydinmoduulien allekirjoittaminen on mahdotonta, koska ei mitään allekirjoitettavaa. Voit ratkaista tämän ongelman parilla komennolla:

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

Käännetty ydinmoduuli on asennettu, mutta järjestelmä ei tunnista sitä. Pyydetään järjestelmää luomaan riippuvuuskartta ottaen huomioon uusi moduuli ja lataa se sitten:

depmod -a

modprobe xt_geoip

Varmistetaan, että xt_geoip on ladattu järjestelmään:

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

Varmista lisäksi, että laajennus on ladattu iptablesiin:

# cat /proc/net/ip_tables_matches 
geoip
icmp

Olemme tyytyväisiä kaikkeen, ja jäljellä on vain lisätä moduulin nimi / etc / moduulitjotta moduuli toimii käyttöjärjestelmän uudelleenkäynnistyksen jälkeen. Tästä lähtien iptables ymmärtää geoip-komennot, mutta sillä ei ole tarpeeksi tietoa käytettäväksi. Aloitetaan geoip-tietokannan lataaminen.

GeoIP-tietokannan hankkiminen

Luomme hakemiston, johon tallennetaan iptables-laajennukselle ymmärrettävät tiedot:

mkdir /usr/share/xt_geoip

Mainitsimme artikkelin alussa, että lähdekoodin version ja paketinhallinnan version välillä on eroja. Huomattavin ero on tietokannan toimittajan ja komentosarjan muutos xt_geoip_dl, joka lataa uusimmat tiedot.

Paketinhallinnan versio

Skripti sijaitsee polussa /usr/lib/xtables-addons, mutta kun yrität suorittaa sen, näet ei kovin informatiivisen virheen:

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

Aikaisemmin tietokantana käytettiin GeoLite-tuotetta, joka tunnetaan nyt nimellä GeoLite Legacy ja jota jaettiin lisenssillä. Creative Commons ASA 4.0 yhtiö MaxMind. Tämän tuotteen kanssa tapahtui kerralla kaksi tapahtumaa, jotka "rikoivat" yhteensopivuuden iptables-laajennuksen kanssa.

Ensinnäkin tammikuussa 2018 ilmoitti tuotteen tuen lopettamisesta, ja 2019. tammikuuta 2 kaikki linkit tietokannan vanhan version lataamiseen poistettiin viralliselta verkkosivustolta. Uusille käyttäjille suositellaan GeoLite2-tuotteen tai sen maksullisen version GeoIPXNUMX käyttöä.

Toiseksi joulukuusta 2019 lähtien MaxMind hän totesi merkittävästä muutoksesta pääsyssä heidän tietokantoihinsa. Kalifornian kuluttajatietosuojalain noudattamiseksi MaxMind päätti "peittää" GeoLite2:n jakelun rekisteröinnillä.

Koska haluamme käyttää heidän tuotettaan, rekisteröidymme tälle sivulle.

xtables-addons: suodata paketit maan mukaan
Tämän jälkeen saat sähköpostin, jossa sinua pyydetään asettamaan salasana. Nyt kun olemme luoneet tilin, meidän on luotava lisenssiavain. Löydämme kohteen henkilökohtaiselta tililtäsi Omat lisenssiavaimetja napsauta sitten -painiketta Luo uusi lisenssiavain.

Avainta luotaessa meiltä kysytään vain yksi kysymys: käytämmekö tätä avainta GeoIP Update -ohjelmassa? Vastaamme kieltävästi ja painamme nappia Vahvistaa. Avain näkyy ponnahdusikkunassa. Tallenna tämä avain turvalliseen paikkaan, sillä kun suljet ponnahdusikkunan, et voi enää tarkastella koko avainta.

xtables-addons: suodata paketit maan mukaan
Meillä on mahdollisuus ladata GeoLite2-tietokannat manuaalisesti, mutta niiden muoto ei ole yhteensopiva xt_geoip_build-skriptin odottaman muodon kanssa. Tässä GeoLite2xtables-skriptit tulevat apuun. Voit suorittaa komentosarjoja asentamalla NetAddr::IP perl -moduulin:

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

Seuraavaksi kloonaamme arkiston skripteillä ja kirjoitamme aiemmin hankitun lisenssiavaimen tiedostoon:

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

cd GeoLite2xtables

echo YOUR_LICENSE_KEY=’123ertyui123' > geolite2.license

Suoritetaan skriptit:

# Скачиваем данные 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 asettaa rajoituksen 2000 lataukselle päivässä ja tarjoaa suuren määrän palvelimia ollessaan päivityksen tallentamista välimuistipalvelimelle.

Huomaa, että tulostiedosto on kutsuttava dbip-country-lite.csv... Valitettavasti, 20_convert_geolite2 ei tuota täydellistä tiedostoa. Käsikirjoitus xt_geoip_build odottaa kolmea saraketta:

  • osoitealueen alku;
  • osoitealueen loppu;
  • maakoodi iso-3166-alpha2:ssa.

Ja tulostiedosto sisältää kuusi saraketta:

  • osoitealueen alku (merkkijonoesitys);
  • osoitealueen loppu (merkkijonoesitys);
  • osoitealueen alku (numeerinen esitys);
  • osoitealueen loppu (numeerinen esitys);
  • maan koodi;
  • maan nimi.

Tämä ero on kriittinen, ja se voidaan korjata kahdella tavalla:

  1. sääntö 20_convert_geolite2;
  2. sääntö xt_geoip_build.

Ensimmäisessä tapauksessa vähennämme printf vaadittuun muotoon, ja toisessa - muutamme määrityksen muuttujaan $cc päälle $rivi->[4]. Tämän jälkeen voit rakentaa:

/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

Huomaa, että kirjoittaja GeoLite2xtables ei pidä käsikirjoituksiaan valmiina tuotantoon ja tarjouksiin seurata alkuperäisten xt_geoip_*-skriptien kehittämiseen. Siksi siirrytään kokoonpanoon lähdekoodeista, joissa nämä skriptit on jo päivitetty.

Lähdeversio

Asennettaessa lähdekoodiskripteistä xt_geoip_* sijaitsevat luettelossa /usr/local/libexec/xtables-addons. Tämä komentosarjan versio käyttää tietokantaa IP Country Litelle. Lisenssi on Creative Commons Attribution License, ja saatavilla olevista tiedoista on kolme erittäin tarpeellista saraketta. Lataa ja kokoa tietokanta:

cd /usr/share/xt_geoip/

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

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

Näiden vaiheiden jälkeen iptables on valmis toimimaan.

Geoipin käyttö iptablesissa

Moduuli xt_geoip lisää vain kaksi avainta:

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.

Menetelmät sääntöjen luomiseksi iptablesille pysyvät yleensä ennallaan. Jos haluat käyttää avaimia lisämoduuleista, sinun on määritettävä moduulin nimi erikseen kytkimellä -m. Esimerkiksi sääntö, joka estää saapuvat TCP-yhteydet portissa 443, ei Yhdysvalloista kaikilla liitännöillä:

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

Xt_geoip_buildin luomia tiedostoja käytetään vain sääntöjä luotaessa, mutta niitä ei oteta huomioon suodatettaessa. Jotta geoip-tietokanta voidaan päivittää oikein, sinun on ensin päivitettävä iv*-tiedostot ja sitten luotava uudelleen kaikki säännöt, jotka käyttävät geoipiä iptablesissa.

Johtopäätös

Pakettien suodattaminen maittain on ajan myötä jokseenkin unohtunut strategia. Tästä huolimatta ohjelmistotyökaluja tällaiseen suodatukseen kehitetään, ja ehkä pian uusi xt_geoip-versio, jossa on uusi geoip-tietojen tarjoaja, ilmestyy paketinhallintaan, mikä yksinkertaistaa huomattavasti järjestelmänvalvojien elämää.

xtables-addons: suodata paketit maan mukaan

Vain rekisteröityneet käyttäjät voivat osallistua kyselyyn. Kirjaudu sisään, ole kiltti.

Oletko koskaan käyttänyt suodatusta maan mukaan?

  • 59,1%Kyllä 13

  • 40,9%Nro 9

22 käyttäjää äänesti. 3 käyttäjää pidättyi äänestämästä.

Lähde: will.com

Lisää kommentti