Monitoraġġ u ġestjoni mill-bogħod ta' apparati bbażati fuq Linux/OpenWrt/Lede permezz tal-port 80, ikompli

Din hija l-aħħar parti tal-artiklu, hawn hu l-bidu habr.com/en/post/445568
L-aħħar darba li ktibt dwar kif implimentajt il-monitoraġġ tal-apparat, issa se nitkellmu dwar il-ġestjoni. F'diskussjonijiet ma '"tekniċi" min-naħa tal-Klijent, spiss niltaqa' ma 'perċezzjoni limitata tal-kapaċitajiet ta' apparati żgħar bħal dawn (b'riżorsi ta 'memorja u prestazzjoni baxxi), ħafna jemmnu li "l-aktar li għandna bżonn huwa li nibagħtu reboot, għal xi ħaġa aktar serji nibaghtu tim” .
Iżda l-prattika turi li dan mhux għal kollox minnu. Hawnhekk hawn lista żgħira ta' kompiti tipiċi komuni:

  1. Dijanjostika tan-netwerk u soluzzjoni tal-problemi. Wara l-port ethernet tar-router tiegħek normalment ikun hemm biċċa hardware oħra li għandha l-indirizz IP intern tagħha stess. Xi drabi, tista' (għandek) "ping"ha. Jew ġestjoni tal-mina - jekk il-mina f'daqqa ma titlax fuq router li jopera permezz ta 'modem 3G, iżda nistgħu naraw ir-router innifsu.
  2. Manutenzjoni tas-sistema. Aġġornament tal-firmware, aġġornament tal-iskript tas-servizz.
  3. Att ta' bilanċ. Dan jista 'jissejjaħ "perverżjoni", iżda l-kunċett ta' "equilibrist" kif, nikkwota, "l-abbiltà ta' artist taċ-ċirku li jżomm bilanċ f'pożizzjoni instabbli tal-ġisem" - taqbel aħjar. Sitwazzjonijiet bħal dawn jinqalgħu minħabba l-baġit limitat tal-klijent. Hawn taħt tajt ftit eżempji, imma... Mhumiex relatati direttament mat-tema tal-istorja, inpoġġihom fin-noti

Monitoraġġ Wi-FiSuġġett tal-moda għall-aħħar ħames snin, prinċipalment fost il-ktajjen federali tal-bejgħ bl-imnut. Int qed timxi bil-mier fl-art tal-kummerċ, u t-telefon ċellulari tiegħek bil-Wi-Fi mixgħul, f'tentattiv biex "twaħħal" ma 'xi ħajta tan-netwerk, tibgħat regolarment pakketti ta' Talba ta' Probe, li jistgħu jiġu analizzati sabiex tikkalkula għal int: kemm-il darba tiġi f'dan il-maħżen, għal liema raġunijiet? timxi tul trajettorji u l-bqija. Imbagħad id-dejta tinġabar, tiġi analizzata, jitfasslu mapep tas-sħana, u l-maniġers "estort" flus mill-maniġment jew mill-investituri għal stampi bħal dawn. Tajjeb, għalissa.... "m'hemmx flus, imma żomm...", u r-riżultat (reali) diġà jeħtieġ li jintwera, il-kanzunetta l-qadima tajba tibda: "Iva, iva, allura ovvjament aħna se tinstalla s-cis u dak kollu li trid, iżda issa għandna bżonn nuru r-riżultat lill-Klijent! Anzi, insew ngħidu li l-Klijent ippermettilna nikkonnettjaw it-tagħmir tagħna mal-hotspot tiegħu permezz tal-Wi-Fi, iżda fuq bażi ġenerali, bħallikieku konna klijenti mistiedna.” U għalhekk irridu nagħmlu routers tal-ibbilanċjar - jitqajmu diversi subinterfaces WiFi, li wieħed minnhom jeħel mal-hotspot, u t-tieni jimmonitorja l-ambjent, itella' b'mod frenetiku r-riżultat tcpdump għalih innifsu, imbagħad jippakkja l-kontenut tal-fajl f'arkivju u jirriskja li tmut minn "tiekol iżżejjed" jipprova jibża l-kontenut fuq is-server FTP. Mhuwiex sorprendenti li r-router tal-ibbilanċjar ħafna drabi "jkisser" u b'xi mod irid jiġi "resuscitat" mill-bogħod.

raġġHuwa aktar faċli li tiddeskrivi s-sitwazzjoni hawn b'xi ħaġa bħal din id-dikjarazzjoni mill-klijent: “Irridu netwerk deċentralizzat ta’ hotspots li jaħdem fuq tagħmir li l-mudell tiegħu mhux magħruf minn qabel, permezz ta’ kanali, imma liema għadhom ma nafux. Oh, insejt ngħidu, mhux biss irridu nuru r-reklamar lill-klijenti, iżda wkoll nanalizzaw kollox madwar il-post fejn huwa installat il-hotspot. Le, għadna ma nafux għalfejn, imma nifhmuha, tiddubitawx, stajna noħorġu b’din l-idea.”

U ma rridux ninsew li minħabba ħafna ċirkostanzi li qabel ma kinux magħrufa, il-kontroll għandu jitwettaq f'kundizzjonijiet mhux standard, meta ma nistgħux nikkonnettjaw mar-router direttament permezz tal-IP: port u nkunu sfurzati sempliċiment nistennew l-attività minnha. Jekk nastrattw lilna nfusna, id-djalogu bejn is-server u r-router jista 'jiġi rappreżentat hekk:

  • Router: Bongu. Jien router bħal dan, hemm xi kompiti għalija?
  • Server: router tali u tali, I rreġistrati inti, li inti ħaj. Hawn l-isfida: urini r-riżultat tal-kmand ifconfig?
  • Router: Bongu. Jiena tali router, l-aħħar darba li tlabt biex turi r-riżultat ta 'ifconfig, hawn hu. Hemm xi kompiti għalija?
  • Server: router tali u tali, I rreġistrati inti, li inti ħaj. M'hemm l-ebda kompiti għalik.

L-iktar mistoqsija interessanti: kif jista 'router remot jibgħat ċertu ammont ta' informazzjoni? Fl-aħħar parti, iddeskrivejt li minħabba riżorsi limitati, ir-router għandu biss wget "stripped down", li jaħdem biss permezz GET u xejn aktar; m'hemm l-ebda klijent FTP jew curl. B'mod aktar preċiż, għandna bżonn metodu universali, irrispettivament mill-karatteristiċi tal-assemblaġġ tal-immaġni. Iddeċidejt li nuża wget. B'mod aktar preċiż, kif "waqaft" - sempliċement ma kellix għażla :)

Biss ċaħda ta’ responsabbiltàIs-soluzzjoni ta 'ġestjoni tiegħi qed taħdem, mhux limitata ħafna, u jien ċert li hija mgħawweġ, anke jekk taqbel ma' ħafna mill-klijenti tiegħi. Kif tista 'tagħmel dan bil-għaqal - ikteb utilità żgħira li tibgħat data binarja POST permezz tal-port 80. Inkludiha (l-utilità) fil-firmware tar-router u aċċess għaliha billi tuża bash. Iżda r-realtà hija li: a) għandna bżonn malajr b) probabbilment ikollna bżonn nagħmlu kollox fuq iż-“żoo ta’ routers” eżistenti c) “ma tagħmilx ħsara!” — jekk ir-router qed jaħdem u jwettaq kompiti oħra, ipprova agħmel bidliet li ma jaffettwawx il-funzjonalità eżistenti.

Ejja ngħaddu għall-implimentazzjoni. Ejja ngħidu li l-klijent tiegħek irid jerġa 'jibda r-router minn zabbix faċilment u b'mod naturali, bi "ikklikkja tal-maws." Illum se nibdew niddeskrivu l-implimentazzjoni ma' Zabbix.
Fil-menu "Amministrazzjoni" -> "Scripts", żid skript ġdid. Aħna nsejħulu "Reboot", daħħal "php /usr/share/zabbix/reboot.php {HOST.HOST}" bħala kmand

Monitoraġġ u ġestjoni mill-bogħod ta' apparati bbażati fuq Linux/OpenWrt/Lede permezz tal-port 80, ikompli

Li jmiss: Menu "Monitoraġġ" -> "L-aħħar dejta" -> "Ikklikkja bil-lemin fuq in-nodu tan-netwerk mixtieq." Dan huwa kif se jidher il-menu wara li żżid l-iskrittura.

Monitoraġġ u ġestjoni mill-bogħod ta' apparati bbażati fuq Linux/OpenWrt/Lede permezz tal-port 80, ikompli
Għaldaqstant, inpoġġu l-iskrittura reboot.php fid-direttorju /usr/share/zabbix (tiegħek jista 'jkun differenti, jien nuża d-direttorju tal-għeruq zabbixa).

Ċaħda dwar is-SigurtàBiex tagħmel l-ispjegazzjoni aktar ċara fl-iskrittura, nuża biss l-id tar-router, iżda ma nużax il-password. Mhux rakkomandat li tagħmel dan fil-verżjoni tal-produzzjoni! Għaliex għamilt dan: għax il-mistoqsija l-kbira hija fejn taħżen il-passwords għar-routers? Fiż-zabbixe stess f’“inventory data”? Prattika kontroversjali. Alternattivament: tirrestrinġi l-aċċess estern għall-fajl reboot.php innifsu

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

Dak kollox. Il-mistoqsija tibqa 'miftuħa: "kif tikseb ir-riżultat tal-eżekuzzjoni ta' kmand mill-apparat." Ejja nħarsu lejn il-kompitu billi tuża l-kmand ifconfig bħala eżempju. Dan il-kmand jista' jintbagħat lill-apparat:

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

, fejn:
message=`ifconfig` — aħna jassenjaw ir-riżultat tal-output tal-kmand ifconfig lill-varjabbli $message
wget "xn--80abgfbdwanb2akugdrd3a2e5gsbj.xn--p1ai/a.php — l-iskript tagħna a.php li jirreġistra r-routers u jirċievi messaġġi minnhom
u=utent&p=password!&m=$messagg — kredenzjali u l-valur tal-varjabbli tat-talba m — jassenja l-kontenut tal-varjabbli $message
-O /tmp/out.txt — m'għandniex bżonn output għall-fajl /tmp/out.txt f'dan il-każ, imma jekk dan il-parametru ma jkunx speċifikat, wget ma jaħdimx

Għaliex dan ma jaħdimx?Minħabba li hija toqba potenzjali tas-sigurtà. L-iżball l-aktar li ma jagħmilx ħsara li jista 'jiġri huwa jekk, pereżempju, ikun hemm karattru "&" fl-output tal-kmand tiegħek. Għalhekk, huwa meħtieġ li jiġi ffiltrat kemm dak kollu li jintbagħat mir-routers kif ukoll dak kollu li jiġi lis-server. Iva, jien mistħija, tassew. Fid-difiża tiegħi, nista 'nikteb biss li l-artikolu kollu huwa ddedikat għal kif timmaniġġja r-routers b'firmware definiti minn qabel u kanali ta' komunikazzjoni li mhumiex definiti minn qabel.

Ukoll, bidu għall-futur: għadni ma dehretx kif nuża għodod standard zabbix biex tirrifletti r-riżultati (per eżempju, ir-riżultat ta 'eżekuzzjoni ta' kmand) li jaslu għas-server.

Infakkarkom li s-sorsi kollha jistgħu jinkisbu mir-repożitorju Git fuq: github.com/BazDen/iotnet.online.git

Sors: www.habr.com

Żid kumment