Filtrowany, Bezpieczny DNS z Cloudflare One, Zero Trust i OpenWrt

Zawartość

Cloudflare, powiedzmy sobie szczerze, jest niezwykle szczodrą organizacją, oferując szereg usług, za które rzadko, kiedy musimy płacić. Osoby indywidualne, rodziny, małe lub średnie firmy mogą korzystać z ich technologi bez konieczności wydawania pieniędzy, o ile nie jest to potrzebne.

Pośród szeregu usług na uznanie zasługują serwery DNS (1.1.1.1) oraz usługa szyfrowania DNS. W połączeniu z ich oprogramowaniem dostępnym na szereg platform nie dosyć, że możemy przyśpieszyć nasze surfowanie po internecie, to dodatkowo możemy podwyższyć nasze bezpieczeństwo.

OpenWrt z drugiej strony to niebywałe oprogramowanie stworzone do podniesienia bezpieczeństwa naszego urządzenia sieciowego jakim jest router, jak również dodaje możliwość rozszerzenia możliwości naszego sprzętu.

W połączeniu Cloudflare z oprogramowaniem OpenWrt oraz dodatkowym pakietem oprogramowania możemy wprowadzić do naszej sieci Bezpieczny DNS, o którym pisałem jakiś czas temu.

Co więcej, gdy potrzebujemy uzyskać dostęp do naszych zasobów sieci lokalnej z dowolnego miejsca na ziemi, możemy wykorzystać usługę Cloudflare Zero Trust, tworząc bezpieczny tunel.

Zero Trust, oferowany w ramach naszego konta Cloudflare (i to w wersji darmowej), to nie tylko tunel “VPN”. Zero Trust oferuje również szereg innych opcji. Jedną z nich jest możliwość stworzenia “własnego” bezpiecznego serwera DNS.

Tak jak 1.1.1.1 bez większej konfiguracji, potrafi zabezpieczyć nasze zapytania do DNS, nie pozwala na wprowadzenie niczego innego.

Po stronie DNS można wprowadzić dodatkowe ograniczenia, zabezpieczenia czy też blokady. Tak się dzieje, nie koniecznie za naszą zgodą, gdy korzystamy z serwerów DNS dostarczonych przez naszego usługodawcę internetowego.

A co by było, gdybyśmy chcieli tego typu ograniczenia wprowadzić po stronie naszej sieci, z tym wyjątkiem, że my będziemy decydować, co jest blokowane a co nie?

Mamy już bezpieczny DNS z wykorzystaniem Cloudflare (1.1.1.1) oraz OpenWrt. Jeżeli mamy ustawiony nasz tunel Zero Trust, to mamy używamy już cześć infrastruktury, która pozwoli nam nad uzyskaniem większej kontroli po naszej stronie.

Bezpieczny DNS z Cloudflare (1.1.1.1) domyślnie nie zablokuje żadnych stron szerzących nienawiść, udostępniających pornografię, sprzedających narkotyki czy też broń do kogo tylko popadnie. Internet to miejsce, w którym możemy spędzić miło czas, ale również, tak jak w prawdziwy życiu, możemy spotkać się z jego czarną stroną.

W przypadku firm (ale również w obrębie twojego gospodarstwa domowego), nie możemy sobie pozwolić, aby nasi pracownicy wykorzystywali powierzony im sprzęt do celów, które mogą narazić nas na poważne konsekwencje prawne. W związku z tym większość firm posiada wprowadzoną tak zwaną politykę IT, informującą ich pracowników o możliwości monitorowania i blokowania niepożądanych zachowań.

O ile monitorowanie to nie problem, to blokowanie może wymagać dodatkowych zabiegów, sprzętu lub też specyficznego oprogramowania. A co jeżeli powiem, że rozwiązanie mamy w zasięgu ręki dzięki Zero Trust.

Otóż w ramach Zero Trust możemy ustawić własny bezpieczny DNS, który będzie obsługiwany przez Cloudflare, tak jak jest to z usługą 1.1.1.1. W ramach niego będziemy mogli dodać reguły, pozwalające nam na zablokowanie części ruchu w internecie, z poziomu DNS, który mógłby narazić nas na poważne konsekwencje.

To wszystko jest możliwe z możliwością zarządzania w panelu Zero Trust (Cloudflare One) oraz śledzenia co się dzieje. Dodatkowo wszystko to jest dostępne za darmo (przynajmniej na nasze podstawowe potrzeby).

Jeżeli nasz pracownik ma problemy z hazardem i zamiast pracować, spędza czas (marnuje pieniądze swoje i firmy) na obstawianiu zakładów, możemy to zablokować.

Jeżeli inny pracownik odwiedza strony, które mogą narazić jego urządzenie (z którego korzysta) lub jego samego na stanie się ofiarą phishingu, lub innego podobnego zagrożenia, możemy również temu zapobiec, wprowadzając odpowiednie obostrzenia.

Oczywiście, każde ograniczenia są na tyle dobre o ile reguły, które są wprowadzone do ich blokowania. Internet ewoluuje każdego dnia i muszą one (reguły) być co trochę aktualizowane. Fajnie by było, gdybyśmy nie musieli się tym przejmować, lecz powierzylibyśmy to profesjonalistą.

I to właśnie, na czym cała zabawa polega. Wykorzystując dostępne rozwiązania, zabezpieczymy naszą sieć, sprecyzujemy, co chcemy blokować, a resztą zajmą się profesjonaliści — Cloudflare. Oto jak tego możemy dokonać.


Poniżej opiszę metodę, jak wprowadzić filtrowany, bezpieczny DNS po stronie naszego routera z OpenWrt, jednakże nie znaczy, że jest to jedyna metoda.

Jeżeli nasz router nie ma możliwości wzbogacenia go w oprogramowanie OpenWrt, to nadal możemy wykorzystać możliwości oferowane przez Cloudflare.

W przypadku urządzeń korzystających z różnych połączeń, poza naszą siecią domową, możemy również wprowadzić oferowane rozwiązanie poprzez dedykowane aplikacje, modyfikację ustawień sieciowych czy też zmianę w ustawieniach naszej przeglądarki.

O ile głównie skupię się na routerze z OpenWrt, to na końcu zahaczę o inne dostępne rozwiązania. Jako że niektóre kroki opisałem w moich innych wpisach na temat OpenWrt, w związku z tym nie będę się za dużo powtarzał, ale odniosę się do nich w odpowiednim kroku.

Instalacja Bezpiecznego DNS

W pierwszej kolejności musimy zainstalować obsługę DNS przez HTTPS na naszym routerze z OpenWrt zgodnie z poradnikiem.

Na tym etapie powinniśmy mieć ustawiony Bezpieczny DNS z wykorzystaniem Cloudflare (1.1.1.1) oraz Google (8.8.8.8).

Jeżeli wszystko działa tak jak opisałem w powyższym odnośniku, możemy przejść do dalszej zabawy.

Przechodzimy do Cloudflare Zero Trust.

Gdy posiadamy stały (zewnętrzny) adres IP (w wersji 4)

Jeżeli nasz router dysponuje stałym adresem IP, będziemy mogli go wykorzystać w celu otrzymania dodatkowych adresów IP (w wersji 4) dla serwerów DNS, które będziemy mogli ustawić na naszych interfejsach na routerze. Ma to na celu zabezpieczenie wycieku zapytań DNS. W momencie, gdy nasz szyfrowany DNS nie będzie działać, wówczas domyślnie nasze urządzenie korzystać będzie z adresów DNS powiązanych z usługą, przez co nadal będzie filtrować zapytania.

W pierwszej kolejności przechodzimy do zakładki Gateway > DNS Locations.

Gateway DNS Locations Default Location

Tam będziemy mieli już ustawioną domyślną lokalizację (Default Location), którą musimy zmodyfikować.

Klikamy na trzy kropki po prawej stronie i wybieramy opcję konfiguruj (Configure).

Gateway DNS Locations Default Location Add IP

W sekcji “źródłowy adres IPv4” (Source IPv4 address) mamy przycisk “dodaj IP” (Add IP). Gdy na niego klikniemy, powinniśmy otrzymać nasz zewnętrzny adres IP.

Aby się upewnić, że adres ten jest prawidłowy, zalogujmy się na nasz router przez SSH i wykonajmy następującą komendę:

curl -s 'http://icanhazip.com'

Czasem może się tak zdarzyć, że mamy włączony bezpieczny DNS, np. Cloudflare Warp, lub też korzystamy z Apple Private Relay i nasz oryginalny IP jest filtrowany. DNS przez HTTPS zainstalowany na naszym routerze również może na to wpływać. Na czas ustawiania niezbędne może się okazać, że musimy tę usługę tymczasowo wyłączyć.

W momencie, gdy zapiszemy naszą konfigurację.

Indywidualny adres do konfiguracji Bezpiecznego DNS

Przechodzimy do Gateway > DNS Locations i klikamy na Default Location.

Gateway DNS Locations Default Location data

W oknie, które pojawi się z prawej stronie, zobaczymy przypisane dla nas adresy.

Jeżeli mamy i ustawiliśmy nasz stały adres IP w domyślnej lokalizacji, tak jak opisałem we wcześniejszym kroku, w sekcji IPv4 ujrzymy adresy naszego DNS, który będziemy potrzebować na dalszym etapie (typowo 172.64.36.1 oraz 172.64.36.2)

W sekcji IPv6 otrzymamy przypisany dla nas adres IP serwera DNS w wersji 6 (w postaci 2a06:98c1:54::)

W sekcji DNS over HTTPS otrzymamy odnośnik do konfiguracji bezpiecznego serwera DNS (w postaci https://{unikalny_link}.cloudflare-gateway.com/dns-query), który wykorzystamy na naszym routerze.

Wszystko to będziemy potrzebować na dalszym etapie konfiguracji.

Ustawienie routera z OpenWrt — HTTPS DNS Proxy

Logujemy się na nasz router z przeglądarki internetowej i przechodzimy do Services > HTTPS DNS Proxy.

OpenWrt Services HTTPS DNS Proxy

W sekcji HTTPS DNS Proxy — Instances usuwamy domyślnie dodany Cloudflare (Standard) oraz Google korzystając z przycisku Delete z prawej strony.

Następnie klikamy przycisk “dodaj” (Add) i z usługodawcy (Provider) wybieramy opcję na samym dole listy — niestandardową (Custom).

OpenWrt Services HTTPS DNS Proxy Custom

W sekcji parametr (Parameter) wklejamy adres, który odczytaliśmy wcześniej w sekcji DNS over HTTPS po stronie Cloudflare.

https://{unikalny_link}.cloudflare-gateway.com/dns-query

Adres nasłuchiwania 127.0.0.1 oraz port 5053 pozostawiamy tak jak zasugerowane.

Osobiście wolę go “przepisać”.

Następnie klikamy zielony przycisk “zapisz” (Save).

OpenWrt Services HTTPS DNS Proxy Custom set

Na następnym ekranie klikamy “zapisz i zastosuj” (Save & Apply).

Na koniec upewniamy się, że nasza usługa HTTPS DNS Proxy jest włączona (Enabled) w sekcji Service Control oraz wystartowała (Start).

Takim sposobem nasz osobisty bezpieczny DNS został włączony i zyskaliśmy dzięki temu możliwość filtrowania po stronie Cloudflare Zero Trust, o czym za chwilę.


To, że nasze zapytania DNS przechodzą przez nasz osobisty bezpieczny serwer DNS, możemy zobaczyć w sekcji Analytics > Gateway po stronie Cloudflare Zero Trust.

Analytics Gateway analytics

Ustawienie routera z OpenWrt — Interfejsy sieciowe

Nasze zapytania DNS działają w sposób bezpieczny, w momencie, gdy nasza usługa HTTPS DNS Proxy działa. W przypadku, gdy zostanie ona wyłączona lub z jakiegoś powodu przestanie działać, warto mieć plan zapasowy (backup).

W przypadku, gdy posiadamy stały zewnętrzny adres IP, warto wykorzystać adresy DNS otrzymane w sekcji IPv4 oraz IPv6.

W tym celu, w panelu administracyjnym naszego routera, przechodzimy do zakładki Network > Interfaces.

W pierwszej kolejności klikamy na przycisk “edytuj” (Edit) na naszym połączeniu internetowym wan.

W polu Use custom DNS servers (w zakładce Advanced Settings) wprowadzamy nasze serwery DNS otrzymane wcześniej (172.64.36.1 oraz 172.64.36.2).

Jeżeli nie widzimy pola Use custom DNS servers, prawdopodobnie zaznaczone mamy pole ** Use DNS servers advertised by peer**. Po jego odznaczeniu pojawi nam się opcja do wpisania adresów.

Zakańczamy przyciskiem “zapisz” (Save).

Analogicznie zmieniamy nasz interfejs wan6 z adresem DNS IPv6 otrzymanym w trakcie konfiguracji (opcjonalnie).

Dodatkowo wprowadzamy adres IPv4 oraz IPv6 (oba) w konfiguracji interfejsu lan.

Całość zakańczamy, klikając przycisk “zapisz i zastosuj” (Save & Apply).


Takim sposobem mamy wszystko ustawione. Nie ma konieczności zmieniania niczego po stronie naszych klientów (użytkowników i ich urządzeń).

Nim przejdziemy dalej, zalecam włączenie jeszcze jednej funkcji w naszym pakiecie HTTPS DNS Proxy, a mianowicie DNS Hijacking.

DNS Hijacking w HTTPS DNS Proxy

Nim przeszedłem dalej do konfigurowania filtrowania, wróciłem do ustawień pakietu HTTPS DNS Proxy na moim routerze i zmieniłem ustawienie Force Router DNS a Let local devices use their own na Force Router DNS server to all aby mieć pewność, że wszyscy użytkownicy (urządzenia) korzystają z tego samego bezpiecznego serwera DNS.

 <script async delay="https://dariusz.wieckiewicz.org/g/serve.js?client=ca-pub-5380116874441486"
      crossorigin="anonymous"></script>
 <ins class="adsbygoogle"
      style="display:block; text-align:center;"
      data-ad-layout="in-article"
      data-ad-format="fluid"
      data-ad-client="ca-pub-5380116874441486"
      data-ad-slot="9220966978"></ins>
 <script>
      (adsbygoogle = window.adsbygoogle || []).push({});
 </script>

Filtrowanie

Przyszła pora na dodanie filtrowania zapytań DNS przez naszych użytkowników i ich urządzeń. W tym celu udajemy się do panelu Cloudflare Zero Trust.

W sekcji Gateway przechodzimy do Firewall Policies. Tutaj, w sekcji DNS, będziemy dodawać nasze reguły.

Gateway Firewall Policies

Cloudflare dysonuje różnymi metodami filtrowania ruchu (Selectors). Osobiście skupię się na dwóch.

  1. Security Categories, kategorie bezpieczeństwa
  2. Content Categories, kategorie treści

W ramach kategorii bezpieczeństwa mamy do dyspozycji możliwość blokowania takich rzeczy jak ruch sklasyfikowany jako Spam, Spyware, Phishing czy też złośliwe oprogramowanie (Malware).

Są to rzeczy, na które powinniśmy zwrócić uwagę w pierwszej kolejności.

Tworzenie nowej reguły jest bardzo proste. Klikamy przycisk dodania nowej reguły (Add DNS Policy).

Gateway Firewall Policies Add DNS Policy

W pierwszym kroku (Step 1) prowadzamy nazwę. W kroku drugim (Step 2), a cześci odpowiedzialnej za ruch w sieci (Traffic) naciskamy przycisk, aby dodać warunek, który musi być spełniony (Add consition).

Następnie z Selector wybieramy Security Categories. Jako operator jako in (zawiera), z opcji Value wybieramy typ blokady, na przykład Malware.

W kroku trzecim (Step 3) wybieramy, co ma się stać, gdy warunek zostanie spełniony. W moim przypadku wybieram “zablokuj” (Block).

Zakańczamy wszystko poprzez przyciśnięcie przycisku utworzenia reguły Create policy.

Takim sposobem nasza reguła została włączona i nasz ruch w sieci jest filtrowany z poziomu serwerów DNS.


Kategoria treści (Content Categories) posiada nieco więcej opcji, takie jak blokowanie pornografii, nienawiści czy też hazardu.

Więcej na temat poszczególnych kategorii możecie poczytać na stronie kategorii domen (Domain categories).

O ile można w pojedynczej zasadzie włączyć więcej niż jedną wartość (Value) to osobiście polecam na utworzenie każdej z osobna dla każdej z wartości. Czasem może się zdarzyć tak, że przez przypadek zablokujemy coś, co nie powinno być blokowane i dzięki podzieleniu reguł będziemy mogli prześledzić, która reguła powoduje problem i ją wyłączyć w ramach potrzeb.

Osobiście utworzyłem osobne reguły dla każdego elementu s kategorii bezpieczeństwa i włączyłem je w mojej sieci. W ramach analizy elementów zablokowanych podejmowałem decyzję czy reguła się spisuje, czy należy ją wyłączyć.

Analiza blokad i Cloudflare Radar

W momencie, gdy ruch w sieci będzie analizowany, na bieżąco możesz obserwować, co jest pozwolone i co jest blokowane w Analytics > Gateway.

Analytics Gateway analytics 7 days

W odpowiednich sekcjach będziesz mógł podejrzeć rzeczy, które najczęściej występowały i zostały pozwolone, oraz rzeczy, które zostały zablokowane.

Przyjazne dla oka wykresy pozwolą przeanalizować ci ruch pod kątem różnych kategorii.

Analytics Gateway analytics Charts

W sekcji Logs > Gateway będziesz mógł w detalach przeanalizować elementy, które zostały zablokowane.

Logs Gateway activity logs

Klikając na poszczególne elementy (domeny), możesz dowiedzieć się więcej na temat blokady oraz która reguła została wykorzystana do tego celu. Jest to wysoce przydatne pod kątem analizy reguł, które blokują więcej, a niżeli założyliśmy, że będą.


Interesującą rzeczą jest opcja View domain details in Radar.

Logs Gateway activity logs Preview

W ramach Cloudflare Radar możesz dowiedzieć się, do jakiej kategorii dana domena została sklasyfikowana.

Cloudflare Radar example

Na przykład, moja domena, pod którą serwuję moją stronę, sklasyfikowana jest jako News & Media, Personal Blogs i Technology.

Jeżeli za pomocą Content Categories zdecydujesz się zablokować którąś z tych kategorii, jednocześnie zablokujesz moją stronę.

Dzięki Cloudflare Radar możesz również przeanalizować kategorie i wysłać zgłoszenie do Cloudflare, za pomocą odnośnika Categorization Feedback, jeżeli dana strona jest mylnie kategoryzowana.

Nie oczekuj jednak zbytniego zaangażowania ze strony Cloudflare na temat zgłoszonych sugestii.

Na przykład, www.halfords.com oznaczona jest jako Ecommerce oraz Vehicles. Z tym się mogę z pewnością zgodzić, ale wrzucanie jej do kategorii Sports to jest nieco mylne w moim założeniu.

Cloudflare Radar halfords

Konfiguracja Filtrowanego Bezpiecznego DNS w przeglądarce

Jeżeli nie mamy do dyspozycji routera, który możemy skonfigurować na potrzeby bezpiecznego DNS z filtrowaniem, możemy skonfigurować przeglądarkę internetową na te potrzeby.

Na przykład, Google Chrome (czy też Microsoft Edge bazujący na Chromium) posiada opcję używania bezpiecznego DNS (Use secure DNS) w sekcji prywatność i bezpieczeństwo (Privacy and security).

Możemy posłużyć się dostępnymi tam opcjami lub dodać konfigurację niestandardową (Add custom DNS service provider), gdzie możemy wkleić nasz adres, który otrzymaliśmy na początku naszej zabawy:

https://{unikalny_link}.cloudflare-gateway.com/dns-query

Takim sposobem zapytania do stron internetowych kierowane z naszej przeglądarki będą bezpieczne i filtrowane zgodnie z ustalonymi regułami.

Konfiguracja Filtrowanego Bezpiecznego DNS w systemie Windows 11

Jeżeli nie mamy luksusu w postaci routera z OpenWrt, a zabezpieczenie ruchu generowanego przez przeglądarkę jest niewystarczające, możemy zabezpieczyć nasze zapytania DNS z poziomu systemu Windows 11.

Nie mówię tutaj o możliwości dodania adresów DNS do interfejsów (kart) sieciowych, ale na wprowadzenie opcji DNS przez HTTPS.

Zmiana adresów DNS interfejsów sieciowych to coś, co również powinniśmy zrobić, ale przechodząc do ustawień (Settings) systemowych, kategorii “Sieć i Internet” (Network & internet), klikając na ustawienia naszej sieci (Network properties), a następnie na ustawienia sprzętu (Hardware properties), możemy wprowadzić szyfrowanie naszych zapytań DNS w całym systemie.

Windows 11 DNS Settings DNS over HTTPS

Klikając na sekcję odpowiedzialną za adres serwerów DNS (DNS server assignment), które domyślnie ustawione są na uzyskanie tych informacji automatycznie (z routera), zmieniamy je na ustawienie tego ręcznie (Manual). Następnie włączamy ustawienia dla IPv4 i wprowadzamy nasze adresy DNS, które otrzymaliśmy ze strony Cloudflare (172.64.36.1 jako podstawowy, 172.64.36.2 jako alternatywny).

W sekcji DNS over HTTPS zmieniamy z wyłączonej (Off) na włączoną z ręczną konfiguracją (On (manual template)).

W polu, które zostanie nam zaprezentowane, wklejamy otrzymany od Cloudflare adres podobny do tego.‌

https://{unikalny_link}.cloudflare-gateway.com/dns-query

Analogicznie robimy w przypadku adresów IPv6.


Takim sposobem, nie dosyć, że mamy wprowadzony Bezpieczny DNS, to mamy również kontrolę nad tym, co jest dozwolone w sieci a co nie. Jest to o tyle wygodne, gdyż w prosty sposób możemy ukrócić zachowania niektórych użytkowników w naszej sieci.


Cloudflare Zero Trust to nie tylko serwery DNS. To również możliwość utworzenia bezpiecznego tunelu (VPN), dzięki któremu możemy połączyć się z naszą siecią lokalną spoza domu lub firmy.

Więcej o tym pisałem we wpisie: Dodanie Tunelu Cloudflare do routera z OpenWrt (alternatywa dla VPN).

Pozdrawiam.

Komentarze
Kategorie