Siveyans ak jesyon adistans nan aparèy ki baze sou Linux/OpenWrt/Lede atravè pò 80, kontinye

Sa a se pati final la nan atik la, isit la se kòmansman an habr.com/en/post/445568
Dènye fwa mwen te ekri sou fason mwen te aplike siveyans aparèy, kounye a nou pral pale sou jesyon. Nan diskisyon ak "teknisyen" sou bò Kliyan an, mwen souvan rankontre yon pèsepsyon limite nan kapasite yo nan aparèy sa yo ti (ak resous memwa ki ba ak pèfòmans), anpil moun kwè ke "pi plis nan nou bezwen se voye yon rdemare, pou yon bagay plis. serye nap voye yon ekip” .
Men, pratik montre ke sa a se pa totalman vre. Men yon ti lis travay tipik komen yo:

  1. Diagnostik rezo ak depanaj. Dèyè pò Ethernet routeur ou a anjeneral gen yon lòt pyès ki nan konpitè ki gen pwòp adrès IP entèn li yo. Pafwa, ou ka (ta dwe) "ping" li. Oswa jesyon tinèl - si tinèl la toudenkou pa monte sou yon routeur opere atravè yon modèm 3G, men nou ka wè routeur la tèt li.
  2. Antretyen sistèm lan. Mizajou mikrolojisyèl, ajou sèvis script.
  3. Balanse zak. Sa a ta ka rele "pervèsyon", men konsèp nan "ekilibs" kòm, mwen site, "kapasite yon sirk pou kenbe balans nan yon pozisyon kò enstab" - anfòm pi byen. Sitiyasyon sa yo rive akòz bidjè limite kliyan an. Anba a mwen te bay kèk egzanp, men... Yo pa gen rapò dirèkteman ak tèm istwa a, mwen mete yo nan nòt yo

Siveyans Wi-FiYon sijè alamòd pou senk dènye ane yo, sitou nan mitan chèn federal Yo Vann an Detay. Ou ap pwonmennen nan etaj komès yo, epi telefòn mobil ou ak Wi-Fi limen, nan yon tantativ pou "bwason" nan kèk fil nan rezo a, regilyèman voye pake demann Sond, ki ka analize yo nan lòd yo kalkile pou ou: konbyen fwa ou vin nan magazen sa a, pou ki rezon ou mache sou trajectoire ak sou sa. Lè sa a, done yo kolekte, analize, kat chalè yo trase, ak administratè yo "ekstòde" lajan nan men jesyon oswa envestisè pou foto sa yo. Oke, pou kounye a.... "pa gen okenn lajan, men ou kenbe sou ...", ak rezilta a (reyèl) deja bezwen yo dwe montre, bon ansyen chante a kòmanse: "Wi, wi, Lè sa a, nan kou nou. pral enstale cis la ak tout sa ou vle, men kounye a nou bezwen montre Kliyan an rezilta a! By wout la, nou bliye di ke Kliyan an pèmèt nou konekte ekipman nou an ak hotspot li atravè Wi-Fi, men sou yon baz jeneral, menm jan si nou te kliyan envite." Se konsa, nou dwe fè routeurs balanse - plizyè subinterfaces WiFi yo leve soti vivan, youn nan ki rete kole sou otspo a, ak dezyèm lan kontwole anviwònman an, fòlman Uploads rezilta a tcpdump nan tèt li, Lè sa a, pake sa ki nan dosye a nan yon achiv ak risk. mouri nan "manje twòp" eseye krache soti sa ki sou sèvè a FTP. Li pa etone ke routeur la balanse souvan "kraze" ak yon jan kanmenm gen yo dwe "resisite" adistans.

reyonLi pi fasil pou dekri sitiyasyon an isit la ak yon bagay tankou deklarasyon sa a soti nan kliyan an: "Nou vle yon rezo desantralize nan otspo ki ta travay sou ekipman ki gen modèl yo pa konnen davans, atravè chanèl, men kiyès nou poko konnen. Oh, nou bliye di, nou pa sèlman vle montre piblisite bay kliyan, men tou, analize tout bagay alantou kote otspo a enstale. Non, nou poko konnen poukisa, men nou pral kalkile li, pa gen dout, nou te kapab vini ak lide sa a."

Epi nou pa dwe bliye ke akòz yon anpil nan sikonstans deja enkoni, kontwòl yo dwe te pote soti nan kondisyon ki pa estanda, lè nou pa ka konekte nan routeur la dirèkteman atravè IP: pò a epi yo fòse yo tou senpleman rete tann pou aktivite soti nan li. Si nou abstrè tèt nou, dyalòg ki genyen ant sèvè a ak routeur la ka reprezante konsa:

  • Routeur: Bonjou. Mwen se tankou yon routeur, èske gen nenpòt travay pou mwen?
  • Sèvè: routeur sa yo ak sa yo, mwen anrejistre ou, ke ou vivan. Men defi a: montre m rezilta kòmandman ifconfig la?
  • Routeur: Bonjou. Mwen se tankou yon routeur, dènye fwa ou te mande yo montre rezilta a nan ifconfig, isit la li ye. Èske gen nenpòt travay pou mwen?
  • Sèvè: routeur sa yo ak sa yo, mwen anrejistre ou, ke ou vivan. Pa gen okenn travay pou ou.

Kesyon ki pi enteresan an: ki jan yon routeur aleka ka voye yon sèten kantite enfòmasyon? Nan dènye pati a, mwen te dekri ke akòz resous limite, routeur la gen sèlman yon "dezabiye" wget, ki travay sèlman atravè GET e pa gen anyen lòt; pa gen okenn kliyan FTP oswa boukle. Plis jisteman, nou bezwen yon metòd inivèsèl, kèlkeswa karakteristik yo nan asanble imaj. Mwen deside itilize wget. Plis jisteman, ki jan mwen "sispann" - mwen tou senpleman pa te gen okenn chwa :)

Jis yon non responsabilite nouSolisyon jesyon mwen an ap travay, pa trè limite, e mwen sèten li kwochi, menm si li kostim pi fò nan kliyan mwen yo. Ki jan ou ta ka fè li avèk sajès - ekri yon ti sèvis piblik ki voye done binè POST nan pò 80. Mete li (utilite a) nan firmwèr routeur la epi jwenn aksè nan li lè l sèvi avèk bash. Men, reyalite a se ke: a) nou bezwen byen vit b) pwobableman nou bezwen fè tout bagay sou "zou nan routeurs" ki egziste deja c) "pa fè okenn mal!" — si routeur la ap travay ak fè lòt travay, eseye fè chanjman ki pa pral afekte fonksyonalite ki egziste deja.

Ann ale nan aplikasyon an. Ann di kliyan ou vle rdemare routeur la soti nan zabbix fasil epi natirèlman, ak yon "klik sourit la." Jodi a nou pral kòmanse dekri aplikasyon an ak Zabbix.
Nan meni "Administrasyon" -> "Scripts", ajoute yon nouvo script. Nou rele li "Rdemare", antre "php /usr/share/zabbix/reboot.php {HOST.HOST}" kòm yon lòd.

Siveyans ak jesyon adistans nan aparèy ki baze sou Linux/OpenWrt/Lede atravè pò 80, kontinye

Pwochen: Meni "Siveyans" -> "Dènye done" -> "Dwa-klike sou ne rezo a vle." Men ki jan meni an pral sanble apre ajoute script la.

Siveyans ak jesyon adistans nan aparèy ki baze sou Linux/OpenWrt/Lede atravè pò 80, kontinye
An konsekans, nou mete script reboot.php nan /usr/share/zabbix anyè (ou ka diferan, mwen itilize anyè rasin zabbixa).

Limit responsabilite nou sou sekiritePou fè eksplikasyon an pi klè nan script la, mwen sèlman itilize id routeur la, men pa sèvi ak modpas la. Li pa rekòmande pou fè sa nan vèsyon pwodiksyon an! Poukisa mwen te fè sa: paske gwo kesyon an se ki kote yo estoke modpas pou routeurs? Nan zabbixe tèt li nan "done envantè"? Pratik kontwovèsyal. Altènativman: mete restriksyon sou aksè ekstèn nan dosye a reboot.php tèt li

File 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();
?>

Se tout. Kesyon an rete louvri: "ki jan yo jwenn rezilta a nan egzekite yon kòmandman nan aparèy la." Ann gade nan travay la lè l sèvi avèk lòd ifconfig la kòm yon egzanp. Kòmand sa a ka voye bay aparèy la:

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

, kote:
mesaj=`ifconfig` — nou bay rezilta pwodiksyon lòd ifconfig nan varyab $message
wget"xn--80abgfbdwanb2akugdrd3a2e5gsbj.xn--p1ai/a.php — script a.php nou an ki anrejistre routeurs ak resevwa mesaj nan men yo
u=itilizatè&p=modpas!&m=$mesaj — kalifikasyon yo ak valè varyab demann lan m — bay sa ki nan varyab $mesaj la
-O /tmp/out.txt - nou pa bezwen pwodiksyon nan dosye /tmp/out.txt nan ka sa a, men si paramèt sa a pa espesifye, wget pa travay

Poukisa sa pa mache?Paske li se yon twou sekirite potansyèl. Erè ki pi inofansif ki ka rive se si, pou egzanp, gen yon karaktè "&" nan pwodiksyon an nan lòd ou a. Se poutèt sa, li nesesè filtre tou de tout bagay ki voye soti nan routeurs ak tout bagay ki vini nan sèvè a. Wi, mwen wont, reyèlman. Nan defans mwen, mwen ka sèlman ekri ke atik la tout antye konsakre nan ki jan yo jere routeurs ak firmwèr pre-defini ak chanèl kominikasyon ki pa defini davans.

Oke, yon kòmansman pou lavni an: mwen poko kalkile ki jan yo sèvi ak zouti estanda zabbix yo reflete rezilta yo (pa egzanp, rezilta a nan egzekite yon lòd) ki vini nan sèvè a.

Mwen raple ou ke tout sous yo ka jwenn nan depo Git la nan: github.com/BazDen/iotnet.online.git

Sous: www.habr.com

Add nouvo kòmantè