Ngawaskeun jarak jauh sareng kadali alat Linux / OpenWrt / Lede via port 80, terus

Ieu mangrupikeun bagian ahir tulisan, ieu mangrupikeun awal habr.com/en/post/445568
Panungtungan waktu kuring nulis ngeunaan kumaha kuring dilaksanakeun ngawaskeun alat, ayeuna urang bakal ngobrol ngeunaan manajemén. Dina diskusi sareng "teknisi" di sisi Pelanggan, kuring sering mendakan persépsi kawates ngeunaan kamampuan alat-alat leutik sapertos kitu (kalayan daya memori sareng kinerja anu rendah), seueur anu yakin yén "paling kami peryogikeun nyaéta ngirim reboot, pikeun hal anu langkung seueur. serius urang kirimkeun tim” .
Tapi prakték nunjukkeun yén ieu sanés leres-leres leres. Ieu daptar leutik tugas umum:

  1. Diagnostik jaringan sareng ngungkulan. Di tukangeun port ethernet router anjeun biasana aya sapotong hardware anu ngagaduhan alamat IP internal sorangan. Sakapeung, anjeun tiasa (kedah) "ping" éta. Atawa manajemén torowongan - lamun torowongan dumadakan teu naek dina router operasi via modem 3G, tapi urang bisa ningali router sorangan.
  2. pangropéa Sistim. Pembaruan firmware, pamutahiran naskah jasa.
  3. Tindakan balancing. Ieu bisa disebut "perversion", tapi konsép "equilibrist" salaku, kuring cutatan, "kamampuhan pamaén sirkus pikeun ngajaga kasaimbangan dina posisi awak teu stabil" - fits hadé. Kaayaan sapertos kitu timbul kusabab anggaran terbatas palanggan. Di handap ieu kuring masihan sababaraha conto, tapi ... Éta henteu langsung patali jeung téma carita, kuring nempatkeun aranjeunna dina catetan

ngawaskeun Wi-FiTopik anu modis salami lima taun ka pengker, utamina diantara ranté ritel féderal. Anjeun leisurely strolling ngaliwatan lanté dagang, sarta handphone anjeun kalawan Wi-Fi dihurungkeun, dina usaha pikeun "nempel" kana sababaraha thread tina jaringan, rutin ngirim kaluar pakét Probe Request, nu bisa dianalisis dina urutan keur ngitung. anjeun: sabaraha sering anjeun datang ka toko ieu, naon alesan anjeun leumpang sapanjang lintasan jeung saterusna. Lajeng data dikumpulkeun, dianalisis, peta panas digambar, sarta manajer "extort" duit ti manajemén atawa investor pikeun gambar misalna. Muhun, pikeun ayeuna .... "teu aya duit, tapi anjeun tahan ...", sarta hasilna (nyata) geus kudu ditémbongkeun, lagu heubeul alus dimimitian: "Enya, enya, lajeng tangtu we. bakal masang cis sareng sadaya anu anjeun pikahoyong, tapi ayeuna urang kedah nunjukkeun hasilna ka Palanggan! Ku jalan kitu, urang hilap nyarios yén Palanggan ngijinkeun urang nyambungkeun alat-alat kami ka hotspot na liwat Wi-Fi, tapi sacara umum, saolah-olah kami klien tamu. Ku kituna urang kudu nyieun balancing routers - sababaraha subinterfaces WiFi diangkat, salah sahiji nu clings kana hotspot, sarta kadua ngawas lingkungan, frantically unggah hasil tcpdump ka sorangan, teras ngarangkep eusi file kana arsip jeung resiko. maot tina "overeating" nyoba nyiduh kaluar eusi dina server FTP. Teu heran router balancing mindeng "ngarecah" na kumaha bae kudu "resuscitated" jarak jauh.

radiusÉta langkung gampang pikeun ngajelaskeun kaayaan di dieu kalayan sapertos pernyataan ieu ti nasabah: "Kami hoyong jaringan hotspot desentralisasi anu bakal dianggo dina alat anu modélna henteu dipikanyaho sateuacanna, ngalangkungan saluran, tapi anu mana anu urang henteu acan terang. Oh, urang hilap nyarios, kami henteu ngan ukur hoyong nunjukkeun iklan ka klien, tapi ogé nganalisis sadayana di sekitar lokasi dimana hotspot dipasang. Henteu, kami henteu acan terang naha, tapi urang bakal terang, entong ragu, kami tiasa ngadamel ide ieu.

Sareng urang henteu kedah hilap yén kusabab seueur kaayaan anu teu dipikanyaho, kontrol kedah dilaksanakeun dina kaayaan anu henteu standar, nalika urang henteu tiasa nyambung ka router langsung via IP: port sareng kapaksa ngan ukur ngantosan kagiatan ti dinya. Upami urang abstrak diri, dialog antara server sareng router tiasa digambarkeun sapertos kieu:

  • Router: Halo. Abdi sapertos sareng sapertos router, naha aya tugas pikeun kuring?
  • server: router sapertos na, Kuring didaptarkeun anjeun, yén anjeun hirup. Ieu tangtangan: tunjukkeun hasil paréntah ifconfig?
  • Router: Halo. Kami router sapertos kitu, panungtungan waktos Anjeun dipenta pikeun nembongkeun hasil tina ifconfig, didieu éta. Naha aya tugas pikeun kuring?
  • server: router sapertos na, Kuring didaptarkeun anjeun, yén anjeun hirup. Henteu aya tugas pikeun anjeun.

Patarosan paling istiméwa: kumaha router jauh bisa ngirim jumlah nu tangtu informasi? Dina bagian anu terakhir, kuring ngajelaskeun yén, kusabab sumber terbatas, router ngan ukur "dilucuti-handap" wget, anu ngan ukur tiasa dianggo via GET sareng teu aya anu sanés; teu aya klien FTP atanapi curl. Leuwih tepat, urang kudu metoda universal, paduli fitur tina assembly gambar. Kuring netep dina ngagunakeun wget. Leuwih tepat, kumaha kuring "eureun" - kuring ngan saukur teu boga pilihan :)

Ngan bantahanSolusi manajemén kuring berpungsi, henteu kawates pisan, sareng kuring yakin éta bengkok, sanaos cocog sareng seueur palanggan kuring. Kumaha anjeun tiasa ngalakukeun sacara bijaksana - nyerat utilitas leutik anu ngirim data binér POST ngalangkungan port 80. Lebetkeun éta (utilitas) dina firmware router sareng aksés nganggo bash. Tapi kanyataanana nyaéta: a) urang kedah gancang b) sigana urang kedah ngalakukeun sadayana dina "kebon binatang tina routers" anu aya c) "henteu ngarugikeun!" — upami router berpungsi sareng ngalaksanakeun tugas sanés, cobian parobihan anu henteu mangaruhan fungsionalitas anu tos aya.

Hayu urang ngaléngkah ka palaksanaan. Sebutkeun palanggan anjeun hoyong reboot router tina zabbix sacara gampang sareng alami, kalayan "klik beurit". Dinten ieu kami bakal ngamimitian ngajelaskeun palaksanaan sareng Zabbix.
Dina menu "Administrasi" -> "Skrip", tambahkeun skrip anyar. Kami nyebatna "Reboot", lebetkeun "php /usr/share/zabbix/reboot.php {HOST.HOST}" salaku paréntah.

Ngawaskeun jarak jauh sareng kadali alat Linux / OpenWrt / Lede via port 80, terus

Teras: Menu "Monitoring" -> "Data panganyarna" -> "Klik katuhu dina titik jaringan anu dipikahoyong." Ieu kumaha menu bakal kasampak kawas sanggeus nambahkeun naskah.

Ngawaskeun jarak jauh sareng kadali alat Linux / OpenWrt / Lede via port 80, terus
Sasuai, urang nempatkeun skrip reboot.php dina /usr/share/zabbix diréktori (Anjeun bisa jadi béda, abdi nganggo diréktori akar zabbixa).

Kasalametan BantahanSangkan katerangan langkung jelas dina naskah, kuring ngan ukur nganggo id router, tapi henteu nganggo sandi. Henteu disarankeun pikeun ngalakukeun ieu dina versi produksi! Naha kuring ngalakukeun ieu: sabab patarosan ageung nyaéta dimana nyimpen kecap akses pikeun router? Dina zabbixe sorangan dina "data inventory"? prakték kontroversial. Alternatipna: ngawatesan aksés éksternal kana file reboot.php sorangan

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

Éta hungkul. Patarosan tetep kabuka: "kumaha carana kéngingkeun hasil ngalaksanakeun paréntah tina alat." Hayu urang tingali tugas ngagunakeun paréntah ifconfig sabagé conto. Paréntah ieu tiasa dikirim ka alat:

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

dimana:
pesen = `ifconfig` - urang napelkeun hasil kaluaran paréntah ifconfig kana variabel $ pesen
wget"xn--80abgfbdwanb2akugdrd3a2e5gsbj.xn--p1ai/a.php — Aksara a.php urang nu registers routers sarta narima pesen ti aranjeunna
u=pamaké&p=sandi!&m=$talatah - Kapercayaan sareng nilai variabel pamundut m - napelkeun eusi variabel $ pesen
-O /tmp/out.txt - urang teu kedah kaluaran kana file /tmp/out.txt dina hal ieu, tapi lamun parameter ieu teu dieusian, wget teu jalan.

Naha ieu teu jalan?Kusabab éta liang kaamanan poténsial. Kasalahan anu paling bahaya anu tiasa kajantenan nyaéta upami, contona, aya karakter "&" dina kaluaran paréntah anjeun. Kituna, perlu pikeun nyaring duanana sagalana nu dikirim ti routers jeung sagalana nu datang ka server. Hehehehe, abdi isin, bener. Dina pertahanan abdi, abdi ngan bisa nulis yén sakabéh artikel ieu devoted kana kumaha carana ngatur routers kalawan firmware tos ditetepkeun sarta saluran komunikasi anu teu didefinisikeun sateuacanna.

Nya, mimiti pikeun masa depan: Kuring henteu acan terang kumaha ngagunakeun alat zabbix standar pikeun ngagambarkeun hasil (contona, hasil tina ngalaksanakeun paréntah) anu sumping ka server.

Kuring ngingetan yén sadaya sumber tiasa didapet tina gudang Git di: github.com/BazDen/iotnet.online.git

sumber: www.habr.com

Tambahkeun komentar