Zrozum podstawy związane z adresacją IP i ideę portów.

Wyobraź sobie blok mieszkalny i ideę listonosza. Na razie nie skupiajmy się na pochodzeniu poczty, przyjmijmy, że listonosz po prostu ma pocztę i nie interesuj się skąd. Skąd wie, gdzie dostarczyć awizo list? Blok mieszkalny ma adres. Spójrz na etykietkę na liście, na dane odbiorcy:

Eugeniusz Przykładnicki

ul. Jaglana 21/37

69-420 Pingowo Dolne

Te informacje są wystarczające, aby przesyłka dotarła do odbiorcy. Jeśli Twoje IQ jest minimalnie wyższe, niż otaczająca Cię temperatura, to widzisz oczami wyobraźni jakiś budynek, ulicę i takie tam. Co powoduje takie zachowanie?

Pójdź od dołu etykiety, od ogółu do szczegółu. Chwilowo także zignoruj istnienie kodu pocztowego (swoją drogą polecam zagłębić się w ten temat, jest cholernie ciekawy!). Pierwszym ogranicznikiem obszaru zainteresowań jest miejscowość: Pingowo Dolne. Następnie uszczegóławiamy: ulica Jaglana. Na ulicy Jaglanej poszukujemy budynku 21 a w nim mieszkania 37. Nazwisko chwilowo nie jest dla nas interesujące. Przesyłka trafia do mieszkania, listonosz idzie dalej, świat się kręci, a ptaszki śpiewają. Sielanka.

Przełóżmy to na język sieciowy i wyjaśnijmy, czym tak w ogóle jest adres IP.

W komputerze (przy założeniu że opieramy się na IPv4, szóstkę zostaw w spokoju, na razie nie ma, a kysz!) trudno zapisać adresem jest Pingowo Dolne, dlatego raczej zobaczysz adres 192.168.0.3. Konkretny adres IP przypisany do konkretnego komputera, choć taki adres IP może mieć nawet mądra żarówka, stąd warto to uszczegółowić: host. Wówczas możemy mówić o komputerze, telefonie, tosterze, żarówce, teście ciążowym. Taki adres jest adresem IP konkretnego hosta. Spotkałeś się pewnie z pojęciem maski podsieci. Ot, 255.255.255.0, wszyscy wpisują nikt nie rozumie, dobra, działa więc zostaw jak jest. Otóż nie! To jest informacja, która mówi, jaka część adresu IP jest odpowiedzialna za sieć i jest stała, a jaka jest zmienna i przypisywana hostom. Ulice i numery domów się zmieniają, możemy mieć ulicę Jaglaną, ulicę Zieloną i ulicę Główną. Umówiliśmy się, że nazwy ulic będą niepowtarzalne (disclamer: w default city, czyli w Warszawie to ciut bardziej skomplikowane…), podobnie jak numer domu na danej ulicy.

Mapa sieci i adresów IP

Spójrz na tabelkę:


OgółSzczegół
PocztaPingowo DolneUlica Jaglana 21
Internety192.168.0.xxx192.168.0.3

W otaczającej nas rzeczywistości przyjmujemy, że ulica-miejscowość są rozdzielne. W cyferkologii stosowanej należy to wskazać i uszczegółowić, co jest miastem (niezmienne) a co ulicą (zmienia się w zależności od hosta). Stąd zapis 255.255.255.0 (lub /24) mówiący co jest siecią a co hostem. A dokładniej adresami tychże. Bo widzisz, sieć ma swój adres. Może być nim 192.168.0.0/24 (lub 192.168.0.0 z maską 255.255.255.0) i taka konwencja wskazuje jakiś spory obszar, podobnie jak miejscowość. Wiemy wówczas, dość intuicyjnie jeszcze, że ostatnie cyferki po ostatniej kropce wskazują adresy konkretnych hostów a to co jest przed, to adres sieci.

Idąc dalej, ulica Jaglana staje się 192.168.0.3. Nie dość, że jesteśmy w konkretnym bloku, to jesteśmy już w konkretnym komputerze. Hoście się znaczy.

A jak zapukać do konkretnych drzwi? W adresie masz wskazany numer mieszkania: 37. A jak uderzyć w konkretny port w komputerze?

Walnąć młotkiem w port USB. Koniec kursu.

Możliwe, że spotkałeś się zapisem 192.168.0.3:22. To :22 to numer portu, w tym przypadku to domyślny port dla SSH. Czym jest SSH? Cierpliwości, zaczekaj. Porty.

Ten port dwadzieścia dwa to właśnie numer mieszkania. W komputerze może mieszkać wiele usług i być wiele drzwi, podobnie jak wiele mieszkań w bloku.


OgółSzczegółWieeelki Szczegół
PocztaPingowo DolneUlica Jaglana 2137
Internety192.168.0.xxx192.168.0.3:22

Rozumiesz teraz?

Taki zapis pozwala na dokładne określenie, w które drzwi chcemy zapukać i czego oczekujemy od życia. I od transmisji. W sensie jaka aplikacja ma się nam przedstawić.

Na koniec małe wyjaśnienie: Celowo nie wprowadzam na tym etapie liczenia sieci na podstawie maski. Z jednej strony to dość proste, choć monotonne zajęcie, z drugiej są kalkulatory i robią to 666x szybciej i bez pomyłek. Na to przyjdzie czas, ale na początku warto potrafić poruszać się w miarę swobodnie powyższych pojęciach.

Czy sieć musi być fizyczna?

Czytając powyższy akapit można odnieść wrażenie, że sieć jest tworem czysto fizycznym, podobnie jak instytucja poczty i listonosza dostarczającego awizo listy pod wskazany adres.

mem z Tadeuszem Sznukiem

Sieć w żaden sposób nie musi być fizyczna. Ba, zupełnie na co dzień stosuje się konstrukcje czysto wirtualne i możliwe, że właśnie z takiej korzystasz. No ale jak to?!

Jeśli przeciętnemu człowiekowi wspomnimy coś o adresie IP, prawdopodobnie przyjmie, że jeden komputer (w sumie to host) = jeden adres IP. Nic bardziej mylnego. Jeden host może mieć wiele adresów IP i niezależnie stanu fizycznego a także nie mieć żadnego i nadal radośnie wysyłać jakieś dane. Coś Ci pokażę. Użyję narzędzia ifconfig w Linuksie, aby pokazać Ci interfejsy i adresy IP. Spójrz na screenshot poniżej:

Zrzut ekranu z ifconfig. Ma na celu zobrazować, jak wygląda konfiguracja sieciowa w Linuksie i do czego służą interfejsy i czy muszą być fizyczne

Obraz pochodzi z mojego komputera. Przyjrzyjmy się budowie takiego outputu.

Aby było jasne: w laptopie posiadam kartę sieci bezprzewodowej, kartę Ethernet, w doku także znajdzie się jeden port Ethernet. A co z resztą? Właśnie reszta jest czysto wirtualna a jednak potrafi w wysyłanie bitów w lewo i prawo. Interfejs enp0s31f6 to karta w laptopie, wbudowana, ale nie używana przeze mnie. Eth0 to karta sieciowa w doku i tę właśnie wykorzystuję przewodowo. Wlp0s20f3 to zaś karta sieci bezprzewodowej i też jest w gotowości, chociaż nie jest interfejsem pierwszego wyboru, co jednak nie wynika z powyższego outputu a z tablicy routingu. Czym to dokładnie jest, wyjaśnię za chwilę, ale to mniej więcej mapa, która wskazuje którą drogą pakiety mają iść w daną stronę. Wiecie, co będzie autostradą na świat, a co wąską polną dróżką do jakiejś zapomnianej części sieci domowej. Idąc dalej: vboxnet0 oraz virbr0 to interfejsy związane z wirtualizacją (w moim przypadku coś może sugerować, że VirtualBox ma coś z tym wspólnego), i one nie są w żaden sposób fizyczne. Istnieją tak naprawdę w przestrzeni wirtualnej, ale to właściwie jedyne, co je odróżnia od tych fizycznych. Podobnie można je wyłączać, mogą mieć przypisane adresy IP, mogą bawić się w DHCP, da się rozgłosić coś, da się je podsłuchać. Słowem: wszystko.
A co to lo?

Liceum Ogólnokształcące.

To tak zwany loopback, dość szczególny przypadek interfejsu sieciowego. Po naszemu to interfejs zwrotny, co może już coś podpowiedzieć. Widzisz, jeśli Twój komputer chce zapytać się siebie samego o coś, nie wali na któryś z powyższych interfejsów, bo mogą nie istnieć, mogą być wyłączone, przeciążone, a w ogóle to by znaczyło, że w ramach takiej transmisji trzeba wyskoczyć poza komputer, to może ktoś podsłuchać, w ogóle brzydko i takie tam. Przyjmuje się, że loopback jest zawsze działający, zawsze istnieje i zawsze ma ten sam adres 127.0.0.1 i nie trzeba się zastanawiać nad sensem istnienia, gdy nadejdzie potrzeba, aby o coś samego się zapytać.

To trochę takie ucho i usta do gadania z samym sobą. W sumie spoko, warto czasami z kimś inteligentnym porozmawiać, nie? Taka trochę rozmowa z samym sobą, w głowie. Zaraz, czy to nie ma jakiejś medycznej nazwy?

Lubimy przykłady, to będą. W Linuksie wewnętrzne usługi (demony) gadają właśnie często przy użyciu loopbacku. Taki resolvectl może obsłużyć zapytania z komputera, gdyż słucha na loopbacku na porcie 53. Przez to zachowuje się trochę jak oddzielny komputer, którego funkcją jest tłumaczenie nazw domen na adresy IP.

Resolvectl i jego praktyczna konfiguracja
Tutaj resolvectl działa na adresie 127.0.0.53

A co to jest SSH?

Z czym kojarzy Ci się DOS? Z konsolą i wpisywaniem poleceń. A Linux? No przecież, z konsolą i poleceniami ładowanymi z palca. A praca admina? No ba, wpisuje te magiczne zaklęcia jak opętany i żyje na innej planecie. Legenda głosi, że rozumie mowę pingwinów i potrafi zamówić pizzę przy użyciu zapisu binarnego.

No to z grubsza SSH to taka konsola, tyle, że zdalna. Pozwala nam na pracę na wybranym urządzeniu przy użyciu takiej konsoli (i różnych powłok, jak bash, zsh czy sh, ale nie tylko! Mikrotik na przykład żyje w innej galaktyce a potrafi gadać przez SSH) zdalnie, na odległość, bez fizycznego łażenia z monitorem i klawiaturą. Przy użyciu SSH możesz właściwie wszystko, od prac konserwacyjnych na serwerze, po wywalenie w kosmos całej macierzy dyskowej. Czyni to SSH bardzo potężne narzędzie, stąd już na początku trzeba to powiedzieć: dobrym nawykiem jest chowanie dostępu do SSH za jakimś VPN. Wywalenie portu 22 na świat to świetny pomysł na ataki botów, przeczesujących sieć w poszukiwaniu jelenia mającego na koncie admin hasło admin1. Równie dobrym nawykiem jest zaprzestanie używanie loginu i hasła na rzecz użycia kluczy. To jest trochę bardziej skomplikowane, ale tylko na początku, potem wchodzi w krew. Może dlatego, że takie klucze są piekielnie wygodne?

A co odróżnia SSH od innych protokołów (telnet, patrzę się na Ciebie)? Otóż SSH jest szyfrowane i dość bezpieczne. Jasne, wysyłanie SSH bez wrzucenia go w VPN jest możliwe i dopuszczalne, ale jest to złym pomysłem. Bezpieczniej wpakować to w tunel i podnieść bezpieczeństwo połączenia.

A czym są klucze?

Klucze SSH. Dobre, nie?

Dwa pliki. Jeden trzymasz na dysku i skaczesz wokół niego, aby nie wyciekł w sieć, drugi jest publiczny i rzucasz nim na lewo i prawo. Nazywają się kluczami prywatnymi i kluczami publicznymi i są ze sobą powiązane. Bo widzisz, ich nazwa jest, powiedzmy sobie to szczerze, absolutnie kretyńska i niewiele mówiąca.

Klucz prywatny to faktycznie klucz, który coś otwiera. On określa, że ten, kto się nim posługuje, jest faktycznie tym za kogo się podaje. Login i hasło możesz podejrzeć i przepisać, a z kluczem prywatnym jest to niemożliwe, bo nigdzie go nie wysyłasz. Zaraz to wyjaśnię.

A publiczny? To trochę zamek, a nie klucz. Umawiasz się z administratorem systemu, że dajesz mu swój zamek do jednych z drzwi i to będzie Twój wjazd. No ale ale, to nikt nie wejdzie? No nie, bo moment autoryzacji to moment, w którym przyciągasz taki zamek do siebie, wsuwasz klucz (prywatny) i otwierasz furtkę. Czy w którymkolwiek momencie dałeś komuś klucz do kłódki? No nie. A czy ktoś może Ci go wyrwać? Przyjmijmy na razie, że nie.

Możesz tę analogię zamienić na czytnik linii papilarnych i palec. Czytnik to klucz publiczny (każdy może po nim posmyrać a i tak nie wpuści każdego) a palec to klucz prywatny (dokładniej: linie papilarne na paluchu. Przyjmuje się, że to całkiem bezpieczne, bo zdobycie tego wymaga odrąbania palucha od reszty cielska). Może to trochę będzie mniej zagmatwane.

Jak wspomniałem, użycie kluczy pozwala potwierdzić z bardzo dużą dozą prawdopodobieństwa, że ten kto się tymi kluczami posługuje jest tym, kim twierdzi że jest.

Co to ten cały VPN?

Mapa z VPN

Korzystając z dobrodziejstw YouTube, nie sposób pominąć reklam RekinaSerferaVPN albo innego SuperBezpiecznyWiPiEn2000 pierwszy miesiąc gratis z kodem trzy za darmo!

Zatrzymajmy się na chwilę. Co to właściwie jest? To ładnie opakowany produkt, który jest znany od wielu lat każdemu administratorowi, który nie przespał ostatniej dekady pod kamieniem. A do czego się Tobie i Twojemu homelabowi może przydać? Rozwińmy skrót VPN – Virtual Private Network (wirtualna sieć prywatna?). Niewiele to nam dało. Wyobraź sobie zatem, że będąc na Bali chcesz obejrzeć coś na jednej z polskich platform filmowo-serialowych. Prawdopodobnie odbijesz się od blokady regionalnej. VPN potrafi teleportować nas do domu, jednocześnie oszukując serwis, że jesteśmy gdzieś pod Sosnowcem. Ale to skutek tej funkcjonalności, a czym to właściwie jest?

VPN to łącznik, który pozwala zdalnie (co mówiłem o sieci i jej wirtualnym aspekcie?) udawać, że jesteś w danej sieci, bez fizycznego, bezpośredniego podłączenia się do urządzenia sieciowego. Kojarzysz motyw bezpieczeństwa? Takie połączenie można zaszyfrować i wówczas podsłuchujący złodupiec będzie widział jedynie że prowadzona jest jakaś transmisja z jakimś hostem o jakimś IP, ale bez wiedzy co dokładnie tam lata, bo zobaczy śmietnik. To oznacza, że to nie anonimizuje ruchu (bo wiadomo kto z kim – klient i router), ale potencjalnie szyfruje (ktoś gada, ale nie wiadomo o czym i o kim, ale to zależy od wybranego protokołu i nie musi mieć miejsca!). To taki wirtualny przewód internetowy, który podpinasz do routera i swojego laptopa, tyle że Ty jesteś na Bali a router w Sosnowcu.

Co nam to daje? Możesz korzystać z dobrodziejstw swojej sieci będąc w dowolnym miejscu na świecie. Blokowanie reklam po DNS? Masz. Dostęp do odtwarzacza filmów? Checked! Pliki na NAS? No ba, proszę. Zsunięcie roletek przez Home Assistant? Nie musisz fizycznie być w domu, aby być w sieci domowej i z tego korzystać.

VPN nie zapewnia domyślnie jednak bezpieczeństwa i nie należy go bezmyślnie z tym łączyć! Jeśli wraz z VPN ma iść odpowiedni poziom zabezpieczeń, spójrz na Wireguard i OpenVPN, które są dzisiaj industry standardem. A taki Wireguard jest bajecznie prosty i szybki w konfiguracji i użyciu. To da Ci możliwość mówienia o bezpieczeństwie takiego połączenia.

Dodatkowo samodzielnie budując serwer VPN zyskujesz właściwie niemal za darmo to, co komercyjni dostawcy takich usług, mając nad tym pełną kontrolę.

Podsumowanie

Omówiłem tutaj kawałek pojęć i dobrych nawyków, które znacząco podnoszą komfort i bezpieczeństwo. Oczywiście, nic nie stoi na przeszkodzie, aby każdą aplikację władować bezmyślnie na otwarty port na routerze, nie szyfrować ruchu a także olać klucze w przypadku SSH.

Możesz. Ale już na samym początku dobrze jest pamiętać, że można zrobić to lepiej i na własnych zasadach. W końcu to Twój homelab i Twoje zasady!


0 komentarzy

Dodaj komentarz

Symbol zastępczy awatara

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *