بعض ممالک سے ٹریفک کو روکنے کا کام آسان لگتا ہے، لیکن پہلے تاثرات دھوکہ دہی کے ہو سکتے ہیں۔ آج ہم آپ کو بتائیں گے کہ اس پر عمل کیسے کیا جا سکتا ہے۔
پس منظر
اس موضوع پر گوگل کی تلاش کے نتائج مایوس کن ہیں: زیادہ تر حل طویل عرصے سے "سڑے ہوئے" ہیں اور بعض اوقات ایسا لگتا ہے کہ اس موضوع کو ہمیشہ کے لیے چھوڑ دیا گیا ہے اور بھول گیا ہے۔ ہم نے بہت سارے پرانے ریکارڈز کو کنگھی کر لیا ہے اور ہم ہدایات کے جدید ورژن کا اشتراک کرنے کے لیے تیار ہیں۔
ہمارا مشورہ ہے کہ آپ ان احکامات پر عمل کرنے سے پہلے پورا مضمون پڑھیں۔
آپریٹنگ سسٹم کی تیاری
یوٹیلیٹی کا استعمال کرتے ہوئے فلٹرنگ کو ترتیب دیا جائے گا۔ iptables، جس میں GeoIP ڈیٹا کے ساتھ کام کرنے کے لیے ایک توسیع کی ضرورت ہوتی ہے۔ یہ توسیع میں پایا جا سکتا ہے
لکھنے کے وقت، 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.
اس سے پہلے، جیو لائٹ پروڈکٹ، جسے اب جیو لائٹ لیگیسی کے نام سے جانا جاتا ہے، لائسنس کے تحت تقسیم کیا جاتا ہے، ڈیٹا بیس کے طور پر استعمال ہوتا تھا۔
سب سے پہلے، جنوری 2018 میں
دوم، دسمبر 2019 سے MaxMind
چونکہ ہم ان کی مصنوعات کو استعمال کرنا چاہتے ہیں، ہم اس صفحہ پر رجسٹر ہوں گے۔
اس کے بعد آپ کو ایک ای میل موصول ہوگا جس میں آپ سے پاس ورڈ سیٹ کرنے کو کہا جائے گا۔ اب جب کہ ہم نے ایک اکاؤنٹ بنا لیا ہے، ہمیں لائسنس کلید بنانے کی ضرورت ہے۔ آپ کے ذاتی اکاؤنٹ میں ہمیں یہ چیز ملتی ہے۔ میری لائسنس کیز، اور پھر بٹن پر کلک کریں۔ نئی لائسنس کلید بنائیں.
کلید بناتے وقت، ہم سے صرف ایک سوال پوچھا جائے گا: کیا ہم اس کلید کو GeoIP اپ ڈیٹ پروگرام میں استعمال کریں گے؟ ہم منفی جواب دیتے ہیں اور بٹن دباتے ہیں۔ کی توثیق. کلید ایک پاپ اپ ونڈو میں ظاہر ہوگی۔ اس کلید کو کسی محفوظ جگہ پر محفوظ کریں، کیونکہ ایک بار جب آپ پاپ اپ ونڈو کو بند کر دیتے ہیں، تو آپ پوری کلید نہیں دیکھ پائیں گے۔
ہمارے پاس 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 میں۔
اور آؤٹ پٹ فائل میں چھ کالم ہیں:
- ایڈریس رینج کا آغاز (سٹرنگ کی نمائندگی)؛
- ایڈریس رینج کا اختتام (سٹرنگ کی نمائندگی)؛
- پتہ کی حد کا آغاز (عددی نمائندگی)؛
- پتہ کی حد کا اختتام (عددی نمائندگی)؛
- ملک کا کوڈ؛
- ملک کا نام
یہ تضاد اہم ہے اور اسے دو طریقوں میں سے ایک طریقے سے درست کیا جا سکتا ہے:
- ترمیم 20_convert_geolite2;
- ترمیم xt_geoip_build.
پہلی صورت میں، ہم کم کرتے ہیں
/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
نوٹ کریں کہ مصنف
ماخذ ورژن
سورس کوڈ اسکرپٹس سے انسٹال کرتے وقت xt_geoip_* کیٹلاگ میں موجود ہیں۔ /usr/local/libexec/xtables-addons. اسکرپٹ کا یہ ورژن ڈیٹا بیس کا استعمال کرتا ہے۔
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 ڈیٹا فراہم کنندہ کے ساتھ پیکیج مینیجرز میں ظاہر ہو گا، جو سسٹم ایڈمنسٹریٹرز کی زندگی کو بہت آسان بنا دے گا۔
سروے میں صرف رجسٹرڈ صارفین ہی حصہ لے سکتے ہیں۔
کیا آپ نے کبھی ملک کے لحاظ سے فلٹرنگ کا استعمال کیا ہے؟
-
59,1٪ہاں 13
-
40,9٪نمبر 9
22 صارفین نے ووٹ دیا۔ 3 صارفین غیر حاضر رہے۔
ماخذ: www.habr.com