Serwer VPN przy użyciu PPTP

Dawno, dawno temu pisałem jak tunelować http przez ssh używając putty. Pomysł prosty i szybki na w miarę bezpieczne korzystanie z publicznych hotspotów i sieci niezabezpieczony. Fajnie, ale co zrobić z telefonami, tabletami na których nie da się uruchomić putty. Z pomocą przychodzi usługa taka jak VPN. Większość „tych mądrych” telefonów itp. ma możliwość zestawienia bezpiecznego połączenia z firmą, domem lub serwerem przez który możemy przeglądać Internet. Z takiej usługi możemy również korzystać na pc lub laptopie. Opcja fajna, gdy np. w firmie mamy zablokowane strony, a admin zapomniał przyblokować usługi VPN.

Do uruchomienia takiej usługi będziemy potrzebowali serwer na którym wykonamy całą instalację i konfigurację. Ja do swoich celów (zabaw i nauki:) ) wykupiłem VPS-a (wirtualizacja xen), który kosztuje mnie niecałe 10 pln/m-c. Cena nie jest kosmicznie duża, a do naszych celów w zupełności wystarczy.

Krok 1. Instalacja serwera.

Logujemy się do serwera i wydajemy polecenie:

$sudo apt-get update
$sudo apt-get install pptpd

Krok 2. Konfiguracja serwera.

Edytujemy plik serwera PPTP

sudo nano /etc/pptpd.conf

Zjeżdżamy na sam dół pliku i dodajemy wpis:

localip 10.0.0.1 #to jest adres po stronie serwera PPTP
remoteip 10.0.0.100-110 #pula adresów które zostaną nam przyznane (użytkownikom podłączających się do serwera VPN)

Kolejny plik, który musimy edytować to:

sudo nano /etc/ppp/pptpd-option

Modyfikujemy wpis dodając swoje serwery DNS (tu przykład z serwerami DNS Googla)

ms-dns 8.8.8.8
ms-dns 8.8.4.4

Krok 3. Przekazywanie pakietów IP (IP forwarding).

Domyślnie, w ubuntu przekazywanie pakietów IP (IP forwarding) jest wyłączone. Musimy to zmienić, aby przez nasze połączenie VPN można było przeglądać Internet.

sudo nano /etc/sysctl.conf

Odszukujemy wpis  “net.ipv4.ip_forward” i zmieniamy wartość z 0(wyłączone) na 1 (włączone) oraz usuwamy znak komentarza # przed wpisem:

net.ipv4.ip_forward=1

Potwierdzamy zmiany poleceniem:

sudo sysctl -p

Krok 4. Reguły firewalla.

Dodajemy kilka reguł do firewalla:

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables --table nat --append POSTROUTING --out-interface ppp0 -j MASQUERADE
iptables -I INPUT -s 10.0.0.0/8 -i ppp0 -j ACCEPT

Krok 5. Konfiguracja użytkowników.

A na koniec edytujemy plik, w który umieszczamy użytkowników oraz hasła. Plik ma postać:

# client server secret IP addresses
login <TAB> pptpd <TAB> hasło <TAB> *

zamiast adresu IP możemy wstawić *

$sudo nano /etc/ppp/chap-secrets

# Secrets for authentication using CHAP 
# client server secret IP addresses 
uservpn1 pptpd haslovpn1 * 
uservpn2 pptpd haslovpn2 *

Krok 6. Restart serwera.

sudo /etc/init.d/pptpd restart

I cieszymy się się naszym serwerem VPN :).
W kolejnych wpisach postaram się opisać krok po kroku jak się połączyć do naszego serwera PPTP.