Ferniwwerwaachung a Gestioun vu Linux / OpenWrt / Lede baséiert Geräter iwwer Port 80, weider

Dëst ass de leschten Deel vum Artikel, hei ass den Ufank habr.com/en/post/445568
Déi lescht Kéier hunn ech geschriwwen wéi ech Apparat Iwwerwachung implementéiert hunn, elo wäerte mir iwwer Gestioun schwätzen. An Diskussioune mat "Techniker" op der Säit vum Client begéinen ech dacks eng limitéiert Perceptioun vun de Fäegkeeten vun esou klengen Apparater (mat wéineg Erënnerungsressourcen a Leeschtung), vill gleewen datt "dat meeschte mir brauchen ass e Restart ze schécken, fir eppes méi eescht, mir schécken eng Equipe“ .
Awer d'Praxis weist datt dëst net ganz richteg ass. Hei ass eng kleng Lëscht vun allgemeng typesch Aufgaben:

  1. Netzwierk Diagnostik a Problembehandlung. Hannert dem Ethernet Hafen vun Ärem Router gëtt et normalerweis en anert Stéck Hardware déi seng eege intern IP Adress huet. Heiansdo kënnt Dir (soll) et "pinge". Oder Tunnelmanagement - wann den Tunnel op eemol net op engem Router eropgeet, deen iwwer en 3G Modem funktionnéiert, awer mir kënnen de Router selwer gesinn.
  2. System Ënnerhalt. Firmware Update, Service Skript Upgrade.
  3. Gläichgewiicht Akt. Dëst kéint "Perversioun" genannt ginn, awer d'Konzept vun "Equilibrist" wéi, ech zitéieren, "d'Fäegkeet vun engem Zirkusartist fir d'Gläichgewiicht an enger onbestänneger Kierperpositioun ze halen" - passt besser. Esou Situatiounen entstinn wéinst dem limitéierten Budget vum Client. Hei ënnen hunn ech e puer Beispiller ginn, awer ... Si sinn net direkt mam Thema vun der Geschicht verbonnen, ech hunn se an den Noten gesat

Wi-Fi IwwerwachungE fashionable Thema fir déi lescht fënnef Joer, haaptsächlech ënner Féderalen Retail Ketten. Dir trëppelt gemittlech duerch d'Handelsflächen, an Ären Handy mat Wi-Fi ageschalt, an engem Versuch un e puer Fuedem vum Netz ze "hänken", schéckt regelméisseg Probe Request Päckchen, déi analyséiert kënne ginn fir ze berechnen. Dir: wéi oft kommt Dir an dëse Buttek, aus wéi enge Grënn, gitt Dir laanscht Trajectoiren a sou weider. Da ginn d'Donnéeë gesammelt, analyséiert, Hëtztkaarte gezeechent, a Manager "extortéieren" Sue vu Gestioun oder Investisseuren fir sou Biller. Ma, fir de Moment... "Et gëtt keng Suen, mee du haalt ...", an d'Resultat (richteg) muss scho gewisen ginn, fänkt dat gutt aalt Lidd un: "Jo, jo, dann natierlech mir wäert den cis installéieren an alles wat Dir wëllt, awer elo musse mir dem Client d'Resultat weisen! Iwwregens hu mir vergiess ze soen datt de Client eis erlaabt huet eis Ausrüstung iwwer Wi-Fi op säin Hotspot ze verbannen, awer allgemeng, grad wéi wa mir Gaaschtcliente wieren. An dofir musse mir Equilibratiounsrouter maachen - verschidde WiFi-Subinterfaces ginn opgehuewen, eng vun deenen un den Hotspot hänken, an déi zweet iwwerwaacht d'Ëmwelt, lued frantesch d'tcpdump-Resultat op sech selwer erop, packt dann den Inhalt vun der Datei an en Archiv a riskéiert stierwen vun "Iwweriesen" probéiert den Inhalt op der FTP Server ze späizen. Et ass net iwwerraschend datt de Balance Router dacks "zerbrach" an iergendwéi op afstand "reaniméiert" muss ginn.

RadiusEt ass méi einfach d'Situatioun hei ze beschreiwen mat sou eppes wéi dës Ausso vum Client: "Mir wëllen en dezentraliséierten Netzwierk vun Hotspots, déi op Ausrüstung funktionnéieren, deem säi Modell net am Viraus bekannt ass, iwwer Kanäl, awer wéi eng mir nach net wëssen. Oh, mir hu vergiess ze soen, mir wëllen net nëmmen Reklammen u Clienten weisen, awer och alles analyséieren ronderëm d'Plaz wou den Hotspot installéiert ass. Nee, mir wëssen nach net firwat, awer mir wäerten et erausfannen, bezweifelt et net, mir konnten op dës Iddi kommen.

A mir däerfen net vergiessen datt wéinst ville bis elo onbekannte Ëmstänn, Kontroll muss an net-Standardbedéngungen duerchgefouert ginn, wa mir net direkt mam Router iwwer den IP: Hafen verbannen kënnen a gezwongen sinn einfach op Aktivitéit dovunner ze waarden. Wa mir eis abstrahéieren, kann den Dialog tëscht dem Server an dem Router esou duergestallt ginn:

  • Router: Hallo. Ech sinn esou e Router, ginn et Aufgaben fir mech?
  • Server: Router esou an esou, Ech registréiert Iech, datt Dir lieweg. Hei ass d'Erausfuerderung: weisen mir d'Resultat vum ifconfig Kommando?
  • Router: Hallo. Ech sinn esou an esou e Router, déi leschte Kéier wou Dir gefrot hutt d'Resultat vun ifconfig ze weisen, hei ass et. Ginn et Aufgaben fir mech?
  • Server: Router esou an esou, Ech registréiert Iech, datt Dir lieweg. Et gi keng Aufgaben fir Iech.

Déi interessantst Fro: wéi kann e Fernrouter eng gewësse Quantitéit un Informatioun schécken? Am leschten Deel hunn ech beschriwwen datt wéinst limitéierter Ressourcen de Router nëmmen e "gestrippte" Wget huet, deen nëmmen iwwer GET funktionnéiert an näischt anescht; et gëtt kee FTP Client oder Curl. Méi präzis brauche mir eng universell Method, onofhängeg vun de Fonctiounen vun der Bildmontage. Ech hu mech decidéiert wget ze benotzen. Méi präzis, wéi ech "opgehalen" hunn - ech hat einfach keng Wiel :)

Just eng VerzichterklärungMeng Gestioun Léisung funktionnéiert, net ganz limitéiert, an ech si sécher datt et kromm ass, och wann et déi meescht vu menge Clienten passt. Wéi konnt Dir et clever maachen - schreift e klengen Utility deen POST binär Daten duerch den Hafen 80 schéckt. Schreift et (d'Utility) an der Router Firmware an Zougang et mat Bash. Awer d'Realitéit ass datt: a) mir musse séier b) mir musse méiglecherweis alles am existente "Zoo of Router" maachen c) "kee schueden!" - wann de Router funktionnéiert an aner Aufgaben ausféiert, probéiert Ännerungen ze maachen déi net déi existent Funktionalitéit beaflossen.

Loosst eis op d'Ëmsetzung goen. Loosst eis soen datt Äre Client de Router vum Zabbix einfach an natierlech wëllt nei starten, mat engem "Klick vun der Maus." Haut fänken mir un d'Ëmsetzung mat Zabbix ze beschreiwen.
Am Menü "Administratioun" -> "Skripten", füügt en neit Skript derbäi. Mir nennen et "Reboot", gitt "php /usr/share/zabbix/reboot.php {HOST.HOST}" als Kommando

Ferniwwerwaachung a Gestioun vu Linux / OpenWrt / Lede baséiert Geräter iwwer Port 80, weider

Nächst: Menu "Iwwerwaachung" -> "Lescht Donnéeën" -> "Rietsklickt op de gewënschten Netzwierk Node." Dëst ass wéi de Menü ausgesäit nodeems de Skript bäigefüügt gouf.

Ferniwwerwaachung a Gestioun vu Linux / OpenWrt / Lede baséiert Geräter iwwer Port 80, weider
Deementspriechend setzen mir de reboot.php Skript am /usr/share/zabbix Verzeichnis (Är kann anescht sinn, ech benotzen den Zabbixa Root Verzeichnis).

Sécherheet VerzichterklärungFir d'Erklärung méi kloer am Skript ze maachen, benotzen ech nëmmen d'Router-ID, awer benotzen d'Passwuert net. Et ass net recommandéiert dëst an der Produktioun Versioun ze maachen! Firwat hunn ech dat gemaach: well déi grouss Fro ass wou Passwierder fir Router späicheren? An zabbixe selwer an "Inventar Daten"? Kontroversial Praxis. Alternativ: den externen Zougang zu der reboot.php Datei selwer beschränken

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

Dat ass alles. D'Fro bleift oppen: "wéi kritt een d'Resultat vun der Ausféierung vun engem Kommando vum Apparat." Loosst eis d'Aufgab kucken mat dem ifconfig Kommando als Beispill. Dëse Kommando kann op den Apparat geschéckt ginn:

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

, wou:
message=`ifconfig` - mir ginn d'Resultat vum ifconfig Kommandoausgang un d'$Message Variabel zou
wget"xn--80abgfbdwanb2akugdrd3a2e5gsbj.xn--p1ai/a.php - eisen a.php Skript deen Router registréiert a Messagen vun hinnen kritt
u=Benotzer&p=Passwuert!&m=$Message - Umeldungsinformatiounen an de Wäert vun der Ufro Variabel m - gëtt den Inhalt vun der $message Variabel zou
-O /tmp/out.txt - Mir brauche keng Ausgang op d'Datei /tmp/out.txt an dësem Fall, awer wann dëse Parameter net spezifizéiert ass, funktionnéiert wget net

Firwat funktionnéiert dat net?Well et ass e potenziell Sécherheetsloch. De harmlosste Feeler dee ka geschéien ass wann zum Beispill e "&" Charakter an der Ausgab vun Ärem Kommando ass. Dofir ass et néideg souwuel alles ze filteren wat vu Router geschéckt gëtt an alles wat op de Server kënnt. Jo, ech schummen mech wierklech. A menger Verteidegung kann ech nëmme schreiwen datt de ganzen Artikel gewidmet ass wéi Dir Router mat pre-definéiert Firmware a Kommunikatiounskanäl verwalten, déi net am Viraus definéiert sinn.

Gutt, e Start fir d'Zukunft: Ech hunn nach net erausfonnt wéi Standard Zabbix Tools benotze fir d'Resultater ze reflektéieren (zum Beispill d'Resultat vun der Ausféierung vun engem Kommando) déi op de Server kommen.

Ech erënneren Iech datt all Quelle vum Git Repository op: github.com/BazDen/iotnet.online.git

Source: will.com

Setzt e Commentaire