د پورټ 80 له لارې د لینکس/OpenWrt/Lede وسیلو ریموټ څارنه او کنټرول دوام لري

دا د مقالې وروستۍ برخه ده، دلته پیل دی habr.com/ru/post/445568
وروستی ځل چې ما د دې په اړه لیکلي چې څنګه ما د وسیلې څارنه پلي کړه، اوس به موږ د مدیریت په اړه وغږیږو. د پیرودونکي اړخ کې د "تخنیکیانو" سره په خبرو اترو کې، زه ډیری وختونه د داسې وړو وسیلو د وړتیاوو محدود انګیرنې سره مخ کیږم (د حافظې د کمو سرچینو او فعالیت سره)، ډیری په دې باور دي چې "تر ټولو ډیر چې موږ ورته اړتیا لرو د یو څه لپاره ریبوټ لیږلو ته اړتیا لرو. جدي موږ به یو ټیم واستوو."
مګر تمرین ښیې چې دا په بشپړ ډول ریښتیا ندي. دلته د عامو عامو دندو یو کوچنی لیست دی:

  1. د شبکې تشخیص او د ستونزو حل کول. ستاسو د روټر ایترنیټ بندر شاته معمولا د هارډویر بله برخه وي چې خپل داخلي IP پته لري. ځینې ​​​​وختونه، تاسو کولی شئ (باید) دا "پینګ" کړئ. یا د تونل مدیریت - که تونل ناڅاپه د 3G موډیم له لارې په روټر کې نه راپورته کیږي ، مګر موږ کولی شو پخپله روټر وګورو.
  2. د سیسټم ساتنه. د فرم ویئر تازه کول، د خدماتو سکریپټ اپ گریڈ.
  3. د توازن عمل. دې ته "تجارت" ویل کیدی شي، مګر د "توازن" مفهوم لکه څنګه چې زه حواله کوم، "د سرکس ترسره کونکي وړتیا چې د بدن په بې ثباته موقعیت کې توازن وساتي" - ښه فټ کوي. دا ډول شرایط د پیرودونکي محدود بودیجې له امله رامینځته کیږي. لاندې ما یو څو مثالونه وړاندې کړل، مګر ... دوی د کیسې له موضوع سره مستقیم تړاو نلري، زه یې په یادښتونو کې واچوم

د وائی فای څارنهد تیرو پنځو کلونو لپاره د فیشن موضوع، په عمده توګه د فدرالي پرچون زنځیرونو ترمنځ. تاسو په آرامۍ سره د سوداګریزو پوړونو په اوږدو کې ګرځیږئ، او ستاسو ګرځنده تلیفون د Wi-Fi سره چالان شوی، د شبکې ځینې تارونو ته د "پټ کیدو" په هڅه کې، په منظمه توګه د تحقیقاتو غوښتنې کڅوړې لیږي، کوم چې د محاسبې لپاره تحلیل کیدی شي. تاسو: تاسو څو ځله دې پلورنځي ته راځي، د کوم دلیل لپاره؟ بیا معلومات راټول شوي، تحلیل شوي، د تودوخې نقشې رسم شوي، او مدیران د داسې انځورونو لپاره د مدیریت یا پانګه اچوونکو څخه پیسې "غوڅي". ښه، د اوس لپاره .... "پیسې نشته، مګر تاسو یې ونیسئ ..."، او پایله (ریښتینې) لا دمخه ښودلو ته اړتیا لري، ښه زوړ سندره پیل کیږي: "هو، هو، بیا یقینا موږ cis او هرڅه چې تاسو یې غواړئ نصب کړئ ، مګر اوس موږ اړتیا لرو پیرودونکي ته پایله وښیو! په لاره کې، موږ دا ویل هیر کړل چې پیرودونکي موږ ته اجازه راکړه چې خپل وسایل د وائی فای له لارې د هغه هټ سپټ سره وصل کړو، مګر په عمومي توګه، لکه څنګه چې موږ میلمانه پیرودونکي یو. او له همدې امله موږ باید د توازن روټرونه جوړ کړو - څو د وائی فای سب انټرفیسونه پورته شوي، چې یو یې د هټ سپټ سره تړلی دی، او دویم یې چاپیریال څارنه کوي، په زړه پورې توګه د tcpdump پایله پخپله اپلوډ کوي، بیا د فایل مینځپانګې په آرشیف کې بسته کوي او خطرونه لري. د "ډیر خوړلو" څخه مړ کیدل هڅه کوي د FTP سرور کې مینځپانګې وباسي. دا د حیرانتیا خبره نده چې د توازن روټر ډیری وختونه "ماتیږي" او په یو ډول باید له لرې څخه "بیا ژوندي" شي.

وړانګېد پیرودونکي څخه د دې بیان په څیر دلته د وضعیت تشریح کول اسانه دي: "موږ د هټ سپاټونو غیر متمرکز شبکه غواړو چې په تجهیزاتو کار وکړي چې ماډل یې دمخه نه پیژندل شوی ، د چینلونو له لارې ، مګر کوم چې موږ لاهم نه پوهیږو. اوه، موږ دا ویل هیر کړل، موږ نه یوازې پیرودونکو ته اعلانونه وښایه، بلکې د هغه ځای په شاوخوا کې هر څه تحلیل کړو چیرې چې هټ سپټ نصب شوی. نه، موږ لا تر اوسه نه پوهیږو چې ولې، مګر موږ به دا معلومه کړو، په دې کې شک مه کوئ، موږ د دې نظر سره د دې توان درلود.

او موږ باید هیر نکړو چې د ډیری پخوانیو نامعلومو شرایطو له امله ، کنټرول باید په غیر معیاري شرایطو کې ترسره شي ، کله چې موږ نشو کولی مستقیم د IP: port له لارې روټر سره وصل شو او مجبور یو چې په ساده ډول له دې څخه فعالیت ته انتظار وباسو. که موږ خپل ځان خلاص کړو، د سرور او روټر ترمنځ خبرې اترې د دې په څیر استازیتوب کیدی شي:

  • راوټر: سلام. زه داسې او داسې روټر یم، ایا زما لپاره کوم کار شته؟
  • سیریل: راوټر داسې او داسې، ما تاسو ثبت کړل، چې تاسو ژوندي یاست. دلته ننګونه ده: ماته د ifconfig کمانډ پایله وښایاست؟
  • راوټر: سلام. زه داسې او داسې روټر یم ، وروستی ځل چې تاسو د ifconfig پایله ښودلو غوښتنه کړې وه ، دا دلته دی. ایا زما لپاره کوم کارونه شته؟
  • سیریل: راوټر داسې او داسې، ما تاسو ثبت کړل، چې تاسو ژوندي یاست. ستاسو لپاره هیڅ کار نشته.

تر ټولو په زړه پورې پوښتنه: د لرې پرتو روټر څنګه کولای شي د معلوماتو يوه ټاکلې اندازه واستوي؟ په وروستۍ برخه کې، ما تشریح کړه چې د محدودو سرچینو له امله، روټر یوازې د "سټریپډ ڈاون" ویجټ لري، کوم چې یوازې د GET له لارې کار کوي او نور هیڅ نه؛ د FTP مراجع یا curl شتون نلري. په دقیق ډول، موږ یو نړیوال میتود ته اړتیا لرو، پرته له دې چې د انځور غونډې ځانګړتیاوې په پام کې ونیول شي. ما د wget په کارولو بسیا وکړه. په دقیقه توګه، زه څنګه "دریدلی" - ما په ساده ډول هیڅ انتخاب نه درلود :)

یوازې یو اعلانزما د مدیریت حل کار کوي، ډیر محدود نه دی، او زه ډاډه یم چې دا خرابه ده، حتی که دا زما ډیری پیرودونکو ته مناسب وي. تاسو څنګه دا په هوښیارۍ سره کولی شئ - یو کوچنی افادیت ولیکئ چې د POST بائنری ډیټا د 80 پورټ له لارې لیږي. دا (افادیت) په روټر فرم ویئر کې شامل کړئ او د باش په کارولو سره یې لاسرسی ومومئ. مګر حقیقت دا دی: a) موږ اړتیا لرو ژر تر ژره b) موږ شاید د موجوده "روټرونو زو" کې هرڅه ترسره کولو ته اړتیا ولرو c) "هیڅ زیان مه کوئ!" - که روټر کار کوي او نورې دندې ترسره کوي، هڅه وکړئ داسې بدلونونه رامینځته کړئ چې په موجوده فعالیت اغیزه ونکړي.

راځئ چې پلي کولو ته لاړ شو. راځئ چې ووایو ستاسو پیرودونکی غواړي د "ماوس کلیک" سره په اسانۍ او طبیعي ډول له زبکس څخه روټر ریبوټ کړي. نن به موږ د زبیبکس سره د تطبیق تشریح پیل کړو.
په "ادارې" -> "سکریپټونو" مینو کې، یو نوی سکریپټ اضافه کړئ. موږ دې ته "ریبوټ" وایو، د کمانډ په توګه "php/usr/share/zabbix/reboot.php {HOST.HOST} داخل کړئ.

د پورټ 80 له لارې د لینکس/OpenWrt/Lede وسیلو ریموټ څارنه او کنټرول دوام لري

بل: مینو "څارنه" -> "وروستی ډاټا" -> "د مطلوب شبکې نوډ کې ښیې کلیک وکړئ." دا هغه څه دي چې مینو به د سکریپټ اضافه کولو وروسته ورته ښکاري.

د پورټ 80 له لارې د لینکس/OpenWrt/Lede وسیلو ریموټ څارنه او کنټرول دوام لري
په همدې اساس، موږ د reboot.php سکریپټ په /usr/share/zabbix ډایرکټر کې واچوو (ستاسو ممکن توپیر ولري، زه د زیبکسا روټ ډایرکټر کاروم).

د خوندیتوب اعلانپه سکریپټ کې د توضیحاتو روښانه کولو لپاره ، زه یوازې د روټر ID کاروم ، مګر پټنوم نه کاروم. دا د تولید نسخه کې د دې کولو سپارښتنه نه کیږي! ولې ما دا وکړل: ځکه چې لویه پوښتنه دا ده چې چیرې د روټرونو لپاره پاسورډونه ذخیره کړئ؟ په زبکس کې پخپله د "انوینٹری ډیټا" کې؟ متضاد عمل. په بدیل توګه: پخپله د 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 کمانډ محصول پایله ورکوو
wget "xn--80abgfbdwanb2akugdrd3a2e5gsbj.xn--p1ai/a.php - زموږ د a.php سکریپټ چې روټرونه ثبتوي او له دوی څخه پیغامونه ترلاسه کوي
u= کارن&p= پاسورډ!&m=$پیغام - اعتبار او د غوښتنې متغیر ارزښت m - د $ پیغام متغیر مینځپانګې ټاکي
-O/tmp/out.txt - موږ پدې حالت کې /tmp/out.txt فایل ته محصول ته اړتیا نلرو، مګر که دا پیرامیټر مشخص نه وي، ویجټ کار نه کوي

ولې دا کار نه کوي؟ځکه چې دا یو احتمالي امنیتي سوراخ دی. ترټولو بې ضرره خطا چې پیښ کیدی شي هغه دی که چیرې د مثال په توګه ستاسو د کمانډ په محصول کې "&" کرکټر شتون ولري. له همدې امله ، دا اړینه ده چې دواړه هغه څه فلټر کړئ چې د راوټرونو څخه لیږل کیږي او هرڅه چې سرور ته راځي. هو، زه واقعیا شرمیږم. زما په دفاع کې، زه یوازې دا لیکلی شم چې ټوله مقاله د مخکینۍ ټاکل شوي فرم ویئر او مخابراتي چینلونو سره د روټرونو اداره کولو څرنګوالي ته وقف شوې ده چې مخکې نه تعریف شوي.

ښه، د راتلونکي لپاره پیل: ما تر اوسه معلومه نه ده کړې چې څنګه د معیاري زیبکس وسیلو کارولو لپاره پایلې منعکس کړي (د مثال په توګه، د قوماندې اجرا کولو پایله) چې سرور ته راځي.

زه تاسو ته یادونه کوم چې ټولې سرچینې د Git ذخیره څخه ترلاسه کیدی شي: github.com/BazDen/iotnet.online.git

سرچینه: www.habr.com

Add a comment