PPPoE, PPtP (VPN Windows-Linux) czyli teoria punktów
Co to jest protokół PPP i do czego służy poczytajcie sobie w Wiki. W tym artykule zajmiemy się konkretnymi sprawami z zakresu połączeń punkt-punkt. Wartym uwagi są dwa ich rodzaje, których zrozumienie zajęło mi chwilę czasu. Artykuł nie miałby w ogóle sensu gdyby wszystko to działało po instalacji z paczek (w moim wypadku Debian). Jednak nie działa więc trzeba wyprostować kilka niejasnych aspektów.
Sprawa pierwsza - PPPoE
Jeśli jesteś "admin" i masz swoją super-sieć to powinieneś już wiedzieć, że czysty protokół IPv4 oraz związane z nim nierozłącznie adresy IP oraz MAC mają dość poważne wady co do utrzymania bezpieczeństwa sieciowego. Mam na myśli różnego rodzaju podkradanie i podsłuchiwanie transmisji. Mamy do wyboru w zasadzie dwie opcje autoryzacji Twoich użytkowników - albo statycznie wpiszesz im konfigurację w ustawieniach TCP/IP albo podasz im poprzez protokół DHCP (znów patrz Wiki jak nie wiesz o co kaman). W obu przypadkach aby zapewnić minimalny poziom autoryzacji musisz wklepać na swoim super-firewallu każdą parę IP-MAC. Jest to rozwiązanie dość szybkie i wygodne w realizacji i wdrożeniu. Problem pojawia się, gdy liczba użytkowników Twojej sieci rośnie i pojawia się dość dużo ruchu nadmiarowego wynikającego z natury protokołu IP. Nie wspomnę już o sytuacji, kiedy tzw. "intruz-morderca" będzie chciał skorzystać sobie za darmo z Twojej sieci.
Podkreślmy dobitnie, że nie będę rozklejał się tu nad możliwymi zabezpieczeniami dostępu do sieci (pancerny pancerz na kabel, WEP, WPA, WPA2 itd) ponieważ to działa w troszkę wyższej "warstwie". Tutaj zajmiemy się protokołami transmisyjnymi 2/3 warstwy z modelu OSI (Wiki? :P).
Mamy więc intruza. Intruz podłączył się do sieci firmowej opartej na przełącznikach ponieważ admin zapomniał zamknąć szafki w kiblu, gdzie akurat znajdował się jeden wolny port w switchu. Dość absurdalna sytuacja ale znam głupsze. Intruz nasłuchuje broadcasty latające po sieci (zwłaszcza pakiety ARP) i zapisuje sobie wszystko skrupulatnie. Następnie wykonuje atak "man-in-the-middle" na bramę domyślną w sieci i zbiera dane dostępowe do Naszej-Klaty, skrzynek pocztowych i inne rzeczy, które nie są szyfrowane. Później zmienia swój adres MAC na któryś z podsłuchanych oraz wpisuje odpowiedni IP i co ma po chwili? Dostęp do naszego super-zabezpieczonego Internetu 😀
Dobrym lekarstwem na taką sytuację jest zmiana protokołu IP na PPPoE. Zasada działania jest prosta. U nas mamy koncentrator PPPoE natomiast klient aby uzyskać połączenie z siecią musi wpisać login i hasło, który otrzyma od nas. Po autoryzacji klienta zostaje otwarte połączenie punk-punkt między jego komputerem a koncentratorem i generalnie rzecz biorąc - nic innym użytkownikom do tego Nie ma broadcastów - nie ma możliwości ataków takich jak w IPv4. Pamiętajmy, że klient tak czy inaczej paradoksalnie otrzyma adres IP na swojej końcówce tego połączenia jednak tylko i wyłącznie do celów logicznych.
Można by powiedzieć, że każdorazowe odpalanie połączenia PPPoE po starcie systemu przypomina trochę czasy modemów i sławnych juz 56kbps. Prawda. Ale zawsze można zamontować sobie router, który nawiąże to połączenie u klienta za nas i załatwi tym samym problem klikania w ikonkę połączenia. Swoją drogą za te minimum 100zł, które trzeba by wydać na router wolałbym sobie raz więcej kliknąć 😉
Połączenie PPPoE ma też swoje wady. Nie lubi gubienia się ramek a co za tym idzie link do klienta, czy to kablem czy radiem, musi być stabilny. Inaczej zobaczymy sporadyczne DC. Poza tym zalecam stosowanie szyfrowanka MPPE oraz autoryzancji ms-chap-v2 z uwagi na wysoki poziom trudności w połamaniu tego co oczywiście nie znaczy, że nie da się.
UWAGA. Połączenie PPPoE działa tylko w ramach jednego segmentu sieci (bridża) czyli w warstwie drugiej OSI. Każdy router po drodze uniemożliwi nam podłączenie się do koncentratora ponieważ ma on za zadanie właśnie rozdzielić segmenty sieci.
Protokół PPtP
Jest to protokół tunelowy PPP. W tym akurat wypadku oznacza to, że jest zapakowany w protokół warstwy wyższej czyli IPv4. Po co? Wyobraźmy sobie, że mamy super-tajną firmę, w której działa sieć lokalna a dostęp do zasobów serwerów (otoczenie sieciowe, bazy danych itd) ograniczony jest tylko do tej sieci ze względów bezpieczeństwa. Głupotą byłoby narażać nasze bazy danych osobowych na samą możliwość kontaktu ze światem Internetu zewnętrznego prawda? Okej - mamy też pracowników, który dużo podróżują i potrzebują szybki dostęp do baz danych firmy. Nie rozwiążemy tego problemu dopóki, nie wdrożymy dowolnego rozwiązania spod hasła VPN. PPPtP jest jednym z wyjść i jednym z najlepszych i najprostszych jeśli ludzie w naszej firmie korzystają z Windows. Umożliwia użytkownikowi po podaniu loginu, hasła oraz zdalnego serwera (np. bramy w naszej firmie, serwera VPN) wykonanie tunelu do lokalnej sieci poprzez np Internet. Logicznie wyglądałoby to tak, jakby użytkownik znajdował się w sieci lokalnej a fizycznie może być nawet na księżycu (polecam bajkę "Jak ukraść księżyc").
Instalacja pod Debianem
Oprócz paczek z oprogramowaniem dla routera należy doinstalować w systemie (dpkg -i plik.deb) następujące 3 paczki deb, które póki co przekompilowałem na architekturze i386:
Należy zwrócić uwagę na plik z paczki:
/etc/ppp/chap-secrets
w którym znajdują się hasła użytkowników. PPPoE serwer uruchamiamy np. następującym poleceniem:
/usr/sbin/pppoe-server -I eth1 -L 192.168.1.1 -N 1000 -k
gdzie -I to intefejs, -N maksymalna ilość połączeń, -k parametr oznaczający wsparcie jądra dla PPPoE. Serwer PPtP uruchamiamy wklepując:
/usr/local/sbin/pptpd
bez żadnych parametrów. Pamiętajmy aby otworzyć port 1723 ponieważ na nim właśnie słucha PPtP.