Debian 11 + Home Assistant Supervised + HACS + security - 1. rész
2021. október 24. írta: flogi

Debian 11 + Home Assistant Supervised + HACS + security - 1. rész

Alap működés elindítása

Nagy fába vágom a fejszémet, megpróbálom bemutatni, hogyan tehetjük a meglévő rendszerünket biztonságosabbá. Hazánkban a legtöbbet használt open source okos otthon megoldás a Home Assistant (ez derült ki az előző blog postomból), így ezt installálom egy debian 11 operációs rendszerre, majd ezen keresztül megnézzük, mit kell módosítanunk a default telepítésen a biztonság növelése érdekében. Ehhez hozzátartozik a routerünk konfigurálása is, aminek a bemutatása szinte lehetetlen, mert ahány gyártó, annyi menüstruktúra, de a fő szabályok általánosságban alkalmazandók.

ha-debian-logo.png

Először is szükségünk van egy operációs rendszerre, amin majd a HomeAssistant-ot futtatni szeretnénk. A kutatásomból az látszott, hogy debian és ubuntu rendszereken futtatjuk leggyakrabban, feltételezem azért, mert így egyéb felhasználása is lehetséges a rendszerünknek, így a folyamatot egy debian 11 telepítésével kezdem. Sokszor hallom, hogy a default telepítés elegendő, de ez egy operációs rendszernél nem tudom mennyire igaz, hisz már a lemezek particionálásánál is választanunk kell. Az lvm jó választás, de ahhoz már érteni kell a beállításához, hogy a későbbiekben szükség esetén növelni tudjuk a méreteket (de ez lenne a helyes választás). Aztán jön a következő választásunk, hogy minden egy partícióra kerüljön, vagy legyen külön a /home, /var és /log partíciónk (szintén ez a jó választás). A külön particiók azért jók, mert ha lvm-re tesszük ezeket és a későbbiekben látjuk, hogy fogy a hely az adott partíción, meg tudjuk növelni azt (ezért már előre gondolkodva nem osztjuk ki a telepítéskor az összes helyet a kötetünkből). A telepítéseknél fő szabályként elmondható, hogy csak a minimális/szükséges szolgáltatásokat telepítsük, mert ezzel kevesebb támadási felületet adunk a hackerek számára. Ha tudjuk, hogy nem kell grafikus felület, akkor ne is telepítsük azt. Távolról (ide tartozik a helyi hálózatunk is) viszont szeretnénk elérni a gépünket, így szükséges az ssh szolgáltatás telepítése. A jelszavak megadásánál figyeljünk oda, hogy kellő bonyolultságú (kisbetű, nagybetű, szám és legalább egy speciális karakter) és hosszúságú (minimum 12 karakter) legyen és ne a Jelszo.12345 -öt adjuk meg ;)

00-debian-11-install.png

A sikeres telepítést követően már van egy alap beállításokkal rendelkező debian 11 operációs rendszerünk, ssh szolgáltatással a távoli elérés érdekében. Ha belépünk a frissen telepített leendő szerverünkre és megnézzük, hogy milyen portokat nyit meg (ezeket a portokat lehet távolról megszólítani), egyelőre ez csak két port lesz. Ehhez az alábbi parancsot adjuk ki, ami a nyitott tcp és udp portokat is listázza.

ss -lanptu

01-debian-11-openports.png

Az alap debian telepítésben nincs benne a sudo csomag, így azt utólag kell felrakjuk. Nekem linux alatt a kedvenc szerkesztőm az mcedit, így azt is installálni szoktam, de ez már a saját kényelmem miatt van, mások a nano-ra esküdnek és ne feledkezzünk meg a vi rajongókról sem.

apt install sudo mc

A sudo csomagra azért van szükségünk, mert a root usert nem használjuk. Egyszerű felhasználóként lépünk be a rendszerbe és a sudo-t felhasználva installálunk és módosítunk a fájlokon. Az alap debian 11-ben a root ssh hozzáférése is tiltva van, ami nagyon helyes, ne is akarjunk távolról root-ként belépni. Nem gondolom, hogy az a plusz egy parancs kiadása helyett érdemesebb egy jó nagy támadási felületet megnyitni a rendszerünk felé. Ha fenn van a sudo csomag, akkor a telepítés során létrehozott felhasználónkat adjuk hozzá a sudo csoporthoz. Ha ezt már ssh kapcsolaton keresztül végezzük, akkor az alábbi parancsokat kell kiadjuk:

# a belépett felhasználóról lépjünk át a root userre

su - root

# adjuk hozzá a felhasználónkat a sudo csoporthoz

usermod -a -G sudo a_mi_felhasználónk

# lépjünk ki a root sessionből, majd a rendszerből is és ssh-zzunk be újra, mert csak ezt követően fog működni a sudo parancs a felhasználónkkal.

02-debian11-sudo.png

De melyik HA verziót telepítsük? Van ugye a Core és a Supervised. A másikat szoktam, mert a Core eléggé alap, szeretem, ha minden lehetőségem megvan, amit egy rendszer biztosíthat. Most mind a két verziót megcsinálom. Akit inkább a Supervised telepítése érdekel, ezt a részt át is ugorhatja.

Home Assistant Core telepítése

Következő lépésként jöjjön a Home Assistant Core telepítése a gyári leírás szerint. A parancsokat azért ideteszem és a képernyőképeket is a folyamatról.

sudo apt update

sudo apt upgrade

sudo apt install -y python3 python3-dev python3-venv python3-pip libffi-dev libssl-dev libjpeg-dev zlib1g-dev autoconf build-essential libopenjp2-7 libtiff5 libturbojpeg0 tzdata

 

 03-debian11-hainstall.png

sudo useradd -rm homeassistant

sudo mkdir /srv/homeassistant

sudo chown homeassistant:homeassistant /srv/homeassistant

sudo -u homeassistant -H -s

cd /srv/homeassistant

python3.9 -m venv .

source bin/activate

python3 -m pip install wheel

pip3 install homeassistant 

hass

04-debian11-hainstall.png

05-debian11-hainstall.png

06-debian11-hainstall.png

Home Assistant Supervised telepítése

Többször olvasom, hogy felraktam a HA-t, de nincs meg a Supervisor menüpont. Igen, ez akkor fordul elő, ha a core verziót telepítjük, nem pedig a Supervised-et, de kezdjünk is bele, melyhez először a függőségeit kell installálnunk.

Először a docker-ce csomagjait telepítsük:

sudo apt install apt-transport-https ca-certificates curl gnupg

curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

echo \
"deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] \
https://download.docker.com/linux/debian \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

sudo apt update

sudo apt install docker-ce docker-ce-cli containerd.io

Végül ellenőrizzük, hogy a docker szolgáltatásunk elindult -e:

sudo systemctl status docker

Hiányzik még a függőségek közül a network manager és a jq csomag, így hát telepítsük azokat is:

sudo apt install network-manager

sudo apt install jq

Ha megvagyunk minden előfeltétellel, következhet maga a Home Assistant Supervised telepítése a gyári leírás alapján.

sudo -s

curl -Lo installer.sh https://raw.githubusercontent.com/home-assistant/supervised-installer/master/installer.sh

bash installer.sh --machine generic-x86-64

12-ha-supervised.png

Innentől a Core és a Supervised verzióban is ugyanazt kell beállítanunk a rendszer első üzembe helyezésekor.

Ha megvagyunk mindennel, újra szoktam indítani a teljes rendszert, hogy lássam, minden szolgáltatás magától elindul -e. Ha igen, nyissuk meg böngészőben a Home Assistant szerverünk 8123-as portján elérhető szolgáltatását és végezzük el az alap beállításokat.

Weboldal első indítás, alap beállítások megadása

Itt ismét figyeljünk a jelszó bonyolultságára, mert az egyszerű és könnyen kitalálható jelszavakkal fognak a támadóink először bepróbálkozni. Kerüljük az admin, root, administrator felhasználóneveket is, nevesítsünk mindenkit, aki a rendszerünkbe belép.

07-ha-webconf.png

Következő ablakban nevezhetjük el a rendszerünket. Ide azért ne adjunk túl egyértelmű nevet. De miért is mondom ezt? Később rávilágítok erre is.

08-ha-webconf.png

A következő ablakban kell beállítani, milyen anonim adatok átadásával segítjük a fejlesztést. Egy kicsit öncélú, de nem adok át adatot a rendszerem védelmében. Sokszor olvassuk, hogy megtörik a céges rendszereket és ellopnak belőle adatokat. Akár mennyire is anonymizált az adat, lehet mégis csak vissza tudják követni, kitől/honnan származik.

09-ha-webconf.png

Utolsó lépésként már most felrakhatunk integrációs szolgáltatásokat, amit most nem teszek meg, mert ez egy demó célú telepítés, úgyhogy fejezzük is be.

10-ha-webconf.png

A core vagy a supervised rendszer immáron működőképes, csak egy menüpont a látszólagos különbség, de mi látszana most belőle, ha így kiraknánk az internetre, hogy távolról is elérjük?

11-ha-webconf.png

13-ha-first-page.png

A shodan.io találati listájában az alábbi adatok jelennek meg. Írtam a rendszer elnevezésénél, hogy ne legyünk túl bőbeszédűek, mert a Location Name részen ez is megjelenik. (Nem a most telepített verzióról készült a kép, hisz azt még nem is raktuk ki az internetre.)

08-shodan-ha-info.png

HACS telepítése

Hogy teljes legyen a Home Assistant telepítésünk, utolsó lépésben élesszük fel hozzá a HACS modult. Lépjünk be a gépünkbe ssh kapcsolaton (windows alól használhatjuk a putty programot), váltsunk ár root userre és installáljuk a gyári leírás alapján. Ide is csak a parancsokat teszem fel és a képernyőképeket.

wget -O - https://get.hacs.xyz | bash -

01-hacs-install.png

Ha sikeresen installáltuk, indítsuk újra a gépet, majd folytassuk a HA weblapjának megnyitásával. A Konfiguráció menüpont alatt tudjuk felvenni a HACS-ot, mint integrációt.

02-hacs-ha.png

Az integráció hozzáadása gomb megnyomását követően a kereső mezőben írjuk be a HACS szót, majd a találati listában kattintsunk rá a telepítéshez.

03-hacs-ha.png

Pár kérdést kapunk a folyamat során, melyeket tudomásul kell vennünk.

04-hacs-ha.png

Ha továbbjutottunk, létre kell hozzunk egy github fiókot, mert a HACS integrációkat a github-ról tölti le a rendszer.

05-hacs-ha.png

Ehhez egy új böngésző ablakban nyissuk meg a github.com-ot és regisztráljunk magunknak egy új fiókot.

06-hacs-ha.png 07-hacs-ha.png 08-hacs-ha.png

 

A sikeres regisztrációt követően lépjünk be a github fiókunkba, majd a HA HACS oldalán megjelenő linkre kattintsunk.

09-hacs-ha.png

A HACS által adott kódot adjuk meg ezen az oldalon.

10-hacs-ha.png

Szépen vezet az installációs folyamat, csak várnunk kell kicsit a visszajelzésekre.

11-hacs-ha.png

A github-on a sikeres device regisztráció folyamat vége:

12-hacs-ha.png

Ekkor a HA oldal is továbbjut a végéig, ahol területhez rendelhetjük az integrációnkat.

13-hacs-ha.png

Végezetül az integrációk között és a bal oldali menüben is megjelenik a HACS integráció.

14-hacs-ha.png

Ha most a gépünkben megnézzük, milyen portok vannak nyitva (tcp és udp), az alábbiakat látjuk (a rendszeren belül kiadva a parancsot). Ebből a listából két portról van tudomásunk, amit szerettünk volna, hogy elérhető legyen:

  • 22 - ssh (ezen érjük el távolról a gépet)
  • 8123 - HomeAssistan web port

Ha most védelem nélkül kitennénk a rendszerünket a nyílt internetre, akkor a többi port is elérhető.

15-ha-hacs-openports.png

De mi látható kívülről a gépünkből? Ehhez egy másik gépet használok, amin a Kali linux operációs rendszer fut. A portok ellenőrzéséhez az nmap nevű programcsomagot fogom használni.

nmap -p- -A -sV -sC -Pn --script=vuln 10.0.2.15 -oA ha-init-check -vvv

Ha a tcp portokat vizsgáljuk, látjuk távolról is a három nyitott portot, a szolgáltatást és a verzió információkat is.

001-nmap-chk-ha.png

002-nmap-chk-ha.png

004-nmap-chk-ha.png

Számunkra ezek ismert információk, de ha ezt a rendszert így kirakjuk a netre, akkor mások is ezen információkat egy egyszerű parancs kiadásával megismerhetik. A futtatott szoftververziók tudatában sérülékenységet kereshetnek a rendszerünk támadásához.

Egy ismert támadási forma, amikor közbeékelődünk a kommunikációba és lehallgatjuk azt. Ha nem titkosított, akkor könnyen szerezhetünk szenzitív információkat, mint felhasználónév és jelszó. Ha a most elindított rendszerünkkel folytatott kommunikációba belehallgatunk, akkor a belépés közben az adott információkat lehet megszerezni:

01-ha-login-wireshark.png

Eljutottunk odáig, hogy van egy működő rendszerünk, ami biztonságosnak tűnik, van bejelentkezési képernyő is. Funkcionálisan teljes értékű és sokan ebben az állapotában már kiteszik az internetre, de lássuk be, hogy biztonság tekintetében a beállításokkal itt még nem végeztünk. A szoftver verziók könnyen kinyerhetők távolról, egy közbeékelődéses támadással a jelszavunk is megszerezhető, mivel a HA alapból nem titkosított protokollt használ. A következő részben az eddig telepített rendszerünket fogjuk bizotnságosabbá tenni és megpróbálom bemutatni a kedves olvasónak, hogy milyen kockázatokat vállal, ha helytelen beállítások mellet internet irányából elérhetővé teszi a rendszerét. 

A bejegyzés trackback címe:

https://flogi-diyiot.blog.hu/api/trackback/id/tr8216731642

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

Koky25 2021.10.26. 14:01:32

Szuper, köszönjük. Várjuk a folytatást.
süti beállítások módosítása