xtables-addons: ملک کے لحاظ سے پیکجوں کو فلٹر کریں۔

xtables-addons: ملک کے لحاظ سے پیکجوں کو فلٹر کریں۔
بعض ممالک سے ٹریفک کو روکنے کا کام آسان لگتا ہے، لیکن پہلے تاثرات دھوکہ دہی کے ہو سکتے ہیں۔ آج ہم آپ کو بتائیں گے کہ اس پر عمل کیسے کیا جا سکتا ہے۔

پس منظر

اس موضوع پر گوگل کی تلاش کے نتائج مایوس کن ہیں: زیادہ تر حل طویل عرصے سے "سڑے ہوئے" ہیں اور بعض اوقات ایسا لگتا ہے کہ اس موضوع کو ہمیشہ کے لیے چھوڑ دیا گیا ہے اور بھول گیا ہے۔ ہم نے بہت سارے پرانے ریکارڈز کو کنگھی کر لیا ہے اور ہم ہدایات کے جدید ورژن کا اشتراک کرنے کے لیے تیار ہیں۔

ہمارا مشورہ ہے کہ آپ ان احکامات پر عمل کرنے سے پہلے پورا مضمون پڑھیں۔

آپریٹنگ سسٹم کی تیاری

یوٹیلیٹی کا استعمال کرتے ہوئے فلٹرنگ کو ترتیب دیا جائے گا۔ iptables، جس میں GeoIP ڈیٹا کے ساتھ کام کرنے کے لیے ایک توسیع کی ضرورت ہوتی ہے۔ یہ توسیع میں پایا جا سکتا ہے xtables-addons. xtables-addons iptables کے لیے ایکسٹینشنز کو آزاد کرنل ماڈیولز کے طور پر انسٹال کرتا ہے، اس لیے OS کرنل کو دوبارہ کمپائل کرنے کی ضرورت نہیں ہے۔

لکھنے کے وقت، xtables-addons کا موجودہ ورژن 3.9 ہے۔ تاہم، معیاری Ubuntu 20.04 LTS ریپوزٹریز میں صرف 3.8 اور Ubuntu 18.04 repositories میں 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

ہم ہر چیز سے خوش ہیں اور ماڈیول کا نام شامل کرنا باقی ہے۔ / وغیرہ / ماڈیولزتاکہ ماڈیول OS کو ریبوٹ کرنے کے بعد کام کرے۔ اب سے، 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.

اس سے پہلے، جیو لائٹ پروڈکٹ، جسے اب جیو لائٹ لیگیسی کے نام سے جانا جاتا ہے، لائسنس کے تحت تقسیم کیا جاتا ہے، ڈیٹا بیس کے طور پر استعمال ہوتا تھا۔ Creative Commons ASA 4.0 کمپنی میکس مائنڈ. اس پروڈکٹ کے ساتھ ایک ساتھ دو واقعات پیش آئے جنہوں نے iptables کی توسیع کے ساتھ مطابقت کو "توڑ" دیا۔

سب سے پہلے، جنوری 2018 میں اعلان کیا پروڈکٹ کے لیے سپورٹ کے خاتمے کے بارے میں، اور 2019 جنوری 2 کو، ڈیٹا بیس کے پرانے ورژن کو ڈاؤن لوڈ کرنے کے تمام لنکس کو آفیشل ویب سائٹ سے ہٹا دیا گیا۔ نئے صارفین کو GeoLite2 پروڈکٹ یا اس کا ادا شدہ ورژن GeoIPXNUMX استعمال کرنے کی سفارش کی جاتی ہے۔

دوم، دسمبر 2019 سے MaxMind بیان کیا ان کے ڈیٹا بیس تک رسائی میں نمایاں تبدیلی کے بارے میں۔ کیلیفورنیا کنزیومر پرائیویسی ایکٹ کی تعمیل کرنے کے لیے، MaxMind نے رجسٹریشن کے ساتھ GeoLite2 کی تقسیم کو "کور" کرنے کا فیصلہ کیا ہے۔

چونکہ ہم ان کی مصنوعات کو استعمال کرنا چاہتے ہیں، ہم اس صفحہ پر رجسٹر ہوں گے۔

xtables-addons: ملک کے لحاظ سے پیکجوں کو فلٹر کریں۔
اس کے بعد آپ کو ایک ای میل موصول ہوگا جس میں آپ سے پاس ورڈ سیٹ کرنے کو کہا جائے گا۔ اب جب کہ ہم نے ایک اکاؤنٹ بنا لیا ہے، ہمیں لائسنس کلید بنانے کی ضرورت ہے۔ آپ کے ذاتی اکاؤنٹ میں ہمیں یہ چیز ملتی ہے۔ میری لائسنس کیز، اور پھر بٹن پر کلک کریں۔ نئی لائسنس کلید بنائیں.

کلید بناتے وقت، ہم سے صرف ایک سوال پوچھا جائے گا: کیا ہم اس کلید کو GeoIP اپ ڈیٹ پروگرام میں استعمال کریں گے؟ ہم منفی جواب دیتے ہیں اور بٹن دباتے ہیں۔ کی توثیق. کلید ایک پاپ اپ ونڈو میں ظاہر ہوگی۔ اس کلید کو کسی محفوظ جگہ پر محفوظ کریں، کیونکہ ایک بار جب آپ پاپ اپ ونڈو کو بند کر دیتے ہیں، تو آپ پوری کلید نہیں دیکھ پائیں گے۔

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

میکس مائنڈ روزانہ 2000 ڈاؤن لوڈز کی حد عائد کرتا ہے اور سرورز کی ایک بڑی تعداد کے ساتھ، پراکسی سرور پر اپ ڈیٹ کو کیش کرنے کی پیشکش کرتا ہے۔

براہ کرم نوٹ کریں کہ آؤٹ پٹ فائل کو بلایا جانا چاہئے۔ dbip-country-lite.csv... بدقسمتی سے، 20_convert_geolite2 ایک کامل فائل تیار نہیں کرتا ہے۔ سکرپٹ xt_geoip_build تین کالموں کی توقع ہے:

  • پتہ کی حد کا آغاز؛
  • ایڈریس رینج کا اختتام؛
  • ملک کا کوڈ iso-3166-alpha2 میں۔

اور آؤٹ پٹ فائل میں چھ کالم ہیں:

  • ایڈریس رینج کا آغاز (سٹرنگ کی نمائندگی)؛
  • ایڈریس رینج کا اختتام (سٹرنگ کی نمائندگی)؛
  • پتہ کی حد کا آغاز (عددی نمائندگی)؛
  • پتہ کی حد کا اختتام (عددی نمائندگی)؛
  • ملک کا کوڈ؛
  • ملک کا نام

یہ تضاد اہم ہے اور اسے دو طریقوں میں سے ایک طریقے سے درست کیا جا سکتا ہے:

  1. ترمیم 20_convert_geolite2;
  2. ترمیم xt_geoip_build.

پہلی صورت میں، ہم کم کرتے ہیں پرنف مطلوبہ فارمیٹ میں، اور دوسرے میں - ہم اسائنمنٹ کو متغیر میں تبدیل کرتے ہیں۔ $cc پر $row->[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. اسکرپٹ کا یہ ورژن ڈیٹا بیس کا استعمال کرتا ہے۔ آئی پی ٹو کنٹری لائٹ. لائسنس 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 کنکشنز کو بلاک کرنے کا ایک اصول تمام انٹرفیس پر USA سے نہیں:

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

xt_geoip_build کی طرف سے بنائی گئی فائلیں صرف قواعد بناتے وقت استعمال ہوتی ہیں، لیکن فلٹر کرتے وقت ان کا خیال نہیں رکھا جاتا۔ اس طرح، geoip ڈیٹا بیس کو درست طریقے سے اپ ڈیٹ کرنے کے لیے، آپ کو پہلے iv* فائلوں کو اپ ڈیٹ کرنا ہوگا، اور پھر وہ تمام قواعد دوبارہ بنائیں جو iptables میں geoip استعمال کرتے ہیں۔

حاصل يہ ہوا

ممالک کی بنیاد پر پیکٹوں کو فلٹر کرنا وقت کے ساتھ کسی حد تک بھول جانے والی حکمت عملی ہے۔ اس کے باوجود، اس طرح کی فلٹرنگ کے لیے سافٹ ویئر ٹولز تیار کیے جا رہے ہیں اور، شاید، جلد ہی xt_geoip کا ایک نیا ورژن ایک نئے geoip ڈیٹا فراہم کنندہ کے ساتھ پیکیج مینیجرز میں ظاہر ہو گا، جو سسٹم ایڈمنسٹریٹرز کی زندگی کو بہت آسان بنا دے گا۔

xtables-addons: ملک کے لحاظ سے پیکجوں کو فلٹر کریں۔

سروے میں صرف رجسٹرڈ صارفین ہی حصہ لے سکتے ہیں۔ سائن ان، برائے مہربانی.

کیا آپ نے کبھی ملک کے لحاظ سے فلٹرنگ کا استعمال کیا ہے؟

  • 59,1٪ہاں 13

  • 40,9٪نمبر 9

22 صارفین نے ووٹ دیا۔ 3 صارفین غیر حاضر رہے۔

ماخذ: www.habr.com

نیا تبصرہ شامل کریں