Vietējā administratora drošība: lietotāja rokasgrāmata
Vietējā administratora drošība: lietotāja rokasgrāmata
Vietējās administratora drošības modulis ir pieejams programmaparatūrā i.91.065.3 un jaunākās versijās.
Mērķis
Vietējās administratora drošības modulis aizsargā ierīces lokālo tīmekļa saskarni un sensitīvos lokālos API no neatļautas piekļuves.
Pēc funkcijas iespējošanas administratora lietotājvārds un parole ir nepieciešami:
- visiem Set API, kas pieejami WEM API test lapā;
- GET API, kas atgriež sensitīvus konfigurācijas datus vai veic sensitīvas darbības;
- lokālās OTA programmaparatūras augšupielādes un jaunināšanas darbībām.
Tas ietver tādas darbības kā tīkla vai augšupielādes iestatījumu maiņa, programmaparatūras atjaunināšana, ierīces restartēšana, rūpnīcas iestatījumu atjaunošana un citu sensitīvu konfigurācijas parametru modificēšana.
Modulis nodrošina:
- konfigurējamus administratora akreditācijas datus;
- HTTP Basic autentifikāciju aizsargātiem lokālajiem API;
- akreditācijas datu maiņu, izmantojot tīmekļa saskarni vai API;
- uz Ed25519 paraksta bāzētu atkopšanas procesu, ja administratora parole ir aizmirsta.
Funkcija pēc noklusējuma ir atspējota, lai saglabātu saderību ar vecāku programmaparatūru. Tā ir jāiespējo un jākonfigurē, pirms aizsargātā piekļuve stājas spēkā.
Pašreizējā lokālā tīmekļa saskarne izmanto HTTP. HTTP Basic autentifikācija kodē akreditācijas datus, bet tos nešifrē. Izmantojiet šo funkciju uzticamā lokālajā tīklā, ja vien ierīcei netiek piekļūts, izmantojot papildu drošu transporta mehānismu.
Administratora drošības konfigurēšana tīmekļa saskarnē
- Pārlūkprogrammā atveriet ierīces IP adresi.
- Atlasiet cilni Security.
- Ievadiet administratora lietotājvārdu.
- Ievadiet un apstipriniet administratora paroli.
- Atlasiet Enable Admin Security.
Lietotājvārdam un parolei jāatbilst šādiem noteikumiem:
- garums: 1 līdz 32 rakstzīmes;
- tikai redzamas ASCII rakstzīmes;
- kols (
:), dubultpēdiņa (") vai slīpsvītra (\) nav atļauta.
Pēc administratora drošības iespējošanas pārlūkprogramma parāda autentifikācijas pieprasījumu, kad tiek piekļūts aizsargātai lapai vai API. Ievadiet konfigurēto administratora lietotājvārdu un paroli.
Cilni Security var izmantot arī, lai:
- mainītu administratora lietotājvārdu un paroli;
- pārbaudītu, vai administratora autentifikācija ir iespējota;
- iespējotu vai atspējotu Modbus/TCP pakalpojumu 502. portā;
- iespējotu vai atspējotu SSDP atklāšanu;
- atspējotu administratora drošību pēc autentifikācijas ar pašreizējiem akreditācijas datiem.

Modbus/TCP vai SSDP pakalpojuma stāvokļa izmaiņām nepieciešama ierīces restartēšana. Ja šie iestatījumi nekad nav saglabāti ar vecāku programmaparatūru, abi pakalpojumi pēc noklusējuma ir iespējoti, lai saglabātu atpakaļsaderību.
Pārlūkprogrammas var saglabāt Basic autentifikācijas akreditācijas datus kešatmiņā ierīces adresei. Pēc paroles maiņas pārlūkprogramma vispirms var mēģināt lietot vecos akreditācijas datus un pēc tam parādīt jaunu autentifikācijas pieprasījumu. Aizverot visas pārlūkprogrammas logus vai izmantojot privātās pārlūkošanas logu, var piespiest veikt jaunu pieteikšanos.
API, kuriem nav nepieciešama Basic autentifikācija
Šie galapunkti paliek pieejami bez Basic autentifikācijas galvenes, lai tīmekļa saskarne varētu ielādēt pamata informāciju par ierīci un lai parakstītais atkopšanas process varētu darboties:
| Metode | Galapunkts | Mērķis |
|---|---|---|
| GET | /api/admin/status |
Atgriež, vai administratora drošība ir iespējota un vai ir atbalstīta parakstītā atkopšana. |
| GET | /api/admin/recovery_challenge |
Ģenerē ierīcei specifisku, vienreizēju atkopšanas datu kopu (payload). |
| GET | /api/getbrand |
Atgriež lokālās tīmekļa saskarnes brendinga konfigurāciju. |
| GET | /api/monitor |
Atgriež pašreizējos ierīces un skaitītāja monitoringa datus, ko izmanto lokālā tīmekļa saskarne. |
| GET | /api/monitorjson |
Atgriež mantoto monitoringa atbildi, izmantojot /api saderības ceļu. |
| GET | /monitorjson |
Atgriež mantoto monitoringa atbildi. |
| GET | /api/sntpstatus |
Atgriež pašreizējo SNTP statusu. |
| GET | /info.xml |
Atgriež UPnP stila informāciju par ierīci. |
| POST | /api/admin/recovery |
Pārbauda IAMMETER atkopšanas parakstu un notīra aizmirstos administratora akreditācijas datus. |
POST /api/admin/enable var izsaukt arī bez Basic autentifikācijas, kad administratora drošība pašlaik ir atspējota, jo tas ir galapunkts, ko izmanto sākotnējai konfigurēšanai. Ja administratora drošība jau ir iespējota, pirms šis galapunkts var mainīt vai atspējot drošības konfigurāciju, ir nepieciešami pašreizējie derīgie administratora akreditācijas dati.
Statiskie tīmekļa saskarnes faili un citi ne-/api/ GET resursi nav API galapunkti, un tie paliek publiski lasāmi. Visi citi lokālie API galapunkti tiek uzskatīti par aizsargātiem, kad administratora drošība ir iespējota, tostarp visi Set API, sensitīvie GET API un OTA programmaparatūras darbības.
API atsauce
GET /api/admin/status
Atgriež pašreizējo administratora drošības statusu. Autentifikācija nav nepieciešama.
Piemēra atbilde:
{
"enabled": 1,
"hasPassword": 1,
"recoverySupported": 1,
"modbusTcpEnabled": 1,
"ssdpEnabled": 1
}
Lauki:
enabled:1, kad administratora drošība ir iespējota; pretējā gadījumā0.hasPassword:1, kad administratora akreditācijas dati ir konfigurēti.recoverySupported:1, kad programmaparatūra atbalsta parakstīto administratora atkopšanu.modbusTcpEnabled:1, kad Modbus/TCP pakalpojums 502. portā ir iespējots.ssdpEnabled:1, kad SSDP atklāšana ir iespējota.
POST /api/admin/enable
Iespējo vai atspējo administratora drošību.
Administratora drošības iespējošana:
POST /api/admin/enable
Content-Type: application/json
{
"enable": 1,
"username": "admin",
"password": "ExamplePassword"
}
Piemērs ar curl:
curl -X POST "http://<device-ip>/api/admin/enable" \
-H "Content-Type: application/json" \
-d '{"enable":1,"username":"admin","password":"ExamplePassword"}'
Administratora drošības atspējošana:
POST /api/admin/enable
Authorization: Basic <base6...ype: application/json
{
"enable": 0
}
Ja administratora drošība jau ir iespējota, lai izsauktu šo API, ir nepieciešami pašreizējie derīgie Basic autentifikācijas akreditācijas dati.
Piemērs:
curl -X POST "http://<device-ip>/api/admin/enable" \
-u admin:ExamplePassword \
-H "Content-Type: application/json" \
-d '{"enable":0}'
POST /api/admin/password
Maina administratora lietotājvārdu un paroli. Šis API ir aizsargāts pēc administratora drošības iespējošanas.
POST /api/admin/password
Authorization: Basic <curre...ype: application/json
{
"username": "newadmin",
"password": "NewExamplePassword"
}
Piemērs:
curl -X POST "http://<device-ip>/api/admin/password" \
-u admin:ExamplePassword \
-H "Content-Type: application/json" \
-d '{"username":"newadmin","password":"NewExamplePassword"}'
Pēc pieprasījuma veiksmīgas izpildes turpmākajiem aizsargātajiem pieprasījumiem izmantojiet jaunos akreditācijas datus.
GET /api/admin/check
Pārbauda, vai iesniegtie Basic autentifikācijas akreditācijas dati ir derīgi.
curl -u admin:ExamplePassword \
"http://<device-ip>/api/admin/check"
Veiksmīga atbilde:
{
"successful": 1
}
Trūkstoši vai nederīgi akreditācijas dati rada HTTP 401 Unauthorized atbildi.
GET /api/admin/recovery_challenge
Izveido ierīcei specifisku, vienreizēju atkopšanas datu kopu. Autentifikācija nav nepieciešama, jo šis galapunkts pats par sevi neatiestata akreditācijas datus.
Piemēra atbilde:
{
"successful": 1,
"alg": "ed25519",
"payload": "reset_admin|DEVICE_SN|DEVICE_MAC|ONE_TIME_NONCE"
}
Atgrieztais payload ir jānosūta IAMMETER, kad nepieciešama administratora atkopšana.
Jauna izaicinājuma (challenge) pieprasīšana anulē iepriekšējo izaicinājumu. Izaicinājums tiek anulēts arī pēc veiksmīgas atkopšanas vai ierīces restartēšanas.
POST /api/admin/recovery
Iesniedz atkopšanas datu kopu un Ed25519 parakstu, ko sniegusi IAMMETER.
POST /api/admin/recovery
Content-Type: application/json
{
"payload": "reset_admin|DEVICE_SN|DEVICE_MAC|ONE_TIME_NONCE",
"signature": "128-hex-character-ed25519-signature"
}
Piemērs:
curl -X POST "http://<device-ip>/api/admin/recovery" \
-H "Content-Type: application/json" \
-d '{"payload":"reset_admin|DEVICE_SN|DEVICE_MAC|ONE_TIME_NONCE","signature":"<signature-from-IAMMETER>"}'
Ja paraksta pārbaude ir veiksmīga, ierīce notīra lokālos administratora akreditācijas datus un atspējo administratora drošību. Pēc tam var konfigurēt jaunu administratora lietotājvārdu un paroli.
Ja ierīcei nav pietiekami daudz brīvas atmiņas paraksta pārbaudes veikšanai, API atgriež atbildi, kas līdzīga šai:
{
"successful": 0,
"message": "low memory, please change to standalone mode",
"freeMemory": 18000,
"minFreeRequired": 28000
}
Šādā gadījumā samaziniet atmiņas izmantošanu un pieprasiet jaunu atkopšanas izaicinājumu pirms mēģinājuma atkārtot. Ja parole nav pieejama un darbības režīmu nevar mainīt, restartējiet ierīci un veiciet atkopšanu, pirms MQTTS vai HTTPS savienojums patērē papildu atmiņu.
Kā darbojas paroles atkopšana
Atkopšanas risinājuma dizains izvairās no neautentificētas rūpnīcas atiestatīšanas komandas pievienošanas, kas varētu apiet administratora aizsardzību.
Process izmanto Ed25519 publiskās/privātās atslēgas pāri:
- ierīces programmaparatūra satur tikai IAMMETER atkopšanas publisko atslēgu;
- atbilstošā privātā atslēga paliek IAMMETER rīcībā un netiek glabāta ierīcē;
- ierīce izveido datu kopu, kas satur pieprasīto darbību, ierīces sērijas numuru (SN), ierīces MAC adresi un vienreizēju nonce;
- IAMMETER paraksta tieši šo datu kopu ar atkopšanas privāto atslēgu;
- ierīce pārbauda parakstu ar savu iegulto publisko atslēgu;
- tikai derīgs paraksts pašreizējai ierīcei un pašreizējam nonce var notīrīt administratora konfigurāciju.
Nonce tiek glabāts tikai operatīvajā atmiņā (RAM). Tas kļūst nederīgs, kad ierīce tiek restartēta, kad tiek pieprasīts cits izaicinājums vai pēc vienas veiksmīgas atkopšanas. Tāpēc vecu datu kopu un parakstu nevar izmantot atkārtoti vēlākā atkopšanas sesijā.
Lietošanas scenāriji
1. scenārijs: administratora lietotājvārda un paroles iestatīšana
Vienkāršākā metode ir tīmekļa saskarne:
- Atveriet
http://<device-ip>/. - Atveriet cilni Security.
- Ievadiet jauno administratora lietotājvārdu un paroli.
- Apstipriniet paroli.
- Iespējojiet administratora drošību.
To pašu darbību var veikt, izmantojot POST /api/admin/enable:
curl -X POST "http://<device-ip>/api/admin/enable" \
-H "Content-Type: application/json" \
-d '{"enable":1,"username":"admin","password":"ExamplePassword"}'
Pārbaudiet rezultātu:
curl "http://<device-ip>/api/admin/status"
2. scenārijs: piekļuve aizsargātiem API ar Basic autentifikāciju
Katram nākamajam aizsargātajam pieprasījumam nosūtiet administratora lietotājvārdu un paroli HTTP Basic autentifikācijas galvenē.
Galvenes vērtība tiek veidota šādi:
Authorization: Basic Base64...nFor example, the credentials `admin:ExamplePassword` are combined first and then Base64 encoded. Most HTTP clients perform this automatically.
Piemēram, akreditācijas dati admin:ExamplePassword vispirms tiek apvienoti un pēc tam kodēti ar Base64. Lielākā daļa HTTP klientu to veic automātiski.
Izmantojot curl:
curl -u admin:ExamplePassword \
"http://<device-ip>/api/getadv"
Izmantojot tiešu galveni:
TOKEN=$(printf '%s' 'admin:ExamplePassword' | base64)
curl "http://<device-ip>/api/getadv" \
-H "Authorization: Basic $TOKEN"
JSON POST pieprasījumam:
curl -X POST "http://<device-ip>/api/setadv" \
-u admin:ExamplePassword \
-H "Content-Type: application/json" \
-d '<setadv-json-body>'
Pārlūkprogramma šo galveni apstrādā automātiski pēc tam, kad administrators ievada akreditācijas datus Basic autentifikācijas pieprasījumā.
Pašreizējā tīmekļa saskarne augšupielādē programmaparatūru uz POST /api/ota_successful.html. Mantotais POST /ota_successful.html galapunkts paliek pieejams vecākām tīmekļa saskarnes versijām un ārējiem rīkiem. Abiem galapunktiem ir nepieciešama Basic autentifikācija, kad administratora drošība ir iespējota.
Tīmekļa saskarnes cilnes darbojas šādi, kad autentifikācijas pieprasījuma logs ir aizvērts:
- Settings un Wi-Fi nevar ielādēt savus aizsargātos konfigurācijas API un parāda administratora autentifikācijas ziņojumu.
- System joprojām var parādīt SN, MAC un programmaparatūras versiju, jo šīs vērtības tika iegūtas no publiskā
/api/monitorgalapunkta. OTA augšupielāde paliek aizsargāta. - Security joprojām var parādīt pamata statusu, jo
/api/admin/statusir publisks. Akreditācijas datu maiņa un pakalpojumu slēdžu maiņa paliek aizsargāta.
3. scenārijs: piekļuves atkopšana pēc paroles aizmiršanas
Ierīcei nav aparatūras atiestatīšanas pogas. Lai izvairītos no neautentificētas atiestatīšanas funkcijas pievienošanas, kas varētu apiet administratora drošību, ierīce izmanto iepriekš aprakstīto parakstītās atkopšanas mehānismu.
Šī procedūra ir paredzēta tikai gadījumiem, kad ir aizmirsti gan administratora lietotājvārds, gan parole. Glabājiet konfigurētos akreditācijas datus drošā vietā un nepaļaujieties uz atkopšanas procesu ikdienas akreditācijas datu maiņai. Ja pašreizējie akreditācijas dati joprojām ir pieejami, mainiet tos tieši no cilnes Security vai ar POST /api/admin/password.
Pieprasiet no ierīces jaunu atkopšanas izaicinājumu:
curl "http://<device-ip>/api/admin/recovery_challenge"Nokopējiet no atbildes pilnu
payloadvērtību. Nerediģējiet SN, MAC, nonce, atdalītājus vai burtu reģistru.Sazinieties ar IAMMETER atbalsta dienestu pa e-pastu
support@devicebit.comun iesniedziet pilnu datu kopu.Pēc īpašumtiesību vai pakalpojuma autorizācijas apstiprināšanas IAMMETER paraksta datu kopu un atgriež Ed25519 parakstu.
Iesniedziet ierīcei oriģinālo datu kopu un atgriezto parakstu:
curl -X POST "http://<device-ip>/api/admin/recovery" \ -H "Content-Type: application/json" \ -d '{"payload":"<original-payload>","signature":"<signature-from-IAMMETER>"}'Pēc veiksmīgas atbildes administratora drošība tiek atspējota un iepriekšējie administratora akreditācijas dati tiek notīrīti. Atveriet cilni Security vai izsauciet
POST /api/admin/enable, lai iestatītu jaunus akreditācijas datus.
Nerestartējiet ierīci un nepieprasiet citu izaicinājumu, kamēr gaidāt parakstu. Jebkura no šīm darbībām anulē iesniegto datu kopu, un atkopšanas process ir jāsāk no jauna ar jaunu izaicinājumu.