Jak prosto zaszyfrować cały ruch internetowy między domem a światem

dodał 29 sierpnia 2016 o 07:28 w kategorii HowTo, Prywatność  z tagami:
Jak prosto zaszyfrować cały ruch internetowy między domem a światem

Wraz z rozwojem nowoczesnych technik inwigilacji szyfrowanie tego, co wysyłamy do sieci, staje się coraz ważniejsze. Dzisiaj pokażemy Wam, jak skutecznie za jednym zamachem zaszyfrować ruch wszystkich domowych urządzeń naraz.

Dzięki współpracy z firmą ArubaCloud, dużym europejskim dostawcą rozwiązań chmurowych, od paru miesięcy pokazujemy Wam, jak skutecznie chronić Waszą prywatność w sieci. Pokazaliśmy już Wam jak zatroszczyć się o swoje kopie bezpieczeństwa, jak skonfigurować swój prywatny serwer VPN, jak podłączyć do niego urządzenia mobilne oraz jak bronić się przed nachodzącą cenzurą w sieci. Przedstawione rozwiązania VPN mają jednak pewną wadę – trudno nimi objąć wszystkich domowników naraz oraz wszystkie domowe sprzęty podłączone do sieci jak chociażby telewizor czy coraz mniej anegdotyczną lodówkę (lub inne kamery czy nianie). Instalacja VPNa na komputerze i na telefonie jest relatywnie prosta, ale już zmuszenie do współpracy z nim domowych urządzeń może okazać się niemożliwe. Rozwiązanie jest jedno i jest nim domowy ruter podłączony do VPNa, który udostępnia sieć WiFi (lub łącze kablowe) i otrzymane pakiety szyfruje przed przesłaniem do internetu.

Nasz pomysł na szyfrowaną sieć domową

Trochę czasu spędziliśmy na określeniu architektury naszej sieci. Cele były zdefiniowane następująco: szyfrowanie niezauważalne dla użytkownika (zero instalacji i modyfikacji po stronie klienta), automatyczne i opcjonalne – czyli możliwość łatwego przełączania się między łączem zaszyfrowanym i zwykłym. Do tego instrukcja instalacji musi być maksymalnie prosta, by każdy Czytelnik i Czytelniczka bloga mogli sami taką infrastrukturę w domu skonfigurować. Wybór padł zatem na postawienie drugiego rutera, połączonego z urządzeniem już posiadanym w domu (a w większości przypadków dostarczonym zapewne przez firmę telekomunikacyjną). Co prawda na części domowych ruterów można postawić klienta OpenVPN, jednak takich urządzeń nie spotykamy zbyt często.

Aby przeprowadzić proces konfiguracji według naszych instrukcji będziecie zatem potrzebować dodatkowego rutera. VPN to rozwiązanie dosyć mocno obciążające ruter, zatem nie może to niestety być sprzęt z najniższej półki. Nie chcieliśmy także zaczynać od pozycji za 500 PLN, zatem wybór padł na klasycznego konia roboczego ze sporym bagażem lat, ale także i dobrym oprogramowaniem i dużą stabilnością pracy, czyli ruter Linksys WRT54GL, który można kupić za ok. 250 PLN. Ruter ten podłączycie kablem do swojego już posiadanego rutera domowego (port internet na WRT54GL, port LAN na posiadanym już ruterze) a następnie skonfigurujecie tak, by mógł połączyć się z Waszym serwerem VPN – w naszym przypadku będzie to tani jak barszcz serwer w ArubaCloud. Zatem zaczynamy.

Pierwsze kroki

Jeśli jeszcze nie macie serwera w ArubaCloud, to zacznijcie od założenia konta i skorzystania z promocji, która pozwoli Wam używać sensownego serwera przez dwa miesiące za darmo. W naszym poprzednim artykule znajdziecie dokładną instrukcję jak się zarejestrować i dostać darmowy voucher. Instrukcja poprowadzi Was za rękę, a gdy skończycie, będziecie dysponować prywatnym serwerem VPN na własny użytek. Kolejnym krokiem jest zakup rutera WRT54GL. Jeśli macie inne preferencje lub swój własny ruter o odpowiedniej mocy procesora i objętości pamięci, możecie poszukać w sieci instrukcji jak go skonfigurować, by działał prawidłowo jako klient VPN. My przeszliśmy tę drogę przez mękę za Was i opiszemy ją w szczegółach, byście nie musieli tracić 3 dni na analizę wszystkich sztuczek i wariantów. Pamiętajcie, że instalacja alternatywnego oprogramowania to poważna sprawa i przy braku rozwagi (i chęci ignorowania instrukcji) można ruter poważnie uszkodzić. Jeśli będziecie dokładnie przestrzegać kroków opisywanego procesu to nie powinno być problemów.

Alternatywne oprogramowanie

Aby móc obsługiwać sensownie połączenia VPN należy na ruterze zainstalować alternatywne oprogramowanie. My wybraliśmy system dd-wrt, do którego mamy od wielu lat zaufanie i który jeszcze nigdy nas nie zawiódł. Sam proces instalacji ma kilka kroków, ale są one dość dobrze udokumentowane. Pamiętajcie, aby rygorystycznie przestrzegać instrukcji, szczególnie w zakresie restartów i resetów urządzenia. Oto kolejne kroki:

  • pobierz alternatywne oprogramowanie (wersja startowa),
  • zresetuj ruter wg zasady 30-30-30, czyli naciśnij sprzętowy guzik resetu z tyłu obudowy i trzymaj naciśnięty przez 30 sekund, następnie nie puszczając guzika wyłącz zasilanie i po kolejnych 30 sekundach podłącz ponownie zasilanie i odczekaj ostatnie 30 sekund zanim puścisz guzik resetu,
  • podłącz się do rutera kablem (na wszelki wypadek wyłącz WiFi w komputerze) i otwórz stronę WWW rutera ,
  • w sekcji administracyjnej wybierz aktualizację oprogramowania i wskaż pobrany w pierwszym kroku plik,
  • poczekaj aż plik się załaduje a potem poczekaj jeszcze kilka minut aż lampki rutera przestaną wariować,
  • podłącz się do rutera i na stronie WWW ustaw hasło administratora.

Twój ekran powinien wyglądać mniej więcej tak:

Alternatywne oprogramowanie dd-wrt

Alternatywne oprogramowanie dd-wrt

Gdy na ruterze znajduje się już podstawowe oprogramowanie WRT, czas na zainstalowanie wersji obsługującej połączenia OpenVPN. W tym celu powtórz kroki dla nowego oprogramowania:

  • pobierz alternatywne oprogramowanie (wersja VPN),
  • zresetuj ruter wg zasady 30-30-30, czyli naciśnij sprzętowy guzik resetu z tyłu obudowy i trzymaj naciśnięty przez 30 sekund, następnie nie puszczając guzika dołącz zasilanie i po kolejnych 30 sekundach podłącz ponownie zasilanie i odczekaj ostatnie 30 sekund zanim puścisz guzik resetu,
  • podłącz się do rutera kablem (na wszelki wypadek wyłącz WiFi w komputerze) i otwórz stronę WWW rutera (192.168.1.1),
  • w sekcji administracyjnej wybierz aktualizację oprogramowania i wskaż pobrany w pierwszym kroku plik,
Instalacja nowej wersji

Instalacja nowej wersji

  • poczekaj aż plik się załaduje a potem poczekaj jeszcze kilka minut aż lampki rutera przestaną wariować,
  • podłącz się do rutera i na stronie WWW ustaw hasło administratora.

Jeśli wszystko się udało, to w sekcji Services w zakładce VPN zobaczysz opcję „OpenVPN client” i guzik „Enable”. Wybierz go.

Konfiguracja VPNa

Konfiguracja VPNa

Konfiguracja VPNa na ruterze

Skoro masz już odpowiednią wersję oprogramowania, to czas ją prawidłowo skonfigurować. W tym celu będą Ci potrzebne dane serwera VPN który został przez Ciebie wcześniej skonfigurowany oraz pliki z niego pobrane według wcześniejszych instrukcji.

Konfiguracja naszego VPNa

Konfiguracja naszego VPNa

Na początku podaj adres IP serwera VPN oraz wybrany numer portu. Pozostałe opcje możesz ominąć (chyba że wyglądają inaczej niż te przedstawione na powyższym zrzucie ekranu). Następnie w polu Additional Config (dodatkowa konfiguracja) wstaw następujące polecenia:

script-security 2
up /tmp/openvpncl/up.sh
down /tmp/openvpncl/down.sh

Krótkie wyjaśnienie – ruter, jako klient, będzie mógł wysyłać ruch do sieci VPN, jednak brakuje na nim reguły umożliwiającej ruting dla klienta, czyli Twoich urządzeń. W tym celu musimy między innymi dodać mu regułkę rutingu przy włączaniu VPNa – powyższy wpis wywoła wtedy odpowiednie pliki, a za chwilę zadbamy o ich stworzenie. Teraz w ostatnich trzech polach wklej odpowiednio:

  • CA Cert – certyfikat z pliku ca.crt
  • Public Client Cert – certyfikat z pliku client.crt (znajduje się pod koniec pliku)
  • Private Client Key – klucz z pliku client.key

Pamiętaj, by zawsze wklejać klucze i certyfikaty wraz z ciągami —–BEGIN CERTIFICATE—– i —–END CERTIFICATE—– (czy też odpowiednio dla klucza). Na koniec najpierw zapisz ustawienia przez Save a następnie zastosuj przez Apply Settings.

Teraz musimy dokonać jeszcze kilku zmian w konfiguracji. W menu Administration i zakładce Commands wklej poniższe polecenia:

echo -e '#!/bin/sh\n/usr/sbin/iptables -t nat -A POSTROUTING -o tun1 -j MASQUERADE' > /tmp/openvpncl/up.sh
echo -e '#!/bin/sh\n/usr/sbin/iptables -t nat -D POSTROUTING -o tun1 -j MASQUERADE' > /tmp/openvpncl/down.sh
/bin/chmod +x /tmp/openvpncl/up.sh /tmp/openvpncl/down.sh

Po wklejeniu poleceń kliknijcie Save Startup.  Te polecenia przy starcie rutera utworzą skrypty, które będą wywołane przy uruchomieniu VPNa. Nie znaleźliśmy bardziej eleganckiej metody zapewnienia ich obecności na dysku, a restart urządzenia czyści katalog roboczy, zatem ich tworzenie musieliśmy dopisać do skryptów startowych. Jeśli macie pomysł, jak zrobić to ładniej w dd-wrt, to dajcie znać.

Wracamy na serwer

Można powiedzieć, że po stronie rutera prace zakończone, teraz trzeba jeszcze zająć się serwerem, ponieważ jego konfiguracja w tym przypadku musi wyglądać odrobinę inaczej. W stosunku do konfiguracji opisanej w poprzednich artykułach niezbędne są następujące zmiany.

Na końcu pliku /etc/openvpn/server.conf musimy dopisać

client-config-dir ccd
auth sha256

a w katalogu /etc/openvpn/ utworzyć podkatalog /ccd i w nim stworzyć plik client o zawartości

iroute 192.168.1.0 255.255.255.0 
iroute 192.168.100.0 255.255.255.0

W naszym wypadku ruter główny działał w klasie adresowej 192.168.1.x a ruter WRT54GL w 192.168.100.x. Jeśli Wasza domowa konfiguracja sieci wygląda inaczej, to zmodyfikujcie odpowiednio klasy adresowe w powyższym fragmencie. Mała dodatkowa uwaga odnośnie wpisu auth sha256 – próbowaliśmy po stronie rutera ustawić auth sha1, ale uparcie wraca do sha256, więc lepiej ustawić tę wersję po stronie serwera.

Wskazówki pomocne dla walczących

Powyższa instrukcja powinna zadziałać w opisywanej przez nas konfiguracji a po każdorazowym uruchomieniu ruter powinien w ciągu 1-2 minut zestawić tunel VPN z serwerem. Pozostaje skonfigurować na nim sieć WiFi o nazwie np. DOM-tajne i łączyć się do niej za każdym razem gdy chcecie, żeby Wasz ruch był zaszyfrowany. Gdyby jednak potrzebna była diagnostyka problemów, to przydać mogą się poniższe informacje:

  • na SSH na dd-wrt logujemy się loginem root i hasłem ustawionym w panelu administracyjnym
  • konfiguracja VPNa znajduje się w pliku /tmp/openvpncl/openvpn.conf
  • logi VPNa znajdują się w pliku /var/log/openvpn/openvpncl (warto ustawić np. debug 6 by było w nich więcej informacji)
  • gdy uparcie nie działa sprawdź czy kable znajdują się na swoich miejscach ;)

Oczywiście jeśli macie inny ruter niż WRT54GL, który podoła temu zadaniu, nic nie stoi na przeszkodzie (oprócz może stopnia skomplikowania wyboru wersji oprogramowania) by także i jego użyć do zestawienia VPNa. Można także użyć innego oprogramowania alternatywnego – my po prostu zawsze korzystaliśmy z dd-wrt, zatem było nam prościej na nim oprzeć nasz projekt. Usługi nie musi świadczyć serwer ArubaCloud – ale korzystamy od paru miesięcy i nie mamy powodu do narzekania. Powodzenia!

Dla pełnej przejrzystości – za przygotowanie oraz opublikowanie powyższego artykułu otrzymujemy wynagrodzenie od ArubaCloud – producent rutera nam nie płaci ;)