xtables-addons: багцуудыг улсаар шүүнэ

xtables-addons: багцуудыг улсаар шүүнэ
Зарим улсаас ирж буй замын хөдөлгөөнийг хаах ажил нь энгийн мэт боловч анхны сэтгэгдэл нь хууран мэхлэх болно. Өнөөдөр бид үүнийг хэрхэн хэрэгжүүлэх талаар танд хэлэх болно.

Эрьт урьдын түүх

Энэ сэдвээр Google хайлтын үр дүн сэтгэл дундуур байна: ихэнх шийдлүүд удаан хугацаанд "ялзарсан" байсан бөгөөд заримдаа энэ сэдвийг хааж, үүрд мартсан мэт санагддаг. Бид олон тооны хуучин бичлэгүүдийг самнасан бөгөөд зааврын орчин үеийн хувилбарыг хуваалцахад бэлэн байна.

Эдгээр тушаалуудыг гүйцэтгэхийн өмнө нийтлэлийг бүхэлд нь уншихыг зөвлөж байна.

Үйлдлийн системийг бэлтгэж байна

Хэрэгслийг ашиглан шүүлтүүрийг тохируулах болно iptables, энэ нь GeoIP өгөгдөлтэй ажиллахын тулд өргөтгөл шаарддаг. Энэ өргөтгөлийг эндээс олж болно xtables-нэмэлтүүд. xtables-addons нь iptables-д зориулсан өргөтгөлүүдийг бие даасан цөмийн модуль болгон суулгадаг тул үйлдлийн системийн цөмийг дахин хөрвүүлэх шаардлагагүй.

Үүнийг бичиж байх үед xtables-addons-ийн одоогийн хувилбар нь 3.9 юм. Гэсэн хэдий ч, Ubuntu 20.04 LTS стандарт хадгалах сангаас зөвхөн 3.8, Ubuntu 18.04 хадгалах сангаас 3.0-ыг л олж болно. Та дараах тушаалыг ашиглан багц менежерээс өргөтгөлийг суулгаж болно.

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

3.9 хувилбар болон төслийн одоогийн төлөвийн хооронд жижиг боловч чухал ялгаа байгааг анхаарна уу, бид үүнийг дараа хэлэлцэх болно. Эх кодоос бүтээхийн тулд шаардлагатай бүх багцыг суулгана уу:

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

Хадгалах газрыг клон хийх:

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

cd xtables-addons-xtables-addons

xtables-addons нь олон өргөтгөлүүдийг агуулдаг боловч бид зөвхөн сонирхдог xt_geoip. Хэрэв та шаардлагагүй өргөтгөлүүдийг систем рүү татахыг хүсэхгүй байгаа бол тэдгээрийг бүтээхээс хасаж болно. Үүнийг хийхийн тулд та файлыг засах хэрэгтэй mconfig. Хүссэн бүх модулиудын хувьд суулгана уу y, мөн шаардлагагүй бүх зүйлийг тэмдэглэ n. Бид цуглуулдаг:

./autogen.sh

./configure

make

Мөн супер хэрэглэгчийн эрхээр суулгана уу:

make install

Цөмийн модулиудыг суулгах явцад дараахтай төстэй алдаа гарч болно.

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

Энэ нөхцөл байдал нь цөмийн модулиудад гарын үсэг зурах боломжгүйгээс үүсдэг, учир нь гарын үсэг зурах зүйл алга. Та энэ асуудлыг хэд хэдэн тушаалаар шийдэж болно:

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

Эмхэтгэсэн цөмийн модулийг суулгасан боловч систем үүнийг илрүүлдэггүй. Системээс шинэ модулийг харгалзан хараат байдлын газрын зураг үүсгэхийг хүсч, дараа нь ачаалъя:

depmod -a

modprobe xt_geoip

xt_geoip системд ачаалагдсан эсэхийг шалгацгаая:

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

Нэмж хэлэхэд, өргөтгөл iptables-д ачаалагдсан эсэхийг шалгаарай:

# cat /proc/net/ip_tables_matches 
geoip
icmp

Бид бүх зүйлд сэтгэл хангалуун байгаа бөгөөд модулийн нэрийг нэмэх л үлдлээ / etc / модулиудИнгэснээр модуль нь үйлдлийн системийг дахин ачаалсны дараа ажиллах болно. Одооноос iptables нь geoip командуудыг ойлгож байгаа ч ажиллахад хангалттай өгөгдөл байхгүй. Geoip мэдээллийн санг ачаалж эхэлцгээе.

GeoIP мэдээллийн санг авч байна

Бид iptables өргөтгөлд ойлгомжтой мэдээлэл хадгалагдах лавлах үүсгэнэ.

mkdir /usr/share/xt_geoip

Өгүүллийн эхэнд бид эх кодын хувилбар болон багц менежерийн хувилбаруудын хооронд ялгаа байгааг дурдсан. Хамгийн мэдэгдэхүйц ялгаа нь өгөгдлийн сангийн үйлдвэрлэгч болон скриптийн өөрчлөлт юм xt_geoip_dl, хамгийн сүүлийн үеийн өгөгдлийг татаж авдаг.

Багц менежерийн хувилбар

Скрипт нь /usr/lib/xtables-addons замд байрладаг боловч та үүнийг ажиллуулахыг оролдох үед та тийм ч мэдээлэлгүй алдааг харах болно:

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

Өмнө нь лицензийн дагуу тараагдсан GeoLite Legacy гэгддэг GeoLite бүтээгдэхүүнийг мэдээллийн сан болгон ашигладаг байсан. Creative Commons ASA 4.0 компани MaxMind. Энэ бүтээгдэхүүнд нэгэн зэрэг хоёр үйл явдал тохиолдсон нь iptables өргөтгөлийн нийцтэй байдлыг эвдсэн.

Нэгдүгээрт, 2018 оны нэгдүгээр сард зарласан бүтээгдэхүүний дэмжлэгийг зогсоох тухай, 2019 оны 2-р сарын 2-нд мэдээллийн сангийн хуучин хувилбарыг татаж авах бүх холбоосыг албан ёсны вэбсайтаас устгасан. Шинэ хэрэглэгчдэд GeoLiteXNUMX бүтээгдэхүүн эсвэл GeoIPXNUMX төлбөртэй хувилбарыг ашиглахыг зөвлөж байна.

Хоёрдугаарт, 2019 оны арванхоёрдугаар сараас хойш MaxMind гэж хэлсэн мэдээллийн санд хандах хандалтад ихээхэн өөрчлөлт орсон тухай. Калифорнийн хэрэглэгчийн нууцлалын тухай хуулийг дагаж мөрдөхийн тулд MaxMind GeoLite2-ийн тархалтыг бүртгэлд хамруулахаар шийджээ.

Бид тэдний бүтээгдэхүүнийг ашиглахыг хүсч байгаа тул бид энэ хуудсанд бүртгүүлэх болно.

xtables-addons: багцуудыг улсаар шүүнэ
Дараа нь та нууц үгээ тохируулахыг хүссэн имэйл хүлээн авах болно. Одоо бид данс үүсгэсэн тул лицензийн түлхүүр үүсгэх хэрэгтэй. Таны хувийн дансанд бид тухайн зүйлийг олдог Миний лицензийн түлхүүрүүд, дараа нь товчлуур дээр дарна уу Шинэ лицензийн түлхүүр үүсгэх.

Түлхүүр үүсгэх үед бид зөвхөн нэг асуулт асуух болно: бид энэ түлхүүрийг GeoIP Update програмд ​​ашиглах уу? Бид сөрөг хариулт өгч, товчлуурыг дарна баталгаажуул. Түлхүүрийг гарч ирэх цонхонд харуулах болно. Энэ түлхүүрийг аюулгүй газар хадгалаарай, учир нь та гарч ирэх цонхыг хаасны дараа та түлхүүрийг бүхэлд нь харах боломжгүй болно.

xtables-addons: багцуудыг улсаар шүүнэ
Бид GeoLite2 мэдээллийн санг гараар татаж авах боломжтой боловч тэдгээрийн формат нь xt_geoip_build скриптийн хүлээгдэж буй форматтай нийцэхгүй байна. Энд GeoLite2xtables скриптүүд аврах ажилд ирдэг. Скриптүүдийг ажиллуулахын тулд 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

Дараа нь бид репозиторыг скриптээр клончилж, өмнө нь олж авсан лицензийн түлхүүрийг файлд бичнэ.

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

cd GeoLite2xtables

echo YOUR_LICENSE_KEY=’123ertyui123' > geolite2.license

Скриптүүдийг ажиллуулцгаая:

# Скачиваем данные 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 нь өдөрт 2000 татаж авах хязгаарлалт тавьдаг бөгөөд олон тооны серверүүд нь прокси сервер дээр шинэчлэлтийг кэш хийхийг санал болгодог.

Гаралтын файлыг дуудах ёстой гэдгийг анхаарна уу dbip-country-lite.csv... Харамсалтай нь 20_геолитыг_хувиргах2 төгс файл үүсгэдэггүй. Скрипт xt_geoip_build гурван багана хүлээж байна:

  • хаягийн хүрээний эхлэл;
  • хаягийн хүрээний төгсгөл;
  • iso-3166-alpha2 дахь улсын код.

Мөн гаралтын файл нь зургаан багана агуулдаг:

  • хаягийн хүрээний эхлэл (мөрт дүрслэл);
  • хаягийн хүрээний төгсгөл (мөрт дүрслэл);
  • хаягийн хүрээний эхлэл (тоон дүрслэл);
  • хаягийн хүрээний төгсгөл (тоон дүрслэл);
  • тухайн улсын код;
  • улсын нэр.

Энэ зөрүү нь маш чухал бөгөөд хоёр аргын аль нэгээр засч залруулж болно.

  1. засварлах 20_геолитыг_хувиргах2;
  2. засварлах xt_geoip_build.

Эхний тохиолдолд бид багасгадаг хэвлэх шаардлагатай формат руу, хоёрдугаарт - бид хувьсагчийн даалгаврыг өөрчилнө $cc тухай $мөр->[4]. Үүний дараа та бүтээж болно:

/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

Зохиогч гэдгийг анхаарна уу GeoLite2xtables скриптүүдээ үйлдвэрлэх, санал болгоход бэлэн гэж үздэггүй мөр анхны xt_geoip_* скриптийг боловсруулахад зориулагдсан. Тиймээс, эдгээр скриптүүд аль хэдийн шинэчлэгдсэн эх кодуудаас угсралт руу шилжье.

Эх хувилбар

Эх кодын скриптүүдээс суулгах үед xt_geoip_* каталогт байрладаг /usr/local/libexec/xtables-addons. Скриптийн энэ хувилбар нь мэдээллийн санг ашигладаг IP to Country Lite. Тусгай зөвшөөрөл нь Creative Commons Attribution License бөгөөд бэлэн байгаа мэдээллээс маш шаардлагатай гурван багана байна. Мэдээллийн санг татаж аваад угсарна уу:

cd /usr/share/xt_geoip/

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

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

Эдгээр алхмуудын дараа iptables ажиллахад бэлэн болно.

iptables дээр geoip ашиглах

Модуль xt_geoip зөвхөн хоёр түлхүүр нэмнэ:

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-д зориулсан дүрмийг бий болгох аргууд ерөнхийдөө өөрчлөгдөөгүй хэвээр байна. Нэмэлт модулиудын түлхүүрүүдийг ашиглахын тулд та модулийн нэрийг -m шилжүүлэгчээр тодорхой зааж өгөх ёстой. Жишээлбэл, бүх интерфейс дээр АНУ-аас биш 443 порт дээр ирж буй TCP холболтыг хаах дүрэм:

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

Xt_geoip_build-ийн үүсгэсэн файлуудыг зөвхөн дүрэм үүсгэх үед ашигладаг боловч шүүж байхдаа харгалздаггүй. Тиймээс, geoip мэдээллийн санг зөв шинэчлэхийн тулд эхлээд iv* файлуудыг шинэчилж, дараа нь iptables дээр geoip ашигладаг бүх дүрмийг дахин үүсгэх хэрэгтэй.

дүгнэлт

Улс орнуудад үндэслэн пакетуудыг шүүх нь цаг хугацааны явцад мартагдсан стратеги юм. Гэсэн хэдий ч ийм шүүлтүүр хийх програм хангамжийн хэрэгслүүдийг боловсруулж байгаа бөгөөд магадгүй удахгүй багц менежерүүдэд шинэ geoip өгөгдөл нийлүүлэгчтэй xt_geoip-ийн шинэ хувилбар гарч ирэх бөгөөд энэ нь системийн администраторуудын амьдралыг ихээхэн хөнгөвчлөх болно.

xtables-addons: багцуудыг улсаар шүүнэ

Зөвхөн бүртгэлтэй хэрэглэгчид санал асуулгад оролцох боломжтой. Нэвтрэх, гуйя.

Та хэзээ нэгэн цагт улсаар нь шүүж үзсэн үү?

  • 59,1%Тийм 13

  • 40,9%Үгүй 9

22 хэрэглэгч санал өгсөн. 3 хэрэглэгч түдгэлзсэн.

Эх сурвалж: www.habr.com

сэтгэгдэл нэмэх