Wstęp
Wielokrotnie wspominałem, że jednym z wymagań i ułatwień w hostowaniu własnych usług jest właśnie publiczny adres IP. Da się to jednak ominąć, wprowadzając co prawda pewne ograniczenia związane z funkcjonalnością i dostępnością pewnych zasobów, ale do hostowania strony internetowej lub NAS jest w zupełnie wystarczające. Z założenia nawet zwiększa bezpieczeństwo sieciowe – zamykasz w końcu porty na routerze, co uodparnia na skany portów i boty, a jednocześnie jest filtr na poziomie chmury CF.
Omówienie – czym to jest?
Posiadając publiczny adres IP, można z siecią skontaktować się bezpośrednio. Można dokonać aktu pingowania publicznego adresu, poprosić o treść na porcie 443 bądź próbować wejść do konsoli administracyjnej na porcie 22 (kto zgadnie co to może być?). I to wszystko przy użyciu jednego adresu IP. Ale właśnie, jesteśmy ludźmi rozumnymi (i leniwymi…) więc nie posługujemy się cyferkami jak jacyś jaskiniowcy, a podpieramy się domenami. Wielokrotnie wspominałem, że łatwiej się posługiwać adresem baremetal.work, niż 21.37.42.0:443. I to nas odróżnia od troglodytów – umiejętność posługiwania się ułatwieniami. Ale aby to miało ręce i nogi, należy posiadać publicznie osiągalny adres IP. No właśnie, należy, a to często jest pies pogrzebany. Nie wszyscy operatorzy oferują taki w swoim wachlarzu ofert, albo jest to cholernie droga opcja, albo nie ma możliwości odpowiedniej konfiguracji sieci (nie wiem, akademik? Wynajmowane mieszkanie? Proof of concept?). Jedną z odpowiedzi na to jest Cloudflare Tunnel, który pozwala na dostęp z zewnątrz bez posiadania publicznego adresu IP. Technicznie to demon, który nawiązuje połączenie z Cloudflare i je utrzymuje, pozwalając Cloudflare na kierowanie ruchu z zewnątrz do komputera z demonem (agentem). Agent może być w formie kontenera Docker – punkt dla tego rozwiązania, moja miłość do konteneryzacji jest raczej znana. Cloudflare Tunnel to fundament architektury Zero Trust w portfolio Cloudflare – nie ufasz każdemu, kto dobija się pod adres, ruch jest filtrowany i autoryzowany na poziomie chmury CF zanim w ogóle dojdzie do Twoich zasobów.
Przypadki użycia
Niektóre zostały już wspomniane – brak dostępu z zewnątrz do swojej sieci. Można także traktować to jako forma zabezpieczania swojej sieci jeśli nie czujesz się na siłach, aby konfigurować swojego domowego firewalla przy jednoczesnym uruchamiania usług dostępnych z zewnątrz. Nie czuje się wystarczająco kompetentny aby oceniać każdego firewalla i każde użycie CF pod kątem bezpieczeństwa, ale na pewnym etapie swojej przygody może okazać się pewniejszym rozwiązaniem, niż wysadzanie sobie sieci w powietrze. Sam używałem tego rozwiązania w momencie, gdy czekałem na publiczny adres IP u swojego ISP. Można także zastanowić się nad wdrożeniem domowego łącza zapasowego – jeśli domyślny, główny dostawca ma awarię, można przerzucić ruch na LTE/5G (CGNAT vel rak XXI w., gdzie wiadomo, jak jest z publicznymi adresami IP – średnio, a nawet słabo. Tak, jakby zatrudnić weganina w sklepie mięsnym. Niby da się, ale kto to widział…) i podnosić kontener z agentem cloudflared. Tak, agent się nazywa cloudflared i jest tym, co opisuję, a Ty czytasz. Wiesz opis – czytanie – lektura – wiedza – profit – nowe porsche. Skracając: opis – porsche. Cloudflared = porsche. Tak trudno to zrozumieć?! Ograniczeniem jest czysta wyobraźnia i… no właśnie. Są też pewne ograniczenia w darmowym planie, ale o tym później.
Wymagania i warunki
Żeby to wszystko ruszyło i żebyś mógł zacząć odkładać na wspomniane Porsche, potrzebujesz kilku klocków. Bez nich ani rusz:
- Własna domena podpięta pod Cloudflare – Zapomnij o darmowych, dziwnych domenach no-ip. Potrzebujesz normalnej domeny (jak moja
baremetal.work), której serwery DNS zostały przekierowane na Twoje darmowe konto w Cloudflare. - Maszyna, która to udźwignie (czyli cokolwiek) – Serwer NAS, Raspberry Pi, stary laptop pod łóżkiem czy pełnoprawny PC. Ważne, żeby działał wtedy, kiedy chcesz mieć dostęp do usług.
- Docker na pokładzie – Możesz instalować agenta bezpośrednio w systemie, ale szanujmy się – mamy XXI wiek. Konteneryzacja to czysta wygoda, a postawienie
cloudflaredw Dockerze zajmuje tyle, co mrugnięcie okiem. - Konto Cloudflare (Zero Trust) – Całkowicie darmowe. To tam, w panelu, wyklikasz swój tunel i dostaniesz specjalny token dla swojego agenta.
- Olej w mózgu – Choć Cloudflare Tunnel wybacza wiele błędów i konfiguruje się go idiotoodpornie, to pamiętaj, że nadal wystawiasz coś z sieci domowej do internetu. Podstawowa higiena cyfrowa i silne hasła na usługach w tle są mile widziane, bo to nie jest zabezpieczanie aplikacji a dostępu do niej! Jeśli jesteś matołem, to słabe hasło, brak TOTP czy latanie z roota wszędzie gdzie się da ugryzie Cię w poślad i żaden tunel czy VPN tego nie zmieni!
Cloudflare Tunnel a VPN
Tak podobne, a tak różne. Jak ogień i woda – jedno zwalcza drugie, ale nie chcesz zarówno spalonej chaty, jak i wody po kolana w salonie. Chyba że chcesz, ale nie mnie to oceniać, zwyrolu. Wracając na Ziemię i skracając założenia do minimum: VPN daje Ci dostęp do całej sieci, a CT do jednej, konkretnej usługi (a właściwie: aplikacji). Wiesz, to tak, jakbyś chciał pokazać ziomkowi swoją kolekcję filmów ślizganych. W przypadku VPN prowadzisz go przez cały dom, może spojrzeć na rower w kącie, na kapcie żony, na psa na kanapie i dopiero trafić do archiwum kinematografii. W przypadku Cloudflare Tunelu masz oddzielne wejście do archiwum, kapcie pozostają bezpieczne, pies nie zauważony a rower nadal się kurzy w kącie. A cel? Osiągnięty – ziomek zobaczył kolekcję, ale bez całego majdanu dookoła.
Tylko właśnie: cały czas mówimy o protokołach HTTP/HTTPS. I u podstaw to się zgadza: CF Tunel się do tego nadaje. W domyślnej konfiguracji zapomnij o wpychaniu się na SSH, Nie że się nie da, ale wymaga to fikołków.
Gdybym miał spłodzić ładną, porównawczą tabelkę, to wyglądałaby mniej więcej tak:
| Cecha | VPN | Cloudflare Tunnel |
|---|---|---|
| Protokoły | Właściwie: bez ograniczeń | Tylko HTTP/HTTPS (ściślej: UDP odpada) |
| Zakres dostępu | Cała chata (sieć, drukarki, kapcie żony) | Tylko wybrane archiwum (konkretny port/aplikacja) |
| Publiczne IP dostawcy | Musisz mieć (chyba że chcesz VPN w LAN, ale to nie mnie oceniać, zwyrolu) | Zbędne (magia wychodzącego agenta) |
| Co musi zrobić ziomek? | Instalować apkę VPN, bawić się kluczami, kombinować | Wpisuje adres w przeglądarkę i działa |
| Główny cel | Dostęp do całej sieci, tak, jakbyś się znajdował na kanapie przed TV | Do wystawienia usługi dla ludzi bez pokazywania im domu |
Zalety
Używasz gotowego, sprawdzone rozwiązania, które działa. Odstawmy na razie na boczny tor kwestie związane z prywatnością i zaufaniem do kogokolwiek. Jeśli jesteś na początku swojej przygody z własnymi aplikacjami, to jest spora szansa, że to rozwiązanie okaże się bezpieczniejsze i solidniejsze, niż samodzielny VPN. Oczywiście zachęcam gorąco do samodzielnego dłubania! Ale chodzi tu o pewien poziom, który czasami może się okazać nie wystarczający lub wręcz niebezpieczny. Zanim dojdziesz do pewnego poziomu zabezpieczania sieci, możesz równolegle mieć już uruchomioną aplikację i z niej korzystać. Całość jest lekka, stabilna, po prostu działa i nie wymaga dużych zabiegów pielęgnacyjnych,
Wady
Wielokrotne wcześniej wspominałem, że ruch jest autoryzowany gdzieś przez kogoś, przechodzi gdzieś przez coś i jest prawdopodobnie możliwy do podejrzenia gdzieś i jakoś. No właśnie, tak naprawdę oddajemy część swojej prywatności w ramach wygody i bezpieczeństwa. Ale nikt nam nie zagwarantuje, że ktoś o złych zamiarach nie spojrzy w ruch, którym właśnie przesyłamy wspomnianą wcześniej kolekcję filmów. I nie ma znaczenia w sumie czy ktoś zobaczy dzieła z karłami i osłami (Shrek, o czym pomyślałeś, zwyrolu?) czy faktury za papierosy z orlenu – jest to potencjalne naruszenie prywatności i nie wiemy, co się dzieje wewnątrz chmury Cloudflare. Tak, to u podstaw gigantyczny Man In The Middle! Zaufany, ale nadal MITM!
Inną kwestią jest też aspekt delegowania wszystkich usług do jednego dostawcy, jakim jest Cloudflare. Ostania historia nam już nie raz pokazała, że opieranie wszystkiego na jednym dostawcy jest złym pomysłem – awaria CF potrafi położyć pół internetu. Stąd nie polecam trzymania wszystkich jaj w jednym koszu – a przynajmniej dokonanie pewnego rachunku sumienia, potencjalnych zysków i potencjalnych strat. Ważna jest odpowiedź na pytanie: a co jak to pierdolnie? W jak głębokiej dupie się znajdę?
Pomimo mojego entuzjazmu do tego rozwiązania i całego CF w ramach domowego pierdolnika trzeba pamiętać, że nie jest to rozwiązanie typu młotek: nie da się z tego korzystać bezmyślnie i na odpierdol. Serio, nadal możesz wywalić w internety coś, czego nie chciałeś (karły, osły…).
Cloudflare w swoim regulaminie bardzo nie lubi, gdy przez darmowe tunele streamuje się wideo lub przesyła ogromne pliki binarne (np. kopie zapasowe). Za zdjęcia z telefonu nikt głowy nie urwie, ale za streaming Plexa/Jellyfina przez CF Tunnel można wyłapać bana na konto szybciej, niż zdążysz powiedzieć Porsche. Warto to delikatnie zaznaczyć, żeby jakiś zwyrol nie wrzucił tam swojej biblioteki filmów w 4K.
Dodatkowym aspektem jest jeszcze fakt, że CF w ramach darmowego konta nie lubi przewalania kosmicznych ilości danych przez swoje serwery. Doświadczenie podpowiada jednak, że jeśli będziesz synchronizować zdjęcia z telefonu swojego, żony, córki, syna, posadzisz niewielki serwis www i pobierzesz z NAS jakiś plik – nic się nie stanie. Jeśli jednak wykorzystasz to profesjonalnie, przewalając terabajty danych dziennie (surówka z karłami i osłami…), a do tego wdrożysz to w takiej formie w firmie, cóż, mam szybką diagnozę:
- jesteś w złym miejscu na poszerzanie wiedzy (powinieneś już ją mieć, a nie szukać jej mając produkcję, zwyrolu!)
- jesteś debilem, bo opierasz to na darmowym koncie
- oba powyższe punkty są prawdziwe
Podsumowanie
Chcę, aby to wybrzmiało: to nie jest cudowne rozwiązanie problemów i zastępstwo VPN. Umówmy się: porównanie i omówienie powstało dlatego, że właśnie jest często ze sobą zestawiane, a przez niektórych managerów wręcz zamiennie używane. Nie, to jest jednak porównanie gruszek do jabłek. Wiesz, jedno i drugie słodkie, jedno i drugie jest owocem, ale koniec końców to nie to samo. I jedno nie jest substytutem dla drugiego. W pewnych przypadkach może jedno być zamienne dla drugiego, ale wymaga to sporego rozeznania w temacie, którego pewnie nie masz, jeśli tu jesteś.
W następnym odcinku pokażę, jak to cholerstwo uruchomić i się nie zabić (przez pierwsze 5 minut).
0 komentarzy