SDS v síti: tipy, příklady, nastavení
SDS v síti
Moduly SDS jsou samy o sobě velmi schopné, a lze je dále rozšiřovat i vhodnými aplikacemi v rámci počítačové sítě.
Zabezpečení
Základní zabezpečení je umístit SDS za firewall a router.
Doporučená sestava:
ISP ---- pfSense (NetGate) ---- Router (firewall) | |---- SDS | +---- počítač atd.
Doporučený firewall je stroj s pfSense, ale samozřejmě není to nikde předepsáno. Pokud jste spokojeni se svou, jinou, volbou, držte se ji. Existuje celá řada identických, nebo i lepších alternativ. Toto doporučení je zde pro ty, kteří neví a chtějí si nechat do začátku poradit. Kritické je vždy především firewall správně nastavit.
Router obvykle obsahuje (další) firewall v sobě. Rozdíl zde však je - samostatný firewall typu pfSense umí celou řadu věcí (např. pfBlocker-NG, nebo pokročilý filtr firewallu atd.), zatímco typicky základní firewall v routeru má jen typicky základní funkčnosti filtru.
Zcela určitě nepřipojujte SDS přímo do Internetu, nebo do DMZ portu atd. - SDS musí být "skryto" za firewallem.
Vzdálený přístup z Internetu
SDS je typicky skryto za NATem v routeru. Pak je potřeba ručně nastavit průchod skrz NAT pro potřebné TCP a UDP porty.
Další záležitost k řešení je IP adresa. Pokud nemáte pevnou veřejnou adresu (ke které si eventuálně umíte i udělat svůj veřejný DNS záznam), lze s výhodou využít funkci Dynamic IP (DynDns, No-IP, a řada dalších služeb, některé zdarma, některé placené).
Pokud s tímto chcete poradit, primárně se musíte domluvit se svým ISP.
Obecně není doporučeno vystavovat HTTP rozhraní modulu SDS veřejně ven na Internet (neplatí pro HTTPS rozhraní u modulů SDS). Typicky se tato potřeba objeví, pokud chcete prezentovat data z SDS - to je však vhodnější řešit přes nějakého prostředníka, viz dále (např. Grafana).
Odesílání emailu z SDS
SDS pracuje s protokolem SMTP na portu 25. Dnes už je problém sehnat veřejnou službu, která na tomto portu pracuje. Proto je standardní řešení spustit si lokální SMTP RELAY.
Příklad: máme účet (a veřejný SMTP server) na službě HOSTING, která podporuje jen SSL/TLS a chceme tam odeslat email z SDS (který ale komunikuje jen přes port TCP 25).
HOSTING === (port 456 ) === SMTP RELAY === (port 25) === SDS
Pak musíme nainstalovat a správně nastavit SMTP RELAY. To je specifický SW, který běží na lokálním serveru, přičemž tento server má přístup jak do Internetu, tak se na něj "dostane" i váš modul SDS. Typicky je takový server umístěn ve stejné (nebo blízké lokální) síti, jako právě ono SDS.
Dále musíme mít účet u SMTP SERVERu, který běží na službě HOSTING. Pak známe jeho celé doménové jméno (nebo IP adresu) a port, a dále uživatelské jméno a heslo.
Příklad: instalace SMTP RELAY na rPI
rPI je nejsnazší příklad, a tento postup je obecně replikovatelný na jiném Linux-based systému.
1. instalace postfix a balíčku pro SASL identifikaci (bez toho nefunguje přihlášení na vzdálený smtp server)
sudo apt-get install postfix sudo apt-get install libsasl2-modules
2. editujte konfiguraci
sudo nano /etc/postfix/main.cf
3. zapište přístupové údaje k vzdálenému SMTP SERVERu
sudo nano /etc/postfix/relay_passwd sudo /usr/sbin/postmap /etc/postfix/relay_passwd
3. restartujte postfix
sudo service postfix restart
4. sledujte jak funguje
sudo tail -f /var/log/postfix.log
Kritické je správně nakonfigurovat funkci RELAY a SSL/TLS, v souboru main.cf . Výchozí obsah je nutné upravit, jinak to z principu nebude fungovat.
Vzorový obsah /etc/postfix/relay_passwd souboru, pro tento příklad:
wes1-smtp.wedos.net user@domena.cz:heslo wes1-smtp.wedos.net:465 user@domena.cz:heslo
A dále obsah /etc/postfix/main.cg souboru, pro tento příklad:
x
Samozřejmě musíte si to upravit sami dle svého poskytovatele SMTP serveru !
Archivace a zobrazování dat
Dnešní jednoznačný trend je použití MQTT protokolu a zobrazení pomocí Grafana služby. Toto vše se instaluje bokem na vlastní lokální server, a SDS tyto služby "krmí" (a naopak, SDS lze odsud i ovládat).
Zásadní výhoda je oddělení přístupu k archivaci a prezentaci všech dat, od SDS samotného, takže uživatelé se k SDS prakticky nedostanou, a to v klidu dělá svou práci (řízení a dohled). Toto je zejména kritické, pokud mají být data prezentovány na Internetu.
Samozřejmě MQTT a Grafana není jediný způsob. Vše lze řešit i "ručně", např. vlastní databází na serveru, která se plní přes HTTP GET/POST protokol (základní funkčnost SDS), a zobrazení webovým serverem s vlastními stránkami, viz skvělý příklad: odwww.nesvara.cz.
- Co je to MQTT
MQTT je komunikační protokol, který za vás plně SDS řeší. Tímto protokolem můžete posílat data z SDS na server, nebo naopak SDS může ze serveru data dostávat (při jejich změně).
MQTT pracuje na principu položek - vždy máte "název položky" a její datový obsah. Příklad: "teplota_venku" a obsah "25".
Server udržuje jen poslední aktuální stav předávaných položek. Pokud chceme hodnoty průběžně archivovat, např. abychom je mohli i zobrazit a procházet, potřebujeme je uchovávat v databázi.
Typický, doporučený, MQTT server (odzkoušený i na rPI) je "Mosquitto".
- Databáze
Zde je velmi vhodná databáze "InfluxDB". Zejména protože ji lze vhodně "krmit" a protože ji lze přímo připojit do Grafany, bez dalších složitostí.
Krmení databáze je jediný obtížný oříšek. Lze to provést službou "Telegraf" nebo si napsat malý skript, nebo to nakonec může dělat i přímo SDS (přes HTTP). Nejvhodnější je vlastní skript (většina lidí si je píše na rPI v Pythonu), nebo pak ten Telegraf. Obě metody berou aktuální data z MQTT serveru a krmí daty databázi, a uživatel se už nemusí o nic starat.
- Zobrazení
Typicky požadujeme webové, interaktivní zobrazení hodnot a jejich průběhů. Dostupné z místní sítě i z Internetu. Zabezpečené.
To vše nabízí Grafana. Lze ji jednoduše instalovat na server, nakonfigurovat (propojit s databází) a pak si vytvořit zobrazovací obrazovky (Dashboard).
Home Assistant
SDS lze integrovat (připojit) do systému Home Assistant. Je potřeba do HA nainstalovat vhodnou šablonu, typicky je potřeba si ji vytvořit na míru - příklady jsou na našem fóru.