Cloudflare od wielu lat dostarcza nam wspaniałych narzędzi dla naszych stron internetowych. Wszyscy już znają ich doskonałe serwery DNS, gdzie możemy za darmo parkować domeny dla naszych aplikacji. Mało kto jednak śledzi na bieżąco wszelkie nowinki jakie przygotowują dla nas twórcy tej doskonałej platformy.
Wyobraźmy sobie sytuację gdy rozwijamy aplikację lokalnie w ramach środowiska deweloperskiego. Jesteśmy podłączeni do internetu, jednak nie dysponujemy publicznym adresem IP, a chcielibyśmy podzielić się ze światem efektami naszej pracy. Takie sytuacje wbrew pozorom mogą się zdarzać dosyć często. Przykładowo w trakcie prac zachodzi potrzeba podzielenia się z członkami zespołu uwagami, które można zaobserwować tylko u nas. Przyspiesza to pracę, gdyż nie ma konieczności wysyłania zmian na serwer deweloperski.
Podobnym scenariuszem byłaby potrzeba zweryfikowania integracji z system płatności elektronicznych, które to implementuje rozwijany sklep internetowy. Zazwyczaj systemy płatności takie jak PayU, czy też Przelewy24, prowadzą komunikację dwukanałową z aplikacjami zewnętrznymi typu e-commerce. Pierwszym kanałem jest przeglądarka, w której to użytkownik przechodzi proces płatności. Drugi zaś, to kanał niedostępny dla użytkownika, w którym komunikują się poprzez np. rest api system płatności oraz strona www. Taki mechanizm jest trudny to sprawdzenia, gdyż wyłapanie ewentualnego błędu wymaga posiadania instancji aplikacji internetowej z dostępem publicznych. Do tego dochodzi asynchroniczny charakter wymiany danych, co w całości składa się na złożony proces.
Bardzo często zdarza się, że sieciach firmowych na lokalnych adresach są instalowane aplikacje wewnętrzne, dostępne tylko dla personelu przedsiębiorstwa. Są to strony internetowe, które działają jedynie w zamkniętej infrastrukturze. Przyczyn takich sytuacji może być wiele, od względów bezpieczeństwa, poprzez wygodę, na kosztach skończywszy. Czasami jednak zachodzi potrzeba wyniesienia takich witryn www poza siedzibę firmy i wtedy pojawia się problem, przed którym stają najczęściej departamenty IT.
Jeszcze niedawno byliśmy mocno ograniczeni w rozwiązywaniu tego rodzaju problemów. Stosowano przekierowania portów na routerze, wirtualne sieci prywatne lub jeszcze bardziej zaawansowane rozwiązania. Dzisiaj z pomocą przychodzi nam Cloudflare ze swoim nowym produktem Tunnel. W tym poście postaramy się w przystępny sposób zademonstrować jak przygotować aplikację internetową zainstalowaną w lokalnym środowisku, tak aby była ona dostępna dla użytkowników spoza naszej sieci pod przyjaznym adresem domenowym.
Jak to działa?
Pewnie zastanawiasz się jak to jest możliwe, że użytkownik wpisując w przeglądarce adres domenowy jest w stanie dostać się do zasobów uruchamianych na hoście w ramach prywatnej sieci bez publicznego adresu IP. Nie jest to aż tak skomplikowane jak mogłoby się wydawać, a całość sprowadza się do specjalnego narzędzia, które zostało przygotowane przez zespół cloudflare. Tym specjalnym rozwiązaniem jest „cloudflared”. Jest program przygotowany na wszystkie popularne platformy, który pełni funkcję tzw. connectora. Jego zadaniem jest zestawienie tunelu pomiędzy serwerami brzegowymi cloudflare, a naszym lokalnym hostem. Dzięki takiemu podejściu, oprócz zapewnienia nam dostępu do lokalnych zasobów, możemy również zadbać o przypisanie odpowiedniej domeny/subdomeny, która będzie odpowiadać za wywołanie naszej strony www.
Krok po kroku
Od czego powinniśmy zacząć? Dobrym początkiem będzie upewnienie się, że na aplikacja internetowa, którą chcemy wystawić na świat działa prawidłowo. Nie będziemy na potrzeby tego artykułu pisać specjalnie nowej strony www. Posłużymy się innym ciekawym rozwiązaniem jakim jest wbudowany serwer http we framework symfony. Uruchomimy instancję serwera, którego zadaniem będzie wyświetlenie pustej strony z jakimś przykładowym komunikatem. Zatem do dzieła.
Jeśli mamy zainstalowane globalnie symfony wtedy wystarczy wydać polecenie:
symfony server:start
Domyślnie serwer http powinien zostać uruchomiony na porcie 8000 z document rootem ustawionym na folder, w które się znajdowaliśmy podczas wywołania polecenia.
Zadbajmy jeszcze o to aby, wywołanie adresu serwera, nie powodowało zwrócenia błędu 404. Dlatego stworzymy plik index.php wraz z zawartością.
touch index.php && echo "<?php echo 'hello world'; " > index.php
Jeśli wszystko działa prawidłowo, to po wpisaniu w pole adresu przeglądarki https://127.0.0.1:8000, naszym oczom powinien ukazać się obraz podobny do tego poniżej.
Skoro na naszej lokalnej maszynie wszystko już działa prawidłowo, to powinniśmy przejść do naszego konta cloudflare. Po zalogowaniu należy wybrać domenę, w ramach której będziemy prowadzić nasze prace. Następnie z panelu menu, powinniśmy wybrać pozycję Traffic -> Cloudflare Tunnel. Wyświetli się ekran z opisem usługi oraz linkiem do panelu zero trust. Po jego otworzeniu pojawi się zupełnie nowy panel zarządzania, tym razem mamy do czynienia z nowym zestawem narzędzi, które służą do zwiększenia poziomu bezpieczeństwa naszych aplikacji. My będziemy korzystać jedynie z Access Tunnel, jednak warto się zapoznać z ogromem możliwości jakie daje nam zero trust.
Czym jest Cloudflare zero trust
Cloudflare Zero Trust to platforma służąca do zarządzania bezpieczeństwem sieciowym w chmurze. Opiera się ona na założeniu, że wszystkie żądania i dostępy do sieci są potencjalnie niebezpieczne i należy je weryfikować przed udzieleniem dostępu. Dzięki temu rozwiązaniu możliwe jest zabezpieczenie sieci przed atakami, złośliwym oprogramowaniem, a także nieuprawnionym dostępem.
Możliwości platformy Cloudflare Zero Trust obejmują m.in.:
- Weryfikację tożsamości użytkowników i urządzeń przed udzieleniem dostępu do sieci/strony internetowej
- Kontrolę dostępu do aplikacji i zasobów sieciowych na podstawie różnych kryteriów, takich jak lokalizacja geograficzna, rodzaj urządzenia czy poziom uprawnień
- Możliwość tworzenia i zarządzania zasadami dostępu dla poszczególnych aplikacji i zasobów sieciowych
- Ochronę przed atakami typu phishing oraz złośliwym oprogramowaniem
- Monitorowanie ruchu sieciowego i wykrywanie niepokojących zachowań
Cloudflare Zero Trust to elastyczne rozwiązanie, które może być dostosowywane do indywidualnych potrzeb i wymagań każdego przedsiębiorstwa.
Tunel
Cloudflare Tunnel to narzędzie, które umożliwia połączenie się z serwerem za pośrednictwem bezpiecznego tunelu sieciowego. Korzystanie z Cloudflare Tunnel może przynieść kilka korzyści:
- Bezpieczeństwo: Cloudflare Tunnel umożliwia bezpieczne połączenie z serwerem za pośrednictwem szyfrowanego tunelu sieciowego, co zabezpiecza przed atakami hakerskimi i innymi zagrożeniami cybernetycznymi.
- Elastyczność: Cloudflare Tunnel umożliwia łączenie się z serwerem z dowolnego miejsca i z dowolnego urządzenia, co pozwala na elastyczne korzystanie z zasobów serwera.
- Wydajność: Cloudflare Tunnel umożliwia przyspieszenie transferu danych pomiędzy serwerem a klientem poprzez skrócenie trasy przesyłania danych.
- Oszczędność: Cloudflare Tunnel umożliwia oszczędność zasobów serwera poprzez zmniejszenie ilości ruchu sieciowego, co może przełożyć się na mniejsze koszty utrzymania serwera.
- Wsparcie: Cloudflare Tunnel jest obsługiwane przez zespół specjalistów Cloudflare, co gwarantuje pomoc w razie problemów z konfiguracją lub użytkowaniem narzędzia.
Pamiętaj jednak, że Cloudflare Tunnel nie jest idealnym rozwiązaniem dla wszystkich sytuacji i należy dokładnie przeanalizować, czy jest on odpowiedni dla konkretnych potrzeb i wymagań.
Nowy tunel do komunikacji z naszą stroną internetową
Po wybraniu odpowiedniej opcji z menu, należy kliknąć „Create a tunnel”. Zostaniemy przeniesieni do formularza gdzie należy podać nazwę.
Po zapisaniu zostaniemy przeniesieni do kolejnego kroku formularza, gdzie pojawi się już sporo informacji. Na początek zwróć uwagę, na to co na górze. Należy wybrać swój system operacyjny. Poniżej znajdują się instrukcję konsolowe, które są przygotowane specjalnie dla nas.
Pierwsze polecenie odpowiada za pobranie gotowej paczki dla naszego OS. Następnie wykonywana jest instalacja. Na końcu uruchomiony zostaje cloudflared wraz uruchomieniem usługi powiązanej ze stworzonym przed momentem tunelem. Po wpisaniu poleceń w wiersz poleceń, powinniśmy mieć lokalnie uruchomiony connector. Teraz należ nacisnąć „next”, aby przejść do następnego kroku, którym ustalimy szczegóły dotyczące publicznego dostępu do strony www.
Dotarliśmy do końca formularza i jesteśmy gotowi do tego aby przetestować czy nasze rozwiązanie działa prawidłowo. W przykładzie posłużyłem się subdomeną blog-post.okinet.pl. Cloudflare automatycznie wprowadzi wpisy w DNS, które będą odpowiadać za prawidłowe rozwiązanie adresu. Sprawdźmy zatem co się wydarzy, gdy w pasku przeglądarki internetowej wpiszemy ustawiony adres.
Jak widać całość działa sprawnie. W tym momencie możemy podzielić się już linkiem z użytkownikami spoza naszej lokalizacji. Mam nadzieję, że masz świadomość że strona internetowa będzie dostępna publicznie, tak długo jak Twój lokalny host dostarcza usługę jaką jest aplikacja internetowa. Jeśli wyłączysz serwer http lub przerwiesz działanie connetora, wtedy użytkownikom pokaże się błąd z serii 5xx.
Podsumowanie
Cloudflare Tunnel wydaje się być doskonałym rozwiązaniem zarówno dla developerów, jak również dla administratorów infrastruktury sieciowej. Dodatkowo pozwala w łatwy sposób wzbogacić naszą aplikację internetową o proces uwierzytelnienia. Mamy do wybory spory wachlarz możliwości w tym zakresie.
Zawsze staramy się zachęcać naszych klientów do zapoznania się z możliwościami jakie daje Cloudflare. Często są zdziwieni jak wiele kosztownych procesów są w stanie tanio i szybko zrealizować w ramach usług dostarczanych przez Cloudflare.