fail2ban میں کوئی چیز خود بخود پیکٹ نہیں گرتی: یہ ایک عمل بلاتا ہے، اور وہی عمل پروٹوکول اور پورٹ کا نام دیتا ہے۔ جب jail ban کی رپورٹ کرتا ہے جبکہ ڈیمن لاگ اِن قبول کرتا رہتا ہے، تو ban عام طور پر حقیقی ہوتا ہے اور لاگ کے اشارے سے زیادہ تنگ۔ دوسرے ٹرانسپورٹ سے دوبارہ جڑنے والا کلائنٹ نصب شدہ قاعدے سے کبھی نہیں ملتا۔ کچھ بھی بدلنے سے پہلے موازنہ کریں کہ عمل نے کیا نصب کیا اور ڈیمن کس پر سنتا ہے، کیونکہ ثبوت اُس فائر وال چین میں ہے جو عمل نے لکھی، jail کی فہرست میں نہیں۔

چین پڑھیں، jail کا خلاصہ نہیں

fail2ban اپنی چین سروس کی چین سے پہلے داخل کرتا ہے، اس لیے کاؤنٹر فہرست ٹھیک طور پر دکھاتی ہے کہ کیا موجود ہے۔ jail کے نام کی چین، جس میں ایک قاعدہ ہے اور اُس کا پروٹوکول کالم udp پڑھتا ہے، آتے رہنے والے TCP لاگ اِن کے لیے مکمل وضاحت ہے۔ صرف ممنوع ماخذ سے آنے والے UDP پیکٹ رد ہوتے ہیں۔ سروس کے پاس TCP سننے والا ہے، اور اُس چین میں کچھ بھی اُسے نہیں چھوتا۔

پڑوسی jail کے اثر پر بھی دھیان دیں۔ ایک ہوسٹ مکمل طور پر ترتیب شدہ دکھ سکتا ہے صرف اس لیے کہ کوئی دوسرا jail گمشدہ آدھا حصہ مہیا کرتا ہے، اور وہی بلڈ وہاں کچھ نہیں کرتا جہاں وہ jail نصب نہیں۔

عمل صرف ایک پروٹوکول کا نام دیتا ہے، اور وہیں یہ ٹوٹتا ہے

ہر banaction فائر وال کمانڈ کا ٹیمپلیٹ ہے، اور پروٹوکول اُس کے ایک پلیس ہولڈر میں بیٹھتا ہے۔ یہ تنگی جان بوجھ کر ہے، کیونکہ ویب jail اور DNS jail کا ایک جیسے پورٹ روکنے سے کوئی واسطہ نہیں۔ یہ جال تب بنتا ہے جب سروس ایک سے زیادہ ٹرانسپورٹ پر سنتی ہے، جو VPN ڈیمن عموماً کرتے ہیں۔ فلٹر دونوں ٹرانسپورٹ کی ناکام لاگ اِن دیکھ سکتا ہے جبکہ عمل صرف ایک کو ڈھکتا ہے۔

SoftEther اور OpenVPN کی تنصیبات عام طور پر ایک ساتھ UDP اور TCP پر سنتی ہیں، اور چونکہ لاگ لائن دونوں حالتوں میں یکساں دکھتی ہے، فلٹر دونوں کو دیکھتا ہے۔ یہ عدم توازن jail کی اپنی رپورٹ میں کبھی ظاہر نہیں ہوتا۔ fail2ban نے ناکامیاں درست گنیں اور پھر ایسا قاعدہ نصب کیا جو اُس آدھی ٹریفک پر لاگو ہوتا ہے جس پر وہ ناکامیاں آئیں۔

ban کو دونوں ٹرانسپورٹ ڈھکنے دیں

اسے jail کی تعریف میں ہی درست کریں؛ ہاتھ سے لکھے قواعد اگلی ری لوڈ میں اُلٹ پُلٹ ہو جائیں گے۔ ہر پروٹوکول کے لیے ایک ایک، دو عمل واضح لکھیں:

action = %(banaction)s[name=%(__name__)s-tcp, actionname=%(__name__)s-tcp, protocol="tcp", port="%(port)s", chain="%(chain)s"]
         %(banaction)s[name=%(__name__)s-udp, actionname=%(__name__)s-udp, protocol="udp", port="%(port)s", chain="%(chain)s"]

اسے protocol = all سے چھوٹا کرنے کی کوشش نہ کریں۔ ڈیفالٹ banaction ایک multiport عمل ہے، اور یہ -p <protocol> -m multiport --dports <port> تک پھیلتا ہے؛ L4 پروٹوکول کے بغیر پورٹ میچ کے پاس جانچنے کو کچھ نہیں، اس لیے iptables قاعدہ رد کرتا ہے جبکہ jail اب بھی کامیاب ban کی رپورٹ کرتا ہے۔ iptables-allports یا nftables-allports جیسا تمام پورٹ کا عمل ایک اندراج قبول کرتا ہے، لیکن اُس ماخذ کے ہر پورٹ کو روک دیتا ہے، جو الگ فیصلہ ہے اور اُس کا اپنا جواز درکار ہے۔ protocol کو tcp یا udp پر رہنے دیں اور دونوں اندراج قبول کریں۔

ترتیب پر بھروسا کرنے کے بجائے ثابت کریں کہ قاعدہ موجود ہے، کیونکہ چین اُسے تھامنے تک ترتیب صرف نیت بیان کرتی ہے:

iptables -S f2b-vpn-tcp
iptables -S f2b-vpn-udp

ہر چین کو ایک قاعدہ درج کرنا چاہیے، پہلی میں -p tcp اور دوسری میں -p udp، دونوں ممنوع پتے کا نام لیتے ہیں۔ پھر تصدیق کریں کہ وہی پتہ دونوں ٹرانسپورٹ پر رد ہوتا ہے۔ چین میں نہ دیکھا گیا ban ایک اُمید ہے، اور اُسی علامت کی اگلی رپورٹ پھر وہی گھنٹہ خرچ کرائے گی۔

ban اب بھی کیا چھوڑتا ہے، اور اگلا معاملہ

عمل ایک ہی ماخذ کو رد کرتا ہے، اور صرف اُن پورٹوں پر جو اُس میں درج ہیں۔ پتے بدلنے والے حملہ آور کے خلاف یہ کچھ نہیں کرتا، اور یہ دشمن مشین کو اُس کیریئر گریڈ NAT اخراج سے الگ نہیں کر سکتا جسے سینکڑوں صارفین بانٹتے ہیں، جہاں ایک ban اُن لوگوں کو باہر رکھتا ہے جنہوں نے کچھ نہیں کیا۔ یقینی بنائیں کہ فلٹر وہ پتہ پڑھتا ہے جو کلائنٹ کے پاس واقعی ہے، نہ کہ آگے بھیجا گیا ہیڈر یا پراکسی پتہ۔ ونڈو کو اِتنی چھوٹی رکھیں کہ غلطی خود ختم ہو جائے۔

اِن میں سے کوئی بھی پروٹوکول کی اصلاح چھوڑنے کے حق میں نہیں ہے؛ یہ ایک ساتھ دو خیال رکھنے کے حق میں ہے۔ ban jail کے خلاصے کے اشارے سے زیادہ تنگ ہے، اور مکمل ban بھی خطرے سے زیادہ تنگ ہے۔ فائر وال چین کو ڈیمن کے سننے والوں کی فہرست کے پاس رکھیں اور پروٹوکول بہ پروٹوکول موازنہ کریں، کیونکہ ban سروس تک پہنچ سکتا ہے یا نہیں، یہی دو فہرستیں طے کرتی ہیں۔

ری لوڈ کمانڈ اور چین فہرست jail کے پاس رن بک میں رکھیں۔ اگلے شخص کو دونوں چاہئیں ہوں گے، اور jail کا خلاصہ اُسے کوئی ایک بھی نہیں بتائے گا۔

متعلقہ مضامین