لينڪس/OpenWrt/Lede تي ٻڌل ڊوائيسز جي ريموٽ مانيٽرنگ ۽ انتظام پورٽ 80 ذريعي، جاري

هي مضمون جو آخري حصو آهي، هتي شروعات آهي habr.com/en/post/445568
آخري دفعو مون لکيو ته ڪيئن مون ڊيوائس مانيٽرنگ تي عمل ڪيو، هاڻي اسان انتظام بابت ڳالهائينداسين. ڪسٽمر جي پاسي ”ٽيڪنيشين“ سان ڳالهه ٻولهه ۾، مون کي اڪثر اهڙن ننڍڙن ڊوائيسز جي صلاحيتن جي محدود تصور سان منهن ڏيڻو پوي ٿو (گهٽ ميموري وسيلن ۽ ڪارڪردگيءَ سان)، ڪيترن کي يقين آهي ته ”سڀ کان وڌيڪ اسان کي ريبوٽ موڪلڻ جي ضرورت آهي، ڪجهه وڌيڪ لاءِ. سنجيده اسان هڪ ٽيم موڪلينداسين“.
پر مشق ڏيکاري ٿو ته اهو مڪمل طور تي سچ ناهي. هتي عام عام ڪمن جي هڪ ننڍڙي فهرست آهي:

  1. نيٽ ورڪ تشخيص ۽ مسئلا حل ڪرڻ. توهان جي روٽر جي ايٿرنيٽ پورٽ جي پويان عام طور تي هارڊويئر جو هڪ ٻيو ٽڪرو هوندو آهي جنهن جو پنهنجو اندروني IP پتو هوندو آهي. ڪڏهن ڪڏهن، توهان ڪري سگهو ٿا (گهرڻ گهرجي) "پنگ" ان کي. يا سرنگ جو انتظام - جيڪڏهن سرنگ اوچتو 3G موڊيم ذريعي هلندڙ روٽر تي نه اڀري، پر اسان پاڻ روٽر کي ڏسي سگهون ٿا.
  2. سسٽم جي سار سنڀال. فرم ویئر اپڊيٽ، سروس اسڪرپٽ اپ گريڊ.
  3. توازن وارو عمل. ان کي ”پرورشن“ چئي سگهجي ٿو، پر ”برابري“ جو تصور، جيئن مان نقل ڪريان ٿو، "هڪ سرڪس اداڪار جي صلاحيت هڪ غير مستحڪم جسم جي پوزيشن ۾ توازن برقرار رکڻ لاء" - بهتر ٺهڪي اچي ٿو. اهڙيون حالتون صارف جي محدود بجيٽ جي ڪري پيدا ٿينديون آهن. هيٺ مان ڪجهه مثال ڏيان ٿو، پر... اهي سڌو سنئون ڪهاڻي جي موضوع سان لاڳاپيل نه آهن، مون انهن کي نوٽس ۾ رکيو

وائي فائي جي نگرانيگذريل پنجن سالن کان فيشن وارو موضوع، خاص طور تي وفاقي پرچون زنجيرن ۾. توهان آرام سان واپاري منزلن تي گھمندا رهيا آهيو، ۽ توهان جو موبائل فون وائي فائي سان آن آهي، نيٽ ورڪ جي ڪجهه سلسلي کي ”اسٽيڪ“ ڪرڻ جي ڪوشش ۾، باقاعدگي سان پروب ريڪوسٽ پيڪيٽ موڪلي ٿو، جن جو تجزيو ڪري سگهجي ٿو حساب ڪرڻ لاءِ. توهان: توهان هن دڪان تي ڪيترا ڀيرا ايندا آهيو، ڪهڙن سببن جي ڪري؟ توهان رستن تي هلن ٿا وغيره وغيره. پوءِ ڊيٽا گڏ ڪئي ويندي آهي، تجزيو ڪيو ويندو آهي، گرميءَ جا نقشا ٺاهيا ويندا آهن، ۽ مئنيجر اهڙين تصويرن لاءِ انتظاميا يا سيڙپڪارن کان پئسو ”خرچ“ ڪندا آهن. خير، هاڻي لاءِ.... ”پيسا نه آهي، پر توهان رکو...“، ۽ نتيجو (حقيقي) اڳ ۾ ئي ڏيکارڻو آهي، سٺو پراڻو گيت شروع ٿئي ٿو: ”ها، ها، پوءِ يقيناً اسان انسٽال ڪندو cis ۽ سڀڪنھن شيء کي توهان چاهيو ٿا، پر هاڻي اسان کي ڪسٽمر کي ڏيکارڻ جي ضرورت آهي نتيجو! رستي ۾، اسان اهو چوڻ وساري ويٺا آهيون ته ڪسٽمر اسان کي اجازت ڏني ته اسان جي سامان کي وائي فائي ذريعي پنهنجي هاٽ اسپاٽ سان ڳنڍڻ، پر عام بنيادن تي، ڄڻ ته اسان مهمان ڪلائنٽ هئاسين. ۽ ان ڪري اسان کي بيلنسنگ روٽرز ٺاهڻا پوندا - ڪيترائي وائي فائي سب انٽرفيس اٿاريا ويندا آھن، جن مان ھڪڙو ھوٽ اسپاٽ سان جڙيل ھوندو آھي، ۽ ٻيو ماحول کي مانيٽر ڪندو آھي، tcpdump جي نتيجن کي بيحد اپلوڊ ڪندو آھي، پوءِ فائل جي مواد کي آرڪائيو ۽ خطرن ۾ پيڪ ڪري ڇڏيندو آھي. ”گهڻو کائڻ“ کان مرڻ جي ڪوشش ڪري ٿو FTP سرور تي مواد کي ختم ڪرڻ. اها تعجب جي ڳالهه ناهي ته بيلنسنگ روٽر اڪثر ڪري "ٽٽائي ٿو" ۽ ڪنهن به طريقي سان "ٻيهر بحال" ٿيڻ گهرجي.

ريڊيس Radiusهتي صورتحال کي بيان ڪرڻ آسان آهي ڪسٽمر کان هن بيان وانگر: ”اسان هاٽ اسپاٽ جو هڪ غير مرڪزي نيٽ ورڪ چاهيون ٿا جيڪو سامان تي ڪم ڪندو جنهن جو ماڊل اڳ ۾ نه سڃاتو وڃي ٿو ، چينلن ذريعي ، پر جن کي اسان اڃا تائين نٿا ڄاڻون. اوه، اسان اهو چوڻ وساري ويٺا آهيون ته، اسان نه رڳو گراهڪن کي اشتهار ڏيکارڻ چاهيون ٿا، پر ان جڳهه جي چوڌاري هر شيءِ جو تجزيو به ڪرڻ چاهيون ٿا جتي هاٽ اسپاٽ نصب ٿيل آهي. نه، اسان کي اڃا تائين خبر ناهي ڇو، پر اسان ان کي معلوم ڪنداسين، ان ۾ شڪ نه ڪريو، اسان هن خيال سان اچڻ جي قابل هئا.

۽ اسان کي اهو نه وسارڻ گهرجي ته ڪيترن ئي اڳوڻن اڻڄاتل حالتن جي ڪري، ڪنٽرول غير معياري حالتن ۾ ٿيڻ گهرجي، جڏهن اسان روٽر سان سڌو سنئون IP ذريعي ڳنڍي نٿا سگهون: بندرگاهه ۽ صرف ان کان سرگرمي جو انتظار ڪرڻ تي مجبور ڪيو وڃي. جيڪڏهن اسان پنهنجو پاڻ کي ختم ڪريون ٿا، سرور ۽ روٽر جي وچ ۾ گفتگو هن طرح پيش ڪري سگهجي ٿي:

  • روٽر: سلام. مان اهڙو ۽ اهڙو روٽر آهيان، ڇا منهنجي لاءِ ڪي ڪم آهن؟
  • سرور: روٽر اهڙي ۽ اهڙي، مون توهان کي رجسٽرڊ ڪيو، ته توهان زنده آهيو. هتي چيلنج آهي: مون کي ifconfig حڪم جو نتيجو ڏيکاريو؟
  • روٽر: سلام. مان هڪ اهڙو ۽ اهڙو روٽر آهيان، آخري ڀيرو توهان ifconfig جو نتيجو ڏيکارڻ لاءِ چيو هو، اهو هتي آهي. ڇا مون لاءِ ڪي ڪم آھن؟
  • سرور: روٽر اهڙي ۽ اهڙي، مون توهان کي رجسٽرڊ ڪيو، ته توهان زنده آهيو. توهان لاءِ ڪو به ڪم ناهي.

سڀ کان دلچسپ سوال: ڪيئن هڪ ريموٽ روٽر معلومات جي هڪ خاص رقم موڪلي سگهي ٿو؟ پوئين حصي ۾، مون بيان ڪيو ته محدود وسيلن جي ڪري، روٽر وٽ صرف ”اسٽريڊ-ڊائون“ ويجٽ آهي، جيڪو صرف GET ذريعي ڪم ڪري ٿو ۽ ٻيو ڪجھ به نه؛ ڪو به ايف ٽي پي ڪلائنٽ يا ڪرل ناهي. وڌيڪ واضح طور تي، اسان کي هڪ عالمگير طريقي جي ضرورت آهي، تصوير اسيمبلي جي خاصيتن کان سواء. مون wget استعمال ڪرڻ تي آباد ڪيو. وڌيڪ واضح طور تي، مون ڪيئن "روڪ" ڪيو - مون کي صرف ڪو اختيار نه هو :)

صرف هڪ ڊسڪليمرمنهنجو انتظام حل ڪم ڪري رهيو آهي، تمام محدود ناهي، ۽ مون کي پڪ آهي ته اهو ڪڙي آهي، جيتوڻيڪ اهو منهنجي گهڻن گراهڪن کي مناسب آهي. توھان اھو ڪيئن ڪري سگھوٿا عقلمنديءَ سان - ھڪڙو ننڍڙو افاديت لکو جيڪو موڪلي ٿو پوسٽ بائنري ڊيٽا پورٽ 80 ذريعي. ان کي شامل ڪريو (افاديت) روٽر فرم ویئر ۾ ۽ ان کي رسائي ڪريو bash استعمال ڪندي. پر حقيقت اها آهي ته: a) اسان کي جلدي ڪرڻ جي ضرورت آهي ب) اسان کي شايد موجوده "روٽرز جي زو" تي سڀ ڪجهه ڪرڻ جي ضرورت آهي ج) "ڪو به نقصان نه ڏيو!" - جيڪڏهن روٽر ڪم ڪري رهيو آهي ۽ ٻيا ڪم ڪري رهيو آهي، ڪوشش ڪريو تبديليون جيڪي موجوده ڪارڪردگي تي اثر انداز نه ڪندا.

اچو ته عمل ڪرڻ لاء اڳتي وڌو. اچو ته چئو ته توهان جو گراهڪ زبڪس کان روٽر کي آساني سان ۽ قدرتي طور تي ريبوٽ ڪرڻ چاهي ٿو، "ماؤس جي ڪلڪ" سان. اڄ اسان Zabbix سان عمل درآمد کي بيان ڪرڻ شروع ڪنداسين.
"انتظام" -> "اسڪرپٽ" مينيو ۾، نئين اسڪرپٽ شامل ڪريو. اسان ان کي سڏيندا آهيون "ريبوٽ"، داخل ڪريو "php /usr/share/zabbix/reboot.php {HOST.HOST}" حڪم جي طور تي

لينڪس/OpenWrt/Lede تي ٻڌل ڊوائيسز جي ريموٽ مانيٽرنگ ۽ انتظام پورٽ 80 ذريعي، جاري

اڳيون: مينيو "مانيٽرنگ" -> "تازو ڊيٽا" -> "مطلب نيٽ ورڪ نوڊ تي صحيح ڪلڪ ڪريو." ھي اھو آھي جيڪو مينيو اسڪرپٽ شامل ڪرڻ کان پوء نظر ايندو.

لينڪس/OpenWrt/Lede تي ٻڌل ڊوائيسز جي ريموٽ مانيٽرنگ ۽ انتظام پورٽ 80 ذريعي، جاري
ان مطابق، اسان reboot.php اسڪرپٽ کي /usr/share/zabbix ڊاريڪٽري ۾ رکون ٿا (توهان جي مختلف ٿي سگهي ٿي، مان zabbixa روٽ ڊاريڪٽري استعمال ڪريان ٿو).

حفاظت جو اعلاناسڪرپٽ ۾ وضاحت کي صاف ڪرڻ لاء، مان صرف روٽر id استعمال ڪريان ٿو، پر پاسورڊ استعمال نه ڪريو. اهو پيداوار ورزن ۾ ائين ڪرڻ جي سفارش نه آهي! مون هي ڇو ڪيو: ڇو جو وڏو سوال اهو آهي ته ڪٿي روٽرز لاءِ پاسورڊ محفوظ ڪجي؟ Zabbixe پاڻ ۾ "انوينٽري ڊيٽا" ۾؟ تڪراري مشق. متبادل طور تي: reboot.php فائل تائين ٻاهرين رسائي کي محدود ڪريو

فائل reboot.php

<?php
	// присваиваем параметры с консоли переменным
	$user = $argv[1];
	// ВНИМАНИЕ. Вот здесь в целях безопасности все-таки прописывать пароль устройства! Но для демонстрации мы будем обращаться к базе данных без использования пароля. 
	//$password = $argv[2];
		
	$conn=new mysqli("localhost","db_user","db_password","db_name");
	if (mysqli_connect_errno()) {
		exit();
	}
	$conn->set_charset("utf8");
			
	// "Отправляем" команду reboot за счет изменения поля task таблицы users. В поле task можно отправлять любую команду.
	$sql_users=$conn->prepare("UPDATE users SET task='reboot' WHERE id=? AND status='active';");
	$sql_users->bind_param('s', $user);
	$sql_users->execute();
	$sql_users->close();
?>

اهو ئي سڀ ڪجهه آهي. سوال کليل رهي ٿو: "ڊيوائس مان حڪم تي عمل ڪرڻ جو نتيجو ڪيئن حاصل ڪجي." اچو ته مثال طور ifconfig ڪمانڊ استعمال ڪندي ڪم کي ڏسو. هي حڪم ڊوائيس ڏانهن موڪلي سگھجي ٿو:

message=`ifconfig`; wget "http://xn--80abgfbdwanb2akugdrd3a2e5gsbj.xn--p1ai/a.php?u=user&p=password!&m=$message" -O /tmp/out.txt

، جتي:
پيغام = `ifconfig` - اسان ifconfig ڪمانڊ آئوٽ جو نتيجو تفويض ڪريون ٿا $message variable ڏانهن
wget "xn--80abgfbdwanb2akugdrd3a2e5gsbj.xn--p1ai/a.php - اسان جو a.php اسڪرپٽ جيڪو روٽرز کي رجسٽر ڪري ٿو ۽ انهن مان پيغام وصول ڪري ٿو
u=user&p=password!&m=$message - سندون ۽ درخواست متغير جي قيمت m - $message variable جي مواد کي تفويض ڪري ٿو
-O /tmp/out.txt - اسان کي ان صورت ۾ فائل /tmp/out.txt کي ٻاھر ڪڍڻ جي ضرورت نه آھي، پر جيڪڏھن ھي پيٽرول بيان نه ڪيو ويو آھي، wget ڪم نه ڪندو آھي.

اهو ڪم ڇو نٿو ڪري؟ڇاڪاڻ ته اهو هڪ امڪاني سيڪيورٽي سوراخ آهي. سڀ کان وڌيڪ بي ضرر غلطي جيڪا ٿي سگھي ٿي، مثال طور، توھان جي حڪم جي ٻاھر ۾ ھڪڙو "&" ڪردار آھي. تنهن ڪري، اهو ضروري آهي ته هر شي کي فلٽر ڪيو وڃي جيڪو روٽرز کان موڪليو ويو آهي ۽ هر شيء جيڪو سرور ڏانهن اچي ٿو. ها، مان شرمسار آهيان، واقعي. منهنجي دفاع ۾، مان صرف اهو لکي سگهان ٿو ته سڄو مضمون وقف ڪيو ويو آهي ته ڪيئن منظم ڪرڻ لاء اڳواٽ مقرر ڪيل فرم ويئر ۽ ڪميونيڪيشن چينلز سان جيڪي اڳ ۾ بيان نه ڪيا ويا آهن.

خير، مستقبل لاءِ هڪ شروعات: مون اڃا تائين اهو نه سمجهيو آهي ته ڪيئن استعمال ڪجي معياري زبڪس ٽولز جي نتيجن کي ظاهر ڪرڻ لاءِ (مثال طور، حڪم تي عمل ڪرڻ جو نتيجو) جيڪي سرور تي اچن ٿا.

مان توهان کي ياد ڏياريان ٿو ته سڀئي ذريعا Git مخزن مان حاصل ڪري سگھجن ٿا: github.com/BazDen/iotnet.online.git

جو ذريعو: www.habr.com

تبصرو شامل ڪريو