Narzędzia do testowania szczelności ExpressVPN

Ilustracja przeciekającego kabla komputerowego oglądanego przez szkło powiększające.


Narzędzia ExpressVPN do testowania szczelności są rozszerzalnym pakietem narzędzi Python zaprojektowanych zarówno do ręcznego, jak i automatycznego testowania szczelności aplikacji VPN.

Narzędzia opracowane przez ExpressVPN’s Privacy Research Lab były początkowo zbudowane w dwóch celach:

  • Zapewnia solidne, zautomatyzowane testy regresji aplikacji ExpressVPN
  • Ułatwienie dochodzenia w sprawie testów szczelności w celu dalszego wzmocnienia tych aplikacji

Wkrótce zdaliśmy sobie sprawę, że narzędzia te mogą być korzystne dla szerszej branży VPN. Postanowiliśmy więc udostępnić je w pełni dostępne oprogramowanie typu open source na licencji MIT.

Mamy nadzieję, że dzięki temu pomożemy zapewnić bardziej prywatny i bezpieczny dostęp online wszystkim użytkownikom VPN poprzez:

  • zapewnienie użytkownikom i stronom trzecim niezależnego sposobu weryfikacji jakości VPN i oceny ich własnego ryzyka dla prywatności i bezpieczeństwa;
  • stworzenie wyższego poziomu odniesienia w zakresie ochrony przed wyciekami dla całej branży VPN; i
  • gromadzenie wiedzy fachowej z całej branży w zakresie testów szczelności

Pierwsze kroki z narzędziami

Narzędzia można znaleźć na GitHub pod adresem: https://github.com/expressvpn/expressvpn_leak_testing.

Aby rozpocząć, postępuj zgodnie z instrukcjami w pliku README.md. Chociaż zapewniamy przegląd poniższych narzędzi, repozytorium GitHub powinno być zawsze uważane za jedno źródło prawdy w dokumentacji związanej z narzędziami.

Pamiętaj, że aby postępować zgodnie z instrukcjami testowania zawartymi w naszych studiach przypadków z Laboratorium Badań Prywatności, musisz zainstalować narzędzia do wycieków zgodnie z dokumentacją w GitHub. Zakłada się, że za każdym razem, gdy przeprowadzasz dowolne studium przypadku, katalog główny narzędzi odnosi się do lokalizacji, w której sklonowałeś powyższe repozytorium git.

Przegląd narzędzi

Używamy Pythona

Narzędzia są napisane przede wszystkim w języku Python, w razie potrzeby z kilkoma narzędziami pomocniczymi w innych językach. Wybraliśmy Python z kilku powodów:

  • Jest wieloplatformowy i obsługiwany w większości przypadków po wyjęciu z pudełka
  • Jest dobrze znany znacznemu odsetkowi programistów i dlatego jest łatwo dostępny
  • Szybko się rozwija – nie mamy żadnych wymagań wydajnościowych dla środowiska testowego
  • To ekspresyjny język, który pozwala nam pisać łatwo czytelny kod

Zauważ, że używamy Pythona 3, ponieważ szybko staje się on de facto standardem.

To jest jak testowanie jednostkowe

Narzędzia zostały zaprojektowane tak, aby działały jak pakiet testów jednostkowych. Pojedynczy skrypt służy do uruchomienia pakietu, który następnie uruchamia serię testów. Każdy test sprawdza określony typ wycieku w określonych warunkach, np. W pewnych warunkach sieciowych, a następnie zgłasza pozytywny, negatywny lub błąd.

Test – lub przypadek testowy – z grubsza odpowiada pojedynczemu plikowi Python. Zestaw testowy został zaprojektowany tak, aby być zaznajomionym z programistami używającymi zestawów testów jednostkowych, więc każdy test działa zgodnie ze znanym wzorcem setup (), test () i teardown ().

Przypadki testowe są zaprojektowane tak, aby były jak najbardziej ogólne. Przypadki testowe można uruchamiać z różnymi konfiguracjami VPN, różnymi konfiguracjami sieci i tak dalej. Po uruchomieniu są dostarczane w konfiguracji, która określa, w jaki sposób będą działać w tej rundzie testów. Plik konfiguracyjny jest przekazywany do zestawu testów, który zawiera listę wszystkich testów do uruchomienia i ich konfiguracji.

Przykładem uruchomienia testów może być wykonanie następującego polecenia z katalogu głównego narzędzi:

./run_tests.sh -c configs / case_studies / vanilla_leaks.py

Konfiguracje urządzeń i sieci

Pakiet został zaprojektowany z myślą o przeprowadzaniu testów na dowolnych konfiguracjach urządzeń i sieci. Od samego początku byliśmy świadomi, że niektóre aspekty zachowania VPN będą wymagały więcej niż jednego urządzenia do przetestowania, dlatego zaprojektowaliśmy zestaw testowy, aby umożliwić to od samego początku.

Urządzenie, z którego uruchamiane są testy, jest określane jako testowy orkiestrator. Wszystkie inne urządzenia są po prostu określane jako urządzenia testowe.

Najprostszy typ testu jest uruchamiany na jednym urządzeniu (testy na jednym urządzeniu) i testuje szczelność bezpośrednio na tym urządzeniu. Na przykład można uruchomić szeroką klasę testów szczelności systemu Windows bezpośrednio na urządzeniu z systemem Windows. W tym przypadku orkiestrator testowy jest w rzeczywistości również urządzeniem testowym. Bardziej złożone testy (testy na wielu urządzeniach) mogą obejmować urządzenie testowe z uruchomioną siecią VPN, router i urządzenie do przechwytywania pakietów.

Automatyzacja

Zestaw testowy został zaprojektowany tak, aby w pełni obsługiwać automatyzację testów. Jednak po wyjęciu z pudełka testy zawsze będą wymagały ręcznej interakcji. Ilekroć wymagana jest ręczna interakcja, zestaw testów wyraźnie wyświetli monit dla użytkownika i powie mu, co ma robić.

Jedną z najtrudniejszych części testów do automatyzacji jest kontrola nad aplikacjami VPN. Rzeczywiście, w przypadku wielu testów jest to jedyny element układanki, który nie jest zautomatyzowany. Obecnie nie planujemy oferować wsparcia dla automatyzacji kontroli aplikacji VPN w repozytorium. Dodanie takiej obsługi jest jednak obsługiwane przez architekturę pakietu.

Pamiętaj, że wewnętrznie wdrożyliśmy pełną automatyzację własnej aplikacji, aby ułatwić ciągłe testowanie integracji. Nie planujemy udostępniać tych narzędzi automatyzacji jako części repozytorium open source.

Konfigurowanie narzędzi

Szczegółowe instrukcje dotyczące konfigurowania urządzeń testowych znajdują się w repozytorium GitHub. Podajemy tutaj przegląd tego, czego można się spodziewać podczas konfigurowania urządzeń.

Pakiet testowy jest obsługiwany na urządzeniach Linux, macOS i Windows (tzn. Pakiet Python można zainstalować i bezpośrednio uruchomić na tych urządzeniach). Narzędzia obsługują również urządzenia mobilne, ale sam pakiet nigdy nie będzie działał bezpośrednio na tych urządzeniach.

Zalecamy korzystanie z maszyn wirtualnych (VM) w jak największym stopniu, szczególnie w przypadku testów na jednym urządzeniu. Maszyny wirtualne oferują kilka zalet:

  • Łatwe tworzenie i konfigurowanie nowych interfejsów sieciowych
  • Umożliwia trzymanie komputera z dala od wielu instalacji oprogramowania innych firm wymaganych przez testy
  • Przechwytywanie ruchu opuszczającego maszynę wirtualną jest prostsze niż przechwytywanie ruchu opuszczającego prawdziwe, fizyczne urządzenie
  • Łatwe wstępne konfigurowanie migawek i przywracanie w razie potrzeby

W przypadku poważnych szczegółowych testów zawsze zalecamy przeprowadzenie testów na prawdziwym sprzęcie fizycznym, aby wykluczyć wszelkie potencjalne różnice między sprzętem zwirtualizowanym a rzeczywistym.

Zauważ, że większość testów wymaga uprawnień roota (administratora), aby uprościć wszystko, cały pakiet będzie działał jako root.

Dowiedz się więcej o scenariuszach wycieków, dla których testują narzędzia

Poniższe studia przypadków dostarczają więcej informacji o niektórych scenariuszach wycieków, dla których testują te narzędzia, wyjaśniając, w jaki sposób mogą one wpłynąć na twoją prywatność i bezpieczeństwo, a także opisują sposób korzystania z odpowiedniego narzędzia:

  • Studium przypadku 1: Wycieki „wanilii”
  • Studium przypadku 2: Wycieki WebRTC
  • Studium przypadku 3: Wycieki z przejścia sieci
  • Studium przypadku 4: Wyciek nieosiągalnego serwera VPN
  • Studium przypadku 5: Wycieki awaryjne procesu VPN

Wkład w narzędzia

Z przyjemnością otrzymamy wkład do narzędzi, czy to w zakresie poprawek błędów, sugestii ulepszeń, czy zupełnie nowych przypadków testowych. Możesz przesyłać składki za pośrednictwem żądań ściągania w GitHub.

Skontaktuj się z nami w sprawie narzędzi

Możesz skontaktować się z nami w sprawie narzędzi pod adresem [email protected]

Pamiętaj, że narzędzia są obecnie w alfa stan i prawdopodobnie będzie się często zmieniać. Dołożymy jednak starań, aby narzędzia były zawsze w dobrym stanie.

Kim Martin Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map