Bezpieczna komórka na wakacje, czyli jak się nie dać podsłuchać w cudzej sieci WiFi

dodał 1 lipca 2016 o 20:03 w kategorii HowTo  z tagami:
Bezpieczna komórka na wakacje, czyli jak się nie dać podsłuchać w cudzej sieci WiFi

Nadszedł okres wakacyjnych podróży, a wraz z nim okres polowania na darmowe WiFi. Darmowe nie zawsze oznacza jednak bezpieczne, dlatego przeczytajcie, jak w skuteczny sposób zaszyfrować internetowe połączenia swoich komórek.

Poniższy poradnik jest kontynuacją cyklu artykułów przygotowywanych wspólnie z firmą ArubaCloud, która jest dużym europejskim dostawcą rozwiązań chmurowych. Jakiś czas temu pokazaliśmy Wam jak skonfigurować swoją własną usługę kopii bezpieczeństwa w chmurze. Mogliście także przeczytać u nas jak skonfigurować swój własny własny, prywatny serwer VPN. Dzisiaj rozwiniemy ten wątek i pokażemy, jak skonfigurować VPNa w systemach Android i iOS.

Twój własny VPN za darmo na dwa miesiące

Korzystanie z cudzych sieci WiFi zawsze obarczone jest pewnym ryzykiem. Jeśli siec jest otwarta lub każdy jej użytkownik dostaje to samo hasło, to najczęściej osoby do niej podłączone mogą się nawzajem podsłuchiwać. Co prawda spora część połączeń wykonywanych przez nasze komórki jest tak czy inaczej szyfrowana, jednak czasem może się zdarzyć, że poufne informacje będą przesyłane w formie możliwej do przechwycenia. Przed takim atakiem uchroni Was bezpieczne połączenie VPN.

Dzięki promocji w ArubaCloud możecie założyć własnego, prywatnego VPNa tylko do swojej dyspozycji za darmo na dwa miesiące – akurat na czas wyjazdów. Jeśli po naszych poprzednich artykułach macie już konto w ArubaCloud, to możecie od razu przejść do akapitu pt. Konfiguracja serwera VPN. Jeśli macie już także skonfigurowanego VPNa na swoim serwerze, to zapraszamy do rozdziałów VPN na Androidzie lub VPN na iOS.

Zakładanie konta ArubaCloud

Zaczniemy od założenia konta i wystąpienia o kupon rabatowy. W tym celu wchodzimy na stronę promocji i wypełniamy wniosek o voucher o wartości 8 PLN.  Voucher jest przyznawany ręcznie, ale proces ten nie powinien trwać dłużej niż kilka godzin. Kod przychodzi SMSem i gdy go już otrzymamy trzeba zarejestrować nowe konto klienta aby go aktywować. Kolejne kroki wyglądają następująco – zaczynamy od formularza rejestracyjnego, gdzie podajemy swoje dane.

aruba00

Po jego wypełnieniu na podany adres email otrzymujemy wygenerowany login i hasło (które oczywiście warto zmienić). Wchodzimy zatem na stronę logowania po czym odwiedzamy Strefę Klienta, w zakładce Konto zmieniamy hasło i wracamy do składania naszego pierwszego zamówienia.

aruba01

Na tym ekranie wystarczy kliknąć Dalej.

aruba02

Tutaj oczywiście wybieramy opcję Posiadasz voucher.

aruba03

Podajemy kod vouchera.

aruba04

Podajemy dane kontaktowe.

aruba05

Akceptujemy regulaminy i warunki (czytaliśmy, nie ma niczego strasznego).

aruba06

I na naszym nowym koncie ląduje 8 PLN, które wystarczy na dwa miesiące funkcjonowania serwera. Po chwili do naszej skrzynki przychodzi kolejny login i hasło, tym razem już do właściwych usług.

 Konfiguracja serwera VPN

Logujemy się w panelu administracyjnym. Jeśli to pierwsze logowanie to hasło zmieniamy. Następnie wybieramy naszą usługę.

Panel logowania

Interesuje nas zakładka Cloud Computing. Wybieramy region, w którym chcemy mieć swojego VPNa. My polecamy Niemcy – blisko i bardzo silne przepisy ochrony prywatności użytkowników. Po przejściu do niemieckiego Datacenter klikamy +Utwórz Nowy Server Cloud.

aruban02

Wybieramy opcję Serwer Cloud Smart za 4 PLN miesięcznie i klikamy Kontynuuj. Na następnym ekranie musimy nazwać swój nowy serwer, wybrać rodzaj systemu operacyjnego (poniższa instrukcja oparta jest na systemie CentOS 7 w wersji 64-bitowej, zatem jeśli chcecie być prowadzeni za rękę w procesie instalacji to taki właśnie system wybierzcie) oraz podajemy hasło roota (i lepiej by nie było zbyt proste).

aruban03

Pozostaje już tylko kliknąć Utwórz Serwer Cloud i poczekać kilka minut na zakończenie procesu instalacji. Gdy serwer będzie już zainstalowany na ekranie pojawi się jego adres IP – przyda się nam na kolejnym etapie.

Logujemy się na nasz serwer przez SSH (używamy np. klienta PuTTy). Przydzielony adres IP widzimy w panelu, login to root, hasło ustawione wcześniej w panelu tworzenia serwera. Przy pierwszym logowaniu musimy potwierdzić prawidłowość klucza SSH serwera. Raczej nikt nam go nie podmienił, zatem klikamy OK.

Osobom chcącym przeprowadzić wzorową konfigurację serwera polecamy wyłączenie możliwości logowania za pomocą loginu i hasła oraz przejście na logowanie kluczem. Jak to zrobić? Google pomoże. Nie jest to niezbędne do prawidłowego działania VPNa, jednak trochę podnosi poziom bezpieczeństwa serwera.

Zaczynamy od zainstalowania OpenVPN oraz odpowiednich narzędzi do wygenerowania zestawu potrzebnych kluczy i certyfikatów:

yum install openvpn easy-rsa -y

Następnie kopiujemy przykładową konfigurację VPNa do docelowej lokalizacji

cp /usr/share/doc/openvpn-*/sample/sample-config-files/server.conf /etc/openvpn

Musimy ją teraz wyedytować. Edytorów plików tekstowych jest wiele, więc wybierzcie swój ulubiony. My skorzystamy z kombajnu pod nazwą Midnight Commander.

yum install mc

Zatwierdzamy klawiszem Y i uruchamiamy program:

mc

a następnie w jednym z okien kursorami i klawiszem Enter nawigujemy do katalogu /etc/openvpn oraz pliku server.conf.

Midnight Commander

Midnight Commander

Gdy jesteśmy w odpowiednim miejscu naciskamy F4 by rozpocząć edycję pliku.

W wierszu 32 zmieniamy numer portu. Nie jest to obowiazkowe, ale w razie gdyby kiedyś ktoś znalazł metodę ataku na serwer OpenVPN to naszej usługi nie znajdzie na domyślnym porcie. Zamiast 1194 wpisujemy np. 11194 (wartość musi być większa od 1024, by serwer mógł działać bez uprawnień roota).

W wierszu 192 usuwamy średnik, by wiersz ten wyglądał tak:

push "redirect-gateway def1 bypass-dhcp"

Dzięki temu cały ruch będzie przesyłany dalej za pośrednictwem naszego serwera.

W wierszach 200 i 201 usuwamy średniki, by ustawić serwery DNS (można zostawić wpisane pozycje od OpenDNS, można zamienić na googlowe 8.8.8.8 i 8.8.4.4). Wiersze powinny wyglądać np. tak:

push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"

W wierszach 234 i 235 usuwamy średniki, by nasz OpenVPN działał z niższymi uprawnieniami (obniżając ryzyko w razie pojawienia się jakiegoś poważnego błędu). Wiersze powinny wyglądać tak:

user nobody
group nobody

W wierszu 249 usuwamy średnik, by logować to, co dzieje się z naszą usługą (bardzo pomaga przy lokalizowaniu problemów). Wiersz powinien wyglądać tak:

log-append openvpn.log

To już koniec modyfikacji. Plik zapisujemy przez F2, zamykamy przez F10 i jeszcze raz przez F10 wychodzimy z Midnight Commandera.

Generowanie kluczy i certyfikatów

Czas wygenerować klucze i certyfikaty. Będzie dużo naciskania klawisza Enter. W certyfikatach można podawać wiele danych – w naszym przypadku są one do niczego niepotrzebne, zatem wszystkie pola opcjonalne będziemy omijać.

Tworzymy katalog w którym zapiszemy wyniki operacji:

mkdir -p /etc/openvpn/easy-rsa/keys

Kopiujemy do niego odpowiednie skrypty :

cp -rf /usr/share/easy-rsa/2.0/* /etc/openvpn/easy-rsa

Teraz ustawimy jedną zmienną środowiskową, by pasowała do naszej konfiguracji OpenVPN. Uruchamiamy znowu Midnight Commandera:

mc

Znajdujemy plik /etc/openvpn/easy-rsa/vars i w wierszu 72 zamieniamu „EasyRSA” na „server”. Wiersz powinien wyglądać tak:

export KEY_NAME="server"

Zapisujemy plik i zamykamy MC.

Kopiujemy też konfigurację OpenSSL:

cp /etc/openvpn/easy-rsa/openssl-1.0.0.cnf /etc/openvpn/easy-rsa/openssl.cnf

i bierzmy się do generowania kluczy. Wchodzimy do katalogu i ustawiamy zmienne:

cd /etc/openvpn/easy-rsa
source ./vars

Na wszelki wypadek czyścimy ewentualne pozostałości po poprzednich eksperymentach:

./clean-all

Tworzymy swoje CA:

./build-ca

Na wszystkie pytania odpowiadamy klawiszem Enter (8 razy).

Tworzymy klucze i certyfikaty serwera:

./build-key-server server

Ten etap sponsoruje 10 razy klawisz Enter i dwa razy literka Y.

Tworzymy plik do wymiany kluczy Diffiego-Hellmana (potrwa to chwilę):

./build-dh

Kopiujemy wynik naszych prac do docelowego katalogu:

cd /etc/openvpn/easy-rsa/keys
cp dh2048.pem ca.crt server.crt server.key /etc/openvpn

Serwer gotowy. Teraz tworzymy klucze dla klienta:

cd /etc/openvpn/easy-rsa
./build-key client

Znowu 10 razy Enter i dwa razy Y.

Tworzymy katalog w naszym domowym folderze i kopiujemy do niego klucze naszego klienta:

mkdir /root/keys
cd /etc/openvpn/easy-rsa/keys
cp ca.crt client.crt client.key /root/keys/

Kluczami zajmiemy się za chwilę, tymczasem na serwerze musimy jeszcze włączyć routing oraz zapisać tę konfigurację.

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
iptables-save > /etc/sysconfig/iptables

W pliku /etc/sysctl.conf musimy na końcu dodać wiersz

net.ipv4.ip_forward = 1

Pamiętacie już jak zmodyfikować plik, prawda?

Pozostaje zrestartować usługę sieciową:

systemctl restart network.service

Włączyć autostart usługi OpenVPN:

systemctl -f enable [email protected]

oraz ją uruchomić:

systemctl start [email protected]

Serwer OpenVPN powinien już działać. My polecamy jeszcze jedną operację, która pozwoli nam cieszyć się nim bez potrzeby regularnego odwiedzania i aktualizowania oprogramowania.

Instalujemy pakiet yum-cron:

yum install yum-cron

W pliku /etc/yum/yum-cron.conf zmieniamy w wierszu 8

update_cmd = default

na

update_cmd = security

a w wierszu 19

apply_updates = no

na

apply_updates = yes

Pozwoli to na automatyczne instalowanie najważniejszych aktualizacji. Pozostaje uruchomić usługę:

service yum-cron start

i możemy zabrać się za konfigurację po stronie naszego klienta. Musimy w tym celu stworzyć plik konfiguracyjny. Będziemy potrzebować kilku plików z naszego serwera. Za pomocą klienta FTP (np. Filezilla) pobieramy pliki ca.crt, client.crt i client.key z katalogu /keys (używamy protokołu SFTP, czyli FTP po SSH) i zapisujemy je na lokalnym dysku. W ulubionym edytorze tekstowym tworzymy plik konfiguracyjny nowego połączenia. W środku powinien wyglądać tak:

client
port 11194
remote [tutaj adres IP Twojego serwera]
comp-lzo yes
dev tun
proto udp
nobind
auth-nocache
persist-key
persist-tun
verb 2
key-direction 1
<ca>
-----BEGIN CERTIFICATE-----
[tutaj treść certyfikatu z pliku ca.crt]
-----END CERTIFICATE-----
</ca>
<cert>
-----BEGIN CERTIFICATE-----
[tutaj treść certyfikatu z pliku client.crt (znajduje się pod koniec pliku)]
-----END CERTIFICATE-----
</cert>
<key>
-----BEGIN PRIVATE KEY-----
[tutaj treść klucza prywatnego z pliku client.key]
-----END PRIVATE KEY-----
</key>

Plik o nazwie z rozszerzeniem OVPN np. vpn.ovpn zapisujemy na dysku i przechodzimy do konfiguracji naszego telefonu.

VPN na Androidzie

Jeśli macie już plik z konfiguracją połączenia to uruchomienie VPNa na Androidzie zajmie Wam tylko chwilę. Zaczniemy od instalacji aplikacji OpenVPN Connect i przyznania jej uprawnień do odczytu plików. Następnie musimy wgrać plik z konfiguracja na telefon – najprościej wysłać go sobie na pocztę i zapisać załącznik.

aruban04

Po zapisaniu pliku uruchamiamy aplikację, w menu w prawym górnym rogu wybieramy opcję Import a następnie Import Profile from SD card. Znajdujemy nasz plik (powinien być w folderze Downloads) i importujemy.

aruban05

Pozostaje już tylko wybrać Connect, zatwierdzić użycie sieci VPN i cieszyć się szyfrowanym połączeniem i bezpieczną siecią.

aruban06

 VPN na iOS

Podobnie jak w przypadku Androida także i w systemie iOS uruchomienie VPNa jest bardzo proste. Zaczynamy od zainstalowania aplikacji OpenVPN Connect a następnie wgrywamy plik z konfiguracją VPNa na telefon. Do wgrania możemy użyć iTunes lub wysłać go pocztą (i odebrać np. za pomocą programu Mail, ponieważ z poziomu firmowego klienta Gmaila nie zapiszemy załącznika ani nie otworzymy go w odpowiedniej aplikacji). Po kliknięciu w plik wybieramy opcję Kopiuj do OpenVPN.

aruban07

Plik zostanie automatycznie wczytany. Klikamy w zielony znak + a następnie przesuwamy przełącznik i potwierdzamy chęć połączenia z siecią VPN.

aruban09

W ten oto sposób zabezpieczyliśmy przed podsłuchem w sieci WiFi połączenie internetowe naszego telefonu. Gratulacje!

Dla pełnej przejrzystości – za przygotowanie oraz opublikowanie powyższego artykułu otrzymujemy wynagrodzenie.