Avatar
Honza Pobořil
e980a440fae6f0844f4eac129597eff7e34b0633dbd12f13d3ce0d135dd9466f
Freelance web developer - Vue, Typescript, serverless, Bitcoin Helping businesses to accept Bitcoin - www.BeruBitcoin.cz Verified map of businesses with LN: https://mapa.berubitcoin.cz

Because that only part does not use Nostr protocol 😉

Hoaxy z východu ;-)

Někteří bitcoineři šíří mýtus že provozovat full-node v Dockeru je nebezpečné. Je to pravda?

TLDR; Není. Snad každou technologii jde použít i nebezpečně. Konkrétně btcpayserver-docker dodržuje best practices a je bezpečný. Konkrétně Umbrel měl ve zvyku stack stavět blbě a asi by to tak dělal s jakýmkoliv supervizorem.

Toto je konverzace s jedním takovým bitcoinerem šířícím tento mýtus. PK je on a HP jsem já. (Nechci ho jmenovat, protože je to třeba dobrý člověk, jen má potřebu hejtovat něco co nezná a nechce připustit že se mýlí.)

PK: Zrovna docker moc dobrou izolaci nema, spis naopak, veskere porty otevre uplne verejne, nepredpokladam, ze jste si ho nakonfiguroval do modu, aby si nehral s iptables.

Dalsi vec, docker vzdy bezi pod root uctem.

Daleko lepsi je pouzit podman v user nebo staci i oddelit systemove ucty

HP: Zní mi to jako úplná kravina, ale rád se nechám poučit.

Pro kontext: Docker používám profesionálně.

Vím že otevírá jen explicitně definované porty a jen do těch virtuálních sítí které mu definuju. Stejně tak s volumes. Že Docker běží jako root mě trápí asi tak jako mě to trápí u systemd.

PK: Honza vsak sem tam psal to 'vychozi' nastaveni, jinak viz treba ockovaci prukazy na Mickey Mouse nebo Adolfa Hitlera, to vse bylo diky tomu, ze docker vystavuje exposed port vsude (na 0.0.0.0) a pokud to nemas v nejake dalsi infrastrukture, kde bys udelal FW, tak na tom konretnim stroji to IPtables obchazi... resp me tam nefungovalo ani drop pravidlo, stejne ten dnat nadtim mel prednost, coz sem sam nepochopil, ale nemam rad, kdyz me cokoli hrabe do iptables...

Ja zas pouzivam podman, ma vic vyhod oproti dockeru, treba i to, ze nepotrebuje zadny socket/daemon aby to fungovalo, coz kdyz spadne u dockeru tendle daemon, tak sletej vsechny kontajnery. Zaroven, kdyz si utocnik udela volume na tendle docker socket, tak ma prakticky neomezeny root pristup k hostu (protoze docker bezi pod rootem).

Se systemd bych to nesrovnaval, ten pousti izolovane, kdyz se tak unita napise a do systemd samotneho nikdo nesaha, u dockeru ano (viz socket)

HP: Myslím že předpokládáš použití Dockeru způsobem, který není doporučován - něco v Dockeru a něco mimo něj.

Docker je zamýšlen jako náhrada supervisoru s tím, že všechny aplikace běží v něm. Pak je správně že si převezme iptables a o porty se stará on.

Kritizovat Docker že to dělá a že proto není bezpečný je jako kritizovat lopatu za to že se s ní špatně dýchá když sis jí narval do krku.

PK: Honza ne, to ne myslim,.. i kdyz vse pobezi v dockeru, tak to nevyresi problem, ze vsechny kontajnery maji potencialne pristup k docker socketu a muzou si pak delat co chteji.

Samozrejmne zato muze uzivatel, kterej pouziva neoverene image, ktere si nezkontroluje, ale jde oto, ze docker tento vektor utoku umoznuje, podman nebo cri-o nikoli. Takze i mene zkuseneho uzivatele to vlastne chrani.

PK: Honza a ano, ad iptables, melo by to bezet v DMZ a nejakej ingress nadtim, kde je firewall, ale kdo si doma na full node bude delat oddelene VLANy? (teda krome me)

HP: Pořád jsi mě nepochopil. Mluvím o standardní default instalaci Dockeru použitého tak jak se má - je to jediný supervisor v systému, mimo něj neběží žádné služby kromě těch nutných pro OS. Pak Docker je bezpečný.

Jestli nesouhlasíš, tak jak konkrétně bys získal kontrolu nad zbytkem systému pokud kontroluješ root v kontejneru? (A nepovolil jsi mu explicitně nic.)

Jak konkrétně se z venku připojíš na port služby v kontejneru, který ten port nemá v exposed?

PK: Honza Pobořil kontajner, ktery nema zadny exposed port ti je k nicemu, protoze ano, spravne si psal, nikdo se k nemu z venku nedostane. Jelikoz z principu kontajneru je 1 proces == 1 kontajner (ano znam prasarny kde se pousti vic, ale to pak nepotrebuju kontajner a uz je to virtual) a pokud tedy mam cisty system a chci udelat blbej LAMP, tak musim pustit 1 kontajner s DB (treba MySQL) a druhej treba s Apache+ModPHP...

Jelikoz kazdej ma svoji sit, tak musim udelat expose mysql portu, aby se nato apache pripojil.. A diky tomu, ze to narve do IPTables, tak me to ten MySQL port udela dostupny do celeho sveta, pokud ten stroj nema nadrazeny firewall (v nejake te DMZ)...

oproti tomu, kdyz mam mysqldb a apache na jednom VM, tak muzu pustit DB v 127.0.0.1 a napojit nato apache pres 127.0.0.1 nebo i pres UNIX socket a todle riziko nehrozi.

A to je presne to, co tehda zneuzili v te eRousce pro certifikaty, protoze meli takhle exposnutou nejakou databazi/API nebo tak neco, kdyby to nemeli v dockeru (resp v tomdle pripade kontajneru vseobecne), tak by to meli bindnuty na loopback interface a todle by se jim nestalo...

HP: Tak takhle použité je to samozřejmě blbě - databáze má být v jednom stacku (třeba pomocí Compose nebo Kubernetes) s privátní sítí. To je samozřejmost pro profesionála a všechny slušné stacky jako BtcPay jsou tak stavěné.

Ale připadá mi že jestli ti toto musím vysvětlovat, tak asi Docker fakt neznáš a jen šíříš ty samé bludy co slýchávám v této komunitě už delší dobu.

PK: Honza ale me to vysvetlovat nemusis, jen rikam, jak fungujou veci jako umbrel apod, kde to je kupa docker imagu nejlepe pustena pres docker compose nebo tak...

Jinak sem tu drive nic o tomdle nepsal...

To ze se kontajnery pouzivaj blbe je problem toho, ze to vicemene vzniklo od lidi, co nerozumi systemum, proto to ma tydle neduhy...

Hlavni cil byl mit to na develop, to ze to tem frontendak zacal chybne pouzivat na produkci je proste chyba uzivatele, ne technologie.

Takze spravne pises, ze by se to melo pouzit v kubernetes, nebo treba by stacilo pouzit i net host.

Ale to nic nemeni natom, ze docker run neni pro produkcni system vhodny, od toho je prave ten kubernetes treba.

HP: Docker Compose je úplně v pohodě pro jeden host. Osobně mám prozkoumaný a aktivně používám BtcPay Docker stack a je postavený fakt bezpečně. Nebál bych se vedle něj na stejném hostu mít puštěný děravý image.

Umbrel jsem viděl jen jednou na Githubu a byly tam nějaké blbosti co nejsou dobrý nápad dělat, ten určitě nedoporučuji.

Takže máme teď jasno a nebudeš se už podílet na šíření hoaxů v tvém prvním komentáři? 😉

PK: Honza tak hoax to neni... stojim si zatim, ze docker as-is bezpecny neni, je to pro vyvoj, ne pro produkci...

Bohuzel se docker stal synonymem pro kontajner...

Takze,

Docker na lokalni vyvoj OK, docker compose (nebo swarm) pro produkci fajn, ale pokud kontajner, tak k8s nebo i treba ten docker run, ale v dmz prostredi... nato se snazim poukazat

HP: Docker Compose se jen nástroj na deklarativní spouštění kontejnerů. Není nic co by uměl navíc oproti Docker CLI, jen je praktičtější pro multi-container stacky.

Myslím že začátečník, který udělá botu s cli jí asi udělá i s Compose a vlastně skoro jakoukoliv technologií. Ale pokud spustí jeden kontejner bez nějakých parametrů, tak by default to bude bezpečné. Pokud potřebuje povolit ingres traffic, tak nejjednodušší způsob a zároveň ten který je ve všech tutorialech, tak je pořád bezpečný. Docker není ten typ nástroje, který vezme do ruky laik a automaticky mu to ustřelí nohu (jako iptables) - něco nebezpečného povolit chce fakt hodně ignorace.

Můžeš být konkrétní v čem je tak nadstandardně nebezpečný?

PK: Honza docker compose, pokud sem to dobre pochopil, umi trosku fungovat jako DMZ mezi tema kompoentama, ktere tam specifikujes..

nepsal sem "nadstandartne nebeznecny", spis jen to jak funguje.. nebezpecny se stava jen tim, ze umoznuje (coz sem jiz psal) prevzit kontrolu diky socketu pod ROOTem, coz kdyz nejaky trefeny image (ano zas uzivatelska chyba) si namountuje socket dovnitr, tak muze delat cokoli...

Viz image, ktere treba tezili monero/nebo co to bylo...

HP: Docker Compose i Docker CLI umí kontejner připojit k různým virtuálním sítím v rámci jednoho hostu, clusteru i fyzickým interfaces. Ne, Compose není z principu bezpečnější.

Myslím že v jakékomkoliv supervisoru jde procesu zpřístupnit třeba /dev.

HP: Ale nemusíme se shodnout na tom co je lepší. Jde mi jen o to aby se přestal šířit hoax, že Docker je horší řešení pro full node. Tento hoax slýchávám skoro vždy když se zmíním o tom že používám btcpayserver-docker a podezřele často od uživatelů cadr.

Nedal jsi mi žádný technický argument dokazující že btcpayserver-docker je méně bezpečný.

Takže prosím, můžete si šíření tohoto hoaxu odpustit?

https://Talktv.cz za Bitcoin

Standa se do toho neměl, tak mu to musí udělat fanoušci 😇

Poukaz si můžete koupit tady:

https://bit.ly/talktvbtc, přijde vám za pár hodin.

(Ano, je to totálně neoficiální, neschválené, ale funkční. 😉)

Bitcoin Dinner Brno

Čtvrtek 15. 6. v 18h v Nett's BBQ

https://maps.app.goo.gl/hPPPc9CECcvFFW5r8?g_st=ic

Platba Bitcoinem samozřejmostí.

Nejvíce mi chybí opakované platby pro typické subscription služby.

Jo, můžu dát poskytovateli svůj lnurl-withdraw, ale kdo má fullnode s lnbits?

Musí to umět laické peněženky jako Phoenix nebo Breez. A ideálně s lepším zabezpečením než karty, tedy možnost flow cca:

1. Ve službě vyberu plán jako teď.

2. Vyberu platební metodu.

3. Pokud kartou, tak aplikace dnes typicky třeba Stripe předá kolik a jak často se má strhávat.

Pokud Bitcoinem, tak by podobnou strukturu zakódovala do LNURL.

4. Uživatel klikne na odkaz nebo ofotí QR kód.

5. V peněžence uvidí co schvaluje a potvrdí.

6. Peněženka si uloží opakovanou platbu a na callback pošle LNURL-W odkaz.

7. Aplikace pak jej bude používat pro stahování peněz.

Flow se ale může klidně obrátit tak, že peněženka bude aktivně platit na LNURL-Pay, sama si ohlídá intervaly (bude se na pozadí spouštět), případně může do toho nějak zapojit uživatele. Aplikace pošle mail když peníze nedorazí, jak to dnes stejně dělá s kartami. Tahle varianta by byla lepší pro non-custodial peněženky.

Odroid M1 vypadá na dobrý HW.

Ve srovnání s RPi má v procesoru i crypto extension a TPU, takže je výkonnější v různých drobnostech když slouží jako NAS, Home Assistant i full node.

Vzal jsem verzi s 8GB RAM a 128 GB eMMC. Externí HDD na zálohování a blockchain. Meanwell zdroj s baterií.

Všechen SW v Dockeru pro dobrou izolaci služeb a za Cloudflare Zero trust, takže služby vystavené do Internetu chrání WAF a domácí IP není veřejně vidět.

Jo a tady indoktrinace mladé generace:

https://video.xx.fbcdn.net/v/t42.1790-2/351975198_208777531595794_7160196859930028472_n.mp4?_nc_cat=108&ccb=1-7&_nc_sid=985c63&efg=eyJ2ZW5jb2RlX3RhZyI6InN2ZV9zZCJ9&_nc_ohc=evkbX30OmfoAX9RJ8H6&_nc_ht=scontent-kul2-1.xx&oh=00_AfAYwWuVR5LxTTU43tv7QSQA8NzH51PFjnsfLOw6y295cA&oe=6488E63E

Ale možná se to taky nepovede. Tady bude hodně záležet na tom jestli se jim opravdu povedlo vše udělat dobře - realita bude vypadat reálně, drobnosti jako že budete vidět nos tam kde jej máte, vaše ruce se nebudou trhat, zorné pole bude velké a zároveň rozlišení vysoké, nebude polovině lidí s tím blbě, baterie vydrží rozumně, ovládání aplikací bude fungovat dobře, … Prostě spousta drobností ve kterých konkurence selhávala. Snad to Apple neuspěchal a opravdu využili svůj potenciál.

A ten potenciál je obrovský: Nikdo neumí dnes tak dobré procesory pro spotřební elektroniku. Nikdo neumí nové technologie dostat tak rychle z laboratoře na výrobní linky. Mít nejlepší odborníky v tak široké škále technologií a pak je integrovat do jednoho produktu. Dobrý design HW. Produkt pak dobře prodat. A to vše dohromady v jedné firmě.

Apple Vision Pro

Apple to zase dokázal.

Věřím že to je produkt významem srovnatelný s iPhone, kdy si to většina uvědomí až zpětně.

Že konkurence bude dekádu konkurovat hlavně cenou, protože srovnatelný produkt nabídnout nedokáže.

Za tu dekádu promění způsob jakým ... to ještě nevíme. iPhone změnil komunikaci a "personal computing", ale když jej v roce 2007 Steve Jobs představil, tak jsme jasně neviděli co všechno to změní, jen tušili.

Kdo se zajímáte o spotřební elektroniku, tak ta hodina za to stojí:

Začíná od 1:21:00

https://events-delivery.apple.com/0105cftwpxxsfrpdwklppzjhjocakrsk/m3u8/vod_index-PQsoJoECcKHTYzphNkXohHsQWACugmET.m3u8

@plebstr Just can not close it easily 🤷‍♂️

Můj node má krámy. Budu řešit. Díky za report. 🙂