Λυπούμαστε, το πρόγραμμα περιήγησής σας δεν υποστηρίζει JavaScript!
Σύνδεση

Τοπική Ασφάλεια Διαχειριστή για Μετρητές Ενέργειας IAMMETER: Οδηγός Χρήσης

Τοπική Ασφάλεια Διαχειριστή: Οδηγός Χρήσης

Η ενότητα Τοπικής Ασφάλειας Διαχειριστή είναι διαθέσιμη στο υλικολογισμικό i.91.065.3 και σε μεταγενέστερες εκδόσεις.

Σκοπός

Η ενότητα Τοπικής Ασφάλειας Διαχειριστή προστατεύει τη διαδικτυακή διεπαφή (Web UI) της συσκευής και τα ευαίσθητα τοπικά API από μη εξουσιοδοτημένη πρόσβαση.

Αφού ενεργοποιηθεί η λειτουργία, απαιτείται όνομα χρήστη και κωδικός πρόσβασης διαχειριστή για:

  • όλα τα Set APIs που διατίθενται στη σελίδα WEM API Test·
  • GET APIs που επιστρέφουν ευαίσθητα δεδομένα διαμόρφωσης ή εκτελούν ευαίσθητες λειτουργίες·
  • τοπικές λειτουργίες μεταφόρτωσης και αναβάθμισης υλικολογισμικού μέσω OTA.

Αυτό περιλαμβάνει λειτουργίες όπως η αλλαγή των ρυθμίσεων δικτύου ή μεταφόρτωσης, η ενημέρωση του υλικολογισμικού, η επανεκκίνηση της συσκευής, η επαναφορά των εργοστασιακών ρυθμίσεων και η τροποποίηση άλλων ευαίσθητων παραμέτρων διαμόρφωσης.

Η ενότητα παρέχει:

  • διαμορφώσιμα διαπιστευτήρια διαχειριστή·
  • HTTP Basic Authentication για τα προστατευμένα τοπικά API·
  • αλλαγή διαπιστευτηρίων μέσω του Web UI ή μέσω API·
  • διαδικασία ανάκτησης βασισμένη σε υπογραφή Ed25519, σε περίπτωση που ξεχαστεί ο κωδικός πρόσβασης του διαχειριστή.

Η λειτουργία είναι απενεργοποιημένη από προεπιλογή για συμβατότητα με παλαιότερα υλικολογισμικά. Πρέπει να ενεργοποιηθεί και να διαμορφωθεί προτού τεθεί σε ισχύ η προστατευμένη πρόσβαση.

Η τρέχουσα τοπική διαδικτυακή διεπαφή χρησιμοποιεί HTTP. Το HTTP Basic Authentication κωδικοποιεί τα διαπιστευτήρια αλλά δεν τα κρυπτογραφεί. Χρησιμοποιήστε αυτή τη λειτουργία σε ένα αξιόπιστο τοπικό δίκτυο, εκτός εάν η πρόσβαση στη συσκευή γίνεται μέσω πρόσθετου ασφαλούς μηχανισμού μεταφοράς.

Διαμόρφωση της Ασφάλειας Διαχειριστή στο Web UI

  1. Ανοίξτε τη διεύθυνση IP της συσκευής σε ένα πρόγραμμα περιήγησης.
  2. Επιλέξτε την καρτέλα Security.
  3. Εισαγάγετε ένα όνομα χρήστη διαχειριστή.
  4. Εισαγάγετε και επιβεβαιώστε τον κωδικό πρόσβασης διαχειριστή.
  5. Επιλέξτε Enable Admin Security.

Το όνομα χρήστη και ο κωδικός πρόσβασης πρέπει να πληρούν τους ακόλουθους κανόνες:

  • μήκος: 1 έως 32 χαρακτήρες·
  • μόνο ορατοί χαρακτήρες ASCII·
  • δεν επιτρέπονται άνω κάτω τελεία (`:`), διπλό εισαγωγικό (`"`) ή ανάποδη κάθετος (`\`).

Αφού ενεργοποιηθεί η Ασφάλεια Διαχειριστή, το πρόγραμμα περιήγησης εμφανίζει προτροπή ταυτοποίησης όταν γίνεται πρόσβαση σε προστατευμένη σελίδα ή API. Εισαγάγετε το διαμορφωμένο όνομα χρήστη και τον κωδικό πρόσβασης διαχειριστή.

Η καρτέλα Security μπορεί επίσης να χρησιμοποιηθεί για:

  • αλλαγή του ονόματος χρήστη και του κωδικού πρόσβασης διαχειριστή·
  • έλεγχο ότι η ταυτοποίηση διαχειριστή είναι ενεργοποιημένη·
  • ενεργοποίηση ή απενεργοποίηση της υπηρεσίας Modbus/TCP στη θύρα 502·
  • ενεργοποίηση ή απενεργοποίηση της ανακάλυψης SSDP·
  • απενεργοποίηση της Ασφάλειας Διαχειριστή μετά την ταυτοποίηση με τα τρέχοντα διαπιστευτήρια.

Καρτέλα Security του τοπικού Web UI της IAMMETER με στοιχεία ελέγχου διαπιστευτηρίων διαχειριστή και διακόπτες υπηρεσιών Modbus TCP και SSDP

Οι αλλαγές στην κατάσταση της υπηρεσίας Modbus/TCP ή SSDP απαιτούν επανεκκίνηση της συσκευής. Εάν αυτές οι ρυθμίσεις δεν έχουν αποθηκευτεί ποτέ από παλαιότερο υλικολογισμικό, και οι δύο υπηρεσίες είναι ενεργοποιημένες από προεπιλογή για συμβατότητα με παλαιότερες εκδόσεις.

Τα προγράμματα περιήγησης ενδέχεται να αποθηκεύουν στην κρυφή μνήμη τα διαπιστευτήρια Basic Authentication για τη διεύθυνση της συσκευής. Μετά την αλλαγή του κωδικού πρόσβασης, το πρόγραμμα περιήγησης μπορεί πρώτα να δοκιμάσει τα παλιά διαπιστευτήρια και στη συνέχεια να εμφανίσει μια νέα προτροπή ταυτοποίησης. Το κλείσιμο όλων των παραθύρων του προγράμματος περιήγησης ή η χρήση ενός παραθύρου ιδιωτικής περιήγησης μπορεί επίσης να επιβάλει μια νέα σύνδεση.

APIs που Δεν Απαιτούν Basic Authentication

Τα ακόλουθα endpoints παραμένουν διαθέσιμα χωρίς επικεφαλίδα Basic Authentication, ώστε το Web UI να μπορεί να φορτώνει βασικές πληροφορίες της συσκευής και να λειτουργεί η υπογεγραμμένη διαδικασία ανάκτησης:

Μέθοδος Endpoint Σκοπός
GET /api/admin/status Επιστρέφει εάν η Ασφάλεια Διαχειριστή είναι ενεργοποιημένη και εάν υποστηρίζεται η υπογεγραμμένη ανάκτηση.
GET /api/admin/recovery_challenge Δημιουργεί ένα μοναδικό πακέτο ανάκτησης μιας χρήσης για τη συγκεκριμένη συσκευή.
GET /api/getbrand Επιστρέφει τη διαμόρφωση επωνυμίας του τοπικού Web UI.
GET /api/monitor Επιστρέφει τα τρέχοντα δεδομένα παρακολούθησης της συσκευής και του μετρητή που χρησιμοποιεί το τοπικό Web UI.
GET /api/monitorjson Επιστρέφει την απόκριση παρακολούθησης παλαιού τύπου μέσω της διαδρομής συμβατότητας /api.
GET /monitorjson Επιστρέφει την απόκριση παρακολούθησης παλαιού τύπου.
GET /api/sntpstatus Επιστρέφει την τρέχουσα κατάσταση SNTP.
GET /info.xml Επιστρέφει πληροφορίες συσκευής τύπου UPnP.
POST /api/admin/recovery Επαληθεύει την υπογραφή ανάκτησης IAMMETER και διαγράφει τα ξεχασμένα διαπιστευτήρια διαχειριστή.

Το POST /api/admin/enable μπορεί επίσης να κληθεί χωρίς Basic Authentication, όταν η Ασφάλεια Διαχειριστή είναι αυτή τη στιγμή απενεργοποιημένη, καθώς είναι το endpoint που χρησιμοποιείται για την αρχική ρύθμιση. Εάν η Ασφάλεια Διαχειριστή είναι ήδη ενεργοποιημένη, απαιτούνται τα τρέχοντα έγκυρα διαπιστευτήρια διαχειριστή προτού αυτό το endpoint μπορέσει να αλλάξει ή να απενεργοποιήσει τη διαμόρφωση ασφαλείας.

Τα στατικά αρχεία του Web UI και άλλοι πόροι GET εκτός του /api/ δεν είναι endpoints API και παραμένουν δημόσια αναγνώσιμα. Όλα τα άλλα τοπικά endpoints API αντιμετωπίζονται ως προστατευμένα όταν η Ασφάλεια Διαχειριστή είναι ενεργοποιημένη, συμπεριλαμβανομένων όλων των Set APIs, των ευαίσθητων GET APIs και των λειτουργιών υλικολογισμικού OTA.

Αναφορά API

GET /api/admin/status

Επιστρέφει την τρέχουσα κατάσταση Ασφάλειας Διαχειριστή. Δεν απαιτείται ταυτοποίηση.

Παράδειγμα απόκρισης:

{
  "enabled": 1,
  "hasPassword": 1,
  "recoverySupported": 1,
  "modbusTcpEnabled": 1,
  "ssdpEnabled": 1
}

Πεδία:

  • enabled: 1 όταν η Ασφάλεια Διαχειριστή είναι ενεργοποιημένη· διαφορετικά 0.
  • hasPassword: 1 όταν έχουν διαμορφωθεί διαπιστευτήρια διαχειριστή.
  • recoverySupported: 1 όταν το υλικολογισμικό υποστηρίζει υπογεγραμμένη ανάκτηση διαχειριστή.
  • modbusTcpEnabled: 1 όταν η υπηρεσία Modbus/TCP στη θύρα 502 είναι ενεργοποιημένη.
  • ssdpEnabled: 1 όταν η ανακάλυψη SSDP είναι ενεργοποιημένη.

POST /api/admin/enable

Ενεργοποιεί ή απενεργοποιεί την Ασφάλεια Διαχειριστή.

Ενεργοποίηση της Ασφάλειας Διαχειριστή:

POST /api/admin/enable
Content-Type: application/json

{
  "enable": 1,
  "username": "admin",
  "password": "ExamplePassword"
}

Παράδειγμα με curl:

curl -X POST "http://<device-ip>/api/admin/enable" \
  -H "Content-Type: application/json" \
  -d '{"enable":1,"username":"admin","password":"ExamplePassword"}'

Απενεργοποίηση της Ασφάλειας Διαχειριστή:

POST /api/admin/enable
Authorization: Basic <base6...ype: application/json

{
  "enable": 0
}

Εάν η Ασφάλεια Διαχειριστή είναι ήδη ενεργοποιημένη, απαιτούνται τα τρέχοντα έγκυρα διαπιστευτήρια Basic Authentication για την κλήση αυτού του API.

Παράδειγμα:

curl -X POST "http://<device-ip>/api/admin/enable" \
  -u admin:ExamplePassword \
  -H "Content-Type: application/json" \
  -d '{"enable":0}'

POST /api/admin/password

Αλλάζει το όνομα χρήστη και τον κωδικό πρόσβασης διαχειριστή. Αυτό το API είναι προστατευμένο μετά την ενεργοποίηση της Ασφάλειας Διαχειριστή.

POST /api/admin/password
Authorization: Basic <curre...ype: application/json

{
  "username": "newadmin",
  "password": "NewExamplePassword"
}

Παράδειγμα:

curl -X POST "http://<device-ip>/api/admin/password" \
  -u admin:ExamplePassword \
  -H "Content-Type: application/json" \
  -d '{"username":"newadmin","password":"NewExamplePassword"}'

Μετά την επιτυχή εκτέλεση του αιτήματος, χρησιμοποιήστε τα νέα διαπιστευτήρια για τα επόμενα προστατευμένα αιτήματα.

GET /api/admin/check

Ελέγχει εάν τα παρεχόμενα διαπιστευτήρια Basic Authentication είναι έγκυρα.

curl -u admin:ExamplePassword \
  "http://<device-ip>/api/admin/check"

Επιτυχής απόκριση:

{
  "successful": 1
}

Τα ελλιπή ή μη έγκυρα διαπιστευτήρια οδηγούν σε HTTP 401 Unauthorized.

GET /api/admin/recovery_challenge

Δημιουργεί ένα μοναδικό πακέτο ανάκτησης μιας χρήσης για τη συγκεκριμένη συσκευή. Δεν απαιτείται ταυτοποίηση, επειδή αυτό το endpoint δεν επαναφέρει από μόνο του τα διαπιστευτήρια.

Παράδειγμα απόκρισης:

{
  "successful": 1,
  "alg": "ed25519",
  "payload": "reset_admin|DEVICE_SN|DEVICE_MAC|ONE_TIME_NONCE"
}

Το επιστρεφόμενο payload πρέπει να αποσταλεί στην IAMMETER όταν απαιτείται ανάκτηση διαχειριστή.

Η αίτηση για νέο challenge ακυρώνει το προηγούμενο challenge. Ένα challenge ακυρώνεται επίσης μετά από επιτυχή ανάκτηση ή επανεκκίνηση της συσκευής.

POST /api/admin/recovery

Υποβάλλει το πακέτο ανάκτησης και την υπογραφή Ed25519 που παρέχεται από την 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"
}

Παράδειγμα:

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>"}'

Εάν η επαλήθευση της υπογραφής είναι επιτυχής, η συσκευή διαγράφει τα τοπικά διαπιστευτήρια διαχειριστή και απενεργοποιεί την Ασφάλεια Διαχειριστή. Στη συνέχεια μπορεί να διαμορφωθεί ένα νέο όνομα χρήστη και κωδικός πρόσβασης διαχειριστή.

Εάν η συσκευή δεν διαθέτει αρκετή ελεύθερη μνήμη για την εκτέλεση της επαλήθευσης υπογραφής, το API επιστρέφει μια απόκριση παρόμοια με:

{
  "successful": 0,
  "message": "low memory, please change to standalone mode",
  "freeMemory": 18000,
  "minFreeRequired": 28000
}

Σε αυτή την περίπτωση, μειώστε τη χρήση μνήμης και ζητήστε ένα νέο challenge ανάκτησης προτού επιχειρήσετε ξανά. Εάν ο κωδικός πρόσβασης δεν είναι διαθέσιμος και η λειτουργία λειτουργίας δεν μπορεί να αλλάξει, επανεκκινήστε τη συσκευή και εκτελέστε την ανάκτηση προτού μια σύνδεση MQTTS ή HTTPS καταναλώσει επιπλέον μνήμη.

Πώς Λειτουργεί η Ανάκτηση Κωδικού Πρόσβασης

Ο σχεδιασμός της ανάκτησης αποφεύγει την προσθήκη μιας εντολής επαναφοράς εργοστασιακών ρυθμίσεων χωρίς ταυτοποίηση, που θα μπορούσε να παρακάμψει την προστασία του διαχειριστή.

Η διαδικασία χρησιμοποιεί ένα ζεύγος δημόσιου/ιδιωτικού κλειδιού Ed25519:

  • το υλικολογισμικό της συσκευής περιέχει μόνο το δημόσιο κλειδί ανάκτησης της IAMMETER·
  • το αντίστοιχο ιδιωτικό κλειδί διατηρείται από την IAMMETER και δεν αποθηκεύεται στη συσκευή·
  • η συσκευή δημιουργεί ένα πακέτο που περιέχει τη ζητούμενη λειτουργία, το SN της συσκευής, το MAC της συσκευής και ένα nonce μιας χρήσης·
  • η IAMMETER υπογράφει αυτό ακριβώς το πακέτο με το ιδιωτικό κλειδί ανάκτησης·
  • η συσκευή επαληθεύει την υπογραφή με το ενσωματωμένο δημόσιο κλειδί·
  • μόνο μια έγκυρη υπογραφή για την τρέχουσα συσκευή και το τρέχον nonce μπορεί να διαγράψει τη διαμόρφωση διαχειριστή.

Το nonce αποθηκεύεται μόνο στη RAM. Καθίσταται άκυρο όταν η συσκευή επανεκκινείται, όταν ζητηθεί άλλο challenge ή μετά από μία επιτυχή ανάκτηση. Επομένως, ένα παλιό πακέτο και μια παλιά υπογραφή δεν μπορούν να επαναχρησιμοποιηθούν για μια μεταγενέστερη συνεδρία ανάκτησης.

Σενάρια Χρήσης

Σενάριο 1: Ορισμός Ονόματος Χρήστη και Κωδικού Πρόσβασης Διαχειριστή

Η απλούστερη μέθοδος είναι το Web UI:

  1. Ανοίξτε το http://<device-ip>/.
  2. Ανοίξτε την καρτέλα Security.
  3. Εισαγάγετε το νέο όνομα χρήστη και τον κωδικό πρόσβασης διαχειριστή.
  4. Επιβεβαιώστε τον κωδικό πρόσβασης.
  5. Ενεργοποιήστε την Ασφάλεια Διαχειριστή.

Η ίδια λειτουργία μπορεί να εκτελεστεί μέσω του 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"}'

Επαληθεύστε το αποτέλεσμα:

curl "http://<device-ip>/api/admin/status"

Σενάριο 2: Πρόσβαση σε Προστατευμένα APIs με Basic Authentication

Για κάθε επόμενο προστατευμένο αίτημα, στείλτε το όνομα χρήστη και τον κωδικό πρόσβασης διαχειριστή στην επικεφαλίδα HTTP Basic Authentication.

Η τιμή της επικεφαλίδας διαμορφώνεται ως εξής:

Authorization: Basic Base64...nFor example, the credentials `admin:ExamplePassword` are combined first and then Base64 encoded. Most HTTP clients perform this automatically.

Χρησιμοποιώντας το curl:

curl -u admin:ExamplePassword \
  "http://<device-ip>/api/getadv"

Χρησιμοποιώντας ρητή επικεφαλίδα:

TOKEN=$(printf '%s' 'admin:ExamplePassword' | base64)

curl "http://<device-ip>/api/getadv" \
  -H "Authorization: Basic ***"

Για ένα αίτημα POST με JSON:

curl -X POST "http://<device-ip>/api/setadv" \
  -u admin:ExamplePassword \
  -H "Content-Type: application/json" \
  -d '<setadv-json-body>'

Το πρόγραμμα περιήγησης διαχειρίζεται αυτή την επικεφαλίδα αυτόματα αφού ο διαχειριστής εισαγάγει τα διαπιστευτήρια στην προτροπή Basic Authentication.

Το τρέχον Web UI μεταφορτώνει το υλικολογισμικό στο POST /api/ota_successful.html. Το παλαιού τύπου POST /ota_successful.html endpoint παραμένει διαθέσιμο για παλαιότερες εκδόσεις του Web UI και εξωτερικά εργαλεία. Και τα δύο endpoints απαιτούν Basic Authentication όταν η Ασφάλεια Διαχειριστή είναι ενεργοποιημένη.

Οι καρτέλες του Web UI συμπεριφέρονται ως εξής όταν κλείσει η προτροπή ταυτοποίησης:

  • Οι καρτέλες Settings και Wi-Fi δεν μπορούν να φορτώσουν τα προστατευμένα API διαμόρφωσης και εμφανίζουν ένα μήνυμα ταυτοποίησης διαχειριστή.
  • Η καρτέλα System μπορεί ακόμα να εμφανίζει SN, MAC και έκδοση υλικολογισμικού, επειδή αυτές οι τιμές ελήφθησαν από το δημόσιο endpoint /api/monitor. Η μεταφόρτωση OTA παραμένει προστατευμένη.
  • Η καρτέλα Security μπορεί ακόμα να εμφανίζει βασική κατάσταση, επειδή το /api/admin/status είναι δημόσιο. Οι αλλαγές διαπιστευτηρίων και οι αλλαγές διακοπτών υπηρεσιών παραμένουν προστατευμένες.

Σενάριο 3: Ανάκτηση Πρόσβασης Μετά τη Λήθη του Κωδικού Πρόσβασης

Η συσκευή δεν διαθέτει κουμπί επαναφοράς υλικού. Για να αποφευχθεί η προσθήκη μιας λειτουργίας επαναφοράς χωρίς ταυτοποίηση που θα μπορούσε να παρακάμψει την Ασφάλεια Διαχειριστή, η συσκευή χρησιμοποιεί τον υπογεγραμμένο μηχανισμό ανάκτησης που περιγράφεται παραπάνω.

Αυτή η διαδικασία προορίζεται μόνο για περιπτώσεις όπου έχουν ξεχαστεί τόσο το όνομα χρήστη όσο και ο κωδικός πρόσβασης διαχειριστή. Φυλάξτε τα διαμορφωμένα διαπιστευτήρια σε ασφαλή τοποθεσία και αποφύγετε να βασίζεστε στη διαδικασία ανάκτησης για συνήθεις αλλαγές διαπιστευτηρίων. Εάν τα τρέχοντα διαπιστευτήρια είναι ακόμα διαθέσιμα, αλλάξτε τα απευθείας από την καρτέλα Security ή με το POST /api/admin/password.

  1. Ζητήστε ένα νέο challenge ανάκτησης από τη συσκευή:

    curl "http://<device-ip>/api/admin/recovery_challenge"
    
  2. Αντιγράψτε την πλήρη τιμή payload από την απόκριση. Μην επεξεργαστείτε το SN, το MAC, το nonce, τους διαχωριστές ή την κεφαλαιοποίηση.

  3. Επικοινωνήστε με την υποστήριξη της IAMMETER στη διεύθυνση support@devicebit.com και υποβάλετε το πλήρες πακέτο.

  4. Αφού επιβεβαιωθεί η κυριότητα ή η εξουσιοδότηση της υπηρεσίας, η IAMMETER υπογράφει το πακέτο και επιστρέφει μια υπογραφή Ed25519.

  5. Υποβάλετε το αρχικό πακέτο και την επιστρεφόμενη υπογραφή στη συσκευή:

    curl -X POST "http://<device-ip>/api/admin/recovery" \
      -H "Content-Type: application/json" \
      -d '{"payload":"<original-payload>","signature":"<signature-from-IAMMETER>"}'
    
  6. Μετά από μια επιτυχή απόκριση, η Ασφάλεια Διαχειριστή απενεργοποιείται και τα προηγούμενα διαπιστευτήρια διαχειριστή διαγράφονται. Ανοίξτε την καρτέλα Security ή καλέστε το POST /api/admin/enable για να ορίσετε νέα διαπιστευτήρια.

Μην επανεκκινήσετε τη συσκευή και μην ζητήσετε άλλο challenge ενώ περιμένετε την υπογραφή. Και οι δύο ενέργειες ακυρώνουν το υποβληθέν πακέτο και η διαδικασία ανάκτησης πρέπει να ξεκινήσει ξανά με ένα νέο challenge.

Πάνω