BlogKontakt

Bezpieczeństwo

Co na Twoim sterowniku jest jeszcze otwarte i jak to zamknąć

Ustawienia → Dostęp → Bezpieczeństwo pokazuje, co na tym sterowniku jest jeszcze otwarte i gdzie to naprawić. Te same informacje trafiają do Home Assistant jako encja diagnostyczna, więc sterownik, którego nikt nie odwiedza, i tak potrafi coś powiedzieć.

Dwie listy i różnica między nimi

Do zrobienia to problem tego sterownika — fabryczne hasło brokera, panel dostępny bez logowania. Każda pozycja ma przycisk Napraw, który prowadzi do kontrolki zmieniającej daną rzecz, a tam gdzie takiej kontrolki nie ma — dokładną zmianę do wykonania ręcznie.

Do rozważenia to porady dotyczące niemal każdego sterownika, zależne od tego, jak korzystasz z urządzenia. Certyfikat samopodpisany jest zaprojektowanym stanem domyślnym, a nie usterką.

Tylko pierwsza lista napędza licznik przy Bezpieczeństwie w pasku bocznym i sensor w Home Assistant. Plakietka czerwona na każdym wyprodukowanym urządzeniu to plakietka, której nikt nie czyta.

Co jest sprawdzane

KontrolaDlaczego
Konto administratoraBez niego urządzenie przejmuje ten, kto pierwszy otworzy kreator
Dostęp bez logowaniaKażdy w sieci mógłby odczytać konfigurację, przełączać wyjścia i restartować
Hasło brokera MQTTTo, z którym boneIO wychodzi z fabryki, jest opublikowane i identyczne na każdym urządzeniu
Stare dane logowania w config.yamlBlok web.auth sprzed 1.6 trzymał hasło otwartym tekstem
Certyfikat HTTPSSamopodpisany oznacza ostrzeżenie przeglądarki przy każdej wizycie
Osadzanie w innych stronachCzy inna strona może wyświetlić panel w ramce
Hasło logowania SSHKonto boneio może zostać rootem; fabryczne hasło Black (albo brak hasła) oznacza, że może nim zostać każdy, kto dotrze po SSH. Przy haśle fabrycznym Napraw otwiera kartę Hasło logowania SSH w Kontach; przy braku hasła zaloguj się po SSH i uruchom passwd
Aktualizacje systemuZainstalowane aktualizacje czekają na restart albo kernel nie jest gotowy na następny start (wtedy: nie restartuj, zgłoś do wsparcia). Wyłączone automatyczne poprawki bezpieczeństwa trafiają do Do rozważenia
Panel serwowany otwartym tekstemWłasny port panelu odpowiada w sieci bez szyfrowania — Schowaj za proxy to zamyka
Tryb deweloperskiBONEIO_DEV uruchamia trasy deweloperskie — właściwe na płytce testowej, nigdy na sprzedanym urządzeniu

Kontrole, które przechodzą, też są wypisane — zwinięte. To, ile rzeczy sprawdzono, nadaje sens informacji „dwie do zrobienia".

Po aktualizacji

Przy pierwszym wejściu do panelu po aktualizacji pojawia się monit kierujący do tej sekcji — ale tylko jeśli coś jest do zrobienia. Wyświetla się raz na wersję i wystarczy go zamknąć; nic tu nie jest wymuszane.

Kto to widzi

Wyłącznie administratorzy, również przez API. Lista tego, co jest jeszcze otwarte, to lista zakupów dla kogoś niepowołanego, więc konto tylko do odczytu nie dostaje nic — nawet samego przeglądu.

Osadzanie panelu w innych stronach

Karta Osadzanie panelu w innych stronach decyduje, które strony mogą wyświetlić panel w ramce. Od 1.6 domyślnie tylko to urządzenie.

Tego właśnie potrzebuje dodatek boneIO Black do Home Assistant: dodatek proxuje każdy sterownik, więc strona w ramce jest podawana spod adresu samego Home Assistanta i liczy się jako ta sama witryna.

Więcej wymaga układ, w którym dashboard celuje kartą iframe albo panel_iframe wprost w https://<sterownik>:8443. Wtedy dopisz adres Home Assistanta w polu na karcie — sam adres serwera, bez ścieżki.

Wyłączenie ograniczenia pozwala dowolnej stronie w internecie wyświetlić Twój panel w ramce. Dokładnie tego potrzebuje clickjacking.

Zmiany działają po restarcie aplikacji.

Sensor w Home Assistant

Sterownik publikuje binary_sensor.<urządzenie>_security — encję diagnostyczną z device_class: problem, włączoną, dopóki coś jest do zrobienia.

Szczegóły jadą w atrybutach encji:

AtrybutZnaczenie
actionableIle pozycji do zrobienia — to one zapalają sensor
summaryCzytelny opis tych pozycji, do powiadomienia
advicePozycje „do rozważenia", celowo osobno
critical, warning, infoLiczniki według wagi
recommendationsTa sama lista w formie do szablonowania

Powiadomienie oparte na summary opisze dokładnie to, co zapaliło sensor — a nie porady, przez które automatyzacja mówiłaby coś, czego sensor nie mówi.

Zdarzenia bezpieczeństwa w Home Assistant

Sensor powyżej mówi, jak sterownik jest skonfigurowany. Druga encja diagnostyczna, Security events, mówi, co się z nim dzieje: odpala się, gdy ktoś uporczywie wpisuje błędne hasła, więc automatyzacja może wysłać Ci powiadomienie — tak samo, jak reaguje na naciśnięcie przycisku. Nazwa encji w Home Assistant jest po angielsku.

ZdarzenieKiedy
password_guessingWłaśnie wyczerpał się limit błędnych haseł — w formularzu logowania, w oknie Potwierdź hasło, w formularzu zmiany własnego hasła albo w karcie Hasło logowania SSH. Raz na serię, nie przy każdej odrzuconej próbie
session_signed_outZalogowana sesja została wylogowana po pięciu błędnych hasłach

Każde zdarzenie niesie nazwę konta (przy logowaniu — to, co wpisano), formularz (where: login, confirm, password_change albo ssh_password), czytelny message do powiadomienia i adres, z którego przyszło (client, pomijany, gdy to sam sterownik).

Zdarzenia nie są przechowywane: takie, które wydarzy się, gdy Home Assistant albo broker nie działa, nie zostanie później powtórzone. Sterownik bez MQTT nadal normalnie loguje użytkowników — po prostu nie ma komu o tym powiedzieć.