Ang hilit nga pag-monitor ug pagkontrol sa Linux/OpenWrt/Lede nga mga himan pinaagi sa port 80, nagpadayon

Kini ang kataposang bahin sa artikulo, ania ang sinugdanan habr.com/en/post/445568
Sa miaging higayon nga akong gisulat kung giunsa nako gipatuman ang pag-monitor sa aparato, karon maghisgot kami bahin sa pagdumala. Sa mga diskusyon sa "techies" sa bahin sa Kustomer, kanunay nakong nahimamat ang usa ka limitado nga panan-aw sa mga kapabilidad sa ingon nga gagmay nga mga aparato (nga adunay ubos nga mga kapanguhaan sa panumduman ug pasundayag), daghan ang nagtuo nga "ang labing kadaghan nga kinahanglan namon mao ang pagpadala usa ka reboot. , alang sa usa ka butang nga mas seryoso - magpadala kami usa ka brigada" .
Apan gipakita sa praktis nga dili kini bug-os nga tinuod. Ania ang usa ka gamay nga lista sa kasagaran nga mga buluhaton:

  1. Mga diagnostic sa network ug pag-troubleshoot. Sa luyo sa ethernet port sa imong router, ang laing piraso sa puthaw kasagaran "nabuhi", nga adunay kaugalingong internal ip-address. Usahay, mahimo (kinahanglan) kini "pag-ping". O pagdumala sa tunnel - kung ang tunel kalit nga dili mobangon sa router nga nagtrabaho pinaagi sa 3G modem, apan atong makita ang router mismo.
  2. Serbisyo sa sistema. Pag-update sa firmware, pag-upgrade sa mga script sa serbisyo.
  3. Mga ekwilibristika. Mahimo kining tawgon nga "mga perversions", apan ang konsepto sa "tightrope walker" ingon, akong gikutlo, "ang abilidad sa usa ka sirkus nga tigpasundayag sa pagpadayon sa balanse sa usa ka dili lig-on nga posisyon sa lawas" - mas mohaum. Ang ingon nga mga sitwasyon mitungha tungod sa limitado nga badyet sa kustomer. Naghatag ako usa ka magtiayon nga mga pananglitan sa ubos, apan sukad wala silay diretso nga kalambigitan sa topiko sa istorya, gibutang ko sila sa mga nota

pagmonitor sa wifiUsa ka uso nga hilisgutan sa miaging lima ka tuig, nag-una sa mga pederal nga retail chain. Hinay-hinay ka nga naglakaw libot sa mga salog sa pamatigayon, ug ang imong mobile phone nga adunay Wi-Fi nga gi-on, sa pagsulay nga "magtapot" sa pipila nga hilo sa network, kanunay nga nagpadala sa mga pakete sa Probe Request nga mahimong analisahon aron makalkulo alang kanimo : unsa ka subsob nga moadto ka niini nga tindahan, alang sa unsa nga mga trajectory ang imong gilakaw ug uban pa. Dugang pa, ang mga datos gikolekta, gisusi, ang mga mapa sa kainit gikuha, ug ang mga manedyer "nag-knock out" sa kwarta gikan sa management o mga tigpamuhunan alang sa maong mga hulagway. Sa kasamtangan .... "walay kwarta, apan nagkupot ka ...", ug ang resulta (tinuod) kinahanglan nga ipakita na, ang maayo nga karaan nga kanta "Oo, oo, unya siyempre kita mag-supply og ciscos ug bisan unsa ang imong gusto, apan karon kinahanglan namong ipakita sa Customer ang resulta! Pinaagi sa dalan, sila nakalimot sa pag-ingon nga ang Customer nagtugot sa atong mga ekipo nga konektado sa iyang hotspot pinaagi sa Wi-Fi, apan sa usa ka kinatibuk-ang basehan, sama nga kon kita bisita kliyente. Ug karon kinahanglan nimo nga maghimo mga equilibrist nga mga router - daghang mga subinterface sa WiFi ang mobangon, ang usa niini nagkupot sa hotspot, ug ang ikaduha nag-monitor sa palibot, nahadlok nga gidiskarga ang sangputanan sa tcpdump sa iyang kaugalingon, dayon giputos ang sulud sa file sa usa ka archive ug mga risgo nga mamatay tungod sa "sobra nga pagkaon" nga naningkamot sa pagluwa sa sulod ngadto sa ftp server. Dili ikatingala nga ang equilibrist router kanunay nga "naguba" ug sa usa ka paagi kinahanglan nga "reanimate" sa layo.

RadyosDinhi mas sayon ​​ang paghulagway sa sitwasyon sa usa ka butang nga sama niini nga pahayag sa kustomer: "Gusto namon ang usa ka desentralisado nga network sa mga hotspot nga magamit sa mga kagamitan kansang modelo wala mahibal-an daan, pinaagi sa mga kanal, apan kung unsa ang wala pa namon nahibal-an. Oh, nakalimot kami sa pag-ingon, dili lamang kami gusto nga magpakita sa mga ad sa mga kustomer, apan pag-analisar usab ang tanan sa palibot sa site sa pag-install sa hotspot. Dili, wala pa kami nahibal-an kung ngano, apan buhaton namon kini, ayaw pagduha-duha, nakahimo kami sa kini nga ideya. ”

Ug dili nato kalimtan nga tungod sa daghang dili sigurado nga mga kahimtang nga abante, ang pagdumala kinahanglan nga himuon sa dili standard nga mga kondisyon, kung dili kita makakonekta sa router direkta pinaagi sa ip: port ug napugos nga maghulat lang nga makita ang kalihokan gikan sa. kini. Kung kita abstract, nan ang dayalogo tali sa server ug sa router mahimong irepresentar sama niini:

  • Router: Hello. Ako mao ug ingon niana nga router, aduna bay mga buluhaton alang kanako?
  • Server: ingon ug ingon niana nga router, girehistro ko ikaw nga buhi ka. Ania ang hagit: ipakita kanako ang output sa ifconfig command?
  • Router: Hello. Ako usa ka router, sa miaging higayon nga gihangyo nimo nga ipakita ang resulta sa ifconfig, ania na. Aduna bay mga buluhaton alang kanako?
  • Server: ingon ug ingon niana nga router, girehistro ko ikaw nga buhi ka. Walay mga buluhaton alang kanimo.

Ang labing makapaikag nga pangutana mao: sa unsang paagi ang usa ka hilit nga router magpadala usa ka piho nga kantidad sa kasayuran? Sa katapusan nga bahin, akong gihulagway nga tungod sa limitado nga mga kapanguhaan, ang router adunay usa lamang ka "gihuboan" nga wget nga magamit lamang pinaagi sa GET ug wala nay lain, walay ftp client o curl. Mas tukma, kinahanglan nato ang usa ka unibersal nga paagi, bisan unsa pa ang mga bahin sa asembliya sa imahe. Nagpuyo ko sa paggamit sa wget. Mas tukma, kung giunsa "nahunong" - wala lang koy kapilian 🙂

Pag-reserba dayonAng akong solusyon sa pagdumala nagtrabaho, dili kaayo limitado, ug sigurado ako nga kini hiwi, bisan kung kini angay sa kadaghanan sa akong mga kostumer. Sa unsang paagi mahimo kini nga maalamon - pagsulat og gamay nga utility nga nagpadala sa binary data pinaagi sa POST pinaagi sa ika-80 nga pantalan. Iapil kini (utility) sa firmware sa router ug gamita ang bash aron ma-access kini. Apan ang tinuod mao nga: a) kinahanglan nimo nga dali b) tingali kinahanglan nimo nga buhaton ang tanan sa naglungtad nga "zoo sa mga routers" c) "dili makadaot!" - kung ang router nagtrabaho ug naghimo sa ubang mga buluhaton, sulayi paghimo ang mga pagbag-o nga dili makaapekto sa naa na nga pagpaandar.

Mopadayon kita sa pagpatuman. Ingnon ta nga gusto sa imong kustomer gikan sa zabbix nga i-reboot ang router nga dali ug natural, nga adunay "pag-klik sa mouse". Karon magsugod kita sa paghulagway sa pagpatuman sa zabbix.
Sa menu nga "Administrasyon" -> "Mga script" pagdugang usa ka bag-ong script. Gitawag namo kini nga "Reboot", isip sugo nga among gisulat "php /usr/share/zabbix/reboot.php {HOST.HOST}"

Ang hilit nga pag-monitor ug pagkontrol sa Linux/OpenWrt/Lede nga mga himan pinaagi sa port 80, nagpadayon

Sunod: Menu "Pag-monitor" -> "Latest data" -> "Pag-right-click sa gusto nga host". Ingon niini ang hitsura sa menu pagkahuman idugang ang script.

Ang hilit nga pag-monitor ug pagkontrol sa Linux/OpenWrt/Lede nga mga himan pinaagi sa port 80, nagpadayon
Subay niini, among gibutang ang reboot.php script sa /usr/share/zabbix directory (kini mahimong lahi alang kanimo, gigamit nako ang zabbixa root directory).

Pagsalikway sa kaluwasanAlang sa katin-aw sa katin-awan sa script, gigamit ra nako ang id sa router, apan ayaw gamita ang password. Sa nagtrabaho nga bersyon, dili kini girekomenda! Ngano nga gibuhat ko kini: tungod kay ang dako nga pangutana kung asa ibutang ang mga password alang sa mga router? Sa zabbixe mismo sa "imbentaryo"? Nagkasumpaki nga praktis. Isip usa ka kapilian: i-restrict ang external access sa reboot.php file mismo

reboot.php file

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

Actually tanan. Ang pangutana nga "unsaon makuha ang resulta sa pagpatuman sa command gikan sa kilid sa device" nagpabiling bukas. Atong tagdon ang buluhaton gamit ang ifconfig command isip pananglitan. Ang mosunod nga sugo mahimong ipadala ngadto sa device:

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

, diin:
mensahe = `ifconfig` - gi-assign namo ang resulta sa output sa ifconfig command sa $message variable
wget"xn--80abgfbdwanb2akugdrd3a2e5gsbj.xn--p1ai/a.php - ang among a.php script nga nagparehistro sa mga router ug nakadawat og mga mensahe gikan kanila
u=user&p=password!&m=$mensahe - mga kredensyal ug ang bili sa pangutana nga variable m - nag-assign sa mga sulod sa $message variable
-O /tmp/out.txt - wala namo kinahanglana ang output sa /tmp/out.txt nga file niini nga kaso, apan kung kini nga parameter wala matino, ang wget dili molihok

Ngano nga kini molihok nga sayupTungod kay kini usa ka potensyal nga lungag sa seguridad. ang labing dili makadaot nga sayup nga mahimong mahitabo kung ang output sa imong mando, pananglitan, adunay simbolo nga "&". Busa, gikinahanglan nga i-filter ang tanan nga gipadala gikan sa mga routers ug ang tanan nga moabut sa server. Oo, naulaw gyud ko. Sa akong depensa, mahimo ra nako isulat nga ang tibuuk nga artikulo gipahinungod kung giunsa pagdumala ang mga router nga adunay dili matino nga firmware, nga adunay dili matino nga mga agianan sa komunikasyon.

Aw, natandog ko ang umaabot: Wala pa nako nahibal-an kung giunsa pagpakita ang mga resulta (pananglitan, ang resulta sa usa ka command execution) nga moabut sa server gamit ang standard zabbix tools.

Gipahinumdoman ko ikaw nga ang tanan nga mga gigikanan mahimong makuha gikan sa Git repository sa: github.com/BazDen/iotnet.online.git

Source: www.habr.com

Idugang sa usa ka comment