Slow7 - Slow7 - Sieci komputerowe http://slow7.pl/sieci-komputerowe 2020-01-12T16:40:00+00:00 Joomla! - Open Source Content Management Yubico czyli jak chronić dostęp do naszych kont 2017-11-23T21:58:36+00:00 2017-11-23T21:58:36+00:00 http://slow7.pl/sieci-komputerowe/item/157-yubico-czyli-jak-chronic-dostep-do-naszych-kont pikolo [email protected] <div class="K2FeedImage"><img src="http://slow7.pl/media/k2/items/cache/171fc14b49a79ea979710de5b3402b30_S.jpg" alt="Yubico czyli jak chronić dostęp do naszych kont" /></div><div class="K2FeedIntroText"><p>Uwierzytelnianie dwuskładnikowe (ang. two-factor authentication, 2FA) czy wieloskładnikowe są to mechanizmy bezpiecznego logowania łączące w sobie dwie lub więcej metod autoryzacji użytkownika. Aktywacja tego typu zabezpieczeń ochroni nas a już na pewno utrudni nieautoryzowany dostęp do konta w sytuacji gdy hasło zostanie skradzione bądź złamane.</p> </div><div class="K2FeedFullText"> <p>&nbsp;</p> <p>Ogólny sposób działania weryfikacji 2FA opiera się na sprawdzeniu czy jesteś tym za kogo się podajesz. Aby uwierzytelnienie się powiodło sprawdzane elementy muszą wskazywać na Ciebie. Na elementy te mogą składać się: „coś co posiadasz” (karta kredytowa, telefon); „coś co wiesz” (PIN, hasło) oraz „to kim jesteś” (linie papilarne, siatkówka oka, głos, rozpoznawanie twarzy). Spójność i zgodność dwóch (lub więcej) sprawdzanych cech umożliwi uwierzytelnienie.</p> <p>&nbsp;</p> <p>Yubikey jest kluczem USB a jego zadaniem jest ochrona naszych kont wspierających ten model uwierzytelnienia w myśl zasady „coś co posiadasz”. Urządzenie umożliwia wykorzystanie go w procesie dwuskładnikowego uwierzytelnienia (hasło plus token) w takich serwisach jak: Google, Facebook, GitHub czy Drobbox. Użycie urządzenia nie ogranicza się tylko do sfery online, klucz również może nam posłużyć do logowania się w systemach Windows, MacOs czy Linux.</p> <p>&nbsp;</p> <p>Cały proces logowania sprowadza się do umieszczenia tokenu w porcie USB i naciśnięciu złotego dysku oczywiście po uprzednim sparowaniu klucza z danym kontem do którego dostęp chcemy chronić.</p> <p><img src="http://slow7.pl/images/stories/siec/yubico/image1.png" alt="image1" width="700" height="700" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>Całość procesu oparta jest na wykorzystaniu standardu Universal 2nd Factor (U2F). Podczas rejestracji tokenu w danym serwisie, generowany jest klucz prywatny, który następnie szyfrowany jest hasłem głównym urządzenia i tak przygotowany pakiet danych jest przekazywany do danego serwisu. Podczas próby logowania następuje proces odwrotny - rozszyfrowanie. Zapytanie wysłane od serwisu online jest porównywane z wygenerowanym podczas rejestracji kluczem prywatnym. Jeśli wszystko się zgadza uzyskujemy dostęp do usługi.</p> <p>&nbsp;</p> <p>Obsługa standardu U2F jak na razie dostępna jest tylko przy wykorzystaniu przeglądarki Chrome, Opera oraz Firefox (od wersji 57). Wcześniejsze wersje „liska” tej metody weryfikacji nie wspierają.</p> <p>&nbsp;</p> <p>Sam token dostępny jest w kilku wersjach, które różnią się pomiędzy sobą możliwościami bądź użytym standardem portu USB. Pełne porównanie dostępne jest tu: <a>https://www.yubico.com/products/yubikey-hardware/compare-yubikeys/</a></p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/yubico/image2.png" alt="image2" width="700" height="368" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Najciekawszym modelem jest YubiKey NEO, który wspiera komunikację NFC dając nam możliwość wykorzystania klucza w połączeniu z smartfonem.</p> <p>&nbsp;</p> <p>Ponieważ Yubikey w systemie jest wykrywany jako klawiatura posiada on możliwość zapisania w swojej pamięci dwóch 32 znakowych haseł. Wklejenie hasła odbywa się poprzez przytrzymanie przez określony czas złotego dysku - 1 sekunda powoduje wklejenie hasła zapisanego w slocie pierwszym, po 3 sekundach wpisanie hasła ze slotu drugiego. Funkcja ta pozwala na wykorzystanie klucza w procesie logowania się do systemu operacyjnego bądź np. podania hasła celem odszyfrowania wolumenu (TrueCrypt czy VeraCrypt).</p> <p>&nbsp;</p> <p>Możliwości urządzenia nie kończą się na przedstawionych do tej pory przykładach gdyż przy jego pomocy i dodatkowemu oprogramowaniu możemy utworzyć swoje własne centrum generowania 6-znakowych haseł, które posłużą nam do uzyskania dostępu do naszych kont - coś na wzór Google Authenticator.</p> <p>&nbsp;</p> <p>W wpisie tym chciałbym pokazać jak przy współudziale tokenu możemy chronić dostęp do serwisu Facebook oraz usług Google.</p> <p>&nbsp;</p> <p>Przejdźmy zatem do omówienia wykorzystania klucza w praktyce. W pierwszej kolejności na „tapetę” bierzemy Google.</p> <p>&nbsp;</p> <p>Rozpoczynamy od zalogowania się do swojego konta Google. Następnie wybieramy odnośnik: <strong>Logowanie się w Google</strong></p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/yubico/image3.png" alt="image3" width="700" height="496" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>W kroku drugim włączamy: <strong>Weryfikację dwuetapową</strong></p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/yubico/image4.png" alt="image4" width="700" height="429" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Informacja o pomyślnym włączeniu mechanizmu zostanie wysłana na nasz adres email.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/yubico/image5.png" alt="image5" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Google proponuje Nam kilka metod weryfikacji dwuetapowej:</p> <ul> <li style="padding-left: 4em;"><strong>Kody zapasowe</strong> - karta z kodami jednorazowymi, do wykorzystania gdy nie mamy przy sobie smartfona,</li> <li style="padding-left: 4em;"><strong>Potwierdzenia od Google</strong> - kody wysyłane w postaci smsa,</li> <li style="padding-left: 4em;"><strong>Aplikacja authenticator</strong> - program instalowany na platformie Android bądź iOS, który generuje kody wykorzystywane w procesie logowania,</li> <li style="padding-left: 4em;"><strong>Klucz bezpieczeństwa</strong> - klucz przypominający pendriva, podłączany do portu USB w pamięci, którego zaszyte są informacje uwierzytelniające.</li> </ul> <p>&nbsp;</p> <p>Ponieważ Yubico jest właśnie takim kluczem wybieramy opcję: <strong>Dodaj klucz bezpieczeństwa</strong></p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/yubico/image6.png" alt="image6" width="700" height="418" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po wybraniu opcji czeka Nas „niespodzianka” w postaci komunikatu o niemożliwości wykonania operacji z powodu użycia nieodpowiedniej przeglądarki. Wszystkie opisywane operacje wykonywałem w przeglądarce Firefox, bez wsparcia dla standardu U2F. Aby móc wykorzystać klucz Yubico musimy przesiąść się na Chrome, Operę bądź wykonać aktualizację przeglądarki Firefox do najnowszej wersji.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/yubico/image7.png" alt="image7" width="700" height="418" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Została pobrana i zainstalowana przeglądarka Chrome.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/yubico/image8.png" alt="image8" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po uruchomieniu przeglądarki, zalogowaniu się na konto Google ponownie wybieramy opcję: <strong>Dodaj klucz bezpieczeństwa </strong>Przygotowujemy klucz ale jeszcze go do portu USB nie podłączamy. W nowo otwartym oknie wybieramy <strong>Dalej</strong></p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/yubico/image9.png" alt="image9" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>Podłączamy token i przyciskamy na kluczu złotą tarczę.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/yubico/image10.png" alt="image10" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>Klucz został zarejestrowany.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/yubico/image11.png" alt="image11" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>Informację o używanym kluczu znajdziemy w opcjach weryfikacji dwuetapowej.</p> <p>&nbsp;</p> <p>Gdy do procesu logowania jest używana przeglądarka nie wspierająca standardu U2F należy wykorzystać jedną z pozostałych metod weryfikacji. W przykładzie poniżej został użyty telefon w połączeniu z kodem dostarczanym w formie SMS-a.</p> <p>&nbsp;</p> <p>Od tej pory gdy do logowania użyjemy przeglądarkę wspierającą klucz bezpieczeństwa (czyli Chrome, Opera, Firefox od wersji 57 włącznie) zostaniemy poproszeni o użycie klucza, jeśli ta sama operacja zostanie wykonana z poziomu np. przeglądarki Edge na nasz numer zostanie wysłany SMS z kodem weryfikacyjnym.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/yubico/image12.png" alt="image12" width="700" height="604" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Jeśli chcemy usunąć zarejestrowany klucz to odpowiednią opcję znajdziemy w ustawieniach: <strong>Weryfikacji dwuetapowej</strong></p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/yubico/image13.png" alt="image13" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>Rejestracja klucza została wykonana czas sprawdzić czy wszystko działa. Wykonujemy ponowne logowanie. Podczas pierwszego etapu wpisujemy hasło.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/yubico/image14.png" alt="image14" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>Po wpisaniu poprawnego hasła zostaniemy poproszeni o włożenie klucza Yubico.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/yubico/image15.png" alt="image15" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po podłączeniu klucza i wciśnięciu złotego dysku nastąpi zalogowanie do usług Google.</p> <p>&nbsp;</p> <p>W razie jakichkolwiek problemów będziemy mogli dokończyć logowanie z wykorzystaniem wiadomości SMS bądź innej zdefiniowanej metody.</p> <p>&nbsp;</p> <p>Klucz Yubico został poprawnie powiązany z serwisem Google.</p> <p>&nbsp;</p> <p>Jak już wspomniałem Google nie jest jedynym serwisem, który wspiera ten typ uwierzytelnienia. Klucz Yubico możemy również połączyć z naszym kontem na Facebook-u.</p> <p>&nbsp;</p> <p>Aby móc skorzystać z klucza podobnie jak w przypadku Google musimy włączyć weryfikację dwuetapową. Stosowne opcje znajdziemy w <strong>Ustawieniach</strong> na karcie <strong>Bezpieczeństwo i logowanie</strong></p> <p>&nbsp;</p> <p>Odszukujemy opcję: <strong>Używaj uwierzytelnienia dwuskładnikowego</strong></p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/yubico/image16.png" alt="image16" width="700" height="644" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po wyborze opcji mamy możliwość określenia metody uwierzytelnienia.</p> <p>&nbsp;</p> <p>W pierwszej kolejności włączamy mechanizm uwierzytelnienia dwuskładnikowego. Wybieramy: <strong>Skonfiguruj</strong></p> <p>&nbsp;</p> <p><strong><img src="http://slow7.pl/images/stories/siec/yubico/image17.png" alt="image17" width="700" height="701" style="display: block; margin-left: auto; margin-right: auto;" /></strong></p> <p>&nbsp;</p> <p>Jak widać na zrzucie powyżej użyta przeglądarka nie wpiera uwierzytelnienia w postaci klucza bezpieczeństwa.</p> <p>&nbsp;</p> <p>Dostępne metody uwierzytelnienia to:</p> <ul> <li style="padding-left: 4em;"><strong>wiadomość tekstowa SMS</strong> - niezbędny kod celem przeprowadzenia uwierzytelnienia zostanie wysłany w postaci wiadomości SMS,</li> <li style="padding-left: 4em;"><strong>klucze zabezpieczeń</strong> - zewnętrzne urządzenia takie jak opisywany klucz Yubico,</li> <li style="padding-left: 4em;"><strong>generator kodów</strong> - kody wykorzystywane w procesie uwierzytelnienia są generowane przy wykorzystaniu aplikacji Facebook zainstalowanej na smartfonie,</li> <li style="padding-left: 4em;"><strong>kody resetowania</strong> - karta kodów wykorzystywana w przypadku braku dostępu do telefonu.</li> </ul> <p><img src="http://slow7.pl/images/stories/siec/yubico/image18.png" alt="image18" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <ul> <li style="padding-left: 4em;">włączenie procesu uwierzytelnienia dwuskładnikowego ma swoje konsekwencje w sytuacjach w których konta Facebook używamy celem uzyskania dostępu do innych serwisów (w szczególności dotyczy to usług Xbox, Spotify czy Skype). Po włączeniu opcji podwójnej weryfikacji dostęp do wymienionych usług za pomocą konta Facebook będzie niemożliwy. Aby rozwiązać ten problem należy użyć opcji: <strong>Hasło do aplikacji</strong> za pośrednictwem, której uzyskamy dostęp do wymienionych serwisów za pośrednictwem konta Facebook.</li> </ul> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/yubico/image19.png" alt="image19" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <ul> <li style="padding-left: 4em;">opcja: <strong>autoryzowane logowania</strong> pozwala nam na przejrzenie urządzeń co do których nie jest wymagane przeprowadzenie wprowadzenia dodatkowego kodu celem dokończenia procesu logowania.</li> </ul> <p>&nbsp;</p> <p>Przejdźmy zatem do konfiguracji uwierzytelnienia dwuetapowego. Wybieramy opcję: <strong>Skonfiguruj</strong>. W nowo otwartym oknie potwierdzamy wolę włączenia funkcji.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/yubico/image20.png" alt="image20" width="700" height="272" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Aby uaktywnić funkcję jeszcze raz musimy podać hasło do serwisu.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/yubico/image21.png" alt="image21" width="700" height="272" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Uwierzytelnienie dwuskładnikowe zostało włączone.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/yubico/image22.png" alt="image22" width="700" height="271" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Dodatkowo, osobnym emailem zostaniemy poinformowani o włączeniu mechanizmu dwustopniowej weryfikacji dostępu do konta.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/yubico/image23.png" alt="image23" width="700" height="639" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Od teraz aby uzyskać dostęp do naszego konta Facebook będziemy musieli wprowadzić dodatkowy kod, który zostanie nam dostarczony za pomocą SMS-a.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/yubico/image24.png" alt="image24" width="700" height="275" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Aby uniknąć każdorazowego podawania kodu, po zakończeniu procesu logowania możemy zdecydować czy użyta przeglądarka ma zostać zapisana. Wybranie opcji: <strong>Zapisz przeglądarkę</strong> spowoduje, że podczas kolejnej próby uzyskania dostępu do konta wymagane będzie jedynie hasło.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/yubico/image25.png" alt="image25" width="700" height="299" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Metoda uwierzytelnienia oparta o wiadomość SMS, działa. Sprawdźmy zatem jak spisze się klucz Yubico. Ponownie przechodzimy do opcji uwierzytelnienia dwuskładnikowego. Odszukujemy sekcję <strong>Klucze zabezpieczeń </strong>i wybieramy opcję <strong>Dodaj klucz</strong>.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/yubico/image26.png" alt="image26" width="700" height="384" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>W oknie <strong>Dodaj klucz zabezpieczeń</strong> klikamy <strong>Dodaj klucz</strong>.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/yubico/image27.png" alt="image27" width="700" height="371" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po podłączeniu klucza i przytrzymaniu złotego przycisku wybieramy <strong>Kontynuuj</strong>.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/yubico/image28.png" alt="image28" width="700" height="358" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Dodanie nowego klucza wymaga ponownego wprowadzenia hasła.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/yubico/image29.png" alt="image29" width="700" height="374" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po uwierzytelnieniu, opcjonalnie możemy zdefiniować nazwę naszego klucza.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/yubico/image30.png" alt="image30" width="700" height="409" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Klucz Yubico został poprawnie powiązany z serwisem Facebook. Od tej pory proces logowania będzie przebiegał z wykorzystaniem klucza.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/yubico/image31.png" alt="image31" width="700" height="399" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>W przypadku braku klucza dostęp do konta uzyskamy dzięki kodowi SMS.</p> <p>&nbsp;</p> <p>Sparowaliśmy klucz Yubico z kontami Google oraz Facebook. Czy jest to dobra metoda chroniąca dostęp do naszych kont? Wszystko zależy od naszych preferencji. Na pewno w dzisiejszych czasach ochrona dostępu do ważnych kont tylko przy użyciu hasła jest niewystarczająca a każda z metod podnosząca ochronę jest na plus.</p> <p>&nbsp;</p> <p>Nie wszystkie serwisy umożliwiają użycie klucza jakim jest Yubico. Na szczęście to się zmienia (powoli) i coraz więcej portali dostrzega potrzebę wprowadzenia tego typu rozwiązań. Potrzeba stosowania dodatkowych zabezpieczeń dostępu do usług jest konieczna a token USB i hasło dość skutecznie bronią dostęp do naszych danych.</p></div> <div class="K2FeedImage"><img src="http://slow7.pl/media/k2/items/cache/171fc14b49a79ea979710de5b3402b30_S.jpg" alt="Yubico czyli jak chronić dostęp do naszych kont" /></div><div class="K2FeedIntroText"><p>Uwierzytelnianie dwuskładnikowe (ang. two-factor authentication, 2FA) czy wieloskładnikowe są to mechanizmy bezpiecznego logowania łączące w sobie dwie lub więcej metod autoryzacji użytkownika. Aktywacja tego typu zabezpieczeń ochroni nas a już na pewno utrudni nieautoryzowany dostęp do konta w sytuacji gdy hasło zostanie skradzione bądź złamane.</p> </div><div class="K2FeedFullText"> <p>&nbsp;</p> <p>Ogólny sposób działania weryfikacji 2FA opiera się na sprawdzeniu czy jesteś tym za kogo się podajesz. Aby uwierzytelnienie się powiodło sprawdzane elementy muszą wskazywać na Ciebie. Na elementy te mogą składać się: „coś co posiadasz” (karta kredytowa, telefon); „coś co wiesz” (PIN, hasło) oraz „to kim jesteś” (linie papilarne, siatkówka oka, głos, rozpoznawanie twarzy). Spójność i zgodność dwóch (lub więcej) sprawdzanych cech umożliwi uwierzytelnienie.</p> <p>&nbsp;</p> <p>Yubikey jest kluczem USB a jego zadaniem jest ochrona naszych kont wspierających ten model uwierzytelnienia w myśl zasady „coś co posiadasz”. Urządzenie umożliwia wykorzystanie go w procesie dwuskładnikowego uwierzytelnienia (hasło plus token) w takich serwisach jak: Google, Facebook, GitHub czy Drobbox. Użycie urządzenia nie ogranicza się tylko do sfery online, klucz również może nam posłużyć do logowania się w systemach Windows, MacOs czy Linux.</p> <p>&nbsp;</p> <p>Cały proces logowania sprowadza się do umieszczenia tokenu w porcie USB i naciśnięciu złotego dysku oczywiście po uprzednim sparowaniu klucza z danym kontem do którego dostęp chcemy chronić.</p> <p><img src="http://slow7.pl/images/stories/siec/yubico/image1.png" alt="image1" width="700" height="700" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>Całość procesu oparta jest na wykorzystaniu standardu Universal 2nd Factor (U2F). Podczas rejestracji tokenu w danym serwisie, generowany jest klucz prywatny, który następnie szyfrowany jest hasłem głównym urządzenia i tak przygotowany pakiet danych jest przekazywany do danego serwisu. Podczas próby logowania następuje proces odwrotny - rozszyfrowanie. Zapytanie wysłane od serwisu online jest porównywane z wygenerowanym podczas rejestracji kluczem prywatnym. Jeśli wszystko się zgadza uzyskujemy dostęp do usługi.</p> <p>&nbsp;</p> <p>Obsługa standardu U2F jak na razie dostępna jest tylko przy wykorzystaniu przeglądarki Chrome, Opera oraz Firefox (od wersji 57). Wcześniejsze wersje „liska” tej metody weryfikacji nie wspierają.</p> <p>&nbsp;</p> <p>Sam token dostępny jest w kilku wersjach, które różnią się pomiędzy sobą możliwościami bądź użytym standardem portu USB. Pełne porównanie dostępne jest tu: <a>https://www.yubico.com/products/yubikey-hardware/compare-yubikeys/</a></p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/yubico/image2.png" alt="image2" width="700" height="368" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Najciekawszym modelem jest YubiKey NEO, który wspiera komunikację NFC dając nam możliwość wykorzystania klucza w połączeniu z smartfonem.</p> <p>&nbsp;</p> <p>Ponieważ Yubikey w systemie jest wykrywany jako klawiatura posiada on możliwość zapisania w swojej pamięci dwóch 32 znakowych haseł. Wklejenie hasła odbywa się poprzez przytrzymanie przez określony czas złotego dysku - 1 sekunda powoduje wklejenie hasła zapisanego w slocie pierwszym, po 3 sekundach wpisanie hasła ze slotu drugiego. Funkcja ta pozwala na wykorzystanie klucza w procesie logowania się do systemu operacyjnego bądź np. podania hasła celem odszyfrowania wolumenu (TrueCrypt czy VeraCrypt).</p> <p>&nbsp;</p> <p>Możliwości urządzenia nie kończą się na przedstawionych do tej pory przykładach gdyż przy jego pomocy i dodatkowemu oprogramowaniu możemy utworzyć swoje własne centrum generowania 6-znakowych haseł, które posłużą nam do uzyskania dostępu do naszych kont - coś na wzór Google Authenticator.</p> <p>&nbsp;</p> <p>W wpisie tym chciałbym pokazać jak przy współudziale tokenu możemy chronić dostęp do serwisu Facebook oraz usług Google.</p> <p>&nbsp;</p> <p>Przejdźmy zatem do omówienia wykorzystania klucza w praktyce. W pierwszej kolejności na „tapetę” bierzemy Google.</p> <p>&nbsp;</p> <p>Rozpoczynamy od zalogowania się do swojego konta Google. Następnie wybieramy odnośnik: <strong>Logowanie się w Google</strong></p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/yubico/image3.png" alt="image3" width="700" height="496" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>W kroku drugim włączamy: <strong>Weryfikację dwuetapową</strong></p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/yubico/image4.png" alt="image4" width="700" height="429" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Informacja o pomyślnym włączeniu mechanizmu zostanie wysłana na nasz adres email.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/yubico/image5.png" alt="image5" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Google proponuje Nam kilka metod weryfikacji dwuetapowej:</p> <ul> <li style="padding-left: 4em;"><strong>Kody zapasowe</strong> - karta z kodami jednorazowymi, do wykorzystania gdy nie mamy przy sobie smartfona,</li> <li style="padding-left: 4em;"><strong>Potwierdzenia od Google</strong> - kody wysyłane w postaci smsa,</li> <li style="padding-left: 4em;"><strong>Aplikacja authenticator</strong> - program instalowany na platformie Android bądź iOS, który generuje kody wykorzystywane w procesie logowania,</li> <li style="padding-left: 4em;"><strong>Klucz bezpieczeństwa</strong> - klucz przypominający pendriva, podłączany do portu USB w pamięci, którego zaszyte są informacje uwierzytelniające.</li> </ul> <p>&nbsp;</p> <p>Ponieważ Yubico jest właśnie takim kluczem wybieramy opcję: <strong>Dodaj klucz bezpieczeństwa</strong></p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/yubico/image6.png" alt="image6" width="700" height="418" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po wybraniu opcji czeka Nas „niespodzianka” w postaci komunikatu o niemożliwości wykonania operacji z powodu użycia nieodpowiedniej przeglądarki. Wszystkie opisywane operacje wykonywałem w przeglądarce Firefox, bez wsparcia dla standardu U2F. Aby móc wykorzystać klucz Yubico musimy przesiąść się na Chrome, Operę bądź wykonać aktualizację przeglądarki Firefox do najnowszej wersji.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/yubico/image7.png" alt="image7" width="700" height="418" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Została pobrana i zainstalowana przeglądarka Chrome.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/yubico/image8.png" alt="image8" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po uruchomieniu przeglądarki, zalogowaniu się na konto Google ponownie wybieramy opcję: <strong>Dodaj klucz bezpieczeństwa </strong>Przygotowujemy klucz ale jeszcze go do portu USB nie podłączamy. W nowo otwartym oknie wybieramy <strong>Dalej</strong></p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/yubico/image9.png" alt="image9" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>Podłączamy token i przyciskamy na kluczu złotą tarczę.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/yubico/image10.png" alt="image10" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>Klucz został zarejestrowany.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/yubico/image11.png" alt="image11" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>Informację o używanym kluczu znajdziemy w opcjach weryfikacji dwuetapowej.</p> <p>&nbsp;</p> <p>Gdy do procesu logowania jest używana przeglądarka nie wspierająca standardu U2F należy wykorzystać jedną z pozostałych metod weryfikacji. W przykładzie poniżej został użyty telefon w połączeniu z kodem dostarczanym w formie SMS-a.</p> <p>&nbsp;</p> <p>Od tej pory gdy do logowania użyjemy przeglądarkę wspierającą klucz bezpieczeństwa (czyli Chrome, Opera, Firefox od wersji 57 włącznie) zostaniemy poproszeni o użycie klucza, jeśli ta sama operacja zostanie wykonana z poziomu np. przeglądarki Edge na nasz numer zostanie wysłany SMS z kodem weryfikacyjnym.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/yubico/image12.png" alt="image12" width="700" height="604" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Jeśli chcemy usunąć zarejestrowany klucz to odpowiednią opcję znajdziemy w ustawieniach: <strong>Weryfikacji dwuetapowej</strong></p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/yubico/image13.png" alt="image13" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>Rejestracja klucza została wykonana czas sprawdzić czy wszystko działa. Wykonujemy ponowne logowanie. Podczas pierwszego etapu wpisujemy hasło.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/yubico/image14.png" alt="image14" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>Po wpisaniu poprawnego hasła zostaniemy poproszeni o włożenie klucza Yubico.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/yubico/image15.png" alt="image15" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po podłączeniu klucza i wciśnięciu złotego dysku nastąpi zalogowanie do usług Google.</p> <p>&nbsp;</p> <p>W razie jakichkolwiek problemów będziemy mogli dokończyć logowanie z wykorzystaniem wiadomości SMS bądź innej zdefiniowanej metody.</p> <p>&nbsp;</p> <p>Klucz Yubico został poprawnie powiązany z serwisem Google.</p> <p>&nbsp;</p> <p>Jak już wspomniałem Google nie jest jedynym serwisem, który wspiera ten typ uwierzytelnienia. Klucz Yubico możemy również połączyć z naszym kontem na Facebook-u.</p> <p>&nbsp;</p> <p>Aby móc skorzystać z klucza podobnie jak w przypadku Google musimy włączyć weryfikację dwuetapową. Stosowne opcje znajdziemy w <strong>Ustawieniach</strong> na karcie <strong>Bezpieczeństwo i logowanie</strong></p> <p>&nbsp;</p> <p>Odszukujemy opcję: <strong>Używaj uwierzytelnienia dwuskładnikowego</strong></p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/yubico/image16.png" alt="image16" width="700" height="644" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po wyborze opcji mamy możliwość określenia metody uwierzytelnienia.</p> <p>&nbsp;</p> <p>W pierwszej kolejności włączamy mechanizm uwierzytelnienia dwuskładnikowego. Wybieramy: <strong>Skonfiguruj</strong></p> <p>&nbsp;</p> <p><strong><img src="http://slow7.pl/images/stories/siec/yubico/image17.png" alt="image17" width="700" height="701" style="display: block; margin-left: auto; margin-right: auto;" /></strong></p> <p>&nbsp;</p> <p>Jak widać na zrzucie powyżej użyta przeglądarka nie wpiera uwierzytelnienia w postaci klucza bezpieczeństwa.</p> <p>&nbsp;</p> <p>Dostępne metody uwierzytelnienia to:</p> <ul> <li style="padding-left: 4em;"><strong>wiadomość tekstowa SMS</strong> - niezbędny kod celem przeprowadzenia uwierzytelnienia zostanie wysłany w postaci wiadomości SMS,</li> <li style="padding-left: 4em;"><strong>klucze zabezpieczeń</strong> - zewnętrzne urządzenia takie jak opisywany klucz Yubico,</li> <li style="padding-left: 4em;"><strong>generator kodów</strong> - kody wykorzystywane w procesie uwierzytelnienia są generowane przy wykorzystaniu aplikacji Facebook zainstalowanej na smartfonie,</li> <li style="padding-left: 4em;"><strong>kody resetowania</strong> - karta kodów wykorzystywana w przypadku braku dostępu do telefonu.</li> </ul> <p><img src="http://slow7.pl/images/stories/siec/yubico/image18.png" alt="image18" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <ul> <li style="padding-left: 4em;">włączenie procesu uwierzytelnienia dwuskładnikowego ma swoje konsekwencje w sytuacjach w których konta Facebook używamy celem uzyskania dostępu do innych serwisów (w szczególności dotyczy to usług Xbox, Spotify czy Skype). Po włączeniu opcji podwójnej weryfikacji dostęp do wymienionych usług za pomocą konta Facebook będzie niemożliwy. Aby rozwiązać ten problem należy użyć opcji: <strong>Hasło do aplikacji</strong> za pośrednictwem, której uzyskamy dostęp do wymienionych serwisów za pośrednictwem konta Facebook.</li> </ul> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/yubico/image19.png" alt="image19" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <ul> <li style="padding-left: 4em;">opcja: <strong>autoryzowane logowania</strong> pozwala nam na przejrzenie urządzeń co do których nie jest wymagane przeprowadzenie wprowadzenia dodatkowego kodu celem dokończenia procesu logowania.</li> </ul> <p>&nbsp;</p> <p>Przejdźmy zatem do konfiguracji uwierzytelnienia dwuetapowego. Wybieramy opcję: <strong>Skonfiguruj</strong>. W nowo otwartym oknie potwierdzamy wolę włączenia funkcji.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/yubico/image20.png" alt="image20" width="700" height="272" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Aby uaktywnić funkcję jeszcze raz musimy podać hasło do serwisu.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/yubico/image21.png" alt="image21" width="700" height="272" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Uwierzytelnienie dwuskładnikowe zostało włączone.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/yubico/image22.png" alt="image22" width="700" height="271" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Dodatkowo, osobnym emailem zostaniemy poinformowani o włączeniu mechanizmu dwustopniowej weryfikacji dostępu do konta.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/yubico/image23.png" alt="image23" width="700" height="639" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Od teraz aby uzyskać dostęp do naszego konta Facebook będziemy musieli wprowadzić dodatkowy kod, który zostanie nam dostarczony za pomocą SMS-a.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/yubico/image24.png" alt="image24" width="700" height="275" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Aby uniknąć każdorazowego podawania kodu, po zakończeniu procesu logowania możemy zdecydować czy użyta przeglądarka ma zostać zapisana. Wybranie opcji: <strong>Zapisz przeglądarkę</strong> spowoduje, że podczas kolejnej próby uzyskania dostępu do konta wymagane będzie jedynie hasło.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/yubico/image25.png" alt="image25" width="700" height="299" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Metoda uwierzytelnienia oparta o wiadomość SMS, działa. Sprawdźmy zatem jak spisze się klucz Yubico. Ponownie przechodzimy do opcji uwierzytelnienia dwuskładnikowego. Odszukujemy sekcję <strong>Klucze zabezpieczeń </strong>i wybieramy opcję <strong>Dodaj klucz</strong>.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/yubico/image26.png" alt="image26" width="700" height="384" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>W oknie <strong>Dodaj klucz zabezpieczeń</strong> klikamy <strong>Dodaj klucz</strong>.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/yubico/image27.png" alt="image27" width="700" height="371" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po podłączeniu klucza i przytrzymaniu złotego przycisku wybieramy <strong>Kontynuuj</strong>.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/yubico/image28.png" alt="image28" width="700" height="358" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Dodanie nowego klucza wymaga ponownego wprowadzenia hasła.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/yubico/image29.png" alt="image29" width="700" height="374" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po uwierzytelnieniu, opcjonalnie możemy zdefiniować nazwę naszego klucza.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/yubico/image30.png" alt="image30" width="700" height="409" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Klucz Yubico został poprawnie powiązany z serwisem Facebook. Od tej pory proces logowania będzie przebiegał z wykorzystaniem klucza.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/yubico/image31.png" alt="image31" width="700" height="399" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>W przypadku braku klucza dostęp do konta uzyskamy dzięki kodowi SMS.</p> <p>&nbsp;</p> <p>Sparowaliśmy klucz Yubico z kontami Google oraz Facebook. Czy jest to dobra metoda chroniąca dostęp do naszych kont? Wszystko zależy od naszych preferencji. Na pewno w dzisiejszych czasach ochrona dostępu do ważnych kont tylko przy użyciu hasła jest niewystarczająca a każda z metod podnosząca ochronę jest na plus.</p> <p>&nbsp;</p> <p>Nie wszystkie serwisy umożliwiają użycie klucza jakim jest Yubico. Na szczęście to się zmienia (powoli) i coraz więcej portali dostrzega potrzebę wprowadzenia tego typu rozwiązań. Potrzeba stosowania dodatkowych zabezpieczeń dostępu do usług jest konieczna a token USB i hasło dość skutecznie bronią dostęp do naszych danych.</p></div> Co w sieci siedzi. Protokół DNS. 2017-06-08T21:13:43+00:00 2017-06-08T21:13:43+00:00 http://slow7.pl/sieci-komputerowe/item/152-co-w-sieci-siedzi-protokol-dns pikolo [email protected] <div class="K2FeedImage"><img src="http://slow7.pl/media/k2/items/cache/cf4507ae4969876df39b5f798b6f40ce_S.jpg" alt="Co w sieci siedzi. Protokół DNS." /></div><div class="K2FeedIntroText"><p>W pierwowzorze wpis ten miał dotyczyć konfiguracji roli serwera DNS w systemie Windows Server 2012 ale ponieważ wcześniej zbyt wiele o protokole DNS nie napisałem postanowiłem w pierwszej kolejności przedstawić sposób działania tego protokołu a następnie skupić się na zagadnieniach związanych z jego konfiguracją. Myślę, że przyjęty schemat postępowania będzie dla Ciebie czytelniku bardziej przystępny gdyż zanim będziemy konfigurować system do pełnienia roli serwera DNS warto poznać sposób działania samego protokołu. Nie przedłużając zapraszam do lektury artykułu.</p> <p>&nbsp;</p> </div><div class="K2FeedFullText"> <p>&nbsp;</p> <p>Zarządzanie przestrzenią nazw domenowych ma ogromne znaczenie w sieci Internet oraz w sieciach korporacyjnych (w sieciach domowych raczej nikt serwera tego typu nie posiada, gdyż jest to zbędne lecz nie oznacza to że z usługi tej nie korzystamy).</p> <p>&nbsp;</p> <p>W sieciach firmowych działanie mechanizmu DNS ma szczególne znaczenie gdyż zapewnia on:</p> <ul> <li style="padding-left: 4em;">stabilność komunikacji pomiędzy hostami a serwerami,</li> <li style="padding-left: 4em;">odszukanie kontrolera domeny i wykonanie procesu logowania,</li> <li style="padding-left: 4em;">dostęp aplikacją biznesowym do przydzielonych im zasobów,</li> <li style="padding-left: 4em;">poprawne funkcjonowanie otoczenia sieciowego i widoczność krytycznych zasobów,</li> <li style="padding-left: 4em;">użytkownikom sieci VPN na dostęp do świadczonych usług czy możliwość połączenia z siecią Intranet.</li> </ul> <p>&nbsp;</p> <p>Używając ścieżek bezpośrednich w oparciu o adres IP problem nie występuje.</p> <p>&nbsp;</p> <p>Pewnie nie jest to dla Ciebie Czytelniku tajemnicą, że do komunikowania się między sobą komputery w sieci wykorzystują adresy IP. Ich format oraz wartości dla nas ludzi stanowią pewien problem gdyż są po prostu trudne do zapamiętania. Znacznie lepiej zamiast przykładowego adresu 213.180.141.140 pamiętać www.onet.pl. Jest to tzw. nazwa kanoniczna. Użyty format odzwierciedla hierarchię systemu nazw domen używanych w sieci Internet, czyli DNS (ang. Domain Name Service). Aby tradycyjne adresy IP mogły współistnieć z nazwami komputerów, należało wymyślić i opracować mechanizm, który wykonywałby odwzorowywanie adresów z jednej postaci w drugą. I tym właśnie zajmuje się DNS.</p> <p>&nbsp;</p> <p>Sposób działania DNS-u został opracowany przez organizację IETF (ang. Internet Engineering Task Force) a jego opis znajdziemy w dokumentach RFC <a href="https://www.ietf.org/rfc/rfc1034.txt" target="_blank" rel="noopener noreferrer">1034</a> i <a href="https://www.ietf.org/rfc/rfc1035.txt" target="_blank" rel="noopener noreferrer">1035</a>.</p> <p>&nbsp;</p> <p>System DNS jest standardem usługi nazw. Usługa DNS pozwala komputerom znajdującym się w sieci komputerowej rejestrować i rozwiązywać nazwy domen DNS. Za pomocą tych nazw można zidentyfikować i uzyskać dostęp do zasobów oferowanych przez inne komputery w sieci lub innych sieciach, takich jak Internet.</p> <p>&nbsp;</p> <p>Aby nazwa komputera mogła być odwzorowana na adres IP musi przyjmować zdefiniowany format zgodny z zasadami przyjętymi w modelu systemu DNS. Na samym początku istnienia sieci komputerowych powiązanie nazwy komputera z jego adresem IP odbywało się poprzez zapisanie tych informacji w jednym pliku tekstowym. W miarę jak sieci komputerowe rozwijały się i rosła ich liczba rozwiązanie te przysparzało coraz więcej problemów. Dlatego też jak mówi stare przysłowie - „Potrzeba jest matką wynalazków: zdecydowano się na wprowadzenie systemu opartego o hierarchiczny, rozproszony model definiowania nazw.</p> <p>&nbsp;</p> <p>Najwyższy poziom w hierarchii jest reprezentowany przez znak „.” nazywany również korzeniem drzewa bądź domeną główną (w obiegu używana jest również nazwa root). Sposób definiowania nazw kolejnych poddomen nie został określony lecz przyjęto pewne zasady nazewnictwa i na następnym poziomie określono nazwy domen oraz zdefiniowano ich przeznaczenie. I tak pojawiły się poddomeny typu:</p> <ul> <li style="padding-left: 4em;"><strong>com</strong> - organizacje komercyjne,</li> <li style="padding-left: 4em;"><strong>int</strong> - organizacje międzynarodowe,</li> <li style="padding-left: 4em;"><strong>edu</strong> - instytucje edukacyjne,</li> <li style="padding-left: 4em;"><strong>net</strong> - internetowe,</li> <li style="padding-left: 4em;"><strong>biz</strong> - biznesowe,</li> <li style="padding-left: 4em;"><strong>info</strong> - serwisy o charakterze informacyjnym,</li> <li style="padding-left: 4em;"><strong>gov</strong> - administracja rządowa,</li> <li style="padding-left: 4em;"><strong>mil</strong> - wojsko,</li> <li style="padding-left: 4em;"><strong>org</strong> - inne organizacje,</li> <li style="padding-left: 4em;"><strong>name</strong> – nazewnicze indywidualne,</li> <li style="padding-left: 4em;"><strong>pro</strong> – zawodowe,</li> <li style="padding-left: 4em;"><strong>arpa</strong> - specjalna domena do wiązania adresów IP z nazwami.</li> </ul> <p>&nbsp;</p> <p>Ponieważ na samym początku sieć Internet swym zasięgiem obejmowała tylko USA, przyjęty system nadawania nazw nie odzwierciedlał podziałów terytorialnych państw. Dlatego też gdy Internet stał się na tyle popularny i na tyle dostępny dla reszty świata rozszerzono nazewnictwo domen o dwuliterowe kody krajów (większość z nich odpowiada kodom krajów ze standardu ISO 3166-1). Kody te łączy się z wymienionymi powyżej nazwami domen (np. .<strong>com.pl</strong>) ale oprócz tego można je używać bezpośrednio po znaku „.” (np. samo <strong>.pl</strong>).</p> <p>&nbsp;</p> <p>Tak więc jak już wspomniano w systemie DNS przyjęto hierarchiczny układ domen co oznacza, że przykładowe domeny <strong>org</strong> czy <strong>net</strong> są poddomenami domeny głównej, zaś domena <strong>firma.com</strong> jest poddomeną domeny <strong>com</strong>. Hierarchię tę najczęściej odnosi się do drzewa w którym to gałęzie są kolejnymi poziomami hierarchii zaś liście to nazwy konkretnych maszyn. Taki sposób podejścia do sprawy ma swoje konsekwencję gdyż, przyjęty system nadawania nazw najczęściej odzwierciedla strukturę podmiotów (firmy komercyjne, uczelnie, jednostki administracji rządowej) i chyba co najważniejsze zapewnia autonomię w zarządzaniu i administrowaniu nazwami dostępnymi w ramach pojedynczej domeny.</p> <p>&nbsp;</p> <p>Nazwę domeny (czytamy od lewej do prawej strony) tworzą nazwy kolejnych domen, które są wyżej w hierarchii. Wracając do naszej analogii z drzewem idziemy od liścia poprzez kolejne gałęzie aż do korzenia. Nazwy poszczególnych domen są od siebie oddzielone kropką. Pełna nazwa komputera posiada zaś dodatkowo na początku identyfikator komputera. Na przykład, komputer o identyfikatorze <strong>komp02</strong> w domenie <strong>abc.com</strong> ma nazwę <strong>komp02.abc.com</strong>.</p> <p>&nbsp;</p> <p>Każda domena posiada swój serwer, który odpowiada za rozwiązywanie nazw w zdefiniowanej przestrzeni nazw przy czym kilka domen może być obsługiwanych przez jeden serwer (oczywiście możliwy jest również scenariusz w którym za obsługę klientów w danej strefie odpowiada kilka serwerów DNS). Każdy serwer DNS jest obsługiwany przez administratora, który najczęściej jest właścicielem danej domeny. Tak więc utworzenie własnej domeny (a mówiąc szczegółowo poddomeny) sprowadza się do zarejestrowania jej u właściciela domeny stojącego w hierarchii wyżej (rejestracja najczęściej wiąże się z uiszczeniem pewnej kwoty). Administrując daną domeną mamy swobodę w tworzeniu domen potomnych czyli subdomen. Serwer obsługujący domenę musi znać adresy serwerów DNS odpowiedzialnych za funkcjonowanie wszystkich jej poddomen.</p> <p>&nbsp;</p> <p>Przykładowo, chcąc utworzyć nową domenę <strong>abc</strong> w domenie <strong>com</strong>, fakt ten należy zgłosić do administratora domeny <strong>com</strong>. Po rejestracji domeny <strong>abc.com</strong> adres IP serwera DNS odpowiedzialny za rozwiązywanie nazw w tej strefie zostaje zapisany na serwerze domeny <strong>com</strong>.</p> <p>&nbsp;</p> <p>W systemie DNS możemy wyróżnić trzy podstawowe składniki, które odpowiadają za funkcjonowanie całego mechanizmu:</p> <p>&nbsp;</p> <p style="padding-left: 2em;"><strong>zdefiniowana przestrzeń nazw domen i związane z nią typy rekordów zasobów</strong> - rozproszona baza nazw i skojarzonych z nią adresów IP,</p> <p>&nbsp;</p> <p style="padding-left: 2em;"><strong>strefy nazw DNS</strong> - serwery, które odpowiadają za funkcjonowanie domeny a których zadaniem jest kontrolowanie domeny (przechowywanie rekordów i zasobów związanych z obsługiwaną strefą) oraz udzielania odpowiedzi na kwerendy (zapytania) pochodzące od klientów DNS. W systemie DNS wyróżnić możemy dwa główne typy serwerów:</p> <p style="padding-left: 4em;"><strong>serwery domeny głównej</strong> (ang. root servers) - są to serwery obsługujące domeny najwyższego poziomu (TLD – top level domains) - znajdują się one na samym szczycie hierarchii modelu. Aktualnie na świecie funkcjonuje 13 serwerów domeny głównej. Serwery te określane są również jako <strong>root-servers</strong>, nazwy ich zostały zdefiniowane od <strong>a.root-servers.net</strong> do <strong>m.root-servers.net</strong>.</p> <p>&nbsp;</p> <table border="1" style="margin-left: auto; margin-right: auto; width: 698px; height: 661px;" cellspacing="1" cellpadding="1"> <tbody> <tr> <td style="text-align: center;"> <p><strong>Nazwa hosta</strong></p> </td> <td style="text-align: center;"> <p><strong>Adres IPv4/IPv6</strong></p> </td> <td style="text-align: center;"> <p><strong>Zarządca</strong></p> </td> </tr> <tr> <td style="text-align: center;"> <p>a.root-servers.net</p> </td> <td style="text-align: center;"> <p>198.41.0.4, 2001:503:ba3e::2:30</p> </td> <td style="text-align: center;"> <p>VeriSign, Inc.</p> </td> </tr> <tr> <td style="text-align: center;"> <p>b.root-servers.net</p> </td> <td style="text-align: center;"> <p>192.228.79.201, 2001:500:84::b</p> </td> <td style="text-align: center;"> <p>University of Southern California (ISI)</p> </td> </tr> <tr> <td style="text-align: center;"> <p>c.root-servers.net</p> </td> <td style="text-align: center;"> <p>192.33.4.12, 2001:500:2::c</p> </td> <td style="text-align: center;"> <p>Cogent Communications</p> </td> </tr> <tr> <td style="text-align: center;"> <p>d.root-servers.net</p> </td> <td style="text-align: center;"> <p>199.7.91.13, 2001:500:2d::d</p> </td> <td style="text-align: center;"> <p>University of Maryland</p> </td> </tr> <tr> <td style="text-align: center;"> <p>e.root-servers.net</p> </td> <td style="text-align: center;"> <p>192.203.230.10, 2001:500:a8::e</p> </td> <td style="text-align: center;"> <p>NASA (Ames Research Center)</p> </td> </tr> <tr> <td style="text-align: center;"> <p>f.root-servers.net</p> </td> <td style="text-align: center;"> <p>192.5.5.241, 2001:500:2f::f</p> </td> <td style="text-align: center;"> <p>Internet Systems Consortium, Inc.</p> </td> </tr> <tr> <td style="text-align: center;"> <p>g.root-servers.net</p> </td> <td style="text-align: center;"> <p>192.112.36.4, 2001:500:12::d0d</p> </td> <td style="text-align: center;"> <p>US Department of Defense (NIC)</p> </td> </tr> <tr> <td style="text-align: center;"> <p>h.root-servers.net</p> </td> <td style="text-align: center;"> <p>198.97.190.53, 2001:500:1::53</p> </td> <td style="text-align: center;"> <p>US Army (Research Lab)</p> </td> </tr> <tr> <td style="text-align: center;"> <p>i.root-servers.net</p> </td> <td style="text-align: center;"> <p>192.36.148.17, 2001:7fe::53</p> </td> <td style="text-align: center;"> <p>Netnod</p> </td> </tr> <tr> <td style="text-align: center;"> <p>j.root-servers.net</p> </td> <td style="text-align: center;"> <p>192.58.128.30, 2001:503:c27::2:30</p> </td> <td style="text-align: center;"> <p>VeriSign, Inc.</p> </td> </tr> <tr> <td style="text-align: center;"> <p>k.root-servers.net</p> </td> <td style="text-align: center;"> <p>193.0.14.129, 2001:7fd::1</p> </td> <td style="text-align: center;"> <p>RIPE NCC</p> </td> </tr> <tr> <td style="text-align: center;"> <p>l.root-servers.net</p> </td> <td style="text-align: center;"> <p>199.7.83.42, 2001:500:9f::42</p> </td> <td style="text-align: center;"> <p>ICANN</p> </td> </tr> <tr> <td style="text-align: center;"> <p>m.root-servers.net</p> </td> <td style="text-align: center;"> <p>202.12.27.33, 2001:dc3::35</p> </td> <td style="text-align: center;"> <p>WIDE Project</p> </td> </tr> </tbody> </table> <p>&nbsp;</p> <p style="padding-left: 4em;">Ponieważ główne serwery DNS są podstawą działania Internetu i obsługują ogromną ilość zapytań pochodzących od klientów tak więc aby przyspieszyć działanie całego systemu zostały one skopiowane. Kopie głównych serwerów zostały rozmieszczone po całym świecie (posiadają te same adresy IP co serwery główne). Użytkownicy z reguły łączą się z najbliższym im serwerem. Aktualne rozmieszczenie serwerów DNS poznasz odwiedzając tą stronę: <a href="http://www.root-servers.org/" target="_blank" rel="noopener noreferrer">http://www.root-servers.org/</a></p> <p>&nbsp;</p> <p style="padding-left: 4em;"><strong>serwery autorytatywne</strong> (ang. authoritative servers) - są to serwery obsługujące daną domenę/strefę to one przechowują informację na temat rekordów znajdujących się w zarządzanej przez siebie strefie. Ponieważ usługa DNS jest usługą kluczową bez której dostęp do sieci jest znacznie utrudniony (ale nie niemożliwy) dobrą praktyką jest aby za obsługę każdej domeny odpowiadały dwa serwery DNS (zabezpieczenie w przypadku awarii jednego z serwerów).</p> <p>&nbsp;</p> <p style="padding-left: 2em;"><strong>klienci</strong> - aplikacje, które łączą się z serwerem DNS celem uzyskania informacji o przechowywanych zasobach serwera DNS.</p> <p>&nbsp;</p> <p>Odpytanie serwera DNS ma na celu uzyskanie informacji na temat adresu IP poszukiwanego hosta (w przykładach przedstawionych poniżej szukamy adresu IP komputera <strong>komp02.abc.pl</strong>).</p> <p>&nbsp;</p> <p>Serwer DNS aby wykonać odwzorowanie <strong>nazwa domenowa = adres IP</strong> może do tego celu wykorzystać dwa rodzaje zapytań DNS – <strong>iteracyjne</strong> oraz <strong>rekurencyjne</strong>. Zasadę działania zapytania <strong>iteracyjnego</strong> ilustruje poniższy rysunek:</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/dns/image1.png" alt="image1" width="700" height="308" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <ol> <li>Jeśli dany klient nie posiada odwzorowania buduje zapytanie, które następnie wysyła do serwera DNS (w jednym komunikacie do serwera może być wiele zapytań) - <strong>Jaki jest adres IP komputera o nazwie komp02.abc.com?</strong></li> <li>Lokalny serwer DNS również nie potrafi odpowiedzieć na pytanie hosta <strong>komp01.opole.firma.pl</strong> dlatego zapytanie o adres poszukiwanego hosta wysyła w kierunku serwera <strong>root</strong> - <strong>Jaki jest adres IP komputera o nazwie komp02.abc.com?</strong></li> <li>Serwer <strong>root</strong> odpowiada - <strong>Nie wiem, ale zapytaj serwer DNS odpowiedzialny za obsługę domeny com</strong>.</li> <li>Zapytanie zostaje wysłane w kierunku serwera DNS <strong>com</strong> - <strong>Jaki jest adres IP komputera o nazwie komp02.abc.com?</strong></li> <li>Serwer <strong>com</strong> odpowiada - <strong>Nie wiem, ale zapytaj serwer domeny abc.com.</strong></li> <li>Zapytanie zostaje wysłane w kierunku serwera DNS <strong>abc.com</strong> - <strong>Jaki jest adres IP komputera o nazwie komp02.abc.com?</strong></li> <li>Serwer <strong>abc.com</strong> odsyła odpowiedź - <strong>Adres IP komputera komp02.abc.com to 1.2.3.4</strong></li> <li>Serwer DNS odsyła odpowiedź klientowi - <strong>Adres IP komputera komp02.abc.com to 1.2.3.4</strong></li> </ol> <p>W tym modelu lokalny serwer DNS w imieniu klienta odpytuje wszystkie serwery DNS wysyłając zapytania do innych serwerów DNS tak długo aż uzyska odpowiedź na poszukiwane pytanie. Uzyskana odpowiedź zostaje odesłana klientowi, który pytanie zadał.</p> <p>&nbsp;</p> <p>Zasada działania zapytania rekurencyjnego została przedstawiona poniżej:</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/dns/image2.png" alt="image2" width="700" height="308" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <ol> <li>Host chcąc poznać adres komputera <strong>komp02.abc.com</strong> wysyła zapytanie do lokalnego serwera DNS - <strong>Jaki jest adres IP komputera o nazwie komp02.abc.com? </strong></li> <li>Serwer DNS na tak postawione pytanie nie może udzielić odpowiedzi dlatego zapytanie zostaje powielone i wysłane do kolejnego serwera DNS będącego wyżej w hierarchii.</li> <li>Serwer DNS do którego trafia zapytanie również nie jest w stanie udzielić odpowiedzi. Komunikat zostaje przesłany do kolejnego serwera DNS.</li> <li>Powielony komunikat zostaje przekazany do serwera <strong>root</strong>.</li> <li>Serwer <strong>root</strong> nie może udzielić odpowiedzi. Ponieważ poszukiwany adres IP znajduje się w domenie <strong>com</strong> - w kroku następnym zapytanie zostaje skierowane do niego.</li> <li>Główny serwer DNS obsługujący przestrzeń nazw domen <strong>com</strong> nie zna odpowiedzi - pytanie zostaje wysłane w kierunku serwera DNS <strong>abc.com</strong></li> <li>Ponieważ poszukiwany host należy do domeny <strong>abc.com</strong> serwer DNS obsługujący tę strefę w swojej bazie odnajduje adres IP poszukiwanego hosta. Adres IP komputera <strong>komp02.abc.com</strong> to <strong>1.2.3.4</strong></li> <li>Odpowiedź zostaje przekazana do serwera DNS strefy <strong>com</strong>. -<strong> Adres IP komputera komp02.abc.com to 1.2.3.4</strong></li> <li>Serwer DNS informację przekazuje dalej - <strong>Adres IP komputera komp02.abc.com to 1.2.3.4</strong></li> <li>Serwer DNS informację przekazuje dalej - <strong>Adres IP komputera komp02.abc.com to 1.2.3.4</strong></li> <li>Serwer DNS informację przekazuje dalej - <strong>Adres IP komputera komp02.abc.com to 1.2.3.4</strong></li> <li>Lokalny serwer DNS odsyła odpowiedź do hosta, który wysłał zapytanie - <strong>Adres IP komputera komp02.abc.com to 1.2.3.4</strong> Host poznaje adres IP komputera <strong>komp02.abc.com</strong> - rozpoczyna się wymiana danych pomiędzy nimi.</li> </ol> <p>&nbsp;</p> <p>Przedstawione schematy ukazują jedynie koncepcję zapytań prowadzonych przez serwery DNS, gdyż w rzeczywistości serwery DNS potrafią w celu wykonania odwzorowywania łączyć obydwa rodzaje zapytań.</p> <p>&nbsp;</p> <p>System DNS oprócz odpytania serwera pod kątem dopasowania nazwy komputera z jego adresem IP umożliwia wykonywanie zapytań odwrotnych, znajdujących nazwę komputera o znanym adresie IP.</p> <p>&nbsp;</p> <p>Komunikaty DNS używane podczas wymiany informacji (zapytania, odpowiedzi, transfer strefy) mają ściśle ustalony format. Przykład takiego komunikatu został pokazany na rysunku poniżej.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/dns/image3.png" alt="image3" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>W pakiecie DNS można wyróżnić następujące pola:</p> <p>&nbsp;</p> <p style="padding-left: 2em;"><strong>Identyfikator DNS</strong> - dane zawarte w tym polu są określone przez klienta i zwracane do niego w niezmienionej formie. Pole te umożliwia powiązanie zapytania DNS z odpowiedzią na nie.</p> <p>&nbsp;</p> <p style="padding-left: 2em;"><strong>Żądanie/odpowiedź (QR)</strong> - pole określa rodzaj pakietu: żądanie (wartość 0) lub odpowiedź DNS (wartość 1).</p> <p>&nbsp;</p> <p style="padding-left: 2em;"><strong>Kod operacji (OpCODE)</strong> - pole definiuje typ użytego zapytania zawartego w pakiecie. Wartość pola przyjmuje 0 podczas wysyłania standardowego zapytania bądź odpowiedzi na to zapytanie. Wartości od 1 do 3 są nieużywane natomiast 4 oznacza powiadomienie zaś 5 aktualizacja.</p> <p>&nbsp;</p> <p style="padding-left: 2em;"><strong>Odpowiedź autorytatywna (AA)</strong> - odpowiedź pochodzi z autorytatywnego serwera nazw a nie z bufora.</p> <p>&nbsp;</p> <p style="padding-left: 2em;"><strong>Obcięcie (TC) </strong>- ustawienie bitu tego pola oznacza skrócenie odpowiedzi ze względu na przekroczenie rozmiaru datagramu - informacja zajmuje więcej niż 512 bajtów (dotyczy protokołu UDP).</p> <p>&nbsp;</p> <p style="padding-left: 2em;"><strong>Żądanie rekurencji (RD)</strong> - ustawienie bitu w zapytaniu, wskazuje, że klient DNS żąda wykonania zapytania rekurencyjnego w sytuacji w której serwer DNS nie będzie zawierał żądanych informacji. Brak ustawienia bitu i brak możliwości odesłania odpowiedzi przez serwer powoduje wysłanie listy innych serwerów nazw, które mogą zostać użyte w procesie odwzorowywania. Gdy klient otrzyma taka odpowiedź może wykorzystać otrzymane informację w celu budowania kolejnych zapytań.</p> <p>&nbsp;</p> <p style="padding-left: 2em;"><strong>Rekurencja jest dostępna (RA)</strong> - znacznik ustawiony w odpowiedzi informuje o możliwości wykorzystania przez serwer zapytań rekurencyjnych.</p> <p>&nbsp;</p> <p style="padding-left: 2em;"><strong>Zarezerwowane (Z)</strong> - pole przyjmuje wartość 0, pole przeznaczone do wykorzystania w przyszłości.</p> <p>&nbsp;</p> <p style="padding-left: 2em;"><strong>Dane autentyczne (AD)</strong> - ustawiona wartość 1 oznacza uwierzytelnienie przekazywanych informacji.</p> <p>&nbsp;</p> <p style="padding-left: 2em;"><strong>Sprawdzanie wyłączone (CD)</strong> - wyłączenie mechanizmu weryfikacji zabezpieczeń.</p> <p>&nbsp;</p> <p style="padding-left: 2em;"><strong>Kod odpowiedzi (RCode)</strong> - pole wykorzystywane w celu wskazania istnienia ewentualnych błędów. Najczęstsze wartości jakie może przyjąć to pole zostały przedstawione poniżej:</p> <p style="padding-left: 6em;">0 - NoError - brak błędu,</p> <p style="padding-left: 6em;">1 - FormErr - interpretacja zapytania zakończona niepowodzeniem,</p> <p style="padding-left: 6em;">2 - ServFail - błąd po stronie serwera, niepowodzenie w procesie przetwarzanie zapytania,</p> <p style="padding-left: 6em;">3 - NXDomain - wskazana domena nie istnieje,</p> <p style="padding-left: 6em;">4 - NotImp - typ żądania nieobsługiwane przez serwer,</p> <p style="padding-left: 6em;">5 - Refused - żądanie odrzucone, brak wysłania odpowiedzi,</p> <p style="padding-left: 6em;">9 - NotAuth - brak autoryzacji serwera w strefie,</p> <p style="padding-left: 6em;">10 - NotZone - nazwa nie należy do strefy.</p> <p>&nbsp;</p> <p style="padding-left: 2em;"><strong>Liczba zapytań</strong> <strong>(QDCOUNT)</strong> - liczba wpisów w sekcji zapytań.</p> <p>&nbsp;</p> <p style="padding-left: 2em;"><strong>Liczba odpowiedzi (ANCOUNT)</strong> - liczba rekordów w sekcji odpowiedzi.</p> <p>&nbsp;</p> <p style="padding-left: 2em;"><strong>Liczba rekordów serwera</strong> <strong>(NSCOUNT)</strong> - liczba rekordów zasobów w sekcji autorytatywnej.</p> <p>&nbsp;</p> <p style="padding-left: 2em;"><strong>Liczba rekordów dodatkowych</strong> <strong>(ARCOUNT)</strong> - liczba rekordów, które pochodzą z innych źródeł.</p> <p style="padding-left: 2em;">Dynamiczne aktualizacje DNS (ang. DNS Update) przenoszą pola o nazwach ZOCOUNT, PRCOUNT, UPCOUNT oraz ADCOUNT.</p> <p>&nbsp;</p> <p style="padding-left: 2em;"><strong>Sekcja zapytań </strong>- sekcja zawierająca zapytanie (sekcja o zmiennej wielkości).</p> <p>&nbsp;</p> <p style="padding-left: 2em;"><strong>Sekcja odpowiedzi</strong> - sekcja zawierająca rekordy danych będący odpowiedzią na otrzymane przez serwer zapytania (sekcja o zmiennej wielkości).</p> <p>&nbsp;</p> <p style="padding-left: 2em;"><strong>Sekcja autorytatywna</strong> - informacja o innych autorytatywnych serwerach, które mogą być wykorzystane w procesie określania nazw (sekcja o zmiennej wielkości).</p> <p>&nbsp;</p> <p style="padding-left: 2em;"><strong>Sekcja informacji dodatkowych</strong> - informacje dodatkowe związane z otrzymanymi zapytaniami.</p> <p>&nbsp;</p> <p>Wymiana pakietów w komunikacji DNS odbywa się z wykorzystaniem protokołu UDP (standardowe zapytania) ale także protokołu TCP (wymiana informacji pomiędzy serwerami DNS tzw. transfer strefy). W obu przypadkach wykorzystywany jest port o numerze 53.</p> <p>&nbsp;</p> <p>Datagram UDP/IPv4 (ten najczęściej wykorzystywany) został pokazany na rysunku poniżej.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/dns/image4.png" alt="image4" width="700" height="234" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Jeśli w danej strefie obsługa zapytań jest realizowana przez dwa serwery DNS komunikacji pomiędzy nimi odbywa się z wykorzystaniem protokołu TCP raz ze względu na ilość przesyłanych danych a dwa, że konieczne jest zachowanie pewności przesyłu tych danych. Transfer strefy pomiędzy serwerami DNS jest wykonywany w celu synchronizacji danych tak by oba serwery nazw obsługujące strefę posiadały jednolite dane.</p> <p>&nbsp;</p> <p>Do tematu jeszcze powrócimy gdy zaczniemy analizować przechwycone pakiety.</p> <p>&nbsp;</p> <p>Rekordy zasobów DNS zawierają informacje związane z domeną i mogą być pobierane oraz wykorzystywane przez klientów DNS. Każdy serwer DNS obsługuje te rekordy przestrzeni nazw DNS, które są dla niego autorytatywne. Każdy administrator systemu DNS odpowiedzialny jest za poprawność informacji zawartych, w strefie którą zarządza.</p> <p>&nbsp;</p> <p>W wspomnianych dokumentach RFC 1034 i 1035 oraz późniejszych został określone możliwe do przechowywania typy zasobów. Większość typów rekordów praktycznie nie jest wykorzystywana choć nadal w pełni wspierana. Do tych najważniejszych rekordów można zaliczyć następujące:</p> <p>&nbsp;</p> <p style="padding-left: 4em;"><strong>rekord A</strong> lub <strong>rekord adresu IPv4</strong> (ang. address record) mapuje nazwę domeny DNS na jej 32-bitowy adres IPv4. Jest rekordem wyszukiwania w przód.</p> <p style="padding-left: 4em;"><strong>rekord AAAA</strong> lub <strong>rekord adresu IPv6</strong> (ang. IPv6 address record) mapuje nazwę domeny DNS na jej 128 bitowy adres IPv6. Rekord AAAA podobnie jak rekord A jest rekordem wyszukiwania w przód.</p> <p style="padding-left: 4em;"><strong>rekord CNAME</strong> lub <strong>rekord nazwy kanonicznej</strong> (ang. canonical name record) ustanawia alias nazwy domeny czyli pozwala na użycie kilku rekordów zasobów odnoszących się do jednego hosta.</p> <p style="padding-left: 4em;"><strong>rekord MX</strong> lub <strong>rekord wymiany poczty</strong> (ang. mail exchange record) mapuje nazwę domeny DNS na nazwę serwera mailowego, obsługującego pocztę dla danej domeny. Rekordów MX w danej strefie może być kilka, różnią się one priorytetem. W pierwszej kolejności wybierane są te z niższym priorytetem - serwer z wyższym priorytetem jest wybierany w sytuacji w której serwer do którego został przypisany priorytet niższy nie działa.</p> <p style="padding-left: 4em;"><strong>rekord PTR</strong> lub <strong>rekord wskaźnika</strong> (ang. pointer record) mapuje adres IPv4 na nazwę kanoniczną hosta. Rekord PTR w przeciwieństwie do np. rekordów typu A bądź AAAA jest rekordem wyszukiwania wstecznego, który łączy adres IP z nazwę hosta. Rekordy PTR mogą mieć postać adresów IPv4 lub IPv6.</p> <p style="padding-left: 4em;"><strong>rekord NS</strong> lub <strong>rekord serwera nazw</strong> (ang. name server record) mapuje oraz identyfikuje serwer DNS autorytatywny dla danej domeny.</p> <p style="padding-left: 4em;"><strong>rekord SOA</strong> (ang. start of authority record) ustala serwer DNS dostarczający autorytatywne informacje o domenie internetowej (adresy serwerów nazw, parametry czasowe transferu stref czy numer konfiguracji).</p> <p style="padding-left: 4em;"><strong>rekord SRV</strong> lub <strong>rekord usługi</strong> (ang. service record) pozwala na zawarcie dodatkowych informacji dotyczących lokalizacji danej usługi, którą udostępnia serwer wskazywany przez adres DNS.</p> <p style="padding-left: 4em;"><strong>TXT</strong> - rekord ten pozwala dołączyć dowolny tekst do rekordu DNS.</p> <p>&nbsp;</p> <p>Proces rozpoznawania nazw przez klienta DNS schematycznie został przedstawiony na rysunku poniżej.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/dns/image5.png" alt="image5" width="700" height="346" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Jak można zauważyć w pierwszym kroku klient poszukiwaną informację próbuje zdobyć sam. W tym celu sięga do informacji zapisanych w pliku <strong>HOSTS</strong>, którego zawartość jest kopiowana do pamięci podręcznej.</p> <p>&nbsp;</p> <p>Plik <strong>HOSTS</strong> jest plikiem tekstowym zawierającym w każdej linii adres IP i jedną lub więcej nazw domenowych danego hosta (oddzielone od siebie spacjami lub tabulatorami). W systemie Windows lokalizacja tego pliku jest następująca: <strong>%SystemRoot%\system32\drivers\etc\hosts</strong> Przykładowy plik HOSTS został pokazany na rysunku poniżej.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/dns/image6.png" alt="image6" width="700" height="422" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>W pamięci podręcznej również znajdują się rozwiązane kwerendy DNS uzyskane w odpowiedziach na poprzednie zapytania. Jeśli poszukiwana nazwa hosta zostaje skojarzona z adresem IP cały proces się kończy.</p> <p>&nbsp;</p> <p>W czasie procesu rekursji lub iteracji serwery DNS przetwarzają kwerendy w imieniu klientów i równocześnie gromadzą zdobyte informacje o przetwarzanym obszarze nazw DNS. Te informacje w kolejnym kroku umieszczane są w pamięci podręcznej celem późniejszego wykorzystania.</p> <p>&nbsp;</p> <p>Dzięki zapisu informacji o rozwiązanych kwerendach serwer/host w przypadku wystąpienia ponownego zapytania, które miało miejsce wcześniej nie musi wykonywać procesu rozwiązywania nazwy, gdyż potrzebna informacja jest już dla niego dostępna. Głównym zadaniem użycia bufora jest więc zmniejszenie ruchu w sieci związanego z mechanizmem DNS.</p> <p>&nbsp;</p> <p>Kiedy informacja trafia do bufora jest jej przypisywana wartość czasu wygaśnięcia (TTL). Dopóki nie upłynie czas TTL buforowanych kwerend, dany serwer DNS może ponownie wykorzystywać zapisane rekordy do udzielania odpowiedzi klientom na przysyłane przez klientów zapytania odpowiadające tym rekordom.</p> <p>&nbsp;</p> <p>W sytuacji kiedy host w sposób lokalny nie potrafi znaleźć nazwy hosta proces rozwiązywania jest kontynuowany przez klienta poprzez wysłanie zapytania do serwera DNS. Po otrzymaniu pytania serwer DNS podobnie jak klient w pierwszej kolejności sprawdza czy może na nie odpowiedzieć na podstawie informacji zawartych w swoim lokalnym buforze jeśli tak do klienta jest odsyłana odpowiedź.</p> <p>&nbsp;</p> <p>Jeśli nazwa poszukiwanego hosta jest zgodna z rekordem zasobu zarządzanej strefy (bądź stref), serwer odpowiada autorytatywnie, wykorzystując informacje uzyskane z zasobów strefy.</p> <p>&nbsp;</p> <p>Serwer DNS, który posiada pełną informację o przestrzeni nazw DNS jest określany mianem serwera autoratywnego dla tej części przestrzeni nazw i to on jest podstawowym magazynem strefy. Strefa zaś zawiera rekordy zasobów, które mogą należeć do jednej lub więcej domen DNS.</p> <p>&nbsp;</p> <p>Jeśli wszystkie przedstawione wyżej sposoby rozwiązania nazwy (brak informacji w buforze hosta, serwera DNS oraz wśród informacji strefy), okażą się nieskuteczne proces wykonywania kwerendy jest kontynuowany z wykorzystaniem zewnętrznych serwerów DNS (użycie zapytań DNS – iteracyjne oraz rekurencyjne).</p> <p>&nbsp;</p> <p>Wyróżnić możemy cztery typy stref DNS (w niektórych źródłach znajdziesz informację o trzech):</p> <p>&nbsp;</p> <p style="padding-left: 4em;"><strong>Strefa podstawowa</strong> - strefa tego typu jest niezbędna do funkcjonowania mechanizmu DNS oraz do prawidłowego rozpoznania nazw domen. Przechowuje ona główną kopię strefy i informacje w niej zawarte mogą być replikowane do stref pomocniczych. Strefa podstawowa jest zapisana na serwerze DNS, który jest serwerem autorytatywnym dla strefy.</p> <p style="padding-left: 4em;"><strong>Strefa pomocnicza</strong> - zawiera kopię tylko do odczytu informacji o strefie, czyli obejmuje ona wszystkie informacje zawarte w strefie podstawowej. Informacje w niej zapisane są uzyskiwane za pomocą replikacji z wykorzystaniem mechanizmu transferu strefy. Wykorzystanie stref tego typu zwiększa wydajność (zapytania rozkładają się pomiędzy.</p> <p style="padding-left: 4em;"><strong>Strefa skrótowa</strong> (czasem też zwana strefą wejściową) zawiera jedynie informacje o rekordach zasobów (SOA, NS), które są niezbędne do zidentyfikowania autorytatywnych serwerów DNS. Strefy tego typu wskazują, gdzie można znaleźć pełną informację o strefie.</p> <p style="padding-left: 4em;"><strong>Zintegrowana z Active Directory</strong> - ten typ strefy tak naprawdę jest strefą podstawową tylko w przeciwieństwie do tradycyjnej strefy podstawowej, która jest przechowywana w pliku lokalnym jest ona wykorzystywana w środowisku opartym o usługę Active Directory a jej replikacja jest wykonywana przy wykorzystaniu mechanizmów tej usługi.</p> <p>&nbsp;</p> <p>Część teoretyczną z grubsza mamy omówioną choć celem uzupełnienia do pewnych zagadnień wrócimy.</p> <p>&nbsp;</p> <p>Topologia naszej ćwiczebnej sieci w oparciu o którą zostaną omówione pakiety DNS została zaprezentowana na schemacie poniżej:</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/dns/image7.png" alt="image7" width="700" height="576" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Polecenie poniżej zostało wydane na komputerze XXX i jak widać w cachu znajduje się tylko jeden wpis wiążący nazwę WinServ2012A z adresem IP 10.0.0.10 (bufor pamięci DNS zawierający odwzorowania nazw domenowych i odpowiadających im adresów IP poznamy wydając polecenie: <strong>ipconfig /displaydns</strong>).</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/dns/image8.png" alt="image8" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Prześledźmy zatem wymianę pakietów DNS jaka zachodzi w przypadku rozwiązywania nazw. Z hosta XXX wykonamy test ping w kierunku hosta YYY. Komputer nie zna adresu IP hosta YYY tak więc w pierwszej kolejności zostanie przeprowadzona komunikacja z serwerem DNS w celu ustalenia adresu IP komputera YYY.</p> <p>&nbsp;</p> <p>Jak już wiesz Czytelniku cała funkcjonalność systemu DNS opiera się na modelu zapytania i odpowiedzi. Host, który chce dokonać powiązania danego adresu IP z jego nazwą domenową buduje i wysyła do serwera DNS zapytanie, zaś zadaniem serwera DNS jest znalezienie odpowiedzi na pytanie hosta i jej odesłanie.</p> <p>&nbsp;</p> <p>Proces powiązania adresu IP z nazwą hosta może wymagać wysłania wielu pakietów lecz w najprostszej postaci wystarczą dwa. Prześledźmy zatem jak wygląda wymiana pakietów pomiędzy komputerami właśnie w tej najprostszej sytuacji.</p> <p>&nbsp;</p> <p>Na rysunku poniżej przedstawiono przechwycony pakiet z zapytaniem DNS, które zostało wysłane przez hosta XXX o adresie 172.16.10 do serwera o adresie 10.0.0.10 (punkt 1). Przedstawiony pakiet jest zapytaniem DNS a do jego wysłania został użyty protokół UDP w powiązaniu z portem o numerze 53 (domyślny port usługi DNS) - punkt 2.</p> <p>&nbsp;</p> <p>Pakiet jest pojedynczym zapytaniem wysłanym w celu identyfikacji adresu IP hosta yyy.firma.local (ponieważ komputery są częścią domeny firma.local człon ten został dodany automatycznie). Zapytanie dotyczy adresu internetowego (IN) komputera (A) - punkt 3.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/dns/image9.png" alt="image9" width="700" height="686" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Odpowiedź na pytanie hosta została zaprezentowana na rysunku poniżej. Ponieważ oba komputery są w jednej wspólnej domenie serwer DNS nie musi odpytywać innych serwerów celem ustalenia adresu IP hosta YYY gdyż informację ta znajduje się w jego bazie (rekurencja w tym przypadku nie jest wykorzystywana). Odpowiedź zostaje udzielona hostowi - punkt 1. Rodzi się pytanie - Skąd wiemy, że przedstawiony pakiet jest odpowiedzią na zapytanie klienta? Łatwo to zweryfikować i łatwo powiązać zapytanie z odpowiedzią gdyż pakiet ten ma taki sam identyfikator jak zapytanie (w naszym scenariuszu 0x4c04) - porównując identyfikatory pakietów łatwo powiążemy pakiety zapytań z odpowiedziami na nie - punkt 2. Informacja o tym, że pakiet jest odpowiedzią możemy zweryfikować również po rozwinięciu sekcji <strong>Flags</strong> - punkt 3. Dodatkowa weryfikacja może nastąpić po analizie danych umieszczonych w sekcji <strong>Answers</strong> gdyż przedstawiony pakiet budowany jest w ten sposób, że zawiera on informację o otrzymanym zapytaniu jak i udzielonej odpowiedzi. Adres IP komputera YYY to 172.16.0.11 Host XXX uzyskując informację o adresie IP hosta YYY może rozpocząć z nim komunikację.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/dns/image10.png" alt="image10" width="700" height="678" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>W kolejnym przykładzie nadal będziemy bazować na pytaniu i odpowiedzi w ramach jednej domeny lecz przyjrzymy się sytuacji w której serwer DNS nie znajduje odpowiedzi na pytanie klienta.</p> <p>&nbsp;</p> <p>Przesłane zapytanie w budowie nie różni się od pakietu przedstawionego w poprzednim przykładzie. Jest tylko mała różnica - szukamy adresu IP hosta o nazwie AAA. Host taki oczywiście w naszej sieci nie istnieje.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/dns/image11.png" alt="image11" width="700" height="678" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Ponieważ nazwa szukanego hosta jest obsługiwana przez serwer DNS WinServ2012A, to tylko on jest władny by udzielić informację o adresie IP poszukiwanego komputera. Serwer DNS odsyła pakiet o nie odnalezieniu dopasowania.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/dns/image12.png" alt="image12" width="700" height="678" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Wydając na hoście XXX ponownie polecenie: <strong>ipconfig /displaydns</strong> możemy przejrzeć lokalny cache DNS hosta. Jak widać zostały w nim zapisane oba odwzorowania (jedno mapujące nazwę hosta YYY z adresem IP 172.16.0.11 oraz drugie informujące, że host o nazwie AAA nie istnieje) o które host ten pytał.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/dns/image13.png" alt="image13" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Urozmaicamy trochę Naszą sytuację i sprawdźmy jak przebiegnie wymiana komunikatów w sytuacji w której poszukiwany adres IP hosta będzie znajdował się w Internecie. Odpytajmy serwer DNS o adres IP hosta google.pl</p> <p>&nbsp;</p> <p>Do tej pory hosty mogły prowadzić tylko komunikację w ramach sieci LAN, zmieniamy trochę naszą topologię i hosty uzyskują dostęp do Internetu. Zostaje skonfigurowane łącze pomiędzy routerem a dostawcą Internetu. Konfiguracja routera oczywiście musi ulec modyfikacji (zostaje skonfigurowana zerowa trasa statyczna tak by wszystkie pakiety, które nie znajdują dopasowania mogły zostać nią przesłane oraz NAT) oraz serwer DNS zostaje skonfigurowany w ten sposób by zapytania DNS na które nie znajduje odpowiedzi przesyłał dalej (jak taką konfigurację wykonać opiszę w wpisie, który będzie poświęcony mechanizmowi DNS w kontekście Windows Server 2012). Serwerem DNS do którego będą trafiać zapytania to ogólnodostępny serwer DNS Google czyli host o adresie IP 8.8.8.8 Hostem zadającym pytanie jest komputer YYY.</p> <p>&nbsp;</p> <p>Od hosta YYY (IP 172.16.0.11) do serwera DNS (IP 10.0.0.10) trafia zapytanie - <strong>Jaki jest adres IP hosta google.pl?</strong> (punkt 1). Serwer DNS na tak postawione pytanie nie zna odpowiedzi gdyż poszukiwany host nie znajduje się w zarządzanej przez niego domenie. Zapytanie musi być przesłane do zewnętrznego serwera DNS a ponieważ możliwe jest wykonanie rekurencji (punkt 2) pakiet z pytaniem zostaje wysłany do serwera DNS o adresie 8.8.8.8</p> <p>&nbsp;</p> <p>Identyfikator pakietu przyjmuje wartość 0xa238 (punkt 3).</p> <p>&nbsp;</p> <p>Zrzut poniżej przedstawia przechwycony pakiet w komunikacji pomiędzy hostami 172.16.0.11 a 10.0.0.10</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/dns/image14.png" alt="image14" width="700" height="679" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Tak jak napisałem wyżej celem dokonania mapowania pakiet opuszcza lokalny serwer DNS i zostaje przekazany w kierunku zewnętrznego serwera DNS - punkt 1. Pakiet ten zawiera pytanie zadane przez hosta YYY - punkt 2.</p> <p>&nbsp;</p> <p>Identyfikatorem pakietu jest wartość: 0x14de - punkt 3.</p> <p>&nbsp;</p> <p>Zrzut poniżej przedstawia przechwycony pakiet w komunikacji pomiędzy hostami 10.0.0.10 a 8.8.8.8</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/dns/image15.png" alt="image15" width="700" height="678" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Ponieważ odpytywany serwer DNS należy do Google (punkt 1) a pytanie dotyczy hosta znajdującego się w tej domenie zostaje udzielona odpowiedź w postaci adresu IP poszukiwanego komputera (punkt 2). Pakiet jest odpowiedzią na wcześniejsze żądanie gdyż pakiet wysłanego zapytania i udzielonej odpowiedzi zawierają ten sam identyfikator (punkt 3).</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/dns/image16.png" alt="image16" width="700" height="678" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Lokalny serwer DNS zna już odpowiedź na pytanie hosta YYY tak więc udziela mu odpowiedzi (punkt 1) w postaci poszukiwanego adresu IP (punkt 2). I tak samo jak poprzednio pakiet pytania i odesłanej odpowiedzi powiążemy ze sobą za pomocą identyfikatora transakcji (punkt 3).</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/dns/image17.png" alt="image17" width="700" height="678" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Mam nadzieję, że przedstawione powyżej przykłady w dość jasny sposób tłumaczą wymianę pakietów jaka jest prowadzona w ramach mechanizmu DNS.</p> <p>&nbsp;</p> <p>Strefa DNS to przestrzeń nazw, którą może zarządzać jeden z serwerów DNS jednak w celu zapewnienia redundancji i wyeliminowania sytuacji w której serwer DNS na wskutek awarii jest nieosiągalny stosuje się zapasowy serwer DNS, który zawiera pełną kopię informacji danej strefy (kopia serwera głównego). Zastosowanie drugiego serwera ma jeszcze jedną zaletę gdyż ruch związany z zapytaniami jest rozkładany pomiędzy nimi. Aby kopie na obu serwerach były spójne i synchronizowane pomiędzy serwerami następuje tzw. <strong>transfer strefy DNS</strong>.</p> <p>&nbsp;</p> <p style="padding-left: 4em;"><strong>Przyrostowy transfer strefy (IXFR)</strong> - pomiędzy serwerami DNS zostaje przesłana tylko część informacji, która uległa zmianie bądź modyfikacji.</p> <p style="padding-left: 4em;"><strong>Pełny transfer strefy (AXFR)</strong> - pomiędzy serwerami DNS następuje przesłanie całej strefy.</p> <p>&nbsp;</p> <p>Aby przeanalizować jak pełny transfer strefy przebiega w praktyce należy zmodyfikować naszą topologię sieciową - dodajemy do niej dodatkowy serwer DNS WinServ2012B.</p> <p>&nbsp;</p> <p>Host YYY (IP 172.16.0.11) posłuży Nam w celu zbadania przebiegu przyrostowego transferu strefy.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/dns/image18.png" alt="image18" width="700" height="573" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Przykład przedstawiający pełny transfer strefy pomiędzy komputerami o adresach IP 10.0.0.10 o 10.0.0.11 został przedstawiony poniżej.</p> <p>&nbsp;</p> <p>Na hoście WinServ2012B została dodana rola serwera DNS (sposób konfiguracji w kontekście Windows Server zostanie opisany w oddzielnym wpisie), po jej instalacji komputer zostaje włączony w strukturę istniejącej sieci. Ponieważ dodany host pełni rolę zapasowego serwera DNS przy podłączaniu następuje proces pełnego transferu strefy z serwera głównego.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/dns/image19.png" alt="image19" width="700" height="649" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Analizując powyższy zrzut pierwsza rzecz, która powinna przykuć Twoją uwagę Czytelniku jest użyty protokół warstwy transportowej - nie jest to jak było do tej pory protokół UDP lecz TCP. Waga przesyłanych informacji jest zbyt ważna by zadanie to powierzyć protokołowi UDP (brak mechanizmów gwarantujących 100% pewność przesłanych danych) dlatego też proces transferu strefy odbywa się <strong>z wykorzystaniem protokołu TCP</strong>, który pomimo większego narzutu przesyłanych danych gwarantuje Nam pewność i niezawodność ich dostarczenia (punkt 1).</p> <p>&nbsp;</p> <p>Żądanie pełnego transferu strefy DNS to tak naprawdę standardowe zapytanie kierowane ku serwerowi DNS, ale zamiast prośby o rozwiązanie nazwy pojedynczego rekordu klient żąda otrzymanie wszystkich informacji dotyczących zarządzaną strefą. Serwer DNS otrzymuje rekord typu AXFR - punkt 2.</p> <p>&nbsp;</p> <p>Główny serwer DNS po otrzymaniu żądania transferu strefy odsyła stosowane informacje w kierunku klienta (punkt 1).</p> <p>&nbsp;</p> <p>Proces pełnego transferu strefy powoduje przekazanie informacji o wszystkich rekordach w ramach zarządzanej strefy DNS - punkt 2. Zapasowy serwer DNS posiada informację o całej strefie. W razie awarii serwera głównego host może przejąć jego rolę.</p> <p>&nbsp;</p> <p>Po zakończeniu całej wymiany informacji następuje eleganckie zakończenie sesji TCP (patrz pakiety od 142 do 145) - jeśli sposób działania protokołu TCP jest Ci obcy zapraszam do zapoznania się z wpisem: <a href="http://slow7.pl/sieci-komputerowe/item/121-co-w-sieci-siedzi-skanowanie-portow">Co w sieci siedzi. Skanowanie portów. </a></p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/dns/image20.png" alt="image20" width="700" height="649" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Przeglądając powyższe dane, które zostały dostarczone zapasowemu serwerowi DNS (nie było ich wiele, gdyż nasza strefa nie jest duża) szybko można dojść do wniosku (a nawet trzeba), że waga przesłanych informacji dla atakującego naszą sieć będzie stanowić prawdziwą kopalnię złota gdyż dzięki ich analizie można utworzyć mapę całej infrastruktury sieci. Dlatego też nie powinny dostać się one w niepowołane ręce. Sposób uzyskiwania wglądu do nich zależy od konfiguracji serwera DNS a nieprawidłowa bądź nierzetelna konfiguracja serwera może doprowadzić do sytuacji w której dostęp do informacji strefy (tak jak to zostało pokazane poniżej) będzie mógł uzyskać każdy.</p> <p>&nbsp;</p> <p>W przykładzie poniżej dzięki wykorzystaniu wbudowanego w systemie Windows narzędzia <strong>nslookup</strong> i po wydaniu dwóch poleceń do hosta XXX zostaje wykonany pełny transfer sieci. Po wywołaniu narzędzia domyślnym serwerem DNS jest host 10.0.0.10 (serwer ten został zdefiniowany w ustawieniach karty sieciowej) - punkt 1.</p> <p>&nbsp;</p> <p>Za pomocą polecenia: <strong>set type=any</strong> ustalamy zakres interesujących nas rekordów - punkt 2.</p> <p>&nbsp;</p> <p>Komenda: <strong>ls -d &lt;nazwa_domeny&gt;</strong> nakazuje przesłanie kopii strefy.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/dns/image21.png" alt="image21" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Poniżej zaprezentowano zrzut wymiany pakietów pomiędzy serwerem DNS (IP 10.0.0.10) a hostem XXX (IP 172.16.0.10). Jak widać przedstawiony pakiet odzwierciedla informację uzyskane dzięki narzędziu nslookup.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/dns/image22.png" alt="image22" width="700" height="373" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Przyrostowy transfer stref jest dodatkową funkcją protokołu DNS związaną z replikowaniem stref DNS. Głównym założeniem przyświecającym przy opracowywaniu tego standardu było zmniejszenie obciążeń łączy podczas prowadzonego procesu aktualizacji stref. Przed wprowadzeniem tego mechanizmu każda aktualizacja danych związana z przesłaniem rekordów bazy danej strefy wymagała wykonanie procesu pełnego transferu całej strefy (użycie w pakiecie flagi AXFR). W sytuacji, w której wykorzystywany jest przyrostowy transfer strefy (użycie w pakiecie flagi IXFR) serwer, który żąda przesłania informacji wykonuje kopię tych zmian strefy, które są niezbędne do synchronizacji jego kopii strefy ze źródłem. Przebieg procesu przyrostowego transferu strefy został przedstawiony poniżej (komunikacja pomiędzy dwoma serwerami DNS o adresach IP 10.0.0.11 oraz 10.0.0.10).</p> <p>&nbsp;</p> <p>Jak już wspomniałem w naszej ćwiczebnej topologii znajduje się host YYY (IP 172.16.0.11), rekord typu A łączący nazwę hosta YYY z adresem IP został utworzony na serwerze 10.0.0.10.</p> <p>&nbsp;</p> <p>Pomiędzy serwerami DNS (punkt 1) dochodzi do transferu strefy lecz w odróżnieniu od poprzedniej wymiany danych transfer ten jest wykonywany po przesłaniu pakietu z ustawioną flagą IXFR (punkt 2) nakazując tym samym przesłanie nowych rekordów bądź tych, które zostały poddane modyfikacji.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/dns/image23.png" alt="image23" width="700" height="373" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>W kolejnym pakiecie serwer DNS 10.0.0.10 (punkt 1) przesyła aktualizację strefy i jak widać poniżej znajduje się w nim informacja tylko o hoście YYY (punkt 2).</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/dns/image24.png" alt="image24" width="700" height="373" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>W tym wpisie starałem się przedstawić najważniejsze informację związane z działanie mechanizmu DNS. Wiesz już, jak przebiega proces rozpoznawania nazw w sieciach opartych o protokół TCP/IP oraz jak ważnym dla sprawnego funkcjonowania całego Internetu jest spójny mechanizm zarządzania nazwami komputerów i usług. W kolejnym wpisie temat rozwiniemy i zajmiemy się konfiguracją protokołu DNS w systemie Windows Server 2012.</p></div> <div class="K2FeedImage"><img src="http://slow7.pl/media/k2/items/cache/cf4507ae4969876df39b5f798b6f40ce_S.jpg" alt="Co w sieci siedzi. Protokół DNS." /></div><div class="K2FeedIntroText"><p>W pierwowzorze wpis ten miał dotyczyć konfiguracji roli serwera DNS w systemie Windows Server 2012 ale ponieważ wcześniej zbyt wiele o protokole DNS nie napisałem postanowiłem w pierwszej kolejności przedstawić sposób działania tego protokołu a następnie skupić się na zagadnieniach związanych z jego konfiguracją. Myślę, że przyjęty schemat postępowania będzie dla Ciebie czytelniku bardziej przystępny gdyż zanim będziemy konfigurować system do pełnienia roli serwera DNS warto poznać sposób działania samego protokołu. Nie przedłużając zapraszam do lektury artykułu.</p> <p>&nbsp;</p> </div><div class="K2FeedFullText"> <p>&nbsp;</p> <p>Zarządzanie przestrzenią nazw domenowych ma ogromne znaczenie w sieci Internet oraz w sieciach korporacyjnych (w sieciach domowych raczej nikt serwera tego typu nie posiada, gdyż jest to zbędne lecz nie oznacza to że z usługi tej nie korzystamy).</p> <p>&nbsp;</p> <p>W sieciach firmowych działanie mechanizmu DNS ma szczególne znaczenie gdyż zapewnia on:</p> <ul> <li style="padding-left: 4em;">stabilność komunikacji pomiędzy hostami a serwerami,</li> <li style="padding-left: 4em;">odszukanie kontrolera domeny i wykonanie procesu logowania,</li> <li style="padding-left: 4em;">dostęp aplikacją biznesowym do przydzielonych im zasobów,</li> <li style="padding-left: 4em;">poprawne funkcjonowanie otoczenia sieciowego i widoczność krytycznych zasobów,</li> <li style="padding-left: 4em;">użytkownikom sieci VPN na dostęp do świadczonych usług czy możliwość połączenia z siecią Intranet.</li> </ul> <p>&nbsp;</p> <p>Używając ścieżek bezpośrednich w oparciu o adres IP problem nie występuje.</p> <p>&nbsp;</p> <p>Pewnie nie jest to dla Ciebie Czytelniku tajemnicą, że do komunikowania się między sobą komputery w sieci wykorzystują adresy IP. Ich format oraz wartości dla nas ludzi stanowią pewien problem gdyż są po prostu trudne do zapamiętania. Znacznie lepiej zamiast przykładowego adresu 213.180.141.140 pamiętać www.onet.pl. Jest to tzw. nazwa kanoniczna. Użyty format odzwierciedla hierarchię systemu nazw domen używanych w sieci Internet, czyli DNS (ang. Domain Name Service). Aby tradycyjne adresy IP mogły współistnieć z nazwami komputerów, należało wymyślić i opracować mechanizm, który wykonywałby odwzorowywanie adresów z jednej postaci w drugą. I tym właśnie zajmuje się DNS.</p> <p>&nbsp;</p> <p>Sposób działania DNS-u został opracowany przez organizację IETF (ang. Internet Engineering Task Force) a jego opis znajdziemy w dokumentach RFC <a href="https://www.ietf.org/rfc/rfc1034.txt" target="_blank" rel="noopener noreferrer">1034</a> i <a href="https://www.ietf.org/rfc/rfc1035.txt" target="_blank" rel="noopener noreferrer">1035</a>.</p> <p>&nbsp;</p> <p>System DNS jest standardem usługi nazw. Usługa DNS pozwala komputerom znajdującym się w sieci komputerowej rejestrować i rozwiązywać nazwy domen DNS. Za pomocą tych nazw można zidentyfikować i uzyskać dostęp do zasobów oferowanych przez inne komputery w sieci lub innych sieciach, takich jak Internet.</p> <p>&nbsp;</p> <p>Aby nazwa komputera mogła być odwzorowana na adres IP musi przyjmować zdefiniowany format zgodny z zasadami przyjętymi w modelu systemu DNS. Na samym początku istnienia sieci komputerowych powiązanie nazwy komputera z jego adresem IP odbywało się poprzez zapisanie tych informacji w jednym pliku tekstowym. W miarę jak sieci komputerowe rozwijały się i rosła ich liczba rozwiązanie te przysparzało coraz więcej problemów. Dlatego też jak mówi stare przysłowie - „Potrzeba jest matką wynalazków: zdecydowano się na wprowadzenie systemu opartego o hierarchiczny, rozproszony model definiowania nazw.</p> <p>&nbsp;</p> <p>Najwyższy poziom w hierarchii jest reprezentowany przez znak „.” nazywany również korzeniem drzewa bądź domeną główną (w obiegu używana jest również nazwa root). Sposób definiowania nazw kolejnych poddomen nie został określony lecz przyjęto pewne zasady nazewnictwa i na następnym poziomie określono nazwy domen oraz zdefiniowano ich przeznaczenie. I tak pojawiły się poddomeny typu:</p> <ul> <li style="padding-left: 4em;"><strong>com</strong> - organizacje komercyjne,</li> <li style="padding-left: 4em;"><strong>int</strong> - organizacje międzynarodowe,</li> <li style="padding-left: 4em;"><strong>edu</strong> - instytucje edukacyjne,</li> <li style="padding-left: 4em;"><strong>net</strong> - internetowe,</li> <li style="padding-left: 4em;"><strong>biz</strong> - biznesowe,</li> <li style="padding-left: 4em;"><strong>info</strong> - serwisy o charakterze informacyjnym,</li> <li style="padding-left: 4em;"><strong>gov</strong> - administracja rządowa,</li> <li style="padding-left: 4em;"><strong>mil</strong> - wojsko,</li> <li style="padding-left: 4em;"><strong>org</strong> - inne organizacje,</li> <li style="padding-left: 4em;"><strong>name</strong> – nazewnicze indywidualne,</li> <li style="padding-left: 4em;"><strong>pro</strong> – zawodowe,</li> <li style="padding-left: 4em;"><strong>arpa</strong> - specjalna domena do wiązania adresów IP z nazwami.</li> </ul> <p>&nbsp;</p> <p>Ponieważ na samym początku sieć Internet swym zasięgiem obejmowała tylko USA, przyjęty system nadawania nazw nie odzwierciedlał podziałów terytorialnych państw. Dlatego też gdy Internet stał się na tyle popularny i na tyle dostępny dla reszty świata rozszerzono nazewnictwo domen o dwuliterowe kody krajów (większość z nich odpowiada kodom krajów ze standardu ISO 3166-1). Kody te łączy się z wymienionymi powyżej nazwami domen (np. .<strong>com.pl</strong>) ale oprócz tego można je używać bezpośrednio po znaku „.” (np. samo <strong>.pl</strong>).</p> <p>&nbsp;</p> <p>Tak więc jak już wspomniano w systemie DNS przyjęto hierarchiczny układ domen co oznacza, że przykładowe domeny <strong>org</strong> czy <strong>net</strong> są poddomenami domeny głównej, zaś domena <strong>firma.com</strong> jest poddomeną domeny <strong>com</strong>. Hierarchię tę najczęściej odnosi się do drzewa w którym to gałęzie są kolejnymi poziomami hierarchii zaś liście to nazwy konkretnych maszyn. Taki sposób podejścia do sprawy ma swoje konsekwencję gdyż, przyjęty system nadawania nazw najczęściej odzwierciedla strukturę podmiotów (firmy komercyjne, uczelnie, jednostki administracji rządowej) i chyba co najważniejsze zapewnia autonomię w zarządzaniu i administrowaniu nazwami dostępnymi w ramach pojedynczej domeny.</p> <p>&nbsp;</p> <p>Nazwę domeny (czytamy od lewej do prawej strony) tworzą nazwy kolejnych domen, które są wyżej w hierarchii. Wracając do naszej analogii z drzewem idziemy od liścia poprzez kolejne gałęzie aż do korzenia. Nazwy poszczególnych domen są od siebie oddzielone kropką. Pełna nazwa komputera posiada zaś dodatkowo na początku identyfikator komputera. Na przykład, komputer o identyfikatorze <strong>komp02</strong> w domenie <strong>abc.com</strong> ma nazwę <strong>komp02.abc.com</strong>.</p> <p>&nbsp;</p> <p>Każda domena posiada swój serwer, który odpowiada za rozwiązywanie nazw w zdefiniowanej przestrzeni nazw przy czym kilka domen może być obsługiwanych przez jeden serwer (oczywiście możliwy jest również scenariusz w którym za obsługę klientów w danej strefie odpowiada kilka serwerów DNS). Każdy serwer DNS jest obsługiwany przez administratora, który najczęściej jest właścicielem danej domeny. Tak więc utworzenie własnej domeny (a mówiąc szczegółowo poddomeny) sprowadza się do zarejestrowania jej u właściciela domeny stojącego w hierarchii wyżej (rejestracja najczęściej wiąże się z uiszczeniem pewnej kwoty). Administrując daną domeną mamy swobodę w tworzeniu domen potomnych czyli subdomen. Serwer obsługujący domenę musi znać adresy serwerów DNS odpowiedzialnych za funkcjonowanie wszystkich jej poddomen.</p> <p>&nbsp;</p> <p>Przykładowo, chcąc utworzyć nową domenę <strong>abc</strong> w domenie <strong>com</strong>, fakt ten należy zgłosić do administratora domeny <strong>com</strong>. Po rejestracji domeny <strong>abc.com</strong> adres IP serwera DNS odpowiedzialny za rozwiązywanie nazw w tej strefie zostaje zapisany na serwerze domeny <strong>com</strong>.</p> <p>&nbsp;</p> <p>W systemie DNS możemy wyróżnić trzy podstawowe składniki, które odpowiadają za funkcjonowanie całego mechanizmu:</p> <p>&nbsp;</p> <p style="padding-left: 2em;"><strong>zdefiniowana przestrzeń nazw domen i związane z nią typy rekordów zasobów</strong> - rozproszona baza nazw i skojarzonych z nią adresów IP,</p> <p>&nbsp;</p> <p style="padding-left: 2em;"><strong>strefy nazw DNS</strong> - serwery, które odpowiadają za funkcjonowanie domeny a których zadaniem jest kontrolowanie domeny (przechowywanie rekordów i zasobów związanych z obsługiwaną strefą) oraz udzielania odpowiedzi na kwerendy (zapytania) pochodzące od klientów DNS. W systemie DNS wyróżnić możemy dwa główne typy serwerów:</p> <p style="padding-left: 4em;"><strong>serwery domeny głównej</strong> (ang. root servers) - są to serwery obsługujące domeny najwyższego poziomu (TLD – top level domains) - znajdują się one na samym szczycie hierarchii modelu. Aktualnie na świecie funkcjonuje 13 serwerów domeny głównej. Serwery te określane są również jako <strong>root-servers</strong>, nazwy ich zostały zdefiniowane od <strong>a.root-servers.net</strong> do <strong>m.root-servers.net</strong>.</p> <p>&nbsp;</p> <table border="1" style="margin-left: auto; margin-right: auto; width: 698px; height: 661px;" cellspacing="1" cellpadding="1"> <tbody> <tr> <td style="text-align: center;"> <p><strong>Nazwa hosta</strong></p> </td> <td style="text-align: center;"> <p><strong>Adres IPv4/IPv6</strong></p> </td> <td style="text-align: center;"> <p><strong>Zarządca</strong></p> </td> </tr> <tr> <td style="text-align: center;"> <p>a.root-servers.net</p> </td> <td style="text-align: center;"> <p>198.41.0.4, 2001:503:ba3e::2:30</p> </td> <td style="text-align: center;"> <p>VeriSign, Inc.</p> </td> </tr> <tr> <td style="text-align: center;"> <p>b.root-servers.net</p> </td> <td style="text-align: center;"> <p>192.228.79.201, 2001:500:84::b</p> </td> <td style="text-align: center;"> <p>University of Southern California (ISI)</p> </td> </tr> <tr> <td style="text-align: center;"> <p>c.root-servers.net</p> </td> <td style="text-align: center;"> <p>192.33.4.12, 2001:500:2::c</p> </td> <td style="text-align: center;"> <p>Cogent Communications</p> </td> </tr> <tr> <td style="text-align: center;"> <p>d.root-servers.net</p> </td> <td style="text-align: center;"> <p>199.7.91.13, 2001:500:2d::d</p> </td> <td style="text-align: center;"> <p>University of Maryland</p> </td> </tr> <tr> <td style="text-align: center;"> <p>e.root-servers.net</p> </td> <td style="text-align: center;"> <p>192.203.230.10, 2001:500:a8::e</p> </td> <td style="text-align: center;"> <p>NASA (Ames Research Center)</p> </td> </tr> <tr> <td style="text-align: center;"> <p>f.root-servers.net</p> </td> <td style="text-align: center;"> <p>192.5.5.241, 2001:500:2f::f</p> </td> <td style="text-align: center;"> <p>Internet Systems Consortium, Inc.</p> </td> </tr> <tr> <td style="text-align: center;"> <p>g.root-servers.net</p> </td> <td style="text-align: center;"> <p>192.112.36.4, 2001:500:12::d0d</p> </td> <td style="text-align: center;"> <p>US Department of Defense (NIC)</p> </td> </tr> <tr> <td style="text-align: center;"> <p>h.root-servers.net</p> </td> <td style="text-align: center;"> <p>198.97.190.53, 2001:500:1::53</p> </td> <td style="text-align: center;"> <p>US Army (Research Lab)</p> </td> </tr> <tr> <td style="text-align: center;"> <p>i.root-servers.net</p> </td> <td style="text-align: center;"> <p>192.36.148.17, 2001:7fe::53</p> </td> <td style="text-align: center;"> <p>Netnod</p> </td> </tr> <tr> <td style="text-align: center;"> <p>j.root-servers.net</p> </td> <td style="text-align: center;"> <p>192.58.128.30, 2001:503:c27::2:30</p> </td> <td style="text-align: center;"> <p>VeriSign, Inc.</p> </td> </tr> <tr> <td style="text-align: center;"> <p>k.root-servers.net</p> </td> <td style="text-align: center;"> <p>193.0.14.129, 2001:7fd::1</p> </td> <td style="text-align: center;"> <p>RIPE NCC</p> </td> </tr> <tr> <td style="text-align: center;"> <p>l.root-servers.net</p> </td> <td style="text-align: center;"> <p>199.7.83.42, 2001:500:9f::42</p> </td> <td style="text-align: center;"> <p>ICANN</p> </td> </tr> <tr> <td style="text-align: center;"> <p>m.root-servers.net</p> </td> <td style="text-align: center;"> <p>202.12.27.33, 2001:dc3::35</p> </td> <td style="text-align: center;"> <p>WIDE Project</p> </td> </tr> </tbody> </table> <p>&nbsp;</p> <p style="padding-left: 4em;">Ponieważ główne serwery DNS są podstawą działania Internetu i obsługują ogromną ilość zapytań pochodzących od klientów tak więc aby przyspieszyć działanie całego systemu zostały one skopiowane. Kopie głównych serwerów zostały rozmieszczone po całym świecie (posiadają te same adresy IP co serwery główne). Użytkownicy z reguły łączą się z najbliższym im serwerem. Aktualne rozmieszczenie serwerów DNS poznasz odwiedzając tą stronę: <a href="http://www.root-servers.org/" target="_blank" rel="noopener noreferrer">http://www.root-servers.org/</a></p> <p>&nbsp;</p> <p style="padding-left: 4em;"><strong>serwery autorytatywne</strong> (ang. authoritative servers) - są to serwery obsługujące daną domenę/strefę to one przechowują informację na temat rekordów znajdujących się w zarządzanej przez siebie strefie. Ponieważ usługa DNS jest usługą kluczową bez której dostęp do sieci jest znacznie utrudniony (ale nie niemożliwy) dobrą praktyką jest aby za obsługę każdej domeny odpowiadały dwa serwery DNS (zabezpieczenie w przypadku awarii jednego z serwerów).</p> <p>&nbsp;</p> <p style="padding-left: 2em;"><strong>klienci</strong> - aplikacje, które łączą się z serwerem DNS celem uzyskania informacji o przechowywanych zasobach serwera DNS.</p> <p>&nbsp;</p> <p>Odpytanie serwera DNS ma na celu uzyskanie informacji na temat adresu IP poszukiwanego hosta (w przykładach przedstawionych poniżej szukamy adresu IP komputera <strong>komp02.abc.pl</strong>).</p> <p>&nbsp;</p> <p>Serwer DNS aby wykonać odwzorowanie <strong>nazwa domenowa = adres IP</strong> może do tego celu wykorzystać dwa rodzaje zapytań DNS – <strong>iteracyjne</strong> oraz <strong>rekurencyjne</strong>. Zasadę działania zapytania <strong>iteracyjnego</strong> ilustruje poniższy rysunek:</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/dns/image1.png" alt="image1" width="700" height="308" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <ol> <li>Jeśli dany klient nie posiada odwzorowania buduje zapytanie, które następnie wysyła do serwera DNS (w jednym komunikacie do serwera może być wiele zapytań) - <strong>Jaki jest adres IP komputera o nazwie komp02.abc.com?</strong></li> <li>Lokalny serwer DNS również nie potrafi odpowiedzieć na pytanie hosta <strong>komp01.opole.firma.pl</strong> dlatego zapytanie o adres poszukiwanego hosta wysyła w kierunku serwera <strong>root</strong> - <strong>Jaki jest adres IP komputera o nazwie komp02.abc.com?</strong></li> <li>Serwer <strong>root</strong> odpowiada - <strong>Nie wiem, ale zapytaj serwer DNS odpowiedzialny za obsługę domeny com</strong>.</li> <li>Zapytanie zostaje wysłane w kierunku serwera DNS <strong>com</strong> - <strong>Jaki jest adres IP komputera o nazwie komp02.abc.com?</strong></li> <li>Serwer <strong>com</strong> odpowiada - <strong>Nie wiem, ale zapytaj serwer domeny abc.com.</strong></li> <li>Zapytanie zostaje wysłane w kierunku serwera DNS <strong>abc.com</strong> - <strong>Jaki jest adres IP komputera o nazwie komp02.abc.com?</strong></li> <li>Serwer <strong>abc.com</strong> odsyła odpowiedź - <strong>Adres IP komputera komp02.abc.com to 1.2.3.4</strong></li> <li>Serwer DNS odsyła odpowiedź klientowi - <strong>Adres IP komputera komp02.abc.com to 1.2.3.4</strong></li> </ol> <p>W tym modelu lokalny serwer DNS w imieniu klienta odpytuje wszystkie serwery DNS wysyłając zapytania do innych serwerów DNS tak długo aż uzyska odpowiedź na poszukiwane pytanie. Uzyskana odpowiedź zostaje odesłana klientowi, który pytanie zadał.</p> <p>&nbsp;</p> <p>Zasada działania zapytania rekurencyjnego została przedstawiona poniżej:</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/dns/image2.png" alt="image2" width="700" height="308" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <ol> <li>Host chcąc poznać adres komputera <strong>komp02.abc.com</strong> wysyła zapytanie do lokalnego serwera DNS - <strong>Jaki jest adres IP komputera o nazwie komp02.abc.com? </strong></li> <li>Serwer DNS na tak postawione pytanie nie może udzielić odpowiedzi dlatego zapytanie zostaje powielone i wysłane do kolejnego serwera DNS będącego wyżej w hierarchii.</li> <li>Serwer DNS do którego trafia zapytanie również nie jest w stanie udzielić odpowiedzi. Komunikat zostaje przesłany do kolejnego serwera DNS.</li> <li>Powielony komunikat zostaje przekazany do serwera <strong>root</strong>.</li> <li>Serwer <strong>root</strong> nie może udzielić odpowiedzi. Ponieważ poszukiwany adres IP znajduje się w domenie <strong>com</strong> - w kroku następnym zapytanie zostaje skierowane do niego.</li> <li>Główny serwer DNS obsługujący przestrzeń nazw domen <strong>com</strong> nie zna odpowiedzi - pytanie zostaje wysłane w kierunku serwera DNS <strong>abc.com</strong></li> <li>Ponieważ poszukiwany host należy do domeny <strong>abc.com</strong> serwer DNS obsługujący tę strefę w swojej bazie odnajduje adres IP poszukiwanego hosta. Adres IP komputera <strong>komp02.abc.com</strong> to <strong>1.2.3.4</strong></li> <li>Odpowiedź zostaje przekazana do serwera DNS strefy <strong>com</strong>. -<strong> Adres IP komputera komp02.abc.com to 1.2.3.4</strong></li> <li>Serwer DNS informację przekazuje dalej - <strong>Adres IP komputera komp02.abc.com to 1.2.3.4</strong></li> <li>Serwer DNS informację przekazuje dalej - <strong>Adres IP komputera komp02.abc.com to 1.2.3.4</strong></li> <li>Serwer DNS informację przekazuje dalej - <strong>Adres IP komputera komp02.abc.com to 1.2.3.4</strong></li> <li>Lokalny serwer DNS odsyła odpowiedź do hosta, który wysłał zapytanie - <strong>Adres IP komputera komp02.abc.com to 1.2.3.4</strong> Host poznaje adres IP komputera <strong>komp02.abc.com</strong> - rozpoczyna się wymiana danych pomiędzy nimi.</li> </ol> <p>&nbsp;</p> <p>Przedstawione schematy ukazują jedynie koncepcję zapytań prowadzonych przez serwery DNS, gdyż w rzeczywistości serwery DNS potrafią w celu wykonania odwzorowywania łączyć obydwa rodzaje zapytań.</p> <p>&nbsp;</p> <p>System DNS oprócz odpytania serwera pod kątem dopasowania nazwy komputera z jego adresem IP umożliwia wykonywanie zapytań odwrotnych, znajdujących nazwę komputera o znanym adresie IP.</p> <p>&nbsp;</p> <p>Komunikaty DNS używane podczas wymiany informacji (zapytania, odpowiedzi, transfer strefy) mają ściśle ustalony format. Przykład takiego komunikatu został pokazany na rysunku poniżej.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/dns/image3.png" alt="image3" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>W pakiecie DNS można wyróżnić następujące pola:</p> <p>&nbsp;</p> <p style="padding-left: 2em;"><strong>Identyfikator DNS</strong> - dane zawarte w tym polu są określone przez klienta i zwracane do niego w niezmienionej formie. Pole te umożliwia powiązanie zapytania DNS z odpowiedzią na nie.</p> <p>&nbsp;</p> <p style="padding-left: 2em;"><strong>Żądanie/odpowiedź (QR)</strong> - pole określa rodzaj pakietu: żądanie (wartość 0) lub odpowiedź DNS (wartość 1).</p> <p>&nbsp;</p> <p style="padding-left: 2em;"><strong>Kod operacji (OpCODE)</strong> - pole definiuje typ użytego zapytania zawartego w pakiecie. Wartość pola przyjmuje 0 podczas wysyłania standardowego zapytania bądź odpowiedzi na to zapytanie. Wartości od 1 do 3 są nieużywane natomiast 4 oznacza powiadomienie zaś 5 aktualizacja.</p> <p>&nbsp;</p> <p style="padding-left: 2em;"><strong>Odpowiedź autorytatywna (AA)</strong> - odpowiedź pochodzi z autorytatywnego serwera nazw a nie z bufora.</p> <p>&nbsp;</p> <p style="padding-left: 2em;"><strong>Obcięcie (TC) </strong>- ustawienie bitu tego pola oznacza skrócenie odpowiedzi ze względu na przekroczenie rozmiaru datagramu - informacja zajmuje więcej niż 512 bajtów (dotyczy protokołu UDP).</p> <p>&nbsp;</p> <p style="padding-left: 2em;"><strong>Żądanie rekurencji (RD)</strong> - ustawienie bitu w zapytaniu, wskazuje, że klient DNS żąda wykonania zapytania rekurencyjnego w sytuacji w której serwer DNS nie będzie zawierał żądanych informacji. Brak ustawienia bitu i brak możliwości odesłania odpowiedzi przez serwer powoduje wysłanie listy innych serwerów nazw, które mogą zostać użyte w procesie odwzorowywania. Gdy klient otrzyma taka odpowiedź może wykorzystać otrzymane informację w celu budowania kolejnych zapytań.</p> <p>&nbsp;</p> <p style="padding-left: 2em;"><strong>Rekurencja jest dostępna (RA)</strong> - znacznik ustawiony w odpowiedzi informuje o możliwości wykorzystania przez serwer zapytań rekurencyjnych.</p> <p>&nbsp;</p> <p style="padding-left: 2em;"><strong>Zarezerwowane (Z)</strong> - pole przyjmuje wartość 0, pole przeznaczone do wykorzystania w przyszłości.</p> <p>&nbsp;</p> <p style="padding-left: 2em;"><strong>Dane autentyczne (AD)</strong> - ustawiona wartość 1 oznacza uwierzytelnienie przekazywanych informacji.</p> <p>&nbsp;</p> <p style="padding-left: 2em;"><strong>Sprawdzanie wyłączone (CD)</strong> - wyłączenie mechanizmu weryfikacji zabezpieczeń.</p> <p>&nbsp;</p> <p style="padding-left: 2em;"><strong>Kod odpowiedzi (RCode)</strong> - pole wykorzystywane w celu wskazania istnienia ewentualnych błędów. Najczęstsze wartości jakie może przyjąć to pole zostały przedstawione poniżej:</p> <p style="padding-left: 6em;">0 - NoError - brak błędu,</p> <p style="padding-left: 6em;">1 - FormErr - interpretacja zapytania zakończona niepowodzeniem,</p> <p style="padding-left: 6em;">2 - ServFail - błąd po stronie serwera, niepowodzenie w procesie przetwarzanie zapytania,</p> <p style="padding-left: 6em;">3 - NXDomain - wskazana domena nie istnieje,</p> <p style="padding-left: 6em;">4 - NotImp - typ żądania nieobsługiwane przez serwer,</p> <p style="padding-left: 6em;">5 - Refused - żądanie odrzucone, brak wysłania odpowiedzi,</p> <p style="padding-left: 6em;">9 - NotAuth - brak autoryzacji serwera w strefie,</p> <p style="padding-left: 6em;">10 - NotZone - nazwa nie należy do strefy.</p> <p>&nbsp;</p> <p style="padding-left: 2em;"><strong>Liczba zapytań</strong> <strong>(QDCOUNT)</strong> - liczba wpisów w sekcji zapytań.</p> <p>&nbsp;</p> <p style="padding-left: 2em;"><strong>Liczba odpowiedzi (ANCOUNT)</strong> - liczba rekordów w sekcji odpowiedzi.</p> <p>&nbsp;</p> <p style="padding-left: 2em;"><strong>Liczba rekordów serwera</strong> <strong>(NSCOUNT)</strong> - liczba rekordów zasobów w sekcji autorytatywnej.</p> <p>&nbsp;</p> <p style="padding-left: 2em;"><strong>Liczba rekordów dodatkowych</strong> <strong>(ARCOUNT)</strong> - liczba rekordów, które pochodzą z innych źródeł.</p> <p style="padding-left: 2em;">Dynamiczne aktualizacje DNS (ang. DNS Update) przenoszą pola o nazwach ZOCOUNT, PRCOUNT, UPCOUNT oraz ADCOUNT.</p> <p>&nbsp;</p> <p style="padding-left: 2em;"><strong>Sekcja zapytań </strong>- sekcja zawierająca zapytanie (sekcja o zmiennej wielkości).</p> <p>&nbsp;</p> <p style="padding-left: 2em;"><strong>Sekcja odpowiedzi</strong> - sekcja zawierająca rekordy danych będący odpowiedzią na otrzymane przez serwer zapytania (sekcja o zmiennej wielkości).</p> <p>&nbsp;</p> <p style="padding-left: 2em;"><strong>Sekcja autorytatywna</strong> - informacja o innych autorytatywnych serwerach, które mogą być wykorzystane w procesie określania nazw (sekcja o zmiennej wielkości).</p> <p>&nbsp;</p> <p style="padding-left: 2em;"><strong>Sekcja informacji dodatkowych</strong> - informacje dodatkowe związane z otrzymanymi zapytaniami.</p> <p>&nbsp;</p> <p>Wymiana pakietów w komunikacji DNS odbywa się z wykorzystaniem protokołu UDP (standardowe zapytania) ale także protokołu TCP (wymiana informacji pomiędzy serwerami DNS tzw. transfer strefy). W obu przypadkach wykorzystywany jest port o numerze 53.</p> <p>&nbsp;</p> <p>Datagram UDP/IPv4 (ten najczęściej wykorzystywany) został pokazany na rysunku poniżej.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/dns/image4.png" alt="image4" width="700" height="234" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Jeśli w danej strefie obsługa zapytań jest realizowana przez dwa serwery DNS komunikacji pomiędzy nimi odbywa się z wykorzystaniem protokołu TCP raz ze względu na ilość przesyłanych danych a dwa, że konieczne jest zachowanie pewności przesyłu tych danych. Transfer strefy pomiędzy serwerami DNS jest wykonywany w celu synchronizacji danych tak by oba serwery nazw obsługujące strefę posiadały jednolite dane.</p> <p>&nbsp;</p> <p>Do tematu jeszcze powrócimy gdy zaczniemy analizować przechwycone pakiety.</p> <p>&nbsp;</p> <p>Rekordy zasobów DNS zawierają informacje związane z domeną i mogą być pobierane oraz wykorzystywane przez klientów DNS. Każdy serwer DNS obsługuje te rekordy przestrzeni nazw DNS, które są dla niego autorytatywne. Każdy administrator systemu DNS odpowiedzialny jest za poprawność informacji zawartych, w strefie którą zarządza.</p> <p>&nbsp;</p> <p>W wspomnianych dokumentach RFC 1034 i 1035 oraz późniejszych został określone możliwe do przechowywania typy zasobów. Większość typów rekordów praktycznie nie jest wykorzystywana choć nadal w pełni wspierana. Do tych najważniejszych rekordów można zaliczyć następujące:</p> <p>&nbsp;</p> <p style="padding-left: 4em;"><strong>rekord A</strong> lub <strong>rekord adresu IPv4</strong> (ang. address record) mapuje nazwę domeny DNS na jej 32-bitowy adres IPv4. Jest rekordem wyszukiwania w przód.</p> <p style="padding-left: 4em;"><strong>rekord AAAA</strong> lub <strong>rekord adresu IPv6</strong> (ang. IPv6 address record) mapuje nazwę domeny DNS na jej 128 bitowy adres IPv6. Rekord AAAA podobnie jak rekord A jest rekordem wyszukiwania w przód.</p> <p style="padding-left: 4em;"><strong>rekord CNAME</strong> lub <strong>rekord nazwy kanonicznej</strong> (ang. canonical name record) ustanawia alias nazwy domeny czyli pozwala na użycie kilku rekordów zasobów odnoszących się do jednego hosta.</p> <p style="padding-left: 4em;"><strong>rekord MX</strong> lub <strong>rekord wymiany poczty</strong> (ang. mail exchange record) mapuje nazwę domeny DNS na nazwę serwera mailowego, obsługującego pocztę dla danej domeny. Rekordów MX w danej strefie może być kilka, różnią się one priorytetem. W pierwszej kolejności wybierane są te z niższym priorytetem - serwer z wyższym priorytetem jest wybierany w sytuacji w której serwer do którego został przypisany priorytet niższy nie działa.</p> <p style="padding-left: 4em;"><strong>rekord PTR</strong> lub <strong>rekord wskaźnika</strong> (ang. pointer record) mapuje adres IPv4 na nazwę kanoniczną hosta. Rekord PTR w przeciwieństwie do np. rekordów typu A bądź AAAA jest rekordem wyszukiwania wstecznego, który łączy adres IP z nazwę hosta. Rekordy PTR mogą mieć postać adresów IPv4 lub IPv6.</p> <p style="padding-left: 4em;"><strong>rekord NS</strong> lub <strong>rekord serwera nazw</strong> (ang. name server record) mapuje oraz identyfikuje serwer DNS autorytatywny dla danej domeny.</p> <p style="padding-left: 4em;"><strong>rekord SOA</strong> (ang. start of authority record) ustala serwer DNS dostarczający autorytatywne informacje o domenie internetowej (adresy serwerów nazw, parametry czasowe transferu stref czy numer konfiguracji).</p> <p style="padding-left: 4em;"><strong>rekord SRV</strong> lub <strong>rekord usługi</strong> (ang. service record) pozwala na zawarcie dodatkowych informacji dotyczących lokalizacji danej usługi, którą udostępnia serwer wskazywany przez adres DNS.</p> <p style="padding-left: 4em;"><strong>TXT</strong> - rekord ten pozwala dołączyć dowolny tekst do rekordu DNS.</p> <p>&nbsp;</p> <p>Proces rozpoznawania nazw przez klienta DNS schematycznie został przedstawiony na rysunku poniżej.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/dns/image5.png" alt="image5" width="700" height="346" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Jak można zauważyć w pierwszym kroku klient poszukiwaną informację próbuje zdobyć sam. W tym celu sięga do informacji zapisanych w pliku <strong>HOSTS</strong>, którego zawartość jest kopiowana do pamięci podręcznej.</p> <p>&nbsp;</p> <p>Plik <strong>HOSTS</strong> jest plikiem tekstowym zawierającym w każdej linii adres IP i jedną lub więcej nazw domenowych danego hosta (oddzielone od siebie spacjami lub tabulatorami). W systemie Windows lokalizacja tego pliku jest następująca: <strong>%SystemRoot%\system32\drivers\etc\hosts</strong> Przykładowy plik HOSTS został pokazany na rysunku poniżej.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/dns/image6.png" alt="image6" width="700" height="422" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>W pamięci podręcznej również znajdują się rozwiązane kwerendy DNS uzyskane w odpowiedziach na poprzednie zapytania. Jeśli poszukiwana nazwa hosta zostaje skojarzona z adresem IP cały proces się kończy.</p> <p>&nbsp;</p> <p>W czasie procesu rekursji lub iteracji serwery DNS przetwarzają kwerendy w imieniu klientów i równocześnie gromadzą zdobyte informacje o przetwarzanym obszarze nazw DNS. Te informacje w kolejnym kroku umieszczane są w pamięci podręcznej celem późniejszego wykorzystania.</p> <p>&nbsp;</p> <p>Dzięki zapisu informacji o rozwiązanych kwerendach serwer/host w przypadku wystąpienia ponownego zapytania, które miało miejsce wcześniej nie musi wykonywać procesu rozwiązywania nazwy, gdyż potrzebna informacja jest już dla niego dostępna. Głównym zadaniem użycia bufora jest więc zmniejszenie ruchu w sieci związanego z mechanizmem DNS.</p> <p>&nbsp;</p> <p>Kiedy informacja trafia do bufora jest jej przypisywana wartość czasu wygaśnięcia (TTL). Dopóki nie upłynie czas TTL buforowanych kwerend, dany serwer DNS może ponownie wykorzystywać zapisane rekordy do udzielania odpowiedzi klientom na przysyłane przez klientów zapytania odpowiadające tym rekordom.</p> <p>&nbsp;</p> <p>W sytuacji kiedy host w sposób lokalny nie potrafi znaleźć nazwy hosta proces rozwiązywania jest kontynuowany przez klienta poprzez wysłanie zapytania do serwera DNS. Po otrzymaniu pytania serwer DNS podobnie jak klient w pierwszej kolejności sprawdza czy może na nie odpowiedzieć na podstawie informacji zawartych w swoim lokalnym buforze jeśli tak do klienta jest odsyłana odpowiedź.</p> <p>&nbsp;</p> <p>Jeśli nazwa poszukiwanego hosta jest zgodna z rekordem zasobu zarządzanej strefy (bądź stref), serwer odpowiada autorytatywnie, wykorzystując informacje uzyskane z zasobów strefy.</p> <p>&nbsp;</p> <p>Serwer DNS, który posiada pełną informację o przestrzeni nazw DNS jest określany mianem serwera autoratywnego dla tej części przestrzeni nazw i to on jest podstawowym magazynem strefy. Strefa zaś zawiera rekordy zasobów, które mogą należeć do jednej lub więcej domen DNS.</p> <p>&nbsp;</p> <p>Jeśli wszystkie przedstawione wyżej sposoby rozwiązania nazwy (brak informacji w buforze hosta, serwera DNS oraz wśród informacji strefy), okażą się nieskuteczne proces wykonywania kwerendy jest kontynuowany z wykorzystaniem zewnętrznych serwerów DNS (użycie zapytań DNS – iteracyjne oraz rekurencyjne).</p> <p>&nbsp;</p> <p>Wyróżnić możemy cztery typy stref DNS (w niektórych źródłach znajdziesz informację o trzech):</p> <p>&nbsp;</p> <p style="padding-left: 4em;"><strong>Strefa podstawowa</strong> - strefa tego typu jest niezbędna do funkcjonowania mechanizmu DNS oraz do prawidłowego rozpoznania nazw domen. Przechowuje ona główną kopię strefy i informacje w niej zawarte mogą być replikowane do stref pomocniczych. Strefa podstawowa jest zapisana na serwerze DNS, który jest serwerem autorytatywnym dla strefy.</p> <p style="padding-left: 4em;"><strong>Strefa pomocnicza</strong> - zawiera kopię tylko do odczytu informacji o strefie, czyli obejmuje ona wszystkie informacje zawarte w strefie podstawowej. Informacje w niej zapisane są uzyskiwane za pomocą replikacji z wykorzystaniem mechanizmu transferu strefy. Wykorzystanie stref tego typu zwiększa wydajność (zapytania rozkładają się pomiędzy.</p> <p style="padding-left: 4em;"><strong>Strefa skrótowa</strong> (czasem też zwana strefą wejściową) zawiera jedynie informacje o rekordach zasobów (SOA, NS), które są niezbędne do zidentyfikowania autorytatywnych serwerów DNS. Strefy tego typu wskazują, gdzie można znaleźć pełną informację o strefie.</p> <p style="padding-left: 4em;"><strong>Zintegrowana z Active Directory</strong> - ten typ strefy tak naprawdę jest strefą podstawową tylko w przeciwieństwie do tradycyjnej strefy podstawowej, która jest przechowywana w pliku lokalnym jest ona wykorzystywana w środowisku opartym o usługę Active Directory a jej replikacja jest wykonywana przy wykorzystaniu mechanizmów tej usługi.</p> <p>&nbsp;</p> <p>Część teoretyczną z grubsza mamy omówioną choć celem uzupełnienia do pewnych zagadnień wrócimy.</p> <p>&nbsp;</p> <p>Topologia naszej ćwiczebnej sieci w oparciu o którą zostaną omówione pakiety DNS została zaprezentowana na schemacie poniżej:</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/dns/image7.png" alt="image7" width="700" height="576" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Polecenie poniżej zostało wydane na komputerze XXX i jak widać w cachu znajduje się tylko jeden wpis wiążący nazwę WinServ2012A z adresem IP 10.0.0.10 (bufor pamięci DNS zawierający odwzorowania nazw domenowych i odpowiadających im adresów IP poznamy wydając polecenie: <strong>ipconfig /displaydns</strong>).</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/dns/image8.png" alt="image8" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Prześledźmy zatem wymianę pakietów DNS jaka zachodzi w przypadku rozwiązywania nazw. Z hosta XXX wykonamy test ping w kierunku hosta YYY. Komputer nie zna adresu IP hosta YYY tak więc w pierwszej kolejności zostanie przeprowadzona komunikacja z serwerem DNS w celu ustalenia adresu IP komputera YYY.</p> <p>&nbsp;</p> <p>Jak już wiesz Czytelniku cała funkcjonalność systemu DNS opiera się na modelu zapytania i odpowiedzi. Host, który chce dokonać powiązania danego adresu IP z jego nazwą domenową buduje i wysyła do serwera DNS zapytanie, zaś zadaniem serwera DNS jest znalezienie odpowiedzi na pytanie hosta i jej odesłanie.</p> <p>&nbsp;</p> <p>Proces powiązania adresu IP z nazwą hosta może wymagać wysłania wielu pakietów lecz w najprostszej postaci wystarczą dwa. Prześledźmy zatem jak wygląda wymiana pakietów pomiędzy komputerami właśnie w tej najprostszej sytuacji.</p> <p>&nbsp;</p> <p>Na rysunku poniżej przedstawiono przechwycony pakiet z zapytaniem DNS, które zostało wysłane przez hosta XXX o adresie 172.16.10 do serwera o adresie 10.0.0.10 (punkt 1). Przedstawiony pakiet jest zapytaniem DNS a do jego wysłania został użyty protokół UDP w powiązaniu z portem o numerze 53 (domyślny port usługi DNS) - punkt 2.</p> <p>&nbsp;</p> <p>Pakiet jest pojedynczym zapytaniem wysłanym w celu identyfikacji adresu IP hosta yyy.firma.local (ponieważ komputery są częścią domeny firma.local człon ten został dodany automatycznie). Zapytanie dotyczy adresu internetowego (IN) komputera (A) - punkt 3.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/dns/image9.png" alt="image9" width="700" height="686" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Odpowiedź na pytanie hosta została zaprezentowana na rysunku poniżej. Ponieważ oba komputery są w jednej wspólnej domenie serwer DNS nie musi odpytywać innych serwerów celem ustalenia adresu IP hosta YYY gdyż informację ta znajduje się w jego bazie (rekurencja w tym przypadku nie jest wykorzystywana). Odpowiedź zostaje udzielona hostowi - punkt 1. Rodzi się pytanie - Skąd wiemy, że przedstawiony pakiet jest odpowiedzią na zapytanie klienta? Łatwo to zweryfikować i łatwo powiązać zapytanie z odpowiedzią gdyż pakiet ten ma taki sam identyfikator jak zapytanie (w naszym scenariuszu 0x4c04) - porównując identyfikatory pakietów łatwo powiążemy pakiety zapytań z odpowiedziami na nie - punkt 2. Informacja o tym, że pakiet jest odpowiedzią możemy zweryfikować również po rozwinięciu sekcji <strong>Flags</strong> - punkt 3. Dodatkowa weryfikacja może nastąpić po analizie danych umieszczonych w sekcji <strong>Answers</strong> gdyż przedstawiony pakiet budowany jest w ten sposób, że zawiera on informację o otrzymanym zapytaniu jak i udzielonej odpowiedzi. Adres IP komputera YYY to 172.16.0.11 Host XXX uzyskując informację o adresie IP hosta YYY może rozpocząć z nim komunikację.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/dns/image10.png" alt="image10" width="700" height="678" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>W kolejnym przykładzie nadal będziemy bazować na pytaniu i odpowiedzi w ramach jednej domeny lecz przyjrzymy się sytuacji w której serwer DNS nie znajduje odpowiedzi na pytanie klienta.</p> <p>&nbsp;</p> <p>Przesłane zapytanie w budowie nie różni się od pakietu przedstawionego w poprzednim przykładzie. Jest tylko mała różnica - szukamy adresu IP hosta o nazwie AAA. Host taki oczywiście w naszej sieci nie istnieje.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/dns/image11.png" alt="image11" width="700" height="678" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Ponieważ nazwa szukanego hosta jest obsługiwana przez serwer DNS WinServ2012A, to tylko on jest władny by udzielić informację o adresie IP poszukiwanego komputera. Serwer DNS odsyła pakiet o nie odnalezieniu dopasowania.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/dns/image12.png" alt="image12" width="700" height="678" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Wydając na hoście XXX ponownie polecenie: <strong>ipconfig /displaydns</strong> możemy przejrzeć lokalny cache DNS hosta. Jak widać zostały w nim zapisane oba odwzorowania (jedno mapujące nazwę hosta YYY z adresem IP 172.16.0.11 oraz drugie informujące, że host o nazwie AAA nie istnieje) o które host ten pytał.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/dns/image13.png" alt="image13" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Urozmaicamy trochę Naszą sytuację i sprawdźmy jak przebiegnie wymiana komunikatów w sytuacji w której poszukiwany adres IP hosta będzie znajdował się w Internecie. Odpytajmy serwer DNS o adres IP hosta google.pl</p> <p>&nbsp;</p> <p>Do tej pory hosty mogły prowadzić tylko komunikację w ramach sieci LAN, zmieniamy trochę naszą topologię i hosty uzyskują dostęp do Internetu. Zostaje skonfigurowane łącze pomiędzy routerem a dostawcą Internetu. Konfiguracja routera oczywiście musi ulec modyfikacji (zostaje skonfigurowana zerowa trasa statyczna tak by wszystkie pakiety, które nie znajdują dopasowania mogły zostać nią przesłane oraz NAT) oraz serwer DNS zostaje skonfigurowany w ten sposób by zapytania DNS na które nie znajduje odpowiedzi przesyłał dalej (jak taką konfigurację wykonać opiszę w wpisie, który będzie poświęcony mechanizmowi DNS w kontekście Windows Server 2012). Serwerem DNS do którego będą trafiać zapytania to ogólnodostępny serwer DNS Google czyli host o adresie IP 8.8.8.8 Hostem zadającym pytanie jest komputer YYY.</p> <p>&nbsp;</p> <p>Od hosta YYY (IP 172.16.0.11) do serwera DNS (IP 10.0.0.10) trafia zapytanie - <strong>Jaki jest adres IP hosta google.pl?</strong> (punkt 1). Serwer DNS na tak postawione pytanie nie zna odpowiedzi gdyż poszukiwany host nie znajduje się w zarządzanej przez niego domenie. Zapytanie musi być przesłane do zewnętrznego serwera DNS a ponieważ możliwe jest wykonanie rekurencji (punkt 2) pakiet z pytaniem zostaje wysłany do serwera DNS o adresie 8.8.8.8</p> <p>&nbsp;</p> <p>Identyfikator pakietu przyjmuje wartość 0xa238 (punkt 3).</p> <p>&nbsp;</p> <p>Zrzut poniżej przedstawia przechwycony pakiet w komunikacji pomiędzy hostami 172.16.0.11 a 10.0.0.10</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/dns/image14.png" alt="image14" width="700" height="679" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Tak jak napisałem wyżej celem dokonania mapowania pakiet opuszcza lokalny serwer DNS i zostaje przekazany w kierunku zewnętrznego serwera DNS - punkt 1. Pakiet ten zawiera pytanie zadane przez hosta YYY - punkt 2.</p> <p>&nbsp;</p> <p>Identyfikatorem pakietu jest wartość: 0x14de - punkt 3.</p> <p>&nbsp;</p> <p>Zrzut poniżej przedstawia przechwycony pakiet w komunikacji pomiędzy hostami 10.0.0.10 a 8.8.8.8</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/dns/image15.png" alt="image15" width="700" height="678" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Ponieważ odpytywany serwer DNS należy do Google (punkt 1) a pytanie dotyczy hosta znajdującego się w tej domenie zostaje udzielona odpowiedź w postaci adresu IP poszukiwanego komputera (punkt 2). Pakiet jest odpowiedzią na wcześniejsze żądanie gdyż pakiet wysłanego zapytania i udzielonej odpowiedzi zawierają ten sam identyfikator (punkt 3).</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/dns/image16.png" alt="image16" width="700" height="678" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Lokalny serwer DNS zna już odpowiedź na pytanie hosta YYY tak więc udziela mu odpowiedzi (punkt 1) w postaci poszukiwanego adresu IP (punkt 2). I tak samo jak poprzednio pakiet pytania i odesłanej odpowiedzi powiążemy ze sobą za pomocą identyfikatora transakcji (punkt 3).</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/dns/image17.png" alt="image17" width="700" height="678" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Mam nadzieję, że przedstawione powyżej przykłady w dość jasny sposób tłumaczą wymianę pakietów jaka jest prowadzona w ramach mechanizmu DNS.</p> <p>&nbsp;</p> <p>Strefa DNS to przestrzeń nazw, którą może zarządzać jeden z serwerów DNS jednak w celu zapewnienia redundancji i wyeliminowania sytuacji w której serwer DNS na wskutek awarii jest nieosiągalny stosuje się zapasowy serwer DNS, który zawiera pełną kopię informacji danej strefy (kopia serwera głównego). Zastosowanie drugiego serwera ma jeszcze jedną zaletę gdyż ruch związany z zapytaniami jest rozkładany pomiędzy nimi. Aby kopie na obu serwerach były spójne i synchronizowane pomiędzy serwerami następuje tzw. <strong>transfer strefy DNS</strong>.</p> <p>&nbsp;</p> <p style="padding-left: 4em;"><strong>Przyrostowy transfer strefy (IXFR)</strong> - pomiędzy serwerami DNS zostaje przesłana tylko część informacji, która uległa zmianie bądź modyfikacji.</p> <p style="padding-left: 4em;"><strong>Pełny transfer strefy (AXFR)</strong> - pomiędzy serwerami DNS następuje przesłanie całej strefy.</p> <p>&nbsp;</p> <p>Aby przeanalizować jak pełny transfer strefy przebiega w praktyce należy zmodyfikować naszą topologię sieciową - dodajemy do niej dodatkowy serwer DNS WinServ2012B.</p> <p>&nbsp;</p> <p>Host YYY (IP 172.16.0.11) posłuży Nam w celu zbadania przebiegu przyrostowego transferu strefy.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/dns/image18.png" alt="image18" width="700" height="573" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Przykład przedstawiający pełny transfer strefy pomiędzy komputerami o adresach IP 10.0.0.10 o 10.0.0.11 został przedstawiony poniżej.</p> <p>&nbsp;</p> <p>Na hoście WinServ2012B została dodana rola serwera DNS (sposób konfiguracji w kontekście Windows Server zostanie opisany w oddzielnym wpisie), po jej instalacji komputer zostaje włączony w strukturę istniejącej sieci. Ponieważ dodany host pełni rolę zapasowego serwera DNS przy podłączaniu następuje proces pełnego transferu strefy z serwera głównego.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/dns/image19.png" alt="image19" width="700" height="649" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Analizując powyższy zrzut pierwsza rzecz, która powinna przykuć Twoją uwagę Czytelniku jest użyty protokół warstwy transportowej - nie jest to jak było do tej pory protokół UDP lecz TCP. Waga przesyłanych informacji jest zbyt ważna by zadanie to powierzyć protokołowi UDP (brak mechanizmów gwarantujących 100% pewność przesłanych danych) dlatego też proces transferu strefy odbywa się <strong>z wykorzystaniem protokołu TCP</strong>, który pomimo większego narzutu przesyłanych danych gwarantuje Nam pewność i niezawodność ich dostarczenia (punkt 1).</p> <p>&nbsp;</p> <p>Żądanie pełnego transferu strefy DNS to tak naprawdę standardowe zapytanie kierowane ku serwerowi DNS, ale zamiast prośby o rozwiązanie nazwy pojedynczego rekordu klient żąda otrzymanie wszystkich informacji dotyczących zarządzaną strefą. Serwer DNS otrzymuje rekord typu AXFR - punkt 2.</p> <p>&nbsp;</p> <p>Główny serwer DNS po otrzymaniu żądania transferu strefy odsyła stosowane informacje w kierunku klienta (punkt 1).</p> <p>&nbsp;</p> <p>Proces pełnego transferu strefy powoduje przekazanie informacji o wszystkich rekordach w ramach zarządzanej strefy DNS - punkt 2. Zapasowy serwer DNS posiada informację o całej strefie. W razie awarii serwera głównego host może przejąć jego rolę.</p> <p>&nbsp;</p> <p>Po zakończeniu całej wymiany informacji następuje eleganckie zakończenie sesji TCP (patrz pakiety od 142 do 145) - jeśli sposób działania protokołu TCP jest Ci obcy zapraszam do zapoznania się z wpisem: <a href="http://slow7.pl/sieci-komputerowe/item/121-co-w-sieci-siedzi-skanowanie-portow">Co w sieci siedzi. Skanowanie portów. </a></p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/dns/image20.png" alt="image20" width="700" height="649" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Przeglądając powyższe dane, które zostały dostarczone zapasowemu serwerowi DNS (nie było ich wiele, gdyż nasza strefa nie jest duża) szybko można dojść do wniosku (a nawet trzeba), że waga przesłanych informacji dla atakującego naszą sieć będzie stanowić prawdziwą kopalnię złota gdyż dzięki ich analizie można utworzyć mapę całej infrastruktury sieci. Dlatego też nie powinny dostać się one w niepowołane ręce. Sposób uzyskiwania wglądu do nich zależy od konfiguracji serwera DNS a nieprawidłowa bądź nierzetelna konfiguracja serwera może doprowadzić do sytuacji w której dostęp do informacji strefy (tak jak to zostało pokazane poniżej) będzie mógł uzyskać każdy.</p> <p>&nbsp;</p> <p>W przykładzie poniżej dzięki wykorzystaniu wbudowanego w systemie Windows narzędzia <strong>nslookup</strong> i po wydaniu dwóch poleceń do hosta XXX zostaje wykonany pełny transfer sieci. Po wywołaniu narzędzia domyślnym serwerem DNS jest host 10.0.0.10 (serwer ten został zdefiniowany w ustawieniach karty sieciowej) - punkt 1.</p> <p>&nbsp;</p> <p>Za pomocą polecenia: <strong>set type=any</strong> ustalamy zakres interesujących nas rekordów - punkt 2.</p> <p>&nbsp;</p> <p>Komenda: <strong>ls -d &lt;nazwa_domeny&gt;</strong> nakazuje przesłanie kopii strefy.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/dns/image21.png" alt="image21" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Poniżej zaprezentowano zrzut wymiany pakietów pomiędzy serwerem DNS (IP 10.0.0.10) a hostem XXX (IP 172.16.0.10). Jak widać przedstawiony pakiet odzwierciedla informację uzyskane dzięki narzędziu nslookup.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/dns/image22.png" alt="image22" width="700" height="373" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Przyrostowy transfer stref jest dodatkową funkcją protokołu DNS związaną z replikowaniem stref DNS. Głównym założeniem przyświecającym przy opracowywaniu tego standardu było zmniejszenie obciążeń łączy podczas prowadzonego procesu aktualizacji stref. Przed wprowadzeniem tego mechanizmu każda aktualizacja danych związana z przesłaniem rekordów bazy danej strefy wymagała wykonanie procesu pełnego transferu całej strefy (użycie w pakiecie flagi AXFR). W sytuacji, w której wykorzystywany jest przyrostowy transfer strefy (użycie w pakiecie flagi IXFR) serwer, który żąda przesłania informacji wykonuje kopię tych zmian strefy, które są niezbędne do synchronizacji jego kopii strefy ze źródłem. Przebieg procesu przyrostowego transferu strefy został przedstawiony poniżej (komunikacja pomiędzy dwoma serwerami DNS o adresach IP 10.0.0.11 oraz 10.0.0.10).</p> <p>&nbsp;</p> <p>Jak już wspomniałem w naszej ćwiczebnej topologii znajduje się host YYY (IP 172.16.0.11), rekord typu A łączący nazwę hosta YYY z adresem IP został utworzony na serwerze 10.0.0.10.</p> <p>&nbsp;</p> <p>Pomiędzy serwerami DNS (punkt 1) dochodzi do transferu strefy lecz w odróżnieniu od poprzedniej wymiany danych transfer ten jest wykonywany po przesłaniu pakietu z ustawioną flagą IXFR (punkt 2) nakazując tym samym przesłanie nowych rekordów bądź tych, które zostały poddane modyfikacji.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/dns/image23.png" alt="image23" width="700" height="373" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>W kolejnym pakiecie serwer DNS 10.0.0.10 (punkt 1) przesyła aktualizację strefy i jak widać poniżej znajduje się w nim informacja tylko o hoście YYY (punkt 2).</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/dns/image24.png" alt="image24" width="700" height="373" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>W tym wpisie starałem się przedstawić najważniejsze informację związane z działanie mechanizmu DNS. Wiesz już, jak przebiega proces rozpoznawania nazw w sieciach opartych o protokół TCP/IP oraz jak ważnym dla sprawnego funkcjonowania całego Internetu jest spójny mechanizm zarządzania nazwami komputerów i usług. W kolejnym wpisie temat rozwiniemy i zajmiemy się konfiguracją protokołu DNS w systemie Windows Server 2012.</p></div> Atak na warstwę 2 modelu ISO/OSI - preludium 2017-02-01T22:23:01+00:00 2017-02-01T22:23:01+00:00 http://slow7.pl/sieci-komputerowe/item/135-atak-na-warstwe-2-modelu-iso-osi-preludium pikolo [email protected] <div class="K2FeedImage"><img src="http://slow7.pl/media/k2/items/cache/be7685026070406a215779b242f1aa2e_S.jpg" alt="Atak na warstwę 2 modelu ISO/OSI - preludium" /></div><div class="K2FeedIntroText"><p>Switche tak jak i routery podatne są na wiele atak&oacute;w dlatego też większość technik zabezpieczania router&oacute;w ma zastosowanie r&oacute;wnież do switchy. Przełączniki jednak z natury swego działania i umiejscowienia dodatkowo narażone są na wiele innych atak&oacute;w, specyficznych dla tej grupy urządzeń.</p> </div><div class="K2FeedFullText"> <p>Sieć komputerowa aby działać musi być w stanie obronić się przed licznymi atakami m.in. takimi jak:</p> <ul> <li style="padding-left: 60px;">spoofowanie adres&oacute;w MAC,</li> <li style="padding-left: 60px;">ataki na STP,</li> <li style="padding-left: 60px;">ataki na CDP,</li> <li style="padding-left: 60px;">ataki na DHCP,</li> <li style="padding-left: 60px;">przepełnienie tablic adres&oacute;w MAC,</li> <li style="padding-left: 60px;">ataki typu LAN storm,</li> <li style="padding-left: 60px;">ataki na VLAN.</li> </ul> <p>&nbsp;</p> <p>W artykule tym oczywiście nie wszystkimi metodami przeprowadzania atak&oacute;w się zajmiemy lecz postaram opisać te najczęściej wykorzystywane wraz z metodami ich przeciwdziałania. Tak więc w pierwszej części wpisu opis jak dany atak zorganizować i przeprowadzić zaś w drugiej części wpisu obrona przed nimi.</p> <p>&nbsp;</p> <p>Artykuł ten skoncentruje się na zagrożeniach (i oczywiście sposobach ich zapobiegania) związanych z protokołem ARP, DHCP, atakiem przepełnienia tablicy adres&oacute;w MAC czy atakami typu LAN storm. Zaś te bardziej wyrafinowane jak atak na sieci VLAN czy STP opiszę w osobnej osłonie.</p> <p>&nbsp;</p> <p>Rozpoczynamy od opisu ataku ARP poisoning z wykorzystaniem narzędzi dostępnych w systemie Windows.</p> <p>&nbsp;</p> <p>Topologia sieciowa w kt&oacute;rej przeprowadzono symulację przedstawia się następująco.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image1.png" alt="image1" width="700" height="434" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Narzędzie, kt&oacute;re pozwoli nam na przeprowadzenie ataku to Cain&amp;Abel. Program standardowo wykorzystywany jest do odzyskiwania haseł (bądź ich łamania) ale ma w sobie zaszyty moduł odpowiedzialny za sniffing oraz za przeprowadzanie ataku zatrucia tablicy ARP. Do działania programu niezbędne jest zainstalowanie oprogramowania WinPcap.</p> <p>&nbsp;</p> <p>Po pobraniu i instalacji oprogramowania uruchamiamy narzędzie. W gł&oacute;wnym oknie aplikacji przechodzimy do karty <strong>Sniffer</strong> (punkt 1) a następnie wybieramy ikonę interfejsu sieciowego (punkt 2).</p> <p>&nbsp;</p> <p>W niekt&oacute;rych konfiguracjach zdarza się sytuacja w kt&oacute;rej wykorzystanie modułu sniffera uzależnione jest od wydania polecenia: <strong>netsh int ip set global taskoffload=disabled </strong>Jeśli zajdzie taka sytuacja zostaniemy powiadomieni o tym stosownym komunikatem. W razie wystąpienia opisywanego zdarzenia, należy uruchomić konsolę wiersza poleceń (z prawami administratora) i wydać wspomniane polecenie. Po wydaniu komendy ponownie uruchamiamy narzędzie Cain&amp;Abel.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image2.png" alt="image2" width="700" height="465" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Przy pierwszym uruchomieniu sniffera pierwszą opcję jaką musimy skonfigurować to wyb&oacute;r użytego interfejsu. W nowo otwartym oknie <strong>Configuration Dialog</strong> na karcie <strong>Sniffer</strong> definiujemy interfejs, kt&oacute;ry będzie wykorzystywany w procesie przechwytywania pakiet&oacute;w oraz zatruwania tablicy ARP. Konfigurację zatwierdzamy klikając na <strong>OK</strong>.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image3.png" alt="image3" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po zatwierdzeniu interfejsu kolejną czynnością jaką musimy wykonać jest wykonanie skanu sieci celem wykrycia aktywnych host&oacute;w. Skan przeprowadzamy wybierając ikonę <strong>plusa</strong>. Po wybraniu ikony w oknie <strong>MAC Address Scaner</strong> określamy opcje przeprowadzanego skanowania. Celem wykrycia wszystkich komputer&oacute;w znajdujących się w podsieci zaznaczamy: <strong>All hosts in my subnet</strong> Jeśli chcemy zdefiniować obszar adres&oacute;w IP co do kt&oacute;rych będzie przeprowadzane skanowanie wybieramy: <strong>Range</strong> a następnie określamy początkowy i końcowy adres IP.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image4.png" alt="image4" width="700" height="465" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Aby rozpocząć skan klikamy <strong>OK</strong> i rozpoczyna się proces odkrywania host&oacute;w. Lista aktywnych host&oacute;w zostanie wyświetlona w tabeli.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image5.png" alt="image5" width="700" height="465" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po wykryciu host&oacute;w przechodzimy do zakładki <strong>APR</strong> (lewy dolny r&oacute;g programu). Opcje zgromadzone na tej zakładce posłużą nam do zdefiniowania opcji ataku. Aby określić hosta co do kt&oacute;rego będzie przeprowadzany atak należy wybrać ikonę <strong>Plusa</strong> (ikona stanie się aktywna gdy wybierzemy gałąź <strong>ARP</strong> a następnie klikniemy w obszarze g&oacute;rnej części tabeli). Naszym oczom powinno ukazać się nowe okno <strong>New ARP Poison Routing</strong> Okno to zostało podzielone na dwie tabele. Lewa tabela służy do wyboru adresu MAC hosta, kt&oacute;rego ruch sieciowy chcemy przechwytywać prawa zaś odpowiedzialna jest za wybranie adresu MAC drugiego hosta, kt&oacute;ry prowadzi komunikację z celem - najczęściej jest to adres bramy (routera).</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image6.png" alt="image6" width="700" height="465" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>W scenariuszu założyliśmy przechwytywanie ruchu sieciowego pomiędzy hostem o adresie MAC AA-AA-AA-AA-AA-AA (ofiara) a routerem (adres MAC A0-C5-62-73-9A-50) tak więc w lewy panelu zaznaczamy adres MAC komputera ofiary zaś w prawymadres MAC routera (oczywiście możliwa jest sytuacja w kt&oacute;rej ruch sieciowy będzie przechwytywany pomiędzy dwoma hostami np. komputer-serwer). Po zdefiniowaniu host&oacute;w co do kt&oacute;rych będzie prowadzony proces przechwytywania pakiet&oacute;w klikamy <strong>OK</strong>.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image7.png" alt="image7" width="700" height="465" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Aby uruchomić atak wybieramy ikonę &bdquo;promieniowania&rdquo; - punkt 1. Status ataku pojawi się w g&oacute;rnej części tabeli (punkt 2) zaś informację o odbieranych pakietach znajdziemy w tabeli dolnej - punkt 3. Dodatkowo w lewej części okna przechwytywane pakiety są grupowane w zależności od typu wykrytego ruchu sieciowego (użyty protok&oacute;ł np. ruch związany z wykorzystaniem protokoł&oacute;w pocztowych).</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image8.png" alt="image8" width="700" height="465" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Tablica ARP hosta została zatruta, cały ruch generowany na komputerze ofiary zostaje w pierwszej kolejności wysłany w kierunku atakującego a następnie przekazany do miejsca przeznaczenia czyli do routera.</p> <p>&nbsp;</p> <p>Atak możemy obserwować analizując tablicę ARP hosta ofiary.</p> <p>&nbsp;</p> <p>Gdy atak ARP poisoning nie jest uaktywniony w tablicy ARP znajdujemy prawidłowe dowiązanie bramy (routera) z jej adresem MAC.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image9.png" alt="image9" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po uruchomieniu ataku adres MAC bramy zostaje zamieniony na adres MAC komputera przeprowadzającego atak. Atak zatrucia przeprowadzany jest z hosta o adresie MAC CC-CC-CC-CC-CC-CC tak więc w trakcie trwania ataku prawidłowy adres MAC bramy zostaje zastąpiony właśnie tym adresem.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image10.png" alt="image10" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Atak na tablicę ARP dodatkowo możemy obserwować podczas procesu przechwytywania pakiet&oacute;w.</p> <p>&nbsp;</p> <p>Analizując pole warstwy drugiej przechwyconego pakietu o numerze 67 dochodzimy do wniosku, że wszystko jest w porządku. W pakiecie zawarte są prawidłowe informacje powiązania adresu MAC routera z jego adresem IP - punkt 1</p> <p>&nbsp;</p> <p>Po przejściu do pakietu 72 można zauważyć zamianę adresu MAC routera na adres MAC komputera wykonującego atak - punkt 2.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image11.png" alt="image11" width="700" height="423" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Jednym z ciekawych narzędzi, kt&oacute;re możemy wykorzystać w systemie Windows jest aplikacja <strong>WinArpAttacker</strong>. Narzędzie te podobnie jak opisywany powyżej program Cain&amp;Abel umożliwia Nam przeprowadzenie ataku z wykorzystaniem protokołu ARP ale opr&oacute;cz opcji ataku są r&oacute;wnież dostępne takie, kt&oacute;re przed atakiem Nas uchronią - ale wszystko po kolei.</p> <p>&nbsp;</p> <p>Aby za pomocą narzędzia przeprowadzić atak po uruchomieniu jej z prawami administratora należy w pierwszej kolejności przeprowadzić skan sieci lecz aby to zadanie wykonać warto sprawdzić czy został wybrany prawidłowy interfejs sieciowy. W przypadku posiadania jednej karty sieciowej problem Nam odpada lecz gdy system korzysta z wielu interfejs&oacute;w ustawienie te należy skontrolować. Aby wybrać interfejs z menu wybieramy pozycję <strong>Options</strong> a następnie <strong>Adapter</strong>. W nowo otwartym oknie w sekcji <strong>Select a Network Device </strong>z rozwijanego menu wybieramy właściwy interfejs. Wyb&oacute;r oczywiście zatwierdzamy klawiszem <strong>OK</strong>.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image12.png" alt="image12" width="700" height="471" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po ustawieniu interfejsu przechodzimy do wspomnianego skanowania sieci. Scan sieci uruchomimy wybierając z dostępnych ikon pozycję <strong>Scan</strong>. Po przeprowadzeniu operacji odkrywania host&oacute;w dostępnych w atakowanej sieci ich lista pojawi się w oknie poniżej.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image13.png" alt="image13" width="700" height="438" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Przed uruchomieniem ataku wyłączamy ochronę tablicy ARP poprzez wybranie z dostępnych ikon przycisku <strong>Stop</strong> (do tematu tego wr&oacute;cimy w dalszej części wpisu poświęconej obronie przed atakiem z wykorzystaniem protokołu ARP) - punkt 1. Atak uruchomimy poprzez zaznaczenie interesującego nas hosta a następnie wybraniu ikony <strong>Attack</strong> wraz z opcją <strong>Sniff Gateway</strong>. Zaznaczenie opcji spowoduje rozpoczęcie ataku zatrucia tablicy ARP pomiędzy wybranym hostem a bramą. Aby prowadzić przechwytywanie pomiędzy dwoma wybranymi hostami z listy dostępnych host&oacute;w należy wybrać interesujące nas komputery a następnie z menu <strong>Attack</strong> wybrać opcję <strong>Sniff Hosts</strong>. Wybranie <strong>Sniff Lan</strong> spowoduje uruchomienie ataku w kontekście całej sieci LAN - co oznacza, że cały ruch sieciowy generowany przez wszystkie aktywne hosty będzie przechodził przez nasz komputer.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image14.png" alt="image14" width="700" height="438" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Atak zostaje uruchomiony a jego efekty możemy sprawdzić przeglądając tablicę ARP hosta 192.168.1.200 Jak widać poniżej (punkt 1) przed uruchomieniem ataku adres MAC bramy jest poprawnie skojarzony z jego adresem IP zaś po uruchomieniu ataku (punkt 2), adres MAC bramy wskazuje na hosta atakującego. Uruchomiony sniffer pakiet&oacute;w na hoście 192.168.1.210, kt&oacute;ry jest kontrolowany przez atakującego rejestruje test ping pomiędzy hostem ofiary a bramą co dowodzi, że atak zakończył się sukcesem.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image15.png" alt="image15" width="700" height="430" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Tak jak wspomniałem do programu będziemy wracać a tym czasem idziemy dalej.</p> <p>&nbsp;</p> <p>O wiele więcej narzędzi do przeprowadzenia ataku opartego o protok&oacute;ł ARP znajdziemy w systemie Linux a gdy chcesz je mieć wszystkie z automatu wybierz dystrybucję Kali bądź Backtrack.</p> <p>&nbsp;</p> <p>Topologia sieciowa użyta do opisania narzędzi pozostaje bez zmian, zmienia się system operacyjny atakującego oraz jego adres MAC z CC-CC-CC-CC-CC-CC na EE-EE-EE-EE-EE-EE. Po podłączeniu hosta pierwszą czynnością jaką powinniśmy wykonać jest wykonanie testu łączności. Test ping pomiędzy hostem atakującym (IP 192.168.1.200) jak i routerem (IP 192.168.1.1) kończy się sukcesem.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image16.png" alt="image16" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Pierwszym narzędziem (a tak właściwie trzecim) jakie wykorzystamy do przeprowadzenia ataku zatrucia tablicy ARP jest <strong>Ettercap</strong>. Jeśli go nie posiadamy to jego instalację przeprowadzimy za pomocą polecenia: <strong>apt-get install ettercap-graphical</strong></p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image17.png" alt="image17" width="700" height="219" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po instalacji narzędzie w trybie graficznym uruchamiamy poleceniem: <strong>ettercap -G</strong> (jeśli korzystamy z Linux Kali program odnajdziemy w sekcji: Sniffing @ Spoofing).</p> <p>&nbsp;</p> <p>Po uruchomieniu programu w g&oacute;rnym menu z sekcji <strong>Sniff</strong> wybieramy opcję <strong>Unified sniffing</strong>.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image18.png" alt="image18" width="700" height="450" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>W następnym kroku określamy interfejs, kt&oacute;ry zostanie użyty do przeprowadzenia ataku. W przypadku komputera posiadającego wiele kart sieciowych właściwy interfejs zidentyfikujesz wydając w konsoli polecenie: <strong>ifconfig</strong> W naszym scenariuszu został użyty</p> <p>interfejs: <strong>eth0</strong></p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image19.png" alt="image19" width="700" height="523" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po wstępnej konfiguracji narzędzia przechodzimy do skanu sieci. Proces skanowania jest niezbędny gdyż jego gł&oacute;wnym celem jest wykrycie w atakowanej sieci aktywnych host&oacute;w oraz wykonanie dopasowania adres IP - adres MAC. Aby przeprowadzić skanowanie z menu wybieramy opcję <strong>Hosts</strong> a następnie <strong>Scan for hosts</strong>.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image20.png" alt="image20" width="700" height="450" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Wybranie przedstawionych opcji spowoduje uruchomienie procesu skanowania sieci.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image21.png" alt="image21" width="700" height="450" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Skan jest przeprowadzany w ekspresowym tempie i już po chwili zostaniesz poinformowany o odnalezionej ilości działających host&oacute;w (w naszym przypadku jest ich 6).</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image22.png" alt="image22" width="700" height="450" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Adresy IP oraz powiązane z nimi adresy MAC poznamy wybierając z menu opcję <strong>Hosts</strong> a następnie <strong>Hosts list</strong>. Jak można zauważyć przeglądając poniższą listę odnajdziemy na niej komputer ofiary jak i router.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image23.png" alt="image22" width="700" height="450" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Przechodzimy do ataku i definiujemy nasze cele. Ponieważ dążymy do przechwycenia ruchu sieciowego pomiędzy routerem a hostem ofiary z listy wykrytych host&oacute;w zaznaczamy adres IP 192.168.1.1 (router) i wybieramy przycisk <strong>Add to Target 1</strong> (punkt 1) a następnie odszukujemy i zaznaczamy adres IP 192.168.1.200 (ofiara) i klikamy przycisk <strong>Add to Target 2 </strong>(punkt 2). Cele ataku zostały określone.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image24.png" alt="image23" width="700" height="450" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Aby przejrzeć bądź zmodyfikować listę cel&oacute;w z menu wybieramy <strong>Targets</strong> a po rozwinięciu listy klikamy na opcję <strong>Current Targets</strong>.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image25.png" alt="image25" width="700" height="451" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Aby rozpocząć atak z menu wybieramy <strong>Mitm</strong> i dalej <strong>Arp poisoning</strong>. W nowo otwartym oknie zaznaczamy opcję <strong>Sniff remote connections</strong>, zatwierdzenie ustawień przyciskiem <strong>OK</strong> rozpocznie atak.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image26.png" alt="image26" width="700" height="450" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>O rozpoczęciu ataku zostaniemy poinformowani stosownymi wpisami w gł&oacute;wnym oknie programu.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image27.png" alt="image27" width="700" height="450" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Aby mieć 100% pewność, że atak powi&oacute;dł się sprawdźmy tablicę ARP ofiary. Poniżej na zrzucie przedstawione zostało użycie polecenia sprawdzającego wpisy tablicy ARP: <strong>arp -a</strong> Punkt 1 obrazuje stan tablicy przed atakiem natomiast punkt 2 stan tablicy po ataku. Jak łatwo zauważyć zmianie uległ adres MAC powiązany z adresem IP bramy. Przed uruchomieniem ataku powiązanie jest jak najbardziej prawidłowe zaś w trakcie jego trwania adres MAC bramy zostaje zamieniony na adres MAC komputera atakującego.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image28.png" alt="image28" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Atak zakończył się powodzeniem.</p> <p>Aby przerwać atak z menu wybierz <strong>Mitm</strong> a następnie <strong>Stop mitm attack(s)</strong></p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image29.png" alt="image29" width="700" height="450" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Ettercap opr&oacute;cz trybu graficznego r&oacute;wnież oferuje Nam możliwość skorzystania z trybu pracy w konsoli (taki pseudo tryb graficzny). Przeprowadzenie ataku przy użyciu tego interfejsu przebiega w spos&oacute;b analogiczny jak w środowisku graficznym. Wywołanie tego trybu odbywa się za pomocą polecenia: <strong>ettercap -C</strong></p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image30.png" alt="image30" width="700" height="448" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Kolejne narzędzie jaki użyjemy do przeprowadzenia ataku zatrucia bufora ARP jest framework <strong>Metasploit</strong> a m&oacute;wiąc bardziej szczeg&oacute;łowo wykorzystamy jeden z dostępnych moduł&oacute;w o nazwie <strong>arp_poisoning</strong>.</p> <p>&nbsp;</p> <p>Rozpoczynamy od uruchomienia narzędzia poprzez wydanie polecenia: <strong>msfconsole</strong> (punkt 1). Wydanie komendy spowoduje uruchomienie frameworku, kt&oacute;rego zarządzanie odbywa się za pomocą osobnego zestawu poleceń przynależnych narzędziu.</p> <p>&nbsp;</p> <p>Uruchomienie modułu odpowiedzialnego za przeprowadzenie ataku ARP poisoning przeprowadzimy wydając polecenie: <strong>use/auxiliary/spoof/arp/arp_poisoning</strong> (punkt 2).</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image31.png" alt="image31" width="700" height="577" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po uruchomieniu modułu wydajemy polecenie: <strong>info</strong> aby poznać parametry jakie należy skonfigurować aby narzędzie mogło przeprowadzić skuteczny atak. Wśr&oacute;d obowiązkowych opcji jakie należy zdefiniować znajdują się:</p> <p style="margin-left: 30px;">1 - adres IP hosta, kt&oacute;rego ruch chcemy przechwytywać - <strong>set dhost &lt;adres_IP&gt;</strong>,</p> <p style="margin-left: 30px;">2 - interfejs, kt&oacute;ry posłuży do ataku - <strong>set interface &lt;identyfikator_interfejsu&gt;</strong> - w przedstawianym opisie został użyty interfejs bezprzewodowy tak byś Czytelniku miał świadomość, że i tego typu interfejsy sieciowe można wykorzystać w procesie przechwytywania pakiet&oacute;w. Adres MAC atakującego pomimo wykorzystania innego interfejsu nie ulega zmianie.,</p> <p style="margin-left: 30px;">3 - adres IP routera - <strong>set shost &lt;adres_IP&gt;</strong>.</p> <p>&nbsp;</p> <p>Dodatkowo aby obserwować działanie modułu został ustawiony parametr: <strong>set verbose true</strong> (punkt 4).</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image32.png" alt="image32" width="700" height="542" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Wszystkie niezbędne opcje zostały skonfigurowane czas przejść do uruchomienia ataku. Atak rozpoczniemy po wydaniu polecenia: <strong>exploit</strong> Wydanie polecenia spowoduje zatrucie tablicy ARP hosta 192.168.1.200</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image33.png" alt="image33" width="700" height="544" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Efekt przeprowadzanego ataku możemy zweryfikować sprawdzając tablicę ARP hosta 192.168.1.200 Jak widać poniżej adres MAC routera wskazuje na hosta o adresie MAC EE-EE-EE-EE-EE-EE co jak wiemy nie jest wartością prawidłową. Adres MAC EE-EE-EE-EE-EE-EE należy do atakującego.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image34.png" alt="image34" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>W przypadku użycia opisywanych narzędzi dostępnych w systemie Linux została wykonana tylko połowa roboty gdyż możemy przechwytywać wszystkie zapytania generowane przez ofiarę lecz dane te w żaden spos&oacute;b nie są przesyłane dalej. M&oacute;wiąc prościej trafiają one do atakującego i tylko do niego. Konsekwencją takiego stanu rzeczy jest to, że ofiara traci możliwość połączenia np. z Internetem. A nie do końca o to Nam chodziło. Poniżej polecenie ping wysłane przez ofiarę w kierunku witryny wp.pl i jak widać test ten kończy się niepowodzeniem.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image35.png" alt="image35" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Powodem zaistnienia takiej sytuacji jest wyłączona funkcja przekazywanie pakiet&oacute;w IP (IP forwarding). Tak więc naprawmy to i dajmy hostowi ofiary możliwość komunikacji.</p> <p>&nbsp;</p> <p>W pierwszym etapie za pomocą polecenia: <strong>sysctl net.ipv4.ip_forward</strong> sprawdzamy bieżący stan funkcji przekazywania pakiet&oacute;w (punkt 1). Zwr&oacute;coną wartością jest <strong>zero</strong>, kt&oacute;re oznacza wyłączenie mechanizmu. Aby pakiety prawidłowo mogły być przekazywane pomiędzy interfejsami należy wydać komendę: <strong>sysctl net.ipv4.ip_forward=1 </strong>bądź alternatywnie polecenie: <strong>echo 1 &gt; /proc/sys/net/ipv4/ip_forward</strong> (punkt 2). Ponowne sprawdzenie stanu przekazywania (punkt 3) zwraca wartość <strong>jeden</strong> - przekazywanie jest aktywne. Komendy te powodują tymczasowe włącznie funkcji, jeśli zależy nam na uaktywnieniu mechanizmu na stałe należy w pliku <strong>/etc/sysctl.conf</strong> dopisać linię: <strong>net.ipv4.ip_forward=1</strong></p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image36.png" alt="image36" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po wprowadzeniu zmian ofiara może prowadzić swobodną komunikację a my mamy możliwość jej rejestrowania. Tym razem test ping kończy się powodzeniem.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image37.png" alt="image37" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Efekt przeprowadzonego ataku możemy obserwować z wykorzystaniem narzędzia Wireshark. Jak można zaobserwować poniżej - pakiet ICMP trafia od ofiary (adres źr&oacute;dłowy MAC AA-AA-AA-AA-AA-AA) do atakującego (adres docelowy MAC EE-EE-EE-EE-EE-EE).</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image38.png" alt="image38" width="700" height="423" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>By następnie atakujący (adres źr&oacute;dłowy MAC EE-EE-EE-EE-EE-EE) przekazał go w kierunku routera (adres docelowy MAC A0-C5-62-73-9A-50).</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image39.png" alt="image39" width="700" height="423" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po ustaniu ataku wszystko wraca do normy w tablicy ARP ofiary widniej prawidłowy adres MAC routera.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image40.png" alt="image40" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>W systemie Linux do przeprowadzenia ataku ARP poisoning możemy r&oacute;wnież użyć narzędzia o nazwie <strong>arpspoof</strong>. Instalację narzędzia przeprowadzimy wydając polecenie: <strong>apt-get install dsniff</strong></p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image41.png" alt="image41" width="700" height="205" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Przechodzimy do ataku. Sprawdzenie tablicy ARP ofiary uwidacznia stan w kt&oacute;rym adres MAC jest poprawnie powiązany z adresem IP routera.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image42.png" alt="image42" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Aby rozpocząć zatrucie tablicy ARP należy wydać polecenie: <strong>arpspoof -i &lt;użyty_interfejs&gt; -t &lt;adres_IP_ofiary&gt; &lt;adres_IP_routera&gt;</strong> (ważna jest kolejność zdefiniowanych adres&oacute;w IP) po zatwierdzeniu Enterem rozpoczyna się atak.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image43.png" alt="image43" width="700" height="211" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Ponowne sprawdzenie tablicy ARP komputera ofiary ukazuje zmiany - adres MAC routera został zamieniony na adres MAC atakującego.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image44.png" alt="image44" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Aby ofiara mogła prowadzić swobodną komunikację nie zapomnij o włączeniu przekazywania pakiet&oacute;w IP (opis włączenia funkcji om&oacute;wiony wyżej).</p> <p>&nbsp;</p> <p>Nasza sieć opr&oacute;cz opisanego już zagrożenia związanego z protokołem ARP może być r&oacute;wnież narażona na ataki typu LAN Storm Attacks. Choć warto tu zauważyć, że sam administrator poprzez błędną konfigurację urządzeń (np. redundancja łączy pomiędzy przełącznikami - wykorzystanie protokołu STP) czy błędną implementację protokoł&oacute;w korzystających z pakiet&oacute;w typu broadcast taki atak może wywołać sam. Należy pamiętać, że przełączniki zawsze przekazują ruch typu broadcast (wykorzystywany np. przez takie protokoły jak ARP czy DHCP) na wszystkie porty dlatego też przypadłość ta może zostać wykorzystana do przeprowadzenia ataku DoS (pojawiające się pakiety zalewają całą sieć LAN marnując tym samym dostępne pasmo co w konsekwencji prowadzi do spadku wydajności całej sieci).</p> <p>&nbsp;</p> <p>Aby zasymulować atak tego typu ponownie wykorzystamy narzędzie WinArpAttacker. Program umożliwia Nam wysłanie spreparowanych pakiet&oacute;w ARP (pakiety typu: Request, Reply, Reverse request, Reverse reply).</p> <p>&nbsp;</p> <p>Aby wysłać fałszywy pakiet po uruchomieniu narzędzia wybieramy ikonę <strong>Send</strong>. Do zalania sieci ruchem broadcast wykorzystamy pakiet typu ARP Request. Wyb&oacute;r rodzaju pakietu umożliwia zdefiniowanie ustawień odnoszących się do wybranego typu pakietu. Ponieważ wysyłany pakiet ma być przypisany do ruchu broadcast pole określające docelowy adres MAC zostaje wypełnione wartością FF-FF-FF-FF-FF-FF (adres rozgłoszeniowy warstwy drugiej). Ponieważ mamy wywołać burzę pakiet&oacute;w dodatkowo zostaje zaznaczona opcja: <strong>Continuously </strong>Po zatwierdzeniu ustawień przyciskiem <strong>Send</strong> sieć zostaje zalana pakietami ARP Request pochodzącymi od hosta 192.168.1.210</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image45.png" alt="image45" width="700" height="525" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Atak ten możemy obserwować za pomocą narzędzia Wireshark na hoście 192.168.1.200 gdyż pakiety te są rozsyłane przez przełącznik na wszystkich jego portach.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image46.png" alt="image46" width="700" height="540" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Innym narzędziem, kt&oacute;re możemy wykorzystać do wywołania burzy broadcastowej jest program Hyenae i tak jak w przypadku aplikacji WinArpAttacker tak i tu wykorzystamy pakiet ARP Request. Choć warto zaznaczyć iż narzędzie te możemy użyć do wygenerowania pakiet&oacute;w obejmujących szerokie spectrum atak&oacute;w:</p> <ul> <li style="padding-left: 60px;">ARP-Request flooding</li> <li style="padding-left: 60px;">ARP-Cache poisoning</li> <li style="padding-left: 60px;">PPPoE session initiation flooding</li> <li style="padding-left: 60px;">Blind PPPoE session termination</li> <li style="padding-left: 60px;">ICMP-Echo flooding</li> <li style="padding-left: 60px;">ICMP-Smurf attack</li> <li style="padding-left: 60px;">ICMP based TCP-Connection reset</li> <li style="padding-left: 60px;">TCP-SYN flooding</li> <li style="padding-left: 60px;">TCP-Land attack</li> <li style="padding-left: 60px;">Blind TCP-Connection reset</li> <li style="padding-left: 60px;">UDP flooding</li> <li style="padding-left: 60px;">DNS-Query flooding</li> <li style="padding-left: 60px;">DHCP-Discover flooding</li> <li style="padding-left: 60px;">DHCP starvation attack</li> <li style="padding-left: 60px;">DHCP-Release forcing</li> <li style="padding-left: 60px;">Cisco HSRP active router hijacking</li> </ul> <p>&nbsp;</p> <p>Narzędziem możemy zarządzać za pomocą interfejsu GUI jak i wiersza poleceń. Po uruchomieniu trybu graficznego by m&oacute;c rozpocząć atak należy skonfigurować:</p> <p style="margin-left: 30px;">1 - określić interfejs, kt&oacute;ry zostanie wykorzystany do wysłania spreparowanych pakiet&oacute;w,</p> <p style="margin-left: 30px;">2 - zdefiniować typ pakietu oraz wersję protokołu IP,</p> <p style="margin-left: 30px;">3 - określić dane, kt&oacute;re posłużą do wygenerowania pakiet&oacute;w - w polu <strong>Destination Pattern</strong> został umieszczony adres rozgłoszeniowy warstwy drugiej,</p> <p style="margin-left: 30px;">4 - opcjonalnie określić ilość wysyłanych pakiet&oacute;w oraz zdefiniować opcje związane z częstotliwością ich wysyłania.</p> <p>&nbsp;</p> <p>Na dole okna aplikacji znajdziemy ekran informacyjny, w kt&oacute;rym możemy sprawdzić status wykonywanych operacji a także znajdziemy tam wygenerowane polecenie, kt&oacute;re możemy wykorzystać gdy z narzędzia korzystamy z wiersza linii poleceń.</p> <p>&nbsp;</p> <p>Aby rozpocząć atak należy wybrać przycisk <strong>Execute</strong>.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image47.png" alt="image47" width="700" height="462" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Sieć zostaje zalana pakietami ARP Request i tak jak poprzednio atak możemy obserwować na hoście zdalnym przy wykorzystaniu narzędzia Wireshark.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image48.png" alt="image47" width="700" height="462" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Unikatową cechą programu jest możliwość wykonania opisywanych operacji za pośrednictwem hosta zdalnego. Podczas instalacji programu mamy możliwość określenia czy ma zostać zainstalowany daemon narzędzia, kt&oacute;ry może posłużyć atakującemu do wywołania ataku zdalnie z poziomu innego hosta (i wcale nie musimy ograniczać się tylko do jednej maszyny, skoordynowany atak może prowadzić wiele host&oacute;w).</p> <p>&nbsp;</p> <p>Na hoście zdalny zostaje zainstalowany daemon narzędzia Hyenae. Aby usługa mogła zacząć działać w tle należy w parametrach jej wywołania określić interfejs sieciowy (parametr: <strong>-I &lt;nr_interfejsu&gt;</strong>) oraz maksymalną dozwoloną liczbę pakiet&oacute;w (parametr: <strong>-u &lt;wartość&gt;</strong>). Listę dostępnych interfejs&oacute;w sieciowych poznasz wydając komendę: <strong>hyenaed -l</strong></p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image49.png" alt="image49" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Daemon został uruchomiony i oczekuje na polecenia. Weryfikację działania możemy przeprowadzić wydając polecenie: <strong>netstat -ao</strong>, kt&oacute;re pokaże nam aktywne usługi sieciowe wraz ze stanem port&oacute;w. Jak można zauważyć poniżej narzędzie hyenaed działa i nasłuchuje na porcie TCP 666.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image50.png" alt="image50" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Dodatkowo stan procesu sprawdzimy r&oacute;wnież z wykorzystaniem polecenia: <strong>tasklist</strong>, kt&oacute;re odpowiedzialne jest za wyświetlenie wszystkich działających proces&oacute;w. Na liście tej r&oacute;wnież odnajdziemy narzędzie: hyenaed</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image51.png" alt="image51" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Daemon narzędzia został zainstalowany na hoście 192.168.1.200 a atak zostanie uruchomiony z hosta o adresie IP 192.168.1.210. Po uruchomieniu narzędzia z listy <strong>Operation Mode</strong> wybieramy opcję <strong>Attack from remote Daemon</strong>. Po określeniu adresu IP hosta zdalnego, portu (opcjonalnie hasła) i zdefiniowaniu opcji ataku całość zatwierdzamy przyciskiem <strong>Execute</strong>. Atak zostaje wykonany za pośrednictwem hosta zdalnego.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image52.png" alt="image47" width="700" height="462" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Wszystkie operacje związane z działaniem narzędzia możemy dodatkowo przejrzeć w logach narzędzia. Plik logu dostępny jest w katalogu instalacyjnym aplikacji.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image53.png" alt="image53" width="700" height="297" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Co warto zaznaczyć, to to, że przedstawione programy wcale nie muszą być wykorzystane w niecnych celach ale stanowią świetne narzędzia dla administrator&oacute;w do przeprowadzania symulowanych atak&oacute;w (zachowanie sieci gdy prawdziwy atak nastąpi) bądź badania wydajności sieci.</p> <p>&nbsp;</p> <p>Przechodzimy do ataku na protok&oacute;ł DHCP. Protok&oacute;ł ten (tak w wielkim skr&oacute;cie) odpowiedzialny jest za dostarczenie konfiguracji sieciowej (adres IP, adres IP bramy, adres IP serwera DNS) nowo podłączanemu hostowi tak by m&oacute;gł on prowadzić swobodną komunikację z innymi komputerami. Jeśli chcesz uzyskać więcej informacji o sposobie działania i konfiguracji tego protokołu zapraszam do zapoznania się z wpisem: <a href="http://slow7.pl/item/33-co-w-sieci-siedzi-protokol-dhcp" title="Co w sieci siedzi. Protok&oacute;ł DHCP."><span style="text-decoration: none;">Co w sieci siedzi. Protok&oacute;ł DHCP.</span></a></p> <p>&nbsp;</p> <p>W przypadku tego protokołu do czynienia najczęściej będziemy mieli z dwoma rodzajami ataku:</p> <ul> <li style="padding-left: 60px;"><strong>DHCP Spoofing</strong> - atak polegający na podstawieniu fałszywego serwera DHCP, kt&oacute;rego zadaniem jest dostarczenie konfiguracji sieciowej hostom, kt&oacute;ra będzie zgodna z intencjami atakującego,</li> <li style="padding-left: 60px;"><strong>DHCP Consumption Attack</strong> - atak polegający na zablokowaniu serwera DHCP poprzez całkowite wykorzystanie jego zasob&oacute;w (serwer DHCP zostaje zablokowany gdyż wszystkie dostępne adresy IP w ramach przydzielonej puli zostają wykorzystane - serwer DHCP nie ma wolnych adres&oacute;w IP, kt&oacute;re m&oacute;głby przydzielić zgłaszającym się klientom).</li> </ul> <p>&nbsp;</p> <p>Pulę dostępnych atak&oacute;w możemy powiększyć o ataki typu LAN Storm w kt&oacute;rych to wykorzystywane są pakiety rozgłoszeniowe przynależne protokołowi DHCP.</p> <p>&nbsp;</p> <p>W opisie obu atak&oacute;w wykorzystamy topologię sieciową zaprezentowana na poniższym zrzucie. Serwer DHCP jest rolą systemu Windows 2012 natomiast atakującym jest host z zainstalowanym systemem Linux.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image54.png" alt="image54" width="700" height="450" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Rozpoczniemy od ataku <strong>DHCP Consumption Attack</strong>. Jak widać poniżej atakujący ma możliwość komunikacji z serwerem DHCP.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image55.png" alt="image55" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Atakującemu został przez serwer DHCP przyznany adres IP 10.0.0.30 (pierwszy z zadeklarowanej puli - od 10.0.0.30 do 10.0.0.254). Sprawdzenie statystyk wykorzystania zasob&oacute;w serwera DHCP uwidacznia, że atakujący jest jedynym klientem, kt&oacute;remu została przypisana konfiguracja sieciowa tak więc serwer do rozdysponowania ma jeszcze 224 adresy IP. Celem ataku jest zablokowanie serwera DHCP poprzez doprowadzenie do stanu w kt&oacute;rym zasoby serwera zostaną wykorzystane w 100%</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image56.png" alt="image56" width="700" height="421" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Atak przeprowadzimy z wykorzystaniem narzędzia <strong>Yersinia</strong>. Narzędzie te standardowo dostępne jest w dystrybucji Linux Kali gdy korzystamy z innej dystrybucji program zainstalujemy za pomocą polecenia: <strong>apt-get install yersinia</strong> (w Linux Ubuntu instalacja oprogramowania przebiega bez żadnych problem&oacute;w).</p> <p>&nbsp;</p> <p>Narzędzie te w wcześniejszych moich wpisach było już wykorzystywane lecz jest tak uniwersalne iż nie raz będziemy do niego wracać.</p> <p>&nbsp;</p> <p>Program możemy używać w trybie graficznym jak i interaktywnym, my wykorzystamy oba.</p> <p>&nbsp;</p> <p>Aby uruchomić program w trybie interaktywnym wywołujemy go poleceniem: <strong>yersinia -I</strong> Po uruchomieniu narzędzia określamy interfejs sieciowy, kt&oacute;ry zostanie wykorzystany do przeprowadzenia ataku (interfejs można zmienić za pomocą klawisza: <strong>i</strong> - został wybrany interfejs: <strong>eth0</strong>).</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image57.png" alt="image57" width="700" height="487" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Następnym krokiem jest wyb&oacute;r ataku a tak naprawdę protokołu, kt&oacute;ry w ataku zostanie wykorzystany - aby zdefiniować atak użyj klawisza <strong>F2</strong> bądź <strong>g </strong>Z dostępnej listy wybieramy oczywiście <strong>DHCP</strong> (tak jak wspomniałem wyżej narzędzie <strong>yersinia</strong> jest naprawdę wszechstronne a widać to po liście dostępnych protokoł&oacute;w w ramach, kt&oacute;rych są przeprowadzane ataki).</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image58.png" alt="image58" width="700" height="487" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po wyborze protokołu za pomocą klawisza: <strong>x</strong> określamy rodzaj ataku. Ponieważ przeprowadzamy atak na zasoby serwera DHCP z listy wybieramy: <strong>sending DISCOVER packet</strong></p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image59.png" alt="image59" width="700" height="487" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Zatwierdzenie ataku (poprzez klawisz 1) rozpocznie zalewanie serwera DHCP pakietami DHCPDlSCOVER proszącymi serwer o dostarczenie konfiguracji sieciowej (ruch ten jest typu broadcast).</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image60.png" alt="image60" width="700" height="487" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Aby przerwać atak należy posłużyć się klawiszem:<strong> l</strong> po naciśnięciu, kt&oacute;rego pojawi się lista aktualnie prowadzonych atak&oacute;w. Z listy wybieramy atak i celem jego anulowania wybieramy <strong>Enter</strong>.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image61.png" alt="image61" width="700" height="487" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>W trakcie trwania ataku sprawdzamy statystyki serwera DHCP. Jak można zauważyć atak powi&oacute;dł się wszystkie dostępne adresy w ramach zdefiniowanej puli zostały wyczerpane.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image62.png" alt="image62" width="700" height="421" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>O fakcie wyczerpania puli adres&oacute;w IP poprzez okno <strong>Menedżer serwera</strong> jesteśmy informowani stosownymi komunikatami. Komunikaty te są r&oacute;wnież dostępne w dzienniku zdarzeń.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image63.png" alt="image63" width="700" height="420" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Jak wspomniałem wyżej narzędziem Yersinia a co za tym idzie prowadzonymi atakami możemy zarządzać z wykorzystaniem graficznego trybu użytkownika. Aby uruchomić aplikację w trybie graficznym wydajemy polecenie: <strong>yersinia -G </strong>Po uruchomieniu programu należy w pierwszej kolejności dokonać wyboru interfejsu sieciowego za pomocą, kt&oacute;rego będzie przeprowadzany tak. Aby zmienić interfejs można r&oacute;wnież posłużyć się przyciskiem: <strong>Edit interfaces</strong>.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image64.png" alt="image64" width="700" height="505" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Kolejnym krokiem jest wyb&oacute;r protokołu, kt&oacute;ry zdefiniujemy po wybraniu odpowiedniej zakładki dostępnej po kliknięciu na przycisk: <strong>Launch attack</strong> Wybieramy zakładkę <strong>DHCP</strong> a następnie <strong>sending DISCOVER packet</strong> Aby uruchomić atak całość ustawień zatwierdzamy przyciskiem <strong>OK</strong>.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image65.png" alt="image65" width="700" height="505" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Atak DHCP Consumption Attack zostaje uruchomiony. Listę aktualnie przeprowadzanych atak&oacute;w wraz z możliwością ich anulowania przeprowadzimy po wyborze przycisku: <strong>List attacks</strong>.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image66.png" alt="image66" width="700" height="505" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Tak jak poprzednio serwer DHCP zostaje zablokowany co dla klient&oacute;w oznacza iż nie mogą oni uzyskać adresu IP oraz odnowić dzierżawy adresu już istniejącego. Nie ważne jaki spos&oacute;b komunikacji z programem wybierzemy efekt wykonywanych operacji powinien być identyczny choć z doświadczenia wiem iż tryb interaktywny jest mniej problemowy gdyż w trybie graficznym program potrafi się zawiesić.</p> <p>&nbsp;</p> <p>Do tej pory wykorzystywaliśmy serwer DHCP dostępny w ramach systemu Windows Server 2012 lecz nic nie stoi na przeszkodzie by rolę tą pełnił router. Więc zanim przejdziemy dalej prześledźmy jeszcze scenariusz w kt&oacute;rym rolę serwera DHCP pełni router CISCO.</p> <p>&nbsp;</p> <p>Serwer DHCP na routerze został uruchomiony (zostały wydane podstawowe polecenia, jeśli chcesz przeczytać więcej o sposobie konfiguracji routera, kt&oacute;ry będzie pełnić rolę serwera DHCP zapraszam do wpisu: <a href="http://slow7.pl/item/33-co-w-sieci-siedzi-protokol-dhcp" title="Co w sieci siedzi. Protok&oacute;ł DHCP."><span style="color: blue; text-decoration: none;">Co w sieci siedzi. Protok&oacute;ł DHCP).</span></a></p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image67.png" alt="image67" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Statystyki serwera sprawdzimy za pomocą poleceń: <strong>show ip dhcp pool</strong> oraz <strong>show ip dhcp binding</strong> Jak widać poniżej z zdefiniowanej puli 254 adres&oacute;w IP (punkt 1) dostępnych w ramach zakresu obejmujących sieć 10.0.0.0/24 został wykorzystany jeden (punkt 2).</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image68.png" alt="image68" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Uruchamiamy atak wyczerpania zasob&oacute;w serwera DHCP i sprawdzamy jego efekt. Wystarczyło kilka sekund by ilość przydzielonych adres&oacute;w w ramach zdefiniowanej puli wzrosła do 217.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image69.png" alt="image69" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Dokładne sprawdzenie ilości przydzielonych adres&oacute;w IP uwidacznia ich całą listę.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image70.png" alt="image70" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Dalsze przeprowadzenie ataku doprowadza do wyczerpania zasob&oacute;w serwera DHCP a tym samym jak zostało pokazane na rysunku poniżej serwer przestaje dostarczać konfigurację sieciową zgłaszającym się klientom.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image71.png" alt="image71" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Opisany wyżej atak na serwer DHCP nie jest jedynym gdyż atakujący bardzo często wykorzystuje atak związany z podstawieniem fałszywego serwera DHCP. Jak już wiemy jak zablokować serwer DHCP nic nie stoi na przeszkodzie by uruchomić własny, kt&oacute;rego zadaniem będzie np. dostarczanie takiej konfiguracji sieciowej w kt&oacute;rej adresy bramy będzie wskazywać na atakującego.</p> <p>&nbsp;</p> <p>Prześledźmy zatem scenariusz w kt&oacute;rym atakujący host o adresie IP 10.0.0.30 unieszkodliwia właściwy serwer DHCP a następnie uruchamia własny. Do wykonania tego zadania wykorzystamy użyte już wcześniej narzędzie <strong>Ettercap</strong>.</p> <p>&nbsp;</p> <p>Po uruchomieniu narzędzia (wykorzystujemy tak jak w przypadku ataku ARP tryb <strong>Unified sniffing</strong>) z g&oacute;rnego menu wybieramy <strong>Mitm</strong> a następnie <strong>DHCP spoofing</strong>.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image72.png" alt="image72" width="700" height="456" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>W nowo otwartym oknie określamy adresy jakie mają zostać dostarczone klientom:</p> <ul> <li style="padding-left: 60px;"><strong>IP Pool</strong> - zakres adres&oacute;w IP jakie może przydzielić serwer DHCP,</li> <li style="padding-left: 60px;"><strong>Netmask</strong> - maska podsieci,</li> <li style="padding-left: 60px;"><strong>DNS Server IP</strong> - adres serwera DNS (8.8.8.8 publiczny adres serwera Google),</li> </ul> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image73.png" alt="image73" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po zaakceptowaniu ustawień serwer DHCP zaczyna działać i oczekuje na klient&oacute;w.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image74.png" alt="image74" width="700" height="456" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Do sieci podłączamy klienta (pamiętamy, że właściwy serwer DHCP nie działa), jak widać poniżej klientowi zostaje przydzielony pierwszy adres IP 10.0.0.50 z zdefiniowanej puli fałszywego serwera DHCP. Jak można łatwo zauważyć adres IP bramy wskazuje na hosta przeprowadzającego atak (10.0.0.30).</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image75.png" alt="image75" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>O fakcie przypisania adresu IP klientowi zostaniemy poinformowani w oknie narzędzia Ettercap.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image76.png" alt="image76" width="700" height="456" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Sprawdzenie tablicy ARP klienta dobitnie przekonuje Nas o powodzeniu ataku - adres IP 10.0.0.30 jest prawidłowo powiązany z adresem MAC atakującego.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image77.png" alt="image77" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Fałszywy serwer DHCP możemy r&oacute;wnież uruchomić wykorzystując do tego narzędzie <strong>Yersinia</strong>. Po uruchomieniu programu wybieramy ikonę <strong>Launch attack</strong> a następnie w oknie <strong>Choose attack</strong> na zakładce <strong>DHCP</strong> wybieramy opcje <strong>creating DHCP rogue server</strong>. W nowo otwartym oknie Parameters list definiujemy adresysieciowe, kt&oacute;rymi ma dysponować fałszywy serwer DHCP. Po uzupełnieniu wszystkich p&oacute;l atak uruchamiamy przyciskiem <strong>OK</strong> (okno definicji parametr&oacute;w serwera nie znika). Fałszywy serwer DHCP działa i oczekuje na klient&oacute;w.</p> <p>&nbsp;</p> <p>W przypadku wykorzystania narzędzia Yersinia do utworzenia fałszywego serwera DHCP należy zainstalować dodatkowy pakiet: <strong>isc-dhcp-server</strong></p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image78.png" alt="image78" width="700" height="404" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Podstawowa zasada działania przełącznika sprowadza się do tego, że dzięki ciągłemu uczeniu się adres&oacute;w MAC podłączających się klient&oacute;w (pamiętamy, że przełącznik jest urządzeniem warstwy drugiej) wie na kt&oacute;ry interfejs ma przekazać dane tak by mogły być one prawidłowo dostarczone. Oznacza to, że podczas normalnej pracy urządzenia nie dochodzi do sytuacji w kt&oacute;rej to dane są przekazywane na niewłaściwe porty. Odmienną zasadę działania oferował hub sieciowy gdyż w przypadku tego urządzenia trafiające pakiety do danego interfejsu były powielane na wszystkie inne a dany host decydował o tym czy otrzymane informacje odrzucić bądź zaakceptować. Jak łatwo się domyślić sieć zbudowana z wykorzystaniem hub&oacute;w nie była rozwiązaniem zbyt wydajnym gdyż bardzo wiele danych było przesyłanych niepotrzebnie (hub przekazywał pakiety w kierunk&oacute;w host&oacute;w, kt&oacute;re ich nie oczekiwały a w konsekwencji były one odrzucane). Jednak taki scenariusz dla osoby pr&oacute;bującej przechwycić ruch sieciowy był nader korzystny gdyż znacznie łatwiej było prowadzić sniffing. Pakiety od innych host&oacute;w do komputera przechwytującego ruch były przekazywane (ze względu na wykorzystanie huba) wystarczyło tylko zmusić kartę sieciową do ich rejestrowania. Sytuacja ta uległa pogorszeniu (z punktu widzenia atakującego) gdy zamiast hub&oacute;w zaczęto wykorzystywać przełączniki. Lecz jest sytuacja w kt&oacute;rej możemy zmusić przełącznik by zachowywał się jak hub. Każdy przełącznik posiada tablicę adres&oacute;w MAC, kt&oacute;rej zadaniem jest przechowywanie informacji o nauczonych adresach MAC należących do klient&oacute;w. Rozmiar tej tablicy w zależności od urządzenia jest r&oacute;żny a co dla Nas najważniejsze jest ograniczony. Oznacza to ni mniej ni więcej, że dany switch jest w stanie nauczyć się i przechowywać określoną ilość adres&oacute;w MAC. Pewnie zastanawiasz się Czytelniku - Co dzieje się w przypadku zapełnienia tablicy? Ot&oacute;ż w takiej sytuacji przełącznik zaczyna zachowywać się jak hub czyli otrzymane ramki zostają powielone na wszystkie interfejsy przełącznika. Dla hakera bądź osoby przeprowadzającej test penetracyjny przypadłość ta jest kolejnym wektorem ataku. Zatem spr&oacute;bujmy przeprowadzić atak, kt&oacute;rego zadaniem będzie wyczerpanie zasob&oacute;w tablicy MAC przełącznika a w konsekwencji do zmuszenia switcha by działał jak hub.</p> <p>&nbsp;</p> <p>Aby sprawdzić pojemność tablicy (ilość możliwych do przechowywania wpis&oacute;w) wydaj polecenie: <strong>show mac-address-table count </strong>Po wydaniu komendy uzyskamy informację o ilości aktualnych wpis&oacute;w w tablicy MAC (w rozbiciu na adresy poznane w spos&oacute;b dynamiczny jak i te zdefiniowane statycznie przez administratora) oraz ilości dostępnego miejsca.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image79.png" alt="image79" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>By poznać bardziej szczeg&oacute;łowe dane wydaj polecenie: <strong>show mac-address-table &lt;rodzaj_wpisu&gt;</strong> (w nowszych wersjach IOS: <strong>show mac address-table &lt;rodzaj_wpisu&gt;</strong>). Poniżej przykład wydania komendy dostarczającej nam informację o adresach MAC nauczonych dynamicznie. Opr&oacute;cz samego adresu MAC zostaniemy poinformowani o interfejsie przez, kt&oacute;ry dany adres MAC jest osiągalny oraz o przynależności do sieci VLAN.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image80.png" alt="image80" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Do przeprowadzenia ataku użyjemy narzędzia: <strong>macof </strong>Aby rozpocząć atak zalewania przełącznika adresami MAC należy wydać polecenie: <strong>macof -i &lt;interfejs&gt;</strong> Po zatwierdzeniu komendy na domyślny adres IP 0.0.0.0 (wszyscy) zostaną wysłane ramki symulujące połączenia pomiędzy hostami.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image81.png" alt="image81" width="700" height="469" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Atak ten r&oacute;wnież możemy obserwować z wykorzystaniem narzędzia Wireshark. Jak można zauważyć poniżej program <strong>macof</strong> generuje pakiety protokołu IPv4 udające łączność pomiędzy losowo zdefiniowanymi adresami IP.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image82.png" alt="image82" width="700" height="582" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>W przypadku programu <strong>macof</strong> do dyspozycji mamy dodatkowe przełączniki:</p> <p style="margin-left: 30px;"><strong>-i &lt;interfejs&gt;</strong> - określa użyty interfejs,</p> <p style="margin-left: 30px;"><strong>-s &lt;adres_IP&gt;</strong> - określa źr&oacute;dłowy adres IP,</p> <p style="margin-left: 30px;"><strong>-d &lt;adres_IP&gt;</strong> - określa docelowy adres IP,</p> <p style="margin-left: 30px;"><strong>-e &lt;adres MAC&gt;</strong> - określa docelowy adres sprzętowy,</p> <p style="margin-left: 30px;"><strong>-x &lt;numer_portu&gt;</strong> - określa źr&oacute;dłowy port TCP,</p> <p style="margin-left: 30px;"><strong>-y &lt;numer_portu&gt;</strong> - określa docelowy port TCP,</p> <p style="margin-left: 30px;"><strong>-n &lt;liczba&gt;</strong> - definiuje liczbę pakiet&oacute;w do wysłania.</p> <p>&nbsp;</p> <p>Atak jest w toku. Ponowne sprawdzenie wykorzystania tablicy MAC ukazuje stan w kt&oacute;rym to cała dostępna przestrzeń tablicy adres&oacute;w MAC jest wykorzystana. Przełącznik wypełnił całą tablicę, nie może uczyć się nowy adres&oacute;w MAC.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image83.png" alt="image83" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Dokładniejsze sprawdzenie wypełnienia tablicy pokaże Nam wszystkie poznane adresy MAC.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image84.png" alt="image83" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Atak zakończył się powodzeniem gdyż po przepełnieniu tablicy MAC przełącznika zaczyna się on zachowywać jak zwykły koncentrator tj. otrzymywane pakiety są rozsyłane na wszystkie interfejsy przełącznika. Poniżej przechwycony ruch sieciowy podczas trwania ataku - host 10.0.0.1 wysyła w kierunku hosta 10.0.0.20 zapytanie ping (udało się zarejestrować odpowiedzi). I na koniec jeszcze jedna mała uwaga - atak tego typu powiedzie się tylko w takiej sytuacji w kt&oacute;rej w tablicy MAC niema jeszcze wpis&oacute;w odpowiadającym hostom co do kt&oacute;rych ruch monitorujemy. Jeśli wpisy istnieją nie uda nam się ruchu sieciowego przechwycić.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image85.png" alt="image85" width="700" height="422" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Aby wyczyścić tablicę adres&oacute;w MAC wydaj polecenie: <strong>clear mac-address-table dynamic</strong></p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image86.png" alt="image86" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Opisaliśmy podstawowe metody przeprowadzania ataku z wykorzystaniem założonych na wstępie artykułu protokoł&oacute;w, czas by przejść do opisu obrony przed tego typu atakami (choć do opisu przeprowadzenia jeszcze jednego ataku na chwilę wr&oacute;cimy - szczeg&oacute;ły w dalszej części wpisu).</p> <p>&nbsp;</p> <p>Opis obrony rozpoczniemy od protokołu DHCP gdyż opisana poniżej procedura zostanie powt&oacute;rnie wykorzystana w innej metodzie obrony.</p> <p>&nbsp;</p> <p>Zabezpieczenie serwera DHCP przed zalaniem go pakietami zawierającymi prośbę o przydzielenie adresu IP (a co za tym idzie wyczerpaniu zasob&oacute;w serwera) a także ochronę sieci przed nieautoryzowanym serwerem DHCP osiągniemy konfigurując na przełączniku mechanizm <strong>DHCP snooping</strong>.</p> <p>&nbsp;</p> <p>Działanie funkcji sprowadza się do określenia <strong>interfejs&oacute;w zaufanych</strong> czyli takich przez kt&oacute;re ustanowiona jest bezpośrednia łączność z serwerem DHCP oraz <strong>interfejs&oacute;w niezaufanych</strong> - na portach tych nie może być prowadzona wymiana pakiet&oacute;w związana z funkcjonowaniem serwera DHCP (m&oacute;wiąc inaczej serwer DHCP podłączony do portu przełącznika pracującego w trybie untrusted nie będzie działał). Port niezaufany w przypadku wykrycia podejrzanego ruchu sieciowego zostaje automatycznie zamknięty.</p> <p>&nbsp;</p> <p>Zanim przejdziemy dalej uzupełnimy naszą topologię sieciową wykorzystywaną w atakach na serwer DHCP o niezbędne dane (numery interfejs&oacute;w przełącznika do kt&oacute;rych podpięte są stacje).</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image87.png" alt="image87" width="700" height="450" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Jak widać powyżej komunikacja z serwerem DHCP następuje przez interfejs f0/1. Interfejs ten będziemy konfigurowali jako zaufany. Aby na przełączniku skonfigurować mechanizm DHCP snooping należy wydać następujące polecenia:</p> <p style="margin-left: 30px;">1 - <strong>ip dhcp snooping vlan &lt;numer_sieci_VLAN&gt;</strong> - uruchamiamy funkcję w kontekście danej sieci VLAN. Urządzenia w scenariuszu są umiejscowione w domyślnej sieci VLAN tak więc polecenie przyjmuje postać: <strong>ip dhcp snooping vlan 1</strong></p> <p style="margin-left: 30px;">2 - <strong>ip dhcp snooping</strong> - włączenie mechanizmu globalnie,</p> <p style="margin-left: 30px;">3 - w trybie konfiguracji interfejsu za pomocą polecenia: <strong>ip dhcp snooping trust</strong> ustawiamy zaufanie portu.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image88.png" alt="image88" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Dla reszty interfejs&oacute;w sieciowych (aby nie konfigurować każdego portu z osobna wydajemy polecenie: <strong>interface range &lt;zakres_port&oacute;w&gt;</strong>) określamy limit wystąpienia pakiet&oacute;w związanych z funkcjonowaniem serwera DHCP - po przekroczeniu ustalonej wartości następuje blokada interfejsu.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image89.png" alt="image89" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Działanie mechanizmu skontrolujemy wydając komendę: <strong>show ip dhcp snooping </strong>Port f0/1 jest portem zaufanym tak więc działanie mechanizmu DHCP snooping tego portu nie obejmuje, zaś na reszcie interfejs&oacute;w jest przeprowadzana inspekcja związana z ruchem pakiet&oacute;w DHCP. W tym przypadku wartość progu została ustalona na 10 pakiet&oacute;w na sekundę.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image90.png" alt="image90" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Funkcja ochrony serwera DHCP została skonfigurowana nie pozostaje Nam nic innego jak sprawdzić ją w działaniu. Ponownie uruchamiamy atak zalewając serwer DHCP pakietami DHCP Discover. Chwilę po uruchomieniu ataku zostaje przekroczona graniczna wartość wystąpienia 10 pakiet&oacute;w na sekundę, interfejs przechodzi w stan<strong>: err-disable</strong> i zostaje wyłączony.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image91.png" alt="image91" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Status interfejsu możemy sprawdzić za pomocą dobrze znanych nam poleceń: <strong>show ip interface brief</strong></p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image92.png" alt="image92" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>a także: <strong>show interface &lt;numer_interfejsu&gt;</strong></p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image93.png" alt="image93" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Do odnalezienia interfejs&oacute;w w stanie err-disable możesz r&oacute;wnież użyć polecenia:<strong> show interface status err-disabled</strong></p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image94.png" alt="image94" width="700" height="387" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Aby ponownie uruchomić interfejs przechodzimy do trybu konfiguracji danego portu i wyłączamy go (punkt 1) a następnie włączamy (punkt 2).</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image95.png" alt="image95" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Jeśli na danym nie zaufanym porcie pojawi się obcy serwer DHCP mechanizm obrony wygeneruje odpowiednie ostrzeżenie. Podłączający się klient nie uzyska konfiguracji sieciowej.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image96.png" alt="image96" width="700" height="72" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Dzięki zastosowaniu mechanizmu DHCP snooping ochroniliśmy naszą sieć przed atakami związanymi z protokołem DHCP.</p> <p>&nbsp;</p> <p>Aby zapobiec atakowi typu MAC Address Table Overflow Attack (przepełnienie tablicy MAC) możemy tak skonfigurować przełącznik by nie uczył się poznanych w spos&oacute;b dynamiczny adres&oacute;w MAC a co za tym idzie nie będzie budowana tablica MAC przełącznika. Standardowo jak już pewnie wiesz Czytelniku tablica ta służy switchowi do tego aby powiązać dany adres MAC z interfejsem na kt&oacute;rym adres ten jest osiągalny.</p> <p>&nbsp;</p> <p>Sprawdzenie tablicy MAC wykonujemy za pomocą polecenia: <strong>show mac address-table dynamic</strong> (już o tym wyżej pisałem i pewnie uważny Czytelnik zauważy, że w poprzednim przypadku użyłem polecenia w kt&oacute;rym był zawarty myślnik pomiędzy słowami <strong>mac</strong> a <strong>address</strong> - Czemu teraz go nie ma? Ot&oacute;ż w trakcie tworzenia tego wpisu musiałem dokonać aktualizacji wersji oprogramowania przełącznika gdyż polecenia, kt&oacute;re za chwilę przedstawię nie były dostępne w starszej wersji systemu a w nowych wersjach oprogramowania zrezygnowano z myślnika pomiędzy tymi słowami - ot i cała tajemnica). Po wydaniu polecenia zostanie wyświetlona tablica adres&oacute;w MAC przełącznika jak widać poniżej znajdują się w niej tylko 3 wpisy (przyczyną wystąpienia dw&oacute;ch adres&oacute;w MAC na interfejsie f0/7 jest zastosowanie maszyny wirtualnej).</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image97.png" alt="image97" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Wyłączenie tworzenia tablicy dla adres&oacute;w poznanych dynamicznie wykonamy za pomocą komendy<strong>: no mac address-table learning vlan &lt;numer_sieci&gt; </strong>(poznawanie adres&oacute;w MAC wyłączamy w ramach danej sieci VLAN). Dla uproszczenia opisu wszystkie urządzenia są zgrupowane w ramach domyślnej sieci VLAN 1 tak więc w efekcie polecenie przyjmuje postać: <strong>no mac address-table learning vlan 1</strong></p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image98.png" alt="image98" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po wyłączeniu możliwości zapamiętywania adres&oacute;w MAC poznanych dynamicznie ponownie przechodzimy do wykonania ataku mającego na celu przepełnienie tablicy MAC przełącznika. Atak został uruchomiony.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image99.png" alt="image99" width="700" height="466" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Zweryfikujmy atak. Sprawdzenie stanu tablicy uwidacznia brak jakichkolwiek adres&oacute;w MAC, kt&oacute;re zostały uzyskane w spos&oacute;b dynamiczny.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image100.png" alt="image100" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Sprawdzenie og&oacute;lnego stanu ilości przechowywanych adres&oacute;w r&oacute;wnież pokazuje brak jakichkolwiek adres&oacute;w MAC.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image101.png" alt="image101" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Tym razem atak MAC flooding zakończył się niepowodzeniem. Tablica adres&oacute;w MAC przełącznika pozostaje pusta.</p> <p>&nbsp;</p> <p>Brak adres&oacute;w MAC w połączeniu z numerem portu w tablicy MAC przełącznika nie jest stanem pożądanym gdyż sytuacja ta zaburza normalne funkcjonowanie przełącznika. Dlatego po wyłączeniu automatycznego uczenia się adres&oacute;w MAC sami musimy zadbać o wpisy informujące switch o powiązaniu: adres MAC urządzenia-numer interfejsu pod kt&oacute;rym urządzenie te jest dostępne.</p> <p>&nbsp;</p> <p>Aby statycznie zdefiniować tablicę MAC przełącznika należy do tego celu wykorzystać polecenie: <strong>mac address-table static &lt;adres_MAC&gt; vlan &lt;numer_sieci_VLAN&gt; interface &lt;numer_interfejsu&gt;</strong> Tak więc w przyjętym scenariuszu należy wydać polecenia jakie zostały pokazane na zrzucie poniżej.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image102.png" alt="image102" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Weryfikację wprowadzonych ustawień sprawdzimy za pomocą polecenia: <strong>show mac address-table static</strong>. Adresy MAC w powiązaniu z interfejsem zostały wprowadzone prawidłowo.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image103.png" alt="image103" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Jeśli interesuje Cię sprawdzenie tablicy adres&oacute;w MAC w kontekście danej sieci VLAN użyj polecenia: <strong>show mac address-table static vlan &lt;numer sieci_VLAN&gt;</strong></p> <p>Opisane rozwiązanie mające uniknąć konsekwencji ataku przepełnienia tablicy MAC przełącznika nie jest metodą komfortową gdyż o wszystkie ustawienia musimy zadbać sami. O ile w małych sieciach, kt&oacute;rych topologia zbyt często nie ulega zmianie rozwiązanie te jest akceptowalne to w sieciach dużych o zmiennym stanie ilości urządzeń końcowych już nie. Dlatego też istnieją inne rozwiązania, kt&oacute;re pozwolą nam zabezpieczyć naszą sieć przed tego typu atakiem a także innymi atakami wykorzystującymi słabości protokoł&oacute;w wykorzystywanych w warstwie 2 modelu ISO/OSI.</p> <p>&nbsp;</p> <p>Podstawowym i jednym z najbardziej skutecznych sposob&oacute;w zabezpieczenia sieci jest wykorzystanie mechanizmu <strong>Port Security</strong>. Przełączniki firmy CISCO zostały wyposażone w ten mechanizm, kt&oacute;rego gł&oacute;wnym celem jest zapewnienie komunikacji urządzeniom, kt&oacute;re mają do tego prawo. Konfigurację tego mechanizmu w tym artykule nie opiszę gdyż jego dokładny opis zamieściłem w wpisie - <a href="http://slow7.pl/item/103-co-w-sieci-siedzi-warstwa-2-czyli-podstawowa-konfiguracja-przelacznika-cisco" title="Co w sieci siedzi. Warstwa 2 czyli podstawowa konfiguracja przełącznika CISCO"><span style="text-decoration: none;">Co w sieci siedzi. Warstwa 2 czyli podstawowa konfiguracja przełącznika CISCO</span></a> Jeśli chcesz poznać zasady działania ochrony portu z wykorzystaniem funkcji Port Security zapraszam do lektury wpisu dostępnego pod podanym linkiem.</p> <p>&nbsp;</p> <p>Zatem idziemy dalej i przechodzimy do protokołu ARP czyli jak obronić się przed atakiem polegającym na manipulacji adresami zapisanymi w tablicy ARP hosta.</p> <p>&nbsp;</p> <p>Pierwsze zaproponowane rozwiązanie bazuje tak jak w przypadku określenia statycznych wpis&oacute;w w tablicy MAC przełącznika na ręcznej (statycznej) definicji adres&oacute;w zawartych w tablicy ARP. Po ręcznym zdefiniowaniu adresu IP w połączniu z adresem MAC unikniemy ataku zatrucia tablicy ARP gdyż system operacyjny zignoruje wszystkie odbierane komunikaty ARP, dotyczące adres&oacute;w IP-MAC nie pozwalając na zastąpienie wpis&oacute;w statycznych tymi uzyskanymi w spos&oacute;b dynamiczny. Aby uzyskać całkowitą ochronę przed atakiem ARP spoofing należy na wszystkich urządzeniach utworzyć wpisy w tablicy ARP definiujące komunikację każdy z każdym. W praktyce z reguły stosuje się podejście w kt&oacute;rym na komputerach tworzy się statyczne wpisy dla wszystkich serwer&oacute;w oraz bram (wychodzimy z założenia, że większość host&oacute;w pomimo obecności w jednej sieci ze sobą się nie komunikuje).</p> <p>&nbsp;</p> <p>Przechodzimy do ręcznej definicji wpis&oacute;w tablicy ARP. Operację rozpoczniemy od hosta 10.0.0.1 W pierwszej kolejności warto wydać polecenie: <strong>netsh interface ip delete arpcache</strong> kt&oacute;re usunie wszystkie zgromadzone do tej pory powiązania (uchroni nas to przed odmową dodania statycznego wpisu dla adresu, kt&oacute;ry już w tablicy się znajduje, czasem to nie pomaga wtedy wyłącz i włącz interfejs sieciowy). Wydanie polecenia usuwa r&oacute;wnież wszystkie zdefiniowane wcześniej wpisy statyczne.</p> <p>&nbsp;</p> <p>Wpis definiujemy za pomocą komendy: <strong>arp -s &lt;adres_IP&gt; &lt;adres_MAC&gt;</strong> Na hoście oczywiście należy określić adresy host&oacute;w zdalnych. W naszym przypadku podajemy adresy przypisane hostowi 10.0.0.20 Weryfikację dodania wpisu sprawdzimy poleceniem: <strong>arp -a</strong></p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image104.png" alt="image104" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Na komputerze 10.0.0.20 przeprowadzamy analogiczną czynność podając adresy hosta 10.0.0.1.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image105.png" alt="image105" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po skonfigurowaniu statycznych tablic ARP sprawdźmy komunikację pomiędzy hostami. Test ping przeprowadzony z hosta 10.0.0.20 w kierunku komputera 10.0.0.1 zakończył się powodzeniem.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image106.png" alt="image105" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po zdefiniowaniu wpis&oacute;w statycznych sprawdźmy podatność obu system&oacute;w na atak ARP spoofing.</p> <p>&nbsp;</p> <p>W przypadku systemu Windows wszystkie wpisy dodajemy osobnymi polecenia w systemie Linux możliwe jest zebranie wszystkich powiązań (para adres&oacute;w IP-MAC) w osobnym pliku tekstowym i wprowadzenie wszystkich pozycji w spos&oacute;b automatyczny (polecenie: <strong>arp</strong> w połączeniu z parametrem <strong>-f</strong>).</p> <p>&nbsp;</p> <p>Ponownie wykorzystujemy narzędzie Ettercap gdzie po przeprowadzonym skanowaniu wraz z ustaleniem cel&oacute;w uruchamiamy atak zatrucia tablicy ARP.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image107.png" alt="image107" width="700" height="454" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Atak trwa. Sprawdźmy jak wygląda tablica ARP na hoście 10.0.0.20. Polecenie sprawdzenia tablicy zostało wydane dwa razy - przed uruchomieniem ataku (punkt 1) oraz podczas jego trwania (punkt 2). Wpisy w tablicy ARP hosta 10.0.0.20 nie uległy zmianie.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image108.png" alt="image108" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Sprawdzamy tablicę ARP na hoście 10.0.0.1 Tutaj r&oacute;wnież wpisy przed uruchomieniem ataku (punkt 1) są identyczne z wpisami podczas jego trwania (punkt 2).</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image109.png" alt="image109" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Atak zatrucia tablicy ARP w przypadku komputer&oacute;w na kt&oacute;rych zostały zdefiniowane wpisy statyczne nie powi&oacute;dł się - <strong>wpisy poznane w spos&oacute;b dynamiczny nie mogą zastąpić tych zdefiniowanych ręcznie przez administratora</strong>. Przechwytywanie pakiet&oacute;w z wykorzystaniem protokołu ARP pomiędzy hostami 10.0.0.1 a 10.0.0.20 zakończyło się niepowodzeniem co nie oznacza, że nie istnieją inne metody pozwalające Nam na przechwycenie komunikacji pomiędzy stacjami.</p> <p>&nbsp;</p> <p>Miałem już pisać tylko o obronie przed atakami a nie opisywać kolejnych ale tak sobie myślę, że przedstawiony scenariusz pokaże r&oacute;wnież błędy popełniane przez administrator&oacute;w, kt&oacute;re w konsekwencji doprowadzają do tego, że atak na naszą sieć kończy się powodzeniem. W opisie przedstawionym powyżej udaremniliśmy atakującemu możliwość podsłuchania komunikacji pomiędzy hostami ale jak już wspomniałem wachlarz innych metod nadal pozostaje otwarty. Wektorem dla atakującego jest r&oacute;wnież sam przełącznik i to na nim skupimy teraz swoją uwagę.</p> <p>&nbsp;</p> <p>Wykonując skanowanie sieci odkrywamy aktywne hosty (więcej o technikach i metodach skanowania dowiesz się zapoznając się z tym wpisem: <span style="color: blue;">Co w sieci siedzi. Skanowanie sieci - aktywne hosty</span>), wśr&oacute;d gąszcza wykrytych adres&oacute;w IP należy wytypować te kt&oacute;re odpowiadają urządzeniom odpowiedzialnym za funkcjonowanie sieci (switche, routery, access pointy). I tu rodzi się pytanie - Jak tego dokonać?</p> <p>&nbsp;</p> <p>Odpowiedź na to pytanie możemy uzyskać poprzez analizę aktywnych adres&oacute;w MAC zdobytych podczas procesu skanowania sieci. Adres MAC jest zbudowany w ten spos&oacute;b, że pierwsze 24 bity (bądź jak ktoś woli pierwsze 3 bajty) są przypisane do producenta urządzenia sieciowego - to tzw. vendor code , reszta adresu (kolejne 24 bity, bądź 3 bajty) są unikalnym identyfikatorem danego egzemplarza karty. Na przykład adres 00-01-42-AB-01-21 oznacza, że karta została wyprodukowana przez CISCO ponieważ vender code 00-01-42 jest przypisany do firmy CISCO zaś producent nadał jej numer AB-01-21.</p> <p>&nbsp;</p> <p>Aby odnaleźć identyfikatory jakie zostały przypisane do producent&oacute;w urządzeń sieciowych możesz posłużyć się wyszukiwarką dostępną na stronie - <a>http://www.miniwebtool.com/mac-address-lookup/</a></p> <p>&nbsp;</p> <p>Wpisując nazwę firmy bądź vender code uzyskamy informację o producencie.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image110.png" alt="image110" width="700" height="713" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Tak więc wracając do analizy odkrytych adres&oacute;w MAC i przypisując im producenta z dość dużym prawdopodobieństwem możemy wytypować adresy, kt&oacute;re należą do urządzeń odpowiedzialnych za zarządzanie siecią (popularne firmy to m.in. CISCO, Juniper, HP, MikroTik, TP-link, Ubiquiti Networks, ALANTEC, Jirous). Analizując adresy pierwsze swoje kroki skieruj ku adresom IP rozpoczynającym i kończącym daną podsieć gdyż to najczęściej do tych adres&oacute;w IP będą przypisane urządzenia - np. adresem bramy bardzo często jest adres IP o og&oacute;lnym formacie x.x.x.1 bądź x.x.x.254</p> <p>&nbsp;</p> <p>W naszym przypadku odkrywamy urządzenie o adresie 10.0.0.254 i po analizie adresu MAC dochodzimy, że jest to urządzenie CISCO (w tym przypadku zostało wykorzystane narzędzie Nmap, kt&oacute;re samodzielnie dokonuje identyfikacji producenta urządzenia).</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image111.png" alt="image111" width="700" height="456" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Wykonajmy zatem atak zatrucia bufora ARP dla adresu IP 10.0.0.254 Atak swym działaniem obejmuje całą sieć. Po wykonaniu operacji zatrucia tablicy ARP przełącznika oczekujemy na połączenie oczywiście w tle mamy uruchomiony program przechwytujący ruch sieciowy. Jeśli administrator dokonał konfiguracji przełącznika i wszystko działa to z reguły nie ma potrzeby by sprawdzać konfigurację switcha dlatego też oczekiwanie aż administrator nawiąże połączenie może zająć nam wiele czasu. Dlatego też by zmusić administratora do nawiązania połączenia możemy dodatkowo wykonać atak, kt&oacute;rego zadaniem będzie zaburzenie działania sieci. Niedziałająca poprawnie sieć wymusi na osobach dbających o jej działanie podjęcie odpowiednich krok&oacute;w celem znalezienia usterki. Szukając rozwiązania zaistniałych problem&oacute;w wzrasta szansa na to, że administrator nawiąże połączenie z urządzeniem, kt&oacute;rego ruch sieciowy monitorujemy.</p> <p>&nbsp;</p> <p>Dodatkową opcją jest wykorzystanie takich narzędzi jak: Cisco Auditing Tool czy Cisco-Torch, kt&oacute;re potrafią wykonać atak brute-force bądź atak słownikowy na urządzenie celem złamania danych logowania.</p> <p>&nbsp;</p> <p>Atak ARP na switch jest uruchomiony i jak widać poniżej powi&oacute;dł się on - gdyż ruch sieciowy ze stacji 10.0.0.1 z kt&oacute;rej będzie wykonywane logowanie do switcha jest przekazywany w kierunku hosta atakującego 10.0.0.30 (oczywiście podczas prowadzenia prawdziwego ataku do tych informacji jeszcze nie mamy dostępu - zadaniem zrzutu umieszczonego poniżej jest tylko pokazanie Ci Czytelniku iż atak zatrucia bufora ARP zakończył się powodzeniem).</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image112.png" alt="image112" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Administrator wykonuje proces logowania i jak widać poniżej po analizie przechwyconych pakiet&oacute;w udaje Nam się zdobyć hasło - <strong>cisco</strong> (hasło do nawiązania połączenia oraz do przejścia do trybu enable).</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image113.png" alt="image113" width="700" height="582" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Atak zatrucia tablicy ARP możemy zakończyć gdyż zdobyliśmy potrzebne nam dane.</p> <p>&nbsp;</p> <p>W naszych rozważaniach wszystko przebiegło po naszej myśli gdyż zostały spełnione określone warunki, kt&oacute;re umożliwiły Nam przeprowadzenie ataku z powodzeniem.</p> <p>&nbsp;</p> <p>Pierwszym błędem jest wykorzystanie protokołu Telnet, kt&oacute;ry został użyty do nawiązania połączenia z przełącznikiem. Protok&oacute;ł ten nie gwarantuje Nam żadnej ochrony podczas przesyłania danych gdyż wszystkie informacje nie są w żaden spos&oacute;b szyfrowane - cała komunikacja odbywa się otwartym tekstem. Osoba przeprowadzająca atak uzyska wszystkie niezbędne dane. Zatem by zwiększyć bezpieczeństwo sieci zrezygnuj z Telnetu na rzecz bezpieczniejszego protokołu jakim jest SSH (jak przeprowadzić taką konfigurację dowiesz się po przeczytaniu wpisu - <a href="http://slow7.pl/item/103-co-w-sieci-siedzi-warstwa-2-czyli-podstawowa-konfiguracja-przelacznika-cisco" title="Co w sieci siedzi. Warstwa 2 czyli podstawowa konfiguracja przełącznika CISCO"><span style="text-decoration: none;">Co w sieci siedzi. Warstwa 2 czyli podstawowa konfiguracja przełącznika CISCO</span></a>).</p> <p>&nbsp;</p> <p>Drugim błędem jest umieszczenie adresu IP przełącznika przez kt&oacute;ry uzyskujemy dostęp do urządzenia w tej samej sieci VLAN w kt&oacute;rej pracują użytkownicy sieci. Dobrą praktyką jest wydzielenie odrębnej sieci VLAN służącej do administrowania urządzeniami sieciowymi a co do kt&oacute;rej dostęp mają tylko administratorzy. Wydzielenie osobnej sieci VLAN służącej do zarządzania urządzeniami zagwarantuje Nam, że postronni użytkownicy sieci nie będą mieli dostęp do adres&oacute;w IP, kt&oacute;re urządzeniom zostały przypisane. Jak taką sieć VLAN skonfigurować dowiesz się tu: <a href="http://slow7.pl/item/105-co-w-sieci-siedzi-warstwa-2-konfiguracja-sieci-vlan" title="Co w sieci siedzi. Warstwa 2 - konfiguracja sieci VLAN."><span style="text-decoration: none;">Co w sieci siedzi. Warstwa 2 - konfiguracja sieci VLAN.</span></a></p> <p>&nbsp;</p> <p>Aby dodatkowo zwiększyć poziom bezpieczeństwa możesz r&oacute;wnież zdefiniować adresy IP kt&oacute;re mają prawo łączyć się z danym urządzeniem.</p> <p>&nbsp;</p> <p>W sieciach w kt&oacute;rych bezpieczeństwo jest stawiane na pierwszym miejscu stosuje się jeszcze inny wybieg polegający na stworzeniu całkiem odrębnej fizycznej sieci, kt&oacute;ra służy tylko do zarządzania oraz monitorowania urządzeń sieciowych (metoda Out of Band). Rozwiązanie te znacząco podnosi poziom bezpieczeństwa, gdyż do sieci takiej mają dostęp tylko administratorzy (normalni użytkownicy z niej nigdy nie korzystają) a dodatkowo mamy redundancję zapewniającą nam dostęp do urządzeń gdy właściwa sieć przestanie działać (dodatkowy kanał komunikacyjny).</p> <p>&nbsp;</p> <p>Atakujący zdobył dostęp do przełącznika a tym samym uzyskał wgląd w ustawienia urządzenia i na pewno jest bogatszy o wiele cennych informacji dotyczących budowy naszej sieci. Dodatkowo uzyskuje on możliwość manipulowania urządzeniem.</p> <p>&nbsp;</p> <p>Jedną z ciekawszych rzeczy jakie może wykorzystać atakujący jest wykorzystanie funkcji <strong>port mirroring</strong>. Działanie tego mechanizmu sprowadza się do wskazania interfejs&oacute;w przełącznika, z kt&oacute;rych cały ruch sieciowy (odbierany, wysyłany bądź oba) będzie kopiowany na inny wybrany port. W przypadku CISCO mechanizm ten nazwano SPAN (ang. Switch Port Analyzer).</p> <p>&nbsp;</p> <p>Spr&oacute;bujmy zatem wykorzystać tę funkcję przełącznika.</p> <p>&nbsp;</p> <p>Atakujący dzięki zdobytym danym uwierzytelniającym wykonuje proces logowania do urządzenia i konfiguruje kopiowanie ruchu sieciowego tak by m&oacute;c przechwytywać komunikacje pomiędzy hostem o adresie IP 10.0.0.1 a 10.0.0.20</p> <p>&nbsp;</p> <p>Ustawienie sesji sprowadza się do wydania dw&oacute;ch poleceń:</p> <p style="margin-left: 30px;">1 - <strong>monitor session &lt;numer_sesji&gt; source interface &lt;id_interfejsu&gt; &lt;rodzaj_ruch_sieciowego&gt; </strong>- polecenie określa numer sesji funkcji SPAN oraz definiuje interfejs z kt&oacute;rego ruch ma zostać skopiowany wraz z typem ruchu. W naszym przypadku kopiowany będzie ruch sieciowy przychodzący i wychodzący z interfejsu f0/1 (do portu tego podłączony jest host 10.0.0.1 - port f0/7 r&oacute;wnież jest dobrym wyborem). Użycie parametru: <strong>rx</strong> definiuje ruch otrzymywany przez przełącznik zaś parametr: <strong>tx</strong> określa ruch opuszczający dany interfejs.</p> <p style="margin-left: 30px;">2- <strong>monitor session &lt;numer_sesji&gt; destination interface &lt;id_interfejsu&gt;</strong> - polecenie definiuje do kt&oacute;rego interfejsu ma zostać przesłany skopiowany ruch sieciowy.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image114.png" alt="image114" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Atakujący kopiowanie ruchu sieciowego ustawił na interfejs f0/3 czyli port do kt&oacute;rego sam jest podłączony. To niestety jest błąd gdyż zatwierdzając drugie polecenie pozbawił się łączności z siecią a tym samym stracił możliwość wydawania poleceń urządzeniu.</p> <p>&nbsp;</p> <p>Normalna łączność z siecią został utracona lecz na interfejs f0/3 przełącznika jest realizowany proces kopiowania otrzymywanych/wysyłanych danych z interfejsu f0/1. Uruchamiając narzędzie do przechwytywania pakiet&oacute;w możemy rejestrować łączność pomiędzy hostami. Na hoście 10.0.0.1 wydano polecenie ping w kierunku hosta 10.0.0.20 jak widać poniżej udało się tą komunikację przechwycić.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image115.png" alt="image115" width="700" height="423" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Konfigurację SPAN możemy zweryfikować wydając polecenie: <strong>show monitor session &lt;numer_sesji&gt;</strong></p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image116.png" alt="image116" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Gdy atakujący ma dostęp do przełącznika może poprzez jego konfigurację zdobyć wiele cennych informacji w tym przypadku ustawienie interfejsu f0/3 jako tego na kt&oacute;ry ma być kopiowany ruch oczywiście dla przeprowadzającego atak zakończyło się powodzeniem pomimo tego, że sam fizycznie od sieci się odciął. Aby uniknąć tego typu sytuacji, ruch monitorowany należałoby kopiować na inny np. nie używany interfejs do kt&oacute;rego jest podpięta stacja kontrolowana r&oacute;wnież prze atakującego.</p> <p>&nbsp;</p> <p>Mechanizm SPAN bardzo często jest wykorzystywany przez samych administrator&oacute;w do wykrywania anomalii w ruchu sieciowym. Do interfejsu takiego można podpiąć komputer, kt&oacute;ry w czasie rzeczywistym otrzymywane pakiety będzie analizował i gdy wykryje jakieś nieprawidłowości zostaniemy o nich powiadomieni - systemy IDS/IPS kt&oacute;rych zadaniem jest wykrywanie (IDS) lub wykrywanie i blokowanie atak&oacute;w sieciowych (IPS).</p> <p>&nbsp;</p> <p>W przypadku CISCO istnieje odmiana sesji SPAN, kt&oacute;ra może być stosowana w odniesieniu do sieci VLAN - tzw. VSPAN &ndash; Virtual SPAN.</p> <p>&nbsp;</p> <p>Przykładowy zapis zamieszczony poniżej oznacza, że na porcie f0/3 pojawią się kopie ramek kierowanych do port&oacute;w przełącznika, kt&oacute;re swoje interfejsy mają przypisane do sieci VLAN o numerach od 10 do 12.</p> <p style="padding-left: 30px;"><strong>switch(config)# monitor session 1 source vlan 10-12 rx</strong></p> <p style="padding-left: 30px;"><strong>switch(config)# monitor session 1 destination interface f0/3</strong></p> <p>&nbsp;</p> <p>Działanie funkcji SPAN dodatkowo możemy rozszerzyć na wiele przełącznik&oacute;w, kt&oacute;re są ze sobą połączone oraz skonfigurowane tak by przechwytywany ruch sieciowy odbywał się poprzez inne switche do komputera go rejestrującego - RSPAN (Remote SPAN).</p> <p>&nbsp;</p> <p>Dokładna konfiguracja urządzeń pod kątem monitorowania i przechwytywania ruchu sieciowego i jego dalszej analizie wykracza już poza ramy tego wpisu, co nie oznacza że do tematu tego nie będę chciał w przyszłości wr&oacute;cić.</p> <p>&nbsp;</p> <p>Wracając jeszcze chwilkę do metody wykorzystanej przez atakującego to oczywiście możliwy jest r&oacute;wnież taki scenariusz (pod warunkiem, że atakujący ma dostęp fizycznie do sieci) w kt&oacute;rym następuje podpięcie dodatkowego urządzenia na drodze pomiędzy hostem 10.0.0.1 a 10.0.0.20, kt&oacute;rego zadaniem będzie kopiowanie otrzymywanego ruchu sieciowego. Do tego zadania posłużyć może nam najzwyklejszy koncentrator (pamiętamy, że w przypadku hub&oacute;w sieciowych ruch jest wysyłany na wszystkie jego porty) bądź możemy skorzystać z bardziej zaawansowanego urządzenia jakim jest TAP. Zadaniem tego typu urządzeń jest przekazywanie ruchu sieciowego przy jednoczesnym kopiowaniu go. TAP zaopatrzony jest z reguły w trzy porty: port A, port B oraz port monitorujący. Porty A i B służą do połączenia urządzenia z istniejącą strukturą sieciową zaś na port monitorujący przesyłany jest cały ruch sieciowy jaki jest przekazywany pomiędzy portem A i portem B. Dużą zaletą tego typu urządzeń jest fakt iż nie wprowadzają one żadnych dodatkowych op&oacute;źnień czy spadk&oacute;w przepustowości łącza (jak to ma w przypadku użycia koncentratora) podczas przesyłania danych. W sprzedaży przez takie firmy jak: NetOptics, Finisar czy Gigamon są modele TAP-&oacute;w, kt&oacute;re przeznaczone są do sieci tradycyjnych jak i światłowodowych.</p> <p>&nbsp;</p> <p>Tak więc topologia sieciowa w przypadku użycia dodatkowego urządzenia, kt&oacute;rego celem byłoby przechwytywanie pakiet&oacute;w mogłaby wyglądać następująco (cały czas pamiętamy, że tego typu rozwiązanie wymaga fizycznego dostępu do atakowanej sieci):</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image117.png" alt="image117" width="700" height="366" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Wniosek z takiego scenariusz płynie taki - że bezpieczeństwo naszej sieci nie sprowadza się tylko do właściwej konfiguracji urządzeń sieciowych ale r&oacute;wnież obejmuje ochronę fizycznego dostępu do infrastruktury.</p> <p>&nbsp;</p> <p>Wracamy do wątku gł&oacute;wnego i omawiamy dalej jak ustrzec się przed atakiem zatrucia tablicy ARP.</p> <p>&nbsp;</p> <p>Aby zapobiec zmianie tablicy ARP na przełączniku tak samo jak na hostach możemy zdefiniować statyczne adresy MAC, kt&oacute;re zostaną powiązane z adresem IP i interfejsem przełącznika. Sprawdzenie tablicy ARP w kontekście adres&oacute;w nauczonych dynamicznie i statycznie wykonamy wydając komendę: <strong>show arp dynamic</strong> bądź <strong>show arp static</strong> Jak widać poniżej w tablicy ARP przełącznika istnieją tylko dwa wpisy poznane w spos&oacute;b dynamiczny i brak jest wpis&oacute;w statycznych. Naszym celem jest utworzenie dla host&oacute;w 10.0.0.1 oraz 10.0.0.20 wpis&oacute;w statycznych tak by ich zamiana była niemożliwa.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image118.png" alt="image118" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Rozpoczynamy od usunięcia istniejących wpis&oacute;w. Usunięcie powiązania wykonamy za pomocą komendy: <strong>clear ip arp &lt;adres_IP&gt; </strong>Ponowne sprawdzenie tablicy uwidacznia brak jakichkolwiek wpis&oacute;w dynamicznych.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image119.png" alt="image119" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Wpisy statyczne definiujemy za pomocą polecenia: <strong>arp &lt;adres_IP&gt; &lt;adres_MAC&gt; arpa &lt;interfejs&gt; </strong>Komendę wydajemy w trybie konfiguracji globalnej. Poniżej zostały utworzone wpisy statyczne dla obu host&oacute;w.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image120.png" alt="image120" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Poprawność dodania wpis&oacute;w zweryfikujemy za pomocą znanego Nam już polecenia: <strong>show arp static </strong>Wpisy zostały dodane prawidłowo.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image121.png" alt="image121" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Dodatkowo wszystkie wpisy zapisane w tablicy możemy sprawdzić poleceniem: <strong>show ip arp</strong> zaś gdy chcemy uzyskać jeszcze bardziej szczeg&oacute;łowe dane możemy posłużyć się komendą: <strong>show arp &lt;static|dynamic&gt; detail</strong></p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image122.png" alt="image122" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Ustawienie wpis&oacute;w statycznych na przełączniku tak samo jak w przykładzie poprzednim w kt&oacute;rym to tablicę ARP definiowaliśmy na hoście uchroni Nas przed atakiem zatrucia tablicy ARP switcha - wpisy określone statycznie mają pierwszeństwo przed tymi poznanymi w spos&oacute;b dynamiczny.</p> <p>&nbsp;</p> <p>Kontrolę nad pakietami ARP możemy sprawować jeszcze przy pomocy jednego mechanizmu jakim jest <strong>Dynamic ARP Inspection</strong>. Zadaniem funkcji jest kontrolowanie pojawiających się wpis&oacute;w ARP tak by tylko uprawnione hosty mogły zostać dopuszczone do komunikacji. Działanie tego mechanizmu jest ściśle powiązane z opisywaną już funkcją DHCP snooping gdyż to na podstawie tablicy przydzielonych adres&oacute;w IP powiązanych wraz z adresami MAC opiera się działanie inspekcji prowadzonej przez przełącznik. Dla poprawnego działania funkcji musi istnieć tablica tworzona dzięki włączonemu mechanizmowi DHCP snooping gdyż to na jej podstawie (badane są dwa pola tablicy tj. IPAddress oraz MACAddress) następuje weryfikacja istnienia hosta, kt&oacute;ry dane pakiety ARP generuje. Brak hosta w tablicy skutkuje zablokowaniem prowadzenia komunikacji.</p> <p>&nbsp;</p> <p>Aby bardziej szczeg&oacute;łowo zademonstrować działanie mechanizmu przejdźmy do jego konfiguracji.</p> <p>&nbsp;</p> <p>Konfigurację rozpoczynamy od włączenia funkcji DHCP snooping (punkt 1 oraz 2) a następnie za pomocą komendy: <strong>ip arp inspection vlan &lt;id_sieci_VLAN&gt;</strong> uaktywniamy mechanizm Dynamic ARP Inspection (punkt 3). Polecenia wydajemy w trybie konfiguracji globalnej.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image123.png" alt="image123" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Oba potrzebne mechanizmy zostały uruchomione.</p> <p>&nbsp;</p> <p>Przechodzimy do konfiguracji interfejsu f0/1 gdyż to do tego portu podłączony jest serwer DHCP. W trybie konfiguracji interfejsu definiujemy ten port jako zaufany dla obu włączonych proces&oacute;w:</p> <ul> <li style="padding-left: 60px;"><strong>ip dhcp snooping trust</strong> - mechanizm DHCP snooping,</li> <li style="padding-left: 60px;"><strong>ip arp inspection trust</strong> - mechanizm Dynamic ARP Inspection.</li> </ul> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image124.png" alt="image124" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Reszta interfejs&oacute;w przełącznika otrzymuje status portu niezaufanego - <strong>no ip arp inspection trust </strong>(punkt 1). Dodatkowo zostaje określony pr&oacute;g możliwych do wystąpienia w czasie jednej sekundy pakiet&oacute;w ARP (punkt 2). Oczywiście możemy dodatkowo określić limit pakiet&oacute;w DHCP, leczy by nie wprowadzać dodatkowego zamieszania z dodatkowymi komendami z tej opcji zrezygnowałem - skupiamy się na Dynamic ARP Inspection.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image125.png" alt="image125" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Aby całość przeprowadzanej konfiguracji była prawidłowa a co za tym idzie by działanie mechanizmu odbywało się prawidłowo w trybie konfiguracji globalnej należy wydać jeszcze jedno polecenie: <strong>no ip dhcp snooping information option</strong> Zadaniem tej komendy jest przekazanie do serwera DHCP prawidłowego pakietu żądania by przydzielona konfiguracja sieciowa mogła zostać dostarczona do klienta. Temat sensu wydania tej komendy niestety wykracza poza ramy tego wpisu i dokładne wytłumaczenie istoty problemu wymagałoby zbyt obszernych wyjaśnień - co nie oznacza, że do tematu nie powr&oacute;cę. Jeśli Czytelniku byłbyś szczeg&oacute;lnie zainteresowany tym zagadnieniem odsyłam do wpisu - <a href="http://blog.ine.com/2009/07/22/understanding-dhcp-option-82/"></a><a>http://blog.ine.com/2009/07/22/understanding-dhcp-option-82/</a></p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image126.png" alt="image126" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Host 10.0.0.1 nawiązuje połączenie z serwerem DHCP i zostaje mu przypisany adres IP. Po przypisaniu adresu IP hostowi w tablicy DHCP snooping fakt ten powinien zostać odnotowany. Sprawdzenia tablicy dokonamy za pomocą polecenia: <strong>show ip dhcp snooping binding</strong></p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image127.png" alt="image127" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Host 10.0.0.1 uzyskał dostęp do sieci i może prawidłowo komunikować się z innymi hostami.</p> <p>&nbsp;</p> <p>A co w przypadku hosta atakującego? Host o adresie IP 10.0.0.30 korzysta z konfiguracji statycznej z pominięciem serwera DHCP. Pomimo prawidłowego skonfigurowania interfejsu sieciowego hosta nie ma on możliwości nawiązania poprawnej komunikacji z innymi komputerami. Test ping w połączeniu z adresem 10.0.0.20 kończy się niepowodzeniem.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image128.png" alt="image128" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Ślady przeprowadzenia testu ping odnajdziemy r&oacute;wnież w komunikatach przełącznika. Komunikacja hosta 10.0.0.30 z siecią jest niemożliwa gdyż w tablicy mechanizmu DHCP snooping brak jest wpisu odnoszącego się do tego komputera.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image129.png" alt="image129" width="700" height="258" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Spr&oacute;bujmy sytuację naprawić i na hoście 10.0.0.30 modyfikujemy konfigurację sieciową poprzez zrezygnowanie z metody opartej o wpisy statyczne. Host został skonfigurowany w ten spos&oacute;b aby potrzebne ustawienia sieci uzyskać dzięki serwerowi DHCP. Hostowi zostaje przypisany adres IP 10.0.0.31</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image130.png" alt="image130" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Fakt przypisania adresu IP przez serwer DHCP odnajdziemy w tablicy DHCP snooping przełącznika.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image131.png" alt="image131" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Ponownie wykonujemy test ping - tym razem komunikacja pomiędzy komputerami 10.0.0.31 a 10.0.0.20 jest możliwa.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image132.png" alt="image132" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Weryfikację działania mechanizmu Dynamic ARP Inspection wraz z statystykami dokonamy dzięki wydaniu polecenia: <strong>show ip arp inspection</strong></p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image133.png" alt="image133" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Konfigurację interfejs&oacute;w w kontekście działania mechanizmu poznamy wydając komendę: <strong>show ip arp inspection interfaces</strong></p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image134.png" alt="image134" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Lecz co się stanie gdy host 10.0.0.31 zacznie przeprowadzać atak zatrucia bufora ARP? Aby odpowiedzieć na to pytanie należy atak tego typu zasymulować. Na hoście 10.0.0.31 zostaje uruchomione narzędzie Ettercap. Jak zapewne pamiętasz Czytelniku pierwszym etapem przy definicji parametr&oacute;w ataku jest przeprowadzenie skanowania aktywnych host&oacute;w. Proces skanowania zostaje uruchomiony lecz kończy się on niepowodzeniem gdyż ilość wygenerowanych pakiet&oacute;w ARP przekracza ustalony limit ustawiony dla interfejsu. Interfejs f0/3 zostaje wyłączony.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image135.png" alt="image135" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Sprawdzenie statusu portu wskazuje na stan err-disabled a za wyłączenie go odpowiada mechanizm Dynamic ARP Inspection.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image136.png" alt="image136" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Aby interfejs odblokować w trybie jego konfiguracji wydajemy polecenie: <strong>shutdown</strong> a następnie <strong>no shutdown</strong>.</p> <p>&nbsp;</p> <p>Sprawdźmy co stanie się w sytuacji w kt&oacute;rej proces skanowania uda Nam się przeprowadzić i host 10.0.0.31 uruchomi atak ARP spoofing. Limit pakiet&oacute;w powodujących wyłączenie interfejsu zostaje zwiększony do 100. Proces skanowania tym razem przebiega bez zakł&oacute;ceń i atakujący uruchamia atak.</p> <p>&nbsp;</p> <p>Atak zostaje przerwany z powodu błęd&oacute;w w dopasowaniu adres&oacute;w MAC oraz IP zapisanych w tablicy DHCP snooping.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image137.png" alt="image137" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Mechanizm inspekcji ARP zadziałał prawidłowo nie dopuszczając do przeprowadzenia ataku.</p> <p>&nbsp;</p> <p>Udało Nam się zapobiec atakom zatrucia tablicy ARP poprzez konfigurację przełącznika lecz metody ochrony możemy r&oacute;wnież rozszerzyć o hosty (ale to już też Czytelniku wiesz) .</p> <p>&nbsp;</p> <p>Sprawdźmy zatem jakie mamy możliwości by zapobiec atakowi ARP poprzez wykorzystanie do tego celu odrębnych aplikacji.</p> <p>&nbsp;</p> <p>Powracamy po raz kolejny do narzędzia WinArpAttacker, do tej pory aplikacja ta służyła nam do przeprowadzania atak&oacute;w na sieć teraz odwracamy rolę i pokażę jak wykorzystać te narzędzie by sieć ochronić.</p> <p>&nbsp;</p> <p>Domyślnie po uruchomieniu programu, aplikacja przejmuje kontrolę nad tablicą ARP hosta na kt&oacute;rym została uruchomiona i na bieżąco kontroluje czy nie zaszły w niej jakieś zmiany. Jeśli takowe nastąpią użytkownik zostanie o nich powiadomiony stosownym komunikatem.</p> <p>&nbsp;</p> <p>Przejdźmy zatem do zobrazowania takiej sytuacji. Narzędzie zostało uruchomione na hoście o adresie IP 10.0.0.1 (kontrolą integralności tablicy zarządzamy za pomocą dw&oacute;ch ikon <strong>Detect</strong> oraz <strong>Stop</strong>). W kolejnym kroku atakujący czyli host 10.0.0.30 przeprowadza atak mający na celu zatrucie tablicy ARP tak by możliwe było przechwytywanie ruchu sieciowego pomiędzy hostami 10.0.0.1 a 10.0.0.20.</p> <p>&nbsp;</p> <p>Jak już wiesz Czytelniku by atak ARP powi&oacute;dł się oryginalny adres MAC skojarzony z adresem 10.0.0.20 (08-00-27-AB-D3-93) musi zostać zamieniony na adres MAC atakującego (EE-EE-EE-EE-EE-EE) tak by wszystkie ramki były przekazywane przez niego.</p> <p>&nbsp;</p> <p>Uruchomienie ataku wyzwala komunikat o zmianie domyślnego adresu MAC hosta 10.0.0.20 na adres MAC EE-EE-EE-EE-EE-EE Adres ten ulega zmianie lecz po chwili uruchomiona opcja ochrony tablicy ARP adres MAC atakującego ponownie zmienia na prawidłowy.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image138.png" alt="image138" width="700" height="553" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Jak można się domyśleć dzięki narzędziu WinArpAttacker atak z wykorzystaniem zatrucia tablicy ARP nie dochodzi do skutku. Wydanie polecenia ping z hosta 10.0.0.1 w kierunku komputera 10.0.0.20 nie jest rejestrowane przez atakującego.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image139.png" alt="image139" width="700" height="430" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>W systemie Linux sp&oacute;jność tablicy ARP możemy kontrolować za pomocą narzędzia: <strong>arpwatch </strong>Aby zainstalować niezbędne pakiety wydaj polecenie: <strong>apt-get install arpwatch</strong> Program ten po uruchomieniu kontroluje stan tablicy ARP na komputerze lokalnym i jeśli zajdzie zmiana fakt ten zostanie zarejestrowany w pliku: <strong>/var/log/syslog</strong></p> <p>&nbsp;</p> <p>Aby uruchomić narzędzie wydajemy polecenie: <strong>/etc/init.d/arpwatch start </strong>(punkt 1) a następnie za pomocą komendy: <strong>arpwatch -i &lt;identyfikator_interfejsu_sieciowego&gt;</strong> określamy interfejs, kt&oacute;ry ma podlegać nadzorowi (punkt 2).</p> <p>&nbsp;</p> <p>W opisie przyjęto iż host o adresie IP 10.0.0.1 to ofiara (na hoście tym zostaje uruchomiony daemon arpwatch) natomiast atakujący to komputer o adresie IP 10.0.0.30 i tak jak w przypadku sytuacji z wykorzystaniem aplikacji WinArpAttacker naszym celem jest przechwycenie ruchu sieciowego pomiędzy komputerami 10.0.0.1 a 10.0.0.20</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image140.png" alt="image140" width="700" height="89" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Narzędzie zostało uruchomione i działa w tle aby mieć podgląd na pojawiające się komunikaty wydaj polecenie: <strong>tail -f /var/log/syslog </strong></p> <p>&nbsp;</p> <p>Atakujący przeprowadza atak zatrucia tablicy ARP. Uruchomiona usługa arpwatch wykrywa zamianę adresu MAC i Nas o fakcie tym informuje. Niestety w tym przypadku nie mamy aktywnej ochrony jak to miało miejsce przy wykorzystaniu programu WinArpAttacker i atak kończy się sukcesem, atakujący może przechwytywać ruch sieciowy (na razie, gdyż administrator wie, że atak nastąpił i może do następnego nie dopuścić - atakujący został wykryty).</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image141.png" alt="image141" width="700" height="193" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Arpwatch opr&oacute;cz zamiany adres&oacute;w MAC wykrywa r&oacute;wnież ataki typu LAN storm, kt&oacute;re związane są z protokołem ARP, gdy atak nastąpi stosowne komunikaty pojawią się w pliku <strong>/var/log/syslog</strong> Poniżej przedstawiono zrzut pliku w kt&oacute;rym zarejestrowano przebieg ataku zalewania sieci pakietami ARP Request.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image142.png" alt="image142" width="700" height="579" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>W zarządzanej sieci komputerowej interfejsy sieciowe, kt&oacute;re pracują w trybie nasłuchiwania (ang. promiscuous mode) stanowią potencjalne zagrożenie gdyż karta sieciowa pracująca w tym trybie zdolna jest do rejestrowania danych, kt&oacute;re nie są dla niej przeznaczone. Wykrycie interfejs&oacute;w sieciowych pracujących w tym trybie jest sygnałem dla administratora sieci, że dzieje się coś niepokojącego.</p> <p>&nbsp;</p> <p>Aby wykryć w zarządzanej sieci interfejsy, kt&oacute;re korzystają z tego trybu można posłużyć się m.in. narzędziem WinArpAttacker. Po uruchomieniu programu z g&oacute;rnego menu wybieramy pozycję <strong>Scan</strong> a następnie opcję <strong>Advanced</strong>, kt&oacute;ra to uruchomi dodatkowe okno za pomocą kt&oacute;rego zdefiniujemy opcję skanowania.</p> <p>&nbsp;</p> <p>W oknie <strong>Scan</strong> określamy zakres skanowania oraz jego tryb. Zaznaczenie opcji <strong>Antisniff scan</strong> spowoduje przeprowadzenie skanowania pod kątem wystąpienia interfejs&oacute;w pracujących w trybie nasłuchiwania. Operacja skanowania polega na wysłaniu specjalnie spreparowanych pakiet&oacute;w i badaniu uzyskanych odpowiedzi. Szczeg&oacute;łowy opis klasyfikacji interfejsu, kt&oacute;ry pracuje w trybie domyślnym bądź w trybie promiscuous wykracza poza ramy tego wpisu więc procedurę przyszeregowania interfejsu do danego trybu pracy postaram opisać się w oddzielnym wpisie. Jeśli ten temat Czytelniku szczeg&oacute;lnie Cię interesuje odsyłam do wpis&oacute;w zawartych pod następującymi odnośnikami (wersja angielska) - <a href="http://www.securityfriday.com/promiscuous_detection_01.pdf">http://www.securityfriday.com/promiscuous_detection_01.pdf</a> bądź <a>http://hadmernok.hu/132_27_nagyd_1.pdf</a></p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image143.png" alt="image143" width="700" height="507" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po zatwierdzeniu skanu przyciskiem <strong>Scan</strong> następuje proces odkrywania urządzeń, kt&oacute;rych karty sieciowe pracują w trybie promiscuous. Jak widać poniżej skan naszej ćwiczebnej sieci uwidocznił dwa takie interfejsy - pierwszy z nich (10.0.0.1) to interfejs komputera przeprowadzającego skanowanie a drugi (10.0.0.30) należy do atakującego.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image144.png" alt="image144" width="700" height="507" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>W systemie Linux (lecz także Windows) do skanowania możemy użyć narzędzia NMap a m&oacute;wiąc bardziej szczeg&oacute;łowo jednego ze skrypt&oacute;w napisanych dla tego programu, kt&oacute;rego celem jest wykrycie interfejs&oacute;w pracujących w trybie nasłuchiwania.</p> <p>&nbsp;</p> <p>Aby uruchomić proces skanowania należy wydać polecenie: <strong>nmap --script=sniffer-detect &lt;zakres_skanowania&gt;</strong></p> <p>&nbsp;</p> <p>Poniżej zaprezentowałem proces skanowania dw&oacute;ch host&oacute;w o adresach IP 10.0.0.30 oraz 10.0.0.20 i jak można zauważyć w przypadku tego pierwszego skan ujawnił iż interfejs tego hosta jest ustawiony do pracy w trybie promiscuous.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image145.png" alt="image145" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Ataki typu LAN storm mogą zostać unieszkodliwione dzięki zastosowaniu funkcji przełącznika nazwanej <strong>storm control</strong>, kt&oacute;rej zadaniem jest monitorowanie poziomu ruchu sieciowego.</p> <p>&nbsp;</p> <p>Mechanizm Storm control do pomiaru aktywności ruchu sieciowego może wykorzystywać jedną z następujących metod:</p> <ul> <li style="padding-left: 60px;">pomiar szerokości pasma jako procent całkowitego pasma dostępnego na porcie,</li> <li style="padding-left: 60px;">pomiar szybkości w jakiej odbierane są pakiety - szybkość tą możemy wyrazić w packets/sec lub bits/sec.</li> </ul> <p>&nbsp;</p> <p>Można ustawić zar&oacute;wno pr&oacute;g ruchu narastającego, jak i pr&oacute;g ruchu opadającego.</p> <p>&nbsp;</p> <p>Nieważne z kt&oacute;rej metody skorzystamy, gdy zostaje osiągnięty zdefiniowany pr&oacute;g, port zostaje zablokowany.</p> <p>&nbsp;</p> <p>Jeśli zdefiniowano tzw. pr&oacute;g opadający blokowanie portu następuje powyżej ustalonej wartości zaś gdy poziom ruchu sieciowego opadnie poniżej zdeklarowanej wartości port powraca do normalnego funkcjonowania.</p> <p>&nbsp;</p> <p>Mechanizm ten konfigurujemy w trybie danego interfejsu poprzez ustalenie wartości progowych dla danego typu ruchu.</p> <p>&nbsp;</p> <p>W przypadku wybrania metody opartej na określeniu procentu dostępnego pasma, dostępne wartości ustalamy z przedziału od 0.00% do 100.00%. Przy czym wartość 100.00% oznacza, że na dany typ ruchu nie nałożono żadnego limitu zaś wartość 0.00% oznacza, że cały ruch danego typu na porcie jest blokowany.</p> <p>&nbsp;</p> <p>Przejdźmy zatem do części praktycznej i sprawdźmy mechanizm w działaniu. Ponieważ stacja atakującego jest podpięta do interfejsu f0/3 przełącznika tak więc funkcję tą włączymy właśnie na tym porcie.</p> <p style="margin-left: 30px;">1 - wydanie polecenia spowoduje ustalenie dozwolonego progu ruchu broadcast na 12,5%,</p> <p style="margin-left: 30px;">2 - ustalenie progu ruchu multicast na poziom - pr&oacute;g narastający 3000 pakiet&oacute;w w ciągu sekundy, pr&oacute;g opadający 2000 pakiet&oacute;w na sekundę (po przekroczeniu wartości 3k pps następuje blokada portu zaś gdy ruch opadnie do wartości poniżej 2k pps port zostaje włączony),</p> <p style="margin-left: 30px;">3 - ustalenie akcji związanej z przekroczeniem wartości progowych - w tym przypadku wyłączenie portu. Wydanie polecenia: <strong>storm-control action trap switch </strong>spowoduje wysłanie loga SNMP w momencie pojawienia się burzy pakiet&oacute;w.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image146.png" alt="image146" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Weryfikację ustawień możemy przeprowadzić wydając polecenia: <strong>show storm-control</strong> bądź <strong>show storm-control &lt;określony_typ_ruchu_sieciowego&gt;</strong></p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image147.png" alt="image147" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Mechanizm został skonfigurowany. Przechodzimy na hosta atakującego i na nim zostaje uruchomiony atak generujący dużą ilość pakiet&oacute;w broadcast (atak typu DHCP consumption attacks). Chwilę po uruchomieniu ataku port zostaje wyłączony - zdefiniowany procent wykorzystania pasma dla tego typu ruchu został przekroczony.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image148.png" alt="image148" width="700" height="120" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Status interfejsu możemy sprawdzić wydając komendę: <strong>show interfaces status err-disabled</strong> Jak widzimy poniżej port jest wyłączony z powodu naruszenia zdefiniowanej polityki bezpieczeństwa związanej z mechanizmem storm-control.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image149.png" alt="image149" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Aby interfejs odblokować w trybie jego konfiguracji wydajemy polecenie: <strong>shutdown</strong> a następnie <strong>no shutdown</strong>.</p> <p>Podsumowując wpis aby uniknąć opisywanych atak&oacute;w zastosuj się do poniższych wskaz&oacute;wek:</p> <ul> <li style="padding-left: 60px;">pamiętaj, że bezpieczeństwo sieci do r&oacute;wnież ochrona fizyczna dostępu do urządzeń oraz do komputer&oacute;w,</li> <li style="padding-left: 60px;">protokoły z kt&oacute;rych nie korzystasz - wyłącz,</li> <li style="padding-left: 60px;">nieużywane interfejsy przełącznika - wyłącz a te do kt&oacute;rych są podpięte urządzenia końcowe ustaw do pracy w trybie access,</li> <li style="padding-left: 60px;">skonfiguruj mechanizm Port Security,</li> <li style="padding-left: 60px;">odseparuj dostęp zdalny do urządzeń sieciowych od sieci domyślnej, utw&oacute;rz do tego celu osobny VLAN,</li> <li style="padding-left: 60px;">realizując dostęp zdalny nie wykorzystuj protokołu Telnet, zamień go na SSH,</li> <li style="padding-left: 60px;">celem analizowania ruch sieciowego wykorzystaj funkcję SPAN,</li> <li style="padding-left: 60px;">pamiętaj o takich mechanizmach jak Dynamic ARP Inspection, DHCP Snooping oraz Storm control,</li> <li style="padding-left: 60px;">rozważ wprowadzenie ochrony dostępu do sieci w oparciu o wykorzystanie protokołu 802.1X</li> </ul> <p>&nbsp;</p> <p>I tu kończymy. Wyszło tego sporo. Powiem szczerze, że w planach miałem opisanie r&oacute;wnież bardziej subtelnych atak&oacute;w związanych z sieciami VLAN, protokołem STP czy połączeniami typu trunk ale postanowiłem to rozbić na odrębne wpisy ze względu na dość obszerny zakres omawianego tematu. Jak m&oacute;wi stare przysłowie - &bdquo;Co się odwlecze, to nie uciecze&rdquo; tak więc do tematu wr&oacute;cimy już wkr&oacute;tce (jeden wpis a już obiecałem 4 inne).</p> <p>&nbsp;</p> <p>I tak już na sam koniec - złota myśl (gdzieś kiedyś to usłyszałem i strasznie mi się spodobało, bo wiele prawdy w tym) - pamiętaj, że BEZPIECZEŃSTWO JEST ZAWSZE KOSZTEM WYGODY</p> <p>&nbsp;</p> <hr /> <p>BIBLIOGRAFIA</p> <p>&nbsp;</p> <p><a href="http://www.thegeekstuff.com/2012/05/ettercap-tutorial">http://www.thegeekstuff.com/2012/05/ettercap-tutorial</a></p> <p><a href="https://pentestmag.com/ettercap-tutorial-for-windows/">https://pentestmag.com/ettercap-tutorial-for-windows/</a></p> <p><a href="http://www.hacking-tutorial.com/hacking-tutorial/kali-linux-man-middle-attack">www.hacking-tutorial.com/hacking-tutorial/kali-linux-man-middle-attack</a></p> <p><a href="https://docs.oseems.com/general/operatingsystem/linux/sniff-network-traffic">https://docs.oseems.com/general/operatingsystem/linux/sniff-network-traffic</a></p> <p><a href="http://kalilinuxtutorials.com/macof/">http://kalilinuxtutorials.com/macof/</a></p> <p><a href="http://www.irongeek.com/i.php?page=backtrack-3-man/ettercap">http://www.irongeek.com/i.php?page=backtrack-3-man/ettercap</a></p> <p><a href="https://pentestmag.com/ettercap-tutorial-for-windows/">https://pentestmag.com/ettercap-tutorial-for-windows/</a></p></div> <div class="K2FeedImage"><img src="http://slow7.pl/media/k2/items/cache/be7685026070406a215779b242f1aa2e_S.jpg" alt="Atak na warstwę 2 modelu ISO/OSI - preludium" /></div><div class="K2FeedIntroText"><p>Switche tak jak i routery podatne są na wiele atak&oacute;w dlatego też większość technik zabezpieczania router&oacute;w ma zastosowanie r&oacute;wnież do switchy. Przełączniki jednak z natury swego działania i umiejscowienia dodatkowo narażone są na wiele innych atak&oacute;w, specyficznych dla tej grupy urządzeń.</p> </div><div class="K2FeedFullText"> <p>Sieć komputerowa aby działać musi być w stanie obronić się przed licznymi atakami m.in. takimi jak:</p> <ul> <li style="padding-left: 60px;">spoofowanie adres&oacute;w MAC,</li> <li style="padding-left: 60px;">ataki na STP,</li> <li style="padding-left: 60px;">ataki na CDP,</li> <li style="padding-left: 60px;">ataki na DHCP,</li> <li style="padding-left: 60px;">przepełnienie tablic adres&oacute;w MAC,</li> <li style="padding-left: 60px;">ataki typu LAN storm,</li> <li style="padding-left: 60px;">ataki na VLAN.</li> </ul> <p>&nbsp;</p> <p>W artykule tym oczywiście nie wszystkimi metodami przeprowadzania atak&oacute;w się zajmiemy lecz postaram opisać te najczęściej wykorzystywane wraz z metodami ich przeciwdziałania. Tak więc w pierwszej części wpisu opis jak dany atak zorganizować i przeprowadzić zaś w drugiej części wpisu obrona przed nimi.</p> <p>&nbsp;</p> <p>Artykuł ten skoncentruje się na zagrożeniach (i oczywiście sposobach ich zapobiegania) związanych z protokołem ARP, DHCP, atakiem przepełnienia tablicy adres&oacute;w MAC czy atakami typu LAN storm. Zaś te bardziej wyrafinowane jak atak na sieci VLAN czy STP opiszę w osobnej osłonie.</p> <p>&nbsp;</p> <p>Rozpoczynamy od opisu ataku ARP poisoning z wykorzystaniem narzędzi dostępnych w systemie Windows.</p> <p>&nbsp;</p> <p>Topologia sieciowa w kt&oacute;rej przeprowadzono symulację przedstawia się następująco.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image1.png" alt="image1" width="700" height="434" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Narzędzie, kt&oacute;re pozwoli nam na przeprowadzenie ataku to Cain&amp;Abel. Program standardowo wykorzystywany jest do odzyskiwania haseł (bądź ich łamania) ale ma w sobie zaszyty moduł odpowiedzialny za sniffing oraz za przeprowadzanie ataku zatrucia tablicy ARP. Do działania programu niezbędne jest zainstalowanie oprogramowania WinPcap.</p> <p>&nbsp;</p> <p>Po pobraniu i instalacji oprogramowania uruchamiamy narzędzie. W gł&oacute;wnym oknie aplikacji przechodzimy do karty <strong>Sniffer</strong> (punkt 1) a następnie wybieramy ikonę interfejsu sieciowego (punkt 2).</p> <p>&nbsp;</p> <p>W niekt&oacute;rych konfiguracjach zdarza się sytuacja w kt&oacute;rej wykorzystanie modułu sniffera uzależnione jest od wydania polecenia: <strong>netsh int ip set global taskoffload=disabled </strong>Jeśli zajdzie taka sytuacja zostaniemy powiadomieni o tym stosownym komunikatem. W razie wystąpienia opisywanego zdarzenia, należy uruchomić konsolę wiersza poleceń (z prawami administratora) i wydać wspomniane polecenie. Po wydaniu komendy ponownie uruchamiamy narzędzie Cain&amp;Abel.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image2.png" alt="image2" width="700" height="465" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Przy pierwszym uruchomieniu sniffera pierwszą opcję jaką musimy skonfigurować to wyb&oacute;r użytego interfejsu. W nowo otwartym oknie <strong>Configuration Dialog</strong> na karcie <strong>Sniffer</strong> definiujemy interfejs, kt&oacute;ry będzie wykorzystywany w procesie przechwytywania pakiet&oacute;w oraz zatruwania tablicy ARP. Konfigurację zatwierdzamy klikając na <strong>OK</strong>.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image3.png" alt="image3" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po zatwierdzeniu interfejsu kolejną czynnością jaką musimy wykonać jest wykonanie skanu sieci celem wykrycia aktywnych host&oacute;w. Skan przeprowadzamy wybierając ikonę <strong>plusa</strong>. Po wybraniu ikony w oknie <strong>MAC Address Scaner</strong> określamy opcje przeprowadzanego skanowania. Celem wykrycia wszystkich komputer&oacute;w znajdujących się w podsieci zaznaczamy: <strong>All hosts in my subnet</strong> Jeśli chcemy zdefiniować obszar adres&oacute;w IP co do kt&oacute;rych będzie przeprowadzane skanowanie wybieramy: <strong>Range</strong> a następnie określamy początkowy i końcowy adres IP.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image4.png" alt="image4" width="700" height="465" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Aby rozpocząć skan klikamy <strong>OK</strong> i rozpoczyna się proces odkrywania host&oacute;w. Lista aktywnych host&oacute;w zostanie wyświetlona w tabeli.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image5.png" alt="image5" width="700" height="465" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po wykryciu host&oacute;w przechodzimy do zakładki <strong>APR</strong> (lewy dolny r&oacute;g programu). Opcje zgromadzone na tej zakładce posłużą nam do zdefiniowania opcji ataku. Aby określić hosta co do kt&oacute;rego będzie przeprowadzany atak należy wybrać ikonę <strong>Plusa</strong> (ikona stanie się aktywna gdy wybierzemy gałąź <strong>ARP</strong> a następnie klikniemy w obszarze g&oacute;rnej części tabeli). Naszym oczom powinno ukazać się nowe okno <strong>New ARP Poison Routing</strong> Okno to zostało podzielone na dwie tabele. Lewa tabela służy do wyboru adresu MAC hosta, kt&oacute;rego ruch sieciowy chcemy przechwytywać prawa zaś odpowiedzialna jest za wybranie adresu MAC drugiego hosta, kt&oacute;ry prowadzi komunikację z celem - najczęściej jest to adres bramy (routera).</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image6.png" alt="image6" width="700" height="465" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>W scenariuszu założyliśmy przechwytywanie ruchu sieciowego pomiędzy hostem o adresie MAC AA-AA-AA-AA-AA-AA (ofiara) a routerem (adres MAC A0-C5-62-73-9A-50) tak więc w lewy panelu zaznaczamy adres MAC komputera ofiary zaś w prawymadres MAC routera (oczywiście możliwa jest sytuacja w kt&oacute;rej ruch sieciowy będzie przechwytywany pomiędzy dwoma hostami np. komputer-serwer). Po zdefiniowaniu host&oacute;w co do kt&oacute;rych będzie prowadzony proces przechwytywania pakiet&oacute;w klikamy <strong>OK</strong>.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image7.png" alt="image7" width="700" height="465" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Aby uruchomić atak wybieramy ikonę &bdquo;promieniowania&rdquo; - punkt 1. Status ataku pojawi się w g&oacute;rnej części tabeli (punkt 2) zaś informację o odbieranych pakietach znajdziemy w tabeli dolnej - punkt 3. Dodatkowo w lewej części okna przechwytywane pakiety są grupowane w zależności od typu wykrytego ruchu sieciowego (użyty protok&oacute;ł np. ruch związany z wykorzystaniem protokoł&oacute;w pocztowych).</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image8.png" alt="image8" width="700" height="465" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Tablica ARP hosta została zatruta, cały ruch generowany na komputerze ofiary zostaje w pierwszej kolejności wysłany w kierunku atakującego a następnie przekazany do miejsca przeznaczenia czyli do routera.</p> <p>&nbsp;</p> <p>Atak możemy obserwować analizując tablicę ARP hosta ofiary.</p> <p>&nbsp;</p> <p>Gdy atak ARP poisoning nie jest uaktywniony w tablicy ARP znajdujemy prawidłowe dowiązanie bramy (routera) z jej adresem MAC.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image9.png" alt="image9" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po uruchomieniu ataku adres MAC bramy zostaje zamieniony na adres MAC komputera przeprowadzającego atak. Atak zatrucia przeprowadzany jest z hosta o adresie MAC CC-CC-CC-CC-CC-CC tak więc w trakcie trwania ataku prawidłowy adres MAC bramy zostaje zastąpiony właśnie tym adresem.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image10.png" alt="image10" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Atak na tablicę ARP dodatkowo możemy obserwować podczas procesu przechwytywania pakiet&oacute;w.</p> <p>&nbsp;</p> <p>Analizując pole warstwy drugiej przechwyconego pakietu o numerze 67 dochodzimy do wniosku, że wszystko jest w porządku. W pakiecie zawarte są prawidłowe informacje powiązania adresu MAC routera z jego adresem IP - punkt 1</p> <p>&nbsp;</p> <p>Po przejściu do pakietu 72 można zauważyć zamianę adresu MAC routera na adres MAC komputera wykonującego atak - punkt 2.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image11.png" alt="image11" width="700" height="423" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Jednym z ciekawych narzędzi, kt&oacute;re możemy wykorzystać w systemie Windows jest aplikacja <strong>WinArpAttacker</strong>. Narzędzie te podobnie jak opisywany powyżej program Cain&amp;Abel umożliwia Nam przeprowadzenie ataku z wykorzystaniem protokołu ARP ale opr&oacute;cz opcji ataku są r&oacute;wnież dostępne takie, kt&oacute;re przed atakiem Nas uchronią - ale wszystko po kolei.</p> <p>&nbsp;</p> <p>Aby za pomocą narzędzia przeprowadzić atak po uruchomieniu jej z prawami administratora należy w pierwszej kolejności przeprowadzić skan sieci lecz aby to zadanie wykonać warto sprawdzić czy został wybrany prawidłowy interfejs sieciowy. W przypadku posiadania jednej karty sieciowej problem Nam odpada lecz gdy system korzysta z wielu interfejs&oacute;w ustawienie te należy skontrolować. Aby wybrać interfejs z menu wybieramy pozycję <strong>Options</strong> a następnie <strong>Adapter</strong>. W nowo otwartym oknie w sekcji <strong>Select a Network Device </strong>z rozwijanego menu wybieramy właściwy interfejs. Wyb&oacute;r oczywiście zatwierdzamy klawiszem <strong>OK</strong>.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image12.png" alt="image12" width="700" height="471" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po ustawieniu interfejsu przechodzimy do wspomnianego skanowania sieci. Scan sieci uruchomimy wybierając z dostępnych ikon pozycję <strong>Scan</strong>. Po przeprowadzeniu operacji odkrywania host&oacute;w dostępnych w atakowanej sieci ich lista pojawi się w oknie poniżej.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image13.png" alt="image13" width="700" height="438" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Przed uruchomieniem ataku wyłączamy ochronę tablicy ARP poprzez wybranie z dostępnych ikon przycisku <strong>Stop</strong> (do tematu tego wr&oacute;cimy w dalszej części wpisu poświęconej obronie przed atakiem z wykorzystaniem protokołu ARP) - punkt 1. Atak uruchomimy poprzez zaznaczenie interesującego nas hosta a następnie wybraniu ikony <strong>Attack</strong> wraz z opcją <strong>Sniff Gateway</strong>. Zaznaczenie opcji spowoduje rozpoczęcie ataku zatrucia tablicy ARP pomiędzy wybranym hostem a bramą. Aby prowadzić przechwytywanie pomiędzy dwoma wybranymi hostami z listy dostępnych host&oacute;w należy wybrać interesujące nas komputery a następnie z menu <strong>Attack</strong> wybrać opcję <strong>Sniff Hosts</strong>. Wybranie <strong>Sniff Lan</strong> spowoduje uruchomienie ataku w kontekście całej sieci LAN - co oznacza, że cały ruch sieciowy generowany przez wszystkie aktywne hosty będzie przechodził przez nasz komputer.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image14.png" alt="image14" width="700" height="438" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Atak zostaje uruchomiony a jego efekty możemy sprawdzić przeglądając tablicę ARP hosta 192.168.1.200 Jak widać poniżej (punkt 1) przed uruchomieniem ataku adres MAC bramy jest poprawnie skojarzony z jego adresem IP zaś po uruchomieniu ataku (punkt 2), adres MAC bramy wskazuje na hosta atakującego. Uruchomiony sniffer pakiet&oacute;w na hoście 192.168.1.210, kt&oacute;ry jest kontrolowany przez atakującego rejestruje test ping pomiędzy hostem ofiary a bramą co dowodzi, że atak zakończył się sukcesem.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image15.png" alt="image15" width="700" height="430" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Tak jak wspomniałem do programu będziemy wracać a tym czasem idziemy dalej.</p> <p>&nbsp;</p> <p>O wiele więcej narzędzi do przeprowadzenia ataku opartego o protok&oacute;ł ARP znajdziemy w systemie Linux a gdy chcesz je mieć wszystkie z automatu wybierz dystrybucję Kali bądź Backtrack.</p> <p>&nbsp;</p> <p>Topologia sieciowa użyta do opisania narzędzi pozostaje bez zmian, zmienia się system operacyjny atakującego oraz jego adres MAC z CC-CC-CC-CC-CC-CC na EE-EE-EE-EE-EE-EE. Po podłączeniu hosta pierwszą czynnością jaką powinniśmy wykonać jest wykonanie testu łączności. Test ping pomiędzy hostem atakującym (IP 192.168.1.200) jak i routerem (IP 192.168.1.1) kończy się sukcesem.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image16.png" alt="image16" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Pierwszym narzędziem (a tak właściwie trzecim) jakie wykorzystamy do przeprowadzenia ataku zatrucia tablicy ARP jest <strong>Ettercap</strong>. Jeśli go nie posiadamy to jego instalację przeprowadzimy za pomocą polecenia: <strong>apt-get install ettercap-graphical</strong></p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image17.png" alt="image17" width="700" height="219" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po instalacji narzędzie w trybie graficznym uruchamiamy poleceniem: <strong>ettercap -G</strong> (jeśli korzystamy z Linux Kali program odnajdziemy w sekcji: Sniffing @ Spoofing).</p> <p>&nbsp;</p> <p>Po uruchomieniu programu w g&oacute;rnym menu z sekcji <strong>Sniff</strong> wybieramy opcję <strong>Unified sniffing</strong>.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image18.png" alt="image18" width="700" height="450" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>W następnym kroku określamy interfejs, kt&oacute;ry zostanie użyty do przeprowadzenia ataku. W przypadku komputera posiadającego wiele kart sieciowych właściwy interfejs zidentyfikujesz wydając w konsoli polecenie: <strong>ifconfig</strong> W naszym scenariuszu został użyty</p> <p>interfejs: <strong>eth0</strong></p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image19.png" alt="image19" width="700" height="523" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po wstępnej konfiguracji narzędzia przechodzimy do skanu sieci. Proces skanowania jest niezbędny gdyż jego gł&oacute;wnym celem jest wykrycie w atakowanej sieci aktywnych host&oacute;w oraz wykonanie dopasowania adres IP - adres MAC. Aby przeprowadzić skanowanie z menu wybieramy opcję <strong>Hosts</strong> a następnie <strong>Scan for hosts</strong>.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image20.png" alt="image20" width="700" height="450" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Wybranie przedstawionych opcji spowoduje uruchomienie procesu skanowania sieci.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image21.png" alt="image21" width="700" height="450" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Skan jest przeprowadzany w ekspresowym tempie i już po chwili zostaniesz poinformowany o odnalezionej ilości działających host&oacute;w (w naszym przypadku jest ich 6).</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image22.png" alt="image22" width="700" height="450" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Adresy IP oraz powiązane z nimi adresy MAC poznamy wybierając z menu opcję <strong>Hosts</strong> a następnie <strong>Hosts list</strong>. Jak można zauważyć przeglądając poniższą listę odnajdziemy na niej komputer ofiary jak i router.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image23.png" alt="image22" width="700" height="450" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Przechodzimy do ataku i definiujemy nasze cele. Ponieważ dążymy do przechwycenia ruchu sieciowego pomiędzy routerem a hostem ofiary z listy wykrytych host&oacute;w zaznaczamy adres IP 192.168.1.1 (router) i wybieramy przycisk <strong>Add to Target 1</strong> (punkt 1) a następnie odszukujemy i zaznaczamy adres IP 192.168.1.200 (ofiara) i klikamy przycisk <strong>Add to Target 2 </strong>(punkt 2). Cele ataku zostały określone.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image24.png" alt="image23" width="700" height="450" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Aby przejrzeć bądź zmodyfikować listę cel&oacute;w z menu wybieramy <strong>Targets</strong> a po rozwinięciu listy klikamy na opcję <strong>Current Targets</strong>.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image25.png" alt="image25" width="700" height="451" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Aby rozpocząć atak z menu wybieramy <strong>Mitm</strong> i dalej <strong>Arp poisoning</strong>. W nowo otwartym oknie zaznaczamy opcję <strong>Sniff remote connections</strong>, zatwierdzenie ustawień przyciskiem <strong>OK</strong> rozpocznie atak.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image26.png" alt="image26" width="700" height="450" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>O rozpoczęciu ataku zostaniemy poinformowani stosownymi wpisami w gł&oacute;wnym oknie programu.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image27.png" alt="image27" width="700" height="450" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Aby mieć 100% pewność, że atak powi&oacute;dł się sprawdźmy tablicę ARP ofiary. Poniżej na zrzucie przedstawione zostało użycie polecenia sprawdzającego wpisy tablicy ARP: <strong>arp -a</strong> Punkt 1 obrazuje stan tablicy przed atakiem natomiast punkt 2 stan tablicy po ataku. Jak łatwo zauważyć zmianie uległ adres MAC powiązany z adresem IP bramy. Przed uruchomieniem ataku powiązanie jest jak najbardziej prawidłowe zaś w trakcie jego trwania adres MAC bramy zostaje zamieniony na adres MAC komputera atakującego.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image28.png" alt="image28" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Atak zakończył się powodzeniem.</p> <p>Aby przerwać atak z menu wybierz <strong>Mitm</strong> a następnie <strong>Stop mitm attack(s)</strong></p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image29.png" alt="image29" width="700" height="450" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Ettercap opr&oacute;cz trybu graficznego r&oacute;wnież oferuje Nam możliwość skorzystania z trybu pracy w konsoli (taki pseudo tryb graficzny). Przeprowadzenie ataku przy użyciu tego interfejsu przebiega w spos&oacute;b analogiczny jak w środowisku graficznym. Wywołanie tego trybu odbywa się za pomocą polecenia: <strong>ettercap -C</strong></p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image30.png" alt="image30" width="700" height="448" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Kolejne narzędzie jaki użyjemy do przeprowadzenia ataku zatrucia bufora ARP jest framework <strong>Metasploit</strong> a m&oacute;wiąc bardziej szczeg&oacute;łowo wykorzystamy jeden z dostępnych moduł&oacute;w o nazwie <strong>arp_poisoning</strong>.</p> <p>&nbsp;</p> <p>Rozpoczynamy od uruchomienia narzędzia poprzez wydanie polecenia: <strong>msfconsole</strong> (punkt 1). Wydanie komendy spowoduje uruchomienie frameworku, kt&oacute;rego zarządzanie odbywa się za pomocą osobnego zestawu poleceń przynależnych narzędziu.</p> <p>&nbsp;</p> <p>Uruchomienie modułu odpowiedzialnego za przeprowadzenie ataku ARP poisoning przeprowadzimy wydając polecenie: <strong>use/auxiliary/spoof/arp/arp_poisoning</strong> (punkt 2).</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image31.png" alt="image31" width="700" height="577" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po uruchomieniu modułu wydajemy polecenie: <strong>info</strong> aby poznać parametry jakie należy skonfigurować aby narzędzie mogło przeprowadzić skuteczny atak. Wśr&oacute;d obowiązkowych opcji jakie należy zdefiniować znajdują się:</p> <p style="margin-left: 30px;">1 - adres IP hosta, kt&oacute;rego ruch chcemy przechwytywać - <strong>set dhost &lt;adres_IP&gt;</strong>,</p> <p style="margin-left: 30px;">2 - interfejs, kt&oacute;ry posłuży do ataku - <strong>set interface &lt;identyfikator_interfejsu&gt;</strong> - w przedstawianym opisie został użyty interfejs bezprzewodowy tak byś Czytelniku miał świadomość, że i tego typu interfejsy sieciowe można wykorzystać w procesie przechwytywania pakiet&oacute;w. Adres MAC atakującego pomimo wykorzystania innego interfejsu nie ulega zmianie.,</p> <p style="margin-left: 30px;">3 - adres IP routera - <strong>set shost &lt;adres_IP&gt;</strong>.</p> <p>&nbsp;</p> <p>Dodatkowo aby obserwować działanie modułu został ustawiony parametr: <strong>set verbose true</strong> (punkt 4).</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image32.png" alt="image32" width="700" height="542" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Wszystkie niezbędne opcje zostały skonfigurowane czas przejść do uruchomienia ataku. Atak rozpoczniemy po wydaniu polecenia: <strong>exploit</strong> Wydanie polecenia spowoduje zatrucie tablicy ARP hosta 192.168.1.200</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image33.png" alt="image33" width="700" height="544" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Efekt przeprowadzanego ataku możemy zweryfikować sprawdzając tablicę ARP hosta 192.168.1.200 Jak widać poniżej adres MAC routera wskazuje na hosta o adresie MAC EE-EE-EE-EE-EE-EE co jak wiemy nie jest wartością prawidłową. Adres MAC EE-EE-EE-EE-EE-EE należy do atakującego.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image34.png" alt="image34" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>W przypadku użycia opisywanych narzędzi dostępnych w systemie Linux została wykonana tylko połowa roboty gdyż możemy przechwytywać wszystkie zapytania generowane przez ofiarę lecz dane te w żaden spos&oacute;b nie są przesyłane dalej. M&oacute;wiąc prościej trafiają one do atakującego i tylko do niego. Konsekwencją takiego stanu rzeczy jest to, że ofiara traci możliwość połączenia np. z Internetem. A nie do końca o to Nam chodziło. Poniżej polecenie ping wysłane przez ofiarę w kierunku witryny wp.pl i jak widać test ten kończy się niepowodzeniem.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image35.png" alt="image35" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Powodem zaistnienia takiej sytuacji jest wyłączona funkcja przekazywanie pakiet&oacute;w IP (IP forwarding). Tak więc naprawmy to i dajmy hostowi ofiary możliwość komunikacji.</p> <p>&nbsp;</p> <p>W pierwszym etapie za pomocą polecenia: <strong>sysctl net.ipv4.ip_forward</strong> sprawdzamy bieżący stan funkcji przekazywania pakiet&oacute;w (punkt 1). Zwr&oacute;coną wartością jest <strong>zero</strong>, kt&oacute;re oznacza wyłączenie mechanizmu. Aby pakiety prawidłowo mogły być przekazywane pomiędzy interfejsami należy wydać komendę: <strong>sysctl net.ipv4.ip_forward=1 </strong>bądź alternatywnie polecenie: <strong>echo 1 &gt; /proc/sys/net/ipv4/ip_forward</strong> (punkt 2). Ponowne sprawdzenie stanu przekazywania (punkt 3) zwraca wartość <strong>jeden</strong> - przekazywanie jest aktywne. Komendy te powodują tymczasowe włącznie funkcji, jeśli zależy nam na uaktywnieniu mechanizmu na stałe należy w pliku <strong>/etc/sysctl.conf</strong> dopisać linię: <strong>net.ipv4.ip_forward=1</strong></p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image36.png" alt="image36" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po wprowadzeniu zmian ofiara może prowadzić swobodną komunikację a my mamy możliwość jej rejestrowania. Tym razem test ping kończy się powodzeniem.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image37.png" alt="image37" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Efekt przeprowadzonego ataku możemy obserwować z wykorzystaniem narzędzia Wireshark. Jak można zaobserwować poniżej - pakiet ICMP trafia od ofiary (adres źr&oacute;dłowy MAC AA-AA-AA-AA-AA-AA) do atakującego (adres docelowy MAC EE-EE-EE-EE-EE-EE).</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image38.png" alt="image38" width="700" height="423" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>By następnie atakujący (adres źr&oacute;dłowy MAC EE-EE-EE-EE-EE-EE) przekazał go w kierunku routera (adres docelowy MAC A0-C5-62-73-9A-50).</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image39.png" alt="image39" width="700" height="423" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po ustaniu ataku wszystko wraca do normy w tablicy ARP ofiary widniej prawidłowy adres MAC routera.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image40.png" alt="image40" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>W systemie Linux do przeprowadzenia ataku ARP poisoning możemy r&oacute;wnież użyć narzędzia o nazwie <strong>arpspoof</strong>. Instalację narzędzia przeprowadzimy wydając polecenie: <strong>apt-get install dsniff</strong></p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image41.png" alt="image41" width="700" height="205" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Przechodzimy do ataku. Sprawdzenie tablicy ARP ofiary uwidacznia stan w kt&oacute;rym adres MAC jest poprawnie powiązany z adresem IP routera.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image42.png" alt="image42" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Aby rozpocząć zatrucie tablicy ARP należy wydać polecenie: <strong>arpspoof -i &lt;użyty_interfejs&gt; -t &lt;adres_IP_ofiary&gt; &lt;adres_IP_routera&gt;</strong> (ważna jest kolejność zdefiniowanych adres&oacute;w IP) po zatwierdzeniu Enterem rozpoczyna się atak.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image43.png" alt="image43" width="700" height="211" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Ponowne sprawdzenie tablicy ARP komputera ofiary ukazuje zmiany - adres MAC routera został zamieniony na adres MAC atakującego.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image44.png" alt="image44" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Aby ofiara mogła prowadzić swobodną komunikację nie zapomnij o włączeniu przekazywania pakiet&oacute;w IP (opis włączenia funkcji om&oacute;wiony wyżej).</p> <p>&nbsp;</p> <p>Nasza sieć opr&oacute;cz opisanego już zagrożenia związanego z protokołem ARP może być r&oacute;wnież narażona na ataki typu LAN Storm Attacks. Choć warto tu zauważyć, że sam administrator poprzez błędną konfigurację urządzeń (np. redundancja łączy pomiędzy przełącznikami - wykorzystanie protokołu STP) czy błędną implementację protokoł&oacute;w korzystających z pakiet&oacute;w typu broadcast taki atak może wywołać sam. Należy pamiętać, że przełączniki zawsze przekazują ruch typu broadcast (wykorzystywany np. przez takie protokoły jak ARP czy DHCP) na wszystkie porty dlatego też przypadłość ta może zostać wykorzystana do przeprowadzenia ataku DoS (pojawiające się pakiety zalewają całą sieć LAN marnując tym samym dostępne pasmo co w konsekwencji prowadzi do spadku wydajności całej sieci).</p> <p>&nbsp;</p> <p>Aby zasymulować atak tego typu ponownie wykorzystamy narzędzie WinArpAttacker. Program umożliwia Nam wysłanie spreparowanych pakiet&oacute;w ARP (pakiety typu: Request, Reply, Reverse request, Reverse reply).</p> <p>&nbsp;</p> <p>Aby wysłać fałszywy pakiet po uruchomieniu narzędzia wybieramy ikonę <strong>Send</strong>. Do zalania sieci ruchem broadcast wykorzystamy pakiet typu ARP Request. Wyb&oacute;r rodzaju pakietu umożliwia zdefiniowanie ustawień odnoszących się do wybranego typu pakietu. Ponieważ wysyłany pakiet ma być przypisany do ruchu broadcast pole określające docelowy adres MAC zostaje wypełnione wartością FF-FF-FF-FF-FF-FF (adres rozgłoszeniowy warstwy drugiej). Ponieważ mamy wywołać burzę pakiet&oacute;w dodatkowo zostaje zaznaczona opcja: <strong>Continuously </strong>Po zatwierdzeniu ustawień przyciskiem <strong>Send</strong> sieć zostaje zalana pakietami ARP Request pochodzącymi od hosta 192.168.1.210</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image45.png" alt="image45" width="700" height="525" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Atak ten możemy obserwować za pomocą narzędzia Wireshark na hoście 192.168.1.200 gdyż pakiety te są rozsyłane przez przełącznik na wszystkich jego portach.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image46.png" alt="image46" width="700" height="540" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Innym narzędziem, kt&oacute;re możemy wykorzystać do wywołania burzy broadcastowej jest program Hyenae i tak jak w przypadku aplikacji WinArpAttacker tak i tu wykorzystamy pakiet ARP Request. Choć warto zaznaczyć iż narzędzie te możemy użyć do wygenerowania pakiet&oacute;w obejmujących szerokie spectrum atak&oacute;w:</p> <ul> <li style="padding-left: 60px;">ARP-Request flooding</li> <li style="padding-left: 60px;">ARP-Cache poisoning</li> <li style="padding-left: 60px;">PPPoE session initiation flooding</li> <li style="padding-left: 60px;">Blind PPPoE session termination</li> <li style="padding-left: 60px;">ICMP-Echo flooding</li> <li style="padding-left: 60px;">ICMP-Smurf attack</li> <li style="padding-left: 60px;">ICMP based TCP-Connection reset</li> <li style="padding-left: 60px;">TCP-SYN flooding</li> <li style="padding-left: 60px;">TCP-Land attack</li> <li style="padding-left: 60px;">Blind TCP-Connection reset</li> <li style="padding-left: 60px;">UDP flooding</li> <li style="padding-left: 60px;">DNS-Query flooding</li> <li style="padding-left: 60px;">DHCP-Discover flooding</li> <li style="padding-left: 60px;">DHCP starvation attack</li> <li style="padding-left: 60px;">DHCP-Release forcing</li> <li style="padding-left: 60px;">Cisco HSRP active router hijacking</li> </ul> <p>&nbsp;</p> <p>Narzędziem możemy zarządzać za pomocą interfejsu GUI jak i wiersza poleceń. Po uruchomieniu trybu graficznego by m&oacute;c rozpocząć atak należy skonfigurować:</p> <p style="margin-left: 30px;">1 - określić interfejs, kt&oacute;ry zostanie wykorzystany do wysłania spreparowanych pakiet&oacute;w,</p> <p style="margin-left: 30px;">2 - zdefiniować typ pakietu oraz wersję protokołu IP,</p> <p style="margin-left: 30px;">3 - określić dane, kt&oacute;re posłużą do wygenerowania pakiet&oacute;w - w polu <strong>Destination Pattern</strong> został umieszczony adres rozgłoszeniowy warstwy drugiej,</p> <p style="margin-left: 30px;">4 - opcjonalnie określić ilość wysyłanych pakiet&oacute;w oraz zdefiniować opcje związane z częstotliwością ich wysyłania.</p> <p>&nbsp;</p> <p>Na dole okna aplikacji znajdziemy ekran informacyjny, w kt&oacute;rym możemy sprawdzić status wykonywanych operacji a także znajdziemy tam wygenerowane polecenie, kt&oacute;re możemy wykorzystać gdy z narzędzia korzystamy z wiersza linii poleceń.</p> <p>&nbsp;</p> <p>Aby rozpocząć atak należy wybrać przycisk <strong>Execute</strong>.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image47.png" alt="image47" width="700" height="462" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Sieć zostaje zalana pakietami ARP Request i tak jak poprzednio atak możemy obserwować na hoście zdalnym przy wykorzystaniu narzędzia Wireshark.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image48.png" alt="image47" width="700" height="462" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Unikatową cechą programu jest możliwość wykonania opisywanych operacji za pośrednictwem hosta zdalnego. Podczas instalacji programu mamy możliwość określenia czy ma zostać zainstalowany daemon narzędzia, kt&oacute;ry może posłużyć atakującemu do wywołania ataku zdalnie z poziomu innego hosta (i wcale nie musimy ograniczać się tylko do jednej maszyny, skoordynowany atak może prowadzić wiele host&oacute;w).</p> <p>&nbsp;</p> <p>Na hoście zdalny zostaje zainstalowany daemon narzędzia Hyenae. Aby usługa mogła zacząć działać w tle należy w parametrach jej wywołania określić interfejs sieciowy (parametr: <strong>-I &lt;nr_interfejsu&gt;</strong>) oraz maksymalną dozwoloną liczbę pakiet&oacute;w (parametr: <strong>-u &lt;wartość&gt;</strong>). Listę dostępnych interfejs&oacute;w sieciowych poznasz wydając komendę: <strong>hyenaed -l</strong></p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image49.png" alt="image49" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Daemon został uruchomiony i oczekuje na polecenia. Weryfikację działania możemy przeprowadzić wydając polecenie: <strong>netstat -ao</strong>, kt&oacute;re pokaże nam aktywne usługi sieciowe wraz ze stanem port&oacute;w. Jak można zauważyć poniżej narzędzie hyenaed działa i nasłuchuje na porcie TCP 666.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image50.png" alt="image50" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Dodatkowo stan procesu sprawdzimy r&oacute;wnież z wykorzystaniem polecenia: <strong>tasklist</strong>, kt&oacute;re odpowiedzialne jest za wyświetlenie wszystkich działających proces&oacute;w. Na liście tej r&oacute;wnież odnajdziemy narzędzie: hyenaed</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image51.png" alt="image51" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Daemon narzędzia został zainstalowany na hoście 192.168.1.200 a atak zostanie uruchomiony z hosta o adresie IP 192.168.1.210. Po uruchomieniu narzędzia z listy <strong>Operation Mode</strong> wybieramy opcję <strong>Attack from remote Daemon</strong>. Po określeniu adresu IP hosta zdalnego, portu (opcjonalnie hasła) i zdefiniowaniu opcji ataku całość zatwierdzamy przyciskiem <strong>Execute</strong>. Atak zostaje wykonany za pośrednictwem hosta zdalnego.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image52.png" alt="image47" width="700" height="462" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Wszystkie operacje związane z działaniem narzędzia możemy dodatkowo przejrzeć w logach narzędzia. Plik logu dostępny jest w katalogu instalacyjnym aplikacji.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image53.png" alt="image53" width="700" height="297" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Co warto zaznaczyć, to to, że przedstawione programy wcale nie muszą być wykorzystane w niecnych celach ale stanowią świetne narzędzia dla administrator&oacute;w do przeprowadzania symulowanych atak&oacute;w (zachowanie sieci gdy prawdziwy atak nastąpi) bądź badania wydajności sieci.</p> <p>&nbsp;</p> <p>Przechodzimy do ataku na protok&oacute;ł DHCP. Protok&oacute;ł ten (tak w wielkim skr&oacute;cie) odpowiedzialny jest za dostarczenie konfiguracji sieciowej (adres IP, adres IP bramy, adres IP serwera DNS) nowo podłączanemu hostowi tak by m&oacute;gł on prowadzić swobodną komunikację z innymi komputerami. Jeśli chcesz uzyskać więcej informacji o sposobie działania i konfiguracji tego protokołu zapraszam do zapoznania się z wpisem: <a href="http://slow7.pl/item/33-co-w-sieci-siedzi-protokol-dhcp" title="Co w sieci siedzi. Protok&oacute;ł DHCP."><span style="text-decoration: none;">Co w sieci siedzi. Protok&oacute;ł DHCP.</span></a></p> <p>&nbsp;</p> <p>W przypadku tego protokołu do czynienia najczęściej będziemy mieli z dwoma rodzajami ataku:</p> <ul> <li style="padding-left: 60px;"><strong>DHCP Spoofing</strong> - atak polegający na podstawieniu fałszywego serwera DHCP, kt&oacute;rego zadaniem jest dostarczenie konfiguracji sieciowej hostom, kt&oacute;ra będzie zgodna z intencjami atakującego,</li> <li style="padding-left: 60px;"><strong>DHCP Consumption Attack</strong> - atak polegający na zablokowaniu serwera DHCP poprzez całkowite wykorzystanie jego zasob&oacute;w (serwer DHCP zostaje zablokowany gdyż wszystkie dostępne adresy IP w ramach przydzielonej puli zostają wykorzystane - serwer DHCP nie ma wolnych adres&oacute;w IP, kt&oacute;re m&oacute;głby przydzielić zgłaszającym się klientom).</li> </ul> <p>&nbsp;</p> <p>Pulę dostępnych atak&oacute;w możemy powiększyć o ataki typu LAN Storm w kt&oacute;rych to wykorzystywane są pakiety rozgłoszeniowe przynależne protokołowi DHCP.</p> <p>&nbsp;</p> <p>W opisie obu atak&oacute;w wykorzystamy topologię sieciową zaprezentowana na poniższym zrzucie. Serwer DHCP jest rolą systemu Windows 2012 natomiast atakującym jest host z zainstalowanym systemem Linux.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image54.png" alt="image54" width="700" height="450" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Rozpoczniemy od ataku <strong>DHCP Consumption Attack</strong>. Jak widać poniżej atakujący ma możliwość komunikacji z serwerem DHCP.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image55.png" alt="image55" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Atakującemu został przez serwer DHCP przyznany adres IP 10.0.0.30 (pierwszy z zadeklarowanej puli - od 10.0.0.30 do 10.0.0.254). Sprawdzenie statystyk wykorzystania zasob&oacute;w serwera DHCP uwidacznia, że atakujący jest jedynym klientem, kt&oacute;remu została przypisana konfiguracja sieciowa tak więc serwer do rozdysponowania ma jeszcze 224 adresy IP. Celem ataku jest zablokowanie serwera DHCP poprzez doprowadzenie do stanu w kt&oacute;rym zasoby serwera zostaną wykorzystane w 100%</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image56.png" alt="image56" width="700" height="421" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Atak przeprowadzimy z wykorzystaniem narzędzia <strong>Yersinia</strong>. Narzędzie te standardowo dostępne jest w dystrybucji Linux Kali gdy korzystamy z innej dystrybucji program zainstalujemy za pomocą polecenia: <strong>apt-get install yersinia</strong> (w Linux Ubuntu instalacja oprogramowania przebiega bez żadnych problem&oacute;w).</p> <p>&nbsp;</p> <p>Narzędzie te w wcześniejszych moich wpisach było już wykorzystywane lecz jest tak uniwersalne iż nie raz będziemy do niego wracać.</p> <p>&nbsp;</p> <p>Program możemy używać w trybie graficznym jak i interaktywnym, my wykorzystamy oba.</p> <p>&nbsp;</p> <p>Aby uruchomić program w trybie interaktywnym wywołujemy go poleceniem: <strong>yersinia -I</strong> Po uruchomieniu narzędzia określamy interfejs sieciowy, kt&oacute;ry zostanie wykorzystany do przeprowadzenia ataku (interfejs można zmienić za pomocą klawisza: <strong>i</strong> - został wybrany interfejs: <strong>eth0</strong>).</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image57.png" alt="image57" width="700" height="487" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Następnym krokiem jest wyb&oacute;r ataku a tak naprawdę protokołu, kt&oacute;ry w ataku zostanie wykorzystany - aby zdefiniować atak użyj klawisza <strong>F2</strong> bądź <strong>g </strong>Z dostępnej listy wybieramy oczywiście <strong>DHCP</strong> (tak jak wspomniałem wyżej narzędzie <strong>yersinia</strong> jest naprawdę wszechstronne a widać to po liście dostępnych protokoł&oacute;w w ramach, kt&oacute;rych są przeprowadzane ataki).</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image58.png" alt="image58" width="700" height="487" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po wyborze protokołu za pomocą klawisza: <strong>x</strong> określamy rodzaj ataku. Ponieważ przeprowadzamy atak na zasoby serwera DHCP z listy wybieramy: <strong>sending DISCOVER packet</strong></p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image59.png" alt="image59" width="700" height="487" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Zatwierdzenie ataku (poprzez klawisz 1) rozpocznie zalewanie serwera DHCP pakietami DHCPDlSCOVER proszącymi serwer o dostarczenie konfiguracji sieciowej (ruch ten jest typu broadcast).</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image60.png" alt="image60" width="700" height="487" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Aby przerwać atak należy posłużyć się klawiszem:<strong> l</strong> po naciśnięciu, kt&oacute;rego pojawi się lista aktualnie prowadzonych atak&oacute;w. Z listy wybieramy atak i celem jego anulowania wybieramy <strong>Enter</strong>.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image61.png" alt="image61" width="700" height="487" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>W trakcie trwania ataku sprawdzamy statystyki serwera DHCP. Jak można zauważyć atak powi&oacute;dł się wszystkie dostępne adresy w ramach zdefiniowanej puli zostały wyczerpane.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image62.png" alt="image62" width="700" height="421" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>O fakcie wyczerpania puli adres&oacute;w IP poprzez okno <strong>Menedżer serwera</strong> jesteśmy informowani stosownymi komunikatami. Komunikaty te są r&oacute;wnież dostępne w dzienniku zdarzeń.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image63.png" alt="image63" width="700" height="420" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Jak wspomniałem wyżej narzędziem Yersinia a co za tym idzie prowadzonymi atakami możemy zarządzać z wykorzystaniem graficznego trybu użytkownika. Aby uruchomić aplikację w trybie graficznym wydajemy polecenie: <strong>yersinia -G </strong>Po uruchomieniu programu należy w pierwszej kolejności dokonać wyboru interfejsu sieciowego za pomocą, kt&oacute;rego będzie przeprowadzany tak. Aby zmienić interfejs można r&oacute;wnież posłużyć się przyciskiem: <strong>Edit interfaces</strong>.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image64.png" alt="image64" width="700" height="505" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Kolejnym krokiem jest wyb&oacute;r protokołu, kt&oacute;ry zdefiniujemy po wybraniu odpowiedniej zakładki dostępnej po kliknięciu na przycisk: <strong>Launch attack</strong> Wybieramy zakładkę <strong>DHCP</strong> a następnie <strong>sending DISCOVER packet</strong> Aby uruchomić atak całość ustawień zatwierdzamy przyciskiem <strong>OK</strong>.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image65.png" alt="image65" width="700" height="505" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Atak DHCP Consumption Attack zostaje uruchomiony. Listę aktualnie przeprowadzanych atak&oacute;w wraz z możliwością ich anulowania przeprowadzimy po wyborze przycisku: <strong>List attacks</strong>.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image66.png" alt="image66" width="700" height="505" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Tak jak poprzednio serwer DHCP zostaje zablokowany co dla klient&oacute;w oznacza iż nie mogą oni uzyskać adresu IP oraz odnowić dzierżawy adresu już istniejącego. Nie ważne jaki spos&oacute;b komunikacji z programem wybierzemy efekt wykonywanych operacji powinien być identyczny choć z doświadczenia wiem iż tryb interaktywny jest mniej problemowy gdyż w trybie graficznym program potrafi się zawiesić.</p> <p>&nbsp;</p> <p>Do tej pory wykorzystywaliśmy serwer DHCP dostępny w ramach systemu Windows Server 2012 lecz nic nie stoi na przeszkodzie by rolę tą pełnił router. Więc zanim przejdziemy dalej prześledźmy jeszcze scenariusz w kt&oacute;rym rolę serwera DHCP pełni router CISCO.</p> <p>&nbsp;</p> <p>Serwer DHCP na routerze został uruchomiony (zostały wydane podstawowe polecenia, jeśli chcesz przeczytać więcej o sposobie konfiguracji routera, kt&oacute;ry będzie pełnić rolę serwera DHCP zapraszam do wpisu: <a href="http://slow7.pl/item/33-co-w-sieci-siedzi-protokol-dhcp" title="Co w sieci siedzi. Protok&oacute;ł DHCP."><span style="color: blue; text-decoration: none;">Co w sieci siedzi. Protok&oacute;ł DHCP).</span></a></p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image67.png" alt="image67" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Statystyki serwera sprawdzimy za pomocą poleceń: <strong>show ip dhcp pool</strong> oraz <strong>show ip dhcp binding</strong> Jak widać poniżej z zdefiniowanej puli 254 adres&oacute;w IP (punkt 1) dostępnych w ramach zakresu obejmujących sieć 10.0.0.0/24 został wykorzystany jeden (punkt 2).</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image68.png" alt="image68" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Uruchamiamy atak wyczerpania zasob&oacute;w serwera DHCP i sprawdzamy jego efekt. Wystarczyło kilka sekund by ilość przydzielonych adres&oacute;w w ramach zdefiniowanej puli wzrosła do 217.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image69.png" alt="image69" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Dokładne sprawdzenie ilości przydzielonych adres&oacute;w IP uwidacznia ich całą listę.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image70.png" alt="image70" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Dalsze przeprowadzenie ataku doprowadza do wyczerpania zasob&oacute;w serwera DHCP a tym samym jak zostało pokazane na rysunku poniżej serwer przestaje dostarczać konfigurację sieciową zgłaszającym się klientom.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image71.png" alt="image71" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Opisany wyżej atak na serwer DHCP nie jest jedynym gdyż atakujący bardzo często wykorzystuje atak związany z podstawieniem fałszywego serwera DHCP. Jak już wiemy jak zablokować serwer DHCP nic nie stoi na przeszkodzie by uruchomić własny, kt&oacute;rego zadaniem będzie np. dostarczanie takiej konfiguracji sieciowej w kt&oacute;rej adresy bramy będzie wskazywać na atakującego.</p> <p>&nbsp;</p> <p>Prześledźmy zatem scenariusz w kt&oacute;rym atakujący host o adresie IP 10.0.0.30 unieszkodliwia właściwy serwer DHCP a następnie uruchamia własny. Do wykonania tego zadania wykorzystamy użyte już wcześniej narzędzie <strong>Ettercap</strong>.</p> <p>&nbsp;</p> <p>Po uruchomieniu narzędzia (wykorzystujemy tak jak w przypadku ataku ARP tryb <strong>Unified sniffing</strong>) z g&oacute;rnego menu wybieramy <strong>Mitm</strong> a następnie <strong>DHCP spoofing</strong>.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image72.png" alt="image72" width="700" height="456" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>W nowo otwartym oknie określamy adresy jakie mają zostać dostarczone klientom:</p> <ul> <li style="padding-left: 60px;"><strong>IP Pool</strong> - zakres adres&oacute;w IP jakie może przydzielić serwer DHCP,</li> <li style="padding-left: 60px;"><strong>Netmask</strong> - maska podsieci,</li> <li style="padding-left: 60px;"><strong>DNS Server IP</strong> - adres serwera DNS (8.8.8.8 publiczny adres serwera Google),</li> </ul> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image73.png" alt="image73" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po zaakceptowaniu ustawień serwer DHCP zaczyna działać i oczekuje na klient&oacute;w.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image74.png" alt="image74" width="700" height="456" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Do sieci podłączamy klienta (pamiętamy, że właściwy serwer DHCP nie działa), jak widać poniżej klientowi zostaje przydzielony pierwszy adres IP 10.0.0.50 z zdefiniowanej puli fałszywego serwera DHCP. Jak można łatwo zauważyć adres IP bramy wskazuje na hosta przeprowadzającego atak (10.0.0.30).</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image75.png" alt="image75" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>O fakcie przypisania adresu IP klientowi zostaniemy poinformowani w oknie narzędzia Ettercap.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image76.png" alt="image76" width="700" height="456" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Sprawdzenie tablicy ARP klienta dobitnie przekonuje Nas o powodzeniu ataku - adres IP 10.0.0.30 jest prawidłowo powiązany z adresem MAC atakującego.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image77.png" alt="image77" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Fałszywy serwer DHCP możemy r&oacute;wnież uruchomić wykorzystując do tego narzędzie <strong>Yersinia</strong>. Po uruchomieniu programu wybieramy ikonę <strong>Launch attack</strong> a następnie w oknie <strong>Choose attack</strong> na zakładce <strong>DHCP</strong> wybieramy opcje <strong>creating DHCP rogue server</strong>. W nowo otwartym oknie Parameters list definiujemy adresysieciowe, kt&oacute;rymi ma dysponować fałszywy serwer DHCP. Po uzupełnieniu wszystkich p&oacute;l atak uruchamiamy przyciskiem <strong>OK</strong> (okno definicji parametr&oacute;w serwera nie znika). Fałszywy serwer DHCP działa i oczekuje na klient&oacute;w.</p> <p>&nbsp;</p> <p>W przypadku wykorzystania narzędzia Yersinia do utworzenia fałszywego serwera DHCP należy zainstalować dodatkowy pakiet: <strong>isc-dhcp-server</strong></p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image78.png" alt="image78" width="700" height="404" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Podstawowa zasada działania przełącznika sprowadza się do tego, że dzięki ciągłemu uczeniu się adres&oacute;w MAC podłączających się klient&oacute;w (pamiętamy, że przełącznik jest urządzeniem warstwy drugiej) wie na kt&oacute;ry interfejs ma przekazać dane tak by mogły być one prawidłowo dostarczone. Oznacza to, że podczas normalnej pracy urządzenia nie dochodzi do sytuacji w kt&oacute;rej to dane są przekazywane na niewłaściwe porty. Odmienną zasadę działania oferował hub sieciowy gdyż w przypadku tego urządzenia trafiające pakiety do danego interfejsu były powielane na wszystkie inne a dany host decydował o tym czy otrzymane informacje odrzucić bądź zaakceptować. Jak łatwo się domyślić sieć zbudowana z wykorzystaniem hub&oacute;w nie była rozwiązaniem zbyt wydajnym gdyż bardzo wiele danych było przesyłanych niepotrzebnie (hub przekazywał pakiety w kierunk&oacute;w host&oacute;w, kt&oacute;re ich nie oczekiwały a w konsekwencji były one odrzucane). Jednak taki scenariusz dla osoby pr&oacute;bującej przechwycić ruch sieciowy był nader korzystny gdyż znacznie łatwiej było prowadzić sniffing. Pakiety od innych host&oacute;w do komputera przechwytującego ruch były przekazywane (ze względu na wykorzystanie huba) wystarczyło tylko zmusić kartę sieciową do ich rejestrowania. Sytuacja ta uległa pogorszeniu (z punktu widzenia atakującego) gdy zamiast hub&oacute;w zaczęto wykorzystywać przełączniki. Lecz jest sytuacja w kt&oacute;rej możemy zmusić przełącznik by zachowywał się jak hub. Każdy przełącznik posiada tablicę adres&oacute;w MAC, kt&oacute;rej zadaniem jest przechowywanie informacji o nauczonych adresach MAC należących do klient&oacute;w. Rozmiar tej tablicy w zależności od urządzenia jest r&oacute;żny a co dla Nas najważniejsze jest ograniczony. Oznacza to ni mniej ni więcej, że dany switch jest w stanie nauczyć się i przechowywać określoną ilość adres&oacute;w MAC. Pewnie zastanawiasz się Czytelniku - Co dzieje się w przypadku zapełnienia tablicy? Ot&oacute;ż w takiej sytuacji przełącznik zaczyna zachowywać się jak hub czyli otrzymane ramki zostają powielone na wszystkie interfejsy przełącznika. Dla hakera bądź osoby przeprowadzającej test penetracyjny przypadłość ta jest kolejnym wektorem ataku. Zatem spr&oacute;bujmy przeprowadzić atak, kt&oacute;rego zadaniem będzie wyczerpanie zasob&oacute;w tablicy MAC przełącznika a w konsekwencji do zmuszenia switcha by działał jak hub.</p> <p>&nbsp;</p> <p>Aby sprawdzić pojemność tablicy (ilość możliwych do przechowywania wpis&oacute;w) wydaj polecenie: <strong>show mac-address-table count </strong>Po wydaniu komendy uzyskamy informację o ilości aktualnych wpis&oacute;w w tablicy MAC (w rozbiciu na adresy poznane w spos&oacute;b dynamiczny jak i te zdefiniowane statycznie przez administratora) oraz ilości dostępnego miejsca.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image79.png" alt="image79" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>By poznać bardziej szczeg&oacute;łowe dane wydaj polecenie: <strong>show mac-address-table &lt;rodzaj_wpisu&gt;</strong> (w nowszych wersjach IOS: <strong>show mac address-table &lt;rodzaj_wpisu&gt;</strong>). Poniżej przykład wydania komendy dostarczającej nam informację o adresach MAC nauczonych dynamicznie. Opr&oacute;cz samego adresu MAC zostaniemy poinformowani o interfejsie przez, kt&oacute;ry dany adres MAC jest osiągalny oraz o przynależności do sieci VLAN.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image80.png" alt="image80" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Do przeprowadzenia ataku użyjemy narzędzia: <strong>macof </strong>Aby rozpocząć atak zalewania przełącznika adresami MAC należy wydać polecenie: <strong>macof -i &lt;interfejs&gt;</strong> Po zatwierdzeniu komendy na domyślny adres IP 0.0.0.0 (wszyscy) zostaną wysłane ramki symulujące połączenia pomiędzy hostami.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image81.png" alt="image81" width="700" height="469" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Atak ten r&oacute;wnież możemy obserwować z wykorzystaniem narzędzia Wireshark. Jak można zauważyć poniżej program <strong>macof</strong> generuje pakiety protokołu IPv4 udające łączność pomiędzy losowo zdefiniowanymi adresami IP.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image82.png" alt="image82" width="700" height="582" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>W przypadku programu <strong>macof</strong> do dyspozycji mamy dodatkowe przełączniki:</p> <p style="margin-left: 30px;"><strong>-i &lt;interfejs&gt;</strong> - określa użyty interfejs,</p> <p style="margin-left: 30px;"><strong>-s &lt;adres_IP&gt;</strong> - określa źr&oacute;dłowy adres IP,</p> <p style="margin-left: 30px;"><strong>-d &lt;adres_IP&gt;</strong> - określa docelowy adres IP,</p> <p style="margin-left: 30px;"><strong>-e &lt;adres MAC&gt;</strong> - określa docelowy adres sprzętowy,</p> <p style="margin-left: 30px;"><strong>-x &lt;numer_portu&gt;</strong> - określa źr&oacute;dłowy port TCP,</p> <p style="margin-left: 30px;"><strong>-y &lt;numer_portu&gt;</strong> - określa docelowy port TCP,</p> <p style="margin-left: 30px;"><strong>-n &lt;liczba&gt;</strong> - definiuje liczbę pakiet&oacute;w do wysłania.</p> <p>&nbsp;</p> <p>Atak jest w toku. Ponowne sprawdzenie wykorzystania tablicy MAC ukazuje stan w kt&oacute;rym to cała dostępna przestrzeń tablicy adres&oacute;w MAC jest wykorzystana. Przełącznik wypełnił całą tablicę, nie może uczyć się nowy adres&oacute;w MAC.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image83.png" alt="image83" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Dokładniejsze sprawdzenie wypełnienia tablicy pokaże Nam wszystkie poznane adresy MAC.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image84.png" alt="image83" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Atak zakończył się powodzeniem gdyż po przepełnieniu tablicy MAC przełącznika zaczyna się on zachowywać jak zwykły koncentrator tj. otrzymywane pakiety są rozsyłane na wszystkie interfejsy przełącznika. Poniżej przechwycony ruch sieciowy podczas trwania ataku - host 10.0.0.1 wysyła w kierunku hosta 10.0.0.20 zapytanie ping (udało się zarejestrować odpowiedzi). I na koniec jeszcze jedna mała uwaga - atak tego typu powiedzie się tylko w takiej sytuacji w kt&oacute;rej w tablicy MAC niema jeszcze wpis&oacute;w odpowiadającym hostom co do kt&oacute;rych ruch monitorujemy. Jeśli wpisy istnieją nie uda nam się ruchu sieciowego przechwycić.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image85.png" alt="image85" width="700" height="422" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Aby wyczyścić tablicę adres&oacute;w MAC wydaj polecenie: <strong>clear mac-address-table dynamic</strong></p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image86.png" alt="image86" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Opisaliśmy podstawowe metody przeprowadzania ataku z wykorzystaniem założonych na wstępie artykułu protokoł&oacute;w, czas by przejść do opisu obrony przed tego typu atakami (choć do opisu przeprowadzenia jeszcze jednego ataku na chwilę wr&oacute;cimy - szczeg&oacute;ły w dalszej części wpisu).</p> <p>&nbsp;</p> <p>Opis obrony rozpoczniemy od protokołu DHCP gdyż opisana poniżej procedura zostanie powt&oacute;rnie wykorzystana w innej metodzie obrony.</p> <p>&nbsp;</p> <p>Zabezpieczenie serwera DHCP przed zalaniem go pakietami zawierającymi prośbę o przydzielenie adresu IP (a co za tym idzie wyczerpaniu zasob&oacute;w serwera) a także ochronę sieci przed nieautoryzowanym serwerem DHCP osiągniemy konfigurując na przełączniku mechanizm <strong>DHCP snooping</strong>.</p> <p>&nbsp;</p> <p>Działanie funkcji sprowadza się do określenia <strong>interfejs&oacute;w zaufanych</strong> czyli takich przez kt&oacute;re ustanowiona jest bezpośrednia łączność z serwerem DHCP oraz <strong>interfejs&oacute;w niezaufanych</strong> - na portach tych nie może być prowadzona wymiana pakiet&oacute;w związana z funkcjonowaniem serwera DHCP (m&oacute;wiąc inaczej serwer DHCP podłączony do portu przełącznika pracującego w trybie untrusted nie będzie działał). Port niezaufany w przypadku wykrycia podejrzanego ruchu sieciowego zostaje automatycznie zamknięty.</p> <p>&nbsp;</p> <p>Zanim przejdziemy dalej uzupełnimy naszą topologię sieciową wykorzystywaną w atakach na serwer DHCP o niezbędne dane (numery interfejs&oacute;w przełącznika do kt&oacute;rych podpięte są stacje).</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image87.png" alt="image87" width="700" height="450" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Jak widać powyżej komunikacja z serwerem DHCP następuje przez interfejs f0/1. Interfejs ten będziemy konfigurowali jako zaufany. Aby na przełączniku skonfigurować mechanizm DHCP snooping należy wydać następujące polecenia:</p> <p style="margin-left: 30px;">1 - <strong>ip dhcp snooping vlan &lt;numer_sieci_VLAN&gt;</strong> - uruchamiamy funkcję w kontekście danej sieci VLAN. Urządzenia w scenariuszu są umiejscowione w domyślnej sieci VLAN tak więc polecenie przyjmuje postać: <strong>ip dhcp snooping vlan 1</strong></p> <p style="margin-left: 30px;">2 - <strong>ip dhcp snooping</strong> - włączenie mechanizmu globalnie,</p> <p style="margin-left: 30px;">3 - w trybie konfiguracji interfejsu za pomocą polecenia: <strong>ip dhcp snooping trust</strong> ustawiamy zaufanie portu.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image88.png" alt="image88" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Dla reszty interfejs&oacute;w sieciowych (aby nie konfigurować każdego portu z osobna wydajemy polecenie: <strong>interface range &lt;zakres_port&oacute;w&gt;</strong>) określamy limit wystąpienia pakiet&oacute;w związanych z funkcjonowaniem serwera DHCP - po przekroczeniu ustalonej wartości następuje blokada interfejsu.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image89.png" alt="image89" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Działanie mechanizmu skontrolujemy wydając komendę: <strong>show ip dhcp snooping </strong>Port f0/1 jest portem zaufanym tak więc działanie mechanizmu DHCP snooping tego portu nie obejmuje, zaś na reszcie interfejs&oacute;w jest przeprowadzana inspekcja związana z ruchem pakiet&oacute;w DHCP. W tym przypadku wartość progu została ustalona na 10 pakiet&oacute;w na sekundę.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image90.png" alt="image90" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Funkcja ochrony serwera DHCP została skonfigurowana nie pozostaje Nam nic innego jak sprawdzić ją w działaniu. Ponownie uruchamiamy atak zalewając serwer DHCP pakietami DHCP Discover. Chwilę po uruchomieniu ataku zostaje przekroczona graniczna wartość wystąpienia 10 pakiet&oacute;w na sekundę, interfejs przechodzi w stan<strong>: err-disable</strong> i zostaje wyłączony.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image91.png" alt="image91" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Status interfejsu możemy sprawdzić za pomocą dobrze znanych nam poleceń: <strong>show ip interface brief</strong></p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image92.png" alt="image92" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>a także: <strong>show interface &lt;numer_interfejsu&gt;</strong></p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image93.png" alt="image93" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Do odnalezienia interfejs&oacute;w w stanie err-disable możesz r&oacute;wnież użyć polecenia:<strong> show interface status err-disabled</strong></p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image94.png" alt="image94" width="700" height="387" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Aby ponownie uruchomić interfejs przechodzimy do trybu konfiguracji danego portu i wyłączamy go (punkt 1) a następnie włączamy (punkt 2).</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image95.png" alt="image95" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Jeśli na danym nie zaufanym porcie pojawi się obcy serwer DHCP mechanizm obrony wygeneruje odpowiednie ostrzeżenie. Podłączający się klient nie uzyska konfiguracji sieciowej.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image96.png" alt="image96" width="700" height="72" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Dzięki zastosowaniu mechanizmu DHCP snooping ochroniliśmy naszą sieć przed atakami związanymi z protokołem DHCP.</p> <p>&nbsp;</p> <p>Aby zapobiec atakowi typu MAC Address Table Overflow Attack (przepełnienie tablicy MAC) możemy tak skonfigurować przełącznik by nie uczył się poznanych w spos&oacute;b dynamiczny adres&oacute;w MAC a co za tym idzie nie będzie budowana tablica MAC przełącznika. Standardowo jak już pewnie wiesz Czytelniku tablica ta służy switchowi do tego aby powiązać dany adres MAC z interfejsem na kt&oacute;rym adres ten jest osiągalny.</p> <p>&nbsp;</p> <p>Sprawdzenie tablicy MAC wykonujemy za pomocą polecenia: <strong>show mac address-table dynamic</strong> (już o tym wyżej pisałem i pewnie uważny Czytelnik zauważy, że w poprzednim przypadku użyłem polecenia w kt&oacute;rym był zawarty myślnik pomiędzy słowami <strong>mac</strong> a <strong>address</strong> - Czemu teraz go nie ma? Ot&oacute;ż w trakcie tworzenia tego wpisu musiałem dokonać aktualizacji wersji oprogramowania przełącznika gdyż polecenia, kt&oacute;re za chwilę przedstawię nie były dostępne w starszej wersji systemu a w nowych wersjach oprogramowania zrezygnowano z myślnika pomiędzy tymi słowami - ot i cała tajemnica). Po wydaniu polecenia zostanie wyświetlona tablica adres&oacute;w MAC przełącznika jak widać poniżej znajdują się w niej tylko 3 wpisy (przyczyną wystąpienia dw&oacute;ch adres&oacute;w MAC na interfejsie f0/7 jest zastosowanie maszyny wirtualnej).</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image97.png" alt="image97" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Wyłączenie tworzenia tablicy dla adres&oacute;w poznanych dynamicznie wykonamy za pomocą komendy<strong>: no mac address-table learning vlan &lt;numer_sieci&gt; </strong>(poznawanie adres&oacute;w MAC wyłączamy w ramach danej sieci VLAN). Dla uproszczenia opisu wszystkie urządzenia są zgrupowane w ramach domyślnej sieci VLAN 1 tak więc w efekcie polecenie przyjmuje postać: <strong>no mac address-table learning vlan 1</strong></p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image98.png" alt="image98" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po wyłączeniu możliwości zapamiętywania adres&oacute;w MAC poznanych dynamicznie ponownie przechodzimy do wykonania ataku mającego na celu przepełnienie tablicy MAC przełącznika. Atak został uruchomiony.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image99.png" alt="image99" width="700" height="466" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Zweryfikujmy atak. Sprawdzenie stanu tablicy uwidacznia brak jakichkolwiek adres&oacute;w MAC, kt&oacute;re zostały uzyskane w spos&oacute;b dynamiczny.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image100.png" alt="image100" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Sprawdzenie og&oacute;lnego stanu ilości przechowywanych adres&oacute;w r&oacute;wnież pokazuje brak jakichkolwiek adres&oacute;w MAC.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image101.png" alt="image101" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Tym razem atak MAC flooding zakończył się niepowodzeniem. Tablica adres&oacute;w MAC przełącznika pozostaje pusta.</p> <p>&nbsp;</p> <p>Brak adres&oacute;w MAC w połączeniu z numerem portu w tablicy MAC przełącznika nie jest stanem pożądanym gdyż sytuacja ta zaburza normalne funkcjonowanie przełącznika. Dlatego po wyłączeniu automatycznego uczenia się adres&oacute;w MAC sami musimy zadbać o wpisy informujące switch o powiązaniu: adres MAC urządzenia-numer interfejsu pod kt&oacute;rym urządzenie te jest dostępne.</p> <p>&nbsp;</p> <p>Aby statycznie zdefiniować tablicę MAC przełącznika należy do tego celu wykorzystać polecenie: <strong>mac address-table static &lt;adres_MAC&gt; vlan &lt;numer_sieci_VLAN&gt; interface &lt;numer_interfejsu&gt;</strong> Tak więc w przyjętym scenariuszu należy wydać polecenia jakie zostały pokazane na zrzucie poniżej.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image102.png" alt="image102" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Weryfikację wprowadzonych ustawień sprawdzimy za pomocą polecenia: <strong>show mac address-table static</strong>. Adresy MAC w powiązaniu z interfejsem zostały wprowadzone prawidłowo.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image103.png" alt="image103" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Jeśli interesuje Cię sprawdzenie tablicy adres&oacute;w MAC w kontekście danej sieci VLAN użyj polecenia: <strong>show mac address-table static vlan &lt;numer sieci_VLAN&gt;</strong></p> <p>Opisane rozwiązanie mające uniknąć konsekwencji ataku przepełnienia tablicy MAC przełącznika nie jest metodą komfortową gdyż o wszystkie ustawienia musimy zadbać sami. O ile w małych sieciach, kt&oacute;rych topologia zbyt często nie ulega zmianie rozwiązanie te jest akceptowalne to w sieciach dużych o zmiennym stanie ilości urządzeń końcowych już nie. Dlatego też istnieją inne rozwiązania, kt&oacute;re pozwolą nam zabezpieczyć naszą sieć przed tego typu atakiem a także innymi atakami wykorzystującymi słabości protokoł&oacute;w wykorzystywanych w warstwie 2 modelu ISO/OSI.</p> <p>&nbsp;</p> <p>Podstawowym i jednym z najbardziej skutecznych sposob&oacute;w zabezpieczenia sieci jest wykorzystanie mechanizmu <strong>Port Security</strong>. Przełączniki firmy CISCO zostały wyposażone w ten mechanizm, kt&oacute;rego gł&oacute;wnym celem jest zapewnienie komunikacji urządzeniom, kt&oacute;re mają do tego prawo. Konfigurację tego mechanizmu w tym artykule nie opiszę gdyż jego dokładny opis zamieściłem w wpisie - <a href="http://slow7.pl/item/103-co-w-sieci-siedzi-warstwa-2-czyli-podstawowa-konfiguracja-przelacznika-cisco" title="Co w sieci siedzi. Warstwa 2 czyli podstawowa konfiguracja przełącznika CISCO"><span style="text-decoration: none;">Co w sieci siedzi. Warstwa 2 czyli podstawowa konfiguracja przełącznika CISCO</span></a> Jeśli chcesz poznać zasady działania ochrony portu z wykorzystaniem funkcji Port Security zapraszam do lektury wpisu dostępnego pod podanym linkiem.</p> <p>&nbsp;</p> <p>Zatem idziemy dalej i przechodzimy do protokołu ARP czyli jak obronić się przed atakiem polegającym na manipulacji adresami zapisanymi w tablicy ARP hosta.</p> <p>&nbsp;</p> <p>Pierwsze zaproponowane rozwiązanie bazuje tak jak w przypadku określenia statycznych wpis&oacute;w w tablicy MAC przełącznika na ręcznej (statycznej) definicji adres&oacute;w zawartych w tablicy ARP. Po ręcznym zdefiniowaniu adresu IP w połączniu z adresem MAC unikniemy ataku zatrucia tablicy ARP gdyż system operacyjny zignoruje wszystkie odbierane komunikaty ARP, dotyczące adres&oacute;w IP-MAC nie pozwalając na zastąpienie wpis&oacute;w statycznych tymi uzyskanymi w spos&oacute;b dynamiczny. Aby uzyskać całkowitą ochronę przed atakiem ARP spoofing należy na wszystkich urządzeniach utworzyć wpisy w tablicy ARP definiujące komunikację każdy z każdym. W praktyce z reguły stosuje się podejście w kt&oacute;rym na komputerach tworzy się statyczne wpisy dla wszystkich serwer&oacute;w oraz bram (wychodzimy z założenia, że większość host&oacute;w pomimo obecności w jednej sieci ze sobą się nie komunikuje).</p> <p>&nbsp;</p> <p>Przechodzimy do ręcznej definicji wpis&oacute;w tablicy ARP. Operację rozpoczniemy od hosta 10.0.0.1 W pierwszej kolejności warto wydać polecenie: <strong>netsh interface ip delete arpcache</strong> kt&oacute;re usunie wszystkie zgromadzone do tej pory powiązania (uchroni nas to przed odmową dodania statycznego wpisu dla adresu, kt&oacute;ry już w tablicy się znajduje, czasem to nie pomaga wtedy wyłącz i włącz interfejs sieciowy). Wydanie polecenia usuwa r&oacute;wnież wszystkie zdefiniowane wcześniej wpisy statyczne.</p> <p>&nbsp;</p> <p>Wpis definiujemy za pomocą komendy: <strong>arp -s &lt;adres_IP&gt; &lt;adres_MAC&gt;</strong> Na hoście oczywiście należy określić adresy host&oacute;w zdalnych. W naszym przypadku podajemy adresy przypisane hostowi 10.0.0.20 Weryfikację dodania wpisu sprawdzimy poleceniem: <strong>arp -a</strong></p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image104.png" alt="image104" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Na komputerze 10.0.0.20 przeprowadzamy analogiczną czynność podając adresy hosta 10.0.0.1.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image105.png" alt="image105" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po skonfigurowaniu statycznych tablic ARP sprawdźmy komunikację pomiędzy hostami. Test ping przeprowadzony z hosta 10.0.0.20 w kierunku komputera 10.0.0.1 zakończył się powodzeniem.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image106.png" alt="image105" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po zdefiniowaniu wpis&oacute;w statycznych sprawdźmy podatność obu system&oacute;w na atak ARP spoofing.</p> <p>&nbsp;</p> <p>W przypadku systemu Windows wszystkie wpisy dodajemy osobnymi polecenia w systemie Linux możliwe jest zebranie wszystkich powiązań (para adres&oacute;w IP-MAC) w osobnym pliku tekstowym i wprowadzenie wszystkich pozycji w spos&oacute;b automatyczny (polecenie: <strong>arp</strong> w połączeniu z parametrem <strong>-f</strong>).</p> <p>&nbsp;</p> <p>Ponownie wykorzystujemy narzędzie Ettercap gdzie po przeprowadzonym skanowaniu wraz z ustaleniem cel&oacute;w uruchamiamy atak zatrucia tablicy ARP.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image107.png" alt="image107" width="700" height="454" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Atak trwa. Sprawdźmy jak wygląda tablica ARP na hoście 10.0.0.20. Polecenie sprawdzenia tablicy zostało wydane dwa razy - przed uruchomieniem ataku (punkt 1) oraz podczas jego trwania (punkt 2). Wpisy w tablicy ARP hosta 10.0.0.20 nie uległy zmianie.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image108.png" alt="image108" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Sprawdzamy tablicę ARP na hoście 10.0.0.1 Tutaj r&oacute;wnież wpisy przed uruchomieniem ataku (punkt 1) są identyczne z wpisami podczas jego trwania (punkt 2).</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image109.png" alt="image109" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Atak zatrucia tablicy ARP w przypadku komputer&oacute;w na kt&oacute;rych zostały zdefiniowane wpisy statyczne nie powi&oacute;dł się - <strong>wpisy poznane w spos&oacute;b dynamiczny nie mogą zastąpić tych zdefiniowanych ręcznie przez administratora</strong>. Przechwytywanie pakiet&oacute;w z wykorzystaniem protokołu ARP pomiędzy hostami 10.0.0.1 a 10.0.0.20 zakończyło się niepowodzeniem co nie oznacza, że nie istnieją inne metody pozwalające Nam na przechwycenie komunikacji pomiędzy stacjami.</p> <p>&nbsp;</p> <p>Miałem już pisać tylko o obronie przed atakami a nie opisywać kolejnych ale tak sobie myślę, że przedstawiony scenariusz pokaże r&oacute;wnież błędy popełniane przez administrator&oacute;w, kt&oacute;re w konsekwencji doprowadzają do tego, że atak na naszą sieć kończy się powodzeniem. W opisie przedstawionym powyżej udaremniliśmy atakującemu możliwość podsłuchania komunikacji pomiędzy hostami ale jak już wspomniałem wachlarz innych metod nadal pozostaje otwarty. Wektorem dla atakującego jest r&oacute;wnież sam przełącznik i to na nim skupimy teraz swoją uwagę.</p> <p>&nbsp;</p> <p>Wykonując skanowanie sieci odkrywamy aktywne hosty (więcej o technikach i metodach skanowania dowiesz się zapoznając się z tym wpisem: <span style="color: blue;">Co w sieci siedzi. Skanowanie sieci - aktywne hosty</span>), wśr&oacute;d gąszcza wykrytych adres&oacute;w IP należy wytypować te kt&oacute;re odpowiadają urządzeniom odpowiedzialnym za funkcjonowanie sieci (switche, routery, access pointy). I tu rodzi się pytanie - Jak tego dokonać?</p> <p>&nbsp;</p> <p>Odpowiedź na to pytanie możemy uzyskać poprzez analizę aktywnych adres&oacute;w MAC zdobytych podczas procesu skanowania sieci. Adres MAC jest zbudowany w ten spos&oacute;b, że pierwsze 24 bity (bądź jak ktoś woli pierwsze 3 bajty) są przypisane do producenta urządzenia sieciowego - to tzw. vendor code , reszta adresu (kolejne 24 bity, bądź 3 bajty) są unikalnym identyfikatorem danego egzemplarza karty. Na przykład adres 00-01-42-AB-01-21 oznacza, że karta została wyprodukowana przez CISCO ponieważ vender code 00-01-42 jest przypisany do firmy CISCO zaś producent nadał jej numer AB-01-21.</p> <p>&nbsp;</p> <p>Aby odnaleźć identyfikatory jakie zostały przypisane do producent&oacute;w urządzeń sieciowych możesz posłużyć się wyszukiwarką dostępną na stronie - <a>http://www.miniwebtool.com/mac-address-lookup/</a></p> <p>&nbsp;</p> <p>Wpisując nazwę firmy bądź vender code uzyskamy informację o producencie.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image110.png" alt="image110" width="700" height="713" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Tak więc wracając do analizy odkrytych adres&oacute;w MAC i przypisując im producenta z dość dużym prawdopodobieństwem możemy wytypować adresy, kt&oacute;re należą do urządzeń odpowiedzialnych za zarządzanie siecią (popularne firmy to m.in. CISCO, Juniper, HP, MikroTik, TP-link, Ubiquiti Networks, ALANTEC, Jirous). Analizując adresy pierwsze swoje kroki skieruj ku adresom IP rozpoczynającym i kończącym daną podsieć gdyż to najczęściej do tych adres&oacute;w IP będą przypisane urządzenia - np. adresem bramy bardzo często jest adres IP o og&oacute;lnym formacie x.x.x.1 bądź x.x.x.254</p> <p>&nbsp;</p> <p>W naszym przypadku odkrywamy urządzenie o adresie 10.0.0.254 i po analizie adresu MAC dochodzimy, że jest to urządzenie CISCO (w tym przypadku zostało wykorzystane narzędzie Nmap, kt&oacute;re samodzielnie dokonuje identyfikacji producenta urządzenia).</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image111.png" alt="image111" width="700" height="456" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Wykonajmy zatem atak zatrucia bufora ARP dla adresu IP 10.0.0.254 Atak swym działaniem obejmuje całą sieć. Po wykonaniu operacji zatrucia tablicy ARP przełącznika oczekujemy na połączenie oczywiście w tle mamy uruchomiony program przechwytujący ruch sieciowy. Jeśli administrator dokonał konfiguracji przełącznika i wszystko działa to z reguły nie ma potrzeby by sprawdzać konfigurację switcha dlatego też oczekiwanie aż administrator nawiąże połączenie może zająć nam wiele czasu. Dlatego też by zmusić administratora do nawiązania połączenia możemy dodatkowo wykonać atak, kt&oacute;rego zadaniem będzie zaburzenie działania sieci. Niedziałająca poprawnie sieć wymusi na osobach dbających o jej działanie podjęcie odpowiednich krok&oacute;w celem znalezienia usterki. Szukając rozwiązania zaistniałych problem&oacute;w wzrasta szansa na to, że administrator nawiąże połączenie z urządzeniem, kt&oacute;rego ruch sieciowy monitorujemy.</p> <p>&nbsp;</p> <p>Dodatkową opcją jest wykorzystanie takich narzędzi jak: Cisco Auditing Tool czy Cisco-Torch, kt&oacute;re potrafią wykonać atak brute-force bądź atak słownikowy na urządzenie celem złamania danych logowania.</p> <p>&nbsp;</p> <p>Atak ARP na switch jest uruchomiony i jak widać poniżej powi&oacute;dł się on - gdyż ruch sieciowy ze stacji 10.0.0.1 z kt&oacute;rej będzie wykonywane logowanie do switcha jest przekazywany w kierunku hosta atakującego 10.0.0.30 (oczywiście podczas prowadzenia prawdziwego ataku do tych informacji jeszcze nie mamy dostępu - zadaniem zrzutu umieszczonego poniżej jest tylko pokazanie Ci Czytelniku iż atak zatrucia bufora ARP zakończył się powodzeniem).</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image112.png" alt="image112" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Administrator wykonuje proces logowania i jak widać poniżej po analizie przechwyconych pakiet&oacute;w udaje Nam się zdobyć hasło - <strong>cisco</strong> (hasło do nawiązania połączenia oraz do przejścia do trybu enable).</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image113.png" alt="image113" width="700" height="582" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Atak zatrucia tablicy ARP możemy zakończyć gdyż zdobyliśmy potrzebne nam dane.</p> <p>&nbsp;</p> <p>W naszych rozważaniach wszystko przebiegło po naszej myśli gdyż zostały spełnione określone warunki, kt&oacute;re umożliwiły Nam przeprowadzenie ataku z powodzeniem.</p> <p>&nbsp;</p> <p>Pierwszym błędem jest wykorzystanie protokołu Telnet, kt&oacute;ry został użyty do nawiązania połączenia z przełącznikiem. Protok&oacute;ł ten nie gwarantuje Nam żadnej ochrony podczas przesyłania danych gdyż wszystkie informacje nie są w żaden spos&oacute;b szyfrowane - cała komunikacja odbywa się otwartym tekstem. Osoba przeprowadzająca atak uzyska wszystkie niezbędne dane. Zatem by zwiększyć bezpieczeństwo sieci zrezygnuj z Telnetu na rzecz bezpieczniejszego protokołu jakim jest SSH (jak przeprowadzić taką konfigurację dowiesz się po przeczytaniu wpisu - <a href="http://slow7.pl/item/103-co-w-sieci-siedzi-warstwa-2-czyli-podstawowa-konfiguracja-przelacznika-cisco" title="Co w sieci siedzi. Warstwa 2 czyli podstawowa konfiguracja przełącznika CISCO"><span style="text-decoration: none;">Co w sieci siedzi. Warstwa 2 czyli podstawowa konfiguracja przełącznika CISCO</span></a>).</p> <p>&nbsp;</p> <p>Drugim błędem jest umieszczenie adresu IP przełącznika przez kt&oacute;ry uzyskujemy dostęp do urządzenia w tej samej sieci VLAN w kt&oacute;rej pracują użytkownicy sieci. Dobrą praktyką jest wydzielenie odrębnej sieci VLAN służącej do administrowania urządzeniami sieciowymi a co do kt&oacute;rej dostęp mają tylko administratorzy. Wydzielenie osobnej sieci VLAN służącej do zarządzania urządzeniami zagwarantuje Nam, że postronni użytkownicy sieci nie będą mieli dostęp do adres&oacute;w IP, kt&oacute;re urządzeniom zostały przypisane. Jak taką sieć VLAN skonfigurować dowiesz się tu: <a href="http://slow7.pl/item/105-co-w-sieci-siedzi-warstwa-2-konfiguracja-sieci-vlan" title="Co w sieci siedzi. Warstwa 2 - konfiguracja sieci VLAN."><span style="text-decoration: none;">Co w sieci siedzi. Warstwa 2 - konfiguracja sieci VLAN.</span></a></p> <p>&nbsp;</p> <p>Aby dodatkowo zwiększyć poziom bezpieczeństwa możesz r&oacute;wnież zdefiniować adresy IP kt&oacute;re mają prawo łączyć się z danym urządzeniem.</p> <p>&nbsp;</p> <p>W sieciach w kt&oacute;rych bezpieczeństwo jest stawiane na pierwszym miejscu stosuje się jeszcze inny wybieg polegający na stworzeniu całkiem odrębnej fizycznej sieci, kt&oacute;ra służy tylko do zarządzania oraz monitorowania urządzeń sieciowych (metoda Out of Band). Rozwiązanie te znacząco podnosi poziom bezpieczeństwa, gdyż do sieci takiej mają dostęp tylko administratorzy (normalni użytkownicy z niej nigdy nie korzystają) a dodatkowo mamy redundancję zapewniającą nam dostęp do urządzeń gdy właściwa sieć przestanie działać (dodatkowy kanał komunikacyjny).</p> <p>&nbsp;</p> <p>Atakujący zdobył dostęp do przełącznika a tym samym uzyskał wgląd w ustawienia urządzenia i na pewno jest bogatszy o wiele cennych informacji dotyczących budowy naszej sieci. Dodatkowo uzyskuje on możliwość manipulowania urządzeniem.</p> <p>&nbsp;</p> <p>Jedną z ciekawszych rzeczy jakie może wykorzystać atakujący jest wykorzystanie funkcji <strong>port mirroring</strong>. Działanie tego mechanizmu sprowadza się do wskazania interfejs&oacute;w przełącznika, z kt&oacute;rych cały ruch sieciowy (odbierany, wysyłany bądź oba) będzie kopiowany na inny wybrany port. W przypadku CISCO mechanizm ten nazwano SPAN (ang. Switch Port Analyzer).</p> <p>&nbsp;</p> <p>Spr&oacute;bujmy zatem wykorzystać tę funkcję przełącznika.</p> <p>&nbsp;</p> <p>Atakujący dzięki zdobytym danym uwierzytelniającym wykonuje proces logowania do urządzenia i konfiguruje kopiowanie ruchu sieciowego tak by m&oacute;c przechwytywać komunikacje pomiędzy hostem o adresie IP 10.0.0.1 a 10.0.0.20</p> <p>&nbsp;</p> <p>Ustawienie sesji sprowadza się do wydania dw&oacute;ch poleceń:</p> <p style="margin-left: 30px;">1 - <strong>monitor session &lt;numer_sesji&gt; source interface &lt;id_interfejsu&gt; &lt;rodzaj_ruch_sieciowego&gt; </strong>- polecenie określa numer sesji funkcji SPAN oraz definiuje interfejs z kt&oacute;rego ruch ma zostać skopiowany wraz z typem ruchu. W naszym przypadku kopiowany będzie ruch sieciowy przychodzący i wychodzący z interfejsu f0/1 (do portu tego podłączony jest host 10.0.0.1 - port f0/7 r&oacute;wnież jest dobrym wyborem). Użycie parametru: <strong>rx</strong> definiuje ruch otrzymywany przez przełącznik zaś parametr: <strong>tx</strong> określa ruch opuszczający dany interfejs.</p> <p style="margin-left: 30px;">2- <strong>monitor session &lt;numer_sesji&gt; destination interface &lt;id_interfejsu&gt;</strong> - polecenie definiuje do kt&oacute;rego interfejsu ma zostać przesłany skopiowany ruch sieciowy.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image114.png" alt="image114" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Atakujący kopiowanie ruchu sieciowego ustawił na interfejs f0/3 czyli port do kt&oacute;rego sam jest podłączony. To niestety jest błąd gdyż zatwierdzając drugie polecenie pozbawił się łączności z siecią a tym samym stracił możliwość wydawania poleceń urządzeniu.</p> <p>&nbsp;</p> <p>Normalna łączność z siecią został utracona lecz na interfejs f0/3 przełącznika jest realizowany proces kopiowania otrzymywanych/wysyłanych danych z interfejsu f0/1. Uruchamiając narzędzie do przechwytywania pakiet&oacute;w możemy rejestrować łączność pomiędzy hostami. Na hoście 10.0.0.1 wydano polecenie ping w kierunku hosta 10.0.0.20 jak widać poniżej udało się tą komunikację przechwycić.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image115.png" alt="image115" width="700" height="423" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Konfigurację SPAN możemy zweryfikować wydając polecenie: <strong>show monitor session &lt;numer_sesji&gt;</strong></p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image116.png" alt="image116" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Gdy atakujący ma dostęp do przełącznika może poprzez jego konfigurację zdobyć wiele cennych informacji w tym przypadku ustawienie interfejsu f0/3 jako tego na kt&oacute;ry ma być kopiowany ruch oczywiście dla przeprowadzającego atak zakończyło się powodzeniem pomimo tego, że sam fizycznie od sieci się odciął. Aby uniknąć tego typu sytuacji, ruch monitorowany należałoby kopiować na inny np. nie używany interfejs do kt&oacute;rego jest podpięta stacja kontrolowana r&oacute;wnież prze atakującego.</p> <p>&nbsp;</p> <p>Mechanizm SPAN bardzo często jest wykorzystywany przez samych administrator&oacute;w do wykrywania anomalii w ruchu sieciowym. Do interfejsu takiego można podpiąć komputer, kt&oacute;ry w czasie rzeczywistym otrzymywane pakiety będzie analizował i gdy wykryje jakieś nieprawidłowości zostaniemy o nich powiadomieni - systemy IDS/IPS kt&oacute;rych zadaniem jest wykrywanie (IDS) lub wykrywanie i blokowanie atak&oacute;w sieciowych (IPS).</p> <p>&nbsp;</p> <p>W przypadku CISCO istnieje odmiana sesji SPAN, kt&oacute;ra może być stosowana w odniesieniu do sieci VLAN - tzw. VSPAN &ndash; Virtual SPAN.</p> <p>&nbsp;</p> <p>Przykładowy zapis zamieszczony poniżej oznacza, że na porcie f0/3 pojawią się kopie ramek kierowanych do port&oacute;w przełącznika, kt&oacute;re swoje interfejsy mają przypisane do sieci VLAN o numerach od 10 do 12.</p> <p style="padding-left: 30px;"><strong>switch(config)# monitor session 1 source vlan 10-12 rx</strong></p> <p style="padding-left: 30px;"><strong>switch(config)# monitor session 1 destination interface f0/3</strong></p> <p>&nbsp;</p> <p>Działanie funkcji SPAN dodatkowo możemy rozszerzyć na wiele przełącznik&oacute;w, kt&oacute;re są ze sobą połączone oraz skonfigurowane tak by przechwytywany ruch sieciowy odbywał się poprzez inne switche do komputera go rejestrującego - RSPAN (Remote SPAN).</p> <p>&nbsp;</p> <p>Dokładna konfiguracja urządzeń pod kątem monitorowania i przechwytywania ruchu sieciowego i jego dalszej analizie wykracza już poza ramy tego wpisu, co nie oznacza że do tematu tego nie będę chciał w przyszłości wr&oacute;cić.</p> <p>&nbsp;</p> <p>Wracając jeszcze chwilkę do metody wykorzystanej przez atakującego to oczywiście możliwy jest r&oacute;wnież taki scenariusz (pod warunkiem, że atakujący ma dostęp fizycznie do sieci) w kt&oacute;rym następuje podpięcie dodatkowego urządzenia na drodze pomiędzy hostem 10.0.0.1 a 10.0.0.20, kt&oacute;rego zadaniem będzie kopiowanie otrzymywanego ruchu sieciowego. Do tego zadania posłużyć może nam najzwyklejszy koncentrator (pamiętamy, że w przypadku hub&oacute;w sieciowych ruch jest wysyłany na wszystkie jego porty) bądź możemy skorzystać z bardziej zaawansowanego urządzenia jakim jest TAP. Zadaniem tego typu urządzeń jest przekazywanie ruchu sieciowego przy jednoczesnym kopiowaniu go. TAP zaopatrzony jest z reguły w trzy porty: port A, port B oraz port monitorujący. Porty A i B służą do połączenia urządzenia z istniejącą strukturą sieciową zaś na port monitorujący przesyłany jest cały ruch sieciowy jaki jest przekazywany pomiędzy portem A i portem B. Dużą zaletą tego typu urządzeń jest fakt iż nie wprowadzają one żadnych dodatkowych op&oacute;źnień czy spadk&oacute;w przepustowości łącza (jak to ma w przypadku użycia koncentratora) podczas przesyłania danych. W sprzedaży przez takie firmy jak: NetOptics, Finisar czy Gigamon są modele TAP-&oacute;w, kt&oacute;re przeznaczone są do sieci tradycyjnych jak i światłowodowych.</p> <p>&nbsp;</p> <p>Tak więc topologia sieciowa w przypadku użycia dodatkowego urządzenia, kt&oacute;rego celem byłoby przechwytywanie pakiet&oacute;w mogłaby wyglądać następująco (cały czas pamiętamy, że tego typu rozwiązanie wymaga fizycznego dostępu do atakowanej sieci):</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image117.png" alt="image117" width="700" height="366" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Wniosek z takiego scenariusz płynie taki - że bezpieczeństwo naszej sieci nie sprowadza się tylko do właściwej konfiguracji urządzeń sieciowych ale r&oacute;wnież obejmuje ochronę fizycznego dostępu do infrastruktury.</p> <p>&nbsp;</p> <p>Wracamy do wątku gł&oacute;wnego i omawiamy dalej jak ustrzec się przed atakiem zatrucia tablicy ARP.</p> <p>&nbsp;</p> <p>Aby zapobiec zmianie tablicy ARP na przełączniku tak samo jak na hostach możemy zdefiniować statyczne adresy MAC, kt&oacute;re zostaną powiązane z adresem IP i interfejsem przełącznika. Sprawdzenie tablicy ARP w kontekście adres&oacute;w nauczonych dynamicznie i statycznie wykonamy wydając komendę: <strong>show arp dynamic</strong> bądź <strong>show arp static</strong> Jak widać poniżej w tablicy ARP przełącznika istnieją tylko dwa wpisy poznane w spos&oacute;b dynamiczny i brak jest wpis&oacute;w statycznych. Naszym celem jest utworzenie dla host&oacute;w 10.0.0.1 oraz 10.0.0.20 wpis&oacute;w statycznych tak by ich zamiana była niemożliwa.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image118.png" alt="image118" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Rozpoczynamy od usunięcia istniejących wpis&oacute;w. Usunięcie powiązania wykonamy za pomocą komendy: <strong>clear ip arp &lt;adres_IP&gt; </strong>Ponowne sprawdzenie tablicy uwidacznia brak jakichkolwiek wpis&oacute;w dynamicznych.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image119.png" alt="image119" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Wpisy statyczne definiujemy za pomocą polecenia: <strong>arp &lt;adres_IP&gt; &lt;adres_MAC&gt; arpa &lt;interfejs&gt; </strong>Komendę wydajemy w trybie konfiguracji globalnej. Poniżej zostały utworzone wpisy statyczne dla obu host&oacute;w.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image120.png" alt="image120" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Poprawność dodania wpis&oacute;w zweryfikujemy za pomocą znanego Nam już polecenia: <strong>show arp static </strong>Wpisy zostały dodane prawidłowo.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image121.png" alt="image121" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Dodatkowo wszystkie wpisy zapisane w tablicy możemy sprawdzić poleceniem: <strong>show ip arp</strong> zaś gdy chcemy uzyskać jeszcze bardziej szczeg&oacute;łowe dane możemy posłużyć się komendą: <strong>show arp &lt;static|dynamic&gt; detail</strong></p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image122.png" alt="image122" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Ustawienie wpis&oacute;w statycznych na przełączniku tak samo jak w przykładzie poprzednim w kt&oacute;rym to tablicę ARP definiowaliśmy na hoście uchroni Nas przed atakiem zatrucia tablicy ARP switcha - wpisy określone statycznie mają pierwszeństwo przed tymi poznanymi w spos&oacute;b dynamiczny.</p> <p>&nbsp;</p> <p>Kontrolę nad pakietami ARP możemy sprawować jeszcze przy pomocy jednego mechanizmu jakim jest <strong>Dynamic ARP Inspection</strong>. Zadaniem funkcji jest kontrolowanie pojawiających się wpis&oacute;w ARP tak by tylko uprawnione hosty mogły zostać dopuszczone do komunikacji. Działanie tego mechanizmu jest ściśle powiązane z opisywaną już funkcją DHCP snooping gdyż to na podstawie tablicy przydzielonych adres&oacute;w IP powiązanych wraz z adresami MAC opiera się działanie inspekcji prowadzonej przez przełącznik. Dla poprawnego działania funkcji musi istnieć tablica tworzona dzięki włączonemu mechanizmowi DHCP snooping gdyż to na jej podstawie (badane są dwa pola tablicy tj. IPAddress oraz MACAddress) następuje weryfikacja istnienia hosta, kt&oacute;ry dane pakiety ARP generuje. Brak hosta w tablicy skutkuje zablokowaniem prowadzenia komunikacji.</p> <p>&nbsp;</p> <p>Aby bardziej szczeg&oacute;łowo zademonstrować działanie mechanizmu przejdźmy do jego konfiguracji.</p> <p>&nbsp;</p> <p>Konfigurację rozpoczynamy od włączenia funkcji DHCP snooping (punkt 1 oraz 2) a następnie za pomocą komendy: <strong>ip arp inspection vlan &lt;id_sieci_VLAN&gt;</strong> uaktywniamy mechanizm Dynamic ARP Inspection (punkt 3). Polecenia wydajemy w trybie konfiguracji globalnej.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image123.png" alt="image123" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Oba potrzebne mechanizmy zostały uruchomione.</p> <p>&nbsp;</p> <p>Przechodzimy do konfiguracji interfejsu f0/1 gdyż to do tego portu podłączony jest serwer DHCP. W trybie konfiguracji interfejsu definiujemy ten port jako zaufany dla obu włączonych proces&oacute;w:</p> <ul> <li style="padding-left: 60px;"><strong>ip dhcp snooping trust</strong> - mechanizm DHCP snooping,</li> <li style="padding-left: 60px;"><strong>ip arp inspection trust</strong> - mechanizm Dynamic ARP Inspection.</li> </ul> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image124.png" alt="image124" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Reszta interfejs&oacute;w przełącznika otrzymuje status portu niezaufanego - <strong>no ip arp inspection trust </strong>(punkt 1). Dodatkowo zostaje określony pr&oacute;g możliwych do wystąpienia w czasie jednej sekundy pakiet&oacute;w ARP (punkt 2). Oczywiście możemy dodatkowo określić limit pakiet&oacute;w DHCP, leczy by nie wprowadzać dodatkowego zamieszania z dodatkowymi komendami z tej opcji zrezygnowałem - skupiamy się na Dynamic ARP Inspection.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image125.png" alt="image125" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Aby całość przeprowadzanej konfiguracji była prawidłowa a co za tym idzie by działanie mechanizmu odbywało się prawidłowo w trybie konfiguracji globalnej należy wydać jeszcze jedno polecenie: <strong>no ip dhcp snooping information option</strong> Zadaniem tej komendy jest przekazanie do serwera DHCP prawidłowego pakietu żądania by przydzielona konfiguracja sieciowa mogła zostać dostarczona do klienta. Temat sensu wydania tej komendy niestety wykracza poza ramy tego wpisu i dokładne wytłumaczenie istoty problemu wymagałoby zbyt obszernych wyjaśnień - co nie oznacza, że do tematu nie powr&oacute;cę. Jeśli Czytelniku byłbyś szczeg&oacute;lnie zainteresowany tym zagadnieniem odsyłam do wpisu - <a href="http://blog.ine.com/2009/07/22/understanding-dhcp-option-82/"></a><a>http://blog.ine.com/2009/07/22/understanding-dhcp-option-82/</a></p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image126.png" alt="image126" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Host 10.0.0.1 nawiązuje połączenie z serwerem DHCP i zostaje mu przypisany adres IP. Po przypisaniu adresu IP hostowi w tablicy DHCP snooping fakt ten powinien zostać odnotowany. Sprawdzenia tablicy dokonamy za pomocą polecenia: <strong>show ip dhcp snooping binding</strong></p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image127.png" alt="image127" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Host 10.0.0.1 uzyskał dostęp do sieci i może prawidłowo komunikować się z innymi hostami.</p> <p>&nbsp;</p> <p>A co w przypadku hosta atakującego? Host o adresie IP 10.0.0.30 korzysta z konfiguracji statycznej z pominięciem serwera DHCP. Pomimo prawidłowego skonfigurowania interfejsu sieciowego hosta nie ma on możliwości nawiązania poprawnej komunikacji z innymi komputerami. Test ping w połączeniu z adresem 10.0.0.20 kończy się niepowodzeniem.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image128.png" alt="image128" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Ślady przeprowadzenia testu ping odnajdziemy r&oacute;wnież w komunikatach przełącznika. Komunikacja hosta 10.0.0.30 z siecią jest niemożliwa gdyż w tablicy mechanizmu DHCP snooping brak jest wpisu odnoszącego się do tego komputera.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image129.png" alt="image129" width="700" height="258" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Spr&oacute;bujmy sytuację naprawić i na hoście 10.0.0.30 modyfikujemy konfigurację sieciową poprzez zrezygnowanie z metody opartej o wpisy statyczne. Host został skonfigurowany w ten spos&oacute;b aby potrzebne ustawienia sieci uzyskać dzięki serwerowi DHCP. Hostowi zostaje przypisany adres IP 10.0.0.31</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image130.png" alt="image130" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Fakt przypisania adresu IP przez serwer DHCP odnajdziemy w tablicy DHCP snooping przełącznika.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image131.png" alt="image131" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Ponownie wykonujemy test ping - tym razem komunikacja pomiędzy komputerami 10.0.0.31 a 10.0.0.20 jest możliwa.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image132.png" alt="image132" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Weryfikację działania mechanizmu Dynamic ARP Inspection wraz z statystykami dokonamy dzięki wydaniu polecenia: <strong>show ip arp inspection</strong></p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image133.png" alt="image133" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Konfigurację interfejs&oacute;w w kontekście działania mechanizmu poznamy wydając komendę: <strong>show ip arp inspection interfaces</strong></p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image134.png" alt="image134" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Lecz co się stanie gdy host 10.0.0.31 zacznie przeprowadzać atak zatrucia bufora ARP? Aby odpowiedzieć na to pytanie należy atak tego typu zasymulować. Na hoście 10.0.0.31 zostaje uruchomione narzędzie Ettercap. Jak zapewne pamiętasz Czytelniku pierwszym etapem przy definicji parametr&oacute;w ataku jest przeprowadzenie skanowania aktywnych host&oacute;w. Proces skanowania zostaje uruchomiony lecz kończy się on niepowodzeniem gdyż ilość wygenerowanych pakiet&oacute;w ARP przekracza ustalony limit ustawiony dla interfejsu. Interfejs f0/3 zostaje wyłączony.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image135.png" alt="image135" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Sprawdzenie statusu portu wskazuje na stan err-disabled a za wyłączenie go odpowiada mechanizm Dynamic ARP Inspection.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image136.png" alt="image136" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Aby interfejs odblokować w trybie jego konfiguracji wydajemy polecenie: <strong>shutdown</strong> a następnie <strong>no shutdown</strong>.</p> <p>&nbsp;</p> <p>Sprawdźmy co stanie się w sytuacji w kt&oacute;rej proces skanowania uda Nam się przeprowadzić i host 10.0.0.31 uruchomi atak ARP spoofing. Limit pakiet&oacute;w powodujących wyłączenie interfejsu zostaje zwiększony do 100. Proces skanowania tym razem przebiega bez zakł&oacute;ceń i atakujący uruchamia atak.</p> <p>&nbsp;</p> <p>Atak zostaje przerwany z powodu błęd&oacute;w w dopasowaniu adres&oacute;w MAC oraz IP zapisanych w tablicy DHCP snooping.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image137.png" alt="image137" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Mechanizm inspekcji ARP zadziałał prawidłowo nie dopuszczając do przeprowadzenia ataku.</p> <p>&nbsp;</p> <p>Udało Nam się zapobiec atakom zatrucia tablicy ARP poprzez konfigurację przełącznika lecz metody ochrony możemy r&oacute;wnież rozszerzyć o hosty (ale to już też Czytelniku wiesz) .</p> <p>&nbsp;</p> <p>Sprawdźmy zatem jakie mamy możliwości by zapobiec atakowi ARP poprzez wykorzystanie do tego celu odrębnych aplikacji.</p> <p>&nbsp;</p> <p>Powracamy po raz kolejny do narzędzia WinArpAttacker, do tej pory aplikacja ta służyła nam do przeprowadzania atak&oacute;w na sieć teraz odwracamy rolę i pokażę jak wykorzystać te narzędzie by sieć ochronić.</p> <p>&nbsp;</p> <p>Domyślnie po uruchomieniu programu, aplikacja przejmuje kontrolę nad tablicą ARP hosta na kt&oacute;rym została uruchomiona i na bieżąco kontroluje czy nie zaszły w niej jakieś zmiany. Jeśli takowe nastąpią użytkownik zostanie o nich powiadomiony stosownym komunikatem.</p> <p>&nbsp;</p> <p>Przejdźmy zatem do zobrazowania takiej sytuacji. Narzędzie zostało uruchomione na hoście o adresie IP 10.0.0.1 (kontrolą integralności tablicy zarządzamy za pomocą dw&oacute;ch ikon <strong>Detect</strong> oraz <strong>Stop</strong>). W kolejnym kroku atakujący czyli host 10.0.0.30 przeprowadza atak mający na celu zatrucie tablicy ARP tak by możliwe było przechwytywanie ruchu sieciowego pomiędzy hostami 10.0.0.1 a 10.0.0.20.</p> <p>&nbsp;</p> <p>Jak już wiesz Czytelniku by atak ARP powi&oacute;dł się oryginalny adres MAC skojarzony z adresem 10.0.0.20 (08-00-27-AB-D3-93) musi zostać zamieniony na adres MAC atakującego (EE-EE-EE-EE-EE-EE) tak by wszystkie ramki były przekazywane przez niego.</p> <p>&nbsp;</p> <p>Uruchomienie ataku wyzwala komunikat o zmianie domyślnego adresu MAC hosta 10.0.0.20 na adres MAC EE-EE-EE-EE-EE-EE Adres ten ulega zmianie lecz po chwili uruchomiona opcja ochrony tablicy ARP adres MAC atakującego ponownie zmienia na prawidłowy.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image138.png" alt="image138" width="700" height="553" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Jak można się domyśleć dzięki narzędziu WinArpAttacker atak z wykorzystaniem zatrucia tablicy ARP nie dochodzi do skutku. Wydanie polecenia ping z hosta 10.0.0.1 w kierunku komputera 10.0.0.20 nie jest rejestrowane przez atakującego.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image139.png" alt="image139" width="700" height="430" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>W systemie Linux sp&oacute;jność tablicy ARP możemy kontrolować za pomocą narzędzia: <strong>arpwatch </strong>Aby zainstalować niezbędne pakiety wydaj polecenie: <strong>apt-get install arpwatch</strong> Program ten po uruchomieniu kontroluje stan tablicy ARP na komputerze lokalnym i jeśli zajdzie zmiana fakt ten zostanie zarejestrowany w pliku: <strong>/var/log/syslog</strong></p> <p>&nbsp;</p> <p>Aby uruchomić narzędzie wydajemy polecenie: <strong>/etc/init.d/arpwatch start </strong>(punkt 1) a następnie za pomocą komendy: <strong>arpwatch -i &lt;identyfikator_interfejsu_sieciowego&gt;</strong> określamy interfejs, kt&oacute;ry ma podlegać nadzorowi (punkt 2).</p> <p>&nbsp;</p> <p>W opisie przyjęto iż host o adresie IP 10.0.0.1 to ofiara (na hoście tym zostaje uruchomiony daemon arpwatch) natomiast atakujący to komputer o adresie IP 10.0.0.30 i tak jak w przypadku sytuacji z wykorzystaniem aplikacji WinArpAttacker naszym celem jest przechwycenie ruchu sieciowego pomiędzy komputerami 10.0.0.1 a 10.0.0.20</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image140.png" alt="image140" width="700" height="89" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Narzędzie zostało uruchomione i działa w tle aby mieć podgląd na pojawiające się komunikaty wydaj polecenie: <strong>tail -f /var/log/syslog </strong></p> <p>&nbsp;</p> <p>Atakujący przeprowadza atak zatrucia tablicy ARP. Uruchomiona usługa arpwatch wykrywa zamianę adresu MAC i Nas o fakcie tym informuje. Niestety w tym przypadku nie mamy aktywnej ochrony jak to miało miejsce przy wykorzystaniu programu WinArpAttacker i atak kończy się sukcesem, atakujący może przechwytywać ruch sieciowy (na razie, gdyż administrator wie, że atak nastąpił i może do następnego nie dopuścić - atakujący został wykryty).</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image141.png" alt="image141" width="700" height="193" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Arpwatch opr&oacute;cz zamiany adres&oacute;w MAC wykrywa r&oacute;wnież ataki typu LAN storm, kt&oacute;re związane są z protokołem ARP, gdy atak nastąpi stosowne komunikaty pojawią się w pliku <strong>/var/log/syslog</strong> Poniżej przedstawiono zrzut pliku w kt&oacute;rym zarejestrowano przebieg ataku zalewania sieci pakietami ARP Request.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image142.png" alt="image142" width="700" height="579" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>W zarządzanej sieci komputerowej interfejsy sieciowe, kt&oacute;re pracują w trybie nasłuchiwania (ang. promiscuous mode) stanowią potencjalne zagrożenie gdyż karta sieciowa pracująca w tym trybie zdolna jest do rejestrowania danych, kt&oacute;re nie są dla niej przeznaczone. Wykrycie interfejs&oacute;w sieciowych pracujących w tym trybie jest sygnałem dla administratora sieci, że dzieje się coś niepokojącego.</p> <p>&nbsp;</p> <p>Aby wykryć w zarządzanej sieci interfejsy, kt&oacute;re korzystają z tego trybu można posłużyć się m.in. narzędziem WinArpAttacker. Po uruchomieniu programu z g&oacute;rnego menu wybieramy pozycję <strong>Scan</strong> a następnie opcję <strong>Advanced</strong>, kt&oacute;ra to uruchomi dodatkowe okno za pomocą kt&oacute;rego zdefiniujemy opcję skanowania.</p> <p>&nbsp;</p> <p>W oknie <strong>Scan</strong> określamy zakres skanowania oraz jego tryb. Zaznaczenie opcji <strong>Antisniff scan</strong> spowoduje przeprowadzenie skanowania pod kątem wystąpienia interfejs&oacute;w pracujących w trybie nasłuchiwania. Operacja skanowania polega na wysłaniu specjalnie spreparowanych pakiet&oacute;w i badaniu uzyskanych odpowiedzi. Szczeg&oacute;łowy opis klasyfikacji interfejsu, kt&oacute;ry pracuje w trybie domyślnym bądź w trybie promiscuous wykracza poza ramy tego wpisu więc procedurę przyszeregowania interfejsu do danego trybu pracy postaram opisać się w oddzielnym wpisie. Jeśli ten temat Czytelniku szczeg&oacute;lnie Cię interesuje odsyłam do wpis&oacute;w zawartych pod następującymi odnośnikami (wersja angielska) - <a href="http://www.securityfriday.com/promiscuous_detection_01.pdf">http://www.securityfriday.com/promiscuous_detection_01.pdf</a> bądź <a>http://hadmernok.hu/132_27_nagyd_1.pdf</a></p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image143.png" alt="image143" width="700" height="507" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po zatwierdzeniu skanu przyciskiem <strong>Scan</strong> następuje proces odkrywania urządzeń, kt&oacute;rych karty sieciowe pracują w trybie promiscuous. Jak widać poniżej skan naszej ćwiczebnej sieci uwidocznił dwa takie interfejsy - pierwszy z nich (10.0.0.1) to interfejs komputera przeprowadzającego skanowanie a drugi (10.0.0.30) należy do atakującego.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image144.png" alt="image144" width="700" height="507" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>W systemie Linux (lecz także Windows) do skanowania możemy użyć narzędzia NMap a m&oacute;wiąc bardziej szczeg&oacute;łowo jednego ze skrypt&oacute;w napisanych dla tego programu, kt&oacute;rego celem jest wykrycie interfejs&oacute;w pracujących w trybie nasłuchiwania.</p> <p>&nbsp;</p> <p>Aby uruchomić proces skanowania należy wydać polecenie: <strong>nmap --script=sniffer-detect &lt;zakres_skanowania&gt;</strong></p> <p>&nbsp;</p> <p>Poniżej zaprezentowałem proces skanowania dw&oacute;ch host&oacute;w o adresach IP 10.0.0.30 oraz 10.0.0.20 i jak można zauważyć w przypadku tego pierwszego skan ujawnił iż interfejs tego hosta jest ustawiony do pracy w trybie promiscuous.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image145.png" alt="image145" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Ataki typu LAN storm mogą zostać unieszkodliwione dzięki zastosowaniu funkcji przełącznika nazwanej <strong>storm control</strong>, kt&oacute;rej zadaniem jest monitorowanie poziomu ruchu sieciowego.</p> <p>&nbsp;</p> <p>Mechanizm Storm control do pomiaru aktywności ruchu sieciowego może wykorzystywać jedną z następujących metod:</p> <ul> <li style="padding-left: 60px;">pomiar szerokości pasma jako procent całkowitego pasma dostępnego na porcie,</li> <li style="padding-left: 60px;">pomiar szybkości w jakiej odbierane są pakiety - szybkość tą możemy wyrazić w packets/sec lub bits/sec.</li> </ul> <p>&nbsp;</p> <p>Można ustawić zar&oacute;wno pr&oacute;g ruchu narastającego, jak i pr&oacute;g ruchu opadającego.</p> <p>&nbsp;</p> <p>Nieważne z kt&oacute;rej metody skorzystamy, gdy zostaje osiągnięty zdefiniowany pr&oacute;g, port zostaje zablokowany.</p> <p>&nbsp;</p> <p>Jeśli zdefiniowano tzw. pr&oacute;g opadający blokowanie portu następuje powyżej ustalonej wartości zaś gdy poziom ruchu sieciowego opadnie poniżej zdeklarowanej wartości port powraca do normalnego funkcjonowania.</p> <p>&nbsp;</p> <p>Mechanizm ten konfigurujemy w trybie danego interfejsu poprzez ustalenie wartości progowych dla danego typu ruchu.</p> <p>&nbsp;</p> <p>W przypadku wybrania metody opartej na określeniu procentu dostępnego pasma, dostępne wartości ustalamy z przedziału od 0.00% do 100.00%. Przy czym wartość 100.00% oznacza, że na dany typ ruchu nie nałożono żadnego limitu zaś wartość 0.00% oznacza, że cały ruch danego typu na porcie jest blokowany.</p> <p>&nbsp;</p> <p>Przejdźmy zatem do części praktycznej i sprawdźmy mechanizm w działaniu. Ponieważ stacja atakującego jest podpięta do interfejsu f0/3 przełącznika tak więc funkcję tą włączymy właśnie na tym porcie.</p> <p style="margin-left: 30px;">1 - wydanie polecenia spowoduje ustalenie dozwolonego progu ruchu broadcast na 12,5%,</p> <p style="margin-left: 30px;">2 - ustalenie progu ruchu multicast na poziom - pr&oacute;g narastający 3000 pakiet&oacute;w w ciągu sekundy, pr&oacute;g opadający 2000 pakiet&oacute;w na sekundę (po przekroczeniu wartości 3k pps następuje blokada portu zaś gdy ruch opadnie do wartości poniżej 2k pps port zostaje włączony),</p> <p style="margin-left: 30px;">3 - ustalenie akcji związanej z przekroczeniem wartości progowych - w tym przypadku wyłączenie portu. Wydanie polecenia: <strong>storm-control action trap switch </strong>spowoduje wysłanie loga SNMP w momencie pojawienia się burzy pakiet&oacute;w.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image146.png" alt="image146" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Weryfikację ustawień możemy przeprowadzić wydając polecenia: <strong>show storm-control</strong> bądź <strong>show storm-control &lt;określony_typ_ruchu_sieciowego&gt;</strong></p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image147.png" alt="image147" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Mechanizm został skonfigurowany. Przechodzimy na hosta atakującego i na nim zostaje uruchomiony atak generujący dużą ilość pakiet&oacute;w broadcast (atak typu DHCP consumption attacks). Chwilę po uruchomieniu ataku port zostaje wyłączony - zdefiniowany procent wykorzystania pasma dla tego typu ruchu został przekroczony.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image148.png" alt="image148" width="700" height="120" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Status interfejsu możemy sprawdzić wydając komendę: <strong>show interfaces status err-disabled</strong> Jak widzimy poniżej port jest wyłączony z powodu naruszenia zdefiniowanej polityki bezpieczeństwa związanej z mechanizmem storm-control.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/atak_warstwa_2_cz1/image149.png" alt="image149" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Aby interfejs odblokować w trybie jego konfiguracji wydajemy polecenie: <strong>shutdown</strong> a następnie <strong>no shutdown</strong>.</p> <p>Podsumowując wpis aby uniknąć opisywanych atak&oacute;w zastosuj się do poniższych wskaz&oacute;wek:</p> <ul> <li style="padding-left: 60px;">pamiętaj, że bezpieczeństwo sieci do r&oacute;wnież ochrona fizyczna dostępu do urządzeń oraz do komputer&oacute;w,</li> <li style="padding-left: 60px;">protokoły z kt&oacute;rych nie korzystasz - wyłącz,</li> <li style="padding-left: 60px;">nieużywane interfejsy przełącznika - wyłącz a te do kt&oacute;rych są podpięte urządzenia końcowe ustaw do pracy w trybie access,</li> <li style="padding-left: 60px;">skonfiguruj mechanizm Port Security,</li> <li style="padding-left: 60px;">odseparuj dostęp zdalny do urządzeń sieciowych od sieci domyślnej, utw&oacute;rz do tego celu osobny VLAN,</li> <li style="padding-left: 60px;">realizując dostęp zdalny nie wykorzystuj protokołu Telnet, zamień go na SSH,</li> <li style="padding-left: 60px;">celem analizowania ruch sieciowego wykorzystaj funkcję SPAN,</li> <li style="padding-left: 60px;">pamiętaj o takich mechanizmach jak Dynamic ARP Inspection, DHCP Snooping oraz Storm control,</li> <li style="padding-left: 60px;">rozważ wprowadzenie ochrony dostępu do sieci w oparciu o wykorzystanie protokołu 802.1X</li> </ul> <p>&nbsp;</p> <p>I tu kończymy. Wyszło tego sporo. Powiem szczerze, że w planach miałem opisanie r&oacute;wnież bardziej subtelnych atak&oacute;w związanych z sieciami VLAN, protokołem STP czy połączeniami typu trunk ale postanowiłem to rozbić na odrębne wpisy ze względu na dość obszerny zakres omawianego tematu. Jak m&oacute;wi stare przysłowie - &bdquo;Co się odwlecze, to nie uciecze&rdquo; tak więc do tematu wr&oacute;cimy już wkr&oacute;tce (jeden wpis a już obiecałem 4 inne).</p> <p>&nbsp;</p> <p>I tak już na sam koniec - złota myśl (gdzieś kiedyś to usłyszałem i strasznie mi się spodobało, bo wiele prawdy w tym) - pamiętaj, że BEZPIECZEŃSTWO JEST ZAWSZE KOSZTEM WYGODY</p> <p>&nbsp;</p> <hr /> <p>BIBLIOGRAFIA</p> <p>&nbsp;</p> <p><a href="http://www.thegeekstuff.com/2012/05/ettercap-tutorial">http://www.thegeekstuff.com/2012/05/ettercap-tutorial</a></p> <p><a href="https://pentestmag.com/ettercap-tutorial-for-windows/">https://pentestmag.com/ettercap-tutorial-for-windows/</a></p> <p><a href="http://www.hacking-tutorial.com/hacking-tutorial/kali-linux-man-middle-attack">www.hacking-tutorial.com/hacking-tutorial/kali-linux-man-middle-attack</a></p> <p><a href="https://docs.oseems.com/general/operatingsystem/linux/sniff-network-traffic">https://docs.oseems.com/general/operatingsystem/linux/sniff-network-traffic</a></p> <p><a href="http://kalilinuxtutorials.com/macof/">http://kalilinuxtutorials.com/macof/</a></p> <p><a href="http://www.irongeek.com/i.php?page=backtrack-3-man/ettercap">http://www.irongeek.com/i.php?page=backtrack-3-man/ettercap</a></p> <p><a href="https://pentestmag.com/ettercap-tutorial-for-windows/">https://pentestmag.com/ettercap-tutorial-for-windows/</a></p></div> Rejestracja zdarzeń z wykorzystaniem serwera Syslog. 2016-11-18T20:16:24+00:00 2016-11-18T20:16:24+00:00 http://slow7.pl/sieci-komputerowe/item/130-rejestracja-zdarzen-z-wykorzystaniem-serwera-syslog pikolo [email protected] <div class="K2FeedImage"><img src="http://slow7.pl/media/k2/items/cache/ee842e3019fee30e4ca87cc93974d54b_S.jpg" alt="Rejestracja zdarzeń z wykorzystaniem serwera Syslog." /></div><div class="K2FeedIntroText"><p>Zarządzając daną siecią komputerową najkorzystniejszą dla Nas sytuacją i stanem jak najbardziej pożądanym jest prawidłowo działająca sieć. Nasze wszystkie działania administracyjne sprowadzają się do tego by osiągnąć stan pełnej funkcjonalności sieci. Jeśli wszystko działa - możemy być z siebie dumni lecz nie oznacza to, że możemy spocząć na laurach. Awarie sieci i urządzeń ją tworzących są na porządku dziennym i prędzej czy p&oacute;źniej każdy administrator z takim problemem będzie musiał się zmierzyć. Z reguły awarie i mogące nastąpić komplikacje w działaniu sieci można z dość dużą dozą prawdopodobieństwa przewidzieć. No chyba, że mamy do czynienia z sytuacją nagłą, taką jak przepięcie w sieci elektrycznej, kt&oacute;rej efektem jest uszkodzenie urządzenia bądź atakiem hackerskim. Ale jak to już w życiu bywa nie do końca na wszystko mamy wpływ.</p> <p>&nbsp;</p> </div><div class="K2FeedFullText"> <p>&nbsp;</p> <p>Aby m&oacute;c przewidzieć nadciągającą &bdquo;katastrofę&rdquo; musimy oczywiście mieć narzędzia i metody, kt&oacute;re zawczasu pozwolą nam na stwierdzenie, że dzieje się coś złego. Rozwiązaniem, kt&oacute;re pozwoli nam na zareagowanie w przypadku wystąpienia pierwszych symptom&oacute;w związanych z nieprawidłowo działającą siecią jest raportowanie i logowanie zaistniałych zdarzeń.</p> <p>&nbsp;</p> <p>Konfiguracja logowania zdarzeń dla kilku urządzeń nie jest dużym wyzwaniem i jest stosunkowo prosta oraz nie zajmująca wiele czasu. Sytuacja komplikuje się wraz ze wzrostem liczby zarządzanych urządzeń. W obu przypadkach bardzo znaczącym ułatwieniem dla administratora będzie gdy logi zaistniałych zdarzeń będą zapisane w jednym centralnym miejscu.</p> <p>&nbsp;</p> <p>Aby m&oacute;c zacząć zapisywać logi przy wykorzystaniu specjalnie do tego celu skonfigurowanej maszyny możemy posłużyć się jednym z dw&oacute;ch rozwiązań:</p> <ul> <li style="padding-left: 60px;">zastosować serwer Syslog,</li> <li style="padding-left: 60px;">wykorzystać protok&oacute;ł SNMP.</li> </ul> <p>&nbsp;</p> <p>Pierwsze z rozwiązań to tzw. usługa obsługi log&oacute;w systemowych, potocznie nazywana Sysylog. Usługa do działania wykorzystuje protok&oacute;ł UDP wraz z portem 514. Pełna specyfikacja usługi została opisana w <a href="https://tools.ietf.org/html/rfc5424">RFC5424</a></p> <p>&nbsp;</p> <p>Zaś protok&oacute;ł SNMP (ang. Simple Network Management Protocol) to rodzina protokoł&oacute;w sieciowych odpowiedzialnych za zarządzanie i monitorowanie stanu urządzeń sieciowych (routery, przełączniki, komputery, macierze dyskowe czy sprzętowy firewall). Protok&oacute;ł ten działa w warstwie aplikacji i domyślnie, tak jak jego poprzednik do działania wykorzystuje protok&oacute;ł UDP w połączeniu z portami 161 oraz 162. Szersze informacje na temat działania protokołu znajdziesz w <a href="https://tools.ietf.org/html/rfc1157">RFC1157</a> (wersja SNMPv1), <a href="https://tools.ietf.org/html/rfc1901">RFC1901</a> (wersja SNMPv2) oraz <a href="https://tools.ietf.org/html/rfc3414">RFC3414</a> (wersja SNMPv3).</p> <p>&nbsp;</p> <p>Temat obsługi protokołu SNMP jest bardzo szeroki tak więc samym tym protokołem i jego zastosowaniem zajmiemy się w osobnym wpisie, zaś w tym skupimy się na wykorzystaniu serwera Syslog.</p> <p>&nbsp;</p> <p>Przepływ informacji pomiędzy serwerami zbierającymi informacje o stanie urządzeń a zarządzanymi urządzeniami może odbywać się dwoma ścieżkami:</p> <p style="margin-left: 30px;"><strong>Metoda out-of band </strong>(OOB) - do przesyłania informacji o stanie urządzeń wykorzystywana jest dedykowana sieć. Sieć ta jest niezależna od sieci produkcyjnej, co oznacza, że gdy sieć gł&oacute;wna przestaje działać nadal możliwe jest zarządzanie i monitorowanie urządzeń.</p> <p style="margin-left: 30px;"><strong>Metoda in-band</strong> do monitorowania wykorzystuje sieć produkcyjną czyli sieć w kt&oacute;rej domyślnie prowadzona jest cała komunikacja. Dobrą praktyką wykorzystywaną przy wyborze tego rozwiązania jest odseparowanie ruchu sieciowego związanego z monitorowanie bądź zarządzaniem od reszty prowadzonej komunikacji. Separację ruch sieciowego możemy przeprowadzić w warstwie 2 przy wykorzystaniu sieci prywatnych VLAN.</p> <p>&nbsp;</p> <p>Poniżej na rysunku schematycznie przedstawiono obie metody.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/syslog/image1.png" alt="image1" width="700" height="506" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Od razu nasuwa się pytanie &ndash; Kt&oacute;ry model wybrać? Oczywiście lepszym rozwiązaniem będzie wykorzystanie metody out-of band gdyż w przypadku problem&oacute;w z siecią gł&oacute;wną mamy do dyspozycji dodatkowy kanał komunikacyjny, kt&oacute;ry możemy wykorzystać do rozwiązania zaistniałych problem&oacute;w. Metoda ta pomimo dużej zalety w postaci zastosowania redundancji połączeń niestety ma zasadniczą wadę &ndash; koszt wdrożenia (koszty związane z infrastrukturą oraz wykorzystaniem zasob&oacute;w sprzętowych urządzeń). Dlatego też znacznie częściej wybierana jest metoda in-band.</p> <p>&nbsp;</p> <p>Na co zwr&oacute;cić uwagę przy wykorzystaniu rozwiązań opartych o rejestrowanie zdarzeń:</p> <ul> <li style="padding-left: 60px;">Jakie protokoły monitorowania wspiera i obsługuje dane urządzenie?</li> <li style="padding-left: 60px;">Jaki typ log&oacute;w powinien być rejestrowany?</li> <li style="padding-left: 60px;">Jak oddzielić informacje ważne (krytyczne) od tych rutynowych (informacyjne, diagnostyczne)?</li> <li style="padding-left: 60px;">Jak radzić sobie z dużą ilością log&oacute;w?</li> <li style="padding-left: 60px;">Jak śledzić zmiany, gdy wystąpi awaria sieci bądź atak?</li> <li style="padding-left: 60px;">Jak zapewnić integralność otrzymywanych danych m.in. znaczniki czasu?</li> <li style="padding-left: 60px;">Jak nie dopuścić do manipulacji przy logach?</li> <li style="padding-left: 60px;">Kt&oacute;re z logowanych danych mogą być potrzebne w śledztwie?</li> </ul> <p>&nbsp;</p> <p>Jak widać powyżej jest szereg pytań na kt&oacute;re musimy sobie odpowiedzieć by m&oacute;c skutecznie prowadzić proces gromadzenia informacji. Mam nadzieję, że po lekturze tego wpisu na tak postawione pytania znajdziesz Czytelniku odpowiedzi.</p> <p>&nbsp;</p> <p>Urządzenia sieciowe powinny być skonfigurowany do wysyłania komunikat&oacute;w na jeden lub więcej sposob&oacute;w. Urządzenia firmy Cisco (routery, przełączniki) obsługują komunikaty dziennika:</p> <p style="margin-left: 30px;"><strong>Console</strong> - router domyślnie wszystkie komunikaty dotyczące pracy urządzenia wysyła do swojego portu konsoli. Dostęp do tych komunikat&oacute;w mają użytkownicy, kt&oacute;rzy mają zestawione połączenie z portem konsoli &ndash; tzw. <strong>rejestrowanie konsolowe</strong> (ang. console logging).</p> <p style="margin-left: 30px;"><strong>Rejestrowanie terminalowe</strong> (ang. terminal logging) - bardzo podobne do rejestrowania przy użyciu portu konsoli z tą r&oacute;żnicą iż komunikaty wysyłane są do linii VTY. Wymaga dodatkowego uaktywnienia.</p> <p style="margin-left: 30px;"><strong>Rejestrowanie z wykorzystaniem bufora</strong> (ang. buffered logging) - komunikaty o stanie dziennika są zapisywane i przechowywane w pamięci RAM urządzenia. Do tego celu rezerwowana jest stała część pamięci RAM. Rozmiar bufora ogranicza przechowywanie dużej ilości log&oacute;w tak więc w przypadku przepełnienia następuje kasowanie najstarszych wiadomości.</p> <p style="margin-left: 30px;"><strong>SNMP Server</strong> (ang. SNMP trap logging) &ndash; komunikaty o stanie urządzenia są wysyłane i zapisywane na zewnętrznym serwerze. Obsługa log&oacute;w jest realizowana przy wykorzystaniu protokołu SNMP.</p> <p style="margin-left: 30px;"><strong>Syslog Server</strong> &ndash; tak jak w metodzie powyżej za odbi&oacute;r i zapis log&oacute;w odpowiada zewnętrzny serwer. Rejestrowanie zdarzeń w przypadku tej metody domyślnie jest wyłączone. Przesyłanie odbywa się z pominięciem faktu potwierdzenie przesyłanych raport&oacute;w.</p> <p>&nbsp;</p> <p>Przy konfiguracji danej metody zapisu zdarzeń należy mieć na uwadze, że miejsce logowania wpływa na og&oacute;lne obciążenie systemu. Poniżej lista użytych metod uszeregowana od stopnia wpływu na obciążenie systemu (g&oacute;ra=duże obciążenie, d&oacute;ł=małe obciążenie).</p> <ul> <li style="padding-left: 60px;">logowanie do konsoli,</li> <li style="padding-left: 60px;">logowanie do VTY,</li> <li style="padding-left: 60px;">logowanie do zewnętrznego serwera,</li> <li style="padding-left: 60px;">logowanie do bufora.</li> </ul> <p>&nbsp;</p> <p>W przypadku wykorzystania serwera Syslog, serwerem będziemy określać hosta, kt&oacute;rego zadaniem jest odbi&oacute;r i przetwarzanie log&oacute;w otrzymywanych od klient&oacute;w. Natomiast klientem będzie host/urządzenie sieciowe, kt&oacute;re logi generuje i przekazuje je w kierunku serwera Syslog.</p> <p>&nbsp;</p> <p>W przypadku urządzeń Cisco komunikaty generowane przez urządzenie możemy podzielić w zależności od poziomu ich ważności. Poziom komunikat&oacute;w został ustalony od 0 do 7 a im niższy poziom komunikatu, tym z bardziej krytycznym zdarzeniem będziemy mieli do czynienia.</p> <p>&nbsp;</p> <p>Poniżej w tabeli zostały zebrane możliwe poziomy ważności zdarzeń wraz z przykładowymi zdarzeniami generującymi dany typ komunikatu.</p> <p>&nbsp;</p> <table border="1" style="border-collapse: collapse; margin-right: auto; margin-left: auto;" cellspacing="0" cellpadding="0"> <tbody> <tr> <td style="width: 43.8pt; border: 1pt solid windowtext; padding: 0cm 5.4pt; text-align: center;" valign="top" width="58"><strong>Poziom</strong></td> <td style="width: 72pt; border-width: 1pt 1pt 1pt medium; border-style: solid solid solid none; border-color: windowtext windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; text-align: center;" valign="top" width="96"><strong>Nazwa poziomu</strong></td> <td style="width: 82.2pt; border-width: 1pt 1pt 1pt medium; border-style: solid solid solid none; border-color: windowtext windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; text-align: center;" valign="top" width="110"><strong>Definicja syslog</strong></td> <td style="width: 120.7pt; border-width: 1pt 1pt 1pt medium; border-style: solid solid solid none; border-color: windowtext windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; text-align: center;" valign="top" width="161"><strong>Opis</strong></td> <td style="width: 134.4pt; border-width: 1pt 1pt 1pt medium; border-style: solid solid solid none; border-color: windowtext windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; text-align: center;" valign="top" width="179"><strong>Przykładowe zdarzenie generujące błąd</strong></td> </tr> <tr> <td style="width: 43.8pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; text-align: center;" valign="top" width="58"><strong>0</strong></td> <td style="width: 72pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; text-align: center;" valign="top" width="96">Emergencies</td> <td style="width: 82.2pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; text-align: center;" valign="top" width="110">LOG_EMERG</td> <td style="width: 120.7pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; text-align: center;" valign="top" width="161">Router/przełącznik ma poważne problemy by poprawnie funkcjonować</td> <td style="width: 134.4pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; text-align: center;" valign="top" width="179">Brak możliwości załadowania systemu operacyjnego, uszkodzenie modułu wentylator&oacute;w</td> </tr> <tr> <td style="width: 43.8pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; text-align: center;" valign="top" width="58"><strong>1</strong></td> <td style="width: 72pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; text-align: center;" valign="top" width="96">Alerts</td> <td style="width: 82.2pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; text-align: center;" valign="top" width="110">LOG_ALERT</td> <td style="width: 120.7pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; text-align: center;" valign="top" width="161">Potrzebna natychmiastowa interwencja</td> <td style="width: 134.4pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; text-align: center;" valign="top" width="179">Wzrost temperatury pracy</td> </tr> <tr> <td style="width: 43.8pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; text-align: center;" valign="top" width="58"><strong>2</strong></td> <td style="width: 72pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; text-align: center;" valign="top" width="96">Critical</td> <td style="width: 82.2pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; text-align: center;" valign="top" width="110">LOG_CRIT</td> <td style="width: 120.7pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; text-align: center;" valign="top" width="161">Sytuacja krytyczna</td> <td style="width: 134.4pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; text-align: center;" valign="top" width="179">Błędy alokacji pamięci, problem sprzętowy</td> </tr> <tr> <td style="width: 43.8pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; text-align: center;" valign="top" width="58"><strong>3</strong></td> <td style="width: 72pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; text-align: center;" valign="top" width="96">Errors</td> <td style="width: 82.2pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; text-align: center;" valign="top" width="110">LOG_ERR</td> <td style="width: 120.7pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; text-align: center;" valign="top" width="161">Błędy</td> <td style="width: 134.4pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; text-align: center;" valign="top" width="179">Zmiana stanu pracy interfejsu</td> </tr> <tr> <td style="width: 43.8pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; text-align: center;" valign="top" width="58"><strong>4</strong></td> <td style="width: 72pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; text-align: center;" valign="top" width="96">Warnings</td> <td style="width: 82.2pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; text-align: center;" valign="top" width="110">LOG_WARNING</td> <td style="width: 120.7pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; text-align: center;" valign="top" width="161">Ostrzeżenie</td> <td style="width: 134.4pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; text-align: center;" valign="top" width="179">Niepowodzenie wykonania polecenia bądź instrukcji, błędy szyfrowania</td> </tr> <tr> <td style="width: 43.8pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; text-align: center;" valign="top" width="58"><strong>5</strong></td> <td style="width: 72pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; text-align: center;" valign="top" width="96">Notifications</td> <td style="width: 82.2pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; text-align: center;" valign="top" width="110">LOG_NOTICE</td> <td style="width: 120.7pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; text-align: center;" valign="top" width="161">Powiadomienie</td> <td style="width: 134.4pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; text-align: center;" valign="top" width="179">Aktywacja/dezaktywacja protokołu łącza</td> </tr> <tr> <td style="width: 43.8pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; text-align: center;" valign="top" width="58"><strong>6</strong></td> <td style="width: 72pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; text-align: center;" valign="top" width="96">Informational</td> <td style="width: 82.2pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; text-align: center;" valign="top" width="110">LOG_INFO</td> <td style="width: 120.7pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; text-align: center;" valign="top" width="161">Komunikaty informacyjne</td> <td style="width: 134.4pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; text-align: center;" valign="top" width="179">Naruszenie listy dostępu ACL</td> </tr> <tr> <td style="width: 43.8pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; text-align: center;" valign="top" width="58"><strong>7</strong></td> <td style="width: 72pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; text-align: center;" valign="top" width="96">Debugging</td> <td style="width: 82.2pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; text-align: center;" valign="top" width="110">LOG_DEBUG</td> <td style="width: 120.7pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; text-align: center;" valign="top" width="161">Informacje uzyskane dzięki włączeniu procesu debugowania</td> <td style="width: 134.4pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; text-align: center;" valign="top" width="179">Zależy od wybranego procesu debugowania</td> </tr> </tbody> </table> <p>&nbsp;</p> <p>Poniżej zaprezentowano przykładowy komunikat dziennika routera Cisco.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/syslog/image2.png" alt="image2" width="700" height="370" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Jak można zauważyć powyżej komunikat dziennika składa się z dw&oacute;ch bądź trzech części. Obowiązkowymi elementami komunikatu jest nazwa poziomu wraz z jego identyfikatorem oraz tekst informacyjny. Opcjonalnym elementem jest znacznik czasowy. Włączenie znacznika odbywa się za pomocą polecenia: <strong>service timestamp</strong> wydanego w trybie konfiguracji globalnej.</p> <p>&nbsp;</p> <p>Kolejną częścią komunikatu jest jego kod oraz poziom ważności. W przykładzie powyżej kodem jest SYS oraz LINK, natomiast poziom ważności został ustalony w przypadku pierwszego komunikatu na poziom 5 czyli Notifications, drugi komunikat jest poziomu 3 czyli Errors. Jak już wspomniano komunikaty klasyfikuje się według poziomu czyli komunikaty poziomu 7 są najmniej ważne zaś te poziomu 0 mają znaczenie krytyczne. Dodatkowo dołączana jest informacja o zaistniałym zdarzeniu. W przypadku rozważanych komunikat&oacute;w jest to informacja o przeprowadzonej konfiguracji z wykorzystaniem połączenia linii VTY &ndash; CONFIG_I oraz włączeniu interfejsu &ndash; UPDOWN.</p> <p>&nbsp;</p> <p>Ostatnią częścią wpisu jest treść informacyjna poszerzająca komunikat o dodatkowe szczeg&oacute;ły zarejestrowanego zdarzenia.</p> <p>&nbsp;</p> <p>Zanim rozpoczniemy zbieranie informacji o zaistniałych zdarzeniach, warto na wszystkich urządzeniach, kt&oacute;re będą podlegać temu procesowi wykonać konfigurację daty oraz czasu. Jak ustawić czas ręcznie bądź wykorzystać do tego celu protok&oacute;ł NTP przeczytasz w wpisie: <a href="http://slow7.pl/item/39-zarzadzanie-routerem-cisco" title="Zarządzanie routerem CISCO"><span style="text-decoration: none;">Zarządzanie routerem CISCO</span></a></p> <p>&nbsp;</p> <p>Nasze rozważania rozpoczniemy od włączenia rejestrowania lokalnego.</p> <p style="margin-left: 30px;">1 - rejestrowanie włączymy z wykorzystaniem polecenia: <strong>logging buffered &lt;poziom_komunikatu&gt;</strong>,</p> <p style="margin-left: 30px;">2 - za pomocą komendy: <strong>logging buffered &lt;wartość&gt;</strong> określamy maksymalny rozmiar bufora w kt&oacute;rym będą przechowywane logi zdarzeń.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/syslog/image3.png" alt="image3" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Domyślny poziom ważności rejestrowanych komunikat&oacute;w obejmuje zapisywanie wszystkiego, oznacza to, że wydanie samego polecenia: <strong>logging buffered</strong> spowoduje ustawienie rejestracji zdarzeń na poziomie 7 (debugowanie). Wybranie poziomu debugowania jest jednoznaczne z zapisywaniem zdarzeń poziom&oacute;w niższych. Dlatego też by ograniczyć liczbę zbieranych i przechowywanych log&oacute;w ich ilość możemy kontrolować poprzez definicję poziomu (severity level). Maksymalny poziom ważności rejestrowanych komunikat&oacute;w określamy za pomocą sł&oacute;w kluczowych (patrz tabela powyżej, kolumna nazwa poziomu) bądź numeru poziomu.</p> <p>&nbsp;</p> <p>Domyślny rozmiar bufora zarezerwowany na potrzeby przechowywania log&oacute;w wynosi 4096 bajt&oacute;w (nie jest to wartość stała obejmująca wszystkie modele router&oacute;w). Jest to niewiele i bardzo często rozmiar ten przez administrator&oacute;w jest modyfikowany tak by pomieścić większą liczbę wpis&oacute;w. Domyślny rozmiar bufora pozwala na przechowanie około 50 wpis&oacute;w. Po przekroczeniu rozmiaru dziennika najstarsze wpisy są usuwane tak by zrobić miejsce na nowsze. Wielkość ustalonego bufora ma wpływ na ilość dostępnej pamięci RAM - im więcej zarezerwujemy na potrzeby dziennika tym mniej pamięci router będzie miał do wykorzystanie podczas realizacji swoich podstawowych zadań.</p> <p>&nbsp;</p> <p>Historie zaistniałych zdarzeń możemy przeglądać za pomocą polecenia: <strong>show logging</strong> Logi systemowe zostały uszeregowane od najstarszego do najnowszego.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/syslog/image4.png" alt="image4" width="700" height="384" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Dodatkowo po wydaniu polecenia poznamy takie informacje jak:</p> <p style="margin-left: 30px;">1 - stan oraz ustalony poziom rejestrowania konsolowego. Aby wyłączyć wszystkie komunikaty routera o zaistniałych zdarzeniach wydaj polecenie: <strong>no logging console</strong> Po wydaniu polecenia zostanie wyłączone wyświetlanie jakichkolwiek komunikat&oacute;w.</p> <p style="margin-left: 30px;">2 - stan oraz ustalony poziom rejestrowania zdalnego (o tym temacie szerzej już za chwilę).</p> <p style="margin-left: 30px;">3 - stan oraz ustalony poziom rejestrowania lokalnego z wykorzystaniem bufora.</p> <p style="margin-left: 30px;">4 - ustalony rozmiar dziennika.</p> <p>&nbsp;</p> <p>Aby włączyć licznik wystąpień zdarzeń określonego rodzaju należy posłużyć się poleceniem: <strong>logging count </strong>Po włączeniu licznika stan zdarzeń przejrzymy po wydaniu komendy: <strong>show logging count</strong></p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/syslog/image5.png" alt="image5" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Aby wyłączyć zapis zdarzeń do bufora routera należy wydać polecenie: <strong>no logging buffered</strong> natomiast by wyczyścić zawartość bufora wydaj komendę: <strong>clear logging</strong>.</p> <p>&nbsp;</p> <p>Om&oacute;wienie rejestrowanie z wykorzystaniem zestawionej sesji zdalnej oraz serwera Syslog om&oacute;wimy na przykładzie topologii sieciowej przedstawionej na rysunku poniżej.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/syslog/image6.png" alt="image6" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Rejestrowanie zdarzeń jak już wiesz Czytelniku możemy r&oacute;wnież prowadzić z wykorzystaniem zestawionej sesji wykorzystującej linie VTY.</p> <p>&nbsp;</p> <p>Aby włączyć wyświetlanie zdarzeń podczas sesji połączenia zdalnego należy wydać polecenia:</p> <p style="margin-left: 30px;">1 - <strong>logging monitor &lt;poziom_komunikatu&gt;</strong> (w trybie konfiguracji globalnej) &ndash; wydanie polecenie uruchamia rejestrowanie terminalowe,</p> <p style="margin-left: 30px;">2 - dodatkowo proces należy uruchomić oddzielnym poleceniem: <strong>terminal monitor</strong> (tryb EXEC).</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/syslog/image7.png" alt="image7" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Właściwe polecenia zostały wydane sprawdźmy zatem ich efekt. Poniżej zostało nawiązane połączenie zdalne z routerem R1 z hosta o adresie IP 192.168.0.1, celem sprawdzenia faktu rejestracji został włączony i wyłączony interfejs f0/1 routera R1.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/syslog/image8.png" alt="image8" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Jak widać powyżej żaden komunikat o zmianie statusu interfejsu f0/1 <strong>nie został wyświetlony</strong>. Nasuwa się pytanie &ndash; Dlaczego wyświetlenie komunikat&oacute;w o zdarzeniach podczas trwania sesji zdalnej nie działa?</p> <p>&nbsp;</p> <p>Powodem takiego stanu rzeczy jest błędna lokalizacja wydania polecenia: <strong>terminal monitor</strong> O ile samo włączenie rejestrowania terminalowego możemy wykonać na routerze (polecenie te jest wydawane w trybie konfiguracji globalnej tak więc obowiązuje niezależnie od miejsca jego wydania) to już włączenie rejestrowanie VTY powinno odbyć się oddzielnie dla każdego nawiązanego połączenia.</p> <p>&nbsp;</p> <p>Poprawny zatem konfigurację i sprawdźmy efekty.</p> <p>&nbsp;</p> <p>Zostaje nawiązane połączenie z routerem R1 i po zestawieniu sesji w trybie uprzywilejowanym administrator wydaje polecenie: <strong>terminal monitor</strong> W kolejnym kroku ponownie zostają wydane polecenia nakazujące włączenie a następnie wyłączenie interfejsu f0/1 routera. Jak widać, tym razem o zaistniałych zmianach w konfiguracji urządzenia jesteśmy informowani stosownymi komunikatami.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/syslog/image9.png" alt="image9" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Rejestrowanie zdarzeń z wykorzystaniem połączenia zdalnego działa.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/syslog/image10.png" alt="image10" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Przejdźmy zatem do metody zbierania log&oacute;w z wykorzystaniem zewnętrznego serwera Syslog.</p> <p>&nbsp;</p> <p>Do obsługi i zapisu log&oacute;w zdarzeń wysyłanych przez urządzenia budujące naszą sieć, niezbędne jest posiadanie dodatkowego oprogramowania.</p> <p>&nbsp;</p> <p>W wpisie tym zajmiemy się oprogramowaniem pracującym pod kontrolą systemu Windows (system Linux będzie om&oacute;wiony w oddzielnym wpisie). Do zaproponowania mam dla Ciebie Czytelniku trzy programy:</p> <p>&nbsp;</p> <p><strong>Kiwi Syslog Server</strong> - to oprogramowanie do zarządzania logami systemowymi, program oferuje wiele funkcji od pobierania, rejestrowania i przekazywania log&oacute;w systemowych, SNMP czy dziennika zdarzeń Windows do powiadamiania o zaistniałych zdarzeniach. Program obsługuje routery, switche, hosty z zainstalowanym systemem Windows oraz Linux. Kiwi Syslog Server występuje w dw&oacute;ch wersjach: płatnej oraz darmowej. Wersja bezpłatna pozwala na rejestrowanie zdarzań przy wykorzystaniu protokołu Syslog oraz SNMP. Ilość obsługiwanych urządzeń została ograniczona do 5, dodatkowo brak jest funkcjonalności archiwizacji log&oacute;w, powiadomień o zaistniałym zdarzeniu (alarm, email) oraz konfiguracji opartej o www. Wersja płatna oczywiście opisanych ograniczeń nie posiada. Program można pobrać ze strony: <a>http://www.kiwisyslog.com/free-edition.aspx</a></p> <p>&nbsp;</p> <p>Drugim programem jest <strong>3CDaemon</strong>. Program jest całkowicie darmowy i jedną z jego funkcjonalności jest rejestrowanie zdarzeń przy wykorzystaniu Syslog. Dodatkowo program oferuje funkcjonalność serwera FTP czy TFTP. Oznacza to, że w bardzo prosty spos&oacute;b możemy np. archiwizować konfigurację router&oacute;w czy switchy wykorzystując do tego jeden z dw&oacute;ch wymienionych protokoł&oacute;w. Narzędzie niestety nie obsługuje protokołu SNMP. Program pobierzesz ze strony: <a>http://www.firewall.cx/downloads/ftp-tftp-servers-a-clients/16-1-3cdaemon-server-a-client.html</a></p> <p>&nbsp;</p> <p>Ostatnim zaś programem jest <strong>tftpd32/64</strong>. Narzędzie te jak pozostałe r&oacute;wnież pełni rolę serwera Syslog lecz ma bardzo ograniczone możliwości (pewnie niekt&oacute;rym tak minimalistyczne podejście do tematu się spodoba).</p> <p>&nbsp;</p> <p>Po pobraniu i zapisaniu Kiwi Syslog Server rozpoczynamy instalację programu. Instalacja programu przebiega standardowo z małym wyjątkiem. Podczas instalacji zostaniemy zapytani &ndash; Czy program po instalacji ma pracować jako usługa czy aplikacja? Wybranie usługi spowoduje uruchomienie serwera za każdym razem gdy zostanie włączony system. Konsekwencją zainstalowania programu jako usługi będzie niemożność uruchomienia innych narzędzi rejestrujących zdarzenia z wykorzystaniem metody Syslog bądź SNMP, zaś zaletą wybrania tego rozwiązania jest ciągła rejestracja napływających informacji. Wybranie opcji drugiej spowoduje zainstalowanie narzędzia, tak jak standardowej aplikacji.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/syslog/image11.png" alt="image11" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>My decydujemy się na instalację opartą o usługę. Dlatego też w kolejnym kroku musimy zdefiniować poziom uprawnień z kt&oacute;rych będzie korzystał serwer. Do wyboru mamy dwie opcje: konto systemowe bądź inne zdefiniowane przez nas konto.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/syslog/image12.png" alt="image12" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>W kolejnym kroku definiujemy typ instalacji oraz wybieramy opcjonalne czynności, kt&oacute;re zostaną wykonane wraz z instalacją programu.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/syslog/image13.png" alt="image13" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po definicji wszystkich ustawień następuje instalacja narzędzia.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/syslog/image14.png" alt="image14" width="700" height="453" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>W przypadku <strong>3CDaemon</strong> pobieramy spakowany plik w formacie ZIP po rozpakowaniu, kt&oacute;rego instalujemy program. Instalacja przebiega w spos&oacute;b standardowy.</p> <p>&nbsp;</p> <p>Po uruchomieniu narzędzia Kiwi Syslog Server warto zajrzeć do opcji programu aby zapoznać się z jego możliwościami. Do ustawień dostaniemy się po wybraniu z menu <strong>File</strong> opcji <strong>Setup</strong> (skr&oacute;t Ctrl+P).</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/syslog/image15.png" alt="image15" width="700" height="508" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Warto r&oacute;wnież zajrzeć do menu <strong>Manage</strong> gdzie między innymi możemy włączyć/wyłączyć usługę serwera czy przeprowadzić proste testy diagnostyczne sprawdzające czy np. wiadomości nie będą blokowane przez zaporę systemową.</p> <p>&nbsp;</p> <p>Aby narzędzie Kiwi Syslog Server mogło prawidłowo odbierać logi o zaistniałych zdarzeniach, należy skonfigurować jeszcze jedną opcje. Opcja ta związana jest z ograniczeniem wersji darmowej do pięciu urządzeń. Aby określić urządzenia, kt&oacute;rych logi będą rejestrowane należy przejść do ustawień programu i na karcie <strong>Inputs</strong> określić adresy IP urządzeń, kt&oacute;re będą podlegały procesowi rejestrowania.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/syslog/image16.png" alt="image16" width="700" height="507" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Narzędzie Kiwi Syslog Server jest gotowe do odbierania wiadomości.</p> <p>&nbsp;</p> <p>Nadszedł czas by skonfigurować router, przechodzimy do linii poleceń routera R1.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/syslog/image17.png" alt="image17" width="700" height="175" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Aby router m&oacute;gł przesyłać logi do zewnętrznego serwera Syslog należy wydać polecenia:</p> <p style="margin-left: 30px;">1 - określamy adres IP serwer Syslog z wykorzystaniem polecenia<strong>: logging host &lt;adres_IP_serwera_Syslog&gt;</strong>,</p> <p style="margin-left: 30px;">2- określamy poziom wysyłanych komunikat&oacute;w - polecenie: <strong>logging trap &lt;poziom&gt;</strong>,</p> <p style="margin-left: 30px;">3 - za pomocą polecenia: <strong>logging source-interface &lt;interfejs&gt;</strong> możemy określić interfejs wyjściowy,</p> <p style="margin-left: 30px;">4 - włączamy proces wysyłania powiadomień - polecenie: <strong>logging on</strong></p> <p>&nbsp;</p> <p>Sprawdźmy zatem efekt przeprowadzonej konfiguracji.</p> <p>Jak można zauważyć poniżej efekt wydania poleceń włączenia/wyłączenia interfejsu f0/1 routera R1 znajduje odzwierciedlenie w logach serwera Syslog.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/syslog/image18.png" alt="image18" width="700" height="266" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Ponieważ program Kiwi Syslog Serwer działa jako usługa nie musi on być fizycznie uruchomiony by m&oacute;c logi o zaistniałych zdarzeniach odbierać.</p> <p>&nbsp;</p> <p>Do określenia ważności przesyłanych komunikat&oacute;w użyto polecenie: <strong>logging trap &lt;poziom&gt;</strong>, pominięcie polecenia spowoduje włączenie wysyłania komunikat&oacute;w o poziomie ważności: <strong>informational</strong>. W przypadku ustawienia większej liczby serwer&oacute;w logowania definicja poziomu ważności obowiązuje dla wszystkich. Nie ma możliwości określenia poziom&oacute;w dla każdego z serwera Syslog osobno.</p> <p>&nbsp;</p> <p>Sprawdzenie ustawionego poziomu ważności komunikat&oacute;w zweryfikujemy wydając komendę: <strong>show logging</strong></p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/syslog/image19.png" alt="image19" width="700" height="166" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Konfigurację rejestrowania zdarzeń przy użyciu serwera Syslog można r&oacute;wnież przeprowadzić z wykorzystaniem nazw domenowych. Poniżej na zrzucie został zaprezentowany przykład takiej konfiguracji.</p> <p>&nbsp;</p> <p style="margin-left: 30px;">1 - router jest wstanie rozwiązywać nazwy host&oacute;w przy użyciu serwera DNS, warunkiem oczywiście jest istnienie takiego serwera w naszej sieci, dlatego też gdy w naszej sieci serwer DNS nie istnieje dobrze jest wykonać odwzorowanie typu: adres IP-nazwa hosta. Wykonanie odwzorowywanie uchroni nas przed sytuacją w kt&oacute;rej serwer DNS uległ awarii, gdyż router w swojej konfiguracji posiada wpis, kt&oacute;ry pozwoli mu powiązać adres IP z nazwą domenową hosta. Przypisanie adresu IP do odpowiadającej nazwy domenowej hosta wykonamy za pomocą polecenia: <strong>ip host</strong> <strong>&lt;nazwa_domenowa&gt; &lt;adres_IP&gt;</strong> W przykładzie poniżej hostowi o adresie IP <strong>192.168.0.1</strong> została przypisana nazwa <strong>yyy.firma.local</strong> (taka jest nazwa domenowa serwera Syslog). Po dokonaniu przypisania nazwy domenowej hosta możemy używać w poleceniach &ndash; np. sprawdzenie dostępności hosta przy wykorzystaniu polecenia: <strong>ping</strong> (punkt 3).</p> <p style="margin-left: 30px;">2 - po utworzeniu dowiązania włączamy logowanie, lecz tym razem zamiast adresu IP podajemy nawę hosta.</p> <p>&nbsp;</p> <p>Reszta konfiguracji przebiega jak w przykładzie powyżej.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/syslog/image20.png" alt="image20" width="700" height="255" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Rejestracja zdarzeń z wykorzystaniem aplikacji Kiwi Syslog Serwer została przeprowadzona prawidłowo czas zatem by przejść do kolejnego narzędzia.</p> <p>&nbsp;</p> <p>Do przesyłania wiadomości o zdarzeniach skonfigurowaliśmy router R2 a do ich odbioru użyjemy narzędzia 3CDaemon.</p> <p>&nbsp;</p> <p>Aby m&oacute;c użyć programu do rejestracji log&oacute;w musimy w pierwszej kolejności zatrzymać usługę serwera Kiwi Syslog (krok ten jest zbędny w przypadku instalacji serwera Kiwi jako aplikacji, brak zatrzymania usługi spowoduje błąd uruchomienia programu 3CDaemon). Zatrzymanie usługi wykonamy bezpośrednio z programu wybierając z menu <strong>Manage</strong> opcję <strong>Stop the Syslogd service</strong> Oczywiście usługę serwera Kiwi możemy r&oacute;wnież wyłączyć wykorzystując do tego okno: <strong>Usługi</strong>.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/syslog/image21.png" alt="image21" width="700" height="545" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po uruchomieniu programu 3CDaemon do dyspozycji mamy następujące ustawienia:</p> <p>&nbsp;</p> <p style="margin-left: 30px;">1 - Konfiguracja serwer Syslog &ndash; opcje konfiguracji programu są bardzo skromne wpływ mamy na: określenie ścieżki zapisu log&oacute;w; określenie adres&oacute;w IP urządzeń, kt&oacute;rych logi mają być zapisywane oraz zdefiniowane sposobu zapisu przychodzących komunikat&oacute;w (wszystko do jednego pliku, zapis do plik&oacute;w w zależności od poziomu otrzymanego komunikatu, zapis do plik&oacute;w w zależności od kategorii wiadomości czy zapis do plik&oacute;w w zależności od adresu IP).</p> <p style="margin-left: 30px;">2 - Włączenie/wyłączenie serwera Syslog,</p> <p style="margin-left: 30px;">3 - Wyczyszczenie listy,</p> <p style="margin-left: 30px;">4 - Podgląd plik&oacute;w log&oacute;w.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/syslog/image22.png" alt="image22" width="700" height="519" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Sprawdźmy zatem działanie programu. Tak jak w przypadku Kiwi Syslog Serwer zasymulowano włączenie i wyłączenie interfejsu routera. Jak można się przekonać po analizie zrzutu poniżej logi do serwera Syslog zostały przesłane prawidłowo.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/syslog/image23.png" alt="image23" width="700" height="440" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Zanim przejdziemy dalej z omawianiem konfiguracji urządzeń Cisco do wsp&oacute;łpracy z zdalnym rejestrowaniem zdarzeń zatrzymajmy się jeszcze chwilkę przy narzędziu 3CDaemon. Jak napisałem wyżej program pomimo tego, że posiada mało opcji konfiguracji serwera Syslog to rekompensuje nam to innymi funkcjami. Przy pomocy programu wykonamy szereg innych działań administracyjnych a nie potrzebujemy do tego dedykowanych aplikacji gdyż niezbędne funkcje są zaimplementowane już w samym programie.</p> <p>&nbsp;</p> <p>Do tych podstawowych funkcji należy pełnie roli:</p> <p>&nbsp;</p> <p>Serwera TFTP (ang. Trivial File Transfer Protocol) &ndash; zasada działania serwera opiera się na wykorzystaniu protokołu UDP wraz w połączeniu z numerem portu 69. W przypadku użycia TFTP jedyne co potrzeba by pobrać plik to adres IP serwera i nazwa pliku (nazw pliku jest niezbędna gdyż nie mamy możliwości wylistowania plik&oacute;w na serwerze). Protok&oacute;ł ten jest otwarty dla wszystkich tak więc brak w nim wsparcia dla takich mechanizm&oacute;w jak: konta użytkownik&oacute;w, pewność dostarczenia przesyłanego pliku czy szyfrowanie. Gł&oacute;wną zaletą protokołu jest jego prostota i łatwość wykorzystania. Gdy szybko chcemy z routera/przełącznika przesłać jakiś plik to przy użyciu tego protokołu wykonamy te zadanie bez żadnych problem&oacute;w.</p> <p>&nbsp;</p> <p>Konfiguracja narzędzia 3CDaemon sprowadza się do określenia katalogu w kt&oacute;rym mają być zapisywane pliki wysyłane przez urządzenia/hosty zdalne.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/syslog/image24.png" alt="image24" width="700" height="452" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Inne programy, kt&oacute;re pełnią rolę serwera TFTP to: Open TFTP Server (narzędzie wiesza poleceń) oraz TFTPD32/64 (opisany poniżej).</p> <p>&nbsp;</p> <p>Na większe możliwości pozwala nam wykorzystanie serwera FTP. Protok&oacute;ł FTP działa w oparciu o protok&oacute;ł TCP tak więc mamy pewność iż przesyłany plik dotrze do celu w niezmienionej postaci. O ile TFTP nadaje się świetnie np. do przesłanie kopii konfiguracji urządzenia (running-config) to już do zapisu pliku firmware urządzenia wykorzystanie go może przysporzyć nam problem&oacute;w. Dlatego też w sytuacjach w kt&oacute;rych musimy mieć zapewnioną pewność przesyłania danych lepiej jest użyć protokołu FTP (o niezbędne funkcje związane z korekcją ewentualnych błęd&oacute;w zadba protok&oacute;ł TCP).</p> <p>&nbsp;</p> <p>Konfiguracja narzędzia polega na określeniu konta użytkownika mogącego zestawić połączenie (możliwe jest skorzystanie z konta: anonymous), katalogu zapisu/odczytu plik&oacute;w oraz definicji praw.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/syslog/image25.png" alt="image25" width="700" height="452" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Ostatnią funkcjonalnością narzędzia jest wykorzystanie programu w roli klienta TFTP. Skorzystanie z tej funkcjonalności powala nam na wysłanie pliku z hosta w kierunku innego serwer TFTP.</p> <p>&nbsp;</p> <p>Aby m&oacute;c skopiować dane należy określić adres IP serwera TFTP oraz wybrać plik, kt&oacute;ry ma zostać przesłany.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/syslog/image26.png" alt="image26" width="700" height="474" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Ostatnim prezentowanym programem mogącym pełnić rolę serwera Syslog jest bezpłatna aplikacja Tftpd32/64, kt&oacute;ra pomimo swojej prostoty r&oacute;wnież umożliwi nam zbieranie informacji na temat zaistniałych zdarzeń. Tak naprawdę uruchomienie serwera Syslog sprowadza się tylko do włączenia samej aplikacji. Po włączeniu programu, narzędzie jest gotowe do pracy.</p> <p>&nbsp;</p> <p>Opcje na kt&oacute;rą mamy wpływ to określenie lokalizacji zapisu pliku logu.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/syslog/image27.png" alt="image27" width="700" height="511" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po uruchomieniu narzędzia program zaczyna zbierać logi. Poniżej zasymulowana sytuacja włączenia i wyłączenia interfejsu f0/1 routera R1. Jak widać aplikacja działa, logi są przekazywane prawidłowo.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/syslog/image28.png" alt="image28" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Program nie tylko pełni role serwera Syslog ale r&oacute;wnież tak jak 3CDaemon można go wykorzystać jako serwer TFTP ale r&oacute;wnież narzędzie jest klientem TFTP. Unikatową funkcją Tftpd32/64 jest zaimplementowana rola serwera DHCP.</p> <p>&nbsp;</p> <p>Przy korzystaniu z rejestrowania zdarzeń istnieje możliwość wyłączenia przesyłania komunikat&oacute;w dotyczących najczęstszych zajść związanych z działanie interfejs&oacute;w.</p> <p>&nbsp;</p> <p>Zajścia te dotyczą wysyłania komunikat&oacute;w w sytuacji zmiany stanu interfejsu z aktywnego na nieaktywny i z powrotem a także zmiany stanu podinterfejs&oacute;w (oczywiście jeśli takowe zostały skonfigurowane).</p> <p>&nbsp;</p> <p>Zasymulujmy więc sytuację w kt&oacute;rej włączymy i wyłączymy interfejs f0/1 routera R1. Jak można zauważyć po analizie poniższego zrzutu włączenie i wyłączenie interfejsu powoduje wyświetlenie stosownych komunikat&oacute;w w linii poleceń konsoli oraz wysłanie ich do serwera Syslog (punkt 1).</p> <p>&nbsp;</p> <p>W kolejnym kroku zostały wydane dwa dodatkowe polecenia (komendy wydajemy w trybie konfiguracji interfejsu):</p> <p style="margin-left: 30px;"><strong>no logging event link-status</strong> - polecenie wyłącza wyświetlenia komunikat&oacute;w dotyczących zmiany stanu interfejsu f0/1 routera R1 (punkt 2),</p> <p style="margin-left: 30px;"><strong>no logging event subif-link-status </strong>- polecenie wyłącza wyświetlenia komunikat&oacute;w dotyczących aktywacji bądź dezaktywacji łącza podinterfejs&oacute;w (punkt 3).</p> <p>&nbsp;</p> <p>Po dokonanych zmianach ponownie wykonujemy czynność włączenia i wyłączenia interfejsu f0/1. Tym razem brak jest jakichkolwiek komunikat&oacute;w informujących o zaistniałej zmianie stanu łącza (komunikaty zostają r&oacute;wnież wyłączone dla linii poleceń konsoli) - punkt 4.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/syslog/image29.png" alt="image29" width="700" height="525" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Pr&oacute;cz wyłączenia informowania o zmianie statusu interfejsu możemy r&oacute;wnież wykonać operację polegającą na ograniczeniu liczby wysyłanych danych do serwera Syslog. Domyślnie router bądź przełącznik wysyła wszystkie pojawiające się komunikaty. Czasem podczas prowadzonych działań może dojść do sytuacji w kt&oacute;rej bieżące komunikaty będą &bdquo;zalewały&rdquo; serwer Syslog (szczeg&oacute;lnie gdy włączymy przetwarzanie zdarzeń na poziomie debugowania). Dlatego też by ograniczyć ich ilość możemy posłużyć się poleceniem: <strong>logging rate-limit &lt;wartość&gt;</strong></p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/syslog/image30.png" alt="image30" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Powyżej na rysunku skonfigurowano:</p> <p style="margin-left: 30px;">1 - ograniczenie liczby komunikat&oacute;w do 20 z wyłączeniem zdarzeń o poziomie warnings (poziom 4) i niższych,</p> <p style="margin-left: 30px;">2 - ograniczenie liczby komunikat&oacute;w do 20 z wyłączeniem zdarzeń o poziomie warnings (poziom 4) i niższych, komenda ta ze względu na użycie parametru: <strong>console</strong> ma zastosowanie do komunikat&oacute;w pojawiających się w linii poleceń konsoli.</p> <p>&nbsp;</p> <p>Zastosowane komendy spowodują włączenie ograniczenia wysyłania komunikat&oacute;w do 20 na sekundę. Liczba ograniczonych komunikat&oacute;w może przyjąć wartość z zakresu od 1 do 10000. Aby ograniczenie obowiązywało dla wszystkich poziom&oacute;w należy użyć parametru: <strong>all</strong> (bądź ustalić ich poziom na: <strong>debugging</strong>).</p> <p>&nbsp;</p> <p>I na tym etapie kończymy, nie wszystkie opcje zostały om&oacute;wione gdyż zabrakło trochę więcej informacji na temat zmiany domyślnej kategorii wysyłania komunikat&oacute;w, ale obiecuję to nadrobić w kolejnym wpisie w kt&oacute;rym to r&oacute;wnież zajmiemy się rejestracją zdarzeń lecz tym razem serwer Syslog, będzie pracował pod kontrolą systemu Linux.</p> <p>&nbsp;</p> <hr /> <p>&nbsp;</p> <p>BIBLIOGRAFIA:</p> <p>&nbsp;</p> <p><a href="http://www.windowsnetworking.com/articles-tutorials/windows-server-2012/configuring-syslog-agent-windows-server-2012.html">Configuring a Syslog Agent in Windows Server 2012 :: Windows Server 2012 :: Articles &amp; Tutorials :: WindowsNetworking.com</a></p> <p><a href="http://www.pcwdld.com/free-syslog-servers-windows-and-linux"><span style="color: blue;">6 Free Syslog Servers for Windows and Linux/Unix</span></a></p> <p><a href="https://protocolsyntax.wordpress.com/tag/tftpd32/"><span style="color: blue;">tftpd32 | protocolSyntax</span></a></p></div> <div class="K2FeedImage"><img src="http://slow7.pl/media/k2/items/cache/ee842e3019fee30e4ca87cc93974d54b_S.jpg" alt="Rejestracja zdarzeń z wykorzystaniem serwera Syslog." /></div><div class="K2FeedIntroText"><p>Zarządzając daną siecią komputerową najkorzystniejszą dla Nas sytuacją i stanem jak najbardziej pożądanym jest prawidłowo działająca sieć. Nasze wszystkie działania administracyjne sprowadzają się do tego by osiągnąć stan pełnej funkcjonalności sieci. Jeśli wszystko działa - możemy być z siebie dumni lecz nie oznacza to, że możemy spocząć na laurach. Awarie sieci i urządzeń ją tworzących są na porządku dziennym i prędzej czy p&oacute;źniej każdy administrator z takim problemem będzie musiał się zmierzyć. Z reguły awarie i mogące nastąpić komplikacje w działaniu sieci można z dość dużą dozą prawdopodobieństwa przewidzieć. No chyba, że mamy do czynienia z sytuacją nagłą, taką jak przepięcie w sieci elektrycznej, kt&oacute;rej efektem jest uszkodzenie urządzenia bądź atakiem hackerskim. Ale jak to już w życiu bywa nie do końca na wszystko mamy wpływ.</p> <p>&nbsp;</p> </div><div class="K2FeedFullText"> <p>&nbsp;</p> <p>Aby m&oacute;c przewidzieć nadciągającą &bdquo;katastrofę&rdquo; musimy oczywiście mieć narzędzia i metody, kt&oacute;re zawczasu pozwolą nam na stwierdzenie, że dzieje się coś złego. Rozwiązaniem, kt&oacute;re pozwoli nam na zareagowanie w przypadku wystąpienia pierwszych symptom&oacute;w związanych z nieprawidłowo działającą siecią jest raportowanie i logowanie zaistniałych zdarzeń.</p> <p>&nbsp;</p> <p>Konfiguracja logowania zdarzeń dla kilku urządzeń nie jest dużym wyzwaniem i jest stosunkowo prosta oraz nie zajmująca wiele czasu. Sytuacja komplikuje się wraz ze wzrostem liczby zarządzanych urządzeń. W obu przypadkach bardzo znaczącym ułatwieniem dla administratora będzie gdy logi zaistniałych zdarzeń będą zapisane w jednym centralnym miejscu.</p> <p>&nbsp;</p> <p>Aby m&oacute;c zacząć zapisywać logi przy wykorzystaniu specjalnie do tego celu skonfigurowanej maszyny możemy posłużyć się jednym z dw&oacute;ch rozwiązań:</p> <ul> <li style="padding-left: 60px;">zastosować serwer Syslog,</li> <li style="padding-left: 60px;">wykorzystać protok&oacute;ł SNMP.</li> </ul> <p>&nbsp;</p> <p>Pierwsze z rozwiązań to tzw. usługa obsługi log&oacute;w systemowych, potocznie nazywana Sysylog. Usługa do działania wykorzystuje protok&oacute;ł UDP wraz z portem 514. Pełna specyfikacja usługi została opisana w <a href="https://tools.ietf.org/html/rfc5424">RFC5424</a></p> <p>&nbsp;</p> <p>Zaś protok&oacute;ł SNMP (ang. Simple Network Management Protocol) to rodzina protokoł&oacute;w sieciowych odpowiedzialnych za zarządzanie i monitorowanie stanu urządzeń sieciowych (routery, przełączniki, komputery, macierze dyskowe czy sprzętowy firewall). Protok&oacute;ł ten działa w warstwie aplikacji i domyślnie, tak jak jego poprzednik do działania wykorzystuje protok&oacute;ł UDP w połączeniu z portami 161 oraz 162. Szersze informacje na temat działania protokołu znajdziesz w <a href="https://tools.ietf.org/html/rfc1157">RFC1157</a> (wersja SNMPv1), <a href="https://tools.ietf.org/html/rfc1901">RFC1901</a> (wersja SNMPv2) oraz <a href="https://tools.ietf.org/html/rfc3414">RFC3414</a> (wersja SNMPv3).</p> <p>&nbsp;</p> <p>Temat obsługi protokołu SNMP jest bardzo szeroki tak więc samym tym protokołem i jego zastosowaniem zajmiemy się w osobnym wpisie, zaś w tym skupimy się na wykorzystaniu serwera Syslog.</p> <p>&nbsp;</p> <p>Przepływ informacji pomiędzy serwerami zbierającymi informacje o stanie urządzeń a zarządzanymi urządzeniami może odbywać się dwoma ścieżkami:</p> <p style="margin-left: 30px;"><strong>Metoda out-of band </strong>(OOB) - do przesyłania informacji o stanie urządzeń wykorzystywana jest dedykowana sieć. Sieć ta jest niezależna od sieci produkcyjnej, co oznacza, że gdy sieć gł&oacute;wna przestaje działać nadal możliwe jest zarządzanie i monitorowanie urządzeń.</p> <p style="margin-left: 30px;"><strong>Metoda in-band</strong> do monitorowania wykorzystuje sieć produkcyjną czyli sieć w kt&oacute;rej domyślnie prowadzona jest cała komunikacja. Dobrą praktyką wykorzystywaną przy wyborze tego rozwiązania jest odseparowanie ruchu sieciowego związanego z monitorowanie bądź zarządzaniem od reszty prowadzonej komunikacji. Separację ruch sieciowego możemy przeprowadzić w warstwie 2 przy wykorzystaniu sieci prywatnych VLAN.</p> <p>&nbsp;</p> <p>Poniżej na rysunku schematycznie przedstawiono obie metody.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/syslog/image1.png" alt="image1" width="700" height="506" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Od razu nasuwa się pytanie &ndash; Kt&oacute;ry model wybrać? Oczywiście lepszym rozwiązaniem będzie wykorzystanie metody out-of band gdyż w przypadku problem&oacute;w z siecią gł&oacute;wną mamy do dyspozycji dodatkowy kanał komunikacyjny, kt&oacute;ry możemy wykorzystać do rozwiązania zaistniałych problem&oacute;w. Metoda ta pomimo dużej zalety w postaci zastosowania redundancji połączeń niestety ma zasadniczą wadę &ndash; koszt wdrożenia (koszty związane z infrastrukturą oraz wykorzystaniem zasob&oacute;w sprzętowych urządzeń). Dlatego też znacznie częściej wybierana jest metoda in-band.</p> <p>&nbsp;</p> <p>Na co zwr&oacute;cić uwagę przy wykorzystaniu rozwiązań opartych o rejestrowanie zdarzeń:</p> <ul> <li style="padding-left: 60px;">Jakie protokoły monitorowania wspiera i obsługuje dane urządzenie?</li> <li style="padding-left: 60px;">Jaki typ log&oacute;w powinien być rejestrowany?</li> <li style="padding-left: 60px;">Jak oddzielić informacje ważne (krytyczne) od tych rutynowych (informacyjne, diagnostyczne)?</li> <li style="padding-left: 60px;">Jak radzić sobie z dużą ilością log&oacute;w?</li> <li style="padding-left: 60px;">Jak śledzić zmiany, gdy wystąpi awaria sieci bądź atak?</li> <li style="padding-left: 60px;">Jak zapewnić integralność otrzymywanych danych m.in. znaczniki czasu?</li> <li style="padding-left: 60px;">Jak nie dopuścić do manipulacji przy logach?</li> <li style="padding-left: 60px;">Kt&oacute;re z logowanych danych mogą być potrzebne w śledztwie?</li> </ul> <p>&nbsp;</p> <p>Jak widać powyżej jest szereg pytań na kt&oacute;re musimy sobie odpowiedzieć by m&oacute;c skutecznie prowadzić proces gromadzenia informacji. Mam nadzieję, że po lekturze tego wpisu na tak postawione pytania znajdziesz Czytelniku odpowiedzi.</p> <p>&nbsp;</p> <p>Urządzenia sieciowe powinny być skonfigurowany do wysyłania komunikat&oacute;w na jeden lub więcej sposob&oacute;w. Urządzenia firmy Cisco (routery, przełączniki) obsługują komunikaty dziennika:</p> <p style="margin-left: 30px;"><strong>Console</strong> - router domyślnie wszystkie komunikaty dotyczące pracy urządzenia wysyła do swojego portu konsoli. Dostęp do tych komunikat&oacute;w mają użytkownicy, kt&oacute;rzy mają zestawione połączenie z portem konsoli &ndash; tzw. <strong>rejestrowanie konsolowe</strong> (ang. console logging).</p> <p style="margin-left: 30px;"><strong>Rejestrowanie terminalowe</strong> (ang. terminal logging) - bardzo podobne do rejestrowania przy użyciu portu konsoli z tą r&oacute;żnicą iż komunikaty wysyłane są do linii VTY. Wymaga dodatkowego uaktywnienia.</p> <p style="margin-left: 30px;"><strong>Rejestrowanie z wykorzystaniem bufora</strong> (ang. buffered logging) - komunikaty o stanie dziennika są zapisywane i przechowywane w pamięci RAM urządzenia. Do tego celu rezerwowana jest stała część pamięci RAM. Rozmiar bufora ogranicza przechowywanie dużej ilości log&oacute;w tak więc w przypadku przepełnienia następuje kasowanie najstarszych wiadomości.</p> <p style="margin-left: 30px;"><strong>SNMP Server</strong> (ang. SNMP trap logging) &ndash; komunikaty o stanie urządzenia są wysyłane i zapisywane na zewnętrznym serwerze. Obsługa log&oacute;w jest realizowana przy wykorzystaniu protokołu SNMP.</p> <p style="margin-left: 30px;"><strong>Syslog Server</strong> &ndash; tak jak w metodzie powyżej za odbi&oacute;r i zapis log&oacute;w odpowiada zewnętrzny serwer. Rejestrowanie zdarzeń w przypadku tej metody domyślnie jest wyłączone. Przesyłanie odbywa się z pominięciem faktu potwierdzenie przesyłanych raport&oacute;w.</p> <p>&nbsp;</p> <p>Przy konfiguracji danej metody zapisu zdarzeń należy mieć na uwadze, że miejsce logowania wpływa na og&oacute;lne obciążenie systemu. Poniżej lista użytych metod uszeregowana od stopnia wpływu na obciążenie systemu (g&oacute;ra=duże obciążenie, d&oacute;ł=małe obciążenie).</p> <ul> <li style="padding-left: 60px;">logowanie do konsoli,</li> <li style="padding-left: 60px;">logowanie do VTY,</li> <li style="padding-left: 60px;">logowanie do zewnętrznego serwera,</li> <li style="padding-left: 60px;">logowanie do bufora.</li> </ul> <p>&nbsp;</p> <p>W przypadku wykorzystania serwera Syslog, serwerem będziemy określać hosta, kt&oacute;rego zadaniem jest odbi&oacute;r i przetwarzanie log&oacute;w otrzymywanych od klient&oacute;w. Natomiast klientem będzie host/urządzenie sieciowe, kt&oacute;re logi generuje i przekazuje je w kierunku serwera Syslog.</p> <p>&nbsp;</p> <p>W przypadku urządzeń Cisco komunikaty generowane przez urządzenie możemy podzielić w zależności od poziomu ich ważności. Poziom komunikat&oacute;w został ustalony od 0 do 7 a im niższy poziom komunikatu, tym z bardziej krytycznym zdarzeniem będziemy mieli do czynienia.</p> <p>&nbsp;</p> <p>Poniżej w tabeli zostały zebrane możliwe poziomy ważności zdarzeń wraz z przykładowymi zdarzeniami generującymi dany typ komunikatu.</p> <p>&nbsp;</p> <table border="1" style="border-collapse: collapse; margin-right: auto; margin-left: auto;" cellspacing="0" cellpadding="0"> <tbody> <tr> <td style="width: 43.8pt; border: 1pt solid windowtext; padding: 0cm 5.4pt; text-align: center;" valign="top" width="58"><strong>Poziom</strong></td> <td style="width: 72pt; border-width: 1pt 1pt 1pt medium; border-style: solid solid solid none; border-color: windowtext windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; text-align: center;" valign="top" width="96"><strong>Nazwa poziomu</strong></td> <td style="width: 82.2pt; border-width: 1pt 1pt 1pt medium; border-style: solid solid solid none; border-color: windowtext windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; text-align: center;" valign="top" width="110"><strong>Definicja syslog</strong></td> <td style="width: 120.7pt; border-width: 1pt 1pt 1pt medium; border-style: solid solid solid none; border-color: windowtext windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; text-align: center;" valign="top" width="161"><strong>Opis</strong></td> <td style="width: 134.4pt; border-width: 1pt 1pt 1pt medium; border-style: solid solid solid none; border-color: windowtext windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; text-align: center;" valign="top" width="179"><strong>Przykładowe zdarzenie generujące błąd</strong></td> </tr> <tr> <td style="width: 43.8pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; text-align: center;" valign="top" width="58"><strong>0</strong></td> <td style="width: 72pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; text-align: center;" valign="top" width="96">Emergencies</td> <td style="width: 82.2pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; text-align: center;" valign="top" width="110">LOG_EMERG</td> <td style="width: 120.7pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; text-align: center;" valign="top" width="161">Router/przełącznik ma poważne problemy by poprawnie funkcjonować</td> <td style="width: 134.4pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; text-align: center;" valign="top" width="179">Brak możliwości załadowania systemu operacyjnego, uszkodzenie modułu wentylator&oacute;w</td> </tr> <tr> <td style="width: 43.8pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; text-align: center;" valign="top" width="58"><strong>1</strong></td> <td style="width: 72pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; text-align: center;" valign="top" width="96">Alerts</td> <td style="width: 82.2pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; text-align: center;" valign="top" width="110">LOG_ALERT</td> <td style="width: 120.7pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; text-align: center;" valign="top" width="161">Potrzebna natychmiastowa interwencja</td> <td style="width: 134.4pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; text-align: center;" valign="top" width="179">Wzrost temperatury pracy</td> </tr> <tr> <td style="width: 43.8pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; text-align: center;" valign="top" width="58"><strong>2</strong></td> <td style="width: 72pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; text-align: center;" valign="top" width="96">Critical</td> <td style="width: 82.2pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; text-align: center;" valign="top" width="110">LOG_CRIT</td> <td style="width: 120.7pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; text-align: center;" valign="top" width="161">Sytuacja krytyczna</td> <td style="width: 134.4pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; text-align: center;" valign="top" width="179">Błędy alokacji pamięci, problem sprzętowy</td> </tr> <tr> <td style="width: 43.8pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; text-align: center;" valign="top" width="58"><strong>3</strong></td> <td style="width: 72pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; text-align: center;" valign="top" width="96">Errors</td> <td style="width: 82.2pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; text-align: center;" valign="top" width="110">LOG_ERR</td> <td style="width: 120.7pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; text-align: center;" valign="top" width="161">Błędy</td> <td style="width: 134.4pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; text-align: center;" valign="top" width="179">Zmiana stanu pracy interfejsu</td> </tr> <tr> <td style="width: 43.8pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; text-align: center;" valign="top" width="58"><strong>4</strong></td> <td style="width: 72pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; text-align: center;" valign="top" width="96">Warnings</td> <td style="width: 82.2pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; text-align: center;" valign="top" width="110">LOG_WARNING</td> <td style="width: 120.7pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; text-align: center;" valign="top" width="161">Ostrzeżenie</td> <td style="width: 134.4pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; text-align: center;" valign="top" width="179">Niepowodzenie wykonania polecenia bądź instrukcji, błędy szyfrowania</td> </tr> <tr> <td style="width: 43.8pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; text-align: center;" valign="top" width="58"><strong>5</strong></td> <td style="width: 72pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; text-align: center;" valign="top" width="96">Notifications</td> <td style="width: 82.2pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; text-align: center;" valign="top" width="110">LOG_NOTICE</td> <td style="width: 120.7pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; text-align: center;" valign="top" width="161">Powiadomienie</td> <td style="width: 134.4pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; text-align: center;" valign="top" width="179">Aktywacja/dezaktywacja protokołu łącza</td> </tr> <tr> <td style="width: 43.8pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; text-align: center;" valign="top" width="58"><strong>6</strong></td> <td style="width: 72pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; text-align: center;" valign="top" width="96">Informational</td> <td style="width: 82.2pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; text-align: center;" valign="top" width="110">LOG_INFO</td> <td style="width: 120.7pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; text-align: center;" valign="top" width="161">Komunikaty informacyjne</td> <td style="width: 134.4pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; text-align: center;" valign="top" width="179">Naruszenie listy dostępu ACL</td> </tr> <tr> <td style="width: 43.8pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; text-align: center;" valign="top" width="58"><strong>7</strong></td> <td style="width: 72pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; text-align: center;" valign="top" width="96">Debugging</td> <td style="width: 82.2pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; text-align: center;" valign="top" width="110">LOG_DEBUG</td> <td style="width: 120.7pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; text-align: center;" valign="top" width="161">Informacje uzyskane dzięki włączeniu procesu debugowania</td> <td style="width: 134.4pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; text-align: center;" valign="top" width="179">Zależy od wybranego procesu debugowania</td> </tr> </tbody> </table> <p>&nbsp;</p> <p>Poniżej zaprezentowano przykładowy komunikat dziennika routera Cisco.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/syslog/image2.png" alt="image2" width="700" height="370" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Jak można zauważyć powyżej komunikat dziennika składa się z dw&oacute;ch bądź trzech części. Obowiązkowymi elementami komunikatu jest nazwa poziomu wraz z jego identyfikatorem oraz tekst informacyjny. Opcjonalnym elementem jest znacznik czasowy. Włączenie znacznika odbywa się za pomocą polecenia: <strong>service timestamp</strong> wydanego w trybie konfiguracji globalnej.</p> <p>&nbsp;</p> <p>Kolejną częścią komunikatu jest jego kod oraz poziom ważności. W przykładzie powyżej kodem jest SYS oraz LINK, natomiast poziom ważności został ustalony w przypadku pierwszego komunikatu na poziom 5 czyli Notifications, drugi komunikat jest poziomu 3 czyli Errors. Jak już wspomniano komunikaty klasyfikuje się według poziomu czyli komunikaty poziomu 7 są najmniej ważne zaś te poziomu 0 mają znaczenie krytyczne. Dodatkowo dołączana jest informacja o zaistniałym zdarzeniu. W przypadku rozważanych komunikat&oacute;w jest to informacja o przeprowadzonej konfiguracji z wykorzystaniem połączenia linii VTY &ndash; CONFIG_I oraz włączeniu interfejsu &ndash; UPDOWN.</p> <p>&nbsp;</p> <p>Ostatnią częścią wpisu jest treść informacyjna poszerzająca komunikat o dodatkowe szczeg&oacute;ły zarejestrowanego zdarzenia.</p> <p>&nbsp;</p> <p>Zanim rozpoczniemy zbieranie informacji o zaistniałych zdarzeniach, warto na wszystkich urządzeniach, kt&oacute;re będą podlegać temu procesowi wykonać konfigurację daty oraz czasu. Jak ustawić czas ręcznie bądź wykorzystać do tego celu protok&oacute;ł NTP przeczytasz w wpisie: <a href="http://slow7.pl/item/39-zarzadzanie-routerem-cisco" title="Zarządzanie routerem CISCO"><span style="text-decoration: none;">Zarządzanie routerem CISCO</span></a></p> <p>&nbsp;</p> <p>Nasze rozważania rozpoczniemy od włączenia rejestrowania lokalnego.</p> <p style="margin-left: 30px;">1 - rejestrowanie włączymy z wykorzystaniem polecenia: <strong>logging buffered &lt;poziom_komunikatu&gt;</strong>,</p> <p style="margin-left: 30px;">2 - za pomocą komendy: <strong>logging buffered &lt;wartość&gt;</strong> określamy maksymalny rozmiar bufora w kt&oacute;rym będą przechowywane logi zdarzeń.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/syslog/image3.png" alt="image3" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Domyślny poziom ważności rejestrowanych komunikat&oacute;w obejmuje zapisywanie wszystkiego, oznacza to, że wydanie samego polecenia: <strong>logging buffered</strong> spowoduje ustawienie rejestracji zdarzeń na poziomie 7 (debugowanie). Wybranie poziomu debugowania jest jednoznaczne z zapisywaniem zdarzeń poziom&oacute;w niższych. Dlatego też by ograniczyć liczbę zbieranych i przechowywanych log&oacute;w ich ilość możemy kontrolować poprzez definicję poziomu (severity level). Maksymalny poziom ważności rejestrowanych komunikat&oacute;w określamy za pomocą sł&oacute;w kluczowych (patrz tabela powyżej, kolumna nazwa poziomu) bądź numeru poziomu.</p> <p>&nbsp;</p> <p>Domyślny rozmiar bufora zarezerwowany na potrzeby przechowywania log&oacute;w wynosi 4096 bajt&oacute;w (nie jest to wartość stała obejmująca wszystkie modele router&oacute;w). Jest to niewiele i bardzo często rozmiar ten przez administrator&oacute;w jest modyfikowany tak by pomieścić większą liczbę wpis&oacute;w. Domyślny rozmiar bufora pozwala na przechowanie około 50 wpis&oacute;w. Po przekroczeniu rozmiaru dziennika najstarsze wpisy są usuwane tak by zrobić miejsce na nowsze. Wielkość ustalonego bufora ma wpływ na ilość dostępnej pamięci RAM - im więcej zarezerwujemy na potrzeby dziennika tym mniej pamięci router będzie miał do wykorzystanie podczas realizacji swoich podstawowych zadań.</p> <p>&nbsp;</p> <p>Historie zaistniałych zdarzeń możemy przeglądać za pomocą polecenia: <strong>show logging</strong> Logi systemowe zostały uszeregowane od najstarszego do najnowszego.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/syslog/image4.png" alt="image4" width="700" height="384" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Dodatkowo po wydaniu polecenia poznamy takie informacje jak:</p> <p style="margin-left: 30px;">1 - stan oraz ustalony poziom rejestrowania konsolowego. Aby wyłączyć wszystkie komunikaty routera o zaistniałych zdarzeniach wydaj polecenie: <strong>no logging console</strong> Po wydaniu polecenia zostanie wyłączone wyświetlanie jakichkolwiek komunikat&oacute;w.</p> <p style="margin-left: 30px;">2 - stan oraz ustalony poziom rejestrowania zdalnego (o tym temacie szerzej już za chwilę).</p> <p style="margin-left: 30px;">3 - stan oraz ustalony poziom rejestrowania lokalnego z wykorzystaniem bufora.</p> <p style="margin-left: 30px;">4 - ustalony rozmiar dziennika.</p> <p>&nbsp;</p> <p>Aby włączyć licznik wystąpień zdarzeń określonego rodzaju należy posłużyć się poleceniem: <strong>logging count </strong>Po włączeniu licznika stan zdarzeń przejrzymy po wydaniu komendy: <strong>show logging count</strong></p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/syslog/image5.png" alt="image5" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Aby wyłączyć zapis zdarzeń do bufora routera należy wydać polecenie: <strong>no logging buffered</strong> natomiast by wyczyścić zawartość bufora wydaj komendę: <strong>clear logging</strong>.</p> <p>&nbsp;</p> <p>Om&oacute;wienie rejestrowanie z wykorzystaniem zestawionej sesji zdalnej oraz serwera Syslog om&oacute;wimy na przykładzie topologii sieciowej przedstawionej na rysunku poniżej.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/syslog/image6.png" alt="image6" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Rejestrowanie zdarzeń jak już wiesz Czytelniku możemy r&oacute;wnież prowadzić z wykorzystaniem zestawionej sesji wykorzystującej linie VTY.</p> <p>&nbsp;</p> <p>Aby włączyć wyświetlanie zdarzeń podczas sesji połączenia zdalnego należy wydać polecenia:</p> <p style="margin-left: 30px;">1 - <strong>logging monitor &lt;poziom_komunikatu&gt;</strong> (w trybie konfiguracji globalnej) &ndash; wydanie polecenie uruchamia rejestrowanie terminalowe,</p> <p style="margin-left: 30px;">2 - dodatkowo proces należy uruchomić oddzielnym poleceniem: <strong>terminal monitor</strong> (tryb EXEC).</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/syslog/image7.png" alt="image7" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Właściwe polecenia zostały wydane sprawdźmy zatem ich efekt. Poniżej zostało nawiązane połączenie zdalne z routerem R1 z hosta o adresie IP 192.168.0.1, celem sprawdzenia faktu rejestracji został włączony i wyłączony interfejs f0/1 routera R1.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/syslog/image8.png" alt="image8" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Jak widać powyżej żaden komunikat o zmianie statusu interfejsu f0/1 <strong>nie został wyświetlony</strong>. Nasuwa się pytanie &ndash; Dlaczego wyświetlenie komunikat&oacute;w o zdarzeniach podczas trwania sesji zdalnej nie działa?</p> <p>&nbsp;</p> <p>Powodem takiego stanu rzeczy jest błędna lokalizacja wydania polecenia: <strong>terminal monitor</strong> O ile samo włączenie rejestrowania terminalowego możemy wykonać na routerze (polecenie te jest wydawane w trybie konfiguracji globalnej tak więc obowiązuje niezależnie od miejsca jego wydania) to już włączenie rejestrowanie VTY powinno odbyć się oddzielnie dla każdego nawiązanego połączenia.</p> <p>&nbsp;</p> <p>Poprawny zatem konfigurację i sprawdźmy efekty.</p> <p>&nbsp;</p> <p>Zostaje nawiązane połączenie z routerem R1 i po zestawieniu sesji w trybie uprzywilejowanym administrator wydaje polecenie: <strong>terminal monitor</strong> W kolejnym kroku ponownie zostają wydane polecenia nakazujące włączenie a następnie wyłączenie interfejsu f0/1 routera. Jak widać, tym razem o zaistniałych zmianach w konfiguracji urządzenia jesteśmy informowani stosownymi komunikatami.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/syslog/image9.png" alt="image9" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Rejestrowanie zdarzeń z wykorzystaniem połączenia zdalnego działa.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/syslog/image10.png" alt="image10" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Przejdźmy zatem do metody zbierania log&oacute;w z wykorzystaniem zewnętrznego serwera Syslog.</p> <p>&nbsp;</p> <p>Do obsługi i zapisu log&oacute;w zdarzeń wysyłanych przez urządzenia budujące naszą sieć, niezbędne jest posiadanie dodatkowego oprogramowania.</p> <p>&nbsp;</p> <p>W wpisie tym zajmiemy się oprogramowaniem pracującym pod kontrolą systemu Windows (system Linux będzie om&oacute;wiony w oddzielnym wpisie). Do zaproponowania mam dla Ciebie Czytelniku trzy programy:</p> <p>&nbsp;</p> <p><strong>Kiwi Syslog Server</strong> - to oprogramowanie do zarządzania logami systemowymi, program oferuje wiele funkcji od pobierania, rejestrowania i przekazywania log&oacute;w systemowych, SNMP czy dziennika zdarzeń Windows do powiadamiania o zaistniałych zdarzeniach. Program obsługuje routery, switche, hosty z zainstalowanym systemem Windows oraz Linux. Kiwi Syslog Server występuje w dw&oacute;ch wersjach: płatnej oraz darmowej. Wersja bezpłatna pozwala na rejestrowanie zdarzań przy wykorzystaniu protokołu Syslog oraz SNMP. Ilość obsługiwanych urządzeń została ograniczona do 5, dodatkowo brak jest funkcjonalności archiwizacji log&oacute;w, powiadomień o zaistniałym zdarzeniu (alarm, email) oraz konfiguracji opartej o www. Wersja płatna oczywiście opisanych ograniczeń nie posiada. Program można pobrać ze strony: <a>http://www.kiwisyslog.com/free-edition.aspx</a></p> <p>&nbsp;</p> <p>Drugim programem jest <strong>3CDaemon</strong>. Program jest całkowicie darmowy i jedną z jego funkcjonalności jest rejestrowanie zdarzeń przy wykorzystaniu Syslog. Dodatkowo program oferuje funkcjonalność serwera FTP czy TFTP. Oznacza to, że w bardzo prosty spos&oacute;b możemy np. archiwizować konfigurację router&oacute;w czy switchy wykorzystując do tego jeden z dw&oacute;ch wymienionych protokoł&oacute;w. Narzędzie niestety nie obsługuje protokołu SNMP. Program pobierzesz ze strony: <a>http://www.firewall.cx/downloads/ftp-tftp-servers-a-clients/16-1-3cdaemon-server-a-client.html</a></p> <p>&nbsp;</p> <p>Ostatnim zaś programem jest <strong>tftpd32/64</strong>. Narzędzie te jak pozostałe r&oacute;wnież pełni rolę serwera Syslog lecz ma bardzo ograniczone możliwości (pewnie niekt&oacute;rym tak minimalistyczne podejście do tematu się spodoba).</p> <p>&nbsp;</p> <p>Po pobraniu i zapisaniu Kiwi Syslog Server rozpoczynamy instalację programu. Instalacja programu przebiega standardowo z małym wyjątkiem. Podczas instalacji zostaniemy zapytani &ndash; Czy program po instalacji ma pracować jako usługa czy aplikacja? Wybranie usługi spowoduje uruchomienie serwera za każdym razem gdy zostanie włączony system. Konsekwencją zainstalowania programu jako usługi będzie niemożność uruchomienia innych narzędzi rejestrujących zdarzenia z wykorzystaniem metody Syslog bądź SNMP, zaś zaletą wybrania tego rozwiązania jest ciągła rejestracja napływających informacji. Wybranie opcji drugiej spowoduje zainstalowanie narzędzia, tak jak standardowej aplikacji.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/syslog/image11.png" alt="image11" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>My decydujemy się na instalację opartą o usługę. Dlatego też w kolejnym kroku musimy zdefiniować poziom uprawnień z kt&oacute;rych będzie korzystał serwer. Do wyboru mamy dwie opcje: konto systemowe bądź inne zdefiniowane przez nas konto.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/syslog/image12.png" alt="image12" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>W kolejnym kroku definiujemy typ instalacji oraz wybieramy opcjonalne czynności, kt&oacute;re zostaną wykonane wraz z instalacją programu.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/syslog/image13.png" alt="image13" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po definicji wszystkich ustawień następuje instalacja narzędzia.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/syslog/image14.png" alt="image14" width="700" height="453" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>W przypadku <strong>3CDaemon</strong> pobieramy spakowany plik w formacie ZIP po rozpakowaniu, kt&oacute;rego instalujemy program. Instalacja przebiega w spos&oacute;b standardowy.</p> <p>&nbsp;</p> <p>Po uruchomieniu narzędzia Kiwi Syslog Server warto zajrzeć do opcji programu aby zapoznać się z jego możliwościami. Do ustawień dostaniemy się po wybraniu z menu <strong>File</strong> opcji <strong>Setup</strong> (skr&oacute;t Ctrl+P).</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/syslog/image15.png" alt="image15" width="700" height="508" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Warto r&oacute;wnież zajrzeć do menu <strong>Manage</strong> gdzie między innymi możemy włączyć/wyłączyć usługę serwera czy przeprowadzić proste testy diagnostyczne sprawdzające czy np. wiadomości nie będą blokowane przez zaporę systemową.</p> <p>&nbsp;</p> <p>Aby narzędzie Kiwi Syslog Server mogło prawidłowo odbierać logi o zaistniałych zdarzeniach, należy skonfigurować jeszcze jedną opcje. Opcja ta związana jest z ograniczeniem wersji darmowej do pięciu urządzeń. Aby określić urządzenia, kt&oacute;rych logi będą rejestrowane należy przejść do ustawień programu i na karcie <strong>Inputs</strong> określić adresy IP urządzeń, kt&oacute;re będą podlegały procesowi rejestrowania.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/syslog/image16.png" alt="image16" width="700" height="507" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Narzędzie Kiwi Syslog Server jest gotowe do odbierania wiadomości.</p> <p>&nbsp;</p> <p>Nadszedł czas by skonfigurować router, przechodzimy do linii poleceń routera R1.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/syslog/image17.png" alt="image17" width="700" height="175" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Aby router m&oacute;gł przesyłać logi do zewnętrznego serwera Syslog należy wydać polecenia:</p> <p style="margin-left: 30px;">1 - określamy adres IP serwer Syslog z wykorzystaniem polecenia<strong>: logging host &lt;adres_IP_serwera_Syslog&gt;</strong>,</p> <p style="margin-left: 30px;">2- określamy poziom wysyłanych komunikat&oacute;w - polecenie: <strong>logging trap &lt;poziom&gt;</strong>,</p> <p style="margin-left: 30px;">3 - za pomocą polecenia: <strong>logging source-interface &lt;interfejs&gt;</strong> możemy określić interfejs wyjściowy,</p> <p style="margin-left: 30px;">4 - włączamy proces wysyłania powiadomień - polecenie: <strong>logging on</strong></p> <p>&nbsp;</p> <p>Sprawdźmy zatem efekt przeprowadzonej konfiguracji.</p> <p>Jak można zauważyć poniżej efekt wydania poleceń włączenia/wyłączenia interfejsu f0/1 routera R1 znajduje odzwierciedlenie w logach serwera Syslog.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/syslog/image18.png" alt="image18" width="700" height="266" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Ponieważ program Kiwi Syslog Serwer działa jako usługa nie musi on być fizycznie uruchomiony by m&oacute;c logi o zaistniałych zdarzeniach odbierać.</p> <p>&nbsp;</p> <p>Do określenia ważności przesyłanych komunikat&oacute;w użyto polecenie: <strong>logging trap &lt;poziom&gt;</strong>, pominięcie polecenia spowoduje włączenie wysyłania komunikat&oacute;w o poziomie ważności: <strong>informational</strong>. W przypadku ustawienia większej liczby serwer&oacute;w logowania definicja poziomu ważności obowiązuje dla wszystkich. Nie ma możliwości określenia poziom&oacute;w dla każdego z serwera Syslog osobno.</p> <p>&nbsp;</p> <p>Sprawdzenie ustawionego poziomu ważności komunikat&oacute;w zweryfikujemy wydając komendę: <strong>show logging</strong></p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/syslog/image19.png" alt="image19" width="700" height="166" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Konfigurację rejestrowania zdarzeń przy użyciu serwera Syslog można r&oacute;wnież przeprowadzić z wykorzystaniem nazw domenowych. Poniżej na zrzucie został zaprezentowany przykład takiej konfiguracji.</p> <p>&nbsp;</p> <p style="margin-left: 30px;">1 - router jest wstanie rozwiązywać nazwy host&oacute;w przy użyciu serwera DNS, warunkiem oczywiście jest istnienie takiego serwera w naszej sieci, dlatego też gdy w naszej sieci serwer DNS nie istnieje dobrze jest wykonać odwzorowanie typu: adres IP-nazwa hosta. Wykonanie odwzorowywanie uchroni nas przed sytuacją w kt&oacute;rej serwer DNS uległ awarii, gdyż router w swojej konfiguracji posiada wpis, kt&oacute;ry pozwoli mu powiązać adres IP z nazwą domenową hosta. Przypisanie adresu IP do odpowiadającej nazwy domenowej hosta wykonamy za pomocą polecenia: <strong>ip host</strong> <strong>&lt;nazwa_domenowa&gt; &lt;adres_IP&gt;</strong> W przykładzie poniżej hostowi o adresie IP <strong>192.168.0.1</strong> została przypisana nazwa <strong>yyy.firma.local</strong> (taka jest nazwa domenowa serwera Syslog). Po dokonaniu przypisania nazwy domenowej hosta możemy używać w poleceniach &ndash; np. sprawdzenie dostępności hosta przy wykorzystaniu polecenia: <strong>ping</strong> (punkt 3).</p> <p style="margin-left: 30px;">2 - po utworzeniu dowiązania włączamy logowanie, lecz tym razem zamiast adresu IP podajemy nawę hosta.</p> <p>&nbsp;</p> <p>Reszta konfiguracji przebiega jak w przykładzie powyżej.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/syslog/image20.png" alt="image20" width="700" height="255" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Rejestracja zdarzeń z wykorzystaniem aplikacji Kiwi Syslog Serwer została przeprowadzona prawidłowo czas zatem by przejść do kolejnego narzędzia.</p> <p>&nbsp;</p> <p>Do przesyłania wiadomości o zdarzeniach skonfigurowaliśmy router R2 a do ich odbioru użyjemy narzędzia 3CDaemon.</p> <p>&nbsp;</p> <p>Aby m&oacute;c użyć programu do rejestracji log&oacute;w musimy w pierwszej kolejności zatrzymać usługę serwera Kiwi Syslog (krok ten jest zbędny w przypadku instalacji serwera Kiwi jako aplikacji, brak zatrzymania usługi spowoduje błąd uruchomienia programu 3CDaemon). Zatrzymanie usługi wykonamy bezpośrednio z programu wybierając z menu <strong>Manage</strong> opcję <strong>Stop the Syslogd service</strong> Oczywiście usługę serwera Kiwi możemy r&oacute;wnież wyłączyć wykorzystując do tego okno: <strong>Usługi</strong>.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/syslog/image21.png" alt="image21" width="700" height="545" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po uruchomieniu programu 3CDaemon do dyspozycji mamy następujące ustawienia:</p> <p>&nbsp;</p> <p style="margin-left: 30px;">1 - Konfiguracja serwer Syslog &ndash; opcje konfiguracji programu są bardzo skromne wpływ mamy na: określenie ścieżki zapisu log&oacute;w; określenie adres&oacute;w IP urządzeń, kt&oacute;rych logi mają być zapisywane oraz zdefiniowane sposobu zapisu przychodzących komunikat&oacute;w (wszystko do jednego pliku, zapis do plik&oacute;w w zależności od poziomu otrzymanego komunikatu, zapis do plik&oacute;w w zależności od kategorii wiadomości czy zapis do plik&oacute;w w zależności od adresu IP).</p> <p style="margin-left: 30px;">2 - Włączenie/wyłączenie serwera Syslog,</p> <p style="margin-left: 30px;">3 - Wyczyszczenie listy,</p> <p style="margin-left: 30px;">4 - Podgląd plik&oacute;w log&oacute;w.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/syslog/image22.png" alt="image22" width="700" height="519" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Sprawdźmy zatem działanie programu. Tak jak w przypadku Kiwi Syslog Serwer zasymulowano włączenie i wyłączenie interfejsu routera. Jak można się przekonać po analizie zrzutu poniżej logi do serwera Syslog zostały przesłane prawidłowo.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/syslog/image23.png" alt="image23" width="700" height="440" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Zanim przejdziemy dalej z omawianiem konfiguracji urządzeń Cisco do wsp&oacute;łpracy z zdalnym rejestrowaniem zdarzeń zatrzymajmy się jeszcze chwilkę przy narzędziu 3CDaemon. Jak napisałem wyżej program pomimo tego, że posiada mało opcji konfiguracji serwera Syslog to rekompensuje nam to innymi funkcjami. Przy pomocy programu wykonamy szereg innych działań administracyjnych a nie potrzebujemy do tego dedykowanych aplikacji gdyż niezbędne funkcje są zaimplementowane już w samym programie.</p> <p>&nbsp;</p> <p>Do tych podstawowych funkcji należy pełnie roli:</p> <p>&nbsp;</p> <p>Serwera TFTP (ang. Trivial File Transfer Protocol) &ndash; zasada działania serwera opiera się na wykorzystaniu protokołu UDP wraz w połączeniu z numerem portu 69. W przypadku użycia TFTP jedyne co potrzeba by pobrać plik to adres IP serwera i nazwa pliku (nazw pliku jest niezbędna gdyż nie mamy możliwości wylistowania plik&oacute;w na serwerze). Protok&oacute;ł ten jest otwarty dla wszystkich tak więc brak w nim wsparcia dla takich mechanizm&oacute;w jak: konta użytkownik&oacute;w, pewność dostarczenia przesyłanego pliku czy szyfrowanie. Gł&oacute;wną zaletą protokołu jest jego prostota i łatwość wykorzystania. Gdy szybko chcemy z routera/przełącznika przesłać jakiś plik to przy użyciu tego protokołu wykonamy te zadanie bez żadnych problem&oacute;w.</p> <p>&nbsp;</p> <p>Konfiguracja narzędzia 3CDaemon sprowadza się do określenia katalogu w kt&oacute;rym mają być zapisywane pliki wysyłane przez urządzenia/hosty zdalne.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/syslog/image24.png" alt="image24" width="700" height="452" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Inne programy, kt&oacute;re pełnią rolę serwera TFTP to: Open TFTP Server (narzędzie wiesza poleceń) oraz TFTPD32/64 (opisany poniżej).</p> <p>&nbsp;</p> <p>Na większe możliwości pozwala nam wykorzystanie serwera FTP. Protok&oacute;ł FTP działa w oparciu o protok&oacute;ł TCP tak więc mamy pewność iż przesyłany plik dotrze do celu w niezmienionej postaci. O ile TFTP nadaje się świetnie np. do przesłanie kopii konfiguracji urządzenia (running-config) to już do zapisu pliku firmware urządzenia wykorzystanie go może przysporzyć nam problem&oacute;w. Dlatego też w sytuacjach w kt&oacute;rych musimy mieć zapewnioną pewność przesyłania danych lepiej jest użyć protokołu FTP (o niezbędne funkcje związane z korekcją ewentualnych błęd&oacute;w zadba protok&oacute;ł TCP).</p> <p>&nbsp;</p> <p>Konfiguracja narzędzia polega na określeniu konta użytkownika mogącego zestawić połączenie (możliwe jest skorzystanie z konta: anonymous), katalogu zapisu/odczytu plik&oacute;w oraz definicji praw.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/syslog/image25.png" alt="image25" width="700" height="452" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Ostatnią funkcjonalnością narzędzia jest wykorzystanie programu w roli klienta TFTP. Skorzystanie z tej funkcjonalności powala nam na wysłanie pliku z hosta w kierunku innego serwer TFTP.</p> <p>&nbsp;</p> <p>Aby m&oacute;c skopiować dane należy określić adres IP serwera TFTP oraz wybrać plik, kt&oacute;ry ma zostać przesłany.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/syslog/image26.png" alt="image26" width="700" height="474" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Ostatnim prezentowanym programem mogącym pełnić rolę serwera Syslog jest bezpłatna aplikacja Tftpd32/64, kt&oacute;ra pomimo swojej prostoty r&oacute;wnież umożliwi nam zbieranie informacji na temat zaistniałych zdarzeń. Tak naprawdę uruchomienie serwera Syslog sprowadza się tylko do włączenia samej aplikacji. Po włączeniu programu, narzędzie jest gotowe do pracy.</p> <p>&nbsp;</p> <p>Opcje na kt&oacute;rą mamy wpływ to określenie lokalizacji zapisu pliku logu.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/syslog/image27.png" alt="image27" width="700" height="511" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po uruchomieniu narzędzia program zaczyna zbierać logi. Poniżej zasymulowana sytuacja włączenia i wyłączenia interfejsu f0/1 routera R1. Jak widać aplikacja działa, logi są przekazywane prawidłowo.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/syslog/image28.png" alt="image28" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Program nie tylko pełni role serwera Syslog ale r&oacute;wnież tak jak 3CDaemon można go wykorzystać jako serwer TFTP ale r&oacute;wnież narzędzie jest klientem TFTP. Unikatową funkcją Tftpd32/64 jest zaimplementowana rola serwera DHCP.</p> <p>&nbsp;</p> <p>Przy korzystaniu z rejestrowania zdarzeń istnieje możliwość wyłączenia przesyłania komunikat&oacute;w dotyczących najczęstszych zajść związanych z działanie interfejs&oacute;w.</p> <p>&nbsp;</p> <p>Zajścia te dotyczą wysyłania komunikat&oacute;w w sytuacji zmiany stanu interfejsu z aktywnego na nieaktywny i z powrotem a także zmiany stanu podinterfejs&oacute;w (oczywiście jeśli takowe zostały skonfigurowane).</p> <p>&nbsp;</p> <p>Zasymulujmy więc sytuację w kt&oacute;rej włączymy i wyłączymy interfejs f0/1 routera R1. Jak można zauważyć po analizie poniższego zrzutu włączenie i wyłączenie interfejsu powoduje wyświetlenie stosownych komunikat&oacute;w w linii poleceń konsoli oraz wysłanie ich do serwera Syslog (punkt 1).</p> <p>&nbsp;</p> <p>W kolejnym kroku zostały wydane dwa dodatkowe polecenia (komendy wydajemy w trybie konfiguracji interfejsu):</p> <p style="margin-left: 30px;"><strong>no logging event link-status</strong> - polecenie wyłącza wyświetlenia komunikat&oacute;w dotyczących zmiany stanu interfejsu f0/1 routera R1 (punkt 2),</p> <p style="margin-left: 30px;"><strong>no logging event subif-link-status </strong>- polecenie wyłącza wyświetlenia komunikat&oacute;w dotyczących aktywacji bądź dezaktywacji łącza podinterfejs&oacute;w (punkt 3).</p> <p>&nbsp;</p> <p>Po dokonanych zmianach ponownie wykonujemy czynność włączenia i wyłączenia interfejsu f0/1. Tym razem brak jest jakichkolwiek komunikat&oacute;w informujących o zaistniałej zmianie stanu łącza (komunikaty zostają r&oacute;wnież wyłączone dla linii poleceń konsoli) - punkt 4.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/syslog/image29.png" alt="image29" width="700" height="525" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Pr&oacute;cz wyłączenia informowania o zmianie statusu interfejsu możemy r&oacute;wnież wykonać operację polegającą na ograniczeniu liczby wysyłanych danych do serwera Syslog. Domyślnie router bądź przełącznik wysyła wszystkie pojawiające się komunikaty. Czasem podczas prowadzonych działań może dojść do sytuacji w kt&oacute;rej bieżące komunikaty będą &bdquo;zalewały&rdquo; serwer Syslog (szczeg&oacute;lnie gdy włączymy przetwarzanie zdarzeń na poziomie debugowania). Dlatego też by ograniczyć ich ilość możemy posłużyć się poleceniem: <strong>logging rate-limit &lt;wartość&gt;</strong></p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/syslog/image30.png" alt="image30" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Powyżej na rysunku skonfigurowano:</p> <p style="margin-left: 30px;">1 - ograniczenie liczby komunikat&oacute;w do 20 z wyłączeniem zdarzeń o poziomie warnings (poziom 4) i niższych,</p> <p style="margin-left: 30px;">2 - ograniczenie liczby komunikat&oacute;w do 20 z wyłączeniem zdarzeń o poziomie warnings (poziom 4) i niższych, komenda ta ze względu na użycie parametru: <strong>console</strong> ma zastosowanie do komunikat&oacute;w pojawiających się w linii poleceń konsoli.</p> <p>&nbsp;</p> <p>Zastosowane komendy spowodują włączenie ograniczenia wysyłania komunikat&oacute;w do 20 na sekundę. Liczba ograniczonych komunikat&oacute;w może przyjąć wartość z zakresu od 1 do 10000. Aby ograniczenie obowiązywało dla wszystkich poziom&oacute;w należy użyć parametru: <strong>all</strong> (bądź ustalić ich poziom na: <strong>debugging</strong>).</p> <p>&nbsp;</p> <p>I na tym etapie kończymy, nie wszystkie opcje zostały om&oacute;wione gdyż zabrakło trochę więcej informacji na temat zmiany domyślnej kategorii wysyłania komunikat&oacute;w, ale obiecuję to nadrobić w kolejnym wpisie w kt&oacute;rym to r&oacute;wnież zajmiemy się rejestracją zdarzeń lecz tym razem serwer Syslog, będzie pracował pod kontrolą systemu Linux.</p> <p>&nbsp;</p> <hr /> <p>&nbsp;</p> <p>BIBLIOGRAFIA:</p> <p>&nbsp;</p> <p><a href="http://www.windowsnetworking.com/articles-tutorials/windows-server-2012/configuring-syslog-agent-windows-server-2012.html">Configuring a Syslog Agent in Windows Server 2012 :: Windows Server 2012 :: Articles &amp; Tutorials :: WindowsNetworking.com</a></p> <p><a href="http://www.pcwdld.com/free-syslog-servers-windows-and-linux"><span style="color: blue;">6 Free Syslog Servers for Windows and Linux/Unix</span></a></p> <p><a href="https://protocolsyntax.wordpress.com/tag/tftpd32/"><span style="color: blue;">tftpd32 | protocolSyntax</span></a></p></div> Listy kontroli dostępu ACL 2016-09-26T18:28:39+00:00 2016-09-26T18:28:39+00:00 http://slow7.pl/sieci-komputerowe/item/127-listy-kontroli-dostepu-acl pikolo [email protected] <div class="K2FeedImage"><img src="http://slow7.pl/media/k2/items/cache/9ded0288e863fbe79d863f606cb05c21_S.jpg" alt="Listy kontroli dostępu ACL" /></div><div class="K2FeedIntroText"><p>Administratorzy by sprawnie zarządzać swoją siecią muszą dysponować narzędziami, kt&oacute;re pozwolą im na kształtowanie ruchu sieciowego według własnych potrzeb i wymagań. Takim narzędziem, kt&oacute;re pozwala na filtrację pojawiających się w sieci pakiet&oacute;w jest lista ACL. Mechanizm ACL jest bardzo ważnym elementem konfiguracji routera gdyż pozwala na ustalenie zasad, kt&oacute;re niepożądanym użytkownikom zabronią dostępu do sieci a tym zaufanym udostępnią niezbędne usługi.</p> </div><div class="K2FeedFullText"> <p>&nbsp;</p> <p>ACL to lista z zdefiniowanymi instrukcjami zezwoleń bądź zakaz&oacute;w, kt&oacute;ra jest wykonywana sekwencyjnie (od g&oacute;ry do dołu). Instrukcje zawierają informacje o adresach IP, protokołach, numerach port&oacute;w co do kt&oacute;rych ma być podjęta decyzja o odrzuceniu bądź przepuszczeniu danego pakietu.</p> <p>&nbsp;</p> <p>Zastosowanie list ACL sprowadza się do:</p> <p>&nbsp;</p> <p style="margin-left: 30px;"><strong>Zapewnienie zabezpieczeń podczas dostępu do sieci</strong> - gł&oacute;wny cel stosowania list ACL czyli kontrola nad dostępnością obszar&oacute;w naszej sieci bądź usług, m&oacute;wiąc prościej &ndash; tam gdzie jeden host ma umożliwiony dostęp, to drugiemu ten dostęp jest ograniczany. Dzięki listą ACL administrator ma możliwość definiowania obszar&oacute;w oraz ich dostępności dla poszczeg&oacute;lnych urządzeń budujących sieć.</p> <p style="margin-left: 30px;"><strong>Możliwość decydowania o typie przenoszonego ruchu sieciowego</strong> &ndash; w ramach listy ACL mogą zostać zdefiniowane dozwolone protokoły oznacza to możliwość przyznawania i odbierania użytkownikom praw dostępu do określonych usług np. dozwolony jest ruch sieciowy w ramach komunikacji WWW ale już ruch FTP nie.</p> <p style="margin-left: 30px;"><strong>Kontrola nad aktualizacjami tras routingu</strong> &ndash; listy ograniczają dostarczanie aktualizacji tras w ramach protokołu dynamicznego odpowiedzialnego za routing w sieci.</p> <p style="margin-left: 30px;"><strong>Ograniczenie ruchu w sieci i zwiększenie wydajności</strong> - np. blokada streamingu video spowoduje zmniejszenie obciążenia sieci przez co zwiększy się jej wydajność.</p> <p>&nbsp;</p> <p>Decyzja o przepuszczeniu bądź odrzuceniu pakietu może być podejmowana w oparciu o takie informacje jak:</p> <ul> <li style="padding-left: 60px;">źr&oacute;dłowy adres IP,</li> <li style="padding-left: 60px;">docelowy adres IP,</li> <li style="padding-left: 60px;">źr&oacute;dłowy numer portu,</li> <li style="padding-left: 60px;">docelowy numer portu,</li> <li style="padding-left: 60px;">protok&oacute;ł,</li> <li style="padding-left: 60px;">inne (np. rodzaj wiadomości ICMP).</li> </ul> <p>&nbsp;</p> <p>Gdy pakiet przechodzi przez dany interfejs routera do kt&oacute;rego została przypisana lista ACL, jest ona przeglądana od g&oacute;ry do dołu, linijka po linijce celem wykrycia dopasowania z informacją zawartą w nagł&oacute;wku pakietu.</p> <p>&nbsp;</p> <p>Pierwsza linijka ACL, co do kt&oacute;rej nastąpi dopasowanie jest stosowana &ndash; jeśli w warunku listy została zdefiniowana instrukcja typu <strong>permit</strong>, pakiet jest przepuszczany, jeśli zaś w warunku istnieje instrukcja typu <strong>deny</strong>, pakiet jest odrzucany.</p> <p>&nbsp;</p> <p style="text-align: center;"><strong>Kolejne warunki listy ACL nie są sprawdzane !!!!!!</strong></p> <p>&nbsp;</p> <p>Domyślnie na żadnym interfejsie nie ma założonych list ACL.</p> <p>&nbsp;</p> <p>Listy ACL najczęściej zakłada się na routerach brzegowych czyli na styku sieci wewnętrznej a Internetem. Listy ACL r&oacute;wnież często są definiowane na routerach łączących dwa odrębne obszary sieci - np. sieć dla pracownik&oacute;w i sieć dla uczni&oacute;w czy pomiędzy sieciami VLAN.</p> <p>&nbsp;</p> <p>Listy ACL są definiowane osobno dla każdego <strong>protokołu</strong> (choć przy obecnej dominacji IP nie ma to już tak dużego znaczenia), <strong>kierunku</strong> oraz <strong>interfejsu</strong>.</p> <ul> <li style="padding-left: 60px;"><strong>per protocol &ndash; na protok&oacute;ł,</strong></li> <li style="padding-left: 60px;"><strong>per direction &ndash; na kierunek,</strong></li> <li style="padding-left: 60px;"><strong>per interface &ndash; na interfejs.</strong></li> </ul> <p>&nbsp;</p> <p>Jedna lista ACL kontroluje ruch na interfejsie w&nbsp;jednym kierunku (wejście:<strong> in</strong> bądź wyjście: <strong>out</strong>) dla danego protokołu. Jeśli router ma dwa interfejsy skonfigurowane dla protokoł&oacute;w IP, AppleTalk i&nbsp;IPX, potrzebnych będzie 12 oddzielnych list ACL.</p> <p>&nbsp;</p> <p style="text-align: center;"><strong>2 interfejsy x 3 protokoły x 2 kierunki = 12 list ACL</strong></p> <p>&nbsp;</p> <p>Listy ACL są definiowane w trybie <strong>konfiguracji globalnej</strong> routera.</p> <p>&nbsp;</p> <p>Podczas konfigurowania listy ACL należy jej nadać unikalny identyfikator (nie mogą istnieć dwie listy o tych samych identyfikatorach). Identyfikatorem listy ACL jest liczba.</p> <p>&nbsp;</p> <p>Tworzenie listy dostępu następuje z wykorzystaniem polecenia: <strong>access-list &lt;numer&gt; &lt;parametry&gt;</strong></p> <p>&nbsp;</p> <p>Numer listy określa jej rodzaj.</p> <p>&nbsp;</p> <p>Numery list ACL zostały określone następująco:</p> <p style="margin-left: 30px;">&lt;1-99&gt; - standardowa lista dostępu IP</p> <p style="margin-left: 30px;">&lt;100-199&gt; - rozszerzona lista dostępu IP</p> <p style="margin-left: 30px;">&lt;1000-1099&gt; - lista dostępu IPX SAP</p> <p style="margin-left: 30px;">&lt;1100-1199&gt; - rozszerzona lista dostępu 48-bitowych adres&oacute;w MAC</p> <p style="margin-left: 30px;">&lt;1200-1299&gt; - lista dostępu adresu skonsolidowanego IPX</p> <p style="margin-left: 30px;">&lt;1300-1999&gt; - standardowa lista dostępu IP (rozszerzony zakres)</p> <p style="margin-left: 30px;">&lt;200-299&gt; - lista dostępu typu-kodu protokołu</p> <p style="margin-left: 30px;">&lt;300-399&gt; - lista dostępu DECnet</p> <p style="margin-left: 30px;">&lt;600-699&gt; - lista dostępu Appletalk</p> <p style="margin-left: 30px;">&lt;700-799&gt; - lista dostępu 48-bitowych adres&oacute;w MAC</p> <p style="margin-left: 30px;">&lt;800-899&gt; - standardowa lista dostępu IPX</p> <p style="margin-left: 30px;">&lt;900-999&gt; - rozszerzona lista dostępu IPX</p> <p style="margin-left: 30px;">&lt;2000-2699&gt; - rozszerzona lista dostępu IP (rozszerzony zakres)</p> <p>&nbsp;</p> <p>Podczas budowy warunk&oacute;w tworzących daną listę ACL należy zdefiniować spos&oacute;b działania tzn. czy zezwalamy na <strong>dostęp</strong> (permit) czy go <strong>odbieramy</strong> (deny):</p> <p><strong>access-list numer permit ...</strong> lub <strong>access-list numer deny ...</strong></p> <p>&nbsp;</p> <p>Po zdefiniowaniu sposobu działania określamy adres IP lub nazwę hosta.</p> <p><strong>access-list numer permit A.B.C.D</strong> <strong>...</strong> lub <strong>access-list numer deny A.B.C.D</strong> <strong>...</strong></p> <p>&nbsp;</p> <p>Kolejnym krokiem jest definicja tzw. <strong>maski blankietowej</strong> określającej zakres adres&oacute;w co do kt&oacute;rych warunek listy będzie miał zastosowanie. Lecz tu na chwilę zatrzymajmy się gdyż wprowadzanie na tym etapie pojęcia maski blankietowej zbyt by sprawę zagmatwało i przyjmijmy na ten moment, że lista ACL została zdefiniowana. Do tematu oczywiście wr&oacute;cimy w dalszej części wpisu.</p> <p>&nbsp;</p> <p>Po utworzeniu listy ACL nie można zapomnieć o przypisaniu jej do interfejsu routera.</p> <p>&nbsp;</p> <p>Aby &bdquo;założyć&rdquo; listę na danym interfejsie routera przechodzimy do trybu konfiguracji interfejsu i za pomocą komendy: <strong>ip access-group &lt;lista_ACL&gt; {in|out}</strong> dokonujemy powiązania listy ACL z interfejsem (lista ACL będzie działała na wybranym interfejsie).</p> <p><strong>ip access-group numer_listy_dostępu in</strong> lub <strong>ip access-group numer_listy_dostępu out</strong></p> <p>&nbsp;</p> <p>Określenie <strong>in</strong> lub <strong>out</strong> określa listę jako <strong>wejściową</strong> lub <strong>wyjściową</strong>.</p> <p>&nbsp;</p> <p>W routerach Cisco stosowane są dwa zasadnicze rodzaje ACL:</p> <ul> <li style="padding-left: 60px;"><strong>listy standardowe </strong>(ang. standard ACL),</li> <li style="padding-left: 60px;"><strong>listy rozszerzone </strong>(ang. extended ACL).</li> </ul> <p>&nbsp;</p> <p>R&oacute;żnica pomiędzy typem użytej listy sprowadza się do:</p> <p style="padding-left: 30px;"><strong>lista standardowa</strong> - jedynym kryterium, na podstawie kt&oacute;rego router filtruje pakiety jest źr&oacute;dłowy adres IP,</p> <p style="padding-left: 30px;"><strong>lista rozszerzona</strong> - mają dużo większe możliwości, gdyż budowa warunku listy według, kt&oacute;rego będzie prowadzona filtracja pakiet&oacute;w jest możliwa na podstawie: źr&oacute;dłowego adresu IP, docelowego adresu IP, źr&oacute;dłowego bądź docelowego numer portu, protokołu oraz informacji innych jak np. już wyżej wspomniany rodzaj wiadomości ICMP.</p> <p>&nbsp;</p> <p>Zar&oacute;wno listy standardowe, jak i rozszerzone mogą być:</p> <ul> <li style="padding-left: 60px;"><strong>numerowane,</strong></li> <li style="padding-left: 60px;"><strong>nazwane.</strong></li> </ul> <p>&nbsp;</p> <p>Konfigurując <strong>numerowaną</strong> listę ACL przypisujemy jej numer:</p> <ul> <li style="padding-left: 60px;">z zakres&oacute;w 1-99 lub 1300-1999, jeśli chcemy stworzyć listę standardową,</li> <li style="padding-left: 60px;">z zakres&oacute;w 100-199 lub 2000-2699 jeśli chcemy stworzyć listę rozszerzoną.</li> </ul> <p>&nbsp;</p> <p>W przypadku list <strong>nazywanych</strong> każdej liście przypisujemy unikalną nazwę, kt&oacute;ra powinna składać się ze znak&oacute;w alfanumerycznych (przyjęło się używanie zapisu wielkimi literami &ndash; choć oczywiście to tylko sugestia). Lista nazywana nie może zawierać znaku spacji oraz zaczynać się od cyfry.</p> <p>&nbsp;</p> <p>Poniżej na schemacie blokowym przedstawiono schemat działania listy ACL wejściowej (dla tych niewtajemniczonych z algorytmami - prostokąt w schemacie blokowym oznacza wystąpienie czynności zaś romb jest warunkiem, kt&oacute;ry kończy się podjęciem decyzji - analogią do warunku jest funkcja JEŻELI używana m.in w Excelu). Analizowanie danego pakietu rozpoczyna się gdy pakiet trafia do routera. Por&oacute;wnywane są dane zawarte w pakiecie z instrukcjami zawartymi w liście ACL. Por&oacute;wnywanie danych następuje do pierwszego trafienia. Jeśli takowe dopasowanie następuje to jest dane zawarte w odebranym pakiecie pokrywają się z instrukcjami zawartymi w liście ACL następuje przerwanie przetwarzania listy ACL (reszta warunk&oacute;w tworzących listę ACL jest ignorowana). Co do pakietu następuje decyzja o jego odrzuceniu bądź przekazaniu go dalej - wszystko zależy od treści zdefiniowanej instrukcji. Przetwarzanie listy ACL trwa tak długo aż nastąpi dopasowanie bądź zostanie wyczerpana lista nagł&oacute;wk&oacute;w. Po sprawdzeniu wszystkich instrukcji i braku wystąpienia dopasowania odebrany pakiet jest odrzucany - pakiet trafia do &bdquo;kosza&rdquo; na wskutek działania nie jawnej instrukcji: <strong>deny any</strong>. Instrukcja ta jest domyślnie dołączana do każdej listy ACL a jej działanie odnosi się do tych pakiet&oacute;w, kt&oacute;re nie spełniły żadnego z warunk&oacute;w zdefiniowanych w sprawdzanej liście ACL (brak wystąpienia dopasowania warunku do danych zawartych w nagł&oacute;wku pakietu).</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image1.png" alt="image1" width="700" height="618" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Opr&oacute;cz list ACL zdefiniowanych na wejściu są jeszcze te, kt&oacute;re mogą być przypisane do interfejsu wyjściowego (lista ACL ma zastosowanie do pakiet&oacute;w opuszczających router). Schemat blokowy działania takiej listy został przedstawiony na schemacie blokowym zamieszczonym poniżej.</p> <p>&nbsp;</p> <p>Jak można zauważyć schemat podejmowania decyzji w przypadku zastosowania listy ACL na interfejsie wyjściowym przebiega inaczej niż to ma miejsce w przypadku pakietu, kt&oacute;ry do routera zostaje dostarczony.</p> <p>&nbsp;</p> <p>Pierwszą decyzją do rozstrzygnięcia pozostaje fakt czy otrzymany pakiet router jest w stanie w og&oacute;le przekazać - czy istnieje droga, kt&oacute;rą pakiet m&oacute;głby bez przeszk&oacute;d trafić do adresata. Istnienie drogi router określa na podstawie wpis&oacute;w zawartych w swojej tablicy routingu. Jeśli otrzymany pakiet nie ma szans dotarcia do odbiorcy z powodu braku wpisu o sposobie jego dotarcia, to po co ma być on analizowany przez listę ACL. Spełnienie warunku routowalności pakietu (czyli istnienia drogi osiągnięcia celu) jest niezbędne by pakiet ten m&oacute;gł być analizowany przez listę ACL. W przypadku braku wpisu w tablicy routingu o sieci docelowej pakiet zostaje odrzucony. Jeśli na interfejsie wyjściowym została skonfigurowana lista ACL, dane zawarte w nagł&oacute;wku pakietu są analizowane pod względem ich zgodności z listą instrukcji zdefiniowanych w liście ACL. Przesłanie pakietu dalej jest zależne od spełnienia warunk&oacute;w listy ACL. Tu r&oacute;wnież ma zastosowanie zasada pierwszego dopasowania a w przypadku jego braku następuje odrzucenie pakietu na wskutek działania nie jawnej instrukcji zabroń.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image2.png" alt="image2" width="700" height="416" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Og&oacute;lny schemat decyzji z uwzględnieniem ewentualnie zdefiniowanych list ACL wejściowych jak i wyjściowych podejmowanych przez router został przedstawiony na schemacie poniżej.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image3.png" alt="image3" width="700" height="205" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>W pierwszej kolejności po odebraniu pakietu sprawdzana jest warstwa druga czyli docelowy adres MAC, jeśli adres MAC nie zgadza się z adresem MAC interfejsu na, kt&oacute;rym router odebrał wiadomość pakiet jest odrzucany (no chyba, że mamy do czynienia z ruchem rozgłoszeniowym).</p> <p>&nbsp;</p> <p>Kolejnym krokiem jest sprawdzenie faktu istnienia listy ACL na interfejsie wejściowym, jeżeli takowa lista ACL została założona następuje sprawdzenie warunk&oacute;w według schematu blokowego opisanego wyżej (patrz schemat dotyczący listy wejściowej). Jeśli zaś listy ACL wejściowej nie ma pakiet danych zostaje przekazany w kierunki interfejsu wyjściowego. I tu podobnie jak w przypadku interfejsu wejściowego jest sprawdzany fakt istnienia listy ACL. W przypadku jej istnienia następuje ciąg czynności i decyzji, kt&oacute;re są realizowane według schematu blokowego przynależnego liście wyjściowej. Gdy interfejs wyjściowy pozbawiony jest listy ACL, pakiet jest enkapsulowany do warstw niższych a następnie zostaje wysłany do kolejnego urządzenia (oczywiście pod warunkiem istnienia odpowiednich wpis&oacute;w w tablicy routingu).</p> <p>&nbsp;</p> <p>W naszych rozważaniach na temat list ACL posłużymy się topologią sieciową przedstawioną poniżej. Użyte interfejsy wraz z przypisanymi adresami IP oraz adresy sieci zostały przedstawiono r&oacute;wnież na rysunku poniżej.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image4.png" alt="image4" width="700" height="352" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Sieć jest zbieżna wszystkie użyte urządzenia mogą ze sobą nawiązać komunikację. Poniżej przedstawiono tablicę routingu wszystkich trzech router&oacute;w jak można stwierdzić wszystkie routery są w stanie przekazać pakiety do każdej z sieci. Za aktualizację tablic routingu dba protok&oacute;ł EIGRP.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image5.png" alt="image5" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Rozpoczynamy od pierwszego zadania a naszym celem będzie przy pomocy listy ACL zablokowanie ruchu sieciowego od hosta 10.0.1.10 (WindowsXP_1) do hosta 10.0.3.10 (WindowsXP_3). W przykładzie tym użyjemy standardową listę ACL.</p> <p>&nbsp;</p> <p>Zanim zaczniemy konfigurować listę ACL sprawdźmy czy hosty mogą ze sobą prowadzić komunikację. Test ping przeprowadzony z hosta o adresie IP 10.0.1.10 w kierunku hosta 10.0.3.10 kończy się sukcesem.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image6.png" alt="image6" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Naszym zadaniem jest uniemożliwienie komunikacji pomiędzy hostami WindowsXP_1 a WindowsXP_3 oczywiście przy założeniu, że możliwość komunikacji pomiędzy pozostałymi urządzeniami sieciowymi nie będzie zakł&oacute;cona.</p> <p>&nbsp;</p> <p>Pierwsze pytanie na kt&oacute;re musimy sobie odpowiedzieć - To na kt&oacute;rym z trzech ruter&oacute;w lista ACL ma zostać utworzona? Przyjmijmy, że routerem na kt&oacute;rym będzie konfigurowana lista ACL będzie router R1 czyli router najbliższy hostowi WindowsXP_1.</p> <p>&nbsp;</p> <p>Listę ACL tworzymy w trybie konfiguracji globalnej. Lista ACL zostaje utworzona za pomocą polecenia: <strong>access-list 5 deny host 10.0.1.10 </strong>Wydanie komendy spowoduje utworzenie standardowej listy ACL o numerze <strong>5</strong>. Użyta wartość przypisana jest do zakresu <strong>list standardowych</strong>. Użycie parametru: <strong>deny</strong> powoduje zabronienie na prowadzenie komunikacji przez <strong>hosta</strong> o adresie IP 10.0.1.10. Użycie opcji: <strong>host</strong> powoduje utworzenie reguły dla pojedynczego komputera.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image7.png" alt="image7" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po zatwierdzeniu polecenia, lista ACL zostaje utworzona. Stan wszystkich list ACL sprawdzimy po wydaniu komendy: <strong>show access-list </strong>Wydanie polecenia w formacie: <strong>show access-list &lt;numer_ACL&gt; </strong>spowoduje wyświetlenie ustawień określonej w poleceniu listy.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image8.png" alt="image8" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Lecz fakt utworzenia listy nie spowoduje, że będzie ona od razu stosowana. Aby lista mogła spełnić swoje zadanie należy, ją przypisać do interfejsu routera (w naszym scenariuszu jest to router R1). I tu kolejne pytanie - Kt&oacute;ry interfejs routera R1 wybrać? Decydujemy się na interfejs najbliższy hostowi czyli interfejs f0/0. Przypisanie listy realizujemy za pomocą komendy: <strong>ip access-group 5 in</strong>. Komendę tą wydajemy oczywiście w trybie konfiguracji interfejsu f0/0. Wydanie polecenia spowoduje przypisanie standardowej listy ACL o numerze 5 do interfejsu f0/0 routera R1. Lista ACL obowiązuje dla ruchu przychodzącego (użyty parametr: <strong>in</strong>).</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image9.png" alt="image9" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Fakt przypisania danej listy do interfejsu sprawdzimy wykorzystując komendę: <strong>show running-config</strong></p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image10.png" alt="image10" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Dodatkowo fakt użycia danej listy r&oacute;wnież skontrolujemy przy użyciu polecenia: <strong>show ip interface &lt;interfejs&gt;</strong> Jak widać poniżej nasza lista standardowa o numerze 5 jest przypisana do interfejsu f0/0 a jej działanie obejmuje ruch przychodzący.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image11.png" alt="image11" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Sprawdźmy zatem efekt przeprowadzonej konfiguracji i przeprowadźmy test komunikacji pomiędzy hostami WindowsXP_1 a WindowsXP_3. Jak widać test ping kończy się niepowodzeniem, uzyskaliśmy zamierzony efekt.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image12.png" alt="image12" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Fakt działania listy ACL możemy skontrolować wydając ponownie polecenie: <strong>show access-list</strong> Nasza lista została użyta 15 razy.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image13.png" alt="image13" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Zadanie zakładało możliwość prowadzenia komunikacji przez inne urządzenia, tak więc wykonajmy sprawdzenie z wykorzystaniem hosta Windows7. Wykonajmy test ping pomiędzy komputerami Windows7 a WindowsXP_3. Test ten kończy się niepowodzeniem a przecież nie o to nam chodziło.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image14.png" alt="image14" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>By odpowiedzieć sobie na pytanie - Dlaczego tak się stało? trzeba uzmysłowić sobie w jaki spos&oacute;b lista ACL jest zbudowana. Każda z list ACL ma wprowadzone przez administratora warunki określające spos&oacute;b filtrowania ruchu sieciowego. Warunki te są jawne, gdyż zostały utworzone przez administratora. W naszym przykładzie warunkiem jawnym jest wpis zabraniający ruch z hosta 10.0.1.10. Ale każda lista ACL opr&oacute;cz warunk&oacute;w jawnych posiada domyślne dołączany warunek niejawny: <strong>deny any</strong> (warunek ten nie jest uwzględniony podczas kontroli listy za pomocą polecenia: <strong>show access-lists</strong>). Warunek ten zabrania na ruch sieciowy każdemu. Listy ACL przetwarzanie warunk&oacute;w przeprowadzają od g&oacute;ry do pierwszego dopasowania i dlatego też hostowi Windows7 uniemożliwiono przeprowadzenie komunikacji. Dane zawarte w pakiecie wysłanym z komputera Windows7 nie zostały dopasowane do żadnego wpisu jawnego a więc zastosowany został ostatni nie jawny warunek: <strong>zabroń</strong></p> <p>&nbsp;</p> <p>W przypadku testu ping z hosta WindowsXP_1 komunikacja została zablokowana poprzez warunek jawny: <strong>deny host 10.0.1.10</strong> natomiast za brak komunikacji pomiędzy hostami Windows7 a WindowsXP_3 odpowiada warunek niejawny: <strong>deny any</strong></p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image15.png" alt="image15" width="700" height="341" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Co należy wykonać aby umożliwić komunikację pozostałym urządzeniom przypisanym do sieci 10.0.1.0/24? Poprawienie konfiguracji sprowadza się do wydania jednego, dodatkowego polecenia umożliwiającego na przeprowadzenie komunikacji. Tak więc wprowadźmy poprawkę.</p> <p>&nbsp;</p> <p>Aby inne hosty mogły nawiązać połączenie do już istniejącej listy ACL wprowadźmy dodatkowy warunek - warunek ten zezwoli na nawiązanie połączenia. Aby komputery uzyskały dostęp do hosta WindowXP_3 należy wydać polecenie: <strong>access-list 5 permit any</strong> - punkt 1.</p> <p>&nbsp;</p> <p>Wydanie komendy spowoduje dopisanie warunku: <strong>permit any</strong> (zezw&oacute;l wszystkim) do już istniejącej listy ACL 5 - punkt 2.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image16.png" alt="image16" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Sprawdźmy efekt wprowadzonej poprawki.</p> <p>&nbsp;</p> <p>W pierwszej kolejności test ping przeprowadzony z hosta WindowsXP_1 - test zakończony niepowodzeniem - ruch sieciowy został zablokowany poprzez warunek: <strong>deny host 10.0.1.10</strong></p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image17.png" alt="image17" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Test drugi przeprowadzony z hosta Windows7 - test zakończony powodzeniem - zastosowanie pierwszego wpisu: <strong>deny 10.0.1.10 </strong>do hosta Windows7 nie ma zastosowania ze względu na brak dopasowania (adres IP hosta Windows7 to 10.0.1.20). Zezwolenie na przeprowadzenie komunikacji zostaje udzielone dzięki warunkowi: <strong>permit any</strong>. Ponieważ lista ACL swe działanie przerywa po dokonaniu dopasowania dlatego też warunek niejawny: <strong>deny any</strong> nie jest brany pod uwagę.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image18.png" alt="image18" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Efekt działania listy ACL i budujących ją warunk&oacute;w jak już wiesz Czytelniku sprawdzimy dzięki poleceniu: <strong>show access-lists</strong></p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image19.png" alt="image19" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Wydaje się, że osiągnęliśmy zamierzony cel - Ale czy na pewno? Do tej pory wszystko działa jak należy. Host WindowsXP_1 nie ma możliwości komunikacji z komputerem WindowsXP_3, zaś inni pozostali tak. Ale podsieć 10.0.3.0/24 nie jest jedyną siecią w naszej topologii. Sprawdźmy zatem przebieg komunikacji z hostem WindowsXP_2, kt&oacute;ry należy do sieci 10.0.2.0/24. Sprawdzenia w pierwszej kolejności dokonamy z hosta Windows7. Test ping kończy się sukcesem. Jak na razie wszystko przebiega po naszej myśli.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image20.png" alt="image20" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Kolejny test przeprowadzimy z wykorzystaniem hosta WindowsXP_1. Pr&oacute;ba ta niestety jak widać na poniższym zrzucie kończy się niepowodzeniem a niestety nie o to nam chodziło.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image21.png" alt="image21" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Przeprowadzona konfiguracja nie dała nam rozwiązania postawionego przed nami zadania. Zablokowaliśmy komunikację hosta WindowsXP_1 z hostem WindowsXP_3 ale także z innymi urządzeniami poza siecią 10.0.1.0/24 a nie takie były założenia zadania.</p> <p>&nbsp;</p> <p>Tu Czytelniku przyznam się że specjalnie dobrałem taki wariant rozwiązania zadania i tak poprowadziłem nasze rozważania by pokazać na jakie błędy jesteśmy narażeni przy wdrażaniu mechanizmu ACL.</p> <p>&nbsp;</p> <p>Nasze zadanie od początku było skazane na porażkę, gdyż już w pierwszym kroku podjęta decyzja o umiejscowieniu listy ACL była decyzją błędną.</p> <p>&nbsp;</p> <p>Rozpoczynamy od początku (tym razem już poprawnie) i wracamy do ustawień początkowych. Aby powr&oacute;cić do ustawień startowych należy usunąć bieżącą konfigurację. Powr&oacute;t do ustawień początkowych rozpoczynamy od usunięcia listy ACL 5. Usunięcie listy przeprowadzimy za pomocą polecenia: <strong>no access-list &lt;numer_listy&gt;</strong></p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image22.png" alt="image22" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Aby zachować porządek w ustawieniach nie zapominamy o skasowaniu listy ACL na interfejsie f0/0. Przypisaną listę ACL 5 usuniemy za pomocą komendy: <strong>no ip access-group &lt;numer_listy&gt; &lt;kierunek&gt;</strong></p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image23.png" alt="image23" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Powr&oacute;ciliśmy do ustawień startowych.</p> <p>&nbsp;</p> <p>Zamierzone cele osiągniemy tylko wtedy gdy listę ACL umieścimy na routerze R3. I tu dochodzimy do jednej z ważniejszych zasad, kt&oacute;rą musimy przestrzegać<strong>: Listy standardowe umieszczamy najbliżej celu, kt&oacute;rego lista dotyczy</strong>. W naszym przypadku celem jest uniemożliwienie komunikacji hosta 10.0.1.10 z hostem 10.0.3.10. Najbliżej celu czyli komputera WindowsXP_3 znajduje się router R3. Tak więc lista ACL powinna zostać skonfigurowana na tym routerze.</p> <p>&nbsp;</p> <p>Warunki zapisane wewnątrz listy ACL będą tożsame z tymi zdefiniowanymi na routerze R1. Tym razem konfigurowana standardowa lista ACL przyjmie numer 7 (tak by nam się nie myliło).</p> <p>&nbsp;</p> <p>Rozpoczynamy od zablokowania komunikacji pomiędzy hostami WindowsXP_1 a WindowsXP_3 &ndash; warunek: <strong>deny host 10.0.1.10</strong> &ndash; punkt 1.</p> <p>&nbsp;</p> <p>Mając na uwadze istnienie niejawnego warunku: <strong>deny any</strong> poprzez wydanie polecenia: <strong>access-list 7 permit any</strong> zezwalamy na łączność pozostałym hostom &ndash; punkt 2.</p> <p>&nbsp;</p> <p>Punkt 3 jest sprawdzeniem poprawności warunk&oacute;w zawartych w tworzonej liście ACL.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image24.png" alt="image24" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Lista ACL o numerze 7 została utworzona. Aby lista mogła pełnić swoją rolę należy ją oczywiście przypisać do interfejsu routera R3. W grę wchodzą dwa interfejsy (gdyż w przyjętej topologii router R3 ma dwa aktywne interfejsy sieciowe) f0/0 oraz s0/1. Przy wyborze interfejsu kierujemy się znaną nam już zasadą &ndash; wybieramy ten, kt&oacute;ry znajduje się najbliżej celu. Tak więc po analizie topologii stwierdzamy, iż najbliżej celu znajduje się interfejs f0/0. Na interfejsie tym zostaje skonfigurowana lista ACL 7.</p> <p>&nbsp;</p> <p>Polecenie łączące interfejs z listą ACL wymaga od nas zdefiniowanie kierunku działania listy, ponowna analiza topologii sieci przekonuje nas iż kierunek działania listy musi zostać ustawiony na wyjście.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image25.png" alt="image25" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Lista ACL została skonfigurowana i przypisana do interfejsu. Sprawdźmy zatem jak będzie przebiegać komunikacja po zastosowaniu poprawek.</p> <p>&nbsp;</p> <p>Pierwszy test zostanie przeprowadzony z komputera WindowsXP_1. Test kończy się sukcesem &ndash; niemożliwa jest komunikacja z blokowanym przez listę ACL hostem WIndowsXP_3 przy zachowaniu możliwości nawiązania połączenia z innymi urządzeniami w naszej sieci (test ping pomiędzy WindowsXP_1 a WindowsXP_2 kończy się sukcesem).</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image26.png" alt="image26" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Test drugi to sprawdzenie komunikacji pomiędzy komputerem Windows7 a hostami WindowsXP_2 oraz WindowsXP_3. Test ten r&oacute;wnież kończy się powodzeniem.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image27.png" alt="image27" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Założenia zadania zostały spełnione. Komunikacja pomiędzy hostem WindowsXP_1 a WindowsXP_3 została zablokowana, lista ACL działa prawidłowo.</p> <p>&nbsp;</p> <p>W złożonej topologii sieciowej może istnieć wiele list ACL, kt&oacute;re mogą być umiejscowione na r&oacute;żnych urządzeniach. Dlatego warto w sobie wyrobić nawyk opisywania tworzonych list ACL.</p> <p>&nbsp;</p> <p>Aby dodać komentarz do listy ACL należy skorzystać z polecenia: <strong>access-list &lt;numer_listy&gt; remark &lt;komentarz&gt;</strong> Poniżej przykład dodania komentarza do utworzonej w poprzednim kroku listy ACL.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image28.png" alt="image28" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Komentarz do listy ACL możemy sprawdzić przeglądając konfigurację bieżącą routera. Opis listy ACL nie jest wyświetlany po wydaniu komendy: <strong>show access-list</strong></p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image29.png" alt="image29" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Dosyć częstą praktyką przy opisywaniu list ACL jest dodanie komentarza, kt&oacute;ry odsyła nas do pliku zewnętrznego a dopiero w tym pliku zawarty jest dokładny opis i przeznaczenie listy ACL. Metoda ta poniekąd zwiększa bezpieczeństwo naszej sieci gdyż w razie przejęcia przez atakującego kontroli nad routerem, poznanie sposobu działania naszej sieci nie przyjdzie mu tak łatwo. Komentarze do list ACL są bogatym źr&oacute;dłem wiedzy dla hakera.</p> <p>&nbsp;</p> <p>Podczas definicji list ACL użyteczną opcją może być zastosowanie parametru:<strong> log</strong> kt&oacute;ry powoduje wyświetlenie w konsoli komunikatu związanego z dopasowaniem. Oznacza to, że gdy wystąpi spełnienie warunku zdefiniowanego na liście ACL zostaniemy o tym poinformowani stosownym komunikatem.</p> <p>&nbsp;</p> <p>Logowanie informacji o zdarzeniu może nastąpić w:</p> <ul> <li style="padding-left: 60px;">linii poleceń konsoli,</li> <li style="padding-left: 60px;">wewnętrzny bufor,</li> <li style="padding-left: 60px;">serwer syslog.</li> </ul> <p>&nbsp;</p> <p>Informacje, kt&oacute;re podlegają rejestrowaniu to:</p> <ul> <li style="padding-left: 60px;">akcja &ndash; zezw&oacute;l (permit) lub zablokuj (deny),</li> <li style="padding-left: 60px;">użyty protok&oacute;ł - TCP, UDP lub ICMP,</li> <li style="padding-left: 60px;">adres źr&oacute;dłowy i docelowy,</li> <li style="padding-left: 60px;">w przypadku TCP oraz UDP &ndash; numer portu źr&oacute;dłowego i docelowego,</li> <li style="padding-left: 60px;">w przypadku ICMP &ndash; typy wiadomości.</li> </ul> <p>&nbsp;</p> <p>Aby włączyć logowanie informacji o wystąpieniu zdefiniowanego warunku listy ACL po definicji warunku dodajemy flagę: <strong>log</strong> &ndash; pozostajemy przy przykładzie w kt&oacute;rym blokujemy ruch z hosta 10.0.1.10</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image30.png" alt="image30" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Logowanie warunku zabraniającego na połączenie pomiędzy hostem 10.0.1.10 a siecią 10.0.3.0/24 zostało włączone.</p> <p>&nbsp;</p> <p>W przypadku wystąpienia zdarzenia zostaniemy o nim powiadomieni. Logi są generowane przy wystąpieniu zdarzenia (pierwszy pakiet, kt&oacute;ry spełnia warunek) a następnie w pięciominutowych odstępach po wystąpieniu zdarzenia.</p> <p>&nbsp;</p> <p>Poniżej na wskutek pr&oacute;by nawiązania połączenia z hostem 10.0.3.10 został wygenerowany komunikat o zaistniałym zdarzeniu &ndash; nastąpiło dopasowanie informacji zawartych w nagł&oacute;wku pakietu z warunkiem listy ACL, kt&oacute;ry podlega logowaniu.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image31.png" alt="image31" width="700" height="44" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Jeśli sprawdzamy poprawność działania zdefiniowanych list ACL warto posłużyć się komendą: <strong>show log</strong> Wydanie polecenie uwidoczni nam historię zdarzeń.</p> <p>&nbsp;</p> <p>Lecz zanim zaczniemy używać wspomnianego wyżej polecenia należy w konfiguracji globalnej urządzenia wydać polecenie: <strong>logging console informational</strong> Komenda ta spowoduje zapisanie informacji o zdarzeniu jakim jest wystąpienie dopasowania &ndash; brak wydania tego polecenia uniemożliwi sprawdzenie historii zdarzeń (informacja o zdarzeniu pojawi się w wierszu poleceń konsoli lecz fakt jej zaistnienia nie zostanie zapisany). Polecenie te związane jest z konfiguracją zapisu zdarzeń i dokładny opis sposobu działania komendy trochę wybiega poza tematykę tego wpisu (logowanie zdarzeń będzie tematem kolejnego artykułu i w nim użycie tego polecenia opiszę szerzej).</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image32.png" alt="image32" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>W przypadku spodziewania się dużej ilości wpis&oacute;w warto r&oacute;wnież pomyśleć o tym by nie zabrakło miejsca na ich zapisanie dlatego dobrze jest zwiększyć rozmiar bufora odpowiedzialnego za zapisywanie tych danych. Ilość dostępnego miejsca na zapis log&oacute;w zwiększymy za pomocą polecenia: <strong>logging buffered &lt;rozmiar_bajty&gt;</strong></p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image33.png" alt="image33" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po przeprowadzonej konfiguracji wydanie polecenia: <strong>show log</strong> spowoduje wypisanie zaistniałych zdarzeń wśr&oacute;d, kt&oacute;rych znajdziemy informację o zdarzeniach związanych z logowanymi warunkami list ACL.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image34.png" alt="image34" width="700" height="264" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Aby wykasować liczniki, korzystamy z polecenia: <strong>clear ip access-list counter &lt;numer_listy_ACL&gt;</strong> a w przypadku listy nazywanej: <strong>clear ip access-list counter &lt;nazwa_listy_ACL&gt;</strong></p> <p>&nbsp;</p> <p>Jest jeszcze jeden parametr kt&oacute;rego użycie zapewni nam dostarczenie większej ilości informacji na temat zaistniałych zdarzeń dotyczących list ACL. Aby uzyskane dane były bardziej szczeg&oacute;łowe zamiast flagi: <strong>log</strong> możemy użyć opcję: <strong>log-input</strong></p> <p>&nbsp;</p> <p>Poniżej przykład listy ACL, kt&oacute;ra zabrania tak jak poprzednio na komunikację pomiędzy hostem 10.0.1.10 a siecią 10.0.3.0 &ndash; w przykładzie tym użyto rozszerzoną listę ACL, kt&oacute;ra nie została jeszcze om&oacute;wiona. W ćwiczeniu tym przede wszystkim chodzi o pokazanie możliwości uzyskania informacji o sposobie działania list ACL tak więc wybacz Czytelniku iż wybiegam trochę na prz&oacute;d. Spowodowane to jest faktem iż opcja: <strong>log-input</strong> została zarezerwowana tylko dla list rozszerzonych. Nie martw się gdy poniższe zapisy będą dla Ciebie niezrozumiałe (na razie) gdyż na tą chwilę nie jest to tematem naszych rozważań (do list rozszerzonych przejdę już za chwilę). Do przykładu tego zachęcam wr&oacute;cić po dalszej lekturze wpisu.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image35.png" alt="image35" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po zdefiniowaniu listy ACL, lista oczywiście zostaje przypisana do interfejsu i zostaje ustalony kierunek jej działania (rozważania na tematy interfejsu i routera na kt&oacute;rym została utworzona lista ACL zostaw na p&oacute;źniej - w tym momencie nie ma to znaczenia).</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image36.png" alt="image36" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>W momencie gdy warunek listy ACL będzie miał zastosowanie zostaniemy o tym poinformowani. Poniżej przykład uzyskania informacji o nie udzieleniu dostępu do sieci 10.0.3.0/24 &ndash; host, kt&oacute;ry inicjował połączenie to komputer o adresie IP 10.0.1.10 Por&oacute;wnując dane uzyskane dzięki zastosowaniu opcji: <strong>log-input</strong> z tymi otrzymanymi dzięki opcji: <strong>log</strong> na pierwszy rzut oka widać, iż są to informacje bardziej szczeg&oacute;łowe (w logach m.in. znajdziemy dane o adresie MAC a w przypadku użycia protokoł&oacute;w TCP bądź UDP r&oacute;wnież będzie zawarta informacja o portach).</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image37.png" alt="image37" width="700" height="28" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Efekty działania listy ACL możemy r&oacute;wnież sprawdzić za pomocą procesu debugowania. Aby uruchomić proces dotyczący danej listy ACL należy wydać polecenie: <strong>debug ip packet &lt;numer_listy_ACL&gt; detail</strong></p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image38.png" alt="image38" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po uruchomieniu procesu możemy obserwować efekt podejmowanych decyzji jakie podejmuje router względem otrzymanych pakiet&oacute;w a odnoszących się do wywołanej listy ACL.</p> <p>&nbsp;</p> <p>Poniżej przykład w kt&oacute;rym host o adresie 10.0.1.10 przeprowadza test względem hosta 10.0.3.10. Ponieważ komunikacja dzięki zastosowaniu listy ACL dla hosta 10.0.1.10 została zablokowana tak więc router odsyła informację ICMP typ 3 - Destination Unreachable</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image39.png" alt="image39" width="700" height="167" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Podczas tworzenia wpis&oacute;w list ACL na pewno nie raz przydarzy nam się sytuacja w kt&oacute;rej popełnimy błąd &ndash; Jak sobie z tym problemem poradzić? Proponuję trzy rozwiązania. Pierwsze z nich opiera się na bezpośredniej edycji listy ACL drugie na skopiowaniu ustawień listy ACL, poprawieniu błęd&oacute;w, wykasowaniu błędnie skonfigurowanej listy ACL i wprowadzeniu nowych ustawień, trzecie zaś na użyciu narzędzia CCP(Cisco Configuration Professional)</p> <p>&nbsp;</p> <p>Prześledźmy zatem zaproponowane rozwiązania na tym przykładzie, rozpoczniemy od edycji listy ACL.</p> <p>&nbsp;</p> <p>Poniżej na zrzucie została przedstawiona używana przez nas lista ACL 7, lecz jak można zauważyć w liście tej został błędnie skonfigurowany adres IP hosta &ndash; zamiast adresu 10.0.10.10 powinien być 10.0.1.10</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image40.png" alt="image40" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Aby m&oacute;c poprawić błędny wpis należy przejść do trybu konfiguracji globalnej urządzenia i wydać polecenie: <strong>ip access-list {standard | extended} &lt;numer_listy&gt;</strong> - punkt 1 (w naszym przypadku mamy do czynienia z standardową listą ACL tak więc używamy argumentu: <strong>standard</strong> w przypadku listy rozszerzonej należy użyć flagi: <strong>extended</strong>).</p> <p>&nbsp;</p> <p>Po zatwierdzeniu komendy przejdziemy do trybu konfiguracji listy ACL (zapis: config-std-nacl). Błędny wpis adresu IP został powiązany z numerem sekwencyjnym listy, wartość tego numeru wynosi 10. Aby wpis usunąć należy wydać polecenie: <strong>no &lt;numer_sekwencyjny&gt;</strong> - punkt 2.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image41.png" alt="image41" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Błędny wpis został usunięty, fakt wykonania operacji możemy sprawdzić wyświetlając ustawienia listy ACL.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image42.png" alt="image42" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po usunięciu wpisu należy wprowadzić nowy. Polecenie nakazujące dodanie nowego wpisu oczywiście wydajemy w trybie konfiguracji danej listy ACL. A wpis dodamy za pomocą polecenia: &lt;<strong>numer_sekwencyjny&gt; &lt;parametry_listy_ACL&gt;</strong> w naszym przypadku komenda przyjęła postać: <strong>10 deny host 10.0.1.10</strong></p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image43.png" alt="image43" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po wprowadzeniu zmian, sprawdzamy fakt ich wykonania. Jak widać poniżej lista ACL została poprawiona.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image44.png" alt="image44" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Domyślne po zdefiniowaniu warunku listy ACL trafia on na koniec listy. Bez numer&oacute;w sekwencyjnych, jedyną opcją dodania wpisu pomiędzy dwa już istniejące, było skasowanie ACL i zdefiniowanie jej od nowa. Sytuacja ta powtarzała się r&oacute;wnież w przypadku gdy chcieliśmy wykasować warunek.</p> <p>&nbsp;</p> <p>Numery sekwencyjne dają nam możliwość edycji interesującego nas wpisu a także na dodanie nowego w dowolne miejsce listy ACL. Możliwe jest to dzięki przyjętemu numerowaniu kolejnych wpis&oacute;w tworzących daną listę ACL. Domyślnie, numery sekwencyjne rozpoczynają się od wartości 10 a kolejny wpis powiększa tą wartość o 10.</p> <p>&nbsp;</p> <p>Do bezpośredniej edycji listy ACL możemy podejść trochę inaczej a mianowicie dodać poprawny wpis. W naszym przypadku użyty numer sekwencyjny musi być niższy od następnego czyli od 20. Dodanie wpisu o numerze sekwencyjnym wyższym niż 20 spowoduje dopisanie warunku powyżej tego numeru a co za tym idzie wpis ten nigdy nie będzie miał zastosowania gdyż znajdzie się on za wpisem zezwalającym na ruch sieciowy wszystkim (20 permit any). Pamiętaj, że listy ACL są przetwarzane od g&oacute;ry do pierwszego dopasowania. W scenariuszu padło na wartość 15 (15 jest mniejsze od 20 tak więc nowo dodany wpis znajdzie się przed warunkiem z numerem sekwencyjnym r&oacute;wnym 20) &ndash; punkt 1. Po wprowadzeniu nowego warunku pamiętamy o wykasowaniu tego błędnie zdefiniowanego &ndash; punkt 2. Po całości wykonanych zmian ostatnią czynnością jest ich sprawdzenie &ndash; punkt 3 &ndash; Wszystko się zgadza (dla przypomnienia dodanie do polecenia parametru: <strong>do </strong>nakazuje wykonanie polecenia dostępnego w trybie konfiguracji poziomu wyżej &ndash; zauważ, że polecenie zostało wydane w trybie konfiguracji globalnej zaś komenda: <strong>show access-list</strong> powinna zostać wydana w trybie uprzywilejowanym).</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image45.png" alt="image45" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Przechodzimy zatem do drugiego ze sposob&oacute;w.</p> <p>&nbsp;</p> <p>W pierwszej kolejności rozpoczynamy od wyświetlenia ustawień listy ACL. Wpisy budujące listę ACL możemy wyświetlić przy wykorzystaniu polecenia zaprezentowanego na zrzucie poniżej (pełna składnia polecenia: <strong>show running-config | include access-list 7</strong> &ndash; wyświetl ustawienia listy ACL 7 zawarte w konfiguracji bieżącej urządzenia &ndash; parametr: <strong>include</strong> odpowiada za wyświetlenie tylko tych wierszy zawierających zdefiniowaną po nim wartość).</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image46.png" alt="image46" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Wyświetloną konfigurację po zaznaczeniu kopiujemy klawiszem Enter (do zestawienia sesji z routerem zostało użyte narzędzie PuTTY) a następnie wklejamy w dowolnym edytorze tekstowym i nanosimy niezbędne poprawki.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image47.png" alt="image47" width="700" height="325" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po dokonaniu korekty ustawień i skopiowaniu ich do schowka po wciśnięciu PPM zawartość schowka zostaje wklejona do narzędzia PuTTY. Przy wklejaniu poleceń należy zwr&oacute;cić uwagę by znajdować się w odpowiednim trybie konfiguracji routera (w przypadku list ACL jest to tryb konfiguracji globalnej). Przed skopiowaniem ustawień należy pamiętać o usunięciu błędnie zdefiniowanej listy ACL.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image48.png" alt="image48" width="700" height="325" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Taki spos&oacute;b wprowadzania ustawień można wykorzystać nie tylko przy tworzeniu/edytowaniu list ACL ale r&oacute;wnież do konfiguracji wszystkich poleceń routera/przełącznika. Przypuśćmy, że mamy skonfigurowany router i dodajemy drugi, kt&oacute;rego ustawienia nieznacznie się r&oacute;żnią od pierwszego. Możemy konfigurację oczywiście przeprowadzić ręcznie poprzez wprowadzenie wszystkich poleceń ale r&oacute;wnież poprzez skopiowanie całej konfiguracji bieżącej routera pierwszego, naniesieniu niezbędnych poprawek i wklejeniu ustawień do routera drugiego.</p> <p>&nbsp;</p> <p>Ostatni spos&oacute;b opiera się na użyciu narzędzia CCP. Narzędzie te umożliwia nam przeprowadzenie konfiguracji urządzeń sieciowych firmy CISCO z wykorzystaniem graficznego interfejsu użytkownika. Użycie aplikacji opiera się na przeglądarce Internet Explorer (najlepiej działa z tą przeglądarką) wraz z zainstalowanym oprogramowaniem Flash i Java (bez instalacji tych komponent&oacute;w nie będzie można uruchomić CCP).</p> <p>&nbsp;</p> <p>O ile jestem zwolennikiem jednak korzystania z CLI to o tyle w przypadku edycji bądź definicji nowych list ACL narzędzie CCP świetnie się sprawdza gdyż w prosty i szybki spos&oacute;b umożliwia nam na wykonanie zadań związanych z listami ACL (przebiega to po prostu bardziej sprawnie, szczeg&oacute;lnie gdy musimy zarządzać złożonymi listami ACL bądź ich dużym zbiorem).</p> <p>&nbsp;</p> <p>Po uruchomieniu programu i połączeniu się z routerem (jak skonfigurować router aby wsp&oacute;łpracował z CCP opisałem tu: <a href="http://slow7.pl/index.php/sieci-komputerowe/item/36-dostep-zdalny-oraz-prawa-uzytkownika-w-urzadzeniach-cisco">Dostęp zdalny oraz prawa użytkownika w urządzeniach CISCO</a>). Przechodzimy do gałęzi: <strong>ACL/ACL Editor</strong> Po wybraniu jej z prawej strony ukaże się nam zbi&oacute;r list ACL. Jak widać lista ACL 7 zawiera zdefiniowany przez nas na potrzeby ćwiczenia błąd. Aby rozpocząć edycję listy ACL należy ją zaznaczyć i wybrać przycisk: <strong>Edit</strong></p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image49.png" alt="image49" width="700" height="524" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po wybraniu opcji edytowania listy w nowo otwartym oknie <strong>Edit a Rule</strong> wybieramy wpis, kt&oacute;ry ma podlegać modyfikacji i ponownie wybieramy <strong>Edit</strong> (punkt 1).</p> <p>&nbsp;</p> <p>W kolejnym oknie nanosimy niezbędne poprawki i zatwierdzamy je przyciskiem <strong>OK </strong>(dwa razy) &ndash; punkt 2.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image50.png" alt="image50" width="700" height="524" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po zatwierdzeniu zmian zostanie wyświetlone okno: <strong>Deliver Configuration to Device</strong> odpowiedzialne za wysłanie odpowiednich poleceń do konfigurowanego urządzenia. Na tym etapie możemy podejrzeć jakie polecenia będą na zdalnym urządzeniu wydane. Zaznaczenie &bdquo;ptaszka&rdquo; przy opcji <strong>Save running config. to device&rsquo;s startup config.</strong> spowoduje automatyczne zapisanie ustawień bieżących urządzenia jako konfigurację startową. Aby zastosować zmiany w konfiguracji wybieramy <strong>Deliver</strong></p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image51.png" alt="image51" width="700" height="524" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Odpowiednie ustawienia zostały wprowadzone do konfiguracji urządzenia. Stan ustawień listy ACL sprawdzimy wybierając ponownie daną listę ACL.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image52.png" alt="image52" width="700" height="524" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Myślę, że om&oacute;wione sposoby edycji list ACL są wystarczające a tylko od Ciebie zależy, kt&oacute;rą z nich użyjesz.</p> <p>&nbsp;</p> <p>Pytanie na koniec tego zadania, jakie możemy sobie zadać brzmi &ndash; Czy zastosowana lista ACL pomimo spełnienia założeń ćwiczenia, ze względu na wydajność sieci jest zasadna?</p> <p>&nbsp;</p> <p>Dociekliwy Czytelnik szybko dojdzie do wniosku, że przy użyciu tak skonfigurowanej standardowej listy ACL marnotrawione jest pasmo oraz użycie procesor&oacute;w router&oacute;w. Sp&oacute;jrzmy jeszcze raz na naszą topologię z zaznaczoną drogą pakiet&oacute;w i spr&oacute;bujmy uzasadnić powyższe stwierdzenie.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image53.png" alt="image53" width="700" height="349" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Jak widać stwierdzenie jest zasadne gdyż &ndash; pakiet opuszczający hosta WindowsXP_1 a podr&oacute;żujący w kierunku komputera WindowsXP_3, wędruje przez całą sieć (jest przekazywany przez kolejne routery) by i tak na końcu swojej drogi zostać zablokowany przez skonfigurowaną listę ACL. Tu na tym przykładzie widać jak na dłoni iż stosowanie standardowych list ACL (przy założeniach tego ćwiczenia) jest mało efektywne.</p> <p>&nbsp;</p> <p>Tak więc jak najbardziej na miejscu jest pytanie &ndash; Co z tym fantem możemy zrobić i czy jest jakiś bardziej efektywny spos&oacute;b osiągnięcia naszego celu? Rozwiązaniem będzie zastosowanie rozszerzonej listy ACL.</p> <p>&nbsp;</p> <p>Og&oacute;lna składnia definicji rozszerzonej listy ACL wygląda następująco: <strong>access-list &lt;nr_listy&gt; {permit | deny} &lt;protok&oacute;ł&gt; &lt;definicja_punktu_źr&oacute;dłowego&gt; &lt;definicja_punktu_docelowego&gt;</strong></p> <p>&nbsp;</p> <p>Rozszerzone listy ACL umożliwiają nam prowadzenie większego zakresu kontroli ponieważ nasz warunek możemy zbudować m.in. w oparciu o źr&oacute;dłowy i docelowy adres IP pakiet&oacute;w a dodatkowo pozwalają r&oacute;wnież na określenie protokoł&oacute;w i numer&oacute;w port&oacute;w co do kt&oacute;rych lista ACL będzie miała zastosowanie. Tak więc nasze definicje blokujące bądź przepuszczające ruch sieciowy są określane na podstawie adres&oacute;w nadawcy i odbiorcy pakietu, typu protokołu oraz portu.</p> <p>&nbsp;</p> <p>Zakres użytych parametr&oacute;w definiujemy sami według potrzeby i uznania oznacza to, że lista ACL może zawierać instrukcje odwołujące się tylko do adres&oacute;w IP (wraz z użytym protokołem) a gdy jest potrzeba zawężenia listy możemy dodać dodatkowe parametry odwołujące się do np. numer&oacute;w port&oacute;w. Pojedyncza rozszerzona lista ACL może konfigurować wiele instrukcji.</p> <p>&nbsp;</p> <p>Numery list rozszerzonych ACL są zawarte w zakresie od 100 do 199 a także od 2000 do 2699 (dla protokołu IP).</p> <p>&nbsp;</p> <p>Prześledźmy zatem spos&oacute;b konfiguracji takiej listy.</p> <p>&nbsp;</p> <p>Tak jak w przypadku listy standardowej rozpoczynamy od wydania w trybie konfiguracji globalnej polecenia: <strong>access-list</strong> po kt&oacute;rym to określamy <strong>numer listy</strong> a także warunek <strong>przepuszczający</strong> bądź <strong>odrzucający</strong> pakiet. Nasza lista może więc przyjąć postać:</p> <p><strong>R1(config)#access-list 111 deny ...</strong></p> <p>&nbsp;</p> <p>bądź</p> <p><strong>R1(config)#access-list 111 permit ...</strong></p> <p>&nbsp;</p> <p>W kolejnym kroku ustalamy rodzaj protokołu, dla kt&oacute;rego będzie realizowane dopasowanie:</p> <p><strong>R1(config)#access-list 111 deny &lt;protok&oacute;ł&gt; ...</strong></p> <p><strong>R1(config)#access-list 111 permit &lt;protok&oacute;ł&gt; ...</strong></p> <p>&nbsp;</p> <p>Protok&oacute;ł określamy poprzez definicję jego nazwy lub poprzez podanie numeru. Poniżej na rysunku zostały przedstawione nazwy najczęściej używanych protokoł&oacute;w.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image54.png" alt="image54" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Lista dostępnych numer&oacute;w wraz z przypisanym do numeru protokołem została zamieszczona w tabeli poniżej (źr&oacute;dło: <a href="http://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml">http://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml</a>).</p> <p>&nbsp;</p> <table border="1" style="border-collapse: collapse;" cellspacing="0" cellpadding="0"> <tbody> <tr style="height: 18.75pt;"> <td style="width: 54pt; border: 1pt solid windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" nowrap="nowrap" width="72"><strong>Decimal</strong></td> <td style="width: 101pt; border-width: 1pt 1pt 1pt medium; border-style: solid solid solid none; border-color: windowtext windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" nowrap="nowrap" width="135"><strong>Keyword</strong></td> <td style="width: 227pt; border-width: 1pt 1pt 1pt medium; border-style: solid solid solid none; border-color: windowtext windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" nowrap="nowrap" width="303"><strong>Protocol</strong></td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">0</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">HOPOPT</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">IPv6 Hop-by-Hop Option</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">1</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">ICMP</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Internet Control Message</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">2</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">IGMP</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Internet Group Management</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">3</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">GGP</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Gateway-to-Gateway</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">4</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">IPv4</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">IPv4 encapsulation</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">5</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">ST</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Stream</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">6</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">TCP</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Transmission Control</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">7</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">CBT</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">CBT</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">8</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">EGP</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Exterior Gateway Protocol</td> </tr> <tr style="height: 33.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 33.75pt;" valign="top" width="72">9</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 33.75pt;" valign="top" width="135">IGP</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 33.75pt;" valign="top" width="303">any private interior gateway (used by Cisco for their IGRP)</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">10</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">BBN-RCC-MON</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">BBN RCC Monitoring</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">11</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">NVP-II</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Network Voice Protocol</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">12</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">PUP</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">PUP</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">13</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">ARGUS (deprecated)</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">ARGUS</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">14</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">EMCON</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">EMCON</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">15</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">XNET</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Cross Net Debugger</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">16</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">CHAOS</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Chaos</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">17</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">UDP</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">User Datagram</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">18</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">MUX</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Multiplexing</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">19</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">DCN-MEAS</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">DCN Measurement Subsystems</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">20</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">HMP</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Host Monitoring</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">21</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">PRM</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Packet Radio Measurement</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">22</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">XNS-IDP</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">XEROX NS IDP</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">23</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">TRUNK-1</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Trunk-1</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">24</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">TRUNK-2</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Trunk-2</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">25</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">LEAF-1</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Leaf-1</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">26</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">LEAF-2</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Leaf-2</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">27</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">RDP</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Reliable Data Protocol</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">28</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">IRTP</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Internet Reliable Transaction</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">29</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">ISO-TP4</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">ISO Transport Protocol Class 4</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">30</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">NETBLT</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Bulk Data Transfer Protocol</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">31</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">MFE-NSP</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">MFE Network Services Protocol</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">32</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">MERIT-INP</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">MERIT Internodal Protocol</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">33</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">DCCP</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Datagram Congestion Control Protocol</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">34</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">3PC</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Third Party Connect Protocol</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">35</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">IDPR</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Inter-Domain Policy Routing Protocol</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">36</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">XTP</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">XTP</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">37</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">DDP</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Datagram Delivery Protocol</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">38</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">IDPR-CMTP</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">IDPR Control Message Transport Proto</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">39</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">TP++</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">TP++ Transport Protocol</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">40</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">IL</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">IL Transport Protocol</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">41</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">IPv6</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">IPv6 encapsulation</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">42</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">SDRP</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Source Demand Routing Protocol</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">43</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">IPv6-Route</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Routing Header for IPv6</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">44</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">IPv6-Frag</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Fragment Header for IPv6</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">45</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">IDRP</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Inter-Domain Routing Protocol</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">46</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">RSVP</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Reservation Protocol</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">47</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">GRE</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Generic Routing Encapsulation</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">48</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">DSR</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Dynamic Source Routing Protocol</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">49</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">BNA</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">BNA</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">50</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">ESP</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Encap Security Payload</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">51</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">AH</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Authentication Header</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">52</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">I-NLSP</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Integrated Net Layer Security TUBA</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">53</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">SWIPE (deprecated)</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">IP with Encryption</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">54</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">NARP</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">NBMA Address Resolution Protocol</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">55</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">MOBILE</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">IP Mobility</td> </tr> <tr style="height: 31.5pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 31.5pt;" valign="top" width="72">56</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 31.5pt;" valign="top" width="135">TLSP</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 31.5pt;" valign="top" width="303">Transport Layer Security Protocol using Kryptonet key management</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">57</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">SKIP</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">SKIP</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">58</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">IPv6-ICMP</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">ICMP for IPv6</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">59</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">IPv6-NoNxt</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">No Next Header for IPv6</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">60</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">IPv6-Opts</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Destination Options for IPv6</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">61</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">&nbsp;</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">any host internal protocol</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">62</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">CFTP</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">CFTP</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">63</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">&nbsp;</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">any local network</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">64</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">SAT-EXPAK</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">SATNET and Backroom EXPAK</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">65</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">KRYPTOLAN</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Kryptolan</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">66</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">RVD</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">MIT Remote Virtual Disk Protocol</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">67</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">IPPC</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Internet Pluribus Packet Core</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">68</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">&nbsp;</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">any distributed file system</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">69</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">SAT-MON</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">SATNET Monitoring</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">70</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">VISA</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">VISA Protocol</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">71</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">IPCV</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Internet Packet Core Utility</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">72</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">CPNX</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Computer Protocol Network Executive</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">73</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">CPHB</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Computer Protocol Heart Beat</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">74</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">WSN</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Wang Span Network</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">75</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">PVP</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Packet Video Protocol</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">76</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">BR-SAT-MON</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Backroom SATNET Monitoring</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">77</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">SUN-ND</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">SUN ND PROTOCOL-Temporary</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">78</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">WB-MON</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">WIDEBAND Monitoring</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">79</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">WB-EXPAK</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">WIDEBAND EXPAK</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">80</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">ISO-IP</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">ISO Internet Protocol</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">81</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">VMTP</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">VMTP</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">82</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">SECURE-VMTP</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">SECURE-VMTP</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">83</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">VINES</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">VINES</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">84</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">TTP</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Transaction Transport Protocol</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">84</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">IPTM</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Internet Protocol Traffic Manager</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">85</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">NSFNET-IGP</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">NSFNET-IGP</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">86</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">DGP</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Dissimilar Gateway Protocol</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">87</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">TCF</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">TCF</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">88</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">EIGRP</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">EIGRP</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">89</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">OSPFIGP</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">OSPFIGP</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">90</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">Sprite-RPC</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Sprite RPC Protocol</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">91</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">LARP</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Locus Address Resolution Protocol</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">92</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">MTP</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Multicast Transport Protocol</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">93</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">AX.25</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">AX.25 Frames</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">94</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">IPIP</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">IP-within-IP Encapsulation Protocol</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">95</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">MICP (deprecated)</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Mobile Internetworking Control Pro.</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">96</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">SCC-SP</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Semaphore Communications Sec. Pro.</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">97</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">ETHERIP</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Ethernet-within-IP Encapsulation</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">98</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">ENCAP</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Encapsulation Header</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">99</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">&nbsp;</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">any private encryption scheme</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">100</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">GMTP</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">GMTP</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">101</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">IFMP</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Ipsilon Flow Management Protocol</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">102</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">PNNI</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">PNNI over IP</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">103</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">PIM</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Protocol Independent Multicast</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">104</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">ARIS</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">ARIS</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">105</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">SCPS</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">SCPS</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">106</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">QNX</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">QNX</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">107</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">A/N</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Active Networks</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">108</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">IPComp</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">IP Payload Compression Protocol</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">109</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">SNP</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Sitara Networks Protocol</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">110</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">Compaq-Peer</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Compaq Peer Protocol</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">111</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">IPX-in-IP</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">IPX in IP</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">112</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">VRRP</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Virtual Router Redundancy Protocol</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">113</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">PGM</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">PGM Reliable Transport Protocol</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">114</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">&nbsp;</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">any 0-hop protocol</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">115</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">L2TP</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Layer Two Tunneling Protocol</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">116</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">DDX</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">D-II Data Exchange (DDX)</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">117</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">IATP</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Interactive Agent Transfer Protocol</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">118</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">STP</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Schedule Transfer Protocol</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">119</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">SRP</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">SpectraLink Radio Protocol</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">120</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">UTI</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">UTI</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">121</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">SMP</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Simple Message Protocol</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">122</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">SM (deprecated)</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Simple Multicast Protocol</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">123</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">PTP</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Performance Transparency Protocol</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">124</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">ISIS over IPv4</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">&nbsp;</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">125</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">FIRE</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">&nbsp;</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">126</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">CRTP</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Combat Radio Transport Protocol</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">127</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">CRUDP</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Combat Radio User Datagram</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">128</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">SSCOPMCE</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">&nbsp;</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">129</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">IPLT</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">&nbsp;</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">130</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">SPS</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Secure Packet Shield</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">131</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">PIPE</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Private IP Encapsulation within IP</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">132</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">SCTP</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Stream Control Transmission Protocol</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">133</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">FC</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Fibre Channel</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">134</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">RSVP-E2E-IGNORE</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">&nbsp;</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">135</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">Mobility Header</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">&nbsp;</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">136</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">UDPLite</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">&nbsp;</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">137</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">MPLS-in-IP</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">&nbsp;</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">138</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">manet</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">MANET Protocols</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">139</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">HIP</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Host Identity Protocol</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">140</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">Shim6</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Shim6 Protocol</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">141</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">WESP</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Wrapped Encapsulating Security Payload</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">142</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">ROHC</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Robust Header Compression</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">143-252</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">&nbsp;</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Unassigned</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">253</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">&nbsp;</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Use for experimentation and testing</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">254</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">&nbsp;</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303"> <p>Use for experimentation and testing</p> <p>&nbsp;</p> </td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">255</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">Reserved</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">&nbsp;</td> </tr> </tbody> </table> <p>Następnie podawany jest adres nadawcy z maską blankietową, a po nim &mdash; adres odbiorcy (r&oacute;wnież z maską blankietową). C&oacute;ż takiego jest ta maska blankietowa? W tym momencie wybacz Czytelniku jeszcze tego tematu nie rozwinę ale powr&oacute;cimy do niego dosłownie za chwilę &ndash; opisu szukaj kilka wierszy poniżej.</p> <p><strong>R1(config)#access-list 111 deny &lt;protok&oacute;ł&gt; &lt;adres_nadawcy&gt; &lt;adres_odbiorcy&gt; </strong></p> <p><strong>R1(config)#access-list 111 permit &lt;protok&oacute;ł&gt; &lt;adres_nadawcy&gt; &lt;adres_odbiorcy&gt; </strong></p> <p>&nbsp;</p> <p>Uzbrojeni w tą wiedzę spr&oacute;bujmy zatem zdefiniować rozszerzoną listę ACL, kt&oacute;ra zablokuje nam ruch sieciowy pochodzący od hosta 10.0.1.10 a wysyłany w kierunku hosta 10.0.3.10</p> <p>Lista ACL przyjmie zatem postać:</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image55.png" alt="image55" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p style="margin-left: 30px;"><strong>Punkt 1</strong> &ndash; numer listy został określony jako <strong>111</strong> czyli mamy do czynienia z <strong>listą rozszerzoną</strong>, chcemy zablokować ruch sieciowy a więc musimy użyć parametru: <strong>deny</strong>, blokowanym protokołem jest <strong>protok&oacute;ł IP</strong>, adres nadawcy został określony poprzez definicję: <strong>host 10.0.1.10</strong> gdyż to pakiety wysłane od tego hosta mają być blokowane, aby zaś host m&oacute;gł nawiązać połączenie z innymi komputerami wewnątrz sieci 10.0.3.0/24 opr&oacute;cz hosta 10.0.3.10 poprzez definicję: <strong>host 10.0.3.10</strong> został określony adres docelowy.</p> <p style="margin-left: 30px;"><strong>Punkt 2</strong> &ndash; instrukcja zezwalająca (parametr: <strong>permit</strong>) na ruch sieciowy pozostałym hostom (parametr: <strong>any any</strong> &ndash; czytaj z dowolnego adresu źr&oacute;dłowego do dowolnego adresu docelowego). Gdyby tej instrukcji zabrakło inne komputery będące przypisane do sieci 10.0.1.0/24 nie mogłyby nawiązać połączenia gdyż zadział by domyślny warunek: <strong>deny any</strong></p> <p>&nbsp;</p> <p>Lista ACL rozszerzona została utworzona, czas ją przypisać do interfejsu routera i tu rodzi się kolejne pytanie &ndash; Kt&oacute;ry router i interfejs wybrać? W przypadku list rozszerzonych zasada ich umiejscowienia brzmi następująco &ndash; <strong>Listy ACL rozszerzone umieszczamy najbliżej źr&oacute;dła</strong>. Mamy tu do czynienia z sytuacją odwrotną niż w przypadku list ACL standardowych. Zasadę tą ilustruje rysunek poniżej &ndash; blokowany pakiet nie musi przejść całej drogi do celu by i tak ostatecznie zostać zablokowanym (sytuacja występuje w przypadku list ACL standardowych) lecz jest odrzucany przy pierwszej nadarzającej się okazji.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image56.png" alt="image56" width="700" height="349" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Tak więc naszą listę ACL należy umieścić najbliżej źr&oacute;dła czyli jest to interfejs f0/0 routera R1. Pakiet trafia do routera tak więc kierunek działania listy musi być ustalony na: <strong>in</strong> Przypisanie rozszerzonej listy ACL następuje w ten sam spos&oacute;b jak listy standardowej.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image57.png" alt="image57" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Rozszerzona lista ACL została skonfigurowana. Czas by sprawdzić efekt przeprowadzonej konfiguracji. Pierwszy test zostanie przeprowadzony z hosta 10.0.1.10 &ndash; test zakończony powodzeniem, ruch sieciowy został zablokowany.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image58.png" alt="image58" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Test drugi &ndash; tym razem pakiet ping zostanie wysłany z hosta 10.0.1.20. Jak widać poniżej pr&oacute;ba komunikacji zakończyła się sukcesem. Lista ACL działa poprawnie.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image59.png" alt="image59" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Informacje o zdefiniowanej, rozszerzonej liście ACL uzyskamy dzięki poleceniom:</p> <p style="margin-left: 30px;">1 - <strong>show access-lists,</strong></p> <p style="margin-left: 30px;">2 - <strong>show running-config,</strong></p> <p style="margin-left: 30px;">3 - <strong>show ip interface &lt;interfejs&gt;</strong></p> <p><img src="http://slow7.pl/images/stories/siec/acl/image60.png" alt="image60" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Zadanie pierwsze wraz z informacjami dodatkowymi uważam za zakończone, idziemy dalej.</p> <p>&nbsp;</p> <p>Przykład drugi polega na zablokowaniu ruchu całej sieci 10.0.1.0/24 do sieci 10.0.3.0/24. Zadanie te wykonamy przy pomocy listy ACL standardowej jak i rozszerzonej.</p> <p>&nbsp;</p> <p>Rozpoczynamy od użycia listy ACL standardowej.</p> <p>&nbsp;</p> <p>Teoretycznie można by było do tego zadania wykorzystać listę ACL w kt&oacute;rej zdefiniowalibyśmy wiele warunk&oacute;w z kt&oacute;rych każdy miałby za zadanie zablokować ruch sieciowy pochodzący od jednego z hosta. W sieci 10.0.1.0/24 do wykorzystania jest 254 unikatowych adres&oacute;w IP, kt&oacute;re mogą zostać przypisane hostom (adresy od 10.0.1.1 do 10.0.1.254 - istnieją jeszcze dwa adresy IP ale jeden z nich 10.0.0.0 jest adresem sieci natomiast 10.0.0.255 obsługuje broadcast). Nasza lista ACL musiałaby by więc zawierać aż 254 wpis&oacute;w, kt&oacute;rych zadaniem byłoby zablokowanie całego ruchu pochodzącego od strony sieci 10.0.1.0/24 W przypadku standardowej listy ACL miałaby ona postać:</p> <p>&nbsp;</p> <p>deny host 10.0.1.1<br /> deny host 10.0.1.2<br /> deny host 10.0.1.3<br /> .<br /> .<br /> .</p> <p>deny host 10.0.1.254</p> <p>&nbsp;</p> <p>Jak można wywnioskować lista zbudowana w ten spos&oacute;b jest nader skomplikowana a przy jej tworzeniu łatwo o błąd a dodatkowo im więcej warunk&oacute;w zawiera lista ACL tym bardziej obciążamy router. Tak więc musi istnieć jakiś inny spos&oacute;b, kt&oacute;ry pozwoli nam na definicję listy i wykonanie zadania. Oczywiście i takowy istnieje. Definicja list ACL tego typu sprowadza się do wykorzystania tzw. <strong>wildcard mask</strong> (w literaturze maska ta definiowana jest jako maska wieloznaczna, maska odwr&oacute;cona bądź maska blankietowa zaś potocznie administratorzy często określają ją jako &bdquo;dziką&rdquo; maskę).</p> <p>&nbsp;</p> <p>W masce standardowej (masce podsieci) bit 1 wymusza dopasowanie zaś bit 0 oznacza brak dopasowania w przypadku wildcard mask sytuacja zaś ma się odwrotnie:</p> <p style="margin-left: 30px;"><strong>bit 0 wildcard mask</strong> - wykonaj dopasowanie,</p> <p style="margin-left: 30px;"><strong>bit 1 wildcard mask</strong> - zignoruj.</p> <p>&nbsp;</p> <p>Więc zadajmy pytanie &ndash; Jakiej więc wartości wildcard mask użyć? W naszym przykładzie mamy sytuację prostą wystarczy wykonać odejmowanie: od wartości 255.255.255.255 odejmujemy maskę podsieci (w naszym przypadku maska podsieci przyjęła wartość 255.255.255.0 &ndash; CIDR /24).</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image61.png" alt="image61" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po wykonaniu działania wartość maski odwr&oacute;conej przyjmuje wartość: 0.0.0.255</p> <p>&nbsp;</p> <p>Oczywiście analogicznie postępujemy w przypadku innych sieci np. dla sieci 255.255.255.252 &ndash; CIDR /30 (takie podsieci mamy pomiędzy routerami) wartość wildcard mask wyniesie: 0.0.0.3</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image62.png" alt="image62" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Wracając do naszego przykładu aby zabronić na ruch sieciowy między siecią 10.0.1.0/24 a 10.0.3.0/24 przy wykorzystaniu listy ACL standardowej należy użyć warunku: <strong>deny 10.0.1.0 0.0.0.255</strong> &ndash; punkt 1</p> <p>&nbsp;</p> <p>Po określeniu pierwszego wpisu został zdefiniowany kolejny, kt&oacute;ry pozwala na ruch sieciowy pochodzący od innej sieci niż: 10.0.1.0/24 (punkt 2).</p> <p>&nbsp;</p> <p>Ostatnią czynnością (punkt 3) jest sprawdzenie poprawności listy.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image63.png" alt="image63" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po definicji warunk&oacute;w listy ACL nie można zapomnieć o powiązaniu jej z interfejsem routera, ponieważ jest to lista standardowa zostanie ona umieszczona najbliżej celu czyli na interfejsie f0/0 routera R3.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image64.png" alt="image64" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Zadanie wykonane, czas na testy. Test z wykorzystaniem hosta 10.0.1.10 kończy się sukcesem, ruch sieciowy jest zablokowany.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image65.png" alt="image65" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>R&oacute;wnież test przeprowadzony z hosta 10.0.1.20 kończy się sukcesem &ndash; pakiety ICMP nie docierają do celu.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image66.png" alt="image66" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Ostatnia pr&oacute;ba zostanie przeprowadzona z wykorzystaniem komputera WindowsXP_2 i tu r&oacute;wnież pełny sukces - pakiety osiągają docelową sieć 10.0.3.10 (instrukcja: <strong>deny 10.0.1.0 0.0.0.255</strong> dla sieci 10.0.2.0 nie ma zastosowania).</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image67.png" alt="image67" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Sprawdzenie listy ACL uwidacznia ilość dokonanych dopasowań do zdefiniowanych warunk&oacute;w. Lista ACL działa poprawnie.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image68.png" alt="image68" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Jak już umiemy definiować rozszerzone listy ACL spr&oacute;bujmy te same zadanie wykonać z ich wykorzystaniem.</p> <p>&nbsp;</p> <p>Aby zabronić na ruch sieciowy od sieci 10.0.1.0/24 do sieci 10.0.3.0/24 należy utworzyć warunek, kt&oacute;ry ruch wychodzący z sieci 10.0.1.0/24 zablokuje. Rozpoczynamy od wydania polecenia access-list wraz z numerem należącym do zakresu przypisanego listom rozszerzonym. Pakiety mają zostać zablokowane tak więc niezbędne będzie dodanie flagi: <strong>deny</strong>. W kolejnym kroku definiujemy adres źr&oacute;dłowy - blokowane mają być wszystkie adresy IP wchodzące w skład sieci 10.0.1.0/24 tak więc niezbędne będzie dodanie do polecenia adresu sieci 10.0.1.0 wraz z maską blankietową 0.0.0.255 Gdy zostały określone źr&oacute;dłowe adresy IP czas zdefiniować adresy docelowe - blokujemy możliwość komunikacji z siecią docelową 10.0.3.0/24 tak więc definicja obejmująca ten zakres adres&oacute;w IP przyjmie postać: 10.0.3.0 0.0.0.255 Składnia całego polecenia została pokazana na rysunku poniżej - punkt 1.</p> <p>&nbsp;</p> <p>Po definicji listy ACL przypisujemy ją do interfejsu f0/0 routera R1. Dlaczego został wybrany ten interfejs i ten router? - to już Czytelniku mam nadzieję, że jest dla Ciebie jasne. Dla przypomnienia (nie zaszkodzi powt&oacute;rzyć) - rozszerzoną listę ACL przypisujemy najbliżej źr&oacute;dła &ndash; punkt 2.</p> <p>&nbsp;</p> <p>Po wydaniu wszystkich poleceń nie zaszkodzi sprawdzić ich poprawności - punkt 3.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image69.png" alt="image69" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po określeniu pierwszego wpisu oczywiście musiał zostać zdefiniowany kolejny warunek (punkt 4), kt&oacute;ry zezwala na ruch sieciowy do innych sieci (w przypadku jego braku hosty z sieci 10.0.1.0/24 nie mogłyby się skomunikować np. z siecią 10.0.2.0/24).</p> <p>&nbsp;</p> <p>Po dokonanej konfiguracji listy ACL przyszedł czas by sprawdzić efekt jej działania.</p> <p>&nbsp;</p> <p>Pierwszy test został wykonany z hosta 10.0.1.10, drugi zaś z hosta 10.0.1.20 - oba zakończyły się sukcesem ruch sieciowy z sieci 10.0.1.0/24 został zablokowany.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image70.png" alt="image70" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Aby sprawdzić do końca działanie zdefiniowanej listy sprawdźmy jeszcze łączność z siecią 10.0.2.0/24 Test wykonany z hosta 10.0.1.20 zakończył się sukcesem tak więc nasza lista ACL działa poprawnie.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image71.png" alt="image71" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Zanim przejdziemy dalej i spr&oacute;bujemy wykonać kolejne zadanie zatrzymajmy się jeszcze chwilkę przy wildcard mask.</p> <p>&nbsp;</p> <p>Kilka wierszy powyżej napisałem iż bit 0 w wildcard mask oznacza dopasowanie zaś bit 1 zignoruj. Tę zasadę ilustruje rysunek poniżej.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image72.png" alt="image72" width="700" height="118" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Została przedstawiona przykładowa sieć 192.168.1.0 z zdefiniowaną maską odwrotną 0.0.0.255 (obszar maski zaznaczony na ż&oacute;łto) &ndash; czyli w ramach tych bit&oacute;w adresu ma nastąpić dopasowanie (liczy się pierwsze 24 bity zajęte przez wartości 0) Jeśli 0 oznacza dopasowanie por&oacute;wnując adres sieci z adresem z pierwszego przykładu (adres IP 192.168.1.20) widzimy iż dopasowanie na wszystkich 24 bitach zostało zachowane. Brak dopasowania zachodzi dopiero na 28 bicie ale ponieważ 28 bit został odznaczony przez maskę jako 1 - brak dopasowania nie ma tu znaczenia. Co za tym idzie lista ACL i połączony z nią warunek dla tego adresu IP będzie miał zastosowanie.</p> <p>&nbsp;</p> <p>W drugim przykładzie (adres 192.168.2.1) dopasowanie jest zachowane do 22 bitu adresu (bit 23 zawiera wartość 1 a powinien 0) oznacza to iż adres ten nie spełnia wymog&oacute;w zdefiniowanego warunku (przypisana instrukcja do tego adresu IP nie będzie miała zastosowania).</p> <p>&nbsp;</p> <p>W przykładzie trzecim mamy tą samą sytuację co w drugim z tą r&oacute;żnicą, że w tym przykładzie dopasowanie jest zachowane do bitu 12.</p> <p>&nbsp;</p> <p>Przy definicji list ACL jak już pewnie zauważyłeś stosowaliśmy dwa specjalne parametry, mowa tu o fladze <strong>any</strong> oraz fladze <strong>host</strong>.</p> <p>&nbsp;</p> <p>Opcja <strong>any</strong> wymusza zastosowanie maski 255.255.255.255. Użycie takie maski powoduje ignorowanie całego adresu IP bądź inaczej akceptację dowolnego.</p> <p>&nbsp;</p> <p>Zasadę działania flagi <strong>any</strong> zobrazowano na rysunku poniżej.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image73.png" alt="image73" width="700" height="109" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Ponieważ maska odwrotna poprzez użycie <strong>any</strong> (co r&oacute;wne jest zapisowi 255.255.255.255) została zdefiniowana jako ciąg bit&oacute;w przyjmujących wartość 1 to połączenie każdego z adres&oacute;w IP powoduje jego akceptację. W przypadku połączenia z instrukcją: <strong>deny</strong> (warunek: <strong>deny any</strong>) tak zdefiniowana lista spowoduje zablokowanie całego ruchu sieciowego zaś w przypadku instrukcji: <strong>permit</strong> zezwolenie na ruch sieciowy z dowolnego adresu IP.</p> <p>&nbsp;</p> <p>Opcja <strong>host</strong> zastępuje maskę 0.0.0.0. Maska ta powoduje sprawdzenie wszystkich bit&oacute;w adresu i bity te muszą wykazać pełną zgodność. Zastosowanie parametru <strong>host</strong> spowoduje dopasowanie tylko jednego adresu IP.</p> <p>&nbsp;</p> <p>I już tradycyjne rysunek poniżej.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image74.png" alt="image74" width="700" height="127" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Wildcard mask w kt&oacute;rej pojawia się flaga: <strong>host</strong> (co r&oacute;wne jest zapisowi: 0.0.0.0) oznacza wykonanie pełnego dopasowania gdyż wszystkie bity maski są zdefiniowane jako 0. Ten warunek zostanie tylko spełniony przez jeden pojedynczy adres IP - w przykładzie powyżej adres IP 192.168.1.1 został połączony z maską odwrotną 0.0.0.0 tak więc tylko taki adres spełni warunek dopasowania.</p> <p>&nbsp;</p> <p>Pozostając jeszcze przez chwilę przy temacie maski odwrotnej zastan&oacute;wmy się jaką by należało przyjąć maskę gdybyśmy chcieli wykonać zadanie, kt&oacute;re polegałoby na zablokowaniu ruchu sieciowego od adresu IP 192.168.0.1 do 192.168.0.5? W ramach tego kr&oacute;tkiego ćwiczenia dla ułatwienia rozważań przyjmijmy, że mamy do czynienia z topologią przedstawioną na rysunku poniżej:</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image75.png" alt="image75" width="700" height="488" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Zależy nam na tym aby hosty od adresu IP 192.168.0.1 do 192.168.0.5 nie mogły komunikować się z siecią 192.168.1.0/24 zaś hosty począwszy od adresu 192.168.0.6 już tak.</p> <p>&nbsp;</p> <p>Pierwsze rozwiązanie tego problemu jakie każdemu powinno się nasunąć to zbudowanie listy ACL złożonej z 5 warunk&oacute;w w postaci: <strong>deny host 192.168.0.x</strong> gdzie x jest liczbą od 1 do 5 i jednego warunku: <strong>permit any</strong></p> <p>&nbsp;</p> <p>Oczywiście jest to wyjście z sytuacji i w tym ćwiczeniu jak najbardziej zdałoby egzamin - Ale czy postąpilibyśmy tak samo gdyby zakres blokowanych adres&oacute;w IP wynosiłby powiedzmy adresy od 192.168.0.1 do 192.168.0.80? Już nie.</p> <p>&nbsp;</p> <p>A więc co należy wykonać by podany zakres adres&oacute;w IP zablokować? Pierwszą czynność jaką musimy przeprowadzić jest wyznaczenie adresu podsieci i maski do kt&oacute;rej blokowane hosty należą. Potrzebne nam dane odnajdziemy wykonując tzw. sumaryzację bądź podsumowanie (zagadnienie wykorzystywane r&oacute;wnież w routingu celem zmniejszenia rozmiar&oacute;w tablic routingu).</p> <p>&nbsp;</p> <p>Rozpiszmy nasze adresy IP binarnie (w gwoli ścisłości wystarczyłoby by rozpisać pierwszy i ostatni adres IP):</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image76.png" alt="image76" width="700" height="95" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Następnie poruszamy się od lewej strony do prawej szukając dopasowania - miejsca w kt&oacute;rym wszystkie adresy są ze sobą zgodne. Gdy dotrzemy do miejsca w kt&oacute;rym zgodność nie jest zachowana, m&oacute;wi się że znaleźliśmy granicę podsumowania. Jak widać nasza granica znajduje się przy 29 bicie gdyż por&oacute;wnując bit 30 dopasowanie nie jest już zachowane. Liczba 29 jest maską podsieci dla sieci sumarycznej. Maska /29 odpowiada adresowi 255.255.255.248. By odnaleźć adres sieci, przepisujemy bity do granicy podsumowania bez zmian natomiast resztę pozostałych bit&oacute;w dopełniamy zerami. W naszym przykładzie 1100000.10101000.00000000.00000000, co odpowiada adresowi IP 192.168.0.0.</p> <p>&nbsp;</p> <p>A więc adresem podsumowującym hosty jest podsieć: 192.168.0.0 255.255.255.248.</p> <p>&nbsp;</p> <p>Mając maskę łatwo możemy przeliczyć ją na maskę odwrotną.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image77.png" alt="image77" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>A więc przy budowie listy ACL należy użyć adresu 192.168.0.0 z wildcard mask o wartości 0.0.0.7</p> <p>&nbsp;</p> <p>Zdobytą wiedzę wykorzystajmy w działaniu i zdefiniujmy standardową listę ACL.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image78.png" alt="image78" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Tak utworzoną listę oczywiście należy przypisać do interfejsu po stronie sieci 192.168.1.0/24</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image79.png" alt="image79" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Lista ACL została skonfigurowana sprawdźmy zatem efekt naszych poczynań. W pierwszej kolejności host 192.168.0.1</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image80.png" alt="image80" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Wszystko się zgadza host nie może skomunikować się z siecią 192.168.1.0/24</p> <p>&nbsp;</p> <p>Czas na hosta 192.168.0.6</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image81.png" alt="image81" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>I w tym przypadku już tak kolorowo nie jest (a miało być tak pięknie). Host 192.168.0.6 r&oacute;wnież nie może skomunikować się z siecią 192.168.1.0/24 co jest sprzeczne z przyjętymi założeniami ćwiczenia. C&oacute;ż takiego się stało, że i temu hostowi została odebrana możliwość komunikacji?</p> <p>&nbsp;</p> <p>Odpowiedź jest prosta. Host o adresie IP 192.168.0.6 tak jak hosty o adresach od 192.168.0.1 do 192.168.0.5 r&oacute;wnież należy do podsieci 192.168.0.0 255.255.255.248 (CIDR: /29) a co za tym idzie wykorzystując wyliczoną maskę wieloznaczną 0.0.0.7 r&oacute;wnież hostowi 192.168.0.6 zostanie odebrana możliwość komunikacji z żądaną siecią. Sytuacja ta dotyczy r&oacute;wnież hosta o adresie IP 192.168.0.7. Dopiero host z adresem IP 192.168.0.8 poprawnie nawiąże połączenie z siecią 192.168.1.0/24</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image82.png" alt="image82" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Mam nadzieję, że zaistniały fakt i powstałe wątpliwości rozjaśni rysunek poniżej.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image83.png" alt="image83" width="700" height="192" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Jak można zauważyć dwa wspomniane adresy IP tj. 192.168.0.6 i 192.168.0.7 r&oacute;wnież spełniają warunek zgodności zachodzący do 29 bitu adresu (do granicy podsumowania) a dopiero adres IP 192.168.0.8 warunku dopasowania nie spełnia.</p> <p>&nbsp;</p> <p>Tak więc co należy wykonać aby nasze ćwiczenie wykonać prawidłowo? Należy poprawić listę ACL poprzez utworzenie osobnych warunk&oacute;w dla dw&oacute;ch problematycznych adres&oacute;w IP.</p> <p>&nbsp;</p> <p>Nasza lista ACL przyjmie postać:</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image84.png" alt="image84" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p style="margin-left: 30px;">1 - definicja zezwalająca na ruch sieciowy z host&oacute;w o adresach IP 192.168.0.6 oraz 192.168.0.7,</p> <p style="margin-left: 30px;">2 - definicja zabraniająca na ruch sieciowy hostom od 192.168.0.1 do 192.168.0.7 (wpis ten nie będzie miał zastosowania do host&oacute;w 192.168.0.6 oraz 192.168.0.7 gdyż wykluczenie tych adres&oacute;w zostało zdefiniowane w punkcie 1),</p> <p style="margin-left: 30px;">3 - definicja zezwalająca na ruch sieciowy pozostałym hostom (od 192.168.0.8 do 192.168.0.255),</p> <p style="margin-left: 30px;">4 - przypisanie listy ACL do interfejsu.</p> <p>&nbsp;</p> <p>Nie pozostaje nam nic innego jak dokonanie sprawdzenia.</p> <p>&nbsp;</p> <p>I tak jak poprzednio zaczynamy od hosta 192.168.0.1</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image85.png" alt="image85" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Test zakończony pomyślnie.</p> <p>&nbsp;</p> <p>Czas na hosta 192.168.0.6</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image86.png" alt="image86" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Łączność z siecią 192.168.1.0/24 jest możliwa. Test zakończony powodzeniem.</p> <p>&nbsp;</p> <p>Nasza lista ACL działa poprawnie.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image87.png" alt="image87" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Na koniec rozważań dotyczących wildcard mask chcę cię Czytelniku pozostawić z pytaniem &ndash; Czy nasza lista ACL mogłaby zostać zdefiniowana tak jak na rysunku poniżej i czy gwarantuje to poprawność wykonania zadania? (jeśli Ci się nie uda odpowiedzieć na pytanie nie martw się &ndash; odpowiedź znajdziesz na końcu wpisu).</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image88.png" alt="image88" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Przejdźmy zatem do kolejnego przykładu zastosowania list ACL. Funkcja pełniona przez listę ACL jest bardzo podobna do tej z ćwiczenia pierwszego z tą małą r&oacute;żnicą iż będziemy blokować ruch sieciowy pomiędzy hostem o adresie IP 10.0.1.10 (WindowsXP_1) a hostem 10.0.2.10 (WindowsXP_2). W przykładzie pierwszym do wykonania zadania użyliśmy m.in. standardowej listy ACL w tym przykładzie r&oacute;wnież takową listę użyjemy lecz tym razem będzie to tzw. <strong>standardowa lista ACL nazywana</strong>.</p> <p>&nbsp;</p> <p>W przykładzie tym jak i następnym wracamy do naszej bazowej topologii więc by nie przewijać na sam początek artykułu jeszcze raz dla przypomnienia.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image89.png" alt="image89" width="700" height="341" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Nazwane listy ACL dla protokołu IP wprowadzono w wersji 11.2 systemu Cisco IOS.</p> <p>&nbsp;</p> <p>Podczas pracy z listami ACL przekonasz się nie raz, że komentarz, kt&oacute;ry zawiera opis działania listy ACL znacznie ułatwi Ci zrozumienie sposobu działania danej listy. Jeśli konfigurowana lista ACL znajduje się w środowisku sieciowym w kt&oacute;rym pełnisz rolę administratora już od dłuższego czasu zapoznanie się z takim opisem natychmiast przypomni Ci dlaczego została ona skonfigurowana. Jeśli zaś środowisko sieciowe w kt&oacute;rym pracujesz jest dla Ciebie &bdquo;dziewiczym&rdquo; obszarem to będziesz wdzięczny poprzedniemu administratorowi, że zawarł wskaz&oacute;wki, kt&oacute;re obszar ten pozwolą Ci poznać. Aby ułatwić sobie rozeznanie co do zasadności stosowania danych list ACL można je nazywać. Nazwa listy ACL w postaci: <strong>blokadaSieciBiuro</strong> da Ci więcej informacji o pełnionej przez listę ACL funkcji niż suchy opis w postaci jej numeru. Dlatego też opr&oacute;cz stosowania standardowych list ACL numerowanych można posłużyć się listą nazywaną.</p> <p>&nbsp;</p> <p>Po analizie ćwiczenia pierwszego już wiesz że listę standardową umieszczamy najbliżej celu. Zależy nam na blokadzie ruch pomiędzy hostem WindowsXP_1 a WindowsXP_2 tak by host o adresie IP 10.0.1.10 nie m&oacute;gł skomunikować się z hostem 10.0.2.10 Najbliżej naszego celu (host WindowsXP_2) znajduje się interfejs f0/0 routera R2 tak więc to na tym interfejsie założymy listę ACL.</p> <p>&nbsp;</p> <p>Aby zdefiniować nazywaną standardową listę ACL przechodzimy do trybu konfiguracji globalnej routera R2 i wydajemy polecenie: <strong>ip access-list standard &lt;nazwa_listy&gt; </strong>(w przypadku konfiguracji listy rozszerzonej zamiast parametru: <strong>standard</strong> używamy parametr: <strong>extended</strong>). A następnie w trybie konfiguracji listy ACL definiujemy jej warunki &ndash; punkt 1. Ostatnią czynność jaką musimy wykonać by lista ACL mogła zacząć działać jest jej powiązanie z danym interfejsem. W naszym scenariuszu lista ACL <strong>blokadaWinXP1 </strong>została przypisana do interfejsu f0/0. Kierunek działania listy oczywiście został określony jako: <strong>out</strong></p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image90.png" alt="image90" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Sprawdźmy zatem działanie listy ACL.</p> <p>&nbsp;</p> <p>Test ping przeprowadzony z hosta 10.0.1.10 kończy się sukcesem &ndash; brak jest połączenia z adresem 10.0.2.10</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image91.png" alt="image91" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Zaś test komunikacji wykonany z hosta Windows7 r&oacute;wnież kończy się sukcesem &ndash; połączenie z hostem 10.0.2.10 zostaje nawiązane.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image92.png" alt="image92" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Zdefiniowana lista ACL została skonfigurowana prawidłowo.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image93.png" alt="image93" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>W kolejnym ćwiczeniu zajmiemy się dalszą konfiguracją list ACL lecz tym razem filtrowanie ruchu skonfigurujemy w oparciu o numery port&oacute;w.</p> <p>&nbsp;</p> <p>Ćwiczenie polega na skonfigurowaniu listy ACL w ten spos&oacute;b aby tylko host 10.0.1.20 (dla pozostałych adres&oacute;w IP z podsieci 10.0.1.0/24 łączność ma być blokowana) m&oacute;gł sesję SSH z routerem R3 nawiązać.</p> <p>&nbsp;</p> <p>Aby wykonać to zadanie w definiowanych warunkach listy ACL musimy umieścić informację o numerze portu.</p> <p>&nbsp;</p> <p>Numery port&oacute;w mogą odnosić się do adresu źr&oacute;dłowego jak i docelowego.</p> <p>&nbsp;</p> <p>Ponieważ kontrola dostępu będzie prowadzona w oparciu o numery port&oacute;w należy użyć listy rozszerzonej a konfigurowanym protokołem jest TCP bądź UDP.</p> <p>&nbsp;</p> <p>Prześledźmy taki o to warunek: <strong>access-list 180 permit tcp any any eq 80</strong> Warunek ten zezwala na nawiązanie sesji z dowolnego adresu źr&oacute;dłowego do dowolnego adresu docelowego pod warunkiem iż nawiązywany ruch odnosi się do portu 80. W powyższej instrukcji zapis: <strong>eq 80</strong> należy odczytać jako: <strong>r&oacute;wna się 80</strong></p> <p>&nbsp;</p> <p>Warunek definicji portu w powyższej liście ACL odnosi się oczywiście do adresu docelowego. Aby określić adres źr&oacute;dłowy nasza lista przyjęła by postać: <strong>access-list 180 permit tcp any eq 80 any</strong> Oczywiście dozwolona jest sytuacja w kt&oacute;rej zostaje zdefiniowany port w adresie źr&oacute;dłowym jak i docelowym. Warunek: <strong>access-list 180 permit tcp any eq 1566 any eq 80 </strong>pozwala na nawiązanie połączenia z dowolnym hostem na porcie 80 z dowolnego hosta pod warunkiem iż połączenie te inicjowane jest z wykorzystaniem portu 1566.</p> <p>&nbsp;</p> <p>Nie jest tajemnicą iż port 80 odnosi się do ruchu WWW tak więc zamiast określać numer portu możemy użyć nazwę usługi. Zapis: <strong>access-list 180 permit tcp any any eq 80 </strong>będzie tożsamy z<strong> access-list 180 permit tcp any any eq www</strong></p> <p>&nbsp;</p> <p>Dostępnych jest wiele nazw usług, kt&oacute;rych zamiennie możemy użyć zamiast numeru portu, poniżej została przedstawiona lista tych najczęściej używanych (nazwy dotyczą protokołu TCP).</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image94.png" alt="image94" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>W przypadku protokołu UDP do dyspozycji mamy następujące zmienne:</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image95.png" alt="image95" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Opr&oacute;cz warunku r&oacute;wności portu do dyspozycji mamy jeszcze następujące zmienne:</p> <p style="margin-left: 30px;"><strong>gt</strong> - dopasowywanie tylko pakiet&oacute;w z większym numerem portu, warunek: <strong>access-list 180 permit tcp any any gt 80 </strong>oznacza możliwość nawiązania połączenia z hostem docelowym pod warunkiem iż połączenie nawiązywane jest z portem o numerze wyższym niż 80,</p> <p style="margin-left: 30px;"><strong>lt</strong> - dopasowywanie tylko pakiet&oacute;w z mniejszym numerem portu, warunek: <strong>access-list 180 permit tcp any any lt 80 </strong>oznacza możliwość nawiązania połączenia z hostem docelowym pod warunkiem iż połączenie nawiązywane jest z portem o numerze niższym niż 80,</p> <p style="margin-left: 30px;"><strong>neq </strong>- dopasowywanie tylko pakiet&oacute;w, kt&oacute;rych port nier&oacute;wna się, warunek: <strong>access-list 180 permit tcp any any neq 80 </strong>oznacza możliwość nawiązania połączenia z hostem docelowym pod warunkiem iż połączenie nie jest nawiązywane z portem o numerze 80 (wszystkie numery port&oacute;w są dozwolone tylko nie port 80),</p> <p style="margin-left: 30px;"><strong>range</strong> - dopasowywanie tylko pakiet&oacute;w, kt&oacute;rych numer znajduje się w zdefiniowanym zakresieportu z mniejszym numerem portu, warunek: <strong>access-list 180 permit tcp any any range 80 100</strong> oznacza możliwość nawiązania połączenia z hostem docelowym pod warunkiem iż połączenie nawiązywane jest z portem o numerze, kt&oacute;ry mieści się w zakresie od 80 do 100 (do zakresu port 80 oraz 100 r&oacute;wnież się wlicza).</p> <p>&nbsp;</p> <p>Wszystko już wiemy zatem przechodzimy do przykładu.</p> <p>Usługa dostępu dla protokołu zdalnego z wykorzystaniem SSH została skonfigurowana na routerze R3 &ndash; jak wykonać taką konfigurację odsyłam do wpisu: <a href="http://slow7.pl/item/36-dostep-zdalny-oraz-prawa-uzytkownika-w-urzadzeniach-cisco" title="Dostęp zdalny oraz prawa użytkownika w urządzeniach CISCO"><span style="text-decoration: none;">Dostęp zdalny oraz prawa użytkownika w urządzeniach CISCO</span></a></p> <p>&nbsp;</p> <p>Wykonajmy sprawdzenie dostępności portu dla usługi SSH z wykorzystaniem narzędzia NMap. Użyta komenda wykona skanowanie TCP portu 22 (jeśli chcesz poznać bardziej zaawansowane techniki skanowania zapraszam tym razem do zapoznania się z tym artykułem: <a href="http://slow7.pl/sieci-komputerowe/item/121-co-w-sieci-siedzi-skanowanie-portow" title="Co w sieci siedzi. Skanowanie port&oacute;w."><span style="text-decoration: none;">Co w sieci siedzi. Skanowanie port&oacute;w</span></a>).Jak widać poniżej test kończy się sukcesem &ndash; port jest otwarty i czeka na nawiązanie połączenia.</p> <p>&nbsp;</p> <p>Połączenie z routerem następuje przy wykorzystaniu programu OpenSSH, po wywołaniu polecenia oraz podaniu danych uwierzytelniających połączenie zostaje zestawione (przy pierwszym połączeniu trzeba zaakceptować tzw. &bdquo;odcisk palca&rdquo;). Łączność z routerem została ustanowiona z hosta 10.0.1.20 (Windows7).</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image96.png" alt="image96" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>W tym momencie, jeszcze żadna lista ACL ograniczająca możliwość nawiązania połączenia nie została zdefiniowana tak więc połączenie może być zestawione z dowolnego komputera. Jak widać poniżej test połączenia z hosta 10.0.1.10 (WindowsXP_1) r&oacute;wnież kończy się sukcesem.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image97.png" alt="image97" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Celem ćwiczenia jest skonfigurowanie takiej listy ACL, kt&oacute;ra pozwoli na nawiązanie sesji SSH tylko z hosta 10.0.1.20 (reszcie komputer&oacute;w z podsieci 10.0.1.0/24 prawo to ma być odebrane). Lista ACL wykonująca to zadanie została przedstawiona na zrzucie poniżej (zadanie wykonamy przy wykorzystaniu listy ACL rozszerzonej, nazywanej):</p> <p style="margin-left: 30px;"><strong>punkt 1</strong> - rozpoczynamy od utworzenia listy ACL o nazwie ruchSSH,</p> <p style="margin-left: 30px;"><strong>punkt 2</strong> - utworzony warunek zezwala na ruch TCP (zapis: permit tcp) z hosta o adresie IP 10.0.1.20 (zapis: host 10.0.1.20) do hosta o adresie IP 10.0.3.1 (zapis: host 10.0.3.1) pod warunkiem iż ruch ten dotyczy portu 22 (zapis: eq 22),</p> <p style="margin-left: 30px;"><strong>punkt 3</strong> - ponieważ router R3 posiada w naszej sieci dwa aktywne interfejsy sieciowe tak więc połączenie SSH może zostać nawiązane z dowolnym z nich, aby host 10.0.1.20 m&oacute;gł sesje SSH zestawić z interfejsem po stronie sieci 192.168.2.0/30 trzeba mu na to pozwolić. Warunek zezwalający na połączenie SSH przyjmie tę samą postać co w punkcie 2 z drobną r&oacute;żnicą dotyczącą hosta docelowego &ndash; zapis: host 192.168.2.1</p> <p style="margin-left: 30px;"><strong>punkt 4</strong> - w założeniu ćwiczenia reszcie host&oacute;w, prawo nawiązania połączenia SSH ma zostać odebrane tak więc dzięki definicji warunku: <strong>deny tcp any any eq 22</strong> łączność z routerem R3 zostaje zablokowana. A gwoli ścisłości żaden host z sieci 10.0.1.0/24 nie będzie m&oacute;gł nawiązać sesji SSH z żadnym z host&oacute;w zdalnych (bardziej zasadne byłyby warunki ograniczające ten zakaz do sieci 10.0.3.0/24 oraz 192.168.2.0/30 &ndash; <strong>deny tcp any 10.0.3.0 0.0.0.255 eq 22</strong> oraz <strong>deny tcp any 192.168.2.0 0.0.0.3 eq 22</strong>),</p> <p style="margin-left: 30px;"><strong>punkt 5</strong> - ostatnią czynnością jest przypisanie listy do interfejsu, ponieważ listę rozszerzoną nieważne czy jest to lista numerowana czy nazywana zakładamy najbliżej celu to łączem do kt&oacute;rego będziemy listę przypisywać jest interfejs f0/0 routera R1. O tym jeszcze nie wspominałem ale przy nazywanej liście ACL wielkość liter ma znaczenie oznacza to, ni mniej ni więcej iż nazwa listy ruchSSH nie jest tożsama z nazwą ruchssh.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image98.png" alt="image98" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po skonfigurowaniu listy ACL przechodzimy do jej przetestowania, test rozpoczynamy od hosta 10.0.1.20. Jak widać poniżej hostowi udało się połączenie SSH z routerem nawiązać.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image99.png" alt="image99" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Pora na komputer o adresie IP 10.0.1.10. W tym przypadku dostęp do routera okazał się niemożliwy.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image100.png" alt="image100" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Aby faktycznie potwierdzić możliwość zestawienia poprawnego połączenia SSH został wykonany skan portu 22 interfejsu routera R1. Skan pierwszy odbył się z hosta 10.0.1.20 i jak widać port został zidentyfikowany jako: <strong>open</strong> Oznacza to możliwość nawiązania połączenia. Drugi skan przeprowadził komputer 10.0.1.10, tym razem status portu został określony jako: <strong>filtered</strong> co oznacza iż port jest filtrowany. Status taki najczęściej pojawi się w przypadku hosta znajdującego się za zaporą sieciową bądź innym mechanizmem kontrolującym ruch sieciowy. W naszym przypadku jest to lista ACL.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image101.png" alt="image101" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Aby faktycznie sprawdzić działanie listy ACL sprawdźmy jej stan. Wywołanie polecenia: <strong>show access-lists</strong> uwidoczni ilość dopasowań. Lista ACL działa jak należy.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image102.png" alt="image102" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Listy ACL standardowe oraz rozszerzone nie są jedynym dostępnym arsenałem, kt&oacute;ry pozwoli nam na kontrolowanie ruchu w naszej sieci. Opisane wyżej typy list ACL nie są w stanie zapewnić nam rozwiązania wszystkich problem&oacute;w na jakie możemy natknąć się podczas sprawowania kontroli nad zarządzaną siecią. Dlatego też powstały dodatkowe rozwiązania, kt&oacute;re pozwalają nam na wprowadzenie mechanizm&oacute;w odpowiedzialnych za usprawnienie przepływu pakiet&oacute;w generowanych przez zarządzaną sieć.</p> <p>&nbsp;</p> <p>Nie jest tajemnicą i stwierdzenie tym &bdquo;Ameryki nie odkryję&rdquo; że we wsp&oacute;łczesnych sieciach komputerowych dąży się do rozwiązań w kt&oacute;rych niepożądany ruch sieciowy pochodzący z zewnątrz (czytaj - ruch sieciowy pochodzący z obszar&oacute;w nad kt&oacute;rymi nie sprawujemy kontroli - najczęściej Internet) powinien zostać odfiltrowany (zablokowany) zanim zostanie przekazany do wnętrza sieci.</p> <p>&nbsp;</p> <p>Oczywiście istnieją odstępstwa od tej reguły gdyż nie wszystkie pakiety, kt&oacute;re pochodzą z zewnątrz są niepożądane i co ważne nie mogą podlegać blokowaniu. Jak więc sprawować kontrolę nad tym co trafia do naszej sieci tak by jej użytkownicy mogli realizować swoje zadania a jednocześnie nie narażać się na atak.</p> <p>&nbsp;</p> <p>Jeśli znamy charakterystykę ruchu, kt&oacute;ry nie zagraża naszej sieci poprzez odpowiednią definicję list ACL możemy jawnie zezwolić na pożądany ruch. Sytuacja trochę się gmatwa gdy do końca nie jesteśmy w stanie określić charakterystyki pakiet&oacute;w, kt&oacute;re do sieci mogą trafić a kt&oacute;re powinny być blokowane.</p> <p>&nbsp;</p> <p>Bardzo często spotykamy się z sytuacją w kt&oacute;rej użytkownik sieci chce nawiązać połączenie z hostem znajdującym się np. w Internecie ale okazuje się to niemożliwe gdyż lista ACL założona na routerze brzegowym na takie połączenie zabrania.</p> <p>&nbsp;</p> <p>Aby rozwiązać ten problem wdrożono mechanizmy, kt&oacute;re umożliwią nam na poprawne zestawienie połączenia (niezbędne pakiety przez listę ACL zostaną przepuszczone) ale tylko pod warunkiem iż jest to ruch powrotny, kt&oacute;ry zainicjowany został wewnątrz sieci.</p> <p>&nbsp;</p> <p>Istnieją następujące rozwiązania filtrowania ruchu:</p> <ul> <li style="padding-left: 60px;">TCP Established</li> <li style="padding-left: 60px;">Zwrotne (reflexive) ACL</li> </ul> <p>&nbsp;</p> <p>Rozpocznijmy zatem od <strong>TCP Established</strong>. Mechanizm ten zaimplementowano w urządzeniach CISCO w roku 1995 a dał on możliwość filtracji pakiet&oacute;w w oparciu o definicję listy rozszerzonej w połączeniu z protokołem TCP. Użycie tego mechanizmu sprowadza się do dodania w definicji warunku listy ACL parametru: <strong>established</strong>.</p> <p>&nbsp;</p> <p>Dodanie flagi: <strong>established</strong> do warunku spowoduje blokadę ruchu sieciowego pochodzącego z niezaufanej sieci z wyjątkiem odpowiedzi TCP związanych z zestawionymi połączeniami, zainicjowanymi wewnątrz sieci.</p> <p>&nbsp;</p> <p>Działanie tego mechanizmu opiera się o proces nawiązywania połączenia TCP, gdyż użycie parametru: <strong>established</strong> wymusza na routerze sprawdzanie faktu ustawienia w nagł&oacute;wku pakietu flag kontrolnych ACK lub RST. Jeśli jest ustawiona flaga ACK ruch TCP jest przepuszczany. W przeciwnym przypadku router zakłada, że ruch jest inicjowany na zewnątrz sieci i następuje jego blokada. Aby dokładnie zrozumieć spos&oacute;b działania tej funkcji i dlaczego tak naprawdę router zezwoli bądź zabroni na przepuszczenie danego pakietu trzeba mieć wiedzę na temat etap&oacute;w nawiązywania połączenia z wykorzystaniem protokołu TCP wtedy powyższy opis stanie się jasny. Aby ponownie nie opisywać tych samych zagadnień odsyłam do wpisu: <a href="http://slow7.pl/sieci-komputerowe/item/121-co-w-sieci-siedzi-skanowanie-portow">Co w sieci siedzi. Skanowanie port&oacute;w </a>w kt&oacute;rym to zawarłem dokładny opis ustanawiania sesji TCP.</p> <p>&nbsp;</p> <p>Aby dokładnie zrozumieć spos&oacute;b działania tego mechanizmu przyjmijmy w naszym ćwiczeniu topologię, kt&oacute;ra została przedstawiona na rysunku poniżej. Przy czym zakładamy (dla ułatwienia naszych rozważań) iż host Serwer WWW jest komputerem znajdującym się w sieci Internet zaś host WindowsXP_1 jest komputerem w sieci wewnętrznej.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image103.png" alt="image103" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po skonfigurowaniu wszystkich funkcji wraz z adresami IP wykonujemy pr&oacute;bę połączenia z hosta WindowsXP_1 z serwerem www. Jak widać poniżej wprowadzenie adresu IP 192.168.1.1 w pasku adresu przeglądarki powoduje wyświetlenie domyślnej strony WWW serwera IIS. Połączenie WWW pomiędzy hostami zostało ustanowione.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image104.png" alt="image104" width="700" height="626" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Przyjęliśmy założenie iż serwer WWW znajduje się w sieci Internet tak więc aby odseparować nasza sieć wewnętrzną 192.168.0.0/24 od sieci zewnętrznej na routerze R1 została zdefiniowana lista ACL zabraniająca na wszelki kontakt z siecią lokalną 192.168.0.0/24 Założona na routerze lista ACL 100 zabrania na połączenia wykonywane w ramach protokołu IP (access-list 100 deny ip any any) &ndash; lista na interfejsie została skonfigurowana w ten spos&oacute;b iż blokowany jest ruch wejściowy (ip access-group 100 in).</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image105.png" alt="image105" width="700" height="438" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po tak skonfigurowanej liście ACL żadne połączenie z sieci Internet z naszą wewnętrzną siecią nie może być ustanowione (oczywiście warunek ten dotyczy protokołu IP).</p> <p>&nbsp;</p> <p>Pr&oacute;ba ponownego połączenia z serwerem WWW kończy się niepowodzeniem. Pakiety wysłane z hosta WindowsXP_1 do serwera WWW docierają bez problemu lecz pakiety pochodzące od serwera są blokowane prze listę ACL czego konsekwencją jest brak możliwości zestawienia połączenia. Serwer WWW w tej konfiguracji jest nieosiągalny.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image106.png" alt="image106" width="700" height="625" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Oczywiście sytuacja taka jest nie do zaakceptowania gdyż uniemożliwienie użytkownikom na korzystanie z sieci WWW na pewno jako administratorowi przysporzy Ci wielu problem&oacute;w. Jak więc pogodzić funkcjonalność z bezpieczeństwem naszej sieci? Należy zdefiniować nową listę ACL w kt&oacute;rej to pozwolimy na ruch WWW lecz tylko pod warunkiem iż to użytkownik go zainicjuje.</p> <p>&nbsp;</p> <p>Aby wywołane przez użytkownika sieci wewnętrznej połączenie z serwerem WWW mogło dojść do skutku należy pozwolić na ruch powrotny przesyłany od strony serwera. Bądź m&oacute;wiąc kr&oacute;cej - ruch ten nie może być blokowany przez listę ACL.</p> <p>&nbsp;</p> <p>Aby wykonać zadanie należy poprawić zdefiniowaną w poprzednim kroku listę ACL. W nowej liście ACL został zdefiniowany warunek (access-list 100 permit tcp any eq 80&nbsp;192.168.0.0 0.0.0.0 established), kt&oacute;ry pozwala na nawiązanie połączenia TCP z dowolnym hostem pod warunkiem iż połączenie jest nawiązywane z docelowym portem 80 a ruch ten pochodzi z sieci o prefiksie 192.168.0.0/24. Dodanie parametru: <strong>established</strong> zezwala na ruch powrotny. Gdyż ruchem dozwolonym jest tylko ruch WWW, kolejny warunek (access-list 100 deny ip any any) zabrania na nawiązanie jakichkolwiek innych połączeń. Lista tak jak poprzednia jest założona w kierunku wejściowym na interfejsie od strony Internetu.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image107.png" alt="image107" width="700" height="355" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po skorygowaniu listy ACL połączenie z serwerem WWW zostało przywr&oacute;cone.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image108.png" alt="image108" width="700" height="626" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Sprawdzenie listy ACL przy wykorzystaniu polecenia: <strong>show access-lists</strong> przekonuje nas o tym iż lista działa.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image109.png" alt="image109" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Mechanizm ten nie jest doskonały gdyż należy mieć świadomość iż użycie parametru: <strong>established</strong> pozwoli na ruch sieciowy każdemu segmentowi TCP, kt&oacute;ry będzie miał ustawioną odpowiednią flagę kontrolną a wykorzystanie go ogranicza się tylko do protokołu TCP.</p> <p>&nbsp;</p> <p>Niestety nie przewidziano przechowywania informacji o stanie pakiet&oacute;w, kt&oacute;re w wyniku działania mechanizmu trafiły do naszej sieci tak by stwierdzić, czy przepuszczony ruch był związany z nawiązanym połączeniem czy też nie.</p> <p>&nbsp;</p> <p>Rok p&oacute;źniej po wprowadzeniu list TCP Established wprowadzono kolejny wariant list ACL, kt&oacute;rych zadaniem jest oczywiście filtrowanie pakiet&oacute;w &ndash; są to tzw. <strong>listy zwrotne</strong> (reflexive). Tak jak w przypadku rozwiązania opisanego wyżej administratorzy sieci wykorzystują zwrotne ACL, aby zezwolić na ruch IP (nie tylko TCP) pochodzący z ich sieci i zabronić na ruch IP zainicjowany z zewnątrz.</p> <p>&nbsp;</p> <p>Wadą mechanizmu ACL established jest brak wsparcia dla innych protokoł&oacute;w niż TCP co jest dość poważnym ograniczeniem . W rozwiązaniu reflexive ACL filtrowanie ruchu odbywa się w oparciu o adresy źr&oacute;dłowe i docelowe oraz numery port&oacute;w. Takie podejście do sprawy umożliwia wykorzystanie tego rozwiązania do filtrowania ruchu sieciowego w oparciu o protok&oacute;ł UDP czy ICMP.</p> <p>&nbsp;</p> <p>W zwrotnych listach ACL dodatkowo zaimplementowano tzw. <strong>filtry tymczasowe</strong>, kt&oacute;rych zadaniem jest zezwolenie na ruch powrotny. Tworzenie filtr&oacute;w tymczasowych odbywa się poprzez analizę ruchu wyjściowego (podczas rozpoczęcia nowej sesji IP) a wpisy są usuwane po zakończeniu sesji.</p> <p>&nbsp;</p> <p>Aby pokazać spos&oacute;b działania list zwrotnych ACL i ich konfigurację wykonajmy ćwiczenie w kt&oacute;rym pozwolimy na łączność WWW i DNS - ruch musi być zainicjowany po stronie sieci lokalnej. Ruch sieciowy pochodzący z zewnątrz ma zostać zablokowany.</p> <p>&nbsp;</p> <p>Etapy konfiguracji list zwrotnych przedstawiają się następująco (do om&oacute;wienia tego typu list ACL została użyta ta sama topologia sieciowa co w przykładzie wyżej):</p> <p>&nbsp;</p> <p>Krok 1.</p> <p>Rozpoczynamy od utworzenia wewnętrznej listy ACL (jest to lista rozszerzona), kt&oacute;rej zadaniem jest sprawdzanie połączeń wyjściowych - punkt 1 (lista ta przyjęła nazwę WEW_ACL). W scenariuszu szukanymi połączeniami będę te, kt&oacute;re odpowiadają za ruch związany z przeglądaniem stron internetowych i rozwiązywaniem nazw domenowych (DNS) - punkt 2 (korzystanie z usługi DNS zostało ustalone na 5 sekundowy timeout).</p> <p>Stworzenie wewnętrznej ACL, kt&oacute;ra szuka nowych połączeń wyjściowych i tworzy tymczasowe zwrotne ACE (wpisy do ACL)</p> <p>&nbsp;</p> <p>Krok 2.</p> <p>Aby połączenie doszło do skutku musimy pozwolić na ruch powrotny dlatego w tym celu została utworzona zewnętrzna lista ACL (lista ta przyjęła nazwę ZEW_ACL) - punkt 3. Podczas definicji warunk&oacute;w określających dozwolony ruch sieciowy został użyty parametr: <strong>reflect</strong> Zadaniem tej opcji jest przekazanie informacji o ruchu wyjściowym tak by poprzez utworzenie odpowiednich wpis&oacute;w tymczasowych ruch powrotny nie był blokowany. Ruch związany z WWW zostaje przekazany do zmiennej <strong>WWW</strong> zaś informacja o ruchu domenowym do zmiennej <strong>DNS</strong> (punkt 2). W zewnętrznej liście ACL dzięki użyciu flagi: <strong>evaluate</strong> następuje definicja zmiennych <strong>WWW</strong> oraz <strong>DNS</strong> - punkt 4.</p> <p>Dzięki takiej konfiguracji będą mogły zostać utworzone wpisy tymczasowe, kt&oacute;re router utworzy automatycznie dzięki analizie połączeń (informacji zawartych w nagł&oacute;wkach pakiet&oacute;w) a kt&oacute;rych zadaniem jest zezwolenie na ruch pakiet&oacute;w od strony Internetu do naszej sieci wewnętrznej. Inny ruch sieciowy od strony Internetu do sieci wewnętrznej nie będzie przepuszczony gdyż nie jest on częścią połączenia, kt&oacute;re zostało zainicjowane po stronie sieci lokalnej. Warunek: <strong>deny ip any any</strong> jawnie zabrania na jakąkolwiek komunikację z wykorzystaniem protokołu IP.</p> <p>&nbsp;</p> <p>Krok 3.</p> <p>Ostatnią czynnością jest umieszczenie utworzonych list ACL na odpowiednich interfejsach. Ponieważ lista ACL WEW_ACL zezwala na połączenia WWW oraz DNS zostaje ona umieszczona na interfejsie po stronie Internetu w kierunku wyjściowym (punkt 5) zaś w liście ACL ZEW_ACL będą tworzone wpisy tymczasowe zezwalające na ruch powrotny to kierunek działania tej listy został zdefiniowany na: in (wejście) - punkt 6.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image110.png" alt="image110" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Listy zwrotne ACL zostały skonfigurowane, sprawdźmy zatem efekt przeprowadzonej konfiguracji. Host 192.168.0.1 znajduje się w sieci lokalnej i powinien mieć możliwość komunikacji z serwerem www. Jak widać poniżej po wprowadzeniu adresu serwera w oknie przeglądarki połączenie WWW zostaje nawiązane. Test ping pomiędzy hostem a serwerem kończy się niepowodzeniem gdyż ruch ICMP nie pasuje do zdefiniowanych reguł i dlatego jest blokowany.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image111.png" alt="image111" width="700" height="626" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Wydanie polecenia: <strong>show access-lists</strong> ukaże nam ilość zastosowania warunk&oacute;w. Jak można stwierdzić poniżej ruch WWW i DNS opuszczający naszą sieć lokalną jest prawidłowo przesyłany dalej.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image112.png" alt="image112" width="700" height="193" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Zwrotne listy ACL dla początkujących mogą stanowić pewne wyzwanie tak więc spr&oacute;bujmy prześledzić jeszcze jeden przykład. Bazujemy na tej samej topologii i spr&oacute;bujmy wykonać przykład w kt&oacute;rym będzie można wykonać test przy użyciu polecenia: ping Założenie ćwiczenia jest takie, że wykorzystujemy zwrotną listę ACL; test ping następuje z sieci 192.168.0.0/24 do sieci 192.168.1.0/24 Sieć 192.168.1.0/24 oczywiście nie może bezpośrednio skomunikować się z siecią 192.168.0.0/24 przy użyciu protokołu ICMP; inny ruch jest dozwolony.</p> <p>&nbsp;</p> <p>Tak jak w poprzednim przykładzie rozpoczynamy od definicji warunk&oacute;w listy ACL, kt&oacute;ra będzie sprawdzać ruch wyjściowy &ndash; lista ACL została nazwana: PING_OUT W warunkach listy została zdefiniowana reguła ICMP_POWROT odpowiedzialna za utworzenie wpis&oacute;w pozwalających na powr&oacute;t pakiet&oacute;w ICMP. Wpis: <strong>permit ip any any</strong> zezwala na ruch związany z protokołem IP (punkt 1).</p> <p>&nbsp;</p> <p>W drugiej liście ACL za pomocą słowa evaluate określono regułę zwrotną ICMP_POWROT odpowiedzialną za przepuszczenie ruchu sieciowego ICMP pochodzącego z zewnątrz a będący odpowiedzią na ruch zainicjowany z sieci lokalnej. Jeśli router poprzez analizę danych zawartych w nagł&oacute;wku pakietu nie dopasuje go do reguły ICMP_POWROT nastąpi pr&oacute;ba dopasowania do warunk&oacute;w zdefiniowanych dalej. Warunek: <strong>deny icmp ip any any</strong> jawnie zabrania na ruch ICMP, kt&oacute;ry nie spełnia wymog&oacute;w ruchu zwrotnego (punkt 2).</p> <p>&nbsp;</p> <p>Ostatnią czynnością jest przypisanie utworzonych list do interfejsu oraz określenie kierunku ich działania. Ponieważ lista PING_OUT odpowiada za ruch wychodzący jej kierunek działania został zdefiniowany na wyjście. Natomiast lista ACL jest listą analizującą ruch powrotny tak więc kierunek działania został ustalony na wejście (punkt 3).</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image113.png" alt="image113" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Nie pozostaje nam nic innego jak sprawdzić efekt działania zdefiniowanych list ACL.</p> <p>&nbsp;</p> <p>Przeprowadźmy test z ping z hosta 192.168.0.1 w kierunku hosta 192.168.1.1 Jak można stwierdzić po analizie zrzutu poniżej test kończy się sukcesem. Powrotny ruch ICMP został przepuszczony gdyż był on częścią sesji kr&oacute;ra została zapoczątkowywana po stronie sieci 192.168.0.0/24</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image114.png" alt="image114" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Ruch ICMP w drugim kierunku (od hosta 192.168.1.1 w kierunku hosta 192.168.0.1) jest blokowany gdyż router wie iż ruch ten nie stanowi części komunikacji.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image115.png" alt="image115" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Przy definicji warunku: <strong>deny icmp ip any any </strong>użyliśmy parametru <strong>log</strong>, kt&oacute;ry pozwoli nam na uzyskanie więcej szczeg&oacute;ł&oacute;w na temat zablokowanych pakiet&oacute;w. Jak widać zablokowane pakiety zostały wysłane z hosta 192.168.1.1 a zgodnie z zdefiniowanymi listami ACL pakiety te mają być blokowane.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image116.png" alt="image116" width="700" height="225" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Dzięki zaś zezwoleniu na dowolny ruch IP (warunki: <strong>permit ip any any</strong>) komunikacja z hostami zostaje zachowana &ndash; pr&oacute;ba skopiowania pliku pomiędzy hostami kończy się sukcesem.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image117.png" alt="image117" width="700" height="517" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Aby użytkownicy mogli uzyskać dostęp do chronionych przez listę ACL obszar&oacute;w sieci administrator może wykorzystać do tego celu tzw. <strong>listy dynamiczne</strong> (ang. dynamic ACL). Ten typ list nazywany jest r&oacute;wnież listami <strong>lock-and-key</strong> (zamek i klucz). Zadaniem tego typu list jest uwierzytelnienie użytkownika i po prawidłowym przeprowadzeniu tego procesu użytkownik uzyskuje dostęp do chronionego obszaru sieci (możliwość nawiązania połączenia z hostem lub całą podsiecią. Dostęp jest przyznawany przez ograniczony czas.</p> <p>&nbsp;</p> <p>Spos&oacute;b działania list dynamicznych opiera się o takie mechanizmy jak:</p> <ul> <li style="padding-left: 60px;">łączność telnet bądź SSH,</li> <li style="padding-left: 60px;">uwierzytelnianie lokalne lub zdalne,</li> <li style="padding-left: 60px;">rozszerzone ACL.</li> </ul> <p>&nbsp;</p> <p>Spos&oacute;b działania oraz konfiguracja dynamicznej listy ACL można opisać w następujących krokach:</p> <ul> <li style="padding-left: 60px;">rozpoczynamy od zdefiniowania rozszerzonej listy ACL, kt&oacute;rej zadaniem jest blokada ruchu sieciowego z wyjątkiem połączeń Telnet bądź SSH,</li> <li style="padding-left: 60px;">użytkownicy, kt&oacute;rzy chcą połączyć się z siecią, kt&oacute;ra jest chroniona przez listę ACL są tak długo blokowani, dop&oacute;ki nie wykonają połączenia Telnet. Nawiązanie połączenia oczywiście musi zakończyć się sukcesem tzn. by połączenie doszło do skutku należy poprawnie się uwierzytelnić,</li> <li style="padding-left: 60px;">po nawiązaniu połączenia Telnet (bądź SSH). Połączenie zostaje zakończone automatycznie,</li> <li style="padding-left: 60px;">poprawne uwierzytelnienie spowoduje dodanie jednego dynamicznego warunku do już istniejącej listy ACL,</li> <li style="padding-left: 60px;">dodany wpis umożliwia nawiązanie połączenia z siecią, kt&oacute;ra w normalnych warunkach jest niedostępna. Dodatkowo możliwe jest określenie czasu bezczynności oraz timeout.</li> </ul> <p>&nbsp;</p> <p>Dynamiczne listy ACL stosujemy w celu:</p> <ul> <li style="padding-left: 60px;">aby zapewnić użytkownikowi bądź grupie użytkownik&oacute;w zdalnych dostęp do sieci wewnętrznej,</li> <li style="padding-left: 60px;">aby hosty w sieci lokalnej miały dostęp do host&oacute;w w sieci zdalnej, chronionej przez firewall.</li> </ul> <p>&nbsp;</p> <p>Konfigurację listy dynamicznej rozważymy na już znanej nam topologii sieciowej, kt&oacute;ra dla przypomnienia została przedstawiona poniżej. Celem naszego ćwiczenia jest umożliwienie hostowi 192.168.0.1 nawiązanie połączenia z komputerem 192.168.1.1. Zadanie ma być wykonane oczywiście przy wykorzystaniu listy dynamicznej ACL.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image118.png" alt="image118" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Kolejną czynnością jest definicja listy ACL. W pierwszym kroku zezwalamy na nawiązanie połączenia Telnet z interfejsem routera &ndash; punkt 2. Interfejs routera z kt&oacute;rym będzie nawiązywane połączenie Telnet oczywiście dla hosta 192.168.0.1 musi być osiągalne. Dlatego też interfejs routera został ustalony na 192.168.0.254 gdyż oba adresy IP leżą w wsp&oacute;lnej przestrzeni adresowej IP.</p> <p>&nbsp;</p> <p>Kolejny warunek listy ACL jest wpisem dynamicznym o nazwie DOSTEP Wpis ten zawiera warunek zezwalający na łączność pomiędzy sieciami 192.168.0.0/24 a 192.168.1.0/24 Wpis ten zostanie dodany po nawiązaniu połączenia Telnet i poprawnym uwierzytelnieniu &ndash; punkt 3.</p> <p>&nbsp;</p> <p>Po definicji listy ACL następuje jej powiązanie z interfejsem f0/0 routera R1.</p> <p>&nbsp;</p> <p>Aby lista ACL zadziałała musimy oczywiście zezwolić na nawiązanie połączenia Telnet. Tak więc kolejny krok (punkt 4) odpowiada za konfigurację linii VTY tak by sesja Telnet mogła zostać z routerem prawidłowo nawiązana. Zostaje ustawione uwierzytelnienie, kt&oacute;re ma być przeprowadzone przy wykorzystaniu lokalnej bazy użytkownik&oacute;w.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image119.png" alt="image119" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>Ponieważ na zrzucie powyżej nie wszystkie polecenia zostały uwidocznione poniżej jeszcze raz została przedstawiona konfiguracja dynamicznej listy ACL.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image120.png" alt="image120" width="700" height="234" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Sprawdźmy zatem dostępność sieci 192.168.1.1/24 z poziomu hosta 192.168.0.1 i wykonajmy test ping. Jak widać brak jest możliwości nawiązania połączenia pomiędzy obiema sieciami &ndash; host 192.168.0.1 nie może skomunikować się z hostem 192.168.1.1</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image121.png" alt="image121" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Aby hosty mogły swobodnie między sobą prowadzić wymianę danych należy dodać warunek do listy ACL, kt&oacute;ry na taką komunikację pozwoli. Warunek ten zostanie dodany dynamicznie po poprawnym uwierzytelnieniu się za pomocą usługi Telnet. Nawiążmy więc połączenie Telnet z routerem R1.</p> <p>&nbsp;</p> <p>Jak widać po kolejnym zrzucie połączenie zostało nawiązane i po podaniu prawidłowych danych użytkownika automatycznie zamknięte.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image122.png" alt="image122" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Sprawdźmy stan listy ACL. Rysunek poniżej przedstawia listę ACL przed nawiązaniem połączenia Telnet (punkt 1) i po nawiązaniu połączenia &ndash; punkt 2. R&oacute;żnica pomiędzy oboma stanami listy ACL tkwi w dodaniu jednego warunku do listy ACL po nawiązaniu połączenia Telnet. Warunek ten zezwala na komunikację pomiędzy sieciami.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image123.png" alt="image123" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Ponowne wykonanie testu ping zostaje zakończone sukcesem, hosty nawiązały między sobą komunikację.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image124.png" alt="image124" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Sprawdzenie listy ACL da nam informację o ilości dopasowań oraz czasie aktywności dynamicznego wpisu.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image125.png" alt="image125" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Dynamiczna lista ACL została skonfigurowana prawidłowo.</p> <p>&nbsp;</p> <p>Istnieje jeszcze jeden typ list ACL są to tzw. listy ACL czasowe (ang. time-based). Listy te pozwalają nam prowadzić kontrolę dostępu w oparciu o czas. Czasowe listy ACL są wygodnym mechanizmem gdyż z ich wykorzystaniem możemy dostęp do sieci przyznawać bądź odbierać w zależności od dnia tygodnia czy godziny.</p> <p>&nbsp;</p> <p>Standardowo aby wytłumaczyć implementację czasowej listy ACL wykonajmy ćwiczenie, kt&oacute;rego założenie jest następujące &ndash; Zabrońmy na komunikację pomiędzy sieciami 192.168.0.0/24 a 192.168.1.0/24 w każdy czwartek pomiędzy godziną 21:40 a 21:50. Oczywiście bazujemy nadal na tej samej topologii sieciowej co w poprzednich ćwiczeniach.</p> <p>&nbsp;</p> <p>Aby zaimplementować time-based ACL rozpoczynamy od utworzenia zakresu czasu (time-range), kt&oacute;ry definiuje czas w kt&oacute;rym lista ACL będzie aktywna. Stworzony zakres czasu ma przypisaną nazwę, do kt&oacute;rej będziemy odwoływać się podczas tworzenia warunk&oacute;w listy ACL. Ograniczenia zaś są definiowane przez samą listę ACL.</p> <p>&nbsp;</p> <p>Rozpoczynamy od zdefiniowania zakresu. Time-range definiujemy w trybie konfiguracji globalnej po wydaniu polecenia: <strong>time-range &lt;nazwa_zakresu&gt; </strong>Po wydaniu polecenia określamy ramy czasowe. Interesujący nas okres obejmuje czwartek pomiędzy godziną 21:40 a 21:50 tak więc w trybie definicji zakresu wydajemy polecenie: Thursday 21:40 to 21:50 a że zdefiniowany interwał czasowy ma obejmować każdy czwartek zostaje dodany parametr: <strong>periodic </strong>Zdefiniowanemu zakresowi została przypisana nazwa: <strong>DOSTEP</strong></p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image126.png" alt="image126" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po zdefiniowaniu czasu obowiązywania listy ACL przystępujemy do określenia warunk&oacute;w samej listy ACL. Celem zadania jest uniemożliwienie komunikacji pomiędzy sieciami tak więc warunek listy ACL przyjmuje postać<strong>: deny ip any any</strong> a dodatkowo dzięki parametrowi: <strong>time-range</strong> do warunku zostaje przypisany zakres czasowy obowiązywania tego wpisu.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image127.png" alt="image127" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Stworzona lista ACL zostaje przypisana do interfejsu f0/0 routera R1. Kierunek działania listy został ustalony na wejście.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image128.png" alt="image128" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Sprawdzenie listy uwidacznia jej stan &ndash; lista ACL jest nieaktywna.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image129.png" alt="image129" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Lista ACL jest nieaktywna tak więc określone warunki listy nie są włączone. Sprawdźmy zatem czy uda nam się nawiązać komunikację pomiędzy hostami 192.168.0.1 a 192.168.1.1. Test ping kończy się niepowodzeniem. Czas wykonania testu to 21:35 czyli poza ustalonymi ramami zakresu &ndash; warunek zabraniający na komunikację ma być aktywny od 21:40</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image130.png" alt="image130" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Lista ACL nie obowiązuje a my nie mamy dostępu do sieci 192.168.1.0/24 a według założeń scenariusza dostęp ma być odebrany tylko na 10 minut pomiędzy 21:40 a 21:50 Lista ACL zabrania na komunikację ponieważ nie wolno zapomnieć iż pomimo tego, że jest to czasowa lista ACL to nadal jest to lista ACL na końcu, kt&oacute;rej jest umieszczony niejawny warunek: <strong>deny any any</strong> Tak więc by komunikacja pomiędzy ustalonym zakresem była możliwa trzeba za pomocą warunku: <strong>permit ip any any</strong> jawnie na ruch sieciowy zezwolić.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image131.png" alt="image131" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Sprawdzenie listy ACL uwidacznia dodany warunek. Lista odbierająca dostęp do sieci 192.168.1.0/24 jest nieaktywna.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image132.png" alt="image132" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Sprawdźmy zatem jeszcze raz czy uda się nawiązać połączenie pomiędzy hostami. Połączenie doszło do skutku, wprowadzona korekta zdała egzamin. Połączenie jest możliwe gdyż czas obowiązywania zakazu jeszcze nie nadszedł.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image133.png" alt="image133" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po 21:40 w czwartek wpis zabraniający na komunikację z stanu nieaktywny przechodzi do stanu aktywny. Ponieważ reguła ma niższy numer sekwencyjny jest stosowana jako pierwsza.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image134.png" alt="image134" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Komunikacja pomiędzy obiema podsieciami jest niemożliwa.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image135.png" alt="image135" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Ponowne sprawdzenie listy ACL uwidacznia liczbę dokonanych dopasowań.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image136.png" alt="image136" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po godzinie 21:50 (oczywiście w czwartek) reguła kończy swe działanie.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image137.png" alt="image137" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Komunikacja pomiędzy sieciami zostaje przywr&oacute;cona.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image138.png" alt="image138" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Z mechanizmem ACL związana jest jeszcze jedna funkcja a mianowicie grupy obiekt&oacute;w w listach ACL.</p> <p>&nbsp;</p> <p>Grupy obiekt&oacute;w pozwalają nam na dokonanie klasyfikacji użytkownik&oacute;w, urządzeń oraz protokoł&oacute;w w grupy. Po dokonaniu przypisania do określonych grup możliwe jest utworzenie reguł kontroli dostępu obejmujących całą grupę.</p> <p>&nbsp;</p> <p>Grupy obiekt&oacute;w można tworzyć zar&oacute;wno dla IPv4, jak i dla IPv6.</p> <p>&nbsp;</p> <p>Aby om&oacute;wić ten mechanizm przyjmijmy, że mamy do czynienia z topologią sieciową przedstawioną na rysunku poniżej.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image139.png" alt="image139" width="700" height="417" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>W przedstawionej powyżej topologii mamy do czynienia z trzema serwerami, z kt&oacute;rych każdy wymaga zezwolenia na ruch z zewnątrz dla trzech protokoł&oacute;w. Protokoły te to: SMTP (port 25), HTTP (port 80) oraz HTTPS (port 443).</p> <p>&nbsp;</p> <p>Podczas definicji warunk&oacute;w listy ACL musielibyśmy utworzyć wpisy typu <strong>permit</strong> dla każdego serwera i dla każdego protokołu z osobna. Przykładowa konfiguracja routera wyglądałaby następująco:</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image140.png" alt="image140" width="700" height="338" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>W przypadku dodania kolejnego serwera jak r&oacute;wnież i dodatkowych protokoł&oacute;w musielibyśmy edytować listę ACL tak aby uwzględnić nowe wymagania.</p> <p>&nbsp;</p> <p>Aby zaoszczędzić sobie czasu i problem&oacute;w z bezpośrednią edycją listy ACL możemy wykorzystać mechanizm grup obiekt&oacute;w.</p> <p>&nbsp;</p> <p>Konfiguracja rozpoczyna się od utworzenia grupy usług (ang. service group). Poniżej na listingu została utworzona grupa usług o nazwie: <strong>USŁUGI</strong></p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image141.png" alt="image141" width="700" height="151" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Następnym etapem jest, utworzenie grupy urządzeń (ang. network group). Podczas definicji członk&oacute;w grupy możemy skorzystać ze słowa kluczowego range lub host a także zdefiniować podsieć. Poniżej została utworzona grupa urządzeń o nazwie <strong>SERWERY</strong></p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/acl/image142.png" alt="image142" width="700" height="88" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Ostatnim zaś krokiem jest utworzenie samej listy ACL.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image143.png" alt="image143" width="700" height="119" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Aby lista mogła zacząć działać trzeba ją jeszcze powiązać z danym interfejsem. W naszym scenariuszu oczywiście będzie to interfejs routera znajdujący się od strony Internetu a kierunek działania musi przyjąć stan: <strong>in</strong></p> <p>&nbsp;</p> <p>Odtąd gdy zostanie dodany nowy serwer bądź usługa należy jedynie zmodyfikować grupę obiekt&oacute;w.</p> <p>&nbsp;</p> <p>Powoli zbliżamy się do końca wpisu więc jako ostatni punkt naszych rozważań przed podsumowaniem proponuję kilka przykład&oacute;w najczęściej stosowanych list ACL.</p> <p>&nbsp;</p> <p>Lista ACL przedstawiona poniżej odpowiada za zablokowanie pakiet&oacute;w TCP z ustawionymi niedozwolonymi flagami tj. pakiet&oacute;w, kt&oacute;re w normalnym funkcjonowaniu sieci nigdy nie powinny zostać utworzone. Więcej na ten temat znajdziesz w wpisie: <a href="http://slow7.pl/item/121-co-w-sieci-siedzi-skanowanie-portow" title="Co w sieci siedzi. Skanowanie port&oacute;w.">Co w sieci siedzi. Skanowanie port&oacute;w.</a> Zastosowanie poniższych warunk&oacute;w zablokuje metody skanowania, kt&oacute;re mogłyby być wykorzystane przez atakującego naszą sieć.</p> <p>&nbsp;</p> <p>access-list 111 deny tcp any any ack fin psh rst syn urg</p> <p>access-list 111 deny tcp any any fin</p> <p>access-list 111 deny tcp any any urg psh fin</p> <p>access-list 111 deny tcp any any rst syn</p> <p>access-list 111 deny tcp any any rst syn fin</p> <p>access-list 111 deny tcp any any syn fin</p> <p>access-list 111 deny tcp any any rst syn fin ack</p> <p>access-list 111 deny tcp any any syn fin ack</p> <p><strong>&nbsp;</strong></p> <p>Ze względ&oacute;w bezpieczeństwa i dobrą praktyką jest na routerze brzegowym zablokowanie wszystkich pakiet&oacute;w, kt&oacute;re mają następujące adresy źr&oacute;dłowe IP:</p> <ul> <li style="padding-left: 60px;">Adresy typu: local host (127.0.0.0/8)</li> <li style="padding-left: 60px;">Adresy przypisane siecią prywatnym (10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16),</li> <li style="padding-left: 60px;">Adresy z grupy multikastowej (224.0.0.0/4).</li> </ul> <p>&nbsp;</p> <p>Przykładowa lista ACL mogłaby mieć postać:</p> <p>access-list 180 deny ip 0.0.0.0 0.255.255.255 any</p> <p>access-list 180 deny ip 127.0.0.0 0.255.255.255 any</p> <p>access-list 180 deny ip 10.0.0.0 0.255.255.255 any</p> <p>access-list 180 deny ip 172.16.0.0 0.15.255.255 any</p> <p>access-list 180 deny ip 192.168.0.0 0.0.255.255 any</p> <p>access-list 180 deny ip 224.0.0.0 15.255.255.255 any</p> <p>access-list 180 deny ip host 255.255.255.255 any</p> <p>&nbsp;</p> <p>Kolejny przykład zabrania na ruch sieciowy (wyjściowy) pakietom z adresem źr&oacute;dłowym IP innym, niż ten, kt&oacute;ry obowiązuje w sieci wewnętrznej (czyli zakres adres&oacute;w IP, kt&oacute;ry sam ustaliłeś).</p> <p>access-list 180 deny ip &lt;ustalony_adres_sieci&gt; any</p> <p><strong>&nbsp;</strong></p> <p><strong>Ograniczenie dostępu do routera przy połączeniach zdalnych</strong></p> <p>Połączenie z routerem może ustanowić host o zdefiniowanym adresie IP.</p> <p>access-list 90 permit host &lt;adres_IP&gt;</p> <p>access-list 90 deny any</p> <p>W trybie konfiguracji linii VTY</p> <p>access-class 90 in</p> <p><strong>&nbsp;</strong></p> <p><strong>Zabronienie na ruch Telnet (TCP, Port 23)</strong></p> <p>access-list 102 deny tcp any any eq 23</p> <p>access-list 102 permit ip any any</p> <p><strong>&nbsp;</strong></p> <p><strong>Zabronienie na ruch FTP (TCP, Port 21)</strong></p> <p>access-list 102 deny tcp any any eq ftp</p> <p>access-list 102 deny tcp any any eq ftp-data</p> <p>access-list 102 permit ip any any</p> <p><strong>&nbsp;</strong></p> <p><strong>Zezwolenie na ruch FTP</strong></p> <p>access-list 102 permit tcp any any eq ftp</p> <p>access-list 102 permit tcp any any eq ftp-data established</p> <p><strong>&nbsp;</strong></p> <p><strong>Zezwolenie na ruch DNS</strong></p> <p>access-list 112 permit udp any any eq domain</p> <p>access-list 112 permit udp any eq domain any</p> <p>access-list 112 permit tcp any any eq domain</p> <p>access-list 112 permit tcp any eq domain any</p> <p><strong>&nbsp;</strong></p> <p><strong>Zezwolenie na aktualizacje związane z routingiem</strong></p> <p>Protok&oacute;ł RIP - access-list 102 permit udp any any eq rip</p> <p>Protok&oacute;ł IGRP - access-list 102 permit igrp any any</p> <p>Protok&oacute;ł EIGRP - access-list 102 permit eigrp any any</p> <p>Protok&oacute;ł OSPF - access-list 102 permit ospf any any</p> <p>Protok&oacute;ł BGP - access-list 102 permit tcp any any eq 179 oraz access-list 102 permit tcp any eq 179 any</p> <p>&nbsp;</p> <p>Podsumowanie (czyli to co warto powt&oacute;rzyć bądź to o czym zapomniałem a co warto wiedzieć):</p> <ul> <li style="margin-left: 30px;">Osobna lista ACL powinna istnieć dla każdego protokołu i kierunku.</li> <li style="margin-left: 30px;">Standardowe listy ACL umiejscawiamy jak najbliżej miejsca docelowego, kt&oacute;rego dotyczą.</li> <li style="margin-left: 30px;">Rozszerzone listy ACL umieszczamy jak najbliżej źr&oacute;dła, kt&oacute;rego dotyczą.</li> <li style="margin-left: 30px;">Warunki budujące listę ACL są analizowane po kolei od g&oacute;ry do dołu aż do odnalezienia dopasowania o położeniu danego wpisu decyduje numer sekwencyjny.</li> <li style="margin-left: 30px;">Jeśli po analizie listy ACL nie wykryto dopasowania do żadnego z zdefiniowanych warunk&oacute;w pakiet jest odrzucany na wskutek działania nie jawnej instrukcji: deny any. Warunek ten nie jest uwzględniany na listingach konfiguracji.</li> <li style="margin-left: 30px;">Warunki budujące daną listę ACL powinny zostać zdefiniowane w kolejności od szczeg&oacute;łowych do og&oacute;lnych. Oznacza to iż na początku listy ACL znajdują się instrukcje dotyczące pojedynczych host&oacute;w zaś po nich instrukcje odnoszące się do grup i og&oacute;łu.</li> <li style="margin-left: 30px;">W przypadku wildcard mask bit 0 oznacza - wykonaj dopasowanie, zaś bit 1 - zignoruj.</li> <li style="margin-left: 30px;">Tworzone wpisy listy ACL zawsze są dodawane na końcu listy.</li> <li style="margin-left: 30px;">Zanim zostanie zastosowana instrukcja permit bądź deny musi nastąpić zgodność dopasowania informacji zawartych w nagł&oacute;wku pakietu do warunku listy ACL.</li> <li style="margin-left: 30px;">Komentarze o sposobie działania listy ACL umieszczamy w osobnym pliku, zaś w opisie listy ACL definiujemy nazwę pliku zawierającego opis.</li> <li style="margin-left: 30px;">Lista ACL dla ruchu wychodzącego nie jest stosowana dla pakiet&oacute;w, kt&oacute;rych źr&oacute;dłem jest router lokalny.</li> <li style="margin-left: 30px;">Jeśli potrzeba jest ograniczenia ruchu sieciowego w oparciu o czas zastosuj listy ACL czasowe (ang. time-based).</li> <li style="margin-left: 30px;">Aby użytkownicy mogli uzyskać dostęp do chronionych przez listę ACL obszar&oacute;w sieci wykorzystaj do tego celu listy dynamiczne.</li> <li style="margin-left: 30px;">Listy typu reflexive ACL umożliwiają filtrowanie ruchu w oparciu o adresy źr&oacute;dłowe i docelowe oraz numery port&oacute;w. Ich użycie nie ogranicza się tylko do protokołu TCP jak to ma miejsce w przypadku list ACL Established.</li> </ul> <p>&nbsp;</p> <p>Rozwiązanie</p> <p>Możliwa jest taka definicja listy ACL gdyż zapis: <strong>permit 192.168.0.6 0.0.0.1</strong> zezwala na ruch sieciowy pochodzący od host&oacute;w z zdefiniowanymi adresami IP 192.168.0.6 oraz 192.168.0.7 Dzieje się tak ponieważ maska wieloznaczna 0.0.0.1 tożsama jest z podsiecią 255.255.255.254 a sieć ta wraz w połączeniu z adresem IP 192.168.0.6 definiuje tylko dwa adresy IP - 192.168.0.6 oraz 192.168.0.7</p> <p>&nbsp;</p> <p>Po dokonaniu korekty jak widać poniżej z hosta 192.168.0.1 nie udaje nam się spingować komputer 192.168.1.1</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image144.png" alt="image144" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Zaś przy użyciu hosta 192.168.0.6 test ping kończy się sukcesem.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image145.png" alt="image145" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Sprawdzenie listy ACL tylko utwierdza nas w przekonaniu iż przyjęte rozwiązanie jest jak najbardziej prawidłowe.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image146.png" alt="image146" style="display: block; margin-left: auto; margin-right: auto;" /></p></div> <div class="K2FeedImage"><img src="http://slow7.pl/media/k2/items/cache/9ded0288e863fbe79d863f606cb05c21_S.jpg" alt="Listy kontroli dostępu ACL" /></div><div class="K2FeedIntroText"><p>Administratorzy by sprawnie zarządzać swoją siecią muszą dysponować narzędziami, kt&oacute;re pozwolą im na kształtowanie ruchu sieciowego według własnych potrzeb i wymagań. Takim narzędziem, kt&oacute;re pozwala na filtrację pojawiających się w sieci pakiet&oacute;w jest lista ACL. Mechanizm ACL jest bardzo ważnym elementem konfiguracji routera gdyż pozwala na ustalenie zasad, kt&oacute;re niepożądanym użytkownikom zabronią dostępu do sieci a tym zaufanym udostępnią niezbędne usługi.</p> </div><div class="K2FeedFullText"> <p>&nbsp;</p> <p>ACL to lista z zdefiniowanymi instrukcjami zezwoleń bądź zakaz&oacute;w, kt&oacute;ra jest wykonywana sekwencyjnie (od g&oacute;ry do dołu). Instrukcje zawierają informacje o adresach IP, protokołach, numerach port&oacute;w co do kt&oacute;rych ma być podjęta decyzja o odrzuceniu bądź przepuszczeniu danego pakietu.</p> <p>&nbsp;</p> <p>Zastosowanie list ACL sprowadza się do:</p> <p>&nbsp;</p> <p style="margin-left: 30px;"><strong>Zapewnienie zabezpieczeń podczas dostępu do sieci</strong> - gł&oacute;wny cel stosowania list ACL czyli kontrola nad dostępnością obszar&oacute;w naszej sieci bądź usług, m&oacute;wiąc prościej &ndash; tam gdzie jeden host ma umożliwiony dostęp, to drugiemu ten dostęp jest ograniczany. Dzięki listą ACL administrator ma możliwość definiowania obszar&oacute;w oraz ich dostępności dla poszczeg&oacute;lnych urządzeń budujących sieć.</p> <p style="margin-left: 30px;"><strong>Możliwość decydowania o typie przenoszonego ruchu sieciowego</strong> &ndash; w ramach listy ACL mogą zostać zdefiniowane dozwolone protokoły oznacza to możliwość przyznawania i odbierania użytkownikom praw dostępu do określonych usług np. dozwolony jest ruch sieciowy w ramach komunikacji WWW ale już ruch FTP nie.</p> <p style="margin-left: 30px;"><strong>Kontrola nad aktualizacjami tras routingu</strong> &ndash; listy ograniczają dostarczanie aktualizacji tras w ramach protokołu dynamicznego odpowiedzialnego za routing w sieci.</p> <p style="margin-left: 30px;"><strong>Ograniczenie ruchu w sieci i zwiększenie wydajności</strong> - np. blokada streamingu video spowoduje zmniejszenie obciążenia sieci przez co zwiększy się jej wydajność.</p> <p>&nbsp;</p> <p>Decyzja o przepuszczeniu bądź odrzuceniu pakietu może być podejmowana w oparciu o takie informacje jak:</p> <ul> <li style="padding-left: 60px;">źr&oacute;dłowy adres IP,</li> <li style="padding-left: 60px;">docelowy adres IP,</li> <li style="padding-left: 60px;">źr&oacute;dłowy numer portu,</li> <li style="padding-left: 60px;">docelowy numer portu,</li> <li style="padding-left: 60px;">protok&oacute;ł,</li> <li style="padding-left: 60px;">inne (np. rodzaj wiadomości ICMP).</li> </ul> <p>&nbsp;</p> <p>Gdy pakiet przechodzi przez dany interfejs routera do kt&oacute;rego została przypisana lista ACL, jest ona przeglądana od g&oacute;ry do dołu, linijka po linijce celem wykrycia dopasowania z informacją zawartą w nagł&oacute;wku pakietu.</p> <p>&nbsp;</p> <p>Pierwsza linijka ACL, co do kt&oacute;rej nastąpi dopasowanie jest stosowana &ndash; jeśli w warunku listy została zdefiniowana instrukcja typu <strong>permit</strong>, pakiet jest przepuszczany, jeśli zaś w warunku istnieje instrukcja typu <strong>deny</strong>, pakiet jest odrzucany.</p> <p>&nbsp;</p> <p style="text-align: center;"><strong>Kolejne warunki listy ACL nie są sprawdzane !!!!!!</strong></p> <p>&nbsp;</p> <p>Domyślnie na żadnym interfejsie nie ma założonych list ACL.</p> <p>&nbsp;</p> <p>Listy ACL najczęściej zakłada się na routerach brzegowych czyli na styku sieci wewnętrznej a Internetem. Listy ACL r&oacute;wnież często są definiowane na routerach łączących dwa odrębne obszary sieci - np. sieć dla pracownik&oacute;w i sieć dla uczni&oacute;w czy pomiędzy sieciami VLAN.</p> <p>&nbsp;</p> <p>Listy ACL są definiowane osobno dla każdego <strong>protokołu</strong> (choć przy obecnej dominacji IP nie ma to już tak dużego znaczenia), <strong>kierunku</strong> oraz <strong>interfejsu</strong>.</p> <ul> <li style="padding-left: 60px;"><strong>per protocol &ndash; na protok&oacute;ł,</strong></li> <li style="padding-left: 60px;"><strong>per direction &ndash; na kierunek,</strong></li> <li style="padding-left: 60px;"><strong>per interface &ndash; na interfejs.</strong></li> </ul> <p>&nbsp;</p> <p>Jedna lista ACL kontroluje ruch na interfejsie w&nbsp;jednym kierunku (wejście:<strong> in</strong> bądź wyjście: <strong>out</strong>) dla danego protokołu. Jeśli router ma dwa interfejsy skonfigurowane dla protokoł&oacute;w IP, AppleTalk i&nbsp;IPX, potrzebnych będzie 12 oddzielnych list ACL.</p> <p>&nbsp;</p> <p style="text-align: center;"><strong>2 interfejsy x 3 protokoły x 2 kierunki = 12 list ACL</strong></p> <p>&nbsp;</p> <p>Listy ACL są definiowane w trybie <strong>konfiguracji globalnej</strong> routera.</p> <p>&nbsp;</p> <p>Podczas konfigurowania listy ACL należy jej nadać unikalny identyfikator (nie mogą istnieć dwie listy o tych samych identyfikatorach). Identyfikatorem listy ACL jest liczba.</p> <p>&nbsp;</p> <p>Tworzenie listy dostępu następuje z wykorzystaniem polecenia: <strong>access-list &lt;numer&gt; &lt;parametry&gt;</strong></p> <p>&nbsp;</p> <p>Numer listy określa jej rodzaj.</p> <p>&nbsp;</p> <p>Numery list ACL zostały określone następująco:</p> <p style="margin-left: 30px;">&lt;1-99&gt; - standardowa lista dostępu IP</p> <p style="margin-left: 30px;">&lt;100-199&gt; - rozszerzona lista dostępu IP</p> <p style="margin-left: 30px;">&lt;1000-1099&gt; - lista dostępu IPX SAP</p> <p style="margin-left: 30px;">&lt;1100-1199&gt; - rozszerzona lista dostępu 48-bitowych adres&oacute;w MAC</p> <p style="margin-left: 30px;">&lt;1200-1299&gt; - lista dostępu adresu skonsolidowanego IPX</p> <p style="margin-left: 30px;">&lt;1300-1999&gt; - standardowa lista dostępu IP (rozszerzony zakres)</p> <p style="margin-left: 30px;">&lt;200-299&gt; - lista dostępu typu-kodu protokołu</p> <p style="margin-left: 30px;">&lt;300-399&gt; - lista dostępu DECnet</p> <p style="margin-left: 30px;">&lt;600-699&gt; - lista dostępu Appletalk</p> <p style="margin-left: 30px;">&lt;700-799&gt; - lista dostępu 48-bitowych adres&oacute;w MAC</p> <p style="margin-left: 30px;">&lt;800-899&gt; - standardowa lista dostępu IPX</p> <p style="margin-left: 30px;">&lt;900-999&gt; - rozszerzona lista dostępu IPX</p> <p style="margin-left: 30px;">&lt;2000-2699&gt; - rozszerzona lista dostępu IP (rozszerzony zakres)</p> <p>&nbsp;</p> <p>Podczas budowy warunk&oacute;w tworzących daną listę ACL należy zdefiniować spos&oacute;b działania tzn. czy zezwalamy na <strong>dostęp</strong> (permit) czy go <strong>odbieramy</strong> (deny):</p> <p><strong>access-list numer permit ...</strong> lub <strong>access-list numer deny ...</strong></p> <p>&nbsp;</p> <p>Po zdefiniowaniu sposobu działania określamy adres IP lub nazwę hosta.</p> <p><strong>access-list numer permit A.B.C.D</strong> <strong>...</strong> lub <strong>access-list numer deny A.B.C.D</strong> <strong>...</strong></p> <p>&nbsp;</p> <p>Kolejnym krokiem jest definicja tzw. <strong>maski blankietowej</strong> określającej zakres adres&oacute;w co do kt&oacute;rych warunek listy będzie miał zastosowanie. Lecz tu na chwilę zatrzymajmy się gdyż wprowadzanie na tym etapie pojęcia maski blankietowej zbyt by sprawę zagmatwało i przyjmijmy na ten moment, że lista ACL została zdefiniowana. Do tematu oczywiście wr&oacute;cimy w dalszej części wpisu.</p> <p>&nbsp;</p> <p>Po utworzeniu listy ACL nie można zapomnieć o przypisaniu jej do interfejsu routera.</p> <p>&nbsp;</p> <p>Aby &bdquo;założyć&rdquo; listę na danym interfejsie routera przechodzimy do trybu konfiguracji interfejsu i za pomocą komendy: <strong>ip access-group &lt;lista_ACL&gt; {in|out}</strong> dokonujemy powiązania listy ACL z interfejsem (lista ACL będzie działała na wybranym interfejsie).</p> <p><strong>ip access-group numer_listy_dostępu in</strong> lub <strong>ip access-group numer_listy_dostępu out</strong></p> <p>&nbsp;</p> <p>Określenie <strong>in</strong> lub <strong>out</strong> określa listę jako <strong>wejściową</strong> lub <strong>wyjściową</strong>.</p> <p>&nbsp;</p> <p>W routerach Cisco stosowane są dwa zasadnicze rodzaje ACL:</p> <ul> <li style="padding-left: 60px;"><strong>listy standardowe </strong>(ang. standard ACL),</li> <li style="padding-left: 60px;"><strong>listy rozszerzone </strong>(ang. extended ACL).</li> </ul> <p>&nbsp;</p> <p>R&oacute;żnica pomiędzy typem użytej listy sprowadza się do:</p> <p style="padding-left: 30px;"><strong>lista standardowa</strong> - jedynym kryterium, na podstawie kt&oacute;rego router filtruje pakiety jest źr&oacute;dłowy adres IP,</p> <p style="padding-left: 30px;"><strong>lista rozszerzona</strong> - mają dużo większe możliwości, gdyż budowa warunku listy według, kt&oacute;rego będzie prowadzona filtracja pakiet&oacute;w jest możliwa na podstawie: źr&oacute;dłowego adresu IP, docelowego adresu IP, źr&oacute;dłowego bądź docelowego numer portu, protokołu oraz informacji innych jak np. już wyżej wspomniany rodzaj wiadomości ICMP.</p> <p>&nbsp;</p> <p>Zar&oacute;wno listy standardowe, jak i rozszerzone mogą być:</p> <ul> <li style="padding-left: 60px;"><strong>numerowane,</strong></li> <li style="padding-left: 60px;"><strong>nazwane.</strong></li> </ul> <p>&nbsp;</p> <p>Konfigurując <strong>numerowaną</strong> listę ACL przypisujemy jej numer:</p> <ul> <li style="padding-left: 60px;">z zakres&oacute;w 1-99 lub 1300-1999, jeśli chcemy stworzyć listę standardową,</li> <li style="padding-left: 60px;">z zakres&oacute;w 100-199 lub 2000-2699 jeśli chcemy stworzyć listę rozszerzoną.</li> </ul> <p>&nbsp;</p> <p>W przypadku list <strong>nazywanych</strong> każdej liście przypisujemy unikalną nazwę, kt&oacute;ra powinna składać się ze znak&oacute;w alfanumerycznych (przyjęło się używanie zapisu wielkimi literami &ndash; choć oczywiście to tylko sugestia). Lista nazywana nie może zawierać znaku spacji oraz zaczynać się od cyfry.</p> <p>&nbsp;</p> <p>Poniżej na schemacie blokowym przedstawiono schemat działania listy ACL wejściowej (dla tych niewtajemniczonych z algorytmami - prostokąt w schemacie blokowym oznacza wystąpienie czynności zaś romb jest warunkiem, kt&oacute;ry kończy się podjęciem decyzji - analogią do warunku jest funkcja JEŻELI używana m.in w Excelu). Analizowanie danego pakietu rozpoczyna się gdy pakiet trafia do routera. Por&oacute;wnywane są dane zawarte w pakiecie z instrukcjami zawartymi w liście ACL. Por&oacute;wnywanie danych następuje do pierwszego trafienia. Jeśli takowe dopasowanie następuje to jest dane zawarte w odebranym pakiecie pokrywają się z instrukcjami zawartymi w liście ACL następuje przerwanie przetwarzania listy ACL (reszta warunk&oacute;w tworzących listę ACL jest ignorowana). Co do pakietu następuje decyzja o jego odrzuceniu bądź przekazaniu go dalej - wszystko zależy od treści zdefiniowanej instrukcji. Przetwarzanie listy ACL trwa tak długo aż nastąpi dopasowanie bądź zostanie wyczerpana lista nagł&oacute;wk&oacute;w. Po sprawdzeniu wszystkich instrukcji i braku wystąpienia dopasowania odebrany pakiet jest odrzucany - pakiet trafia do &bdquo;kosza&rdquo; na wskutek działania nie jawnej instrukcji: <strong>deny any</strong>. Instrukcja ta jest domyślnie dołączana do każdej listy ACL a jej działanie odnosi się do tych pakiet&oacute;w, kt&oacute;re nie spełniły żadnego z warunk&oacute;w zdefiniowanych w sprawdzanej liście ACL (brak wystąpienia dopasowania warunku do danych zawartych w nagł&oacute;wku pakietu).</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image1.png" alt="image1" width="700" height="618" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Opr&oacute;cz list ACL zdefiniowanych na wejściu są jeszcze te, kt&oacute;re mogą być przypisane do interfejsu wyjściowego (lista ACL ma zastosowanie do pakiet&oacute;w opuszczających router). Schemat blokowy działania takiej listy został przedstawiony na schemacie blokowym zamieszczonym poniżej.</p> <p>&nbsp;</p> <p>Jak można zauważyć schemat podejmowania decyzji w przypadku zastosowania listy ACL na interfejsie wyjściowym przebiega inaczej niż to ma miejsce w przypadku pakietu, kt&oacute;ry do routera zostaje dostarczony.</p> <p>&nbsp;</p> <p>Pierwszą decyzją do rozstrzygnięcia pozostaje fakt czy otrzymany pakiet router jest w stanie w og&oacute;le przekazać - czy istnieje droga, kt&oacute;rą pakiet m&oacute;głby bez przeszk&oacute;d trafić do adresata. Istnienie drogi router określa na podstawie wpis&oacute;w zawartych w swojej tablicy routingu. Jeśli otrzymany pakiet nie ma szans dotarcia do odbiorcy z powodu braku wpisu o sposobie jego dotarcia, to po co ma być on analizowany przez listę ACL. Spełnienie warunku routowalności pakietu (czyli istnienia drogi osiągnięcia celu) jest niezbędne by pakiet ten m&oacute;gł być analizowany przez listę ACL. W przypadku braku wpisu w tablicy routingu o sieci docelowej pakiet zostaje odrzucony. Jeśli na interfejsie wyjściowym została skonfigurowana lista ACL, dane zawarte w nagł&oacute;wku pakietu są analizowane pod względem ich zgodności z listą instrukcji zdefiniowanych w liście ACL. Przesłanie pakietu dalej jest zależne od spełnienia warunk&oacute;w listy ACL. Tu r&oacute;wnież ma zastosowanie zasada pierwszego dopasowania a w przypadku jego braku następuje odrzucenie pakietu na wskutek działania nie jawnej instrukcji zabroń.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image2.png" alt="image2" width="700" height="416" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Og&oacute;lny schemat decyzji z uwzględnieniem ewentualnie zdefiniowanych list ACL wejściowych jak i wyjściowych podejmowanych przez router został przedstawiony na schemacie poniżej.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image3.png" alt="image3" width="700" height="205" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>W pierwszej kolejności po odebraniu pakietu sprawdzana jest warstwa druga czyli docelowy adres MAC, jeśli adres MAC nie zgadza się z adresem MAC interfejsu na, kt&oacute;rym router odebrał wiadomość pakiet jest odrzucany (no chyba, że mamy do czynienia z ruchem rozgłoszeniowym).</p> <p>&nbsp;</p> <p>Kolejnym krokiem jest sprawdzenie faktu istnienia listy ACL na interfejsie wejściowym, jeżeli takowa lista ACL została założona następuje sprawdzenie warunk&oacute;w według schematu blokowego opisanego wyżej (patrz schemat dotyczący listy wejściowej). Jeśli zaś listy ACL wejściowej nie ma pakiet danych zostaje przekazany w kierunki interfejsu wyjściowego. I tu podobnie jak w przypadku interfejsu wejściowego jest sprawdzany fakt istnienia listy ACL. W przypadku jej istnienia następuje ciąg czynności i decyzji, kt&oacute;re są realizowane według schematu blokowego przynależnego liście wyjściowej. Gdy interfejs wyjściowy pozbawiony jest listy ACL, pakiet jest enkapsulowany do warstw niższych a następnie zostaje wysłany do kolejnego urządzenia (oczywiście pod warunkiem istnienia odpowiednich wpis&oacute;w w tablicy routingu).</p> <p>&nbsp;</p> <p>W naszych rozważaniach na temat list ACL posłużymy się topologią sieciową przedstawioną poniżej. Użyte interfejsy wraz z przypisanymi adresami IP oraz adresy sieci zostały przedstawiono r&oacute;wnież na rysunku poniżej.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image4.png" alt="image4" width="700" height="352" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Sieć jest zbieżna wszystkie użyte urządzenia mogą ze sobą nawiązać komunikację. Poniżej przedstawiono tablicę routingu wszystkich trzech router&oacute;w jak można stwierdzić wszystkie routery są w stanie przekazać pakiety do każdej z sieci. Za aktualizację tablic routingu dba protok&oacute;ł EIGRP.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image5.png" alt="image5" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Rozpoczynamy od pierwszego zadania a naszym celem będzie przy pomocy listy ACL zablokowanie ruchu sieciowego od hosta 10.0.1.10 (WindowsXP_1) do hosta 10.0.3.10 (WindowsXP_3). W przykładzie tym użyjemy standardową listę ACL.</p> <p>&nbsp;</p> <p>Zanim zaczniemy konfigurować listę ACL sprawdźmy czy hosty mogą ze sobą prowadzić komunikację. Test ping przeprowadzony z hosta o adresie IP 10.0.1.10 w kierunku hosta 10.0.3.10 kończy się sukcesem.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image6.png" alt="image6" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Naszym zadaniem jest uniemożliwienie komunikacji pomiędzy hostami WindowsXP_1 a WindowsXP_3 oczywiście przy założeniu, że możliwość komunikacji pomiędzy pozostałymi urządzeniami sieciowymi nie będzie zakł&oacute;cona.</p> <p>&nbsp;</p> <p>Pierwsze pytanie na kt&oacute;re musimy sobie odpowiedzieć - To na kt&oacute;rym z trzech ruter&oacute;w lista ACL ma zostać utworzona? Przyjmijmy, że routerem na kt&oacute;rym będzie konfigurowana lista ACL będzie router R1 czyli router najbliższy hostowi WindowsXP_1.</p> <p>&nbsp;</p> <p>Listę ACL tworzymy w trybie konfiguracji globalnej. Lista ACL zostaje utworzona za pomocą polecenia: <strong>access-list 5 deny host 10.0.1.10 </strong>Wydanie komendy spowoduje utworzenie standardowej listy ACL o numerze <strong>5</strong>. Użyta wartość przypisana jest do zakresu <strong>list standardowych</strong>. Użycie parametru: <strong>deny</strong> powoduje zabronienie na prowadzenie komunikacji przez <strong>hosta</strong> o adresie IP 10.0.1.10. Użycie opcji: <strong>host</strong> powoduje utworzenie reguły dla pojedynczego komputera.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image7.png" alt="image7" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po zatwierdzeniu polecenia, lista ACL zostaje utworzona. Stan wszystkich list ACL sprawdzimy po wydaniu komendy: <strong>show access-list </strong>Wydanie polecenia w formacie: <strong>show access-list &lt;numer_ACL&gt; </strong>spowoduje wyświetlenie ustawień określonej w poleceniu listy.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image8.png" alt="image8" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Lecz fakt utworzenia listy nie spowoduje, że będzie ona od razu stosowana. Aby lista mogła spełnić swoje zadanie należy, ją przypisać do interfejsu routera (w naszym scenariuszu jest to router R1). I tu kolejne pytanie - Kt&oacute;ry interfejs routera R1 wybrać? Decydujemy się na interfejs najbliższy hostowi czyli interfejs f0/0. Przypisanie listy realizujemy za pomocą komendy: <strong>ip access-group 5 in</strong>. Komendę tą wydajemy oczywiście w trybie konfiguracji interfejsu f0/0. Wydanie polecenia spowoduje przypisanie standardowej listy ACL o numerze 5 do interfejsu f0/0 routera R1. Lista ACL obowiązuje dla ruchu przychodzącego (użyty parametr: <strong>in</strong>).</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image9.png" alt="image9" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Fakt przypisania danej listy do interfejsu sprawdzimy wykorzystując komendę: <strong>show running-config</strong></p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image10.png" alt="image10" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Dodatkowo fakt użycia danej listy r&oacute;wnież skontrolujemy przy użyciu polecenia: <strong>show ip interface &lt;interfejs&gt;</strong> Jak widać poniżej nasza lista standardowa o numerze 5 jest przypisana do interfejsu f0/0 a jej działanie obejmuje ruch przychodzący.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image11.png" alt="image11" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Sprawdźmy zatem efekt przeprowadzonej konfiguracji i przeprowadźmy test komunikacji pomiędzy hostami WindowsXP_1 a WindowsXP_3. Jak widać test ping kończy się niepowodzeniem, uzyskaliśmy zamierzony efekt.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image12.png" alt="image12" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Fakt działania listy ACL możemy skontrolować wydając ponownie polecenie: <strong>show access-list</strong> Nasza lista została użyta 15 razy.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image13.png" alt="image13" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Zadanie zakładało możliwość prowadzenia komunikacji przez inne urządzenia, tak więc wykonajmy sprawdzenie z wykorzystaniem hosta Windows7. Wykonajmy test ping pomiędzy komputerami Windows7 a WindowsXP_3. Test ten kończy się niepowodzeniem a przecież nie o to nam chodziło.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image14.png" alt="image14" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>By odpowiedzieć sobie na pytanie - Dlaczego tak się stało? trzeba uzmysłowić sobie w jaki spos&oacute;b lista ACL jest zbudowana. Każda z list ACL ma wprowadzone przez administratora warunki określające spos&oacute;b filtrowania ruchu sieciowego. Warunki te są jawne, gdyż zostały utworzone przez administratora. W naszym przykładzie warunkiem jawnym jest wpis zabraniający ruch z hosta 10.0.1.10. Ale każda lista ACL opr&oacute;cz warunk&oacute;w jawnych posiada domyślne dołączany warunek niejawny: <strong>deny any</strong> (warunek ten nie jest uwzględniony podczas kontroli listy za pomocą polecenia: <strong>show access-lists</strong>). Warunek ten zabrania na ruch sieciowy każdemu. Listy ACL przetwarzanie warunk&oacute;w przeprowadzają od g&oacute;ry do pierwszego dopasowania i dlatego też hostowi Windows7 uniemożliwiono przeprowadzenie komunikacji. Dane zawarte w pakiecie wysłanym z komputera Windows7 nie zostały dopasowane do żadnego wpisu jawnego a więc zastosowany został ostatni nie jawny warunek: <strong>zabroń</strong></p> <p>&nbsp;</p> <p>W przypadku testu ping z hosta WindowsXP_1 komunikacja została zablokowana poprzez warunek jawny: <strong>deny host 10.0.1.10</strong> natomiast za brak komunikacji pomiędzy hostami Windows7 a WindowsXP_3 odpowiada warunek niejawny: <strong>deny any</strong></p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image15.png" alt="image15" width="700" height="341" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Co należy wykonać aby umożliwić komunikację pozostałym urządzeniom przypisanym do sieci 10.0.1.0/24? Poprawienie konfiguracji sprowadza się do wydania jednego, dodatkowego polecenia umożliwiającego na przeprowadzenie komunikacji. Tak więc wprowadźmy poprawkę.</p> <p>&nbsp;</p> <p>Aby inne hosty mogły nawiązać połączenie do już istniejącej listy ACL wprowadźmy dodatkowy warunek - warunek ten zezwoli na nawiązanie połączenia. Aby komputery uzyskały dostęp do hosta WindowXP_3 należy wydać polecenie: <strong>access-list 5 permit any</strong> - punkt 1.</p> <p>&nbsp;</p> <p>Wydanie komendy spowoduje dopisanie warunku: <strong>permit any</strong> (zezw&oacute;l wszystkim) do już istniejącej listy ACL 5 - punkt 2.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image16.png" alt="image16" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Sprawdźmy efekt wprowadzonej poprawki.</p> <p>&nbsp;</p> <p>W pierwszej kolejności test ping przeprowadzony z hosta WindowsXP_1 - test zakończony niepowodzeniem - ruch sieciowy został zablokowany poprzez warunek: <strong>deny host 10.0.1.10</strong></p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image17.png" alt="image17" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Test drugi przeprowadzony z hosta Windows7 - test zakończony powodzeniem - zastosowanie pierwszego wpisu: <strong>deny 10.0.1.10 </strong>do hosta Windows7 nie ma zastosowania ze względu na brak dopasowania (adres IP hosta Windows7 to 10.0.1.20). Zezwolenie na przeprowadzenie komunikacji zostaje udzielone dzięki warunkowi: <strong>permit any</strong>. Ponieważ lista ACL swe działanie przerywa po dokonaniu dopasowania dlatego też warunek niejawny: <strong>deny any</strong> nie jest brany pod uwagę.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image18.png" alt="image18" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Efekt działania listy ACL i budujących ją warunk&oacute;w jak już wiesz Czytelniku sprawdzimy dzięki poleceniu: <strong>show access-lists</strong></p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image19.png" alt="image19" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Wydaje się, że osiągnęliśmy zamierzony cel - Ale czy na pewno? Do tej pory wszystko działa jak należy. Host WindowsXP_1 nie ma możliwości komunikacji z komputerem WindowsXP_3, zaś inni pozostali tak. Ale podsieć 10.0.3.0/24 nie jest jedyną siecią w naszej topologii. Sprawdźmy zatem przebieg komunikacji z hostem WindowsXP_2, kt&oacute;ry należy do sieci 10.0.2.0/24. Sprawdzenia w pierwszej kolejności dokonamy z hosta Windows7. Test ping kończy się sukcesem. Jak na razie wszystko przebiega po naszej myśli.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image20.png" alt="image20" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Kolejny test przeprowadzimy z wykorzystaniem hosta WindowsXP_1. Pr&oacute;ba ta niestety jak widać na poniższym zrzucie kończy się niepowodzeniem a niestety nie o to nam chodziło.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image21.png" alt="image21" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Przeprowadzona konfiguracja nie dała nam rozwiązania postawionego przed nami zadania. Zablokowaliśmy komunikację hosta WindowsXP_1 z hostem WindowsXP_3 ale także z innymi urządzeniami poza siecią 10.0.1.0/24 a nie takie były założenia zadania.</p> <p>&nbsp;</p> <p>Tu Czytelniku przyznam się że specjalnie dobrałem taki wariant rozwiązania zadania i tak poprowadziłem nasze rozważania by pokazać na jakie błędy jesteśmy narażeni przy wdrażaniu mechanizmu ACL.</p> <p>&nbsp;</p> <p>Nasze zadanie od początku było skazane na porażkę, gdyż już w pierwszym kroku podjęta decyzja o umiejscowieniu listy ACL była decyzją błędną.</p> <p>&nbsp;</p> <p>Rozpoczynamy od początku (tym razem już poprawnie) i wracamy do ustawień początkowych. Aby powr&oacute;cić do ustawień startowych należy usunąć bieżącą konfigurację. Powr&oacute;t do ustawień początkowych rozpoczynamy od usunięcia listy ACL 5. Usunięcie listy przeprowadzimy za pomocą polecenia: <strong>no access-list &lt;numer_listy&gt;</strong></p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image22.png" alt="image22" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Aby zachować porządek w ustawieniach nie zapominamy o skasowaniu listy ACL na interfejsie f0/0. Przypisaną listę ACL 5 usuniemy za pomocą komendy: <strong>no ip access-group &lt;numer_listy&gt; &lt;kierunek&gt;</strong></p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image23.png" alt="image23" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Powr&oacute;ciliśmy do ustawień startowych.</p> <p>&nbsp;</p> <p>Zamierzone cele osiągniemy tylko wtedy gdy listę ACL umieścimy na routerze R3. I tu dochodzimy do jednej z ważniejszych zasad, kt&oacute;rą musimy przestrzegać<strong>: Listy standardowe umieszczamy najbliżej celu, kt&oacute;rego lista dotyczy</strong>. W naszym przypadku celem jest uniemożliwienie komunikacji hosta 10.0.1.10 z hostem 10.0.3.10. Najbliżej celu czyli komputera WindowsXP_3 znajduje się router R3. Tak więc lista ACL powinna zostać skonfigurowana na tym routerze.</p> <p>&nbsp;</p> <p>Warunki zapisane wewnątrz listy ACL będą tożsame z tymi zdefiniowanymi na routerze R1. Tym razem konfigurowana standardowa lista ACL przyjmie numer 7 (tak by nam się nie myliło).</p> <p>&nbsp;</p> <p>Rozpoczynamy od zablokowania komunikacji pomiędzy hostami WindowsXP_1 a WindowsXP_3 &ndash; warunek: <strong>deny host 10.0.1.10</strong> &ndash; punkt 1.</p> <p>&nbsp;</p> <p>Mając na uwadze istnienie niejawnego warunku: <strong>deny any</strong> poprzez wydanie polecenia: <strong>access-list 7 permit any</strong> zezwalamy na łączność pozostałym hostom &ndash; punkt 2.</p> <p>&nbsp;</p> <p>Punkt 3 jest sprawdzeniem poprawności warunk&oacute;w zawartych w tworzonej liście ACL.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image24.png" alt="image24" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Lista ACL o numerze 7 została utworzona. Aby lista mogła pełnić swoją rolę należy ją oczywiście przypisać do interfejsu routera R3. W grę wchodzą dwa interfejsy (gdyż w przyjętej topologii router R3 ma dwa aktywne interfejsy sieciowe) f0/0 oraz s0/1. Przy wyborze interfejsu kierujemy się znaną nam już zasadą &ndash; wybieramy ten, kt&oacute;ry znajduje się najbliżej celu. Tak więc po analizie topologii stwierdzamy, iż najbliżej celu znajduje się interfejs f0/0. Na interfejsie tym zostaje skonfigurowana lista ACL 7.</p> <p>&nbsp;</p> <p>Polecenie łączące interfejs z listą ACL wymaga od nas zdefiniowanie kierunku działania listy, ponowna analiza topologii sieci przekonuje nas iż kierunek działania listy musi zostać ustawiony na wyjście.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image25.png" alt="image25" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Lista ACL została skonfigurowana i przypisana do interfejsu. Sprawdźmy zatem jak będzie przebiegać komunikacja po zastosowaniu poprawek.</p> <p>&nbsp;</p> <p>Pierwszy test zostanie przeprowadzony z komputera WindowsXP_1. Test kończy się sukcesem &ndash; niemożliwa jest komunikacja z blokowanym przez listę ACL hostem WIndowsXP_3 przy zachowaniu możliwości nawiązania połączenia z innymi urządzeniami w naszej sieci (test ping pomiędzy WindowsXP_1 a WindowsXP_2 kończy się sukcesem).</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image26.png" alt="image26" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Test drugi to sprawdzenie komunikacji pomiędzy komputerem Windows7 a hostami WindowsXP_2 oraz WindowsXP_3. Test ten r&oacute;wnież kończy się powodzeniem.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image27.png" alt="image27" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Założenia zadania zostały spełnione. Komunikacja pomiędzy hostem WindowsXP_1 a WindowsXP_3 została zablokowana, lista ACL działa prawidłowo.</p> <p>&nbsp;</p> <p>W złożonej topologii sieciowej może istnieć wiele list ACL, kt&oacute;re mogą być umiejscowione na r&oacute;żnych urządzeniach. Dlatego warto w sobie wyrobić nawyk opisywania tworzonych list ACL.</p> <p>&nbsp;</p> <p>Aby dodać komentarz do listy ACL należy skorzystać z polecenia: <strong>access-list &lt;numer_listy&gt; remark &lt;komentarz&gt;</strong> Poniżej przykład dodania komentarza do utworzonej w poprzednim kroku listy ACL.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image28.png" alt="image28" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Komentarz do listy ACL możemy sprawdzić przeglądając konfigurację bieżącą routera. Opis listy ACL nie jest wyświetlany po wydaniu komendy: <strong>show access-list</strong></p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image29.png" alt="image29" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Dosyć częstą praktyką przy opisywaniu list ACL jest dodanie komentarza, kt&oacute;ry odsyła nas do pliku zewnętrznego a dopiero w tym pliku zawarty jest dokładny opis i przeznaczenie listy ACL. Metoda ta poniekąd zwiększa bezpieczeństwo naszej sieci gdyż w razie przejęcia przez atakującego kontroli nad routerem, poznanie sposobu działania naszej sieci nie przyjdzie mu tak łatwo. Komentarze do list ACL są bogatym źr&oacute;dłem wiedzy dla hakera.</p> <p>&nbsp;</p> <p>Podczas definicji list ACL użyteczną opcją może być zastosowanie parametru:<strong> log</strong> kt&oacute;ry powoduje wyświetlenie w konsoli komunikatu związanego z dopasowaniem. Oznacza to, że gdy wystąpi spełnienie warunku zdefiniowanego na liście ACL zostaniemy o tym poinformowani stosownym komunikatem.</p> <p>&nbsp;</p> <p>Logowanie informacji o zdarzeniu może nastąpić w:</p> <ul> <li style="padding-left: 60px;">linii poleceń konsoli,</li> <li style="padding-left: 60px;">wewnętrzny bufor,</li> <li style="padding-left: 60px;">serwer syslog.</li> </ul> <p>&nbsp;</p> <p>Informacje, kt&oacute;re podlegają rejestrowaniu to:</p> <ul> <li style="padding-left: 60px;">akcja &ndash; zezw&oacute;l (permit) lub zablokuj (deny),</li> <li style="padding-left: 60px;">użyty protok&oacute;ł - TCP, UDP lub ICMP,</li> <li style="padding-left: 60px;">adres źr&oacute;dłowy i docelowy,</li> <li style="padding-left: 60px;">w przypadku TCP oraz UDP &ndash; numer portu źr&oacute;dłowego i docelowego,</li> <li style="padding-left: 60px;">w przypadku ICMP &ndash; typy wiadomości.</li> </ul> <p>&nbsp;</p> <p>Aby włączyć logowanie informacji o wystąpieniu zdefiniowanego warunku listy ACL po definicji warunku dodajemy flagę: <strong>log</strong> &ndash; pozostajemy przy przykładzie w kt&oacute;rym blokujemy ruch z hosta 10.0.1.10</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image30.png" alt="image30" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Logowanie warunku zabraniającego na połączenie pomiędzy hostem 10.0.1.10 a siecią 10.0.3.0/24 zostało włączone.</p> <p>&nbsp;</p> <p>W przypadku wystąpienia zdarzenia zostaniemy o nim powiadomieni. Logi są generowane przy wystąpieniu zdarzenia (pierwszy pakiet, kt&oacute;ry spełnia warunek) a następnie w pięciominutowych odstępach po wystąpieniu zdarzenia.</p> <p>&nbsp;</p> <p>Poniżej na wskutek pr&oacute;by nawiązania połączenia z hostem 10.0.3.10 został wygenerowany komunikat o zaistniałym zdarzeniu &ndash; nastąpiło dopasowanie informacji zawartych w nagł&oacute;wku pakietu z warunkiem listy ACL, kt&oacute;ry podlega logowaniu.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image31.png" alt="image31" width="700" height="44" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Jeśli sprawdzamy poprawność działania zdefiniowanych list ACL warto posłużyć się komendą: <strong>show log</strong> Wydanie polecenie uwidoczni nam historię zdarzeń.</p> <p>&nbsp;</p> <p>Lecz zanim zaczniemy używać wspomnianego wyżej polecenia należy w konfiguracji globalnej urządzenia wydać polecenie: <strong>logging console informational</strong> Komenda ta spowoduje zapisanie informacji o zdarzeniu jakim jest wystąpienie dopasowania &ndash; brak wydania tego polecenia uniemożliwi sprawdzenie historii zdarzeń (informacja o zdarzeniu pojawi się w wierszu poleceń konsoli lecz fakt jej zaistnienia nie zostanie zapisany). Polecenie te związane jest z konfiguracją zapisu zdarzeń i dokładny opis sposobu działania komendy trochę wybiega poza tematykę tego wpisu (logowanie zdarzeń będzie tematem kolejnego artykułu i w nim użycie tego polecenia opiszę szerzej).</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image32.png" alt="image32" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>W przypadku spodziewania się dużej ilości wpis&oacute;w warto r&oacute;wnież pomyśleć o tym by nie zabrakło miejsca na ich zapisanie dlatego dobrze jest zwiększyć rozmiar bufora odpowiedzialnego za zapisywanie tych danych. Ilość dostępnego miejsca na zapis log&oacute;w zwiększymy za pomocą polecenia: <strong>logging buffered &lt;rozmiar_bajty&gt;</strong></p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image33.png" alt="image33" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po przeprowadzonej konfiguracji wydanie polecenia: <strong>show log</strong> spowoduje wypisanie zaistniałych zdarzeń wśr&oacute;d, kt&oacute;rych znajdziemy informację o zdarzeniach związanych z logowanymi warunkami list ACL.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image34.png" alt="image34" width="700" height="264" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Aby wykasować liczniki, korzystamy z polecenia: <strong>clear ip access-list counter &lt;numer_listy_ACL&gt;</strong> a w przypadku listy nazywanej: <strong>clear ip access-list counter &lt;nazwa_listy_ACL&gt;</strong></p> <p>&nbsp;</p> <p>Jest jeszcze jeden parametr kt&oacute;rego użycie zapewni nam dostarczenie większej ilości informacji na temat zaistniałych zdarzeń dotyczących list ACL. Aby uzyskane dane były bardziej szczeg&oacute;łowe zamiast flagi: <strong>log</strong> możemy użyć opcję: <strong>log-input</strong></p> <p>&nbsp;</p> <p>Poniżej przykład listy ACL, kt&oacute;ra zabrania tak jak poprzednio na komunikację pomiędzy hostem 10.0.1.10 a siecią 10.0.3.0 &ndash; w przykładzie tym użyto rozszerzoną listę ACL, kt&oacute;ra nie została jeszcze om&oacute;wiona. W ćwiczeniu tym przede wszystkim chodzi o pokazanie możliwości uzyskania informacji o sposobie działania list ACL tak więc wybacz Czytelniku iż wybiegam trochę na prz&oacute;d. Spowodowane to jest faktem iż opcja: <strong>log-input</strong> została zarezerwowana tylko dla list rozszerzonych. Nie martw się gdy poniższe zapisy będą dla Ciebie niezrozumiałe (na razie) gdyż na tą chwilę nie jest to tematem naszych rozważań (do list rozszerzonych przejdę już za chwilę). Do przykładu tego zachęcam wr&oacute;cić po dalszej lekturze wpisu.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image35.png" alt="image35" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po zdefiniowaniu listy ACL, lista oczywiście zostaje przypisana do interfejsu i zostaje ustalony kierunek jej działania (rozważania na tematy interfejsu i routera na kt&oacute;rym została utworzona lista ACL zostaw na p&oacute;źniej - w tym momencie nie ma to znaczenia).</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image36.png" alt="image36" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>W momencie gdy warunek listy ACL będzie miał zastosowanie zostaniemy o tym poinformowani. Poniżej przykład uzyskania informacji o nie udzieleniu dostępu do sieci 10.0.3.0/24 &ndash; host, kt&oacute;ry inicjował połączenie to komputer o adresie IP 10.0.1.10 Por&oacute;wnując dane uzyskane dzięki zastosowaniu opcji: <strong>log-input</strong> z tymi otrzymanymi dzięki opcji: <strong>log</strong> na pierwszy rzut oka widać, iż są to informacje bardziej szczeg&oacute;łowe (w logach m.in. znajdziemy dane o adresie MAC a w przypadku użycia protokoł&oacute;w TCP bądź UDP r&oacute;wnież będzie zawarta informacja o portach).</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image37.png" alt="image37" width="700" height="28" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Efekty działania listy ACL możemy r&oacute;wnież sprawdzić za pomocą procesu debugowania. Aby uruchomić proces dotyczący danej listy ACL należy wydać polecenie: <strong>debug ip packet &lt;numer_listy_ACL&gt; detail</strong></p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image38.png" alt="image38" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po uruchomieniu procesu możemy obserwować efekt podejmowanych decyzji jakie podejmuje router względem otrzymanych pakiet&oacute;w a odnoszących się do wywołanej listy ACL.</p> <p>&nbsp;</p> <p>Poniżej przykład w kt&oacute;rym host o adresie 10.0.1.10 przeprowadza test względem hosta 10.0.3.10. Ponieważ komunikacja dzięki zastosowaniu listy ACL dla hosta 10.0.1.10 została zablokowana tak więc router odsyła informację ICMP typ 3 - Destination Unreachable</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image39.png" alt="image39" width="700" height="167" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Podczas tworzenia wpis&oacute;w list ACL na pewno nie raz przydarzy nam się sytuacja w kt&oacute;rej popełnimy błąd &ndash; Jak sobie z tym problemem poradzić? Proponuję trzy rozwiązania. Pierwsze z nich opiera się na bezpośredniej edycji listy ACL drugie na skopiowaniu ustawień listy ACL, poprawieniu błęd&oacute;w, wykasowaniu błędnie skonfigurowanej listy ACL i wprowadzeniu nowych ustawień, trzecie zaś na użyciu narzędzia CCP(Cisco Configuration Professional)</p> <p>&nbsp;</p> <p>Prześledźmy zatem zaproponowane rozwiązania na tym przykładzie, rozpoczniemy od edycji listy ACL.</p> <p>&nbsp;</p> <p>Poniżej na zrzucie została przedstawiona używana przez nas lista ACL 7, lecz jak można zauważyć w liście tej został błędnie skonfigurowany adres IP hosta &ndash; zamiast adresu 10.0.10.10 powinien być 10.0.1.10</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image40.png" alt="image40" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Aby m&oacute;c poprawić błędny wpis należy przejść do trybu konfiguracji globalnej urządzenia i wydać polecenie: <strong>ip access-list {standard | extended} &lt;numer_listy&gt;</strong> - punkt 1 (w naszym przypadku mamy do czynienia z standardową listą ACL tak więc używamy argumentu: <strong>standard</strong> w przypadku listy rozszerzonej należy użyć flagi: <strong>extended</strong>).</p> <p>&nbsp;</p> <p>Po zatwierdzeniu komendy przejdziemy do trybu konfiguracji listy ACL (zapis: config-std-nacl). Błędny wpis adresu IP został powiązany z numerem sekwencyjnym listy, wartość tego numeru wynosi 10. Aby wpis usunąć należy wydać polecenie: <strong>no &lt;numer_sekwencyjny&gt;</strong> - punkt 2.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image41.png" alt="image41" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Błędny wpis został usunięty, fakt wykonania operacji możemy sprawdzić wyświetlając ustawienia listy ACL.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image42.png" alt="image42" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po usunięciu wpisu należy wprowadzić nowy. Polecenie nakazujące dodanie nowego wpisu oczywiście wydajemy w trybie konfiguracji danej listy ACL. A wpis dodamy za pomocą polecenia: &lt;<strong>numer_sekwencyjny&gt; &lt;parametry_listy_ACL&gt;</strong> w naszym przypadku komenda przyjęła postać: <strong>10 deny host 10.0.1.10</strong></p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image43.png" alt="image43" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po wprowadzeniu zmian, sprawdzamy fakt ich wykonania. Jak widać poniżej lista ACL została poprawiona.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image44.png" alt="image44" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Domyślne po zdefiniowaniu warunku listy ACL trafia on na koniec listy. Bez numer&oacute;w sekwencyjnych, jedyną opcją dodania wpisu pomiędzy dwa już istniejące, było skasowanie ACL i zdefiniowanie jej od nowa. Sytuacja ta powtarzała się r&oacute;wnież w przypadku gdy chcieliśmy wykasować warunek.</p> <p>&nbsp;</p> <p>Numery sekwencyjne dają nam możliwość edycji interesującego nas wpisu a także na dodanie nowego w dowolne miejsce listy ACL. Możliwe jest to dzięki przyjętemu numerowaniu kolejnych wpis&oacute;w tworzących daną listę ACL. Domyślnie, numery sekwencyjne rozpoczynają się od wartości 10 a kolejny wpis powiększa tą wartość o 10.</p> <p>&nbsp;</p> <p>Do bezpośredniej edycji listy ACL możemy podejść trochę inaczej a mianowicie dodać poprawny wpis. W naszym przypadku użyty numer sekwencyjny musi być niższy od następnego czyli od 20. Dodanie wpisu o numerze sekwencyjnym wyższym niż 20 spowoduje dopisanie warunku powyżej tego numeru a co za tym idzie wpis ten nigdy nie będzie miał zastosowania gdyż znajdzie się on za wpisem zezwalającym na ruch sieciowy wszystkim (20 permit any). Pamiętaj, że listy ACL są przetwarzane od g&oacute;ry do pierwszego dopasowania. W scenariuszu padło na wartość 15 (15 jest mniejsze od 20 tak więc nowo dodany wpis znajdzie się przed warunkiem z numerem sekwencyjnym r&oacute;wnym 20) &ndash; punkt 1. Po wprowadzeniu nowego warunku pamiętamy o wykasowaniu tego błędnie zdefiniowanego &ndash; punkt 2. Po całości wykonanych zmian ostatnią czynnością jest ich sprawdzenie &ndash; punkt 3 &ndash; Wszystko się zgadza (dla przypomnienia dodanie do polecenia parametru: <strong>do </strong>nakazuje wykonanie polecenia dostępnego w trybie konfiguracji poziomu wyżej &ndash; zauważ, że polecenie zostało wydane w trybie konfiguracji globalnej zaś komenda: <strong>show access-list</strong> powinna zostać wydana w trybie uprzywilejowanym).</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image45.png" alt="image45" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Przechodzimy zatem do drugiego ze sposob&oacute;w.</p> <p>&nbsp;</p> <p>W pierwszej kolejności rozpoczynamy od wyświetlenia ustawień listy ACL. Wpisy budujące listę ACL możemy wyświetlić przy wykorzystaniu polecenia zaprezentowanego na zrzucie poniżej (pełna składnia polecenia: <strong>show running-config | include access-list 7</strong> &ndash; wyświetl ustawienia listy ACL 7 zawarte w konfiguracji bieżącej urządzenia &ndash; parametr: <strong>include</strong> odpowiada za wyświetlenie tylko tych wierszy zawierających zdefiniowaną po nim wartość).</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image46.png" alt="image46" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Wyświetloną konfigurację po zaznaczeniu kopiujemy klawiszem Enter (do zestawienia sesji z routerem zostało użyte narzędzie PuTTY) a następnie wklejamy w dowolnym edytorze tekstowym i nanosimy niezbędne poprawki.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image47.png" alt="image47" width="700" height="325" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po dokonaniu korekty ustawień i skopiowaniu ich do schowka po wciśnięciu PPM zawartość schowka zostaje wklejona do narzędzia PuTTY. Przy wklejaniu poleceń należy zwr&oacute;cić uwagę by znajdować się w odpowiednim trybie konfiguracji routera (w przypadku list ACL jest to tryb konfiguracji globalnej). Przed skopiowaniem ustawień należy pamiętać o usunięciu błędnie zdefiniowanej listy ACL.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image48.png" alt="image48" width="700" height="325" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Taki spos&oacute;b wprowadzania ustawień można wykorzystać nie tylko przy tworzeniu/edytowaniu list ACL ale r&oacute;wnież do konfiguracji wszystkich poleceń routera/przełącznika. Przypuśćmy, że mamy skonfigurowany router i dodajemy drugi, kt&oacute;rego ustawienia nieznacznie się r&oacute;żnią od pierwszego. Możemy konfigurację oczywiście przeprowadzić ręcznie poprzez wprowadzenie wszystkich poleceń ale r&oacute;wnież poprzez skopiowanie całej konfiguracji bieżącej routera pierwszego, naniesieniu niezbędnych poprawek i wklejeniu ustawień do routera drugiego.</p> <p>&nbsp;</p> <p>Ostatni spos&oacute;b opiera się na użyciu narzędzia CCP. Narzędzie te umożliwia nam przeprowadzenie konfiguracji urządzeń sieciowych firmy CISCO z wykorzystaniem graficznego interfejsu użytkownika. Użycie aplikacji opiera się na przeglądarce Internet Explorer (najlepiej działa z tą przeglądarką) wraz z zainstalowanym oprogramowaniem Flash i Java (bez instalacji tych komponent&oacute;w nie będzie można uruchomić CCP).</p> <p>&nbsp;</p> <p>O ile jestem zwolennikiem jednak korzystania z CLI to o tyle w przypadku edycji bądź definicji nowych list ACL narzędzie CCP świetnie się sprawdza gdyż w prosty i szybki spos&oacute;b umożliwia nam na wykonanie zadań związanych z listami ACL (przebiega to po prostu bardziej sprawnie, szczeg&oacute;lnie gdy musimy zarządzać złożonymi listami ACL bądź ich dużym zbiorem).</p> <p>&nbsp;</p> <p>Po uruchomieniu programu i połączeniu się z routerem (jak skonfigurować router aby wsp&oacute;łpracował z CCP opisałem tu: <a href="http://slow7.pl/index.php/sieci-komputerowe/item/36-dostep-zdalny-oraz-prawa-uzytkownika-w-urzadzeniach-cisco">Dostęp zdalny oraz prawa użytkownika w urządzeniach CISCO</a>). Przechodzimy do gałęzi: <strong>ACL/ACL Editor</strong> Po wybraniu jej z prawej strony ukaże się nam zbi&oacute;r list ACL. Jak widać lista ACL 7 zawiera zdefiniowany przez nas na potrzeby ćwiczenia błąd. Aby rozpocząć edycję listy ACL należy ją zaznaczyć i wybrać przycisk: <strong>Edit</strong></p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image49.png" alt="image49" width="700" height="524" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po wybraniu opcji edytowania listy w nowo otwartym oknie <strong>Edit a Rule</strong> wybieramy wpis, kt&oacute;ry ma podlegać modyfikacji i ponownie wybieramy <strong>Edit</strong> (punkt 1).</p> <p>&nbsp;</p> <p>W kolejnym oknie nanosimy niezbędne poprawki i zatwierdzamy je przyciskiem <strong>OK </strong>(dwa razy) &ndash; punkt 2.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image50.png" alt="image50" width="700" height="524" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po zatwierdzeniu zmian zostanie wyświetlone okno: <strong>Deliver Configuration to Device</strong> odpowiedzialne za wysłanie odpowiednich poleceń do konfigurowanego urządzenia. Na tym etapie możemy podejrzeć jakie polecenia będą na zdalnym urządzeniu wydane. Zaznaczenie &bdquo;ptaszka&rdquo; przy opcji <strong>Save running config. to device&rsquo;s startup config.</strong> spowoduje automatyczne zapisanie ustawień bieżących urządzenia jako konfigurację startową. Aby zastosować zmiany w konfiguracji wybieramy <strong>Deliver</strong></p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image51.png" alt="image51" width="700" height="524" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Odpowiednie ustawienia zostały wprowadzone do konfiguracji urządzenia. Stan ustawień listy ACL sprawdzimy wybierając ponownie daną listę ACL.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image52.png" alt="image52" width="700" height="524" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Myślę, że om&oacute;wione sposoby edycji list ACL są wystarczające a tylko od Ciebie zależy, kt&oacute;rą z nich użyjesz.</p> <p>&nbsp;</p> <p>Pytanie na koniec tego zadania, jakie możemy sobie zadać brzmi &ndash; Czy zastosowana lista ACL pomimo spełnienia założeń ćwiczenia, ze względu na wydajność sieci jest zasadna?</p> <p>&nbsp;</p> <p>Dociekliwy Czytelnik szybko dojdzie do wniosku, że przy użyciu tak skonfigurowanej standardowej listy ACL marnotrawione jest pasmo oraz użycie procesor&oacute;w router&oacute;w. Sp&oacute;jrzmy jeszcze raz na naszą topologię z zaznaczoną drogą pakiet&oacute;w i spr&oacute;bujmy uzasadnić powyższe stwierdzenie.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image53.png" alt="image53" width="700" height="349" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Jak widać stwierdzenie jest zasadne gdyż &ndash; pakiet opuszczający hosta WindowsXP_1 a podr&oacute;żujący w kierunku komputera WindowsXP_3, wędruje przez całą sieć (jest przekazywany przez kolejne routery) by i tak na końcu swojej drogi zostać zablokowany przez skonfigurowaną listę ACL. Tu na tym przykładzie widać jak na dłoni iż stosowanie standardowych list ACL (przy założeniach tego ćwiczenia) jest mało efektywne.</p> <p>&nbsp;</p> <p>Tak więc jak najbardziej na miejscu jest pytanie &ndash; Co z tym fantem możemy zrobić i czy jest jakiś bardziej efektywny spos&oacute;b osiągnięcia naszego celu? Rozwiązaniem będzie zastosowanie rozszerzonej listy ACL.</p> <p>&nbsp;</p> <p>Og&oacute;lna składnia definicji rozszerzonej listy ACL wygląda następująco: <strong>access-list &lt;nr_listy&gt; {permit | deny} &lt;protok&oacute;ł&gt; &lt;definicja_punktu_źr&oacute;dłowego&gt; &lt;definicja_punktu_docelowego&gt;</strong></p> <p>&nbsp;</p> <p>Rozszerzone listy ACL umożliwiają nam prowadzenie większego zakresu kontroli ponieważ nasz warunek możemy zbudować m.in. w oparciu o źr&oacute;dłowy i docelowy adres IP pakiet&oacute;w a dodatkowo pozwalają r&oacute;wnież na określenie protokoł&oacute;w i numer&oacute;w port&oacute;w co do kt&oacute;rych lista ACL będzie miała zastosowanie. Tak więc nasze definicje blokujące bądź przepuszczające ruch sieciowy są określane na podstawie adres&oacute;w nadawcy i odbiorcy pakietu, typu protokołu oraz portu.</p> <p>&nbsp;</p> <p>Zakres użytych parametr&oacute;w definiujemy sami według potrzeby i uznania oznacza to, że lista ACL może zawierać instrukcje odwołujące się tylko do adres&oacute;w IP (wraz z użytym protokołem) a gdy jest potrzeba zawężenia listy możemy dodać dodatkowe parametry odwołujące się do np. numer&oacute;w port&oacute;w. Pojedyncza rozszerzona lista ACL może konfigurować wiele instrukcji.</p> <p>&nbsp;</p> <p>Numery list rozszerzonych ACL są zawarte w zakresie od 100 do 199 a także od 2000 do 2699 (dla protokołu IP).</p> <p>&nbsp;</p> <p>Prześledźmy zatem spos&oacute;b konfiguracji takiej listy.</p> <p>&nbsp;</p> <p>Tak jak w przypadku listy standardowej rozpoczynamy od wydania w trybie konfiguracji globalnej polecenia: <strong>access-list</strong> po kt&oacute;rym to określamy <strong>numer listy</strong> a także warunek <strong>przepuszczający</strong> bądź <strong>odrzucający</strong> pakiet. Nasza lista może więc przyjąć postać:</p> <p><strong>R1(config)#access-list 111 deny ...</strong></p> <p>&nbsp;</p> <p>bądź</p> <p><strong>R1(config)#access-list 111 permit ...</strong></p> <p>&nbsp;</p> <p>W kolejnym kroku ustalamy rodzaj protokołu, dla kt&oacute;rego będzie realizowane dopasowanie:</p> <p><strong>R1(config)#access-list 111 deny &lt;protok&oacute;ł&gt; ...</strong></p> <p><strong>R1(config)#access-list 111 permit &lt;protok&oacute;ł&gt; ...</strong></p> <p>&nbsp;</p> <p>Protok&oacute;ł określamy poprzez definicję jego nazwy lub poprzez podanie numeru. Poniżej na rysunku zostały przedstawione nazwy najczęściej używanych protokoł&oacute;w.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image54.png" alt="image54" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Lista dostępnych numer&oacute;w wraz z przypisanym do numeru protokołem została zamieszczona w tabeli poniżej (źr&oacute;dło: <a href="http://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml">http://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml</a>).</p> <p>&nbsp;</p> <table border="1" style="border-collapse: collapse;" cellspacing="0" cellpadding="0"> <tbody> <tr style="height: 18.75pt;"> <td style="width: 54pt; border: 1pt solid windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" nowrap="nowrap" width="72"><strong>Decimal</strong></td> <td style="width: 101pt; border-width: 1pt 1pt 1pt medium; border-style: solid solid solid none; border-color: windowtext windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" nowrap="nowrap" width="135"><strong>Keyword</strong></td> <td style="width: 227pt; border-width: 1pt 1pt 1pt medium; border-style: solid solid solid none; border-color: windowtext windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" nowrap="nowrap" width="303"><strong>Protocol</strong></td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">0</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">HOPOPT</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">IPv6 Hop-by-Hop Option</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">1</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">ICMP</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Internet Control Message</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">2</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">IGMP</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Internet Group Management</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">3</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">GGP</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Gateway-to-Gateway</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">4</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">IPv4</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">IPv4 encapsulation</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">5</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">ST</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Stream</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">6</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">TCP</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Transmission Control</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">7</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">CBT</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">CBT</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">8</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">EGP</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Exterior Gateway Protocol</td> </tr> <tr style="height: 33.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 33.75pt;" valign="top" width="72">9</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 33.75pt;" valign="top" width="135">IGP</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 33.75pt;" valign="top" width="303">any private interior gateway (used by Cisco for their IGRP)</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">10</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">BBN-RCC-MON</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">BBN RCC Monitoring</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">11</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">NVP-II</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Network Voice Protocol</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">12</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">PUP</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">PUP</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">13</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">ARGUS (deprecated)</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">ARGUS</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">14</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">EMCON</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">EMCON</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">15</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">XNET</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Cross Net Debugger</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">16</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">CHAOS</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Chaos</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">17</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">UDP</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">User Datagram</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">18</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">MUX</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Multiplexing</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">19</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">DCN-MEAS</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">DCN Measurement Subsystems</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">20</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">HMP</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Host Monitoring</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">21</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">PRM</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Packet Radio Measurement</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">22</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">XNS-IDP</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">XEROX NS IDP</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">23</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">TRUNK-1</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Trunk-1</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">24</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">TRUNK-2</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Trunk-2</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">25</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">LEAF-1</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Leaf-1</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">26</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">LEAF-2</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Leaf-2</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">27</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">RDP</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Reliable Data Protocol</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">28</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">IRTP</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Internet Reliable Transaction</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">29</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">ISO-TP4</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">ISO Transport Protocol Class 4</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">30</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">NETBLT</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Bulk Data Transfer Protocol</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">31</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">MFE-NSP</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">MFE Network Services Protocol</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">32</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">MERIT-INP</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">MERIT Internodal Protocol</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">33</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">DCCP</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Datagram Congestion Control Protocol</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">34</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">3PC</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Third Party Connect Protocol</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">35</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">IDPR</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Inter-Domain Policy Routing Protocol</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">36</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">XTP</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">XTP</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">37</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">DDP</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Datagram Delivery Protocol</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">38</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">IDPR-CMTP</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">IDPR Control Message Transport Proto</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">39</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">TP++</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">TP++ Transport Protocol</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">40</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">IL</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">IL Transport Protocol</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">41</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">IPv6</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">IPv6 encapsulation</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">42</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">SDRP</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Source Demand Routing Protocol</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">43</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">IPv6-Route</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Routing Header for IPv6</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">44</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">IPv6-Frag</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Fragment Header for IPv6</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">45</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">IDRP</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Inter-Domain Routing Protocol</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">46</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">RSVP</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Reservation Protocol</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">47</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">GRE</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Generic Routing Encapsulation</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">48</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">DSR</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Dynamic Source Routing Protocol</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">49</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">BNA</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">BNA</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">50</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">ESP</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Encap Security Payload</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">51</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">AH</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Authentication Header</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">52</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">I-NLSP</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Integrated Net Layer Security TUBA</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">53</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">SWIPE (deprecated)</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">IP with Encryption</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">54</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">NARP</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">NBMA Address Resolution Protocol</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">55</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">MOBILE</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">IP Mobility</td> </tr> <tr style="height: 31.5pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 31.5pt;" valign="top" width="72">56</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 31.5pt;" valign="top" width="135">TLSP</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 31.5pt;" valign="top" width="303">Transport Layer Security Protocol using Kryptonet key management</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">57</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">SKIP</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">SKIP</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">58</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">IPv6-ICMP</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">ICMP for IPv6</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">59</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">IPv6-NoNxt</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">No Next Header for IPv6</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">60</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">IPv6-Opts</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Destination Options for IPv6</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">61</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">&nbsp;</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">any host internal protocol</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">62</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">CFTP</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">CFTP</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">63</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">&nbsp;</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">any local network</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">64</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">SAT-EXPAK</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">SATNET and Backroom EXPAK</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">65</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">KRYPTOLAN</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Kryptolan</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">66</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">RVD</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">MIT Remote Virtual Disk Protocol</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">67</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">IPPC</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Internet Pluribus Packet Core</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">68</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">&nbsp;</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">any distributed file system</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">69</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">SAT-MON</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">SATNET Monitoring</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">70</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">VISA</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">VISA Protocol</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">71</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">IPCV</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Internet Packet Core Utility</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">72</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">CPNX</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Computer Protocol Network Executive</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">73</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">CPHB</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Computer Protocol Heart Beat</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">74</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">WSN</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Wang Span Network</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">75</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">PVP</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Packet Video Protocol</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">76</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">BR-SAT-MON</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Backroom SATNET Monitoring</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">77</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">SUN-ND</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">SUN ND PROTOCOL-Temporary</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">78</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">WB-MON</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">WIDEBAND Monitoring</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">79</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">WB-EXPAK</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">WIDEBAND EXPAK</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">80</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">ISO-IP</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">ISO Internet Protocol</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">81</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">VMTP</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">VMTP</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">82</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">SECURE-VMTP</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">SECURE-VMTP</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">83</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">VINES</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">VINES</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">84</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">TTP</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Transaction Transport Protocol</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">84</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">IPTM</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Internet Protocol Traffic Manager</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">85</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">NSFNET-IGP</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">NSFNET-IGP</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">86</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">DGP</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Dissimilar Gateway Protocol</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">87</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">TCF</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">TCF</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">88</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">EIGRP</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">EIGRP</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">89</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">OSPFIGP</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">OSPFIGP</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">90</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">Sprite-RPC</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Sprite RPC Protocol</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">91</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">LARP</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Locus Address Resolution Protocol</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">92</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">MTP</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Multicast Transport Protocol</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">93</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">AX.25</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">AX.25 Frames</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">94</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">IPIP</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">IP-within-IP Encapsulation Protocol</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">95</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">MICP (deprecated)</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Mobile Internetworking Control Pro.</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">96</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">SCC-SP</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Semaphore Communications Sec. Pro.</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">97</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">ETHERIP</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Ethernet-within-IP Encapsulation</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">98</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">ENCAP</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Encapsulation Header</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">99</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">&nbsp;</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">any private encryption scheme</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">100</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">GMTP</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">GMTP</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">101</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">IFMP</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Ipsilon Flow Management Protocol</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">102</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">PNNI</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">PNNI over IP</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">103</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">PIM</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Protocol Independent Multicast</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">104</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">ARIS</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">ARIS</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">105</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">SCPS</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">SCPS</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">106</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">QNX</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">QNX</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">107</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">A/N</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Active Networks</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">108</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">IPComp</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">IP Payload Compression Protocol</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">109</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">SNP</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Sitara Networks Protocol</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">110</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">Compaq-Peer</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Compaq Peer Protocol</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">111</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">IPX-in-IP</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">IPX in IP</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">112</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">VRRP</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Virtual Router Redundancy Protocol</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">113</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">PGM</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">PGM Reliable Transport Protocol</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">114</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">&nbsp;</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">any 0-hop protocol</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">115</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">L2TP</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Layer Two Tunneling Protocol</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">116</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">DDX</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">D-II Data Exchange (DDX)</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">117</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">IATP</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Interactive Agent Transfer Protocol</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">118</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">STP</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Schedule Transfer Protocol</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">119</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">SRP</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">SpectraLink Radio Protocol</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">120</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">UTI</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">UTI</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">121</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">SMP</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Simple Message Protocol</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">122</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">SM (deprecated)</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Simple Multicast Protocol</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">123</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">PTP</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Performance Transparency Protocol</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">124</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">ISIS over IPv4</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">&nbsp;</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">125</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">FIRE</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">&nbsp;</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">126</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">CRTP</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Combat Radio Transport Protocol</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">127</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">CRUDP</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Combat Radio User Datagram</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">128</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">SSCOPMCE</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">&nbsp;</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">129</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">IPLT</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">&nbsp;</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">130</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">SPS</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Secure Packet Shield</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">131</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">PIPE</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Private IP Encapsulation within IP</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">132</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">SCTP</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Stream Control Transmission Protocol</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">133</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">FC</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Fibre Channel</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">134</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">RSVP-E2E-IGNORE</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">&nbsp;</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">135</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">Mobility Header</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">&nbsp;</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">136</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">UDPLite</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">&nbsp;</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">137</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">MPLS-in-IP</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">&nbsp;</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">138</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">manet</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">MANET Protocols</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">139</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">HIP</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Host Identity Protocol</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">140</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">Shim6</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Shim6 Protocol</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">141</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">WESP</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Wrapped Encapsulating Security Payload</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">142</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">ROHC</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Robust Header Compression</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">143-252</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">&nbsp;</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Unassigned</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">253</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">&nbsp;</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">Use for experimentation and testing</td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">254</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">&nbsp;</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303"> <p>Use for experimentation and testing</p> <p>&nbsp;</p> </td> </tr> <tr style="height: 18.75pt;"> <td style="width: 54pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="72">255</td> <td style="width: 101pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="135">Reserved</td> <td style="width: 227pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 18.75pt;" valign="top" width="303">&nbsp;</td> </tr> </tbody> </table> <p>Następnie podawany jest adres nadawcy z maską blankietową, a po nim &mdash; adres odbiorcy (r&oacute;wnież z maską blankietową). C&oacute;ż takiego jest ta maska blankietowa? W tym momencie wybacz Czytelniku jeszcze tego tematu nie rozwinę ale powr&oacute;cimy do niego dosłownie za chwilę &ndash; opisu szukaj kilka wierszy poniżej.</p> <p><strong>R1(config)#access-list 111 deny &lt;protok&oacute;ł&gt; &lt;adres_nadawcy&gt; &lt;adres_odbiorcy&gt; </strong></p> <p><strong>R1(config)#access-list 111 permit &lt;protok&oacute;ł&gt; &lt;adres_nadawcy&gt; &lt;adres_odbiorcy&gt; </strong></p> <p>&nbsp;</p> <p>Uzbrojeni w tą wiedzę spr&oacute;bujmy zatem zdefiniować rozszerzoną listę ACL, kt&oacute;ra zablokuje nam ruch sieciowy pochodzący od hosta 10.0.1.10 a wysyłany w kierunku hosta 10.0.3.10</p> <p>Lista ACL przyjmie zatem postać:</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image55.png" alt="image55" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p style="margin-left: 30px;"><strong>Punkt 1</strong> &ndash; numer listy został określony jako <strong>111</strong> czyli mamy do czynienia z <strong>listą rozszerzoną</strong>, chcemy zablokować ruch sieciowy a więc musimy użyć parametru: <strong>deny</strong>, blokowanym protokołem jest <strong>protok&oacute;ł IP</strong>, adres nadawcy został określony poprzez definicję: <strong>host 10.0.1.10</strong> gdyż to pakiety wysłane od tego hosta mają być blokowane, aby zaś host m&oacute;gł nawiązać połączenie z innymi komputerami wewnątrz sieci 10.0.3.0/24 opr&oacute;cz hosta 10.0.3.10 poprzez definicję: <strong>host 10.0.3.10</strong> został określony adres docelowy.</p> <p style="margin-left: 30px;"><strong>Punkt 2</strong> &ndash; instrukcja zezwalająca (parametr: <strong>permit</strong>) na ruch sieciowy pozostałym hostom (parametr: <strong>any any</strong> &ndash; czytaj z dowolnego adresu źr&oacute;dłowego do dowolnego adresu docelowego). Gdyby tej instrukcji zabrakło inne komputery będące przypisane do sieci 10.0.1.0/24 nie mogłyby nawiązać połączenia gdyż zadział by domyślny warunek: <strong>deny any</strong></p> <p>&nbsp;</p> <p>Lista ACL rozszerzona została utworzona, czas ją przypisać do interfejsu routera i tu rodzi się kolejne pytanie &ndash; Kt&oacute;ry router i interfejs wybrać? W przypadku list rozszerzonych zasada ich umiejscowienia brzmi następująco &ndash; <strong>Listy ACL rozszerzone umieszczamy najbliżej źr&oacute;dła</strong>. Mamy tu do czynienia z sytuacją odwrotną niż w przypadku list ACL standardowych. Zasadę tą ilustruje rysunek poniżej &ndash; blokowany pakiet nie musi przejść całej drogi do celu by i tak ostatecznie zostać zablokowanym (sytuacja występuje w przypadku list ACL standardowych) lecz jest odrzucany przy pierwszej nadarzającej się okazji.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image56.png" alt="image56" width="700" height="349" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Tak więc naszą listę ACL należy umieścić najbliżej źr&oacute;dła czyli jest to interfejs f0/0 routera R1. Pakiet trafia do routera tak więc kierunek działania listy musi być ustalony na: <strong>in</strong> Przypisanie rozszerzonej listy ACL następuje w ten sam spos&oacute;b jak listy standardowej.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image57.png" alt="image57" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Rozszerzona lista ACL została skonfigurowana. Czas by sprawdzić efekt przeprowadzonej konfiguracji. Pierwszy test zostanie przeprowadzony z hosta 10.0.1.10 &ndash; test zakończony powodzeniem, ruch sieciowy został zablokowany.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image58.png" alt="image58" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Test drugi &ndash; tym razem pakiet ping zostanie wysłany z hosta 10.0.1.20. Jak widać poniżej pr&oacute;ba komunikacji zakończyła się sukcesem. Lista ACL działa poprawnie.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image59.png" alt="image59" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Informacje o zdefiniowanej, rozszerzonej liście ACL uzyskamy dzięki poleceniom:</p> <p style="margin-left: 30px;">1 - <strong>show access-lists,</strong></p> <p style="margin-left: 30px;">2 - <strong>show running-config,</strong></p> <p style="margin-left: 30px;">3 - <strong>show ip interface &lt;interfejs&gt;</strong></p> <p><img src="http://slow7.pl/images/stories/siec/acl/image60.png" alt="image60" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Zadanie pierwsze wraz z informacjami dodatkowymi uważam za zakończone, idziemy dalej.</p> <p>&nbsp;</p> <p>Przykład drugi polega na zablokowaniu ruchu całej sieci 10.0.1.0/24 do sieci 10.0.3.0/24. Zadanie te wykonamy przy pomocy listy ACL standardowej jak i rozszerzonej.</p> <p>&nbsp;</p> <p>Rozpoczynamy od użycia listy ACL standardowej.</p> <p>&nbsp;</p> <p>Teoretycznie można by było do tego zadania wykorzystać listę ACL w kt&oacute;rej zdefiniowalibyśmy wiele warunk&oacute;w z kt&oacute;rych każdy miałby za zadanie zablokować ruch sieciowy pochodzący od jednego z hosta. W sieci 10.0.1.0/24 do wykorzystania jest 254 unikatowych adres&oacute;w IP, kt&oacute;re mogą zostać przypisane hostom (adresy od 10.0.1.1 do 10.0.1.254 - istnieją jeszcze dwa adresy IP ale jeden z nich 10.0.0.0 jest adresem sieci natomiast 10.0.0.255 obsługuje broadcast). Nasza lista ACL musiałaby by więc zawierać aż 254 wpis&oacute;w, kt&oacute;rych zadaniem byłoby zablokowanie całego ruchu pochodzącego od strony sieci 10.0.1.0/24 W przypadku standardowej listy ACL miałaby ona postać:</p> <p>&nbsp;</p> <p>deny host 10.0.1.1<br /> deny host 10.0.1.2<br /> deny host 10.0.1.3<br /> .<br /> .<br /> .</p> <p>deny host 10.0.1.254</p> <p>&nbsp;</p> <p>Jak można wywnioskować lista zbudowana w ten spos&oacute;b jest nader skomplikowana a przy jej tworzeniu łatwo o błąd a dodatkowo im więcej warunk&oacute;w zawiera lista ACL tym bardziej obciążamy router. Tak więc musi istnieć jakiś inny spos&oacute;b, kt&oacute;ry pozwoli nam na definicję listy i wykonanie zadania. Oczywiście i takowy istnieje. Definicja list ACL tego typu sprowadza się do wykorzystania tzw. <strong>wildcard mask</strong> (w literaturze maska ta definiowana jest jako maska wieloznaczna, maska odwr&oacute;cona bądź maska blankietowa zaś potocznie administratorzy często określają ją jako &bdquo;dziką&rdquo; maskę).</p> <p>&nbsp;</p> <p>W masce standardowej (masce podsieci) bit 1 wymusza dopasowanie zaś bit 0 oznacza brak dopasowania w przypadku wildcard mask sytuacja zaś ma się odwrotnie:</p> <p style="margin-left: 30px;"><strong>bit 0 wildcard mask</strong> - wykonaj dopasowanie,</p> <p style="margin-left: 30px;"><strong>bit 1 wildcard mask</strong> - zignoruj.</p> <p>&nbsp;</p> <p>Więc zadajmy pytanie &ndash; Jakiej więc wartości wildcard mask użyć? W naszym przykładzie mamy sytuację prostą wystarczy wykonać odejmowanie: od wartości 255.255.255.255 odejmujemy maskę podsieci (w naszym przypadku maska podsieci przyjęła wartość 255.255.255.0 &ndash; CIDR /24).</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image61.png" alt="image61" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po wykonaniu działania wartość maski odwr&oacute;conej przyjmuje wartość: 0.0.0.255</p> <p>&nbsp;</p> <p>Oczywiście analogicznie postępujemy w przypadku innych sieci np. dla sieci 255.255.255.252 &ndash; CIDR /30 (takie podsieci mamy pomiędzy routerami) wartość wildcard mask wyniesie: 0.0.0.3</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image62.png" alt="image62" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Wracając do naszego przykładu aby zabronić na ruch sieciowy między siecią 10.0.1.0/24 a 10.0.3.0/24 przy wykorzystaniu listy ACL standardowej należy użyć warunku: <strong>deny 10.0.1.0 0.0.0.255</strong> &ndash; punkt 1</p> <p>&nbsp;</p> <p>Po określeniu pierwszego wpisu został zdefiniowany kolejny, kt&oacute;ry pozwala na ruch sieciowy pochodzący od innej sieci niż: 10.0.1.0/24 (punkt 2).</p> <p>&nbsp;</p> <p>Ostatnią czynnością (punkt 3) jest sprawdzenie poprawności listy.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image63.png" alt="image63" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po definicji warunk&oacute;w listy ACL nie można zapomnieć o powiązaniu jej z interfejsem routera, ponieważ jest to lista standardowa zostanie ona umieszczona najbliżej celu czyli na interfejsie f0/0 routera R3.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image64.png" alt="image64" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Zadanie wykonane, czas na testy. Test z wykorzystaniem hosta 10.0.1.10 kończy się sukcesem, ruch sieciowy jest zablokowany.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image65.png" alt="image65" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>R&oacute;wnież test przeprowadzony z hosta 10.0.1.20 kończy się sukcesem &ndash; pakiety ICMP nie docierają do celu.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image66.png" alt="image66" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Ostatnia pr&oacute;ba zostanie przeprowadzona z wykorzystaniem komputera WindowsXP_2 i tu r&oacute;wnież pełny sukces - pakiety osiągają docelową sieć 10.0.3.10 (instrukcja: <strong>deny 10.0.1.0 0.0.0.255</strong> dla sieci 10.0.2.0 nie ma zastosowania).</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image67.png" alt="image67" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Sprawdzenie listy ACL uwidacznia ilość dokonanych dopasowań do zdefiniowanych warunk&oacute;w. Lista ACL działa poprawnie.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image68.png" alt="image68" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Jak już umiemy definiować rozszerzone listy ACL spr&oacute;bujmy te same zadanie wykonać z ich wykorzystaniem.</p> <p>&nbsp;</p> <p>Aby zabronić na ruch sieciowy od sieci 10.0.1.0/24 do sieci 10.0.3.0/24 należy utworzyć warunek, kt&oacute;ry ruch wychodzący z sieci 10.0.1.0/24 zablokuje. Rozpoczynamy od wydania polecenia access-list wraz z numerem należącym do zakresu przypisanego listom rozszerzonym. Pakiety mają zostać zablokowane tak więc niezbędne będzie dodanie flagi: <strong>deny</strong>. W kolejnym kroku definiujemy adres źr&oacute;dłowy - blokowane mają być wszystkie adresy IP wchodzące w skład sieci 10.0.1.0/24 tak więc niezbędne będzie dodanie do polecenia adresu sieci 10.0.1.0 wraz z maską blankietową 0.0.0.255 Gdy zostały określone źr&oacute;dłowe adresy IP czas zdefiniować adresy docelowe - blokujemy możliwość komunikacji z siecią docelową 10.0.3.0/24 tak więc definicja obejmująca ten zakres adres&oacute;w IP przyjmie postać: 10.0.3.0 0.0.0.255 Składnia całego polecenia została pokazana na rysunku poniżej - punkt 1.</p> <p>&nbsp;</p> <p>Po definicji listy ACL przypisujemy ją do interfejsu f0/0 routera R1. Dlaczego został wybrany ten interfejs i ten router? - to już Czytelniku mam nadzieję, że jest dla Ciebie jasne. Dla przypomnienia (nie zaszkodzi powt&oacute;rzyć) - rozszerzoną listę ACL przypisujemy najbliżej źr&oacute;dła &ndash; punkt 2.</p> <p>&nbsp;</p> <p>Po wydaniu wszystkich poleceń nie zaszkodzi sprawdzić ich poprawności - punkt 3.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image69.png" alt="image69" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po określeniu pierwszego wpisu oczywiście musiał zostać zdefiniowany kolejny warunek (punkt 4), kt&oacute;ry zezwala na ruch sieciowy do innych sieci (w przypadku jego braku hosty z sieci 10.0.1.0/24 nie mogłyby się skomunikować np. z siecią 10.0.2.0/24).</p> <p>&nbsp;</p> <p>Po dokonanej konfiguracji listy ACL przyszedł czas by sprawdzić efekt jej działania.</p> <p>&nbsp;</p> <p>Pierwszy test został wykonany z hosta 10.0.1.10, drugi zaś z hosta 10.0.1.20 - oba zakończyły się sukcesem ruch sieciowy z sieci 10.0.1.0/24 został zablokowany.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image70.png" alt="image70" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Aby sprawdzić do końca działanie zdefiniowanej listy sprawdźmy jeszcze łączność z siecią 10.0.2.0/24 Test wykonany z hosta 10.0.1.20 zakończył się sukcesem tak więc nasza lista ACL działa poprawnie.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image71.png" alt="image71" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Zanim przejdziemy dalej i spr&oacute;bujemy wykonać kolejne zadanie zatrzymajmy się jeszcze chwilkę przy wildcard mask.</p> <p>&nbsp;</p> <p>Kilka wierszy powyżej napisałem iż bit 0 w wildcard mask oznacza dopasowanie zaś bit 1 zignoruj. Tę zasadę ilustruje rysunek poniżej.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image72.png" alt="image72" width="700" height="118" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Została przedstawiona przykładowa sieć 192.168.1.0 z zdefiniowaną maską odwrotną 0.0.0.255 (obszar maski zaznaczony na ż&oacute;łto) &ndash; czyli w ramach tych bit&oacute;w adresu ma nastąpić dopasowanie (liczy się pierwsze 24 bity zajęte przez wartości 0) Jeśli 0 oznacza dopasowanie por&oacute;wnując adres sieci z adresem z pierwszego przykładu (adres IP 192.168.1.20) widzimy iż dopasowanie na wszystkich 24 bitach zostało zachowane. Brak dopasowania zachodzi dopiero na 28 bicie ale ponieważ 28 bit został odznaczony przez maskę jako 1 - brak dopasowania nie ma tu znaczenia. Co za tym idzie lista ACL i połączony z nią warunek dla tego adresu IP będzie miał zastosowanie.</p> <p>&nbsp;</p> <p>W drugim przykładzie (adres 192.168.2.1) dopasowanie jest zachowane do 22 bitu adresu (bit 23 zawiera wartość 1 a powinien 0) oznacza to iż adres ten nie spełnia wymog&oacute;w zdefiniowanego warunku (przypisana instrukcja do tego adresu IP nie będzie miała zastosowania).</p> <p>&nbsp;</p> <p>W przykładzie trzecim mamy tą samą sytuację co w drugim z tą r&oacute;żnicą, że w tym przykładzie dopasowanie jest zachowane do bitu 12.</p> <p>&nbsp;</p> <p>Przy definicji list ACL jak już pewnie zauważyłeś stosowaliśmy dwa specjalne parametry, mowa tu o fladze <strong>any</strong> oraz fladze <strong>host</strong>.</p> <p>&nbsp;</p> <p>Opcja <strong>any</strong> wymusza zastosowanie maski 255.255.255.255. Użycie takie maski powoduje ignorowanie całego adresu IP bądź inaczej akceptację dowolnego.</p> <p>&nbsp;</p> <p>Zasadę działania flagi <strong>any</strong> zobrazowano na rysunku poniżej.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image73.png" alt="image73" width="700" height="109" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Ponieważ maska odwrotna poprzez użycie <strong>any</strong> (co r&oacute;wne jest zapisowi 255.255.255.255) została zdefiniowana jako ciąg bit&oacute;w przyjmujących wartość 1 to połączenie każdego z adres&oacute;w IP powoduje jego akceptację. W przypadku połączenia z instrukcją: <strong>deny</strong> (warunek: <strong>deny any</strong>) tak zdefiniowana lista spowoduje zablokowanie całego ruchu sieciowego zaś w przypadku instrukcji: <strong>permit</strong> zezwolenie na ruch sieciowy z dowolnego adresu IP.</p> <p>&nbsp;</p> <p>Opcja <strong>host</strong> zastępuje maskę 0.0.0.0. Maska ta powoduje sprawdzenie wszystkich bit&oacute;w adresu i bity te muszą wykazać pełną zgodność. Zastosowanie parametru <strong>host</strong> spowoduje dopasowanie tylko jednego adresu IP.</p> <p>&nbsp;</p> <p>I już tradycyjne rysunek poniżej.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image74.png" alt="image74" width="700" height="127" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Wildcard mask w kt&oacute;rej pojawia się flaga: <strong>host</strong> (co r&oacute;wne jest zapisowi: 0.0.0.0) oznacza wykonanie pełnego dopasowania gdyż wszystkie bity maski są zdefiniowane jako 0. Ten warunek zostanie tylko spełniony przez jeden pojedynczy adres IP - w przykładzie powyżej adres IP 192.168.1.1 został połączony z maską odwrotną 0.0.0.0 tak więc tylko taki adres spełni warunek dopasowania.</p> <p>&nbsp;</p> <p>Pozostając jeszcze przez chwilę przy temacie maski odwrotnej zastan&oacute;wmy się jaką by należało przyjąć maskę gdybyśmy chcieli wykonać zadanie, kt&oacute;re polegałoby na zablokowaniu ruchu sieciowego od adresu IP 192.168.0.1 do 192.168.0.5? W ramach tego kr&oacute;tkiego ćwiczenia dla ułatwienia rozważań przyjmijmy, że mamy do czynienia z topologią przedstawioną na rysunku poniżej:</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image75.png" alt="image75" width="700" height="488" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Zależy nam na tym aby hosty od adresu IP 192.168.0.1 do 192.168.0.5 nie mogły komunikować się z siecią 192.168.1.0/24 zaś hosty począwszy od adresu 192.168.0.6 już tak.</p> <p>&nbsp;</p> <p>Pierwsze rozwiązanie tego problemu jakie każdemu powinno się nasunąć to zbudowanie listy ACL złożonej z 5 warunk&oacute;w w postaci: <strong>deny host 192.168.0.x</strong> gdzie x jest liczbą od 1 do 5 i jednego warunku: <strong>permit any</strong></p> <p>&nbsp;</p> <p>Oczywiście jest to wyjście z sytuacji i w tym ćwiczeniu jak najbardziej zdałoby egzamin - Ale czy postąpilibyśmy tak samo gdyby zakres blokowanych adres&oacute;w IP wynosiłby powiedzmy adresy od 192.168.0.1 do 192.168.0.80? Już nie.</p> <p>&nbsp;</p> <p>A więc co należy wykonać by podany zakres adres&oacute;w IP zablokować? Pierwszą czynność jaką musimy przeprowadzić jest wyznaczenie adresu podsieci i maski do kt&oacute;rej blokowane hosty należą. Potrzebne nam dane odnajdziemy wykonując tzw. sumaryzację bądź podsumowanie (zagadnienie wykorzystywane r&oacute;wnież w routingu celem zmniejszenia rozmiar&oacute;w tablic routingu).</p> <p>&nbsp;</p> <p>Rozpiszmy nasze adresy IP binarnie (w gwoli ścisłości wystarczyłoby by rozpisać pierwszy i ostatni adres IP):</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image76.png" alt="image76" width="700" height="95" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Następnie poruszamy się od lewej strony do prawej szukając dopasowania - miejsca w kt&oacute;rym wszystkie adresy są ze sobą zgodne. Gdy dotrzemy do miejsca w kt&oacute;rym zgodność nie jest zachowana, m&oacute;wi się że znaleźliśmy granicę podsumowania. Jak widać nasza granica znajduje się przy 29 bicie gdyż por&oacute;wnując bit 30 dopasowanie nie jest już zachowane. Liczba 29 jest maską podsieci dla sieci sumarycznej. Maska /29 odpowiada adresowi 255.255.255.248. By odnaleźć adres sieci, przepisujemy bity do granicy podsumowania bez zmian natomiast resztę pozostałych bit&oacute;w dopełniamy zerami. W naszym przykładzie 1100000.10101000.00000000.00000000, co odpowiada adresowi IP 192.168.0.0.</p> <p>&nbsp;</p> <p>A więc adresem podsumowującym hosty jest podsieć: 192.168.0.0 255.255.255.248.</p> <p>&nbsp;</p> <p>Mając maskę łatwo możemy przeliczyć ją na maskę odwrotną.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image77.png" alt="image77" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>A więc przy budowie listy ACL należy użyć adresu 192.168.0.0 z wildcard mask o wartości 0.0.0.7</p> <p>&nbsp;</p> <p>Zdobytą wiedzę wykorzystajmy w działaniu i zdefiniujmy standardową listę ACL.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image78.png" alt="image78" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Tak utworzoną listę oczywiście należy przypisać do interfejsu po stronie sieci 192.168.1.0/24</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image79.png" alt="image79" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Lista ACL została skonfigurowana sprawdźmy zatem efekt naszych poczynań. W pierwszej kolejności host 192.168.0.1</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image80.png" alt="image80" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Wszystko się zgadza host nie może skomunikować się z siecią 192.168.1.0/24</p> <p>&nbsp;</p> <p>Czas na hosta 192.168.0.6</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image81.png" alt="image81" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>I w tym przypadku już tak kolorowo nie jest (a miało być tak pięknie). Host 192.168.0.6 r&oacute;wnież nie może skomunikować się z siecią 192.168.1.0/24 co jest sprzeczne z przyjętymi założeniami ćwiczenia. C&oacute;ż takiego się stało, że i temu hostowi została odebrana możliwość komunikacji?</p> <p>&nbsp;</p> <p>Odpowiedź jest prosta. Host o adresie IP 192.168.0.6 tak jak hosty o adresach od 192.168.0.1 do 192.168.0.5 r&oacute;wnież należy do podsieci 192.168.0.0 255.255.255.248 (CIDR: /29) a co za tym idzie wykorzystując wyliczoną maskę wieloznaczną 0.0.0.7 r&oacute;wnież hostowi 192.168.0.6 zostanie odebrana możliwość komunikacji z żądaną siecią. Sytuacja ta dotyczy r&oacute;wnież hosta o adresie IP 192.168.0.7. Dopiero host z adresem IP 192.168.0.8 poprawnie nawiąże połączenie z siecią 192.168.1.0/24</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image82.png" alt="image82" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Mam nadzieję, że zaistniały fakt i powstałe wątpliwości rozjaśni rysunek poniżej.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image83.png" alt="image83" width="700" height="192" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Jak można zauważyć dwa wspomniane adresy IP tj. 192.168.0.6 i 192.168.0.7 r&oacute;wnież spełniają warunek zgodności zachodzący do 29 bitu adresu (do granicy podsumowania) a dopiero adres IP 192.168.0.8 warunku dopasowania nie spełnia.</p> <p>&nbsp;</p> <p>Tak więc co należy wykonać aby nasze ćwiczenie wykonać prawidłowo? Należy poprawić listę ACL poprzez utworzenie osobnych warunk&oacute;w dla dw&oacute;ch problematycznych adres&oacute;w IP.</p> <p>&nbsp;</p> <p>Nasza lista ACL przyjmie postać:</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image84.png" alt="image84" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p style="margin-left: 30px;">1 - definicja zezwalająca na ruch sieciowy z host&oacute;w o adresach IP 192.168.0.6 oraz 192.168.0.7,</p> <p style="margin-left: 30px;">2 - definicja zabraniająca na ruch sieciowy hostom od 192.168.0.1 do 192.168.0.7 (wpis ten nie będzie miał zastosowania do host&oacute;w 192.168.0.6 oraz 192.168.0.7 gdyż wykluczenie tych adres&oacute;w zostało zdefiniowane w punkcie 1),</p> <p style="margin-left: 30px;">3 - definicja zezwalająca na ruch sieciowy pozostałym hostom (od 192.168.0.8 do 192.168.0.255),</p> <p style="margin-left: 30px;">4 - przypisanie listy ACL do interfejsu.</p> <p>&nbsp;</p> <p>Nie pozostaje nam nic innego jak dokonanie sprawdzenia.</p> <p>&nbsp;</p> <p>I tak jak poprzednio zaczynamy od hosta 192.168.0.1</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image85.png" alt="image85" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Test zakończony pomyślnie.</p> <p>&nbsp;</p> <p>Czas na hosta 192.168.0.6</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image86.png" alt="image86" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Łączność z siecią 192.168.1.0/24 jest możliwa. Test zakończony powodzeniem.</p> <p>&nbsp;</p> <p>Nasza lista ACL działa poprawnie.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image87.png" alt="image87" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Na koniec rozważań dotyczących wildcard mask chcę cię Czytelniku pozostawić z pytaniem &ndash; Czy nasza lista ACL mogłaby zostać zdefiniowana tak jak na rysunku poniżej i czy gwarantuje to poprawność wykonania zadania? (jeśli Ci się nie uda odpowiedzieć na pytanie nie martw się &ndash; odpowiedź znajdziesz na końcu wpisu).</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image88.png" alt="image88" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Przejdźmy zatem do kolejnego przykładu zastosowania list ACL. Funkcja pełniona przez listę ACL jest bardzo podobna do tej z ćwiczenia pierwszego z tą małą r&oacute;żnicą iż będziemy blokować ruch sieciowy pomiędzy hostem o adresie IP 10.0.1.10 (WindowsXP_1) a hostem 10.0.2.10 (WindowsXP_2). W przykładzie pierwszym do wykonania zadania użyliśmy m.in. standardowej listy ACL w tym przykładzie r&oacute;wnież takową listę użyjemy lecz tym razem będzie to tzw. <strong>standardowa lista ACL nazywana</strong>.</p> <p>&nbsp;</p> <p>W przykładzie tym jak i następnym wracamy do naszej bazowej topologii więc by nie przewijać na sam początek artykułu jeszcze raz dla przypomnienia.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image89.png" alt="image89" width="700" height="341" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Nazwane listy ACL dla protokołu IP wprowadzono w wersji 11.2 systemu Cisco IOS.</p> <p>&nbsp;</p> <p>Podczas pracy z listami ACL przekonasz się nie raz, że komentarz, kt&oacute;ry zawiera opis działania listy ACL znacznie ułatwi Ci zrozumienie sposobu działania danej listy. Jeśli konfigurowana lista ACL znajduje się w środowisku sieciowym w kt&oacute;rym pełnisz rolę administratora już od dłuższego czasu zapoznanie się z takim opisem natychmiast przypomni Ci dlaczego została ona skonfigurowana. Jeśli zaś środowisko sieciowe w kt&oacute;rym pracujesz jest dla Ciebie &bdquo;dziewiczym&rdquo; obszarem to będziesz wdzięczny poprzedniemu administratorowi, że zawarł wskaz&oacute;wki, kt&oacute;re obszar ten pozwolą Ci poznać. Aby ułatwić sobie rozeznanie co do zasadności stosowania danych list ACL można je nazywać. Nazwa listy ACL w postaci: <strong>blokadaSieciBiuro</strong> da Ci więcej informacji o pełnionej przez listę ACL funkcji niż suchy opis w postaci jej numeru. Dlatego też opr&oacute;cz stosowania standardowych list ACL numerowanych można posłużyć się listą nazywaną.</p> <p>&nbsp;</p> <p>Po analizie ćwiczenia pierwszego już wiesz że listę standardową umieszczamy najbliżej celu. Zależy nam na blokadzie ruch pomiędzy hostem WindowsXP_1 a WindowsXP_2 tak by host o adresie IP 10.0.1.10 nie m&oacute;gł skomunikować się z hostem 10.0.2.10 Najbliżej naszego celu (host WindowsXP_2) znajduje się interfejs f0/0 routera R2 tak więc to na tym interfejsie założymy listę ACL.</p> <p>&nbsp;</p> <p>Aby zdefiniować nazywaną standardową listę ACL przechodzimy do trybu konfiguracji globalnej routera R2 i wydajemy polecenie: <strong>ip access-list standard &lt;nazwa_listy&gt; </strong>(w przypadku konfiguracji listy rozszerzonej zamiast parametru: <strong>standard</strong> używamy parametr: <strong>extended</strong>). A następnie w trybie konfiguracji listy ACL definiujemy jej warunki &ndash; punkt 1. Ostatnią czynność jaką musimy wykonać by lista ACL mogła zacząć działać jest jej powiązanie z danym interfejsem. W naszym scenariuszu lista ACL <strong>blokadaWinXP1 </strong>została przypisana do interfejsu f0/0. Kierunek działania listy oczywiście został określony jako: <strong>out</strong></p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image90.png" alt="image90" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Sprawdźmy zatem działanie listy ACL.</p> <p>&nbsp;</p> <p>Test ping przeprowadzony z hosta 10.0.1.10 kończy się sukcesem &ndash; brak jest połączenia z adresem 10.0.2.10</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image91.png" alt="image91" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Zaś test komunikacji wykonany z hosta Windows7 r&oacute;wnież kończy się sukcesem &ndash; połączenie z hostem 10.0.2.10 zostaje nawiązane.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image92.png" alt="image92" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Zdefiniowana lista ACL została skonfigurowana prawidłowo.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image93.png" alt="image93" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>W kolejnym ćwiczeniu zajmiemy się dalszą konfiguracją list ACL lecz tym razem filtrowanie ruchu skonfigurujemy w oparciu o numery port&oacute;w.</p> <p>&nbsp;</p> <p>Ćwiczenie polega na skonfigurowaniu listy ACL w ten spos&oacute;b aby tylko host 10.0.1.20 (dla pozostałych adres&oacute;w IP z podsieci 10.0.1.0/24 łączność ma być blokowana) m&oacute;gł sesję SSH z routerem R3 nawiązać.</p> <p>&nbsp;</p> <p>Aby wykonać to zadanie w definiowanych warunkach listy ACL musimy umieścić informację o numerze portu.</p> <p>&nbsp;</p> <p>Numery port&oacute;w mogą odnosić się do adresu źr&oacute;dłowego jak i docelowego.</p> <p>&nbsp;</p> <p>Ponieważ kontrola dostępu będzie prowadzona w oparciu o numery port&oacute;w należy użyć listy rozszerzonej a konfigurowanym protokołem jest TCP bądź UDP.</p> <p>&nbsp;</p> <p>Prześledźmy taki o to warunek: <strong>access-list 180 permit tcp any any eq 80</strong> Warunek ten zezwala na nawiązanie sesji z dowolnego adresu źr&oacute;dłowego do dowolnego adresu docelowego pod warunkiem iż nawiązywany ruch odnosi się do portu 80. W powyższej instrukcji zapis: <strong>eq 80</strong> należy odczytać jako: <strong>r&oacute;wna się 80</strong></p> <p>&nbsp;</p> <p>Warunek definicji portu w powyższej liście ACL odnosi się oczywiście do adresu docelowego. Aby określić adres źr&oacute;dłowy nasza lista przyjęła by postać: <strong>access-list 180 permit tcp any eq 80 any</strong> Oczywiście dozwolona jest sytuacja w kt&oacute;rej zostaje zdefiniowany port w adresie źr&oacute;dłowym jak i docelowym. Warunek: <strong>access-list 180 permit tcp any eq 1566 any eq 80 </strong>pozwala na nawiązanie połączenia z dowolnym hostem na porcie 80 z dowolnego hosta pod warunkiem iż połączenie te inicjowane jest z wykorzystaniem portu 1566.</p> <p>&nbsp;</p> <p>Nie jest tajemnicą iż port 80 odnosi się do ruchu WWW tak więc zamiast określać numer portu możemy użyć nazwę usługi. Zapis: <strong>access-list 180 permit tcp any any eq 80 </strong>będzie tożsamy z<strong> access-list 180 permit tcp any any eq www</strong></p> <p>&nbsp;</p> <p>Dostępnych jest wiele nazw usług, kt&oacute;rych zamiennie możemy użyć zamiast numeru portu, poniżej została przedstawiona lista tych najczęściej używanych (nazwy dotyczą protokołu TCP).</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image94.png" alt="image94" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>W przypadku protokołu UDP do dyspozycji mamy następujące zmienne:</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image95.png" alt="image95" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Opr&oacute;cz warunku r&oacute;wności portu do dyspozycji mamy jeszcze następujące zmienne:</p> <p style="margin-left: 30px;"><strong>gt</strong> - dopasowywanie tylko pakiet&oacute;w z większym numerem portu, warunek: <strong>access-list 180 permit tcp any any gt 80 </strong>oznacza możliwość nawiązania połączenia z hostem docelowym pod warunkiem iż połączenie nawiązywane jest z portem o numerze wyższym niż 80,</p> <p style="margin-left: 30px;"><strong>lt</strong> - dopasowywanie tylko pakiet&oacute;w z mniejszym numerem portu, warunek: <strong>access-list 180 permit tcp any any lt 80 </strong>oznacza możliwość nawiązania połączenia z hostem docelowym pod warunkiem iż połączenie nawiązywane jest z portem o numerze niższym niż 80,</p> <p style="margin-left: 30px;"><strong>neq </strong>- dopasowywanie tylko pakiet&oacute;w, kt&oacute;rych port nier&oacute;wna się, warunek: <strong>access-list 180 permit tcp any any neq 80 </strong>oznacza możliwość nawiązania połączenia z hostem docelowym pod warunkiem iż połączenie nie jest nawiązywane z portem o numerze 80 (wszystkie numery port&oacute;w są dozwolone tylko nie port 80),</p> <p style="margin-left: 30px;"><strong>range</strong> - dopasowywanie tylko pakiet&oacute;w, kt&oacute;rych numer znajduje się w zdefiniowanym zakresieportu z mniejszym numerem portu, warunek: <strong>access-list 180 permit tcp any any range 80 100</strong> oznacza możliwość nawiązania połączenia z hostem docelowym pod warunkiem iż połączenie nawiązywane jest z portem o numerze, kt&oacute;ry mieści się w zakresie od 80 do 100 (do zakresu port 80 oraz 100 r&oacute;wnież się wlicza).</p> <p>&nbsp;</p> <p>Wszystko już wiemy zatem przechodzimy do przykładu.</p> <p>Usługa dostępu dla protokołu zdalnego z wykorzystaniem SSH została skonfigurowana na routerze R3 &ndash; jak wykonać taką konfigurację odsyłam do wpisu: <a href="http://slow7.pl/item/36-dostep-zdalny-oraz-prawa-uzytkownika-w-urzadzeniach-cisco" title="Dostęp zdalny oraz prawa użytkownika w urządzeniach CISCO"><span style="text-decoration: none;">Dostęp zdalny oraz prawa użytkownika w urządzeniach CISCO</span></a></p> <p>&nbsp;</p> <p>Wykonajmy sprawdzenie dostępności portu dla usługi SSH z wykorzystaniem narzędzia NMap. Użyta komenda wykona skanowanie TCP portu 22 (jeśli chcesz poznać bardziej zaawansowane techniki skanowania zapraszam tym razem do zapoznania się z tym artykułem: <a href="http://slow7.pl/sieci-komputerowe/item/121-co-w-sieci-siedzi-skanowanie-portow" title="Co w sieci siedzi. Skanowanie port&oacute;w."><span style="text-decoration: none;">Co w sieci siedzi. Skanowanie port&oacute;w</span></a>).Jak widać poniżej test kończy się sukcesem &ndash; port jest otwarty i czeka na nawiązanie połączenia.</p> <p>&nbsp;</p> <p>Połączenie z routerem następuje przy wykorzystaniu programu OpenSSH, po wywołaniu polecenia oraz podaniu danych uwierzytelniających połączenie zostaje zestawione (przy pierwszym połączeniu trzeba zaakceptować tzw. &bdquo;odcisk palca&rdquo;). Łączność z routerem została ustanowiona z hosta 10.0.1.20 (Windows7).</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image96.png" alt="image96" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>W tym momencie, jeszcze żadna lista ACL ograniczająca możliwość nawiązania połączenia nie została zdefiniowana tak więc połączenie może być zestawione z dowolnego komputera. Jak widać poniżej test połączenia z hosta 10.0.1.10 (WindowsXP_1) r&oacute;wnież kończy się sukcesem.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image97.png" alt="image97" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Celem ćwiczenia jest skonfigurowanie takiej listy ACL, kt&oacute;ra pozwoli na nawiązanie sesji SSH tylko z hosta 10.0.1.20 (reszcie komputer&oacute;w z podsieci 10.0.1.0/24 prawo to ma być odebrane). Lista ACL wykonująca to zadanie została przedstawiona na zrzucie poniżej (zadanie wykonamy przy wykorzystaniu listy ACL rozszerzonej, nazywanej):</p> <p style="margin-left: 30px;"><strong>punkt 1</strong> - rozpoczynamy od utworzenia listy ACL o nazwie ruchSSH,</p> <p style="margin-left: 30px;"><strong>punkt 2</strong> - utworzony warunek zezwala na ruch TCP (zapis: permit tcp) z hosta o adresie IP 10.0.1.20 (zapis: host 10.0.1.20) do hosta o adresie IP 10.0.3.1 (zapis: host 10.0.3.1) pod warunkiem iż ruch ten dotyczy portu 22 (zapis: eq 22),</p> <p style="margin-left: 30px;"><strong>punkt 3</strong> - ponieważ router R3 posiada w naszej sieci dwa aktywne interfejsy sieciowe tak więc połączenie SSH może zostać nawiązane z dowolnym z nich, aby host 10.0.1.20 m&oacute;gł sesje SSH zestawić z interfejsem po stronie sieci 192.168.2.0/30 trzeba mu na to pozwolić. Warunek zezwalający na połączenie SSH przyjmie tę samą postać co w punkcie 2 z drobną r&oacute;żnicą dotyczącą hosta docelowego &ndash; zapis: host 192.168.2.1</p> <p style="margin-left: 30px;"><strong>punkt 4</strong> - w założeniu ćwiczenia reszcie host&oacute;w, prawo nawiązania połączenia SSH ma zostać odebrane tak więc dzięki definicji warunku: <strong>deny tcp any any eq 22</strong> łączność z routerem R3 zostaje zablokowana. A gwoli ścisłości żaden host z sieci 10.0.1.0/24 nie będzie m&oacute;gł nawiązać sesji SSH z żadnym z host&oacute;w zdalnych (bardziej zasadne byłyby warunki ograniczające ten zakaz do sieci 10.0.3.0/24 oraz 192.168.2.0/30 &ndash; <strong>deny tcp any 10.0.3.0 0.0.0.255 eq 22</strong> oraz <strong>deny tcp any 192.168.2.0 0.0.0.3 eq 22</strong>),</p> <p style="margin-left: 30px;"><strong>punkt 5</strong> - ostatnią czynnością jest przypisanie listy do interfejsu, ponieważ listę rozszerzoną nieważne czy jest to lista numerowana czy nazywana zakładamy najbliżej celu to łączem do kt&oacute;rego będziemy listę przypisywać jest interfejs f0/0 routera R1. O tym jeszcze nie wspominałem ale przy nazywanej liście ACL wielkość liter ma znaczenie oznacza to, ni mniej ni więcej iż nazwa listy ruchSSH nie jest tożsama z nazwą ruchssh.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image98.png" alt="image98" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po skonfigurowaniu listy ACL przechodzimy do jej przetestowania, test rozpoczynamy od hosta 10.0.1.20. Jak widać poniżej hostowi udało się połączenie SSH z routerem nawiązać.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image99.png" alt="image99" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Pora na komputer o adresie IP 10.0.1.10. W tym przypadku dostęp do routera okazał się niemożliwy.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image100.png" alt="image100" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Aby faktycznie potwierdzić możliwość zestawienia poprawnego połączenia SSH został wykonany skan portu 22 interfejsu routera R1. Skan pierwszy odbył się z hosta 10.0.1.20 i jak widać port został zidentyfikowany jako: <strong>open</strong> Oznacza to możliwość nawiązania połączenia. Drugi skan przeprowadził komputer 10.0.1.10, tym razem status portu został określony jako: <strong>filtered</strong> co oznacza iż port jest filtrowany. Status taki najczęściej pojawi się w przypadku hosta znajdującego się za zaporą sieciową bądź innym mechanizmem kontrolującym ruch sieciowy. W naszym przypadku jest to lista ACL.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image101.png" alt="image101" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Aby faktycznie sprawdzić działanie listy ACL sprawdźmy jej stan. Wywołanie polecenia: <strong>show access-lists</strong> uwidoczni ilość dopasowań. Lista ACL działa jak należy.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image102.png" alt="image102" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Listy ACL standardowe oraz rozszerzone nie są jedynym dostępnym arsenałem, kt&oacute;ry pozwoli nam na kontrolowanie ruchu w naszej sieci. Opisane wyżej typy list ACL nie są w stanie zapewnić nam rozwiązania wszystkich problem&oacute;w na jakie możemy natknąć się podczas sprawowania kontroli nad zarządzaną siecią. Dlatego też powstały dodatkowe rozwiązania, kt&oacute;re pozwalają nam na wprowadzenie mechanizm&oacute;w odpowiedzialnych za usprawnienie przepływu pakiet&oacute;w generowanych przez zarządzaną sieć.</p> <p>&nbsp;</p> <p>Nie jest tajemnicą i stwierdzenie tym &bdquo;Ameryki nie odkryję&rdquo; że we wsp&oacute;łczesnych sieciach komputerowych dąży się do rozwiązań w kt&oacute;rych niepożądany ruch sieciowy pochodzący z zewnątrz (czytaj - ruch sieciowy pochodzący z obszar&oacute;w nad kt&oacute;rymi nie sprawujemy kontroli - najczęściej Internet) powinien zostać odfiltrowany (zablokowany) zanim zostanie przekazany do wnętrza sieci.</p> <p>&nbsp;</p> <p>Oczywiście istnieją odstępstwa od tej reguły gdyż nie wszystkie pakiety, kt&oacute;re pochodzą z zewnątrz są niepożądane i co ważne nie mogą podlegać blokowaniu. Jak więc sprawować kontrolę nad tym co trafia do naszej sieci tak by jej użytkownicy mogli realizować swoje zadania a jednocześnie nie narażać się na atak.</p> <p>&nbsp;</p> <p>Jeśli znamy charakterystykę ruchu, kt&oacute;ry nie zagraża naszej sieci poprzez odpowiednią definicję list ACL możemy jawnie zezwolić na pożądany ruch. Sytuacja trochę się gmatwa gdy do końca nie jesteśmy w stanie określić charakterystyki pakiet&oacute;w, kt&oacute;re do sieci mogą trafić a kt&oacute;re powinny być blokowane.</p> <p>&nbsp;</p> <p>Bardzo często spotykamy się z sytuacją w kt&oacute;rej użytkownik sieci chce nawiązać połączenie z hostem znajdującym się np. w Internecie ale okazuje się to niemożliwe gdyż lista ACL założona na routerze brzegowym na takie połączenie zabrania.</p> <p>&nbsp;</p> <p>Aby rozwiązać ten problem wdrożono mechanizmy, kt&oacute;re umożliwią nam na poprawne zestawienie połączenia (niezbędne pakiety przez listę ACL zostaną przepuszczone) ale tylko pod warunkiem iż jest to ruch powrotny, kt&oacute;ry zainicjowany został wewnątrz sieci.</p> <p>&nbsp;</p> <p>Istnieją następujące rozwiązania filtrowania ruchu:</p> <ul> <li style="padding-left: 60px;">TCP Established</li> <li style="padding-left: 60px;">Zwrotne (reflexive) ACL</li> </ul> <p>&nbsp;</p> <p>Rozpocznijmy zatem od <strong>TCP Established</strong>. Mechanizm ten zaimplementowano w urządzeniach CISCO w roku 1995 a dał on możliwość filtracji pakiet&oacute;w w oparciu o definicję listy rozszerzonej w połączeniu z protokołem TCP. Użycie tego mechanizmu sprowadza się do dodania w definicji warunku listy ACL parametru: <strong>established</strong>.</p> <p>&nbsp;</p> <p>Dodanie flagi: <strong>established</strong> do warunku spowoduje blokadę ruchu sieciowego pochodzącego z niezaufanej sieci z wyjątkiem odpowiedzi TCP związanych z zestawionymi połączeniami, zainicjowanymi wewnątrz sieci.</p> <p>&nbsp;</p> <p>Działanie tego mechanizmu opiera się o proces nawiązywania połączenia TCP, gdyż użycie parametru: <strong>established</strong> wymusza na routerze sprawdzanie faktu ustawienia w nagł&oacute;wku pakietu flag kontrolnych ACK lub RST. Jeśli jest ustawiona flaga ACK ruch TCP jest przepuszczany. W przeciwnym przypadku router zakłada, że ruch jest inicjowany na zewnątrz sieci i następuje jego blokada. Aby dokładnie zrozumieć spos&oacute;b działania tej funkcji i dlaczego tak naprawdę router zezwoli bądź zabroni na przepuszczenie danego pakietu trzeba mieć wiedzę na temat etap&oacute;w nawiązywania połączenia z wykorzystaniem protokołu TCP wtedy powyższy opis stanie się jasny. Aby ponownie nie opisywać tych samych zagadnień odsyłam do wpisu: <a href="http://slow7.pl/sieci-komputerowe/item/121-co-w-sieci-siedzi-skanowanie-portow">Co w sieci siedzi. Skanowanie port&oacute;w </a>w kt&oacute;rym to zawarłem dokładny opis ustanawiania sesji TCP.</p> <p>&nbsp;</p> <p>Aby dokładnie zrozumieć spos&oacute;b działania tego mechanizmu przyjmijmy w naszym ćwiczeniu topologię, kt&oacute;ra została przedstawiona na rysunku poniżej. Przy czym zakładamy (dla ułatwienia naszych rozważań) iż host Serwer WWW jest komputerem znajdującym się w sieci Internet zaś host WindowsXP_1 jest komputerem w sieci wewnętrznej.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image103.png" alt="image103" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po skonfigurowaniu wszystkich funkcji wraz z adresami IP wykonujemy pr&oacute;bę połączenia z hosta WindowsXP_1 z serwerem www. Jak widać poniżej wprowadzenie adresu IP 192.168.1.1 w pasku adresu przeglądarki powoduje wyświetlenie domyślnej strony WWW serwera IIS. Połączenie WWW pomiędzy hostami zostało ustanowione.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image104.png" alt="image104" width="700" height="626" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Przyjęliśmy założenie iż serwer WWW znajduje się w sieci Internet tak więc aby odseparować nasza sieć wewnętrzną 192.168.0.0/24 od sieci zewnętrznej na routerze R1 została zdefiniowana lista ACL zabraniająca na wszelki kontakt z siecią lokalną 192.168.0.0/24 Założona na routerze lista ACL 100 zabrania na połączenia wykonywane w ramach protokołu IP (access-list 100 deny ip any any) &ndash; lista na interfejsie została skonfigurowana w ten spos&oacute;b iż blokowany jest ruch wejściowy (ip access-group 100 in).</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image105.png" alt="image105" width="700" height="438" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po tak skonfigurowanej liście ACL żadne połączenie z sieci Internet z naszą wewnętrzną siecią nie może być ustanowione (oczywiście warunek ten dotyczy protokołu IP).</p> <p>&nbsp;</p> <p>Pr&oacute;ba ponownego połączenia z serwerem WWW kończy się niepowodzeniem. Pakiety wysłane z hosta WindowsXP_1 do serwera WWW docierają bez problemu lecz pakiety pochodzące od serwera są blokowane prze listę ACL czego konsekwencją jest brak możliwości zestawienia połączenia. Serwer WWW w tej konfiguracji jest nieosiągalny.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image106.png" alt="image106" width="700" height="625" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Oczywiście sytuacja taka jest nie do zaakceptowania gdyż uniemożliwienie użytkownikom na korzystanie z sieci WWW na pewno jako administratorowi przysporzy Ci wielu problem&oacute;w. Jak więc pogodzić funkcjonalność z bezpieczeństwem naszej sieci? Należy zdefiniować nową listę ACL w kt&oacute;rej to pozwolimy na ruch WWW lecz tylko pod warunkiem iż to użytkownik go zainicjuje.</p> <p>&nbsp;</p> <p>Aby wywołane przez użytkownika sieci wewnętrznej połączenie z serwerem WWW mogło dojść do skutku należy pozwolić na ruch powrotny przesyłany od strony serwera. Bądź m&oacute;wiąc kr&oacute;cej - ruch ten nie może być blokowany przez listę ACL.</p> <p>&nbsp;</p> <p>Aby wykonać zadanie należy poprawić zdefiniowaną w poprzednim kroku listę ACL. W nowej liście ACL został zdefiniowany warunek (access-list 100 permit tcp any eq 80&nbsp;192.168.0.0 0.0.0.0 established), kt&oacute;ry pozwala na nawiązanie połączenia TCP z dowolnym hostem pod warunkiem iż połączenie jest nawiązywane z docelowym portem 80 a ruch ten pochodzi z sieci o prefiksie 192.168.0.0/24. Dodanie parametru: <strong>established</strong> zezwala na ruch powrotny. Gdyż ruchem dozwolonym jest tylko ruch WWW, kolejny warunek (access-list 100 deny ip any any) zabrania na nawiązanie jakichkolwiek innych połączeń. Lista tak jak poprzednia jest założona w kierunku wejściowym na interfejsie od strony Internetu.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image107.png" alt="image107" width="700" height="355" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po skorygowaniu listy ACL połączenie z serwerem WWW zostało przywr&oacute;cone.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image108.png" alt="image108" width="700" height="626" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Sprawdzenie listy ACL przy wykorzystaniu polecenia: <strong>show access-lists</strong> przekonuje nas o tym iż lista działa.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image109.png" alt="image109" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Mechanizm ten nie jest doskonały gdyż należy mieć świadomość iż użycie parametru: <strong>established</strong> pozwoli na ruch sieciowy każdemu segmentowi TCP, kt&oacute;ry będzie miał ustawioną odpowiednią flagę kontrolną a wykorzystanie go ogranicza się tylko do protokołu TCP.</p> <p>&nbsp;</p> <p>Niestety nie przewidziano przechowywania informacji o stanie pakiet&oacute;w, kt&oacute;re w wyniku działania mechanizmu trafiły do naszej sieci tak by stwierdzić, czy przepuszczony ruch był związany z nawiązanym połączeniem czy też nie.</p> <p>&nbsp;</p> <p>Rok p&oacute;źniej po wprowadzeniu list TCP Established wprowadzono kolejny wariant list ACL, kt&oacute;rych zadaniem jest oczywiście filtrowanie pakiet&oacute;w &ndash; są to tzw. <strong>listy zwrotne</strong> (reflexive). Tak jak w przypadku rozwiązania opisanego wyżej administratorzy sieci wykorzystują zwrotne ACL, aby zezwolić na ruch IP (nie tylko TCP) pochodzący z ich sieci i zabronić na ruch IP zainicjowany z zewnątrz.</p> <p>&nbsp;</p> <p>Wadą mechanizmu ACL established jest brak wsparcia dla innych protokoł&oacute;w niż TCP co jest dość poważnym ograniczeniem . W rozwiązaniu reflexive ACL filtrowanie ruchu odbywa się w oparciu o adresy źr&oacute;dłowe i docelowe oraz numery port&oacute;w. Takie podejście do sprawy umożliwia wykorzystanie tego rozwiązania do filtrowania ruchu sieciowego w oparciu o protok&oacute;ł UDP czy ICMP.</p> <p>&nbsp;</p> <p>W zwrotnych listach ACL dodatkowo zaimplementowano tzw. <strong>filtry tymczasowe</strong>, kt&oacute;rych zadaniem jest zezwolenie na ruch powrotny. Tworzenie filtr&oacute;w tymczasowych odbywa się poprzez analizę ruchu wyjściowego (podczas rozpoczęcia nowej sesji IP) a wpisy są usuwane po zakończeniu sesji.</p> <p>&nbsp;</p> <p>Aby pokazać spos&oacute;b działania list zwrotnych ACL i ich konfigurację wykonajmy ćwiczenie w kt&oacute;rym pozwolimy na łączność WWW i DNS - ruch musi być zainicjowany po stronie sieci lokalnej. Ruch sieciowy pochodzący z zewnątrz ma zostać zablokowany.</p> <p>&nbsp;</p> <p>Etapy konfiguracji list zwrotnych przedstawiają się następująco (do om&oacute;wienia tego typu list ACL została użyta ta sama topologia sieciowa co w przykładzie wyżej):</p> <p>&nbsp;</p> <p>Krok 1.</p> <p>Rozpoczynamy od utworzenia wewnętrznej listy ACL (jest to lista rozszerzona), kt&oacute;rej zadaniem jest sprawdzanie połączeń wyjściowych - punkt 1 (lista ta przyjęła nazwę WEW_ACL). W scenariuszu szukanymi połączeniami będę te, kt&oacute;re odpowiadają za ruch związany z przeglądaniem stron internetowych i rozwiązywaniem nazw domenowych (DNS) - punkt 2 (korzystanie z usługi DNS zostało ustalone na 5 sekundowy timeout).</p> <p>Stworzenie wewnętrznej ACL, kt&oacute;ra szuka nowych połączeń wyjściowych i tworzy tymczasowe zwrotne ACE (wpisy do ACL)</p> <p>&nbsp;</p> <p>Krok 2.</p> <p>Aby połączenie doszło do skutku musimy pozwolić na ruch powrotny dlatego w tym celu została utworzona zewnętrzna lista ACL (lista ta przyjęła nazwę ZEW_ACL) - punkt 3. Podczas definicji warunk&oacute;w określających dozwolony ruch sieciowy został użyty parametr: <strong>reflect</strong> Zadaniem tej opcji jest przekazanie informacji o ruchu wyjściowym tak by poprzez utworzenie odpowiednich wpis&oacute;w tymczasowych ruch powrotny nie był blokowany. Ruch związany z WWW zostaje przekazany do zmiennej <strong>WWW</strong> zaś informacja o ruchu domenowym do zmiennej <strong>DNS</strong> (punkt 2). W zewnętrznej liście ACL dzięki użyciu flagi: <strong>evaluate</strong> następuje definicja zmiennych <strong>WWW</strong> oraz <strong>DNS</strong> - punkt 4.</p> <p>Dzięki takiej konfiguracji będą mogły zostać utworzone wpisy tymczasowe, kt&oacute;re router utworzy automatycznie dzięki analizie połączeń (informacji zawartych w nagł&oacute;wkach pakiet&oacute;w) a kt&oacute;rych zadaniem jest zezwolenie na ruch pakiet&oacute;w od strony Internetu do naszej sieci wewnętrznej. Inny ruch sieciowy od strony Internetu do sieci wewnętrznej nie będzie przepuszczony gdyż nie jest on częścią połączenia, kt&oacute;re zostało zainicjowane po stronie sieci lokalnej. Warunek: <strong>deny ip any any</strong> jawnie zabrania na jakąkolwiek komunikację z wykorzystaniem protokołu IP.</p> <p>&nbsp;</p> <p>Krok 3.</p> <p>Ostatnią czynnością jest umieszczenie utworzonych list ACL na odpowiednich interfejsach. Ponieważ lista ACL WEW_ACL zezwala na połączenia WWW oraz DNS zostaje ona umieszczona na interfejsie po stronie Internetu w kierunku wyjściowym (punkt 5) zaś w liście ACL ZEW_ACL będą tworzone wpisy tymczasowe zezwalające na ruch powrotny to kierunek działania tej listy został zdefiniowany na: in (wejście) - punkt 6.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image110.png" alt="image110" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Listy zwrotne ACL zostały skonfigurowane, sprawdźmy zatem efekt przeprowadzonej konfiguracji. Host 192.168.0.1 znajduje się w sieci lokalnej i powinien mieć możliwość komunikacji z serwerem www. Jak widać poniżej po wprowadzeniu adresu serwera w oknie przeglądarki połączenie WWW zostaje nawiązane. Test ping pomiędzy hostem a serwerem kończy się niepowodzeniem gdyż ruch ICMP nie pasuje do zdefiniowanych reguł i dlatego jest blokowany.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image111.png" alt="image111" width="700" height="626" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Wydanie polecenia: <strong>show access-lists</strong> ukaże nam ilość zastosowania warunk&oacute;w. Jak można stwierdzić poniżej ruch WWW i DNS opuszczający naszą sieć lokalną jest prawidłowo przesyłany dalej.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image112.png" alt="image112" width="700" height="193" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Zwrotne listy ACL dla początkujących mogą stanowić pewne wyzwanie tak więc spr&oacute;bujmy prześledzić jeszcze jeden przykład. Bazujemy na tej samej topologii i spr&oacute;bujmy wykonać przykład w kt&oacute;rym będzie można wykonać test przy użyciu polecenia: ping Założenie ćwiczenia jest takie, że wykorzystujemy zwrotną listę ACL; test ping następuje z sieci 192.168.0.0/24 do sieci 192.168.1.0/24 Sieć 192.168.1.0/24 oczywiście nie może bezpośrednio skomunikować się z siecią 192.168.0.0/24 przy użyciu protokołu ICMP; inny ruch jest dozwolony.</p> <p>&nbsp;</p> <p>Tak jak w poprzednim przykładzie rozpoczynamy od definicji warunk&oacute;w listy ACL, kt&oacute;ra będzie sprawdzać ruch wyjściowy &ndash; lista ACL została nazwana: PING_OUT W warunkach listy została zdefiniowana reguła ICMP_POWROT odpowiedzialna za utworzenie wpis&oacute;w pozwalających na powr&oacute;t pakiet&oacute;w ICMP. Wpis: <strong>permit ip any any</strong> zezwala na ruch związany z protokołem IP (punkt 1).</p> <p>&nbsp;</p> <p>W drugiej liście ACL za pomocą słowa evaluate określono regułę zwrotną ICMP_POWROT odpowiedzialną za przepuszczenie ruchu sieciowego ICMP pochodzącego z zewnątrz a będący odpowiedzią na ruch zainicjowany z sieci lokalnej. Jeśli router poprzez analizę danych zawartych w nagł&oacute;wku pakietu nie dopasuje go do reguły ICMP_POWROT nastąpi pr&oacute;ba dopasowania do warunk&oacute;w zdefiniowanych dalej. Warunek: <strong>deny icmp ip any any</strong> jawnie zabrania na ruch ICMP, kt&oacute;ry nie spełnia wymog&oacute;w ruchu zwrotnego (punkt 2).</p> <p>&nbsp;</p> <p>Ostatnią czynnością jest przypisanie utworzonych list do interfejsu oraz określenie kierunku ich działania. Ponieważ lista PING_OUT odpowiada za ruch wychodzący jej kierunek działania został zdefiniowany na wyjście. Natomiast lista ACL jest listą analizującą ruch powrotny tak więc kierunek działania został ustalony na wejście (punkt 3).</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image113.png" alt="image113" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Nie pozostaje nam nic innego jak sprawdzić efekt działania zdefiniowanych list ACL.</p> <p>&nbsp;</p> <p>Przeprowadźmy test z ping z hosta 192.168.0.1 w kierunku hosta 192.168.1.1 Jak można stwierdzić po analizie zrzutu poniżej test kończy się sukcesem. Powrotny ruch ICMP został przepuszczony gdyż był on częścią sesji kr&oacute;ra została zapoczątkowywana po stronie sieci 192.168.0.0/24</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image114.png" alt="image114" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Ruch ICMP w drugim kierunku (od hosta 192.168.1.1 w kierunku hosta 192.168.0.1) jest blokowany gdyż router wie iż ruch ten nie stanowi części komunikacji.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image115.png" alt="image115" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Przy definicji warunku: <strong>deny icmp ip any any </strong>użyliśmy parametru <strong>log</strong>, kt&oacute;ry pozwoli nam na uzyskanie więcej szczeg&oacute;ł&oacute;w na temat zablokowanych pakiet&oacute;w. Jak widać zablokowane pakiety zostały wysłane z hosta 192.168.1.1 a zgodnie z zdefiniowanymi listami ACL pakiety te mają być blokowane.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image116.png" alt="image116" width="700" height="225" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Dzięki zaś zezwoleniu na dowolny ruch IP (warunki: <strong>permit ip any any</strong>) komunikacja z hostami zostaje zachowana &ndash; pr&oacute;ba skopiowania pliku pomiędzy hostami kończy się sukcesem.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image117.png" alt="image117" width="700" height="517" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Aby użytkownicy mogli uzyskać dostęp do chronionych przez listę ACL obszar&oacute;w sieci administrator może wykorzystać do tego celu tzw. <strong>listy dynamiczne</strong> (ang. dynamic ACL). Ten typ list nazywany jest r&oacute;wnież listami <strong>lock-and-key</strong> (zamek i klucz). Zadaniem tego typu list jest uwierzytelnienie użytkownika i po prawidłowym przeprowadzeniu tego procesu użytkownik uzyskuje dostęp do chronionego obszaru sieci (możliwość nawiązania połączenia z hostem lub całą podsiecią. Dostęp jest przyznawany przez ograniczony czas.</p> <p>&nbsp;</p> <p>Spos&oacute;b działania list dynamicznych opiera się o takie mechanizmy jak:</p> <ul> <li style="padding-left: 60px;">łączność telnet bądź SSH,</li> <li style="padding-left: 60px;">uwierzytelnianie lokalne lub zdalne,</li> <li style="padding-left: 60px;">rozszerzone ACL.</li> </ul> <p>&nbsp;</p> <p>Spos&oacute;b działania oraz konfiguracja dynamicznej listy ACL można opisać w następujących krokach:</p> <ul> <li style="padding-left: 60px;">rozpoczynamy od zdefiniowania rozszerzonej listy ACL, kt&oacute;rej zadaniem jest blokada ruchu sieciowego z wyjątkiem połączeń Telnet bądź SSH,</li> <li style="padding-left: 60px;">użytkownicy, kt&oacute;rzy chcą połączyć się z siecią, kt&oacute;ra jest chroniona przez listę ACL są tak długo blokowani, dop&oacute;ki nie wykonają połączenia Telnet. Nawiązanie połączenia oczywiście musi zakończyć się sukcesem tzn. by połączenie doszło do skutku należy poprawnie się uwierzytelnić,</li> <li style="padding-left: 60px;">po nawiązaniu połączenia Telnet (bądź SSH). Połączenie zostaje zakończone automatycznie,</li> <li style="padding-left: 60px;">poprawne uwierzytelnienie spowoduje dodanie jednego dynamicznego warunku do już istniejącej listy ACL,</li> <li style="padding-left: 60px;">dodany wpis umożliwia nawiązanie połączenia z siecią, kt&oacute;ra w normalnych warunkach jest niedostępna. Dodatkowo możliwe jest określenie czasu bezczynności oraz timeout.</li> </ul> <p>&nbsp;</p> <p>Dynamiczne listy ACL stosujemy w celu:</p> <ul> <li style="padding-left: 60px;">aby zapewnić użytkownikowi bądź grupie użytkownik&oacute;w zdalnych dostęp do sieci wewnętrznej,</li> <li style="padding-left: 60px;">aby hosty w sieci lokalnej miały dostęp do host&oacute;w w sieci zdalnej, chronionej przez firewall.</li> </ul> <p>&nbsp;</p> <p>Konfigurację listy dynamicznej rozważymy na już znanej nam topologii sieciowej, kt&oacute;ra dla przypomnienia została przedstawiona poniżej. Celem naszego ćwiczenia jest umożliwienie hostowi 192.168.0.1 nawiązanie połączenia z komputerem 192.168.1.1. Zadanie ma być wykonane oczywiście przy wykorzystaniu listy dynamicznej ACL.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image118.png" alt="image118" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Kolejną czynnością jest definicja listy ACL. W pierwszym kroku zezwalamy na nawiązanie połączenia Telnet z interfejsem routera &ndash; punkt 2. Interfejs routera z kt&oacute;rym będzie nawiązywane połączenie Telnet oczywiście dla hosta 192.168.0.1 musi być osiągalne. Dlatego też interfejs routera został ustalony na 192.168.0.254 gdyż oba adresy IP leżą w wsp&oacute;lnej przestrzeni adresowej IP.</p> <p>&nbsp;</p> <p>Kolejny warunek listy ACL jest wpisem dynamicznym o nazwie DOSTEP Wpis ten zawiera warunek zezwalający na łączność pomiędzy sieciami 192.168.0.0/24 a 192.168.1.0/24 Wpis ten zostanie dodany po nawiązaniu połączenia Telnet i poprawnym uwierzytelnieniu &ndash; punkt 3.</p> <p>&nbsp;</p> <p>Po definicji listy ACL następuje jej powiązanie z interfejsem f0/0 routera R1.</p> <p>&nbsp;</p> <p>Aby lista ACL zadziałała musimy oczywiście zezwolić na nawiązanie połączenia Telnet. Tak więc kolejny krok (punkt 4) odpowiada za konfigurację linii VTY tak by sesja Telnet mogła zostać z routerem prawidłowo nawiązana. Zostaje ustawione uwierzytelnienie, kt&oacute;re ma być przeprowadzone przy wykorzystaniu lokalnej bazy użytkownik&oacute;w.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image119.png" alt="image119" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>Ponieważ na zrzucie powyżej nie wszystkie polecenia zostały uwidocznione poniżej jeszcze raz została przedstawiona konfiguracja dynamicznej listy ACL.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image120.png" alt="image120" width="700" height="234" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Sprawdźmy zatem dostępność sieci 192.168.1.1/24 z poziomu hosta 192.168.0.1 i wykonajmy test ping. Jak widać brak jest możliwości nawiązania połączenia pomiędzy obiema sieciami &ndash; host 192.168.0.1 nie może skomunikować się z hostem 192.168.1.1</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image121.png" alt="image121" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Aby hosty mogły swobodnie między sobą prowadzić wymianę danych należy dodać warunek do listy ACL, kt&oacute;ry na taką komunikację pozwoli. Warunek ten zostanie dodany dynamicznie po poprawnym uwierzytelnieniu się za pomocą usługi Telnet. Nawiążmy więc połączenie Telnet z routerem R1.</p> <p>&nbsp;</p> <p>Jak widać po kolejnym zrzucie połączenie zostało nawiązane i po podaniu prawidłowych danych użytkownika automatycznie zamknięte.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image122.png" alt="image122" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Sprawdźmy stan listy ACL. Rysunek poniżej przedstawia listę ACL przed nawiązaniem połączenia Telnet (punkt 1) i po nawiązaniu połączenia &ndash; punkt 2. R&oacute;żnica pomiędzy oboma stanami listy ACL tkwi w dodaniu jednego warunku do listy ACL po nawiązaniu połączenia Telnet. Warunek ten zezwala na komunikację pomiędzy sieciami.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image123.png" alt="image123" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Ponowne wykonanie testu ping zostaje zakończone sukcesem, hosty nawiązały między sobą komunikację.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image124.png" alt="image124" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Sprawdzenie listy ACL da nam informację o ilości dopasowań oraz czasie aktywności dynamicznego wpisu.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image125.png" alt="image125" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Dynamiczna lista ACL została skonfigurowana prawidłowo.</p> <p>&nbsp;</p> <p>Istnieje jeszcze jeden typ list ACL są to tzw. listy ACL czasowe (ang. time-based). Listy te pozwalają nam prowadzić kontrolę dostępu w oparciu o czas. Czasowe listy ACL są wygodnym mechanizmem gdyż z ich wykorzystaniem możemy dostęp do sieci przyznawać bądź odbierać w zależności od dnia tygodnia czy godziny.</p> <p>&nbsp;</p> <p>Standardowo aby wytłumaczyć implementację czasowej listy ACL wykonajmy ćwiczenie, kt&oacute;rego założenie jest następujące &ndash; Zabrońmy na komunikację pomiędzy sieciami 192.168.0.0/24 a 192.168.1.0/24 w każdy czwartek pomiędzy godziną 21:40 a 21:50. Oczywiście bazujemy nadal na tej samej topologii sieciowej co w poprzednich ćwiczeniach.</p> <p>&nbsp;</p> <p>Aby zaimplementować time-based ACL rozpoczynamy od utworzenia zakresu czasu (time-range), kt&oacute;ry definiuje czas w kt&oacute;rym lista ACL będzie aktywna. Stworzony zakres czasu ma przypisaną nazwę, do kt&oacute;rej będziemy odwoływać się podczas tworzenia warunk&oacute;w listy ACL. Ograniczenia zaś są definiowane przez samą listę ACL.</p> <p>&nbsp;</p> <p>Rozpoczynamy od zdefiniowania zakresu. Time-range definiujemy w trybie konfiguracji globalnej po wydaniu polecenia: <strong>time-range &lt;nazwa_zakresu&gt; </strong>Po wydaniu polecenia określamy ramy czasowe. Interesujący nas okres obejmuje czwartek pomiędzy godziną 21:40 a 21:50 tak więc w trybie definicji zakresu wydajemy polecenie: Thursday 21:40 to 21:50 a że zdefiniowany interwał czasowy ma obejmować każdy czwartek zostaje dodany parametr: <strong>periodic </strong>Zdefiniowanemu zakresowi została przypisana nazwa: <strong>DOSTEP</strong></p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image126.png" alt="image126" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po zdefiniowaniu czasu obowiązywania listy ACL przystępujemy do określenia warunk&oacute;w samej listy ACL. Celem zadania jest uniemożliwienie komunikacji pomiędzy sieciami tak więc warunek listy ACL przyjmuje postać<strong>: deny ip any any</strong> a dodatkowo dzięki parametrowi: <strong>time-range</strong> do warunku zostaje przypisany zakres czasowy obowiązywania tego wpisu.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image127.png" alt="image127" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Stworzona lista ACL zostaje przypisana do interfejsu f0/0 routera R1. Kierunek działania listy został ustalony na wejście.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image128.png" alt="image128" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Sprawdzenie listy uwidacznia jej stan &ndash; lista ACL jest nieaktywna.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image129.png" alt="image129" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Lista ACL jest nieaktywna tak więc określone warunki listy nie są włączone. Sprawdźmy zatem czy uda nam się nawiązać komunikację pomiędzy hostami 192.168.0.1 a 192.168.1.1. Test ping kończy się niepowodzeniem. Czas wykonania testu to 21:35 czyli poza ustalonymi ramami zakresu &ndash; warunek zabraniający na komunikację ma być aktywny od 21:40</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image130.png" alt="image130" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Lista ACL nie obowiązuje a my nie mamy dostępu do sieci 192.168.1.0/24 a według założeń scenariusza dostęp ma być odebrany tylko na 10 minut pomiędzy 21:40 a 21:50 Lista ACL zabrania na komunikację ponieważ nie wolno zapomnieć iż pomimo tego, że jest to czasowa lista ACL to nadal jest to lista ACL na końcu, kt&oacute;rej jest umieszczony niejawny warunek: <strong>deny any any</strong> Tak więc by komunikacja pomiędzy ustalonym zakresem była możliwa trzeba za pomocą warunku: <strong>permit ip any any</strong> jawnie na ruch sieciowy zezwolić.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image131.png" alt="image131" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Sprawdzenie listy ACL uwidacznia dodany warunek. Lista odbierająca dostęp do sieci 192.168.1.0/24 jest nieaktywna.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image132.png" alt="image132" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Sprawdźmy zatem jeszcze raz czy uda się nawiązać połączenie pomiędzy hostami. Połączenie doszło do skutku, wprowadzona korekta zdała egzamin. Połączenie jest możliwe gdyż czas obowiązywania zakazu jeszcze nie nadszedł.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image133.png" alt="image133" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po 21:40 w czwartek wpis zabraniający na komunikację z stanu nieaktywny przechodzi do stanu aktywny. Ponieważ reguła ma niższy numer sekwencyjny jest stosowana jako pierwsza.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image134.png" alt="image134" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Komunikacja pomiędzy obiema podsieciami jest niemożliwa.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image135.png" alt="image135" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Ponowne sprawdzenie listy ACL uwidacznia liczbę dokonanych dopasowań.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image136.png" alt="image136" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po godzinie 21:50 (oczywiście w czwartek) reguła kończy swe działanie.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image137.png" alt="image137" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Komunikacja pomiędzy sieciami zostaje przywr&oacute;cona.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image138.png" alt="image138" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Z mechanizmem ACL związana jest jeszcze jedna funkcja a mianowicie grupy obiekt&oacute;w w listach ACL.</p> <p>&nbsp;</p> <p>Grupy obiekt&oacute;w pozwalają nam na dokonanie klasyfikacji użytkownik&oacute;w, urządzeń oraz protokoł&oacute;w w grupy. Po dokonaniu przypisania do określonych grup możliwe jest utworzenie reguł kontroli dostępu obejmujących całą grupę.</p> <p>&nbsp;</p> <p>Grupy obiekt&oacute;w można tworzyć zar&oacute;wno dla IPv4, jak i dla IPv6.</p> <p>&nbsp;</p> <p>Aby om&oacute;wić ten mechanizm przyjmijmy, że mamy do czynienia z topologią sieciową przedstawioną na rysunku poniżej.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image139.png" alt="image139" width="700" height="417" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>W przedstawionej powyżej topologii mamy do czynienia z trzema serwerami, z kt&oacute;rych każdy wymaga zezwolenia na ruch z zewnątrz dla trzech protokoł&oacute;w. Protokoły te to: SMTP (port 25), HTTP (port 80) oraz HTTPS (port 443).</p> <p>&nbsp;</p> <p>Podczas definicji warunk&oacute;w listy ACL musielibyśmy utworzyć wpisy typu <strong>permit</strong> dla każdego serwera i dla każdego protokołu z osobna. Przykładowa konfiguracja routera wyglądałaby następująco:</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image140.png" alt="image140" width="700" height="338" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>W przypadku dodania kolejnego serwera jak r&oacute;wnież i dodatkowych protokoł&oacute;w musielibyśmy edytować listę ACL tak aby uwzględnić nowe wymagania.</p> <p>&nbsp;</p> <p>Aby zaoszczędzić sobie czasu i problem&oacute;w z bezpośrednią edycją listy ACL możemy wykorzystać mechanizm grup obiekt&oacute;w.</p> <p>&nbsp;</p> <p>Konfiguracja rozpoczyna się od utworzenia grupy usług (ang. service group). Poniżej na listingu została utworzona grupa usług o nazwie: <strong>USŁUGI</strong></p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image141.png" alt="image141" width="700" height="151" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Następnym etapem jest, utworzenie grupy urządzeń (ang. network group). Podczas definicji członk&oacute;w grupy możemy skorzystać ze słowa kluczowego range lub host a także zdefiniować podsieć. Poniżej została utworzona grupa urządzeń o nazwie <strong>SERWERY</strong></p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/acl/image142.png" alt="image142" width="700" height="88" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Ostatnim zaś krokiem jest utworzenie samej listy ACL.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image143.png" alt="image143" width="700" height="119" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Aby lista mogła zacząć działać trzeba ją jeszcze powiązać z danym interfejsem. W naszym scenariuszu oczywiście będzie to interfejs routera znajdujący się od strony Internetu a kierunek działania musi przyjąć stan: <strong>in</strong></p> <p>&nbsp;</p> <p>Odtąd gdy zostanie dodany nowy serwer bądź usługa należy jedynie zmodyfikować grupę obiekt&oacute;w.</p> <p>&nbsp;</p> <p>Powoli zbliżamy się do końca wpisu więc jako ostatni punkt naszych rozważań przed podsumowaniem proponuję kilka przykład&oacute;w najczęściej stosowanych list ACL.</p> <p>&nbsp;</p> <p>Lista ACL przedstawiona poniżej odpowiada za zablokowanie pakiet&oacute;w TCP z ustawionymi niedozwolonymi flagami tj. pakiet&oacute;w, kt&oacute;re w normalnym funkcjonowaniu sieci nigdy nie powinny zostać utworzone. Więcej na ten temat znajdziesz w wpisie: <a href="http://slow7.pl/item/121-co-w-sieci-siedzi-skanowanie-portow" title="Co w sieci siedzi. Skanowanie port&oacute;w.">Co w sieci siedzi. Skanowanie port&oacute;w.</a> Zastosowanie poniższych warunk&oacute;w zablokuje metody skanowania, kt&oacute;re mogłyby być wykorzystane przez atakującego naszą sieć.</p> <p>&nbsp;</p> <p>access-list 111 deny tcp any any ack fin psh rst syn urg</p> <p>access-list 111 deny tcp any any fin</p> <p>access-list 111 deny tcp any any urg psh fin</p> <p>access-list 111 deny tcp any any rst syn</p> <p>access-list 111 deny tcp any any rst syn fin</p> <p>access-list 111 deny tcp any any syn fin</p> <p>access-list 111 deny tcp any any rst syn fin ack</p> <p>access-list 111 deny tcp any any syn fin ack</p> <p><strong>&nbsp;</strong></p> <p>Ze względ&oacute;w bezpieczeństwa i dobrą praktyką jest na routerze brzegowym zablokowanie wszystkich pakiet&oacute;w, kt&oacute;re mają następujące adresy źr&oacute;dłowe IP:</p> <ul> <li style="padding-left: 60px;">Adresy typu: local host (127.0.0.0/8)</li> <li style="padding-left: 60px;">Adresy przypisane siecią prywatnym (10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16),</li> <li style="padding-left: 60px;">Adresy z grupy multikastowej (224.0.0.0/4).</li> </ul> <p>&nbsp;</p> <p>Przykładowa lista ACL mogłaby mieć postać:</p> <p>access-list 180 deny ip 0.0.0.0 0.255.255.255 any</p> <p>access-list 180 deny ip 127.0.0.0 0.255.255.255 any</p> <p>access-list 180 deny ip 10.0.0.0 0.255.255.255 any</p> <p>access-list 180 deny ip 172.16.0.0 0.15.255.255 any</p> <p>access-list 180 deny ip 192.168.0.0 0.0.255.255 any</p> <p>access-list 180 deny ip 224.0.0.0 15.255.255.255 any</p> <p>access-list 180 deny ip host 255.255.255.255 any</p> <p>&nbsp;</p> <p>Kolejny przykład zabrania na ruch sieciowy (wyjściowy) pakietom z adresem źr&oacute;dłowym IP innym, niż ten, kt&oacute;ry obowiązuje w sieci wewnętrznej (czyli zakres adres&oacute;w IP, kt&oacute;ry sam ustaliłeś).</p> <p>access-list 180 deny ip &lt;ustalony_adres_sieci&gt; any</p> <p><strong>&nbsp;</strong></p> <p><strong>Ograniczenie dostępu do routera przy połączeniach zdalnych</strong></p> <p>Połączenie z routerem może ustanowić host o zdefiniowanym adresie IP.</p> <p>access-list 90 permit host &lt;adres_IP&gt;</p> <p>access-list 90 deny any</p> <p>W trybie konfiguracji linii VTY</p> <p>access-class 90 in</p> <p><strong>&nbsp;</strong></p> <p><strong>Zabronienie na ruch Telnet (TCP, Port 23)</strong></p> <p>access-list 102 deny tcp any any eq 23</p> <p>access-list 102 permit ip any any</p> <p><strong>&nbsp;</strong></p> <p><strong>Zabronienie na ruch FTP (TCP, Port 21)</strong></p> <p>access-list 102 deny tcp any any eq ftp</p> <p>access-list 102 deny tcp any any eq ftp-data</p> <p>access-list 102 permit ip any any</p> <p><strong>&nbsp;</strong></p> <p><strong>Zezwolenie na ruch FTP</strong></p> <p>access-list 102 permit tcp any any eq ftp</p> <p>access-list 102 permit tcp any any eq ftp-data established</p> <p><strong>&nbsp;</strong></p> <p><strong>Zezwolenie na ruch DNS</strong></p> <p>access-list 112 permit udp any any eq domain</p> <p>access-list 112 permit udp any eq domain any</p> <p>access-list 112 permit tcp any any eq domain</p> <p>access-list 112 permit tcp any eq domain any</p> <p><strong>&nbsp;</strong></p> <p><strong>Zezwolenie na aktualizacje związane z routingiem</strong></p> <p>Protok&oacute;ł RIP - access-list 102 permit udp any any eq rip</p> <p>Protok&oacute;ł IGRP - access-list 102 permit igrp any any</p> <p>Protok&oacute;ł EIGRP - access-list 102 permit eigrp any any</p> <p>Protok&oacute;ł OSPF - access-list 102 permit ospf any any</p> <p>Protok&oacute;ł BGP - access-list 102 permit tcp any any eq 179 oraz access-list 102 permit tcp any eq 179 any</p> <p>&nbsp;</p> <p>Podsumowanie (czyli to co warto powt&oacute;rzyć bądź to o czym zapomniałem a co warto wiedzieć):</p> <ul> <li style="margin-left: 30px;">Osobna lista ACL powinna istnieć dla każdego protokołu i kierunku.</li> <li style="margin-left: 30px;">Standardowe listy ACL umiejscawiamy jak najbliżej miejsca docelowego, kt&oacute;rego dotyczą.</li> <li style="margin-left: 30px;">Rozszerzone listy ACL umieszczamy jak najbliżej źr&oacute;dła, kt&oacute;rego dotyczą.</li> <li style="margin-left: 30px;">Warunki budujące listę ACL są analizowane po kolei od g&oacute;ry do dołu aż do odnalezienia dopasowania o położeniu danego wpisu decyduje numer sekwencyjny.</li> <li style="margin-left: 30px;">Jeśli po analizie listy ACL nie wykryto dopasowania do żadnego z zdefiniowanych warunk&oacute;w pakiet jest odrzucany na wskutek działania nie jawnej instrukcji: deny any. Warunek ten nie jest uwzględniany na listingach konfiguracji.</li> <li style="margin-left: 30px;">Warunki budujące daną listę ACL powinny zostać zdefiniowane w kolejności od szczeg&oacute;łowych do og&oacute;lnych. Oznacza to iż na początku listy ACL znajdują się instrukcje dotyczące pojedynczych host&oacute;w zaś po nich instrukcje odnoszące się do grup i og&oacute;łu.</li> <li style="margin-left: 30px;">W przypadku wildcard mask bit 0 oznacza - wykonaj dopasowanie, zaś bit 1 - zignoruj.</li> <li style="margin-left: 30px;">Tworzone wpisy listy ACL zawsze są dodawane na końcu listy.</li> <li style="margin-left: 30px;">Zanim zostanie zastosowana instrukcja permit bądź deny musi nastąpić zgodność dopasowania informacji zawartych w nagł&oacute;wku pakietu do warunku listy ACL.</li> <li style="margin-left: 30px;">Komentarze o sposobie działania listy ACL umieszczamy w osobnym pliku, zaś w opisie listy ACL definiujemy nazwę pliku zawierającego opis.</li> <li style="margin-left: 30px;">Lista ACL dla ruchu wychodzącego nie jest stosowana dla pakiet&oacute;w, kt&oacute;rych źr&oacute;dłem jest router lokalny.</li> <li style="margin-left: 30px;">Jeśli potrzeba jest ograniczenia ruchu sieciowego w oparciu o czas zastosuj listy ACL czasowe (ang. time-based).</li> <li style="margin-left: 30px;">Aby użytkownicy mogli uzyskać dostęp do chronionych przez listę ACL obszar&oacute;w sieci wykorzystaj do tego celu listy dynamiczne.</li> <li style="margin-left: 30px;">Listy typu reflexive ACL umożliwiają filtrowanie ruchu w oparciu o adresy źr&oacute;dłowe i docelowe oraz numery port&oacute;w. Ich użycie nie ogranicza się tylko do protokołu TCP jak to ma miejsce w przypadku list ACL Established.</li> </ul> <p>&nbsp;</p> <p>Rozwiązanie</p> <p>Możliwa jest taka definicja listy ACL gdyż zapis: <strong>permit 192.168.0.6 0.0.0.1</strong> zezwala na ruch sieciowy pochodzący od host&oacute;w z zdefiniowanymi adresami IP 192.168.0.6 oraz 192.168.0.7 Dzieje się tak ponieważ maska wieloznaczna 0.0.0.1 tożsama jest z podsiecią 255.255.255.254 a sieć ta wraz w połączeniu z adresem IP 192.168.0.6 definiuje tylko dwa adresy IP - 192.168.0.6 oraz 192.168.0.7</p> <p>&nbsp;</p> <p>Po dokonaniu korekty jak widać poniżej z hosta 192.168.0.1 nie udaje nam się spingować komputer 192.168.1.1</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image144.png" alt="image144" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Zaś przy użyciu hosta 192.168.0.6 test ping kończy się sukcesem.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image145.png" alt="image145" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Sprawdzenie listy ACL tylko utwierdza nas w przekonaniu iż przyjęte rozwiązanie jest jak najbardziej prawidłowe.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/acl/image146.png" alt="image146" style="display: block; margin-left: auto; margin-right: auto;" /></p></div> Autoryzacja, uwierzytelnienie i rejestracja z wykorzystaniem serwera TACACS. 2016-07-05T10:14:43+00:00 2016-07-05T10:14:43+00:00 http://slow7.pl/sieci-komputerowe/item/123-autoryzacja-uwierzytelnienie-i-rejestracja-z-wykorzystaniem-serwera-tacacs pikolo [email protected] <div class="K2FeedImage"><img src="http://slow7.pl/media/k2/items/cache/4ab4b6df96c060fa741e97b50eafb07c_S.jpg" alt="Autoryzacja, uwierzytelnienie i rejestracja z wykorzystaniem serwera TACACS." /></div><div class="K2FeedIntroText"><p>W tym artykule kontynuujemy zapoczątkowany w poprzednim wpisie temat uwierzytelnienia użytkownik&oacute;w na urządzeniach CISCO lecz tym razem do wykonania tego zadania wykorzystamy serwer TACACS.</p> </div><div class="K2FeedFullText"> <p><strong>Protok&oacute;ł TACACS</strong> (ang. Terminal Access Controller Access-Control System) został opracowany w 1980 roku przez firmę BBN. Firma ta została przejęta przez organizację Verizion by w następstwie stać się własnością firmy CISCO.</p> <p>&nbsp;</p> <p>Pierwotnie protok&oacute;ł TACACS zakładał obsługę podstawowych operacji związanych z przekazywaniem informacji uwierzytelniających oraz definiował spos&oacute;b ich weryfikacji. W roku 1990 firma Cisco rozbudowała protok&oacute;ł TACACS o nowe możliwości i nadała mu nazwę XTACACS (ang. Extended TACACS). Kolejne usprawnienia protokołu i dodanie do nich nowych funkcji przeobraziło protok&oacute;ł to formy w jakiej znamy go dziś. Nowa implementacja protokołu przyjęła nazwę TACACS+. Wszystkie trzy wymienione wersje protokołu nie są kompatybilne ze sobą lecz ich obsługa i wsparcie jest uwzględnione w systemach lOS.</p> <p>&nbsp;</p> <p>TACACS jest rozwiązaniem konkurencyjnym do już omawianego protokołu RADIUS więc myślę, że czas na małe por&oacute;wnanie. Por&oacute;wnanie obu rozwiązań zostało zawarte w tabeli poniżej.</p> <p>&nbsp;</p> <table border="1" style="border-collapse: collapse;" cellspacing="0" cellpadding="0"> <tbody> <tr> <td style="border: 1pt solid windowtext; padding: 0cm 5.4pt; text-align: center;" valign="top"><strong>RADIUS</strong></td> <td style="border-width: 1pt 1pt 1pt medium; border-style: solid solid solid none; border-color: windowtext windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; text-align: center;" valign="top"><strong>TACACS+</strong></td> </tr> <tr> <td style="border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt;" valign="top">RADIUS działa na protokole UDP</td> <td style="border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top">TACACS+ działa na protokole TCP</td> </tr> <tr> <td style="border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt;" valign="top">RADIUS używa portu 1645 lub 1812 do uwierzytelniania i portu 1646 <br /> lub 1813 do rozliczania</td> <td style="border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top">TACACS+ używa portu 49</td> </tr> <tr> <td style="border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt;" valign="top">Protok&oacute;ł RADIUS ukrywa hasła podczas <br /> transmisji, ale reszta pakietu jest wysyłana <br /> w postaci zwykłego tekstu.</td> <td style="border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top">TACACS+ szyfruje całą komunikację</td> </tr> <tr> <td style="border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt;" valign="top">RADIUS łączy uwierzytelnianie i autoryzacja</td> <td style="border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top">TACACS+ oddzielnie traktuje uwierzytelnianie, autoryzacje i rozliczanie</td> </tr> <tr> <td style="border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt;" valign="top">RADIUS jest otwartym protokołem <br /> obsługiwanym przez wielu dostawc&oacute;w. <br /> RADIUS jest zdefiniowany <br /> w RFC 2865, 2866, 2867, and 2868.</td> <td style="border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top">TACACS+ jest własnością CISCO.</td> </tr> <tr> <td style="border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt;" valign="top">RADIUS wprowadza mniejszy narzut podczas działania</td> <td style="border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top">TACACS+ zużywa więcej zasob&oacute;w</td> </tr> <tr> <td style="border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt;" valign="top">RADIUS jest ograniczony do trybu uprawnień privilege mode</td> <td style="border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top">TACACS+ wspiera 15 privilege levels</td> </tr> <tr> <td style="border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt;" valign="top">Odpowiadający gł&oacute;wnie za dostęp do sieci</td> <td style="border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top">Wykorzystywany do Device Administration</td> </tr> </tbody> </table> <p>&nbsp;</p> <p>Spos&oacute;b komunikacji pomiędzy klientem, routerem a serwerem w obu przypadkach przebiega odmiennie więc na dw&oacute;ch poniższych schematach zaprezentowano wymianę danych jak zachodzi podczas pr&oacute;by wykonania logowania.</p> <p>&nbsp;</p> <p>Wymiana danych z wykorzystaniem serwera TACACS.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image1.png" alt="image1" width="700" height="255" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Wymiana danych z wykorzystaniem serwera RADIUS.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image2.png" alt="image2" width="700" height="192" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Jak można zaobserwować proces uwierzytelnienia wykorzystujący TACACS przebiega etapami. Pierwszym etapem jest nawiązanie przez klienta połączenia z routerem, następnie urządzenie te w kierunku serwera wysyła zapytanie wskazujące na podanie nazwy użytkownika. Jeśli serwer TACACS takie żądanie zaakceptuje w drugim kroku następuje podanie przez klienta nazwy użytkownika, kt&oacute;ra to z kolei zostaje przez router przesłana do serwera. Proces ten powtarza się r&oacute;wnież w przypadku hasła. Jeśli podane przez klienta dane są prawidłowe, serwer przyznaje dostęp.</p> <p>&nbsp;</p> <p>W rozwiązaniu opartym o serwer RADIUS urządzeniem odpytującym jest r&oacute;wnież router. W tym rozwiązaniu router pyta klienta o login i hasło i jeśli te dane uzyska przesyła je w kierunku serwera RADIUS. Serwer po analizie otrzymanych danych udziela bądź odmawia dostępu.</p> <p>&nbsp;</p> <p>Topologia naszej ćwiczebnej sieci tak samo jak w przypadku serwera RADIUS nie jest skomplikowana i została przedstawiona na rysunku poniżej.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image3.png" alt="image3" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Jako serwer TACACS posłuży nam oprogramowanie ACS czyli Cisco Secure. Rozwiązanie te dostarczane jest jako osobny system operacyjny oparty o Linux bądź dedykowane urządzenie. Wcześniejsze wersje ACS działały r&oacute;wnież w oparciu o system Windows jako osobna aplikacja lecz te rozwiązanie nie jest już ani wspierane ani rozwijane.</p> <p>&nbsp;</p> <p>Niestety ACS nie jest oprogramowaniem darmowym by z niego korzystać należy je zakupić. Na nasze szczęście CISCO umożliwia uzyskanie licencji pr&oacute;bnej, kt&oacute;rej czas został ograniczony do 90 dni. Licencja ta w zupełności nam wystarczy do nauki wystarczy.</p> <p>&nbsp;</p> <p>Aby uzyskać licencję należy przejść do strony: <a href="https://tools.cisco.com/SWIFT/LicensingUI/Quickstart">https://tools.cisco.com/SWIFT/LicensingUI/Quickstart</a> By m&oacute;c uzyskać licencję w pierwszej kolejności należy założyć konto.</p> <p>&nbsp;</p> <p>Po uzyskaniu dostępu wybieramy <strong>Get Other Licenses</strong> a następnie z rozwijanego menu klikamy <strong>Demo and Evaluation</strong>.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image4.png" alt="image4" width="700" height="341" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>W nowo otwartym oknie w sekcji <strong>Product Family</strong> wybieramy <strong>Network Mgmt Products</strong> a następnie <strong>Cisco Secure Access Control System Evaluation</strong>. Klikamy <strong>Next</strong></p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image5.png" alt="image5" width="700" height="487" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po uzyskaniu licencji na podany podczas rejestracji adres email zostanie wysłany stosowny plik (plik z rozszerzeniem *.lic), plik licencji możemy r&oacute;wnież pobrać bezpośrednio ze strony.</p> <p>&nbsp;</p> <p>Posiadamy licencję a więc czas by uzyskać obraz systemu. Tu już niestety tak łatwo nie jest, gdyż bezpośrednio ze strony CISCO obrazu w formie pliku ISO nie pobierzemy. Trzeba poszukać i pobrać odpowiedni plik z innego źr&oacute;dła, tu już odsyłam do wyszukiwarki.</p> <p>&nbsp;</p> <p>Przechodzimy do instalacji oprogramowania, instalacja zostanie przeprowadzona z wykorzystaniem maszyny wirtualnej.</p> <p>&nbsp;</p> <p>Rozpoczynamy od pobrania i od zainstalowania oprogramowania VMware Player. Dlaczego VMware a nie VirtualBox? Anoż dlatego, że pomimo podjętych pr&oacute;b (kilka przerobionych tutoriali) nie udało mi się zainstalować serwera ACS z wykorzystaniem VirtualBox. Program instalacyjny odpalał się prawidłowo lecz po chwili uzyskiwałem komunikat o niezgodności sprzętowej i niemożności kontynuowania instalacji. Jeśli Czytelniku znasz rozwiązanie tego problemu to Ja go chętnie poznam. W przypadku wspomnianego VMware instalacja przebiegła bez żadnych zakł&oacute;ceń.</p> <p>&nbsp;</p> <p>Po zainstalowaniu oprogramowania przechodzimy do konfiguracji nowej maszyny wirtualnej, parametry maszyny zostały ustalone tak jak na poniższych screenach. Na początek pamięć RAM - <strong>ustawienie 2GB</strong>.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image6.png" alt="image6" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Kolejną czynnością było ustalenie parametr&oacute;w dysku twardego. Dysk został zdefiniowany jako <strong>SCSI</strong> z domyślną wartością <strong>LSI Logic</strong> a jego rozmiar to <strong>70 GB</strong> (ACS wymaga co najmniej 60GB miejsca).</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image7.png" alt="image7" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Aby serwer był dostępny z poziomu sieci LAN, karta sieciowa została ustawiona do pracy w trybie <strong>Bridged: Connected directly to the physical network</strong></p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image8.png" alt="image8" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Typ wirtualnej maszyny został ustalony na obsługę systemu <strong>Red Hat Enterprise Linux 6</strong>.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image9.png" alt="image9" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Opcje związane z obsługą USB oraz dźwięku zostały usunięte.</p> <p>&nbsp;</p> <p>Maszyna wirtualna została skonfigurowana, przechodzimy do instalacji serwera ACS. Po uruchomieniu wirtualnego hosta i wskazaniu pliku obrazu systemu (plik ISO) powinien pojawić się nam ekran na kt&oacute;rym możemy zdecydować o typie przeprowadzanej instalacji (obraz umożliwia r&oacute;wnież wykonanie operacji resetowania zapomnianego hasła). Z menu wybieramy: <strong>Cisco Secure ACS 5.4 Instalation (Keyboard/Monitor) - opcja 1</strong>.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image10.png" alt="image10" width="700" height="452" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po wybraniu typu instalacji następuje proces formatowania dysku.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image11.png" alt="image11" width="700" height="452" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po wykonaniu formatowania rozpoczyna się proces kopiowania plik&oacute;w systemu ACS.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image12.png" alt="image12" width="700" height="452" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po zakończonym kopiowaniu powinien nastąpić restart maszyny po kt&oacute;rym powinien ukazać się nam ekran jak na zrzucie poniżej. Przechodzimy do konfiguracji podstawowych parametr&oacute;w serwera ACS. Aby rozpocząć konfigurację po ciągu <strong>localhost login:</strong> wpisujemy <strong>setup</strong> i zatwierdzamy klawiszem <strong>Enter</strong>.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image13.png" alt="image13" width="700" height="452" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Przechodzimy do konfiguracji podstawowych parametr&oacute;w:</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">1 - adres IP serwera,</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">2 - maska sieci,</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">3 - adres IP bramy,</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">4 - nazwa domeny,</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">5 - adres IP serwera DNS,</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">6 - adres serwera czasu NTP,</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">7 - strefa czasowa,</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">8 - dane uwierzytelniające tj. login oraz hasło.</p> <p>&nbsp;</p> <p style="margin-bottom: 0.0001pt;">Jeśli kt&oacute;ryś danych nie znasz to pozostaw puste miejsce i zatwierdź klawiszem <strong>Enter</strong>.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image14.png" alt="image14" width="700" height="452" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po określeniu wszystkich parametr&oacute;w nastąpi proces konfiguracji serwera ACS. Efektem końcowym procesu powinien być ekran logowania. Aby się zalogować wykorzystaj dane podane w poprzednim kroku.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image15.png" alt="image15" width="700" height="452" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Serwer ACS powinien się uruchomić. Jest to dobry moment aby wykonać kilka test&oacute;w sprawdzających poprawność działania serwera. Rozpoczynamy od sprawdzenia dostępności serwera ACS. Zostaje wykonana pr&oacute;ba sprawdzenia osiągalności serwera z poziomu sieci LAN. Jak można zauważyć poniżej test ping kończy się sukcesem. Możliwa jest komunikacja z serwerem ACS.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image16.png" alt="image16" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Kolejne testy wykonamy w linii CLI serwera ACS. Pierwszym testem jest sprawdzenie wersji serwera. Wersję systemu poznamy po wydaniu polecenia: <strong>show version</strong></p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image17.png" alt="image17" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Drugi test to sprawdzenie poprawności uruchomionych proces&oacute;w. Sprawdzenia dokonamy za pomocą polecenia: <strong>show application status acs</strong> Lista uruchomionych proces&oacute;w została przedstawiona poniżej.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image18.png" alt="image18" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Ostatni test dotyczy sprawdzenia poprawności konfiguracji serwera. Konfigurację serwera poznamy po wydaniu komendy: <strong>show running-config</strong></p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image19.png" alt="image19" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Serwer ACS działa tak więc przechodzimy do jego konfiguracji. Konfiguracja odbywa się za pomocą przeglądarki internetowej (w ten sam spos&oacute;b w jaki konfigurujemy np. router). Otwieramy przeglądarkę i w polu adresu wpisujemy: <strong>https://&lt;adres_IP_serwera&gt;</strong> (ważne jest byś dodał <strong>https</strong> samo wpisanie adresu IP nie wystarczy).</p> <p>&nbsp;</p> <p>Po wysłaniu żądania otwarcia strony zostaniemy poinformowaniu o problemie z certyfikatem strony - nie martw się jest to jak najbardziej pożądany komunikat. Aby m&oacute;c przejść dalej zaznaczamy <strong>Kontynuuj przeglądanie tej witryny sieci Web</strong> (to w przypadku Internet Explorera) natomiast jeśli korzystamy np. z Firefoxa wybieramy <strong>Zaawansowane</strong> a następnie <strong>Dodaj wyjątek</strong>.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image20.png" alt="image20" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>W nowo otwartym oknie <strong>Dodanie wyjątku bezpieczeństwa</strong> zaznaczamy opcję <strong>Zachowaj wyjątek na stałe</strong> (przy ponownym połączeniu problem z certyfikatem już nie wystąpi) a następnie <strong>Potwierdź wyjątek bezpieczeństwa</strong>.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image21.png" alt="image21" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po zatwierdzeniu ukarze się nam okno logowania serwera ACS. Ponieważ jest to nasze pierwsze logowanie w polu <strong>Username</strong> wpisujemy <strong>acsadmin</strong> zaś hasłem jest słowo <strong>default</strong>.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image22.png" alt="image22" width="700" height="595" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po wpisaniu danych uwierzytelniających zostaniemy poinformowani o potrzebie zmiany hasła. Hasło ustalamy sami. Po ustaleniu wartości hasła klikamy <strong>Zaloguj się</strong>.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image23.png" alt="image23" width="700" height="595" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Następny krok to wczytanie licencji. Po wyborze przycisku <strong>Przeglądaj</strong> wskazujemy na plik licencji otrzymany od CISCO.</p> <p>&nbsp;</p> <p>Wybieramy <strong>Install</strong>.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image24.png" alt="image24" width="700" height="595" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po wykonaniu wszystkich opisanych czynności uzyskamy dostęp do panelu konfiguracyjnego serwera ACS. W lewym g&oacute;rnym rogu ukazana jest informacja o liczbie pozostałych dni po upływie kt&oacute;rych musimy odnowić licencję.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image25.png" alt="image25" width="700" height="483" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Konfigurację serwera rozpoczniemy od utworzenia nowej grupy urządzeń. Ponieważ w naszym scenariuszu konfigurowanym urządzeniem jest router tak więc tworzoną grupę nazwiemy <strong>Routery</strong>.</p> <p>&nbsp;</p> <p>Aby skonfigurować nową grupę urządzeń przechodzimy do gałęzi: <strong>Network Resources/Network Device Group/Device Type</strong> Po przejściu do gałęzi klikamy <strong>Create</strong>.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image26.png" alt="image26" width="700" height="511" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Aby utworzyć nową grupę wypełniamy pola obowiązkowe, kt&oacute;re są oznaczone pomarańczową gwiazdką. Nazwa grupy została zdefiniowana jako <strong>Routery</strong> zaś pole <strong>Parent</strong> pozostawiamy bez zmian. Opcjonalnie możemy wprowadzić opis tworzonej grupy (pole <strong>Description</strong>) Po zdefiniowaniu wszystkich danych klikamy <strong>Submit</strong>.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image27.png" alt="image27" width="700" height="511" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Grupa <strong>Routery</strong> została utworzona. Aby edytować informacje o grupie bądź sprawdzić fakt jej utworzenia w gałęzi <strong>Network Resources/Network Device Group/Device Type </strong>klikamy na strzałkę przy nazwie rodzica (w naszym przypadku <strong>All Device Types</strong>).</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image28.png" alt="image28" width="700" height="511" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po utworzeniu grupy musimy zdefiniować konto urządzenia. Aby utworzyć konto przechodzimy do gałęzi <strong>Network Resources/Network Devices and AAA Clients</strong>. Po otwarciu okna podobnie jak w przypadku tworzenia grupy w pierwszej kolejności klikamy na przycisk <strong>Create</strong>.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image29.png" alt="image29" width="700" height="511" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po otwarciu nowego okna definiujemy:</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">1 - nazwę urządzenia oraz jego opis,</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">2 - adres IP urządzenia,</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">3 - spos&oacute;b uwierzytelnienia, odhaczamy opcję TACACS+ oraz definiujemy hasło klucza (hasło będzie potrzebne przy konfiguracji routera).</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/tacacs/image30.png" alt="image30" width="700" height="511" style="display: block; margin-left: auto; margin-right: auto;" />&nbsp;</p> <p>&nbsp;</p> <p>Ostatnim krokiem jest dodanie konta tworzonego urządzenia do wcześniej utworzonej grupy. Aby przypisać urządzenia <strong>R1</strong> do grupy <strong>Routery</strong> wybieramy przycisk <strong>Select</strong> (w obrębie opcji <strong>Device Type</strong>) a następnie po otwarciu nowego okna przeglądarki zaznaczamy grupę.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image31.png" alt="image31" width="700" height="465" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po wybraniu kolejno <strong>OK</strong> oraz <strong>Submit</strong> konto urządzenia <strong>R1</strong> zostaje przypisane do grupy <strong>Routery</strong>.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image32.png" alt="image32" width="700" height="588" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po utworzeniu konta urządzenia kolejnym krokiem jest zdefiniowanie konta użytkownika, kt&oacute;ry do urządzenia będzie miał przyznane prawo logowania. Tak jak poprzednio rozpoczynamy od utworzenia grupy użytkownik&oacute;w.</p> <p>&nbsp;</p> <p>Aby utworzyć grupę użytkownik&oacute;w przechodzimy do gałęzi <strong>Users and Identity Stores/Identity</strong> <strong>Groups</strong> a następnie wybieramy <strong>Create</strong>.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image33.png" alt="image33" width="700" height="511" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Uzupełniamy pola: <strong>nazwa tworzonej grupy</strong>, <strong>opis grupy</strong> (opcjonalnie), pole <strong>Parent</strong> pozostawiamy bez zmian.</p> <p>&nbsp;</p> <p>Jak widać na zrzucie poniżej nazwa grupy została zdefiniowana jako <strong>Konfiguracja</strong> zaś opis grupy to <strong>pełny dostęp</strong>. Po definicji wszystkich wymaganych opcji klikamy <strong>Submit</strong>.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image34.png" alt="image34" width="700" height="511" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Poprawność utworzenia grupy (bądź modyfikację opcji) możemy dokonać po wybraniu strzałki obok nazwy rodzica (<strong>All Groups</strong>).</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image35.png" alt="image35" width="700" height="588" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Grupa <strong>Konfiguracja</strong> została utworzona. Czas by przypisać do grupy użytkownik&oacute;w. Konto użytkownika utworzymy po wybraniu gałęzi <strong>Users and Identity Stores/Internal Identity Stores/Users</strong> wybieramy <strong>Create</strong>.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image36.png" alt="image36" width="700" height="588" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Na kolejnym ekranie:</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">1 - ustalamy nazwę użytkownika,</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">2 - pole opis,</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">3 - za pomocą przycisku <strong>Select</strong> przypisujemy użytkownika do wcześniej utworzonej grupy <strong>Konfiguracja</strong>,</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">4 - ustalamy hasło.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image37.png" alt="image37" width="700" height="588" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Konto użytkownika <strong>jankow</strong> zostało utworzone i przypisane do grupy <strong>Konfiguracja</strong>.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image38.png" alt="image38" width="700" height="588" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Zanim przejdziemy do kolejnego etapu czyli do konfiguracji routera jeszcze jedna mała uwaga. Gdybyśmy chcieli utworzyć więcej grup użytkownik&oacute;w i każdej z grup przypisać r&oacute;żne uprawnienia należy stworzyć odpowiednie polisy. W naszym scenariuszu możemy ten krok pominąć gdyż domyślna polisa (a raczej brak zdefiniowania innych) powoduje uzyskanie pełnego dostępu.</p> <p>&nbsp;</p> <p>Aby przypisać dane uprawnienia grupie i utworzyć nową polisę należy przejść do gałęzi <strong>Access Policies/Access Services/Default Device Admin/Authorization</strong> (utworzymy regułę dla grupy użytkownik&oacute;w <strong>Konfiguracja</strong> oraz grupy urządzeń <strong>Routery</strong>). W nowo otwartym oknie w polu <strong>Name</strong> wpisujemy nazwę reguły. Po zaznaczeniu opcji <strong>Identity Group </strong>i kliknięciu na <strong>Select</strong> wybieramy grupę <strong>Konfiguracja</strong>. Następnie zaznaczamy opcję <strong>NDG:Device Type</strong> i tak jak poprzednio po kliknięciu na <strong>Select</strong> wybieramy grupę <strong>Routery</strong>.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image39.png" alt="image39" width="700" height="548" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Adresaci reguły zostali ustaleni przechodzimy do określenia uprawnień. Aby określić uprawnienia wybieramy przycisk <strong>Select</strong> przy opcji <strong>Shell Profile</strong>. Domyślne utworzone są dwa profile - profil zezwalający na dostęp czyli <strong>PermitAccess </strong>oraz profil zabraniający dostępu - jak łatwo się domyślić - <strong>DenyAccess</strong>. My na tym etapie skorzystamy z własnego. Aby utworzyć nowy profil wybieramy <strong>Create</strong>.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image40.png" alt="image40" width="700" height="405" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Otworzy się kolejne okno. W zakładce <strong>General</strong> określamy nazwę tworzonego profilu. Zakładka <strong>Common Tasks</strong> odpowiedzialna jest za ustalenie uprawnień. Aby zdefiniowanym grupom przypisać maksymalne uprawnienia opcje <strong>Devault Privilege</strong> oraz <strong>Maximum Privilege</strong> zmieniamy na <strong>Static</strong> i przypisujemy opcji <strong>Value</strong> wartość <strong>15</strong>. Zakładka ta pozwala na zdefiniowanie jeszcze kilku innych parametr&oacute;w.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image41.png" alt="image41" width="700" height="438" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po wprowadzeniu wszystkich danych wybieramy <strong>Submit</strong>.</p> <p>&nbsp;</p> <p>Gdybyś czytelniku z jakiś powod&oacute;w popełnił błędy podczas konfiguracji serwera ACS zawsze za pomocą polecenia: <strong>acs reset-config </strong>przywr&oacute;cisz jego ustawienia początkowe (fabryczne).</p> <p>&nbsp;</p> <p>Konfiguracja serwera ACS dobiegła końca czas by przetestować wprowadzone ustawienia, przechodzimy do konfiguracji routera.</p> <p>&nbsp;</p> <p>Na samym wstępie wykonujemy konfigurację interfejsu routera - przypisujemy adres IP, maskę oraz włączamy interfejs.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image42.png" alt="image42" width="700" height="103" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po konfiguracji interfejsu przeprowadzamy test łączności z serwerem ACS. Jak widać poniżej komunikacja obu urządzeń jest możliwa.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image43.png" alt="image43" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Kolejnym krokiem jest konfiguracja opcji związanych z serwerem TACACS. Konfiguracja ta jest bardzo podobna do tej opisanej w poprzednim wpisie dotyczącym konfiguracji serwera RADIUS.</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">1 - tworzymy konto użytkownika <strong>admin</strong> - konto jest zakładane lokalnie - na wypadek błędnie przeprowadzonej konfiguracji lub niedostępności serwera TACACS tak byśmy nie stracili możliwości zalogowania się,</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">2 - hasło do trybu uprzywilejowanego,</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">3 - włączenie modelu AAA,</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">4 - określenie adresu IP serwera TACACS,</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">5 - określenie wartości klucza,</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">6 - określenie domyślnej metody uwierzytelnienia, dodanie parametru: <strong>local-case</strong> powoduje rozr&oacute;żnienie wielkości liter,</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">7 - określenie metody autoryzacji - pierwszeństwo ma serwer TACACS zaś w drugiej kolejności jest wykorzystywana baza lokalna.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image44.png" alt="image44" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Router został skonfigurowany. Czas by przeprowadzoną konfigurację przetestować - wykonujemy pr&oacute;bę logowania. Jak widać poniżej pr&oacute;ba logowania użytkownika <strong>jankow</strong> przebiegła prawidłowo. Użytkownik <strong>jankow</strong> uzyskał dostęp do routera.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image45.png" alt="image45" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Dużą zaletą serwera ACS jest mnogość opcji monitoringu. Kontrolę poprawności logowania użytkownika <strong>jankow</strong> możemy r&oacute;wnież sprawdzić od strony serwera. Informacje stanu log&oacute;w możesz przeglądać po wybraniu gałęzi <strong>Monitoring and Reports</strong>.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image46.png" alt="image46" width="700" height="737" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>W przypadku konfiguracji serwera TACACS tak zresztą jak i RADIUS możliwe jest przypisanie kilku serwer&oacute;w realizujących proces uwierzytelnienia.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image47.png" alt="image47" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Podczas definicji serwer&oacute;w ważna jest kolejność ich wprowadzania, gdyż będzie to odzwierciedlać stan nawiązywanych połączeń. Jeśli pierwszy serwer o adresie IP 192.168.1.20 będzie niedostępny nastąpi pr&oacute;ba komunikacji z serwerem o adresie IP 192.168.1.21 Tak więc kolejność definicji dostępnych serwer&oacute;w możemy wykorzystać do kształtowania ruchu sieciowego tak by jeden z nich nie był nadmiernie obciążony.</p> <p>&nbsp;</p> <p>CISCO przewidziało jeszcze jedną metodę definicji serwer&oacute;w TACACS a mianowicie serwery te możemy łączyć w grupy. Poniżej przykład utworzenia takiej grupy serwer&oacute;w.</p> <p>&nbsp;</p> <p>Definicję grupy serwer&oacute;w rozpoczynamy od utworzenia samej grupy. Grupę utworzymy za pomocą polecenia: <strong>aaa group server tacacs+ &lt;nazwa_grupy&gt;</strong> Kolejnym krokiem jest podanie adres&oacute;w IP serwer&oacute;w. Adresy definiujemy za pomocą komendy: <strong>server &lt;adres_IP&gt;</strong> W naszym przykładzie do grupy o nazwie GRUPA1 zostały dodane adresy trzech IP serwer&oacute;w przy czym dodanie serwera o adresie 192.168.1.22 wygenerowało błąd. Stało się tak, gdyż adres IP tego serwera wcześniej nie został zdefiniowany za pomocą polecenia: <strong>tacacs-server host &lt;adres_IP&gt; key &lt;hasło_klucza&gt;</strong> Ostatnim krokiem jest zdefiniowanie metody uwierzytelnienia, kt&oacute;ra będzie odnosić się do utworzonej grupy - polecenie: <strong>aaa authentication login default group &lt;nazwa_grupy&gt;</strong></p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/tacacs/image48.png" alt="image48" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Jeśli chcemy aby poszczeg&oacute;lni użytkownicy mieli dostęp tylko do określonych komend należy skonfigurować autoryzacje poleceń. Autoryzację taką włączymy za pomocą komendy: <strong>aaa authorization commands 15 default group tacacs+ </strong>(cyfra 15 oznacza możliwość przeprowadzenia autoryzacji poleceń poziomu 15). Po wydaniu komendy każdorazowe wprowadzenie polecenia spowoduje przesłanie do serwera TACACS żądania, kt&oacute;rego celem jest sprawdzenie czy dany użytkownik daną komendę może wykonać.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image49.png" alt="image49" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Poniżej przykład w kt&oacute;rym użytkownikowi <strong>tadnow</strong> zostało odm&oacute;wione wykonanie polecenia: <strong>configure terminal</strong></p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image50.png" alt="image50" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Jeśli chcemy określić interfejs, kt&oacute;ry może komunikować się z serwerem TACACS należy użyć polecenia<strong>: ip tacacs source-inteface &lt;nazwa interfejsu&gt;</strong> Poniżej przykład w kt&oacute;rym interfejs f0/0 routera R1 został wyznaczony jako ten, przez kt&oacute;ry będą wysyłane pakiety w kierunku serwera TACACS.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image51.png" alt="image51" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Domyślne ustawienia serwera pozwala na wykonanie 3 pr&oacute;b logowania aby zmienić wartość liczby pr&oacute;b logowania należy użyć polecenia: <strong>tacacs-server attempts &lt;liczba_pr&oacute;b&gt;</strong> Polecenie wydajemy w trybie konfiguracji globalnej.</p> <p>&nbsp;</p> <p>Serwer TACACS umożliwia nam gromadzenie informacji o wprowadzanych komendach i poleceniach, kt&oacute;re następnie są zapisywane w logach serwera. Możliwość ta jest bardzo przydatna gdyż pozwala nam na monitorowanie pracy os&oacute;b odpowiedzialnych za konfigurację urządzeń sieciowych. Analiza log&oacute;w da nam wiedzę kto i o jakiej porze wprowadził zmiany w konfiguracji urządzenia.</p> <p>&nbsp;</p> <p>Aby uruchomić przechwytywanie wprowadzonych przez użytkownika poleceń należy wydać komendę: <strong>aaa accounting commands &lt;poziom_poleceń&gt; default stop-only group tacacs+ </strong>Poniżej na zrzucie zaprezentowano włączenie przechwytywania poleceń poziomu pierwszego i piętnastego.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image52.png" alt="image52" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po wydaniu komend wszystkie polecenia wprowadzane przez użytkownika znajdą swoje odzwierciedlenie w dzienniku pracy serwera TACACS. Poniżej przedstawiono zrzut z dziennika serwera na kt&oacute;rym widać iż użytkownik <strong>tadnow</strong> dokonał konfiguracji interfejsu f1/0 routera (zostały zapisane polecenia poziomu 15).</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image53.png" alt="image53" width="700" height="502" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Ponieważ r&oacute;wnież skonfigurowaliśmy rejestrowanie wydania komend poziomu pierwszego to w logach pracy serwera te polecenia r&oacute;wnież odnajdziemy. Poniżej kolejny zrzut na kt&oacute;rym widać iż użytkownik <strong>tadnow</strong> sprawdzał konfigurację interfejs&oacute;w routera (polecenie: show ip interface brief).</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image54.png" alt="image54" width="700" height="42" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Opr&oacute;cz zapisu poleceń w dzienniku pracy serwera możemy gromadzić informacj o występujących zdarzeniach systemowych. Na rysunku poniżej została pokazana konfiguracja tej funkcji.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image55.png" alt="image55" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Rejestrację zdarzeń systemowych określamy za pomocą sł&oacute;w kluczowych: <strong>exec</strong>, <strong>connection</strong> oraz <strong>system</strong>.</p> <p style="margin: 0cm 0cm 0.0001pt 30px;"><strong>exec</strong> - zapis informacji o zainicjowaniu i zakończeniu sesji,</p> <p style="margin: 0cm 0cm 0.0001pt 30px;"><strong>connection</strong> - zapis informacji dotyczących wykonanych połączeń z urządzeniem z wykorzystaniem taklich protokoł&oacute;w jak Telnet czy SSH,</p> <p style="margin: 0cm 0cm 0.0001pt 30px;"><strong>system</strong> - zapis informacji odnoszących się do zdarzeń związanych z pracą urządzenia np. restart.</p> <p>&nbsp;</p> <p style="margin-bottom: 0.0001pt;">Poniżej na zrzucie przykład rejestracji zdarzeń wskazujący na uzyskanie połączenia z urządzeniem.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image56.png" alt="image56" width="700" height="502" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Korzystanie z dedykowanych rozwiązań CISCO jest bardzo wygodne lecz niestety wiąże się to z dodatkowymi kosztami - A co zrobić w przypadku w kt&oacute;rym nas na to np. nie stać a chcemy by w naszej sieci działał serwer TACACS? W takim przypadku musimy sięgnąć do oprogramowania firm trzecich a i najlepiej by oprogramowanie te było darmowe. Warunki te spełnia serwer <strong>TACACS.net TACACS+ Server</strong>. Narzędzie te dostępne jest pod adresem: <a href="http://tacacs.net/download.asp">http://tacacs.net/download.asp</a> Tak naprawdę oprogramowanie te występuje w dw&oacute;ch wersjach <strong>Basic</strong> oraz <strong>Advanced</strong>. Pierwszą z nich można pobrać po wypełnieniu formularza, druga zaś dostępna jest za opłatą.</p> <p>&nbsp;</p> <p>Po pobraniu instalatora rozpoczynamy instalację serwera. Oprogramowanie działa pod kontrolą systemu Windows i wspierane są wersje od Windows XP do Windows 8 wraz z wersjami serwerowymi od Windows 2000 Workstation do Windows Server 2012.</p> <p>&nbsp;</p> <p>Podczas instalacji przy wyborze komponent&oacute;w zaznaczamy obie dostępne opcje: <strong>TACTTest test tool</strong> (narzędzia testujące działanie serwera) oraz <strong>TACACS+ Server</strong> (przeznaczenie tego komponentu chyba nie należy tłumaczyć).</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image57.png" alt="image57" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Kolejną ważną decyzję jaką musimy podjąć to ustalenie hasła klucza, klucz oczywiście należy zapamiętać gdyż będzie potrzebny na dalszym etapie konfiguracji. Wartość klucza: <strong>tajnehaslo</strong></p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image58.png" alt="image58" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po zdefiniowaniu klucza następuje instalacja serwera TACACS.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image59.png" alt="image59" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Oprogramowanie zostało zainstalowane. Serwer po instalacji powinien oczekiwać na połączenia od klient&oacute;w na porcie TCP 49. Aby sprawdzić stan usług sieciowych wykorzystamy wbudowane narzędzie <strong>netstat</strong>. Otwarte porty wraz z stanem i numerem PID usługi poznamy po wydaniu polecenia: <strong>netstat -afo | find "49"</strong> (wyniki polecenia netstat zostają przekazane do polecenia find celem wyświetlenia tylko tych usług w kt&oacute;ry występuje wartość 49).</p> <p>&nbsp;</p> <p>Po wyświetleniu wynik&oacute;w wydanego polecenia odszukujemy w trybie <strong>NASŁUCHIWANIE</strong> usługę działającą na porcie <strong>TCP 49</strong>. PID odnalezionej usługi wynosi 2248. Aby poznać nazwę usługi należy wydać polecenie: <strong>tasklist /fi "pid eq 2248" </strong>Jak można się przekonać poniżej program działający na porcie TCP 49 to <strong>tacplus.exe</strong> Serwer TACACS działa i czeka na nawiązanie połączenia z klientem.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image60.png" alt="image60" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po analizie danych otrzymanych w poprzednim kroku widać, że adres IP serwera został ustalony na 127.0.0.1 (localhost). Docelowy adres IP serwera TACACS powinien wynosić 192.168.1.20. Aby zmienić ten stan rzeczy musimy dokonać konfiguracji ustawień serwera. Ustawienie serwera zmieniamy poprzez edycję plik&oacute;w XML zawartych w folderze <strong>config</strong> dostępnych w lokalizacji <strong>%ALLUSERSPROFILE%<span style="font-family: 'Calibri','sans-serif';">\</span></strong><span class="skimlinks-unlinked"><strong>TACACS.net </strong>Aby zmienić adres IP serwera edytujemy plik <strong>tacplus.xml</strong> (edycja dostępna po odznaczeniu atrybutu tylko do odczytu).</span></p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image61.png" alt="image61" width="700" height="425" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po otwarciu pliku odszukujemy zmienną <strong>LocalIP</strong> i domyślny adres IP 127.0.0.1 zamieniamy na 192.168.1.20</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image62.png" alt="image62" width="700" height="479" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Aby serwer m&oacute;gł zacząć pracować z nowymi ustawieniami należy go zatrzymać i ponownie uruchomić. Ponowny rozruch serwera TACACS dokonamy po wydaniu poleceń: <strong>net stop TACACS.net</strong> oraz <strong>net start TACACS.net</strong></p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image63.png" alt="image63" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Rozruch serwera możemy r&oacute;wnież dokonać z poziomu okna <strong>Usługi</strong>.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image64.png" alt="image64" width="700" height="629" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Weryfikację zmiany ustawień serwera sprawdzimy za pomocą znanych już nam poleceń <strong>netstat</strong> oraz <strong>tasklist</strong>. Nastąpiła zmiana adresu IP z 127.0.0.1 na 192.168.1.20</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image65.png" alt="image65" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Kolejnym krokiem jest utworzenie kont użytkownik&oacute;w mających prawo wykonie operacji logowania. Konfigurację kont przeprowadzamy poprzez edycję pliku <strong>authentication.xml </strong>Ustalenie danych uwierzytelniających dokonujemy za pomocą zmiennych <strong>Name</strong> oraz <strong>LoginPassword </strong>Na zrzucie poniżej zostały ustalone dwa konta użytkownik&oacute;w:</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">1 - użytkownik: <strong>tadnow</strong> hasło: <strong>Qwerty1!</strong></p> <p style="margin: 0cm 0cm 0.0001pt 30px;">2 - użytkownik: <strong>beatry</strong> hasło: <strong>P@ssw0rd</strong></p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image66.png" alt="image66" width="700" height="479" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Jeżeli chcemy określić docelową grupę urządzeń, kt&oacute;ra ma prawo zestawiania połączeń z serwerem TACACS należy odpowiednie ustawienia określić w pliku <strong>clients.xml</strong> W pliku tym r&oacute;wnież możemy zmienić ustalone na etapie instalacji serwera hasło klucza.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image67.png" alt="image67" width="700" height="479" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Wprowadzanie zmian niesie ze sobą możliwość popełnienia pomyłki dlatego warto po dokonanych modyfikacjach dokonać testu składni edytowanych plik&oacute;w. Wraz z serwerem dostarczane jest narzędzie <strong>tacverify</strong>, kt&oacute;re pozwoli nam na sprawdzenie składni plik&oacute;w. Sprawdzenie sprowadza się do wydania polecenia <strong>tacverify</strong>. Jak widać poniżej wszystko jest w porządku.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image68.png" alt="image68" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Kolejnym z narzędzi testujących jest <strong>tactest</strong>, program umożliwia nam przeprowadzenie pr&oacute;by połączenia. Po utworzeniu konta warto sprawdzić czy za pomocą skonfigurowanych poświadczeń uda się nam zestawić poprawne połączenie. Pr&oacute;ba zakończona sukcesem oznacza, że serwer TACACS został poprawnie skonfigurowany i co najważniejsze, że działa. Testu połączenia dokonujemy za pomocą polecenia: <strong>tactest -s &lt;sdres_IP_serwera&gt; -u &lt;nazwa_użytkownika&gt; -k &lt;hasło_klucza&gt; -p &lt;hasło_użytkownika&gt;</strong> Poniżej wydanie polecenia: <strong>tactest -s 192.168.1.20 -u tadnow -k tajnehaslo -p Qwerty1!</strong> kończy się pełnym sukcesem. Przechodzimy do pr&oacute;by przeprowadzenia logowania na routerze.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image69.png" alt="image69" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Konfiguracja routera sprowadza się do wydania tych samych poleceń co w przypadku serwera ACS. Router został skonfigurowany spr&oacute;bujmy zalogować się z poświadczeniami użytkownika <strong>tadnow</strong>. Jak można zaobserwować poniżej pr&oacute;ba ta przebiegła poprawnie.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image70.png" alt="image70" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>W przypadku wystąpienia problem&oacute;w w katalogu <strong>Logs</strong> zapisane są logi serwera, ich analiza pozwoli na odpowiedzenie na pytanie - Co nie działa?</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image71.png" alt="image71" width="700" height="502" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>I to by było na tyle tematu konfiguracji uwierzytelnienia z wykorzystaniem serwera TACACS.</p> <p>&nbsp;</p> <hr /> <p>BIBLIOGRAFIA:</p> <p>&nbsp;</p> <ol> <li><a href="http://www.cisco.com/c/en/us/td/docs/net_mgmt/cisco_secure_access_control_system/5-1/command/reference/acs5_1_cli/cli_app_a.html">CLI Reference Guide for the Cisco Secure Access Control System 5.1 - ACS Command Reference [Cisco Secure Access Control System] - Cisco</a></li> <li><a href="http://www.omnisecu.com/ccna-security/radius-and-tacacs-plus-difference-between-radius-and-tacacs-plus.php">AAA RADIUS and TACACS+, Difference between RADIUS and TACACS+</a></li> <li><a href="http://www.networkworld.com/article/2838882/radius-versus-tacacs.html">RADIUS versus TACACS+ | Network World</a></li> <li><a href="http://www.cisco.com/c/en/us/support/docs/security-vpn/remote-authentication-dial-user-service-radius/13838-10.html">TACACS+ and RADIUS Comparison - Cisco</a></li> </ol></div> <div class="K2FeedImage"><img src="http://slow7.pl/media/k2/items/cache/4ab4b6df96c060fa741e97b50eafb07c_S.jpg" alt="Autoryzacja, uwierzytelnienie i rejestracja z wykorzystaniem serwera TACACS." /></div><div class="K2FeedIntroText"><p>W tym artykule kontynuujemy zapoczątkowany w poprzednim wpisie temat uwierzytelnienia użytkownik&oacute;w na urządzeniach CISCO lecz tym razem do wykonania tego zadania wykorzystamy serwer TACACS.</p> </div><div class="K2FeedFullText"> <p><strong>Protok&oacute;ł TACACS</strong> (ang. Terminal Access Controller Access-Control System) został opracowany w 1980 roku przez firmę BBN. Firma ta została przejęta przez organizację Verizion by w następstwie stać się własnością firmy CISCO.</p> <p>&nbsp;</p> <p>Pierwotnie protok&oacute;ł TACACS zakładał obsługę podstawowych operacji związanych z przekazywaniem informacji uwierzytelniających oraz definiował spos&oacute;b ich weryfikacji. W roku 1990 firma Cisco rozbudowała protok&oacute;ł TACACS o nowe możliwości i nadała mu nazwę XTACACS (ang. Extended TACACS). Kolejne usprawnienia protokołu i dodanie do nich nowych funkcji przeobraziło protok&oacute;ł to formy w jakiej znamy go dziś. Nowa implementacja protokołu przyjęła nazwę TACACS+. Wszystkie trzy wymienione wersje protokołu nie są kompatybilne ze sobą lecz ich obsługa i wsparcie jest uwzględnione w systemach lOS.</p> <p>&nbsp;</p> <p>TACACS jest rozwiązaniem konkurencyjnym do już omawianego protokołu RADIUS więc myślę, że czas na małe por&oacute;wnanie. Por&oacute;wnanie obu rozwiązań zostało zawarte w tabeli poniżej.</p> <p>&nbsp;</p> <table border="1" style="border-collapse: collapse;" cellspacing="0" cellpadding="0"> <tbody> <tr> <td style="border: 1pt solid windowtext; padding: 0cm 5.4pt; text-align: center;" valign="top"><strong>RADIUS</strong></td> <td style="border-width: 1pt 1pt 1pt medium; border-style: solid solid solid none; border-color: windowtext windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; text-align: center;" valign="top"><strong>TACACS+</strong></td> </tr> <tr> <td style="border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt;" valign="top">RADIUS działa na protokole UDP</td> <td style="border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top">TACACS+ działa na protokole TCP</td> </tr> <tr> <td style="border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt;" valign="top">RADIUS używa portu 1645 lub 1812 do uwierzytelniania i portu 1646 <br /> lub 1813 do rozliczania</td> <td style="border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top">TACACS+ używa portu 49</td> </tr> <tr> <td style="border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt;" valign="top">Protok&oacute;ł RADIUS ukrywa hasła podczas <br /> transmisji, ale reszta pakietu jest wysyłana <br /> w postaci zwykłego tekstu.</td> <td style="border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top">TACACS+ szyfruje całą komunikację</td> </tr> <tr> <td style="border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt;" valign="top">RADIUS łączy uwierzytelnianie i autoryzacja</td> <td style="border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top">TACACS+ oddzielnie traktuje uwierzytelnianie, autoryzacje i rozliczanie</td> </tr> <tr> <td style="border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt;" valign="top">RADIUS jest otwartym protokołem <br /> obsługiwanym przez wielu dostawc&oacute;w. <br /> RADIUS jest zdefiniowany <br /> w RFC 2865, 2866, 2867, and 2868.</td> <td style="border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top">TACACS+ jest własnością CISCO.</td> </tr> <tr> <td style="border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt;" valign="top">RADIUS wprowadza mniejszy narzut podczas działania</td> <td style="border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top">TACACS+ zużywa więcej zasob&oacute;w</td> </tr> <tr> <td style="border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt;" valign="top">RADIUS jest ograniczony do trybu uprawnień privilege mode</td> <td style="border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top">TACACS+ wspiera 15 privilege levels</td> </tr> <tr> <td style="border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt;" valign="top">Odpowiadający gł&oacute;wnie za dostęp do sieci</td> <td style="border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top">Wykorzystywany do Device Administration</td> </tr> </tbody> </table> <p>&nbsp;</p> <p>Spos&oacute;b komunikacji pomiędzy klientem, routerem a serwerem w obu przypadkach przebiega odmiennie więc na dw&oacute;ch poniższych schematach zaprezentowano wymianę danych jak zachodzi podczas pr&oacute;by wykonania logowania.</p> <p>&nbsp;</p> <p>Wymiana danych z wykorzystaniem serwera TACACS.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image1.png" alt="image1" width="700" height="255" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Wymiana danych z wykorzystaniem serwera RADIUS.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image2.png" alt="image2" width="700" height="192" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Jak można zaobserwować proces uwierzytelnienia wykorzystujący TACACS przebiega etapami. Pierwszym etapem jest nawiązanie przez klienta połączenia z routerem, następnie urządzenie te w kierunku serwera wysyła zapytanie wskazujące na podanie nazwy użytkownika. Jeśli serwer TACACS takie żądanie zaakceptuje w drugim kroku następuje podanie przez klienta nazwy użytkownika, kt&oacute;ra to z kolei zostaje przez router przesłana do serwera. Proces ten powtarza się r&oacute;wnież w przypadku hasła. Jeśli podane przez klienta dane są prawidłowe, serwer przyznaje dostęp.</p> <p>&nbsp;</p> <p>W rozwiązaniu opartym o serwer RADIUS urządzeniem odpytującym jest r&oacute;wnież router. W tym rozwiązaniu router pyta klienta o login i hasło i jeśli te dane uzyska przesyła je w kierunku serwera RADIUS. Serwer po analizie otrzymanych danych udziela bądź odmawia dostępu.</p> <p>&nbsp;</p> <p>Topologia naszej ćwiczebnej sieci tak samo jak w przypadku serwera RADIUS nie jest skomplikowana i została przedstawiona na rysunku poniżej.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image3.png" alt="image3" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Jako serwer TACACS posłuży nam oprogramowanie ACS czyli Cisco Secure. Rozwiązanie te dostarczane jest jako osobny system operacyjny oparty o Linux bądź dedykowane urządzenie. Wcześniejsze wersje ACS działały r&oacute;wnież w oparciu o system Windows jako osobna aplikacja lecz te rozwiązanie nie jest już ani wspierane ani rozwijane.</p> <p>&nbsp;</p> <p>Niestety ACS nie jest oprogramowaniem darmowym by z niego korzystać należy je zakupić. Na nasze szczęście CISCO umożliwia uzyskanie licencji pr&oacute;bnej, kt&oacute;rej czas został ograniczony do 90 dni. Licencja ta w zupełności nam wystarczy do nauki wystarczy.</p> <p>&nbsp;</p> <p>Aby uzyskać licencję należy przejść do strony: <a href="https://tools.cisco.com/SWIFT/LicensingUI/Quickstart">https://tools.cisco.com/SWIFT/LicensingUI/Quickstart</a> By m&oacute;c uzyskać licencję w pierwszej kolejności należy założyć konto.</p> <p>&nbsp;</p> <p>Po uzyskaniu dostępu wybieramy <strong>Get Other Licenses</strong> a następnie z rozwijanego menu klikamy <strong>Demo and Evaluation</strong>.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image4.png" alt="image4" width="700" height="341" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>W nowo otwartym oknie w sekcji <strong>Product Family</strong> wybieramy <strong>Network Mgmt Products</strong> a następnie <strong>Cisco Secure Access Control System Evaluation</strong>. Klikamy <strong>Next</strong></p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image5.png" alt="image5" width="700" height="487" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po uzyskaniu licencji na podany podczas rejestracji adres email zostanie wysłany stosowny plik (plik z rozszerzeniem *.lic), plik licencji możemy r&oacute;wnież pobrać bezpośrednio ze strony.</p> <p>&nbsp;</p> <p>Posiadamy licencję a więc czas by uzyskać obraz systemu. Tu już niestety tak łatwo nie jest, gdyż bezpośrednio ze strony CISCO obrazu w formie pliku ISO nie pobierzemy. Trzeba poszukać i pobrać odpowiedni plik z innego źr&oacute;dła, tu już odsyłam do wyszukiwarki.</p> <p>&nbsp;</p> <p>Przechodzimy do instalacji oprogramowania, instalacja zostanie przeprowadzona z wykorzystaniem maszyny wirtualnej.</p> <p>&nbsp;</p> <p>Rozpoczynamy od pobrania i od zainstalowania oprogramowania VMware Player. Dlaczego VMware a nie VirtualBox? Anoż dlatego, że pomimo podjętych pr&oacute;b (kilka przerobionych tutoriali) nie udało mi się zainstalować serwera ACS z wykorzystaniem VirtualBox. Program instalacyjny odpalał się prawidłowo lecz po chwili uzyskiwałem komunikat o niezgodności sprzętowej i niemożności kontynuowania instalacji. Jeśli Czytelniku znasz rozwiązanie tego problemu to Ja go chętnie poznam. W przypadku wspomnianego VMware instalacja przebiegła bez żadnych zakł&oacute;ceń.</p> <p>&nbsp;</p> <p>Po zainstalowaniu oprogramowania przechodzimy do konfiguracji nowej maszyny wirtualnej, parametry maszyny zostały ustalone tak jak na poniższych screenach. Na początek pamięć RAM - <strong>ustawienie 2GB</strong>.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image6.png" alt="image6" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Kolejną czynnością było ustalenie parametr&oacute;w dysku twardego. Dysk został zdefiniowany jako <strong>SCSI</strong> z domyślną wartością <strong>LSI Logic</strong> a jego rozmiar to <strong>70 GB</strong> (ACS wymaga co najmniej 60GB miejsca).</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image7.png" alt="image7" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Aby serwer był dostępny z poziomu sieci LAN, karta sieciowa została ustawiona do pracy w trybie <strong>Bridged: Connected directly to the physical network</strong></p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image8.png" alt="image8" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Typ wirtualnej maszyny został ustalony na obsługę systemu <strong>Red Hat Enterprise Linux 6</strong>.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image9.png" alt="image9" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Opcje związane z obsługą USB oraz dźwięku zostały usunięte.</p> <p>&nbsp;</p> <p>Maszyna wirtualna została skonfigurowana, przechodzimy do instalacji serwera ACS. Po uruchomieniu wirtualnego hosta i wskazaniu pliku obrazu systemu (plik ISO) powinien pojawić się nam ekran na kt&oacute;rym możemy zdecydować o typie przeprowadzanej instalacji (obraz umożliwia r&oacute;wnież wykonanie operacji resetowania zapomnianego hasła). Z menu wybieramy: <strong>Cisco Secure ACS 5.4 Instalation (Keyboard/Monitor) - opcja 1</strong>.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image10.png" alt="image10" width="700" height="452" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po wybraniu typu instalacji następuje proces formatowania dysku.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image11.png" alt="image11" width="700" height="452" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po wykonaniu formatowania rozpoczyna się proces kopiowania plik&oacute;w systemu ACS.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image12.png" alt="image12" width="700" height="452" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po zakończonym kopiowaniu powinien nastąpić restart maszyny po kt&oacute;rym powinien ukazać się nam ekran jak na zrzucie poniżej. Przechodzimy do konfiguracji podstawowych parametr&oacute;w serwera ACS. Aby rozpocząć konfigurację po ciągu <strong>localhost login:</strong> wpisujemy <strong>setup</strong> i zatwierdzamy klawiszem <strong>Enter</strong>.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image13.png" alt="image13" width="700" height="452" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Przechodzimy do konfiguracji podstawowych parametr&oacute;w:</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">1 - adres IP serwera,</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">2 - maska sieci,</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">3 - adres IP bramy,</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">4 - nazwa domeny,</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">5 - adres IP serwera DNS,</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">6 - adres serwera czasu NTP,</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">7 - strefa czasowa,</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">8 - dane uwierzytelniające tj. login oraz hasło.</p> <p>&nbsp;</p> <p style="margin-bottom: 0.0001pt;">Jeśli kt&oacute;ryś danych nie znasz to pozostaw puste miejsce i zatwierdź klawiszem <strong>Enter</strong>.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image14.png" alt="image14" width="700" height="452" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po określeniu wszystkich parametr&oacute;w nastąpi proces konfiguracji serwera ACS. Efektem końcowym procesu powinien być ekran logowania. Aby się zalogować wykorzystaj dane podane w poprzednim kroku.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image15.png" alt="image15" width="700" height="452" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Serwer ACS powinien się uruchomić. Jest to dobry moment aby wykonać kilka test&oacute;w sprawdzających poprawność działania serwera. Rozpoczynamy od sprawdzenia dostępności serwera ACS. Zostaje wykonana pr&oacute;ba sprawdzenia osiągalności serwera z poziomu sieci LAN. Jak można zauważyć poniżej test ping kończy się sukcesem. Możliwa jest komunikacja z serwerem ACS.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image16.png" alt="image16" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Kolejne testy wykonamy w linii CLI serwera ACS. Pierwszym testem jest sprawdzenie wersji serwera. Wersję systemu poznamy po wydaniu polecenia: <strong>show version</strong></p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image17.png" alt="image17" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Drugi test to sprawdzenie poprawności uruchomionych proces&oacute;w. Sprawdzenia dokonamy za pomocą polecenia: <strong>show application status acs</strong> Lista uruchomionych proces&oacute;w została przedstawiona poniżej.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image18.png" alt="image18" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Ostatni test dotyczy sprawdzenia poprawności konfiguracji serwera. Konfigurację serwera poznamy po wydaniu komendy: <strong>show running-config</strong></p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image19.png" alt="image19" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Serwer ACS działa tak więc przechodzimy do jego konfiguracji. Konfiguracja odbywa się za pomocą przeglądarki internetowej (w ten sam spos&oacute;b w jaki konfigurujemy np. router). Otwieramy przeglądarkę i w polu adresu wpisujemy: <strong>https://&lt;adres_IP_serwera&gt;</strong> (ważne jest byś dodał <strong>https</strong> samo wpisanie adresu IP nie wystarczy).</p> <p>&nbsp;</p> <p>Po wysłaniu żądania otwarcia strony zostaniemy poinformowaniu o problemie z certyfikatem strony - nie martw się jest to jak najbardziej pożądany komunikat. Aby m&oacute;c przejść dalej zaznaczamy <strong>Kontynuuj przeglądanie tej witryny sieci Web</strong> (to w przypadku Internet Explorera) natomiast jeśli korzystamy np. z Firefoxa wybieramy <strong>Zaawansowane</strong> a następnie <strong>Dodaj wyjątek</strong>.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image20.png" alt="image20" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>W nowo otwartym oknie <strong>Dodanie wyjątku bezpieczeństwa</strong> zaznaczamy opcję <strong>Zachowaj wyjątek na stałe</strong> (przy ponownym połączeniu problem z certyfikatem już nie wystąpi) a następnie <strong>Potwierdź wyjątek bezpieczeństwa</strong>.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image21.png" alt="image21" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po zatwierdzeniu ukarze się nam okno logowania serwera ACS. Ponieważ jest to nasze pierwsze logowanie w polu <strong>Username</strong> wpisujemy <strong>acsadmin</strong> zaś hasłem jest słowo <strong>default</strong>.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image22.png" alt="image22" width="700" height="595" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po wpisaniu danych uwierzytelniających zostaniemy poinformowani o potrzebie zmiany hasła. Hasło ustalamy sami. Po ustaleniu wartości hasła klikamy <strong>Zaloguj się</strong>.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image23.png" alt="image23" width="700" height="595" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Następny krok to wczytanie licencji. Po wyborze przycisku <strong>Przeglądaj</strong> wskazujemy na plik licencji otrzymany od CISCO.</p> <p>&nbsp;</p> <p>Wybieramy <strong>Install</strong>.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image24.png" alt="image24" width="700" height="595" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po wykonaniu wszystkich opisanych czynności uzyskamy dostęp do panelu konfiguracyjnego serwera ACS. W lewym g&oacute;rnym rogu ukazana jest informacja o liczbie pozostałych dni po upływie kt&oacute;rych musimy odnowić licencję.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image25.png" alt="image25" width="700" height="483" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Konfigurację serwera rozpoczniemy od utworzenia nowej grupy urządzeń. Ponieważ w naszym scenariuszu konfigurowanym urządzeniem jest router tak więc tworzoną grupę nazwiemy <strong>Routery</strong>.</p> <p>&nbsp;</p> <p>Aby skonfigurować nową grupę urządzeń przechodzimy do gałęzi: <strong>Network Resources/Network Device Group/Device Type</strong> Po przejściu do gałęzi klikamy <strong>Create</strong>.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image26.png" alt="image26" width="700" height="511" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Aby utworzyć nową grupę wypełniamy pola obowiązkowe, kt&oacute;re są oznaczone pomarańczową gwiazdką. Nazwa grupy została zdefiniowana jako <strong>Routery</strong> zaś pole <strong>Parent</strong> pozostawiamy bez zmian. Opcjonalnie możemy wprowadzić opis tworzonej grupy (pole <strong>Description</strong>) Po zdefiniowaniu wszystkich danych klikamy <strong>Submit</strong>.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image27.png" alt="image27" width="700" height="511" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Grupa <strong>Routery</strong> została utworzona. Aby edytować informacje o grupie bądź sprawdzić fakt jej utworzenia w gałęzi <strong>Network Resources/Network Device Group/Device Type </strong>klikamy na strzałkę przy nazwie rodzica (w naszym przypadku <strong>All Device Types</strong>).</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image28.png" alt="image28" width="700" height="511" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po utworzeniu grupy musimy zdefiniować konto urządzenia. Aby utworzyć konto przechodzimy do gałęzi <strong>Network Resources/Network Devices and AAA Clients</strong>. Po otwarciu okna podobnie jak w przypadku tworzenia grupy w pierwszej kolejności klikamy na przycisk <strong>Create</strong>.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image29.png" alt="image29" width="700" height="511" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po otwarciu nowego okna definiujemy:</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">1 - nazwę urządzenia oraz jego opis,</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">2 - adres IP urządzenia,</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">3 - spos&oacute;b uwierzytelnienia, odhaczamy opcję TACACS+ oraz definiujemy hasło klucza (hasło będzie potrzebne przy konfiguracji routera).</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/tacacs/image30.png" alt="image30" width="700" height="511" style="display: block; margin-left: auto; margin-right: auto;" />&nbsp;</p> <p>&nbsp;</p> <p>Ostatnim krokiem jest dodanie konta tworzonego urządzenia do wcześniej utworzonej grupy. Aby przypisać urządzenia <strong>R1</strong> do grupy <strong>Routery</strong> wybieramy przycisk <strong>Select</strong> (w obrębie opcji <strong>Device Type</strong>) a następnie po otwarciu nowego okna przeglądarki zaznaczamy grupę.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image31.png" alt="image31" width="700" height="465" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po wybraniu kolejno <strong>OK</strong> oraz <strong>Submit</strong> konto urządzenia <strong>R1</strong> zostaje przypisane do grupy <strong>Routery</strong>.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image32.png" alt="image32" width="700" height="588" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po utworzeniu konta urządzenia kolejnym krokiem jest zdefiniowanie konta użytkownika, kt&oacute;ry do urządzenia będzie miał przyznane prawo logowania. Tak jak poprzednio rozpoczynamy od utworzenia grupy użytkownik&oacute;w.</p> <p>&nbsp;</p> <p>Aby utworzyć grupę użytkownik&oacute;w przechodzimy do gałęzi <strong>Users and Identity Stores/Identity</strong> <strong>Groups</strong> a następnie wybieramy <strong>Create</strong>.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image33.png" alt="image33" width="700" height="511" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Uzupełniamy pola: <strong>nazwa tworzonej grupy</strong>, <strong>opis grupy</strong> (opcjonalnie), pole <strong>Parent</strong> pozostawiamy bez zmian.</p> <p>&nbsp;</p> <p>Jak widać na zrzucie poniżej nazwa grupy została zdefiniowana jako <strong>Konfiguracja</strong> zaś opis grupy to <strong>pełny dostęp</strong>. Po definicji wszystkich wymaganych opcji klikamy <strong>Submit</strong>.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image34.png" alt="image34" width="700" height="511" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Poprawność utworzenia grupy (bądź modyfikację opcji) możemy dokonać po wybraniu strzałki obok nazwy rodzica (<strong>All Groups</strong>).</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image35.png" alt="image35" width="700" height="588" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Grupa <strong>Konfiguracja</strong> została utworzona. Czas by przypisać do grupy użytkownik&oacute;w. Konto użytkownika utworzymy po wybraniu gałęzi <strong>Users and Identity Stores/Internal Identity Stores/Users</strong> wybieramy <strong>Create</strong>.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image36.png" alt="image36" width="700" height="588" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Na kolejnym ekranie:</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">1 - ustalamy nazwę użytkownika,</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">2 - pole opis,</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">3 - za pomocą przycisku <strong>Select</strong> przypisujemy użytkownika do wcześniej utworzonej grupy <strong>Konfiguracja</strong>,</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">4 - ustalamy hasło.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image37.png" alt="image37" width="700" height="588" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Konto użytkownika <strong>jankow</strong> zostało utworzone i przypisane do grupy <strong>Konfiguracja</strong>.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image38.png" alt="image38" width="700" height="588" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Zanim przejdziemy do kolejnego etapu czyli do konfiguracji routera jeszcze jedna mała uwaga. Gdybyśmy chcieli utworzyć więcej grup użytkownik&oacute;w i każdej z grup przypisać r&oacute;żne uprawnienia należy stworzyć odpowiednie polisy. W naszym scenariuszu możemy ten krok pominąć gdyż domyślna polisa (a raczej brak zdefiniowania innych) powoduje uzyskanie pełnego dostępu.</p> <p>&nbsp;</p> <p>Aby przypisać dane uprawnienia grupie i utworzyć nową polisę należy przejść do gałęzi <strong>Access Policies/Access Services/Default Device Admin/Authorization</strong> (utworzymy regułę dla grupy użytkownik&oacute;w <strong>Konfiguracja</strong> oraz grupy urządzeń <strong>Routery</strong>). W nowo otwartym oknie w polu <strong>Name</strong> wpisujemy nazwę reguły. Po zaznaczeniu opcji <strong>Identity Group </strong>i kliknięciu na <strong>Select</strong> wybieramy grupę <strong>Konfiguracja</strong>. Następnie zaznaczamy opcję <strong>NDG:Device Type</strong> i tak jak poprzednio po kliknięciu na <strong>Select</strong> wybieramy grupę <strong>Routery</strong>.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image39.png" alt="image39" width="700" height="548" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Adresaci reguły zostali ustaleni przechodzimy do określenia uprawnień. Aby określić uprawnienia wybieramy przycisk <strong>Select</strong> przy opcji <strong>Shell Profile</strong>. Domyślne utworzone są dwa profile - profil zezwalający na dostęp czyli <strong>PermitAccess </strong>oraz profil zabraniający dostępu - jak łatwo się domyślić - <strong>DenyAccess</strong>. My na tym etapie skorzystamy z własnego. Aby utworzyć nowy profil wybieramy <strong>Create</strong>.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image40.png" alt="image40" width="700" height="405" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Otworzy się kolejne okno. W zakładce <strong>General</strong> określamy nazwę tworzonego profilu. Zakładka <strong>Common Tasks</strong> odpowiedzialna jest za ustalenie uprawnień. Aby zdefiniowanym grupom przypisać maksymalne uprawnienia opcje <strong>Devault Privilege</strong> oraz <strong>Maximum Privilege</strong> zmieniamy na <strong>Static</strong> i przypisujemy opcji <strong>Value</strong> wartość <strong>15</strong>. Zakładka ta pozwala na zdefiniowanie jeszcze kilku innych parametr&oacute;w.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image41.png" alt="image41" width="700" height="438" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po wprowadzeniu wszystkich danych wybieramy <strong>Submit</strong>.</p> <p>&nbsp;</p> <p>Gdybyś czytelniku z jakiś powod&oacute;w popełnił błędy podczas konfiguracji serwera ACS zawsze za pomocą polecenia: <strong>acs reset-config </strong>przywr&oacute;cisz jego ustawienia początkowe (fabryczne).</p> <p>&nbsp;</p> <p>Konfiguracja serwera ACS dobiegła końca czas by przetestować wprowadzone ustawienia, przechodzimy do konfiguracji routera.</p> <p>&nbsp;</p> <p>Na samym wstępie wykonujemy konfigurację interfejsu routera - przypisujemy adres IP, maskę oraz włączamy interfejs.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image42.png" alt="image42" width="700" height="103" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po konfiguracji interfejsu przeprowadzamy test łączności z serwerem ACS. Jak widać poniżej komunikacja obu urządzeń jest możliwa.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image43.png" alt="image43" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Kolejnym krokiem jest konfiguracja opcji związanych z serwerem TACACS. Konfiguracja ta jest bardzo podobna do tej opisanej w poprzednim wpisie dotyczącym konfiguracji serwera RADIUS.</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">1 - tworzymy konto użytkownika <strong>admin</strong> - konto jest zakładane lokalnie - na wypadek błędnie przeprowadzonej konfiguracji lub niedostępności serwera TACACS tak byśmy nie stracili możliwości zalogowania się,</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">2 - hasło do trybu uprzywilejowanego,</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">3 - włączenie modelu AAA,</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">4 - określenie adresu IP serwera TACACS,</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">5 - określenie wartości klucza,</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">6 - określenie domyślnej metody uwierzytelnienia, dodanie parametru: <strong>local-case</strong> powoduje rozr&oacute;żnienie wielkości liter,</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">7 - określenie metody autoryzacji - pierwszeństwo ma serwer TACACS zaś w drugiej kolejności jest wykorzystywana baza lokalna.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image44.png" alt="image44" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Router został skonfigurowany. Czas by przeprowadzoną konfigurację przetestować - wykonujemy pr&oacute;bę logowania. Jak widać poniżej pr&oacute;ba logowania użytkownika <strong>jankow</strong> przebiegła prawidłowo. Użytkownik <strong>jankow</strong> uzyskał dostęp do routera.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image45.png" alt="image45" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Dużą zaletą serwera ACS jest mnogość opcji monitoringu. Kontrolę poprawności logowania użytkownika <strong>jankow</strong> możemy r&oacute;wnież sprawdzić od strony serwera. Informacje stanu log&oacute;w możesz przeglądać po wybraniu gałęzi <strong>Monitoring and Reports</strong>.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image46.png" alt="image46" width="700" height="737" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>W przypadku konfiguracji serwera TACACS tak zresztą jak i RADIUS możliwe jest przypisanie kilku serwer&oacute;w realizujących proces uwierzytelnienia.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image47.png" alt="image47" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Podczas definicji serwer&oacute;w ważna jest kolejność ich wprowadzania, gdyż będzie to odzwierciedlać stan nawiązywanych połączeń. Jeśli pierwszy serwer o adresie IP 192.168.1.20 będzie niedostępny nastąpi pr&oacute;ba komunikacji z serwerem o adresie IP 192.168.1.21 Tak więc kolejność definicji dostępnych serwer&oacute;w możemy wykorzystać do kształtowania ruchu sieciowego tak by jeden z nich nie był nadmiernie obciążony.</p> <p>&nbsp;</p> <p>CISCO przewidziało jeszcze jedną metodę definicji serwer&oacute;w TACACS a mianowicie serwery te możemy łączyć w grupy. Poniżej przykład utworzenia takiej grupy serwer&oacute;w.</p> <p>&nbsp;</p> <p>Definicję grupy serwer&oacute;w rozpoczynamy od utworzenia samej grupy. Grupę utworzymy za pomocą polecenia: <strong>aaa group server tacacs+ &lt;nazwa_grupy&gt;</strong> Kolejnym krokiem jest podanie adres&oacute;w IP serwer&oacute;w. Adresy definiujemy za pomocą komendy: <strong>server &lt;adres_IP&gt;</strong> W naszym przykładzie do grupy o nazwie GRUPA1 zostały dodane adresy trzech IP serwer&oacute;w przy czym dodanie serwera o adresie 192.168.1.22 wygenerowało błąd. Stało się tak, gdyż adres IP tego serwera wcześniej nie został zdefiniowany za pomocą polecenia: <strong>tacacs-server host &lt;adres_IP&gt; key &lt;hasło_klucza&gt;</strong> Ostatnim krokiem jest zdefiniowanie metody uwierzytelnienia, kt&oacute;ra będzie odnosić się do utworzonej grupy - polecenie: <strong>aaa authentication login default group &lt;nazwa_grupy&gt;</strong></p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/tacacs/image48.png" alt="image48" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Jeśli chcemy aby poszczeg&oacute;lni użytkownicy mieli dostęp tylko do określonych komend należy skonfigurować autoryzacje poleceń. Autoryzację taką włączymy za pomocą komendy: <strong>aaa authorization commands 15 default group tacacs+ </strong>(cyfra 15 oznacza możliwość przeprowadzenia autoryzacji poleceń poziomu 15). Po wydaniu komendy każdorazowe wprowadzenie polecenia spowoduje przesłanie do serwera TACACS żądania, kt&oacute;rego celem jest sprawdzenie czy dany użytkownik daną komendę może wykonać.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image49.png" alt="image49" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Poniżej przykład w kt&oacute;rym użytkownikowi <strong>tadnow</strong> zostało odm&oacute;wione wykonanie polecenia: <strong>configure terminal</strong></p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image50.png" alt="image50" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Jeśli chcemy określić interfejs, kt&oacute;ry może komunikować się z serwerem TACACS należy użyć polecenia<strong>: ip tacacs source-inteface &lt;nazwa interfejsu&gt;</strong> Poniżej przykład w kt&oacute;rym interfejs f0/0 routera R1 został wyznaczony jako ten, przez kt&oacute;ry będą wysyłane pakiety w kierunku serwera TACACS.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image51.png" alt="image51" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Domyślne ustawienia serwera pozwala na wykonanie 3 pr&oacute;b logowania aby zmienić wartość liczby pr&oacute;b logowania należy użyć polecenia: <strong>tacacs-server attempts &lt;liczba_pr&oacute;b&gt;</strong> Polecenie wydajemy w trybie konfiguracji globalnej.</p> <p>&nbsp;</p> <p>Serwer TACACS umożliwia nam gromadzenie informacji o wprowadzanych komendach i poleceniach, kt&oacute;re następnie są zapisywane w logach serwera. Możliwość ta jest bardzo przydatna gdyż pozwala nam na monitorowanie pracy os&oacute;b odpowiedzialnych za konfigurację urządzeń sieciowych. Analiza log&oacute;w da nam wiedzę kto i o jakiej porze wprowadził zmiany w konfiguracji urządzenia.</p> <p>&nbsp;</p> <p>Aby uruchomić przechwytywanie wprowadzonych przez użytkownika poleceń należy wydać komendę: <strong>aaa accounting commands &lt;poziom_poleceń&gt; default stop-only group tacacs+ </strong>Poniżej na zrzucie zaprezentowano włączenie przechwytywania poleceń poziomu pierwszego i piętnastego.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image52.png" alt="image52" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po wydaniu komend wszystkie polecenia wprowadzane przez użytkownika znajdą swoje odzwierciedlenie w dzienniku pracy serwera TACACS. Poniżej przedstawiono zrzut z dziennika serwera na kt&oacute;rym widać iż użytkownik <strong>tadnow</strong> dokonał konfiguracji interfejsu f1/0 routera (zostały zapisane polecenia poziomu 15).</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image53.png" alt="image53" width="700" height="502" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Ponieważ r&oacute;wnież skonfigurowaliśmy rejestrowanie wydania komend poziomu pierwszego to w logach pracy serwera te polecenia r&oacute;wnież odnajdziemy. Poniżej kolejny zrzut na kt&oacute;rym widać iż użytkownik <strong>tadnow</strong> sprawdzał konfigurację interfejs&oacute;w routera (polecenie: show ip interface brief).</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image54.png" alt="image54" width="700" height="42" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Opr&oacute;cz zapisu poleceń w dzienniku pracy serwera możemy gromadzić informacj o występujących zdarzeniach systemowych. Na rysunku poniżej została pokazana konfiguracja tej funkcji.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image55.png" alt="image55" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Rejestrację zdarzeń systemowych określamy za pomocą sł&oacute;w kluczowych: <strong>exec</strong>, <strong>connection</strong> oraz <strong>system</strong>.</p> <p style="margin: 0cm 0cm 0.0001pt 30px;"><strong>exec</strong> - zapis informacji o zainicjowaniu i zakończeniu sesji,</p> <p style="margin: 0cm 0cm 0.0001pt 30px;"><strong>connection</strong> - zapis informacji dotyczących wykonanych połączeń z urządzeniem z wykorzystaniem taklich protokoł&oacute;w jak Telnet czy SSH,</p> <p style="margin: 0cm 0cm 0.0001pt 30px;"><strong>system</strong> - zapis informacji odnoszących się do zdarzeń związanych z pracą urządzenia np. restart.</p> <p>&nbsp;</p> <p style="margin-bottom: 0.0001pt;">Poniżej na zrzucie przykład rejestracji zdarzeń wskazujący na uzyskanie połączenia z urządzeniem.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image56.png" alt="image56" width="700" height="502" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Korzystanie z dedykowanych rozwiązań CISCO jest bardzo wygodne lecz niestety wiąże się to z dodatkowymi kosztami - A co zrobić w przypadku w kt&oacute;rym nas na to np. nie stać a chcemy by w naszej sieci działał serwer TACACS? W takim przypadku musimy sięgnąć do oprogramowania firm trzecich a i najlepiej by oprogramowanie te było darmowe. Warunki te spełnia serwer <strong>TACACS.net TACACS+ Server</strong>. Narzędzie te dostępne jest pod adresem: <a href="http://tacacs.net/download.asp">http://tacacs.net/download.asp</a> Tak naprawdę oprogramowanie te występuje w dw&oacute;ch wersjach <strong>Basic</strong> oraz <strong>Advanced</strong>. Pierwszą z nich można pobrać po wypełnieniu formularza, druga zaś dostępna jest za opłatą.</p> <p>&nbsp;</p> <p>Po pobraniu instalatora rozpoczynamy instalację serwera. Oprogramowanie działa pod kontrolą systemu Windows i wspierane są wersje od Windows XP do Windows 8 wraz z wersjami serwerowymi od Windows 2000 Workstation do Windows Server 2012.</p> <p>&nbsp;</p> <p>Podczas instalacji przy wyborze komponent&oacute;w zaznaczamy obie dostępne opcje: <strong>TACTTest test tool</strong> (narzędzia testujące działanie serwera) oraz <strong>TACACS+ Server</strong> (przeznaczenie tego komponentu chyba nie należy tłumaczyć).</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image57.png" alt="image57" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Kolejną ważną decyzję jaką musimy podjąć to ustalenie hasła klucza, klucz oczywiście należy zapamiętać gdyż będzie potrzebny na dalszym etapie konfiguracji. Wartość klucza: <strong>tajnehaslo</strong></p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image58.png" alt="image58" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po zdefiniowaniu klucza następuje instalacja serwera TACACS.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image59.png" alt="image59" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Oprogramowanie zostało zainstalowane. Serwer po instalacji powinien oczekiwać na połączenia od klient&oacute;w na porcie TCP 49. Aby sprawdzić stan usług sieciowych wykorzystamy wbudowane narzędzie <strong>netstat</strong>. Otwarte porty wraz z stanem i numerem PID usługi poznamy po wydaniu polecenia: <strong>netstat -afo | find "49"</strong> (wyniki polecenia netstat zostają przekazane do polecenia find celem wyświetlenia tylko tych usług w kt&oacute;ry występuje wartość 49).</p> <p>&nbsp;</p> <p>Po wyświetleniu wynik&oacute;w wydanego polecenia odszukujemy w trybie <strong>NASŁUCHIWANIE</strong> usługę działającą na porcie <strong>TCP 49</strong>. PID odnalezionej usługi wynosi 2248. Aby poznać nazwę usługi należy wydać polecenie: <strong>tasklist /fi "pid eq 2248" </strong>Jak można się przekonać poniżej program działający na porcie TCP 49 to <strong>tacplus.exe</strong> Serwer TACACS działa i czeka na nawiązanie połączenia z klientem.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image60.png" alt="image60" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po analizie danych otrzymanych w poprzednim kroku widać, że adres IP serwera został ustalony na 127.0.0.1 (localhost). Docelowy adres IP serwera TACACS powinien wynosić 192.168.1.20. Aby zmienić ten stan rzeczy musimy dokonać konfiguracji ustawień serwera. Ustawienie serwera zmieniamy poprzez edycję plik&oacute;w XML zawartych w folderze <strong>config</strong> dostępnych w lokalizacji <strong>%ALLUSERSPROFILE%<span style="font-family: 'Calibri','sans-serif';">\</span></strong><span class="skimlinks-unlinked"><strong>TACACS.net </strong>Aby zmienić adres IP serwera edytujemy plik <strong>tacplus.xml</strong> (edycja dostępna po odznaczeniu atrybutu tylko do odczytu).</span></p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image61.png" alt="image61" width="700" height="425" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po otwarciu pliku odszukujemy zmienną <strong>LocalIP</strong> i domyślny adres IP 127.0.0.1 zamieniamy na 192.168.1.20</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image62.png" alt="image62" width="700" height="479" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Aby serwer m&oacute;gł zacząć pracować z nowymi ustawieniami należy go zatrzymać i ponownie uruchomić. Ponowny rozruch serwera TACACS dokonamy po wydaniu poleceń: <strong>net stop TACACS.net</strong> oraz <strong>net start TACACS.net</strong></p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image63.png" alt="image63" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Rozruch serwera możemy r&oacute;wnież dokonać z poziomu okna <strong>Usługi</strong>.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image64.png" alt="image64" width="700" height="629" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Weryfikację zmiany ustawień serwera sprawdzimy za pomocą znanych już nam poleceń <strong>netstat</strong> oraz <strong>tasklist</strong>. Nastąpiła zmiana adresu IP z 127.0.0.1 na 192.168.1.20</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image65.png" alt="image65" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Kolejnym krokiem jest utworzenie kont użytkownik&oacute;w mających prawo wykonie operacji logowania. Konfigurację kont przeprowadzamy poprzez edycję pliku <strong>authentication.xml </strong>Ustalenie danych uwierzytelniających dokonujemy za pomocą zmiennych <strong>Name</strong> oraz <strong>LoginPassword </strong>Na zrzucie poniżej zostały ustalone dwa konta użytkownik&oacute;w:</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">1 - użytkownik: <strong>tadnow</strong> hasło: <strong>Qwerty1!</strong></p> <p style="margin: 0cm 0cm 0.0001pt 30px;">2 - użytkownik: <strong>beatry</strong> hasło: <strong>P@ssw0rd</strong></p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image66.png" alt="image66" width="700" height="479" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Jeżeli chcemy określić docelową grupę urządzeń, kt&oacute;ra ma prawo zestawiania połączeń z serwerem TACACS należy odpowiednie ustawienia określić w pliku <strong>clients.xml</strong> W pliku tym r&oacute;wnież możemy zmienić ustalone na etapie instalacji serwera hasło klucza.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image67.png" alt="image67" width="700" height="479" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Wprowadzanie zmian niesie ze sobą możliwość popełnienia pomyłki dlatego warto po dokonanych modyfikacjach dokonać testu składni edytowanych plik&oacute;w. Wraz z serwerem dostarczane jest narzędzie <strong>tacverify</strong>, kt&oacute;re pozwoli nam na sprawdzenie składni plik&oacute;w. Sprawdzenie sprowadza się do wydania polecenia <strong>tacverify</strong>. Jak widać poniżej wszystko jest w porządku.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image68.png" alt="image68" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Kolejnym z narzędzi testujących jest <strong>tactest</strong>, program umożliwia nam przeprowadzenie pr&oacute;by połączenia. Po utworzeniu konta warto sprawdzić czy za pomocą skonfigurowanych poświadczeń uda się nam zestawić poprawne połączenie. Pr&oacute;ba zakończona sukcesem oznacza, że serwer TACACS został poprawnie skonfigurowany i co najważniejsze, że działa. Testu połączenia dokonujemy za pomocą polecenia: <strong>tactest -s &lt;sdres_IP_serwera&gt; -u &lt;nazwa_użytkownika&gt; -k &lt;hasło_klucza&gt; -p &lt;hasło_użytkownika&gt;</strong> Poniżej wydanie polecenia: <strong>tactest -s 192.168.1.20 -u tadnow -k tajnehaslo -p Qwerty1!</strong> kończy się pełnym sukcesem. Przechodzimy do pr&oacute;by przeprowadzenia logowania na routerze.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image69.png" alt="image69" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Konfiguracja routera sprowadza się do wydania tych samych poleceń co w przypadku serwera ACS. Router został skonfigurowany spr&oacute;bujmy zalogować się z poświadczeniami użytkownika <strong>tadnow</strong>. Jak można zaobserwować poniżej pr&oacute;ba ta przebiegła poprawnie.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image70.png" alt="image70" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>W przypadku wystąpienia problem&oacute;w w katalogu <strong>Logs</strong> zapisane są logi serwera, ich analiza pozwoli na odpowiedzenie na pytanie - Co nie działa?</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/tacacs/image71.png" alt="image71" width="700" height="502" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>I to by było na tyle tematu konfiguracji uwierzytelnienia z wykorzystaniem serwera TACACS.</p> <p>&nbsp;</p> <hr /> <p>BIBLIOGRAFIA:</p> <p>&nbsp;</p> <ol> <li><a href="http://www.cisco.com/c/en/us/td/docs/net_mgmt/cisco_secure_access_control_system/5-1/command/reference/acs5_1_cli/cli_app_a.html">CLI Reference Guide for the Cisco Secure Access Control System 5.1 - ACS Command Reference [Cisco Secure Access Control System] - Cisco</a></li> <li><a href="http://www.omnisecu.com/ccna-security/radius-and-tacacs-plus-difference-between-radius-and-tacacs-plus.php">AAA RADIUS and TACACS+, Difference between RADIUS and TACACS+</a></li> <li><a href="http://www.networkworld.com/article/2838882/radius-versus-tacacs.html">RADIUS versus TACACS+ | Network World</a></li> <li><a href="http://www.cisco.com/c/en/us/support/docs/security-vpn/remote-authentication-dial-user-service-radius/13838-10.html">TACACS+ and RADIUS Comparison - Cisco</a></li> </ol></div> Co w sieci siedzi. Skanowanie portów. 2016-06-15T10:26:27+00:00 2016-06-15T10:26:27+00:00 http://slow7.pl/sieci-komputerowe/item/121-co-w-sieci-siedzi-skanowanie-portow pikolo [email protected] <div class="K2FeedImage"><img src="http://slow7.pl/media/k2/items/cache/474f4cdd4383ff91fd1d98bcb039d93b_S.jpg" alt="Co w sieci siedzi. Skanowanie portów." /></div><div class="K2FeedIntroText"><p>Wiemy już jak wykryć aktywnego hosta a więc przyszła pora by nabytą wiedzę poszerzyć. W artykule tym zajmiemy się skanowaniem lecz p&oacute;jdziemy trochę dalej, naszym zadaniem będzie wykrycie i zidentyfikowanie usług sieciowych jakie na zdalnym hoście działają. Tak więc na tapetę bierzemy skanowanie port&oacute;w.</p> </div><div class="K2FeedFullText"> <p>&nbsp;</p> <p>Pozw&oacute;l Czytelniku, że posłużę się o to taką analogią: W pierwszym kroku by m&oacute;c przejść do skanowania port&oacute;w należy wykryć czy dany host jest aktywny (czytaj włączony). Wykrycie takiego komputera jest jak znalezienie adresu domu. Gdy posiadamy adres domu możemy p&oacute;jść dalej i poszukać sposobu dostania się do tego domu. Aby wejść do środka można skorzystać z drzwi frontowych ale r&oacute;wnież poszukać wejścia od tyłu czy przez garaż. Co bardziej kreatywni stwierdzą, że do środka można dostać się przez okno czy otw&oacute;r przeznaczony dla zwierząt. Tak więc sam Czytelniku widzisz, że jest kilka dr&oacute;g by osiągnąć zamierzony cel. W przypadku komputer&oacute;w potencjalnymi sposobami uzyskania dostępu jest skorzystanie z otwartych port&oacute;w a w znalezieniu wejścia pomoże nam skanowanie port&oacute;w. Wyniki uzyskane dzięki przeprowadzonemu skanowaniu są potencjalnymi drzwiami przy wykorzystaniu, kt&oacute;rych wrota &bdquo;domu&rdquo; staną przed nami otworem. Tak więc port jest rodzajem &bdquo;drzwi&rdquo; przy pomocy, kt&oacute;rego możemy uzyskać dostęp do komputera.</p> <p>&nbsp;</p> <p>Tak więc proces skanowania sprowadza się do odnalezienia działających system&oacute;w a dodatkowo usług oferowanych przez te systemy.</p> <p>&nbsp;</p> <p>Proces skanowania możemy podzielić na trzy odrębne fazy tj.:</p> <ul> <li style="padding-left: 60px;">określenie czy dany system zdalny działa,</li> <li style="padding-left: 60px;">skanowanie i wykrycie używanych port&oacute;w,</li> <li style="padding-left: 60px;">skanowanie systemu pod kątem wykrycia luk, kt&oacute;re to w p&oacute;źniejszej fazie można wykorzystać jako cel ataku.</li> </ul> <p>&nbsp;</p> <p><strong>Proces wykrycia działającego systemu</strong> jak już wspomniałem został om&oacute;wiony więc tak by treści nie powtarzać odsyłam do wpisu - <a href="http://slow7.pl/item/110-co-w-sieci-siedzi-skanowanie-sieci-aktywne-hosty">http://slow7.pl/item/110-co-w-sieci-siedzi-skanowanie-sieci-aktywne-hosty</a></p> <p>&nbsp;</p> <p><strong>Skanowanie i wykrycie otwartych port&oacute;w</strong> sprowadza się do odnalezienie portu oraz identyfikacji usługi korzystającej z danego portu. Można to ująć w ten spos&oacute;b: port to nic innego jak otwarte okno bądź furtka dzięki, kt&oacute;rej inny komputer bądź program może ustanowić połączenie, tak by mogła nastąpić wymiana danych. Porty posiadają swoje unikalne numery a dodatkowo dzięki zastosowaniu idei port&oacute;w komputer może prowadzić wiele r&oacute;wnoległych kanał&oacute;w wymiany danych tak aby jeden proces nie musiał czekać na zakończenie innego. Dlatego r&oacute;wnocześnie możemy wysyłać/odbierać pocztę, pobierać pliki czy słuchać ulubionego radia internetowego.</p> <p>&nbsp;</p> <p>Niekt&oacute;re z port&oacute;w przyjęte są jako znane, oznacz to, że na portach tych działają określone usługi. Przykładem takiej usługi, kt&oacute;ra do swego działania wykorzystuje port o numerze 22 jest SSH. Usługa odpowiedzialna jest za nawiązanie bezpiecznych połączeń z hostem zdalnym. Każdy klient pr&oacute;bujący nawiązać ten typ połączenia wie, że aby m&oacute;c skomunikować się z innym komputerem należy użyć docelowego portu 22, gdyż na tym porcie nasłuchuje serwer SSH. Kolejnym przykładem jest użycie przeglądarki internetowej. Nawiązując połączenie z daną stroną internetową, po podaniu adresu, przeglądarka pr&oacute;buje ustanowić połączenie z serwerem WWW wykorzystując do tego zdalny port o numerze 80 gdyż na porcie tym serwer domyślnie oczekuje przychodzących połączeń. Na komputerze lokalnym zostaje otwarty losowy port, tak aby m&oacute;gł być zestawiony pełny kanał komunikacyjny. Oczywiście można zmienić domyślny port pracy serwera WWW lecz wtedy celem nawiązania połączenia trzeba się do niego odwołać.</p> <p>&nbsp;</p> <p>Numery port&oacute;w reprezentowane są przez liczby naturalne z zakresu od 0 do 65535.</p> <ul> <li style="padding-left: 60px;">wartości od 0 do 1023 przyjęto jako <strong>og&oacute;lnie znane</strong>, (ang. well known ports),</li> <li style="padding-left: 60px;"><strong>zarejestrowane porty</strong> (ang. registered ports) to porty o numerach od 1024 do 49151 Porty te są przewidziane dla usług, kt&oacute;re zwyczajowo korzystają z określonych port&oacute;w,</li> <li style="padding-left: 60px;">porty <strong>przydzielane dynamicznie</strong> (ang. dynamically allocated ports, r&oacute;wnież ephemeral ports) to porty o numerach od 49152 do 65535.</li> </ul> <p>&nbsp;</p> <p>Dodatkowo porty mogą być typu TCP bądź UDP (w zależności od użytego protokołu transportowego).</p> <p>&nbsp;</p> <p>Przykładami innych usług, kt&oacute;re korzystają ze standardowych numer&oacute;w port&oacute;w są te przedstawione poniżej:</p> <ul> <li style="padding-left: 60px;">DNS &ndash; 53 (TCP, UDP),</li> <li style="padding-left: 60px;">FTP &ndash; 20, przesyłanie danych (TCP),</li> <li style="padding-left: 60px;">FTP &ndash; 21, przesyłanie poleceń (TCP),</li> <li style="padding-left: 60px;">HTTP &ndash; 80, (TCP),</li> <li style="padding-left: 60px;">HTTPS &ndash; 443 (HTTP na SSL) (TCP),</li> <li style="padding-left: 60px;">IMAP &ndash; 143 (TCP),</li> <li style="padding-left: 60px;">POP3 &ndash; 110 (TCP),</li> <li style="padding-left: 60px;">SMTP &ndash; 25 (TCP),</li> <li style="padding-left: 60px;">Telnet &ndash; 23 (TCP).</li> </ul> <p>&nbsp;</p> <p>Oczywiście nie jest to pełna lista lecz jej niewielki wycinek. Listę port&oacute;w i wykorzystujące je usługi, znajdziesz tu: <a href="http://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xml">http://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xml</a></p> <p>&nbsp;</p> <p><strong>Skanowanie systemu pod kątem wykrycia luk</strong> ma za zadanie wykrycie i zidentyfikowanie wszelkich słabych punkt&oacute;w w usługach udostępnianych na określonych portach tak by mogły być one celem skutecznego ataku. Zagadnienie te w tym wpisie tylko &bdquo;liźniemy&rdquo; gdyż temat ten jest materiałem na kolejny artykuł.</p> <p>&nbsp;</p> <p>Aby m&oacute;c skutecznie wykorzystać skanowanie port&oacute;w należy dokładnie zrozumieć działanie protokoł&oacute;w TCP oraz UDP (często niedocenianego) dlatego też zanim przejdziemy dalej winien jestem parę sł&oacute;w wprowadzenia.</p> <p>&nbsp;</p> <p>Zaczniemy od protokołu TCP.</p> <p>&nbsp;</p> <p>Gł&oacute;wnymi zadaniami protokołu TCP jest stwierdzenie czy transmitowane dane są:</p> <ul> <li style="padding-left: 60px;">uszkodzone,</li> <li style="padding-left: 60px;">zagubione,</li> <li style="padding-left: 60px;">powielone,</li> <li style="padding-left: 60px;">dostarczone w nieodpowiedniej kolejności do odbiorcy.</li> </ul> <p>&nbsp;</p> <p>Protok&oacute;ł TCP używany jest wszędzie tam gdzie musi być zachowana integralność przesyłanych danych, należy do tzw. <strong>protokoł&oacute;w niezawodnych</strong>. Aby została zapewniona niezawodność transmisji i by dane dotarły w nie zmienionej formie stosuje się następujące mechanizmy:</p> <ul> <li style="padding-left: 60px;">każdy wysłany pakiet danych TCP jest numerowany,</li> <li style="padding-left: 60px;">każdy pakiet TCP potwierdzający odbi&oacute;r jest numerowany,</li> <li style="padding-left: 60px;">protok&oacute;ł wykorzystuje mechanizm pozytywnego potwierdzenia odbioru danych z retransmisją tzn. potwierdzany jest poprawny odbi&oacute;r danych,</li> <li style="padding-left: 60px;">stosowany jest zegar mierzący czas oczekiwania na potwierdzenie odbioru.</li> </ul> <p>&nbsp;</p> <p>Nagł&oacute;wek protokołu TCP został przedstawiony poniżej.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image1.png" alt="image1" width="700" height="233" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Budowa nagł&oacute;wka TCP rozpoczyna się od p&oacute;l w kt&oacute;rych przechowywane są wartości <strong>portu źr&oacute;dłowego</strong> oraz <strong>portu docelowego</strong>. Wartości te w połączeniu z danymi zawartymi w nagł&oacute;wku IP (adres IP źr&oacute;dłowy oraz adres docelowy) są podstawą identyfikacji połączenia.</p> <p>&nbsp;</p> <p>Pola <strong>numer sekwencyjny</strong> oraz <strong>numer potwierdzenia</strong> zawierają wartości, kt&oacute;re są niezbędne aby prowadzić skuteczną wymianę danych gdyż tylko w oparciu o numerowanie pakiet&oacute;w hosty prowadzące ze sobą komunikację wiedzą jakich pakiet&oacute;w mają się spodziewać, czy nadchodzą one w prawidłowej kolejności i czy przypadkiem, kt&oacute;ryś z pakiet&oacute;w nie zaginął. Więcej informacji i użyciu tych p&oacute;l już za chwilę.</p> <p>&nbsp;</p> <p>Wartość w polu <strong>długość nagł&oacute;wka</strong> zawiera informację o długości nagł&oacute;wka.</p> <p>&nbsp;</p> <p>W polu <strong>bity kodu </strong>znajduje się osiem jednobitowych p&oacute;l (zwanych r&oacute;wnież flagmi), kt&oacute;rych włączenie bądź wyłączenie sygnalizuje z jakim typem nagł&oacute;wka TCP mamy do czynienia. Co ważne włączenie jednego z p&oacute;l nie wyklucza włączenia innych. Zastosowanie poszczeg&oacute;lnych p&oacute;l zaprezentowano poniżej (opis ten jest skr&oacute;towy, gdyż do tematu flag będziemy wracać nie raz):</p> <ul> <li style="padding-left: 60px;">CWR (ang. Congestion Window Reduced) - ustawienie flagi informuje o zmniejszeniu szybkości transmisji,</li> <li style="padding-left: 60px;">ECE (ang. ECN Echo) - informacja o przeciążeniu,</li> <li style="padding-left: 60px;">URG (ang. Urgent) - pilne dane (rzadko używane),</li> <li style="padding-left: 60px;">ACK (ang. Acknowledgement) - numer potwierdzenia,</li> <li style="padding-left: 60px;">PSH (ang. Push) - otrzymane dane maja być przekazane tak szybko jak to możliwe (nieużywane, gdyż spos&oacute;b implementacji tej funkcji nie do końca spełnia niezawodność),</li> <li style="padding-left: 60px;">RST (ang. Reset) - zresetowanie połączenia na wskutek błędu,</li> <li style="padding-left: 60px;">SYN (ang. Synchronize) - flaga używana celem synchronizacji numer&oacute;w ISN,</li> <li style="padding-left: 60px;">FIN (ang. Finished) - flaga używana przy kończeniu połączenia sygnalizująca koniec wysyłania danych.</li> </ul> <p>&nbsp;</p> <p>W protokole TCP celem zapewnienia ciągłości komunikacji oraz optymalnej dla danego typu połączenia szybkości przesyłania danych zastosowano tzw. mechanizm <strong>przesuwnego okna pakiet&oacute;w</strong> (działanie tej funkcji wykracza poza ramy tego artykułu więc wybacz Czytelniku iż tematu nie rozwijam). Pole <strong>okno</strong> jest odpowiedzialne za ustawienie rozmiaru okna pakiet&oacute;w.</p> <p>&nbsp;</p> <p>Pole <strong>suma kontrolna</strong> jest odpowiedzialne za wyliczenie wartości bazującej na danych zawartych w nagł&oacute;wku TCP (acz nie tylko) a celem jest sprawdzenie czy dane podczas przesyłu nie uległy modyfikacji. Pole te jest wyliczane przez nadawcę a weryfikowane przez odbiorcę.</p> <p>&nbsp;</p> <p>Pole <strong>wskaźnik ważności</strong> ma znaczenie tylko przy ustawionej fladze URG i odznacza dane, kt&oacute;re mają być pilnie przekazane.</p> <p>&nbsp;</p> <p>W nagł&oacute;wku TCP mogą być definiowane r&oacute;żne parametry, kt&oacute;rych ustawienie ma wpływ na działanie protokołu TCP i tu r&oacute;wnież opis ich wszystkich stanowiłby zbyt dalekie zboczenie z tematu wpisu aczkolwiek opiszemy jedną. Najczęściej umieszczanym parametrem w polu <strong>opcje</strong> jest <strong>maksymalny rozmiar segmentu</strong> (tzw. MSS, ang. maximum segment size). Opcja ta odpowiedzialna jest za ustalenie rozmiaru największego segmentu jaki może zostać przesłany. Rozmiar segmentu ustalany jest podczas procesu nawiązywania połączenia.</p> <p>&nbsp;</p> <p>Ostatnie pole zawiera dane, choć zdarzają się pakiety, kt&oacute;re tych danych są pozbawione</p> <p>&nbsp;</p> <p>Po om&oacute;wieniu podstawowych parametr&oacute;w protokołu TCP czas przejść do pokazania ich zastosowania.</p> <p>&nbsp;</p> <p>Podczas nawiązywania połączenia pomiędzy dwoma urządzeniami i przy wykorzystaniu protokołu TCP w pierwszej kolejności musi nastąpić proces <strong>zestawienia połączenia</strong> (ang. Three-Way Handshake). Dopiero po dokonanym uzgodnieniu można przejść do właściwej wymiany informacji.</p> <p>&nbsp;</p> <p>Cały proces negocjacji rozpoczyna się od wysłania na zdefiniowany adres IP i do określonego portu pakietu z ustawioną <strong>flagą SYN</strong>. Pakiet ten wysyła host nawiązujący połączenie. Jeśli host docelowy jest uruchomiony i usługa korzystająca z danego portu nasłuchuje na tym porcie w kierunku hosta ustanawiającego połączenie zostaje odesłany pakiet z ustawioną <strong>flagą SYN/ACK</strong>. Po otrzymaniu takiego pakietu w kierunku hosta z kt&oacute;rym nawiązujemy połączenie zostaje wysłane potwierdzenie w postaci pakietu z włączoną <strong>flagą ACK</strong>.</p> <p>&nbsp;</p> <p>Proces nawiązywania połączenia TCP przedstawia poniższy rysunek, komputer Host jest inicjującym połączenie z Serwerem.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image2.png" alt="image2" width="700" height="225" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Dociekliwy Czytelnik m&oacute;głby zadać pytanie - Ale jak to się dzieje, że komputer rozr&oacute;żnia poszczeg&oacute;lne sesje TCP, przecież w danej chwili może być nawiązanych kilka sesji? Rozr&oacute;żnienie sesji TCP opiera się na wykorzystaniu <strong>numer&oacute;w sekwencyjnych</strong> oraz <strong>numer&oacute;w potwierdzenia</strong>. Numer sekwencyjny często jest określany jako <strong>ISN</strong> zaś numer potwierdzenia jako <strong>ACK</strong>.</p> <p>&nbsp;</p> <p>Jak już wiesz Czytelniku aby sesja TCP mogła zostać nawiązana w pierwszej kolejności zostaje wysłany pakiet z ustawioną flagą SYN. Pakiet ten został pokazany na rysunku poniżej. Prześledzimy sesję nawiązaną pomiędzy hostem o adresie IP 192.168.1.140 a komputerem o adresie IP 192.168.1.205 na przykładzie ruchu przechwyconego za pomocą Wireshark-a.</p> <p>&nbsp;</p> <p>Pakiet SYN (punkt 1) z hosta 192.168.1.140 (port 1074) zostaje wysłany w kierunku komputera 192.168.1.205 na port 80 (sesja WWW). Numer sekwencyjny został ustalony na 2831575758 (punkt 2). Numer sekwencyjny ISN jest losową liczbą z przedziału od 0 do 2^32-1.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image3.png" alt="image3" width="700" height="564" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Host 192.168.1.205 na otrzymany pakiet SYN odpowiada pakietem z ustawioną flagą SYN/ACK (punkt 4). Pakiet ten zostaje odesłany z źr&oacute;dłowego portu 80 na docelowy port 1074 w kierunku hosta 192.168.1.140 (punkt 1). Host w pakiecie SYN/ACK umieszcza sw&oacute;j własny numer sekwencyjny: 1854235621 (punkt 2) ale dodatkowo zostaje jeszcze umieszczony tzw. numer potwierdzenia Numer ten ma wartość o jeden większą niż numer sekwencyjny otrzymany w pakiecie SYN - 2831575759 (punkt 3).</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image4.png" alt="image4" width="700" height="564" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Ostatnim pakietem jest pakiet ACK (punkt 4), kt&oacute;ry jest odpowiedzią hosta 192.168.1.140 na otrzymany pakiet SYN/ACK (punkt 1). W pakiecie tym numer sekwencyjny zostaje ustalony na wartość o jeden większą w stosunku do pierwszego pakietu, kt&oacute;rym był pakiet SYN - 2831575759 (punkt 2) zaś numer potwierdzenia stanowi wartość o jeden większą niż wartość numeru sekwencyjnego otrzymanego od hosta192.168.1.205 w pakiecie SYN/ACT - 1854235622 (punkt 3).</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image5.png" alt="image5" width="700" height="564" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Proces ustanowienia sesji TCP zakończył się sukcesem. Nasz schemat ustanawiania sesji TCP możemy wzbogacić o dodatkowe informacje.</p> <p><img src="http://slow7.pl/images/stories/siec/skanowanieportow/image6.png" alt="image6" width="700" height="261" style="display: block; margin-left: auto; margin-right: auto;" />&nbsp;</p> <p>&nbsp;</p> <p>Po tym etapie następuje transmisja danych, kt&oacute;ra r&oacute;wnież opiera się na przekazywaniu pomiędzy hostami pakiet&oacute;w z odpowiednimi wartościami numer&oacute;w sekwencyjnych i numer&oacute;w potwierdzenia.</p> <p>&nbsp;</p> <p>Po przesłaniu wszystkich danych komunikacja musi się zakończyć. Zakończenie sesji może odbyć się na dwa sposoby. Jeden należy do sposob&oacute;w &bdquo;eleganckich&rdquo; i polega na wykorzystaniu czterech pakiet&oacute;w wraz z ustawioną flagą FIN. Drugi zaś np. na skutek nieoczekiwanego błędu (wyłączenie hosta, błędna konfiguracja) wykorzystuje pakiety TCP z ustawioną flagą RST.</p> <p>&nbsp;</p> <p>Użycie pierwszego ze sposob&oacute;w rozpoczyna się od wysłania pakietu z ustawionymi flagami FIN i ACK (pakiet wysyła host chcący zakończyć sesję). Komputer do kt&oacute;rego trafia pakiet odpowiada pakietem ACK a dodatkowo wysyła własny pakiet w kt&oacute;rym ustawione są flagi FIN i ACK. Host inicjujący zamknięcie odpowiada pakietem ACK.</p> <p>&nbsp;</p> <p>Poniżej na zrzucie pokazano zamknięcie sesji TCP przy wykorzystaniu pakietu FIN.</p> <p>&nbsp;</p> <p>Host 192.168.1 .140 inicjuje zamknięcie w tym celu do komputera o adresie 192.168.1.205 zostaje wysłany pakiet FIN/ACK. Host 192.168.1.205 odpowiada dwoma pakietami &ndash; pakietem ACK oraz własnym pakietem FIN/ACK. Po otrzymaniu od hosta 192.168.1.205 pakietu FIN/ACK komputer 192.168.1 .140 potwierdza fakt zamknięcia sesji pakietem ACK.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image7.png" alt="image7" width="700" height="368" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Zwr&oacute;ć uwagę Czytelniku na wartości numer&oacute;w sekwencyjnych i potwierdzenia. Jak można stwierdzić schemat numeracji opiera się na tej samej zasadzie jaka została wykorzystana w przypadku nawiązywania połączenia. Schematycznie proces został przedstawiony na rysunku poniżej.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image8.png" alt="image8" width="700" height="261" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Drugi ze sposob&oacute;w jak zostało wspomniane wykorzystuje pakiet TCP z ustawioną flagą RST. Wysłanie takiego pakietu informuje hosta o zerwaniu połączenia bądź odmowie jego nawiązania.</p> <p>&nbsp;</p> <p>Poniżej przedstawiono pakiet wysłany od hosta 192.168.1.140 kończącego sesję TCP na wskutek wystąpienia błędu. Pakiet ma ustawione flagi RST oraz ACK. Wysłanie pakietu kończy komunikację pomiędzy komputerami 192.168.1.140 a 192.168.1.205.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image9.png" alt="image9" width="700" height="448" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Podczas skanowania będziemy mieli do czynienia z jeszcze jednym protokołem a mianowicie z protokołem UDP (ang. User Datagram Protocol). Informacje o tym protokole znajdziesz w dalszej części wpisu gdy przejdziemy do przykład&oacute;w użycia go podczas skanowania.</p> <p>&nbsp;</p> <p><strong>Wykrywanie systemu</strong></p> <p>&nbsp;</p> <p>Naszą przygodę ze skanowaniem port&oacute;w rozpoczniemy od zaprezentowania sposob&oacute;w wykrycia skanowanego systemu. Tak zwany <strong>fingerprinting systemu</strong> jest metodą, kt&oacute;ra pozwoli nam poznać wersję skanowanego systemu. Można by zapytać &ndash; Jakie korzyści z posiadania takiej informacji będziemy mieli? Ot&oacute;ż poznanie wersji systemu pomoże nam w doborze skutecznych technik skanowania. Dob&oacute;r odpowiedniej metody skanowania w zależności od naszego celu (skanowanego systemu) będzie łatwiejszy i da bardziej wymierny efekt w zdobyciu poszukiwanych informacji. M&oacute;wiąc inaczej wyb&oacute;r danej metody skanowania zależny jest od wykrytego systemu operacyjnego, gdyż po co wykorzystać dany rodzaj skanu gdy z g&oacute;ry wiadomo, że w danym systemie on nie zadziała. Tak więc system operacyjny wymusza na nas zastosowanie określnych rozwiązań.</p> <p>&nbsp;</p> <p>Identyfikacja systemu operacyjnego możliwa jest dzięki r&oacute;żnej interpretacji wytycznych zawartych w dokumentach RFC. Oznacza to, że dani producenci inaczej w swoich systemach operacyjnych implementują rozwiązania związane z obsługą protokoł&oacute;w IP, TCP czy UDP. Wychwycenie tych r&oacute;żnic (często bardzo subtelnych) umożliwia narzędziom wykorzystywanym do skanu zidentyfikowanie skanowanego systemu.</p> <p>&nbsp;</p> <p>Poniżej przykład r&oacute;żnej implementacji początkowej wartości pola TTL w nagł&oacute;wku IP oraz rozmiaru zastosowanego okna TCP. Por&oacute;wnanie tych informacji z dużym prawdopodobieństwem da nam odpowiedź o typie systemu operacyjnego.</p> <p style="text-align: justify;">&nbsp;</p> <table border="1" style="width: 599px; border-collapse: collapse; margin-left: auto; margin-right: auto;" cellspacing="0" cellpadding="0"> <tbody> <tr style="height: 36.75pt;"> <td style="border: 1pt solid windowtext; padding: 0cm 5.4pt; height: 36.75pt;" valign="top"><strong>System operacyjny</strong></td> <td style="width: 116.45pt; border-width: 1pt 1pt 1pt medium; border-style: solid solid solid none; border-color: windowtext windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 36.75pt;" valign="top" width="155"> <p style="margin-bottom: 6pt; text-align: center; line-height: 115%;"><strong>Początkowa wartość </strong></p> <p style="margin-bottom: 6pt; text-align: center; line-height: 115%;"><strong>pola TTL</strong></p> </td> <td style="width: 116.45pt; border-width: 1pt 1pt 1pt medium; border-style: solid solid solid none; border-color: windowtext windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 36.75pt;" valign="top" width="155"> <p style="margin-bottom: 6pt; text-align: center; line-height: 115%;"><strong>Rozmiar okna </strong></p> <p style="margin-bottom: 6pt; text-align: center; line-height: 115%;"><strong>nagł&oacute;wka TCP</strong></p> </td> </tr> <tr style="height: 21pt;"> <td style="border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 21pt;" valign="top"><strong>Linux (kernel 2.4 and 2.6)</strong></td> <td style="width: 116.45pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 21pt;" valign="top" width="155">64</td> <td style="width: 116.45pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 21pt;" valign="top" width="155">5840</td> </tr> <tr style="height: 21pt;"> <td style="border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 21pt;" valign="top"><strong>FreeBSD</strong></td> <td style="width: 116.45pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 21pt;" valign="top" width="155">64</td> <td style="width: 116.45pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 21pt;" valign="top" width="155">65535</td> </tr> <tr style="height: 21pt;"> <td style="border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 21pt;" valign="top"><strong>Windows XP</strong></td> <td style="width: 116.45pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 21pt;" valign="top" width="155">128</td> <td style="width: 116.45pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 21pt;" valign="top" width="155">65535</td> </tr> <tr style="height: 21.75pt;"> <td style="border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 21.75pt;" valign="top"><strong>Windows 7, Vista and Server 2008</strong></td> <td style="width: 116.45pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 21.75pt;" valign="top" width="155">128</td> <td style="width: 116.45pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 21.75pt;" valign="top" width="155">8192</td> </tr> <tr style="height: 21.75pt;"> <td style="border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 21.75pt;" valign="top"><strong>Cisco Router (IOS 12.4)</strong></td> <td style="width: 116.45pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 21.75pt;" valign="top" width="155">255</td> <td style="width: 116.45pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 21.75pt;" valign="top" width="155">4128</td> </tr> </tbody> </table> <p style="text-align: justify;">&nbsp;</p> <p>Inne typy analizowanych danych opierają się m.in. o:</p> <ul> <li style="padding-left: 60px;"><strong>Por&oacute;wnanie numer&oacute;w ISN</strong> (ang. Initial Sequence Number) &ndash; wartość ISN jest wykorzystywana przy zestawianiu sesji TCP. Numer ten z reguły jest losowy lecz niekt&oacute;re z system&oacute;w preferują bardziej lub mniej pewne wartości. Analiza wzorca numeru pozwala na określenie typu systemu.</li> <li style="padding-left: 60px;"><strong>Wykorzystanie pakiet&oacute;w TCP</strong> &ndash; celem weryfikacji systemu można wysłać w kierunku celu specjalnie spreparowane pakiety TCP. Pakiety te mają ustawione nietypowe flagi protokołu TCP, kt&oacute;re nie są przewidziane w specyfikacji dokument&oacute;w RFC. Analizując otrzymaną odpowiedź można wykonać pewne założenia odnośnie systemu z kt&oacute;rego zostały wysłane. Np. pakiet TCP z ustawioną flagą FIN jest wysyłany do otwartego portu, zgodnie z dokumentacją RFC odpowiedzią na tak otrzymaną informację powinien być brak odpowiedzi lecz systemy z rodziny Windows na odebrany pakiet odpowiadają pakietem z ustawioną flagą FIN/ACK.</li> <li style="padding-left: 60px;"><strong>Wykorzystanie komunikat&oacute;w ICMP</strong> &ndash; podczas wystąpienia błęd&oacute;w protokołu ICMP, dane systemy w odpowiedziach odsyłają r&oacute;żną liczbę danych, analiza otrzymanych danych definiuje system z kt&oacute;rego zostały wysłane.</li> <li style="padding-left: 60px;"><strong>Zastosowanie bitu &bdquo;nie dziel na fragmenty&rdquo;</strong> &ndash; bit ten jest wykorzystywany w komunikacji TCP celem zwiększenia wydajności, lecz nie jest on stosowany przez wszystkie systemy operacyjne, weryfikacja bitu pozwala zawęzić liczbę system&oacute;w operacyjnych,</li> <li style="padding-left: 60px;"><strong>Zaawansowane opcje protokołu TCP</strong> &ndash; protok&oacute;ł TCP w r&oacute;żnych odstępach czasu podlegał modyfikacjom i usprawnieniom, implementacja i ocena przyjętych rozwiązań (np. maksymalna wielkość segmentu, blok niewykonywalny czy wsp&oacute;łczynnik skalowania okna) pozwala na wytypowanie systemu zdalnego.</li> </ul> <p>&nbsp;</p> <p>Przedstawione i opisane mechanizmy oczywiście nie wyczerpują tematu identyfikacji używanego systemu operacyjnego lecz mają za zadanie ukazanie jak wiele metod może zostać użytych aby mieć pewność iż cel ataku zostanie poprawnie rozpoznany.</p> <p>&nbsp;</p> <p>Pierwszym z narzędzi jakie chciałbym zaprezentować jest już wcześniej opisywany Nmap. Ten wszechstronny program nie tylko pozwala nam na odkrycie aktywnych host&oacute;w ale r&oacute;wnież przy wykorzystaniu pełni jego możliwości możemy wykonać proces identyfikacji systemu operacyjnego oraz proces skanowania port&oacute;w (w wpisie tym często a nawet bardzo często będziemy z tego narzędzia korzystać).</p> <p>&nbsp;</p> <p>Aby zidentyfikować system zdalny należy posłużyć się poleceniem: <strong>nmap -O &lt;adres_hosta&gt;</strong> Po wydaniu komendy uzyskamy informację o systemie operacyjnym &ndash; polecenie przyjmie postać: <strong>nmap -O 192.168.1.140</strong>. Jak widać poniżej system zdalny został określony jako Windows 2000 bądź Windows XP. Opr&oacute;cz identyfikacji systemu uzyskamy r&oacute;wnież informację o otwartych portach &ndash; 139, 445, 3389</p> <p>&nbsp;</p> <p>Otrzymane wyniki potwierdzają, że mamy do czynienia z systemem Windows ponieważ opr&oacute;cz występujących sprzeczności w implementacji protokoł&oacute;w, identyfikację systemu możemy także oprzeć o analizę aktywnych numer&oacute;w port&oacute;w. Gdyż w systemach operacyjnych wykorzystywane porty stale się powtarzają. Wykryte porty 139, 445 a w szczeg&oacute;lności 3389 są przynależne systemowi Windows. W przypadku systemu Linux będziemy mieli do czynienia z innym zestawem charakterystycznych dla tego systemu wartości numer&oacute;w port&oacute;w.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image10.png" alt="image10" width="700" height="443" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Spr&oacute;bujmy wykonać skan na innym systemie operacyjnym.</p> <p>&nbsp;</p> <p>Tym razem po wydaniu polecenia uzyskujemy informację, że mamy do czynienia z systemem Windows 7, Windows 8, Windows Vista bądź Windows 2008.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image11.png" alt="image11" width="700" height="688" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>No to kolejny przykład, tym razem system został określony jednoznacznie jako Windows 10.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image12.png" alt="image12" width="700" height="513" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>I ostatni przykład. Tym razem skanowany system zdalny został określony jako Linux w wersji 2.6.X (gdzie X od 9 do 33).</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image13.png" alt="image13" width="700" height="731" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Dokładniejsze wyniki uzyskamy jeśli skorzystamy z funkcji włączenia&nbsp;detekcji&nbsp;OS&nbsp;i&nbsp;wersji&nbsp;usług. Aby wykonać tę operację należy wydać polecenie: <strong>nmap -A &lt;adres_hosta&gt; </strong>Poniżej przykład w kt&oacute;rym względem hosta 192.168.1.140 ponownie zostaje wydane polecenie celem identyfikacji systemu operacyjnego. Przy wykorzystaniu opcji <strong>-O</strong> system został określony jako Windows 2000 bądź Windows XP zaś przy wykorzystaniu flagi <strong>-A</strong> system został zawężony do Windows XP z zainstalowanym SP3 (co w 100% jest prawdą).</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image14.png" alt="image14" width="700" height="513" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Wydanie komendy detekcji systemu i usług względem komputera 192.168.1.205 (informacje uzyskane dzięki wcześniejszemu skanowaniu to: Windows 7, Windows 8, Windows Vista bądź Windows 2008) r&oacute;wnież zawęża dane &ndash; wykryty system to Windows 7 (poznajemy r&oacute;wnież dokładną wersję systemu). Dodatkowo opr&oacute;cz poznania wersji systemu Windows nasza wiedza o skanowanym hoście zostaje poszerzona m.in. o: nazwę komputera, tryb pracy sieciowej (domena, grupa robocza) czy informację o sposobie logowania. Zaprezentowane poniżej wyniki zostały zawężone do informacji dotyczących wersji systemu.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image15.png" alt="image15" width="700" height="198" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Użycie detekcji systemu odnośnie hosta 192.168.1.200 dostarcza nam szeregu informacji o typie usług działających na określonych portach (wyniki zostały zawężone).</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image16.png" alt="image16" width="700" height="633" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Mechanizm wykrywania systemu zdalnego wykorzystywany przez narzędzie Nmap opiera się na wysyłaniu do badanego systemu odpowiednio przygotowanych żądań i analizie uzyskanych odpowiedzi. Do analizy uzyskanych odpowiedzi jest wykorzystywana baza sygnatur. Baza sygnatur programu Nmap jest przechowywana w pliku <strong>nmap-os-db</strong> bądź <strong>nmap-os-fingerprints</strong>.</p> <p>&nbsp;</p> <p>Na podobnej zasadzie analizę systemu operacyjnego będą przeprowadzały narzędzia om&oacute;wione w dalszej części wpisu. Pierwszym (opr&oacute;cz Nmap-a) narzędziem, kt&oacute;re chciałbym przedstawić jest <strong>xProbe2</strong>.</p> <p>&nbsp;</p> <p>Aby za pomocą tego programu określić system zdalny należy posłużyć się poleceniem: <strong>xprobe2 &lt;adres_hosta&gt;</strong></p> <p>&nbsp;</p> <p>Narzędzie wykorzystamy odnośnie znanego nam już hosta 192.168.1.140 Sprawdźmy zatem czy wyniki uzyskane dzięki xProbe2 pokrywają się z wynikami uzyskanymi dzięki użyciu Nmap-a.</p> <p>&nbsp;</p> <p>Wydanie komendy identyfikującej system określa, że mamy do czynienia z systemem Mac OS bądź z produktami firmy HP.</p> <p>&nbsp;</p> <p>Uzyskany wynik całkowicie nie pokrywa się z danymi jakie uzyskaliśmy po uruchomieniu Nmap-a. Taki stan rzeczy jest spowodowany faktem iż narzędzie te już od dość dłuższego czasu nie jest rozwijane.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image17.png" alt="image17" width="700" height="655" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>By uściślić wyniki otrzymane w poprzednim kroku spr&oacute;bujmy użyć narzędzia xProbe2 w odniesieniu do zdefiniowanego portu. Aby narzędzie xProbe2 wykryło system zdalny poprzez analizę danych otrzymanych z określonego portu należy w definicji polecenia użyć przełącznika <strong>-T &lt;numer_portu</strong>&gt;.</p> <p>&nbsp;</p> <p>Przypuśćmy, że podejrzewamy iż skanowany system będzie należał do system&oacute;w z rodziny Windows. Dlatego też doskonałym wyborem sprawdzanego numeru portu będzie port o numerze 3389 (port odpowiedzialny za realizację połączeń Pulpitu zdalnego - rozwiązanie stosowane tylko w systemie Windows). Zatem polecenie przyjmie postać: <strong>xprobe2&nbsp;192.168.1.140 -T3389</strong></p> <p>&nbsp;</p> <p>Jak widać poniżej analizowany system zdalny zostaje określony jako Windows.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image18.png" alt="image18" width="700" height="673" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Wyniki uzyskane dzięki narzędziu xProbe2 względem hosta o adresie IP 192.168.1.200 identyfikują system jako Linux w wersji 2.6.X (podobnie jak Nmap).</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image19.png" alt="image19" width="700" height="643" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Oba zaprezentowane do tej pory narzędzia opierały się na tzw. <strong>aktywnym fingerprintigu stosu</strong> czyli wersja systemu zdalnego została ustalona dzięki przesłaniu w kierunku celu specjalnie przygotowanych pakiet&oacute;w. Analiza otrzymanych odpowiedzi wraz z ich por&oacute;wnaniem z bazą sygnatur pozwala odpowiedzieć na pytanie z jakim systemem mamy do czynienia.</p> <p>&nbsp;</p> <p>Przeciwieństwem metody aktywnej jest <strong>pasywne</strong> zdobycie informacji o typie zainstalowanego systemu. Metoda ta charakteryzuje się brakiem jakiejkolwiek interakcji z badanym hostem. Określenie systemu zdalnego odbywa się tylko na podstawie analizy pakiet&oacute;w pojawiających się w sieci. Metoda ta nie jest tak precyzyjna jak aktywna lecz zastosowanie jej eliminuje szanse wykrycia wykonywanego skanu.</p> <p>&nbsp;</p> <p>Jednym z narzędzi jakie możemy wykorzystać przy pasywnym określaniu systemu jest program <strong>p0f</strong>.</p> <p>&nbsp;</p> <p>Użycie narzędzia sprowadza się tylko do wydania polecenia: <strong>p0f</strong> Po uruchomieniu programu, narzędzie rozpoczyna analizę otrzymywanych pakiet&oacute;w. Aby metoda pasywna zdała egzamin należy zadbać o odpowiednią ilość danych do analizy. Dane te możemy dostarczyć np. poprzez wykonanie ataku MITM (ang. Man in the middle &ndash; atak polegający na podsłuchu a czasem modyfikacji wiadomości przesyłanych pomiędzy dwiema stronami bez ich wiedzy), fizycznym zainstalowaniu TAP-a sieciowego (urządzenie odpowiedzialne za klonowanie sygnału sieciowego i przesłanie go do atakującego, możliwe jest użycie zwykłego HUB-a lecz wtedy obniżymy przepustowość łącza do 10Mb/s i dodatkowo dochodzi problem z kolizją pakiet&oacute;w) czy wykorzystaniem portu lustrzanego (opcja kopiowania pakiet&oacute;w odbieranych/wysyłanych przez określony port przełącznika do innego portu).</p> <p>&nbsp;</p> <p>Poniżej na zrzucie efekt użycia narzędzia p0f (aplikacja dostępna w systemie Linux). Po uruchomieniu programu zostały wykryte dwa systemy zdalne &ndash; host o adresie 192.168.1.30 korzysta z systemu Linux 3.11 lub nowszego natomiast host 192.168.1.140 to system Windows.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image20.png" alt="image20" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Podobnym programem potrafiącym określić system zdalny poprzez pasywną analizę pakiet&oacute;w jest <strong>NetworkMiner</strong>. NetworkMiner to tzw. sniffer czyli narzędzie służące do przechwytywania pakiet&oacute;w pojawiających się w sieci. Aplikacja potrafi je analizować i na tej podstawie definiować typ systemu (program ma więcej możliwości m.in. potrafi określić otwarte porty, przechwycić pojawiające się pliki czy dane uwierzytelniające - nazwy użytkownik&oacute;w oraz hasła). Aplikacja do działania wykorzystuje graficzny interfejs użytkownika i dla odmiany jest dostępna w systemie Windows.</p> <p>&nbsp;</p> <p>Poniżej na rysunku zaprezentowano efekt pracy programu. Po kr&oacute;tkiej chwili od uruchomienia, narzędzie identyfikuje host 192.168.1.140 jako Windows (co jak wiemy po efektach pracy innych narzędzi jest wynikiem prawidłowym).</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image21.png" alt="image21" width="700" height="572" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Aplikację NetworkMiner pr&oacute;cz systemu Windows możemy r&oacute;wnież uruchomić w systemach Linux, MacOS czy FreeBSD - strona programu: <a href="http://www.netresec.com/?page=NetworkMiner">http://www.netresec.com/?page=NetworkMiner</a></p> <p>&nbsp;</p> <p><strong>Skanowanie port&oacute;w</strong></p> <p>&nbsp;</p> <p>Teraz jak już wiemy jak zidentyfikować system operacyjny zdalnego hosta możemy przejść do om&oacute;wienia metod wykorzystywanych w procesie skanowania port&oacute;w.</p> <p>&nbsp;</p> <p>Rozpoczniemy od podstawowej operacji jaką jest skanowanie TCP. Ten rodzaj skanu należy do najczęściej wykorzystywanych metod. Skanowanie te w pierwszej kolejności wykonamy przy użyciu Nmap-a. Nmap przeprowadza proces pełnego nawiązania połączenia a następnie zamyka połączenie. Proces ten wykonywany jest odnośnie każdego portu.</p> <p>&nbsp;</p> <p>Skanowanie inicjujemy poprzez wydanie polecenia: <strong>nmap -sT &lt;adres_IP&gt;</strong> Wydanie komendy spowoduje wykonanie skanowania TCP (opcja <strong>-sT </strong>&ndash; opcja <strong>-s</strong> wskazuje na typ skanowania natomiast <strong>-T</strong> oznacza skanowanie TCP) hosta o zdefiniowanym adresie IP. Skan wielu host&oacute;w przeprowadzamy poprzez definicję początkowego i ostatniego adresu IP np. <strong>nmap -sT 192.168.0.1-254</strong> bądź opcjonalnie gdy skanowana jest cała podsieć korzystamy z notacji CIDR (definicja adresu sieci i długości maski) - <strong>nmap -sT 192.168.0.1/24</strong> Podczas definicji adres&oacute;w IP host&oacute;w, kt&oacute;re będą podlegać skanowaniu możemy za pomocą opcji: <strong>--exclude &lt;adres_IP&gt;</strong> wykluczyć komputery - hosty zdalne o zdefiniowanych adresach IP nie będą skanowane. Użycie np. takiej komendy: <strong>nmap 192.168.0.0/24 --exclude 192.168.0.10,192.168.0.24</strong> spowoduje przeskanowanie wszystkich host&oacute;w należących do podsieci 192.168.0.0/24 za wyjątkiem adres&oacute;w IP: 192.168.0.10 oraz 192.168.0.24</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image22.png" alt="image22" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Jak widać powyżej udało nam się przeskanować hosta o adresie IP 192.168.1.110 i wykryć na tym hoście otwarte porty. Czas skanowania wyni&oacute;sł niecałe 5 sekund. Niestety nie jest to komplet informacji gdyż zostało przeskanowanych tylko tysiąc najczęściej używanych port&oacute;w.</p> <p>&nbsp;</p> <p>Aby wykonać pełne skanowanie wszystkich port&oacute;w należy do polecenia dodać parametr: <strong>-p-</strong></p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image23.png" alt="image23" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Możliwe jest przeprowadzenie skanowania wybranego portu bądź zakresu port&oacute;w. Aby wykonać skanowanie jednego portu po fladze <strong>-p </strong>należy zdefiniować docelowy port bądź grupę port&oacute;w. Jeżeli zaś chcemy wykonać skan określonych, niekolejnych port&oacute;w to ich numery oddzielone przecinkami podajemy r&oacute;wnież po opcji <strong>-p</strong>. Zakres port&oacute;w definiujemy za pomocą znaku: <strong>-</strong> podając pierwszy i ostatni numer portu.</p> <p>&nbsp;</p> <p>Na zrzucie poniżej ukazano kilka przykład&oacute;w użycia flagi <strong>-p</strong>.</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">1 - skanowanie TCP pojedynczego portu 3389,</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">2 - skanowanie TCP portu 3389 oraz 139,</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">3 - skanowanie TCP zakresu port&oacute;w - od 100 do 200.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image24.png" alt="image24" width="700" height="453" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Do tej pory skanowaniu podlegały tylko porty korzystające z protokołu TCP, a jak już Czytelniku wiesz (lecz temat nie został jeszcze dokładnie om&oacute;wiony) pr&oacute;cz protokołu TCP istnieje r&oacute;wnież UDP. Trochę może wyprzedzam temat lecz to co chciałbym pokazać to to, iż przy wykorzystaniu flagi <strong>-p</strong> (z dodatkowymi opcjami) można definiować r&oacute;żne metody skanu, kt&oacute;re będą stosowane względem określonych port&oacute;w.</p> <p>&nbsp;</p> <p>Na zrzucie poniżej za pomocą komendy: <strong>nmap -sU -sT -p U:53,11,137,T:3389 192.168.1.205</strong> zostało uruchomione skanowanie określonych numer&oacute;w port&oacute;w lecz co ważne w procesie tym do skanowania wykorzystywany jest zar&oacute;wno protok&oacute;ł UDP jaki i TCP.</p> <p>&nbsp;</p> <p>Wytłumaczmy zatem wydane polecenie:</p> <ul> <li style="padding-left: 60px;">opcja <strong>-sU</strong> - włącza skanowanie UDP,</li> <li style="padding-left: 60px;">opcja <strong>-sT</strong> - włącza skanowanie TCP,</li> <li style="padding-left: 60px;">flaga <strong>-p</strong> wraz z opcjami <strong>U:53,11,137,T:3389 </strong>definiuje skanowane porty, przy czym port 53, 11 oraz 137 skanowany jest przy wykorzystaniu protokołu UDP (wykorzystanie parametru U) zaś port 3389 podlega skanowaniu z wykorzystaniem TCP (wykorzystanie parametru T).</li> </ul> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image25.png" alt="image25" width="700" height="179" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Opcją, kt&oacute;rą bardzo często wykorzystuje się przy skanowaniu jest flaga <strong>-PN</strong>. Należy mieć na uwadze, że w procesie odkrywania aktywnych host&oacute;w może zdarzyć się sytuacja w kt&oacute;rej host zdalny będzie włączony lecz nasze skanowanie faktu tego nie potwierdzi. Użycie opcji <strong>-PN</strong> nakazuje Nmap-owi wykonanie skanowania port&oacute;w tak jakby host był włączony i aktywny. Np wydanie polecenia: <strong>nmap -sT -p- -PN 192.168.1.1-10 </strong>spowoduje wykonanie skanowania TCP host&oacute;w od adresu IP 192.168.1.1 do 192.168.1.10 tak jakby hosty te były aktywne a dodatkowo proces skanowania obejmie wszystkie porty. Pominięty jest proces wykrywania aktywnych host&oacute;w.</p> <p>&nbsp;</p> <p>A co w sytuacji w kt&oacute;rej musimy wykonać proces wykrywania aktywnych port&oacute;w dla host&oacute;w, kt&oacute;rych adres IP nie są ułożone kolejno? Dobrym rozwiązaniem tego problemu jest umieszczenie adres&oacute;w IP w osobnym pliku tekstowym (jeden adres IP na wiersz pliku) i zaimportowanie tak przygotowanej listy do narzędzi Nmap. Import dokonujemy przy wykorzystaniu opcji: <strong>-iL &lt;ścieżka_do_pliku&gt;</strong>.</p> <p>&nbsp;</p> <p>Poniżej pokazano przykład wykonania skanu wszystkich port&oacute;w dw&oacute;ch komputer&oacute;w, kt&oacute;rych adresy IP zostały zapisane w pliku tekstowym: <strong>nmapscan.txt</strong>. Skanowanie zostało wywołane za pomocą komendy: <strong>nmap -sT -p- -iL nmapscan.txt</strong></p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image26.png" alt="image26" width="700" height="541" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Pliku tekstowego z zdefiniowanymi adresami IP możemy także użyć do określenia adres&oacute;w IP host&oacute;w, kt&oacute;re nie będą podlegały skanowaniu. Wydanie komendy: <strong>nmap -iL nmapscan.txt --excludefile nieskanuj.txt</strong> spowoduje wykonie skanowania host&oacute;w kt&oacute;rych adresy IP zostały zapisane w pliku <strong>nmapscan.txt </strong>za wyjątkiem tych określonych w pliku <strong>nieskanuj.txt</strong></p> <p>&nbsp;</p> <p>Zatrzymajmy się jeszcze chwilę nad powyższym zrzutem. Analizując listę otwartych port&oacute;w na hoście 192.168.1.205 można zauważyć iż część działających usług nie została rozpoznana (porty z zakresu od 49152 do 49157 oraz 49166). Nmap opr&oacute;cz skanowania port&oacute;w potrafi r&oacute;wnież przeprowadzić operację skanowania wersji usług. Skanowanie te polega na wysłaniu w kierunku badanego hosta pr&oacute;bek, kt&oacute;rych zadaniem jest bardziej dokładne zidentyfikowanie usługi działającej na określonym porcie. Wywołanie skanowania wersji wywołujemy za pomocą flagi: -<strong>sV</strong></p> <p>&nbsp;</p> <p>Poniżej przedstawiono użycie opcji <strong>-sV </strong>odnośnie niezidentyfikowanych port&oacute;w hosta 192.168.1.205 a ponieważ skan ujawnił otwarty port 80 dodatkowo został przeprowadzony skan tego portu w celu uzyskania bardziej szczeg&oacute;łowych informacji na temat działającego serwera www. Komenda uruchamiająca proces skanowania wersji przybierze postać: <strong>nmap -sV -p49152-49157,80,49166 192.168.1.205</strong></p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image27.png" alt="image27" width="700" height="373" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Analizując informacje uzyskane po wydaniu polecenia dochodzimy do wniosku iż na portach tych działają usługi systemu Windows. Zaś serwer WWW został zidentyfikowany jako IIS w wersji 7.5. Co odpowiada stanu faktycznemu. Poniżej zrzut z skanowanego hosta.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/skanowanieportow/image28.png" alt="image28" width="700" height="473" style="display: block; margin-left: auto; margin-right: auto;" />&nbsp;</p> <p>&nbsp;</p> <p>Jak widać Nmap potrafi być naprawdę skuteczny.</p> <p>&nbsp;</p> <p>Dodatkowo za pomocą parametru <strong>--version-intensity &lt;level&gt;</strong> możemy zdefiniować stopień - nazwijmy to agresywności przeprowadzanego testu. Poziom testu ustalamy w zakresie od 0 do 9 (0 - test łagodny, 9 - test brutalny). Aby wykonać test z ustalonym poziomem na 9 można opcjonalnie posłużyć się parametrem: <strong>--version-all</strong></p> <p>&nbsp;</p> <p>Zdefiniowanie parametru <strong>--version-trace</strong> spowoduje uruchomienie procesu debugowania przeprowadzanego skanu a tym samym uzyskamy wgląd w wykonywane operacje i trwające etapy uruchomionego procesu.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image29.png" alt="image29" width="700" height="525" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Pr&oacute;cz tradycyjnego skanowania TCP Nmap umożliwi nam przeprowadzenia tak zwanego skanowania SYN. Czym ta metoda r&oacute;żni się od poprzedniej? Ot&oacute;ż jak już wiesz skanowanie TCP nawiązuje pełną sesję z badanym hostem. Proces skanowania obejmuje pełne ustanowienie połączenia. Do przeprowadzenia skanowania SYN wykorzystywane są tylko dwa pierwsze etapy nawiązywania połączenia TCP. Oznacza to, że komputer atakujący wysyła standardowy pakiet SYN, na kt&oacute;ry uzyskuje odpowiedź w postaci pakietu SYN/ACK. Kolejnym krokiem powinno być odesłanie przez komputer wykonujący skanowanie pakietu ACK. Tak się jednak nie dzieje. Zamiast pakietu ACK zostaje wysłany pakiet RST (tzw. pakiet zerowania). Pakiet ten nakazuje zignorowanie wcześniej przesłanych informacji i zamknięcie połączenia.</p> <p>&nbsp;</p> <p>Ten typ skanowania w literaturze bardzo często określany jest skanowaniem typu <strong>stealth</strong>. Skojarzenie z niewykrywalnymi samolotami jest jak najbardziej na miejscu. Gdyż tak jak samolot dla radar&oacute;w pozostaje niewykrywalny tak ten typ skanowania może pozostać niezauważony dla narzędzi, kt&oacute;rych zadaniem jest monitorowanie ruchu sieciowego. Niewykrywalność tej metody bazuje na fakcie iż połączenie pomiędzy hostem atakującym a celem ataku nigdy w 100% nie zostaje nawiązane.</p> <p>&nbsp;</p> <p>Tak więc aby zilustrować ten proces sp&oacute;jrz na poniższy rysunek przedstawiający schematycznie przebieg skanowania SYN.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image30.png" alt="image30" width="700" height="212" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Już po opisie tej metody można wysunąć wniosek, iż ten rodzaj skanowania przebiega szybciej niż tradycyjne wyliczanie port&oacute;w TCP. Szybkość skanowania wynika z mniejszej liczby przesłanych pakiet&oacute;w.</p> <p>&nbsp;</p> <p>Aby przeprowadzić skanowanie SYN w definicji polecenia należy użyć flagi: <strong>-sS </strong>Tak naprawdę dodanie w linii poleceń flagi <strong>-sS</strong> jest zbędne gdyż domyślnie wykonywanym przez Nmap-a skanowaniem jest skanowanie TCP stealth.</p> <p>&nbsp;</p> <p>Poniżej przykład wykonania skanu SYN wszystkich port&oacute;w hosta o adresie IP 192.168.1.205, polecenie przybrało postać: <strong>nmap -sS -p- 192.168.1.205</strong></p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image31.png" alt="image31" width="700" height="535" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Czas skanowania wyni&oacute;sł 24,23s Aby nie być gołosłownym odnośnie czasu wykonywania skanu poniżej przedstawiam zrzut z wykonanego wyliczania port&oacute;w tego samego hosta lecz z wykorzystaniem metody TCP.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image32.png" alt="image32" width="700" height="535" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Por&oacute;wnując czas obu skan&oacute;w wyraźnie widać iż skanowanie SYN przebiega znacznie szybciej (o ponad 20 sekund) a r&oacute;żnic w uzyskanych wynikach nie widać. Może Ci się to Czytelniku wydać mało istotne ale wykonując skan całej podsieci o masce /24 r&oacute;żnica w czasie skanowania będzie już znaczna.</p> <p>&nbsp;</p> <p>Innym narzędziem jakie możemy użyć do przeprowadzenia skanowania SYN jest aplikacja hping3. W poprzednim wpisie narzędzia tego używaliśmy do wykrycia aktywnych host&oacute;w zaś w tym pokarzę jak program wykorzystać do skanowania port&oacute;w.</p> <p>&nbsp;</p> <p>Aby za pomocą hping3 wykonać proces skanowania należy posłużyć się poleceniem: <strong>hping3 &lt;adres_IP_celu&gt; --scan &lt;skanowane_porty&gt; -S</strong> Poniżej przedstawiono proces skanowania hosta o adresie IP 192.168.1.200, skanowaniu podlegają wszystkie porty.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image33.png" alt="image33" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po wydaniu polecenia uzyskujemy listę otwartych port&oacute;w. Działanie programu polega na wysłaniu na wskazane porty pakietu TCP z ustawioną flagą SYN (za wysłanie tego typu pakietu odpowiada flaga: <strong>-S</strong>). Zgodnie z zasadą ustanawiania sesji TCP otwarty i aktywny port na otrzymany pakiet SYN odpowiada pakietem SYN/ACK (na zrzucie powyżej lista wszystkich port&oacute;w, kt&oacute;re na otrzymane żądanie odpowiedziały - jak widać odpowiedzią są pakiety SYN/ACK - kolumna <strong>flags</strong>).</p> <p>&nbsp;</p> <p>Aby zdefiniować listę określonych port&oacute;w ich numery wymieniamy w linii poleceń oddzielając je od siebie przecinkami. Zakres port&oacute;w definiujemy za pomocą myślnika (np. <strong>--scan 200-300</strong>).</p> <p>&nbsp;</p> <p>Narzędzie hping3 czasem nie wyświetla wszystkich informacji dlatego warto w linii poleceń użyć dodatkowej opcji: <strong>-v</strong></p> <p>&nbsp;</p> <p><strong>Skanowanie UDP</strong></p> <p>&nbsp;</p> <p>Warstwa czwarta modelu ISO/OSI to nie tylko protok&oacute;ł TCP ale r&oacute;wnież protok&oacute;ł UDP. Często protok&oacute;ł ten w procesie wykrywania aktywnych port&oacute;w jest pomijany i lekceważony. A nie wolno zapomnieć iż otwarte porty UDP i usługi działające na tych portach w p&oacute;źniejszej fazie np. przeprowadzanego testu penetracyjnego mogą stanowić wektor ataku.</p> <p>&nbsp;</p> <p>Aby za pomocą narzędzia Nmap przeprowadzić proces skanowania port&oacute;w UDP w składni polecenia należy użyć flagi: <strong>-sU</strong></p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/skanowanieportow/image34.png" alt="image34" width="700" height="415" style="display: block; margin-left: auto; margin-right: auto;" />&nbsp;</p> <p>&nbsp;</p> <p>Połączenie realizowane poprzez protok&oacute;ł UDP należy do tzw. połączeń bezpołączeniowych oznacza to, że pomiędzy nadawcą a odbiorcą w żaden spos&oacute;b nie jest zestawiany kanał komunikacyjny, kt&oacute;ry umożliwiłby w jakikolwiek weryfikację czy pakiety wysłane od adresata trafią do nadawcy. Brak jest r&oacute;wnież jakiegokolwiek mechanizmu zapewniającego ponowną retransmisje uszkodzonych bądź zagubionych pakiet&oacute;w. Komunikacje poprzez protok&oacute;ł UDP możemy por&oacute;wnać do sytuacji w kt&oacute;rej wrzucamy zaadresowany list do skrzynki pocztowej z nadzieją, że szczęśliwie dotrze do odbiorcy. W większości przypadk&oacute;w tak się oczywiście dzieje ale są sytuacje w kt&oacute;rych na skutek nieprzewidzianych okoliczności nasz list zaginie.</p> <p>&nbsp;</p> <p>Protok&oacute;ł UDP nie ma zaimplementowanych funkcji: kontroli kolejności wiadomości, eliminowania duplikat&oacute;w, korekcji błęd&oacute;w czy sterowania przepływem. Jedynym z ważnych mechanizm&oacute;w wspieranych przez ten protok&oacute;ł jest detekcja błęd&oacute;w. Detekcja ta opiera się na wyliczaniu sum kontrolnych, kt&oacute;re są dodawane i analizowane przez nadawcę i adresata (suma jest obliczana po stronie nadawcy a weryfikuje ją adresat). Brak wielu ważnych i wymienionych funkcji sugerowałby iż stosowanie tego protokołu jest bezzasadne. Nie do końca stwierdzenie te jest prawdą, gdyż wielką zaletą protokołu UDP jest jego prostota a co za tym idzie niewielki narzut danych generowanych przez sam protok&oacute;ł. Dodatkowo łatwiej przy pomocy protokołu UDP zrealizować proces transmisji danych opartych o multiemisję.</p> <p>&nbsp;</p> <p>Skanowanie przy wykorzystaniu protokołu UDP jest utrudnione gdyż należy mieć na uwadze fakt iż ze względu na naturę działania protokołu, nadawcy rzadko są udzielane odpowiedzi. Nmap tak samo jak w przypadku skanowania z użyciem protokołu TCP wysyła pakiety UDP do wybranych port&oacute;w, zawartość pakietu zmienia się w zależności od numeru skanowanego portu. Po wysłaniu pakietu Nmap czeka na odpowiedź, jeśli taka odpowiedź nadejdzie port przyjmie status: <strong>open</strong>. Port zamknięty jest określany na podstawie komunikatu ICMP Port Unreachable. W przypadku skanowania UDP może wystąpić jeszcze trzecia sytuacja a mianowicie stan portu może zostać zdefiniowany jako: <strong>open|filtered</strong> Dlatego też w wynikach skanu UDP port często będzie przyjmować ten stan. Status <strong>open|filtered</strong> przyjmie port, kt&oacute;ry nie udzieli żadnej odpowiedzi. Brak odpowiedzi może być spowodowany filtrowaniem pakiet&oacute;w przez zaporę sieciową bądź winne może być oprogramowanie, kt&oacute;re na zapytania wysłane przez Nmap-a nie odpowiada.</p> <p>&nbsp;</p> <p>To co jeszcze należy dopowiedzieć odnośnie wykonywania wyliczania port&oacute;w przy wykorzystaniu protokołu UDP to to iż skanowanie to jest czasochłonne. Przeprowadzenie skanu domyślnych tysiąca port&oacute;w potrafi zająć około 15 minut i więcej. W przykładzie powyżej, czas skanu wyni&oacute;sł 15 minut.</p> <p>&nbsp;</p> <p>Aby uzyskać dokładniejsze wyniki można nakazać narzędziu zastosowanie wspomnianej już funkcji wykrywania wersji. Uaktywnienie funkcji spowoduje wysłanie do wszystkich skanowanych port&oacute;w dodatkowych pakiet&oacute;w (pr&oacute;bek), kt&oacute;rych celem jest dokładniejsza identyfikacja działających usług. Jak pewnie pamiętasz nakazanie Nmap-owi włączenie funkcji wykrywania wersji odbywa się poprzez zastosowanie przełącznika:<strong>-sV</strong> a skanowanie UDP wymaga użycia flagi: <strong>-sU</strong> dlatego też całość opcji możemy połączyć w jeden ciąg i użyć parametru: <strong>-sUV</strong></p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image35.png" alt="image35" width="700" height="801" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Kolejnym narzędziem za pomocą, kt&oacute;rego przeprowadzimy skanowanie UDP jest <strong>Metasploit</strong> a tak naprawdę należy użyć jeden z moduł&oacute;w zawarty w tym narzędziu - <strong>udp_sweep</strong>.</p> <p>&nbsp;</p> <p>Aby m&oacute;c uruchomić moduł w pierwszej kolejności za pomocą polecenia: <strong>msfconsole</strong> uruchamiamy linie poleceń narzędzia Metasploit.</p> <p>&nbsp;</p> <p>Aby m&oacute;c uruchomić moduł skanujący w linii poleceń wydajemy polecenie: <strong>use</strong> wraz z <strong>ścieżką do modułu</strong>. Aby uruchomić moduł udp_sweep wydaj komendę: <strong>use auxiliary/scanner/discovery/udp_sweep</strong> (punkt 1).</p> <p>&nbsp;</p> <p>Po uruchomieniu modułu za pomocą komendy: <strong>set RHOSTS &lt;adres_IP&gt;</strong> ustalamy adres zdalnego hosta - cel ataku (punkt 2). Aby zdefiniować większą liczbę cel&oacute;w należy określić pierwszy i ostatni adres IP, adresy oddzielone są od siebie myślnikiem (np. <strong>set RHOSTS 192.168.1.200-210</strong>), skanowanie podsieci definiujemy z wykorzystaniem notacji CIDR (np. <strong>set RHOSTS 192.168.1.200/24</strong>),</p> <p>&nbsp;</p> <p>Kolejne polecenie: <strong>set THREADS &lt;wartość&gt; </strong>odpowiedzialne jest za ustalenie liczby uruchomionych wątk&oacute;w modułu. Im wyższa wartość skanowanie będzie przebiegało szybciej - bardziej agresywnie. Gdy naszym priorytetem jest pozostanie nie zauważonym ustalenie niskiej wartości parametru THREADS spowoduje przeprowadzenie skanowania z mniejszą szybkością co zwiększa nasze szanse na pozostanie niezauważonym (punkt 3).</p> <p>&nbsp;</p> <p>Aby sprawdzić konfigurowane opcje należy posłużyć się poleceniem: <strong>show options</strong> (punkt 4). Jak widać poniżej definiowane parametry zostały wprowadzone.</p> <p>&nbsp;</p> <p>Uruchomienie skanowania UDP rozpoczynamy po wydaniu komendy: <strong>run</strong> (punkt 5).</p> <p>&nbsp;</p> <p>Wyniki skanowania zostaną zaprezentowane po zakończeniu procesu.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image36.png" alt="image36" width="700" height="382" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p><strong>Skanowanie Xmas</strong></p> <p>&nbsp;</p> <p>Ten rodzaj skanowania swoją nazwę <strong>Xmas</strong> przyjął od analogi związanej z świecącą choinką gdyż do jego przeprowadzenia jest używany pakiet TCP, kt&oacute;ry ma włączone flagi URG, PSH i FIN natomiast brak jest włączenia flagi SYN lub ACK. Jest to nietypowy rodzaj pakietu, kt&oacute;rego specyfikacja zawarta w dokumentach RFC nie obejmuje. Zastosowanie tak spreparowanego pakietu TCP odnośnie skanowanego systemu spowoduje wymuszenie nietypowych odpowiedzi. Ponieważ odpowiedzi te w r&oacute;żnych systemach przyjmą inny kształt to analiza ich może dać informację o stanie aktywnych port&oacute;w. Producenci oprogramowania z powodu braku dokładnych wytycznych w dokumentach RFC wdrożyli swoje własne autorskie rozwiązania.</p> <p>&nbsp;</p> <p>Poniżej przedstawiono pakiet Xmas przechwycony podczas wykonywania skanu. Jak można zauważyć i tak jak to zostało opisane powyżej pakiet ten ma ustawione flagi URG, PSH i FIN.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image37.png" alt="image37" width="700" height="521" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Aby przeprowadzić skanowanie Xmas należy w linii poleceń narzędzia Nmap użyć flagi: <strong>-sX</strong> Jak można zaobserwować poniżej użycie tego typu skanu względem systemu Windows (a dokładniej Windows 7) nie przyniosło nam żadnych wymiernych efekt&oacute;w. Skanowanie Xmas odnośnie systemu Windows jest nieskuteczne (dlatego warto przed zastosowaniem danego typu skanu znać wersję systemu odnośnie kt&oacute;rego będzie przeprowadzane badanie).</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image38.png" alt="image38" width="700" height="190" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Sprawdźmy zatem jaki efekt uzyskamy gdy celem będzie system Linux. Po przeprowadzeniu skanu jedyną informację jaką uzyskujemy to to iż w badanym systemie dostępnych jest 30 port&oacute;w o statusie <strong>open|filtered</strong>.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image39.png" alt="image39" width="700" height="169" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Aby uzyskać bardziej dokładne informacje o wykrytych portach należy użyć znanej nam opcji <strong>-sV</strong>. Po wydaniu komendy uzyskamy bardziej szczeg&oacute;łowe informacje.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image40.png" alt="image40" width="700" height="703" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p><strong>Skanowanie NULL</strong></p> <p>&nbsp;</p> <p>Ten typ skanu podobnie jak Xmas wykorzystuje pakiet TCP, kt&oacute;ry jest niezgodny z specyfikacją zawartą w dokumentach RFC. W przypadku tej metody używany jest pakiet, kt&oacute;ry ma wyłączone wszystkie flagi (stąd nazwa skanowania).</p> <p>&nbsp;</p> <p>Poniżej tak jak w przypadku metody Xmas został przedstawiony przechwycony pakiet Null. Wszystkie flagi pakietu TCP zostały wyłączone.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image41.png" alt="image41" width="700" height="521" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Aby użyć tej metody należy w linii poleceń zdefiniować opcję <strong>-sV</strong>. Podobnie jak w poprzednim przypadku w pierwszej kolejności skanowanie zostało użyte wobec systemu Windows 7. Zastosowana metoda nie wykryła żadnych otwartych port&oacute;w. Tak jak w przypadku metody Xmas, skan przy wykorzystaniu pakiet&oacute;w Null gdy celem jest system Windows jest nieskuteczny.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image42.png" alt="image42" width="700" height="160" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Sprawdźmy zatem co osiągniemy w przypadku systemu Linux. Skan Null systemu Linux o adresie IP 192.168.1.200 wykazał szereg port&oacute;w o statusie: <strong>open|filtered</strong>.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image43.png" alt="image43" width="700" height="463" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>I tak jak poprzednio aby uzyskać dodatkowe informacje o działających usługach wykorzystamy flagę<strong>: -sV</strong>. Użyta opcja pozwala na zidentyfikowanie usług wykorzystujących dane porty.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image44.png" alt="image44" width="700" height="502" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Wykorzystanie obu metod odnośnie systemu Windows nie dało żadnych efekt&oacute;w zaś w przypadku systemu Linux pozwoliło nam na określenie otwartych port&oacute;w. W przypadku obu metod należy mieć na uwadze fakt, iż ich zadaniem nie jest ustanowienie kanału komunikacji przez kt&oacute;ry moglibyśmy przesłać dane ale wykrycie w badanym systemie potencjalnych luk. Opisane metody ze względu na sw&oacute;j nietypowy charakter działania mogą pozostać niezauważone przez administratora odpowiedzialnego za ochronę skanowanych system&oacute;w a dodatkowo pozwalają na ominięcie list kontroli dostępu (ACL), kt&oacute;rych zadaniem jest uniemożliwienie przeprowadzania skanowania TCP czy skanowania SYN.</p> <p>&nbsp;</p> <p><strong>Skanowanie ACK</strong></p> <p>&nbsp;</p> <p>Skanowanie ACK polega na wysłaniu pakietu TCP, kt&oacute;ry ma ustawiony aktywny bit ACK. Proces skanowania sprowadza się do wysłania w kierunku celu pakietu z aktywna flagą ACK, jeśli system zdalny odpowie pakietem RST oznacza to, że port jest niefiltrowany w przypadku otrzymania odpowiedzi w postaci komunikatu ICMP lub braku jakiejkolwiek odpowiedzi Nmap uzna port za filtrowany.</p> <p>&nbsp;</p> <p>Trochę to zagmatwane ale już spieszę z wytłumaczeniem. Ten typ skanowania w szczeg&oacute;lności przydatny jest w sytuacjach w kt&oacute;rych mamy do czynienia z zaporą sieciową. W przypadku zap&oacute;r sieciowych ich klasyfikację możemy przeprowadzić ze względu na charakter działania. Tak więc zapory sieciowe czy bardziej popularnie - firewalle możemy podzielić na <strong>bezstanowe</strong> i <strong>stanowe</strong>.</p> <p>&nbsp;</p> <p><strong>Zapory bezstanowe</strong> są odpowiedzialne za filtrowanie ruchu sieciowego (ruch wychodzący jaki i przychodzący) przy czym analiza tego ruchu obejmuje warstwę trzecią i warstwę czwartą modelu ISO/OSI. Tak więc analizowanymi protokołami są IP, TCP i UDP a m&oacute;wiąc bardziej szczeg&oacute;łowo informacje zawarte w przenoszonych pakietach - źr&oacute;dłowy adres IP, docelowy adres IP, port źr&oacute;dłowy i port docelowy. Największą wadą tego typu zap&oacute;r jest fakt iż zapory tego typu decyzję o zablokowaniu bądź przepuszczeniu danego ruch sieciowego podejmują w oparciu o analizę pojedynczego pakietu. Działanie tego typu zap&oacute;r nie obejmuje sprawdzenia czy dany pakiet jest fragmentem całości czyli już nawiązanego połączenia, czy jest pakietem przypadkowym bądź pakietem wygenerowanym przez atakującego. Stąd podatność tego typu zap&oacute;r na ataki typu ACK czy FIN.</p> <p>&nbsp;</p> <p>Poniżej przedstawiono przykład w kt&oacute;rym host o adresie 192.168.1.50 przeprowadza skanowanie ACK hosta 192.168.1.205 (skanowany port 139) - punkt 1. W wyniku skanowania cel ataku odsyła pakiet TCP z ustawioną flagą RST - punkt 2. Oznacza to, że port jest <strong>niefiltrowany</strong>. Odpowiedź RST została odesłana ponieważ host znajdował się za bezstanową zaporą.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image45.png" alt="image45" width="700" height="521" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p><strong>Zapory stanowe</strong> jeśli można tak powiedzieć są &bdquo;bardziej mądre&rdquo; od swoich braci. Cały ruch sieciowy przez zaporę jest traktowany jako całość co oznacza, że decyzja o przepuszczeniu bądź zablokowaniu danego datagramu jest podejmowana w oparciu o analizę pakiet&oacute;w tworzących połączenie. M&oacute;wiąc trochę inaczej, firewall &bdquo;wie&rdquo;, czy otrzymany pakiet jest częścią aktualnie realizowanego połączenia czy może jest całkowicie odrębnym i nieoczekiwanym pakietem.</p> <p>&nbsp;</p> <p>Poniżej przedstawiono ten sam scenariusz jaki miał miejsce wyżej z tą tylko r&oacute;żnicą iż aktualnie host 192.168.1.205 znajduje się za zaporą stanową. W kierunku hosta zostaje wysłany pakiet TCP z ustawioną flagą ACK - punkt 1. Tym razem odpowiedź nie nadchodzi. Port przyjmuje status <strong>filtrowany</strong>.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image46.png" alt="image46" width="700" height="521" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Odpowiedź od hosta została zablokowana przez zaporę gdyż nie stanowiła większej całości połączenia.</p> <p>&nbsp;</p> <p><strong>Skanowanie FIN</strong></p> <p>&nbsp;</p> <p>Skanowanie te jest podobne do om&oacute;wionego powyżej skanowania ACK lecz z tą r&oacute;żnicą, że zamiast pakietu z ustawioną flagą ACK zostaje wysłany pakiet z aktywną flagą FIN. W tej metodzie skanowania sprawdzamy powracający pakiet - domyślnie brak odpowiedzi oznacza, że port jest otwarty, a odpowiedź w postaci datagramu z ustawioną flagą RST/ACK, oznacza zamknięty port. Przy użyciu tej metody skanowania ważne jest rozpoznanie systemu, kt&oacute;ry będzie stanowił nasz cel ponieważ część system&oacute;w wysyła odpowiedzi RST niezależnie od tego czy port jest otwarty czy nie. Brak rozr&oacute;żnienia powoduje, że w wynikach skanowania wszystkie porty przyjmą status zamknięty. Systemy, kt&oacute;re zachowują się w ten spos&oacute;b to systemy z rodziny Windows lecz też wiele urządzeń Cisco. Skanowanie tego typu przeprowadzamy wobec system&oacute;w Linux. Dodatkowo skanowanie te pomoże nam wykryć typ używanej zapory sieciowej.</p> <p>&nbsp;</p> <p>Rozważmy analogiczną sytuację jaka miała miejsce przy skanowaniu ACK i sprawdźmy zachowanie hosta o adresie IP 192.168.1.205 w zależności od typu użytej zapory.</p> <p>&nbsp;</p> <p>W pierwszej kolejności host za zaporą bezstanową. Po wykonaniu skanowania FIN (port 3986) - punkt 1 zostaje udzielona odpowiedź w postaci pakietu RST/ACK - punkt 2. Status portu w wyniku skanowania zostaje zakwalifikowany jako <strong>closed</strong>. Można zastanawiać się - Czemu port jest zamknięty skoro została udzielona odpowiedź? Ot&oacute;ż skanowanym hostem jest Windows 7 a system ten udzieli odpowiedzi RST/ACK niezależnie od statusu portu - pakiet RST/ACK jest wysyłany dla portu otwartego ale r&oacute;wnież zamkniętego.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image47.png" alt="image47" width="700" height="521" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Umieśćmy hosta za zaporą stanową i wykonajmy skanowanie tego samego portu. Tym razem w wynikach skanowania status portu zostaje ustawiony jako: <strong>open|filtered</strong> Status portu przyjął taki stan gdyż nie został odesłany pakiet RST/ACK. Brak pakietu oznacza iż został on zablokowany przez zaporę.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image48.png" alt="image48" width="700" height="521" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po wykonaniu skanowania FIN jesteśmy w stanie stwierdzić jaka zapora chroni dostęp do hosta.</p> <p>&nbsp;</p> <p>W systemie Linux mamy do czynienia z sytuacją odwrotną. Przeprowadzono skanowanie FIN wobec hosta 192.168.1.200, skanowany port 22 (SSH). Status portu został ustawiony na <strong>open|filtered </strong>gdyż otwarty port nie wysyła flagi RST/ACK.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image49.png" alt="image49" width="700" height="521" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>W przypadku wykonania skanu FIN zamkniętego portu 29, status portu przyjmie stan <strong>closed</strong>. Status portu przyjął taki stan gdyż został odesłany datagram RST/ACK.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/skanowanieportow/image50.png" alt="image50" width="700" height="521" style="display: block; margin-left: auto; margin-right: auto;" />&nbsp;</p> <p>Opisana wyżej sytuacja odnosi się do hosta, kt&oacute;ry znajduje się za zaporą bezstanową.</p> <p>&nbsp;</p> <p>To sprawdźmy jak przebiegnie skanowanie gdy hosta będzie chroniła zapora stanowa.</p> <p>&nbsp;</p> <p>W przypadku portu otwartego status portu zostaje określony jako <strong>open|filterd</strong>.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image51.png" alt="image51" width="700" height="521" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Port zamknięty zgłasza ten sam status.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image52.png" alt="image52" width="700" height="521" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>W przypadku zapory stanowej nie jest możliwe dokładne określenie statusu portu gdyż stan portu zostaje zdefiniowany na podstawie odpowiedzi w postaci pakietu RST/ACK. Zapora stanowa blokuje te pakiety tak więc wszystkie skanowane porty zostaną wykryte jako <strong>open|filterd</strong>.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image53.png" alt="image53" width="700" height="192" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Wszystkie przedstawione do tej pory metody, angażowały do skanowania host na kt&oacute;rym zostało wydane polecenie wykonania skanu. Oznacza to, że przeprowadzanie wielu skan&oacute;w naraża nas na wykrycie. R&oacute;żne systemy w swoich logach rejestrują informacje przeprowadzanych operacji a dodatkowo w sieciach funkcjonują systemy IDS/IPS (ang. Intrusion Detection System, Intrusion Prevention System), kt&oacute;rych zadaniem jest wykrywanie (IDS) lub wykrywanie i blokowanie atak&oacute;w (IPS) w czasie rzeczywistym. Zabezpieczenia te są więc odpowiedzialne za rejestrowanie zdarzeń, kt&oacute;re mogą wpłynąć na bezpieczeństwo chronionej sieci. Wykorzystanie metod opisanych powyżej może wywołać alarm, kt&oacute;ry doprowadzi do wykrycia przeprowadzanych operacji.</p> <p>&nbsp;</p> <p>Aby uniemożliwić wykrycie adresu IP hosta przeprowadzającego skanowanie można skorzystać z tzw. <strong>skanowania jałowego</strong> (ang. Idle Scanning). Przy użyciu tej techniki skanowania w całości procesu uczestniczy dodatkowy host tzw. <strong>zombie</strong>. Najlepsze kryterium wyboru hosta zombie stanowi komputer, kt&oacute;ry w sieci generuje mało ruchu. Hostem zombie może r&oacute;wnież zostać maszyna wirtualna.</p> <p>&nbsp;</p> <p>Znalezienie i wykorzystanie hosta, kt&oacute;ry w naszym imieniu przeprowadziłby skanowanie jest największym problemem gdyż większość nowych system&oacute;w na pełnienie tej (zaszczytnej) funkcji jest już uodporniona ale nic nie stoi na przeszkodzie by użyć odpowiednio przygotowany system wykorzystując do tego oprogramowanie VirtualBox czy VMware (Windows XP SP2 świetnie się w tej roli sprawdzi).</p> <p>&nbsp;</p> <p>Skanowanie przy użyciu hosta zombie bazuje na trzech założeniach:</p> <ul> <li style="padding-left: 60px;">Skanowany otwarty port po odebraniu pakietu TCP z ustawioną flagą SYN odpowiada pakietem SYN/ACK, natomiast port zamknięty odpowie pakietem RST,</li> <li style="padding-left: 60px;">Komputer zombie na skutek odebrania nieoczekiwanego datagramu SYN/ACK odpowiada wiadomością RST (sytuacja w przypadku portu otwartego), natomiast odebranie przez komputer zombie nieoczekiwanego komunikatu RST jest przez niego ignorowane (sytuacja w przypadku portu zamkniętego),</li> <li style="padding-left: 60px;">Host zombie a raczej system operacyjny musi spełnić warunek tzw. <strong>sekwencyjnej inkrementacji numer&oacute;w identyfikacyjnych</strong> (tzw. identyfikator IPID). By m&oacute;c wykorzystać dany system jako hosta zombie identyfikator IPID musi być przydzielany w spos&oacute;b przewidywalny tj. wartości IPID muszą przyjmować kolejne wartości zwiększane o 1. W przypadku nowych system&oacute;w wartość numeru IPID jest wartością losową zaś starsze systemy działają według zasady przypisywania kolejnej wartości numerowi IPID.</li> </ul> <p>&nbsp;</p> <p>Aby skanowanie jałowe mogło zostać przeprowadzone, napastnik wysyła w kierunku hosta zombie pakiet z ustawioną flagą SYN/ACK. W odebranym pakiecie RST sprawdzana jest wartość identyfikatora IPID.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image54.png" alt="image54" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Kolejnym krokiem jest wysłanie specjalnie przygotowanego pakietu SYN lecz tym razem celem jest dany port skanowanego hosta. Wysłany pakiet zawiera ustawiony adres źr&oacute;dłowy IP hosta zombie. Jeśli badany port jest otwarty zgodnie z zasadą ustalania sesji TCP system skanowany po otrzymaniu pakietu SYN w kierunku hosta zombie odsyła pakiet SYN/ACK. Dla hosta zombie otrzymany pakiet jest nieoczekiwany (pamiętamy, że pakiet SYN wysłał napastnik) dlatego też odsyła on w kierunku celu skanowania datagram RST, wysłanie pakietu powoduje zwiększenie wartości identyfikatora IPID o 1.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image55.png" alt="image55" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Ostatnim krokiem w tym procesie jest ponowne wysłanie w kierunku hosta zombie pakietu z aktywnymi flagami SYN/ACK (pakiet ten wysyła napastnik). Dla hosta zombie otrzymany pakiet zn&oacute;w jest pakietem nieoczekiwanym więc odsyła on pakiet RST, tym samym powiększając wartość identyfikatora IPID zn&oacute;w o 1.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image56.png" alt="image56" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Podsumowując wszystkie czynności, wartość identyfikatora IPID wzrosła o 2 od sprawdzonej wartości początkowej. Oznacza to, że na skanowanym hoście, badany port jest portem otwartym.</p> <p>&nbsp;</p> <p>A co w przypadku portu zamkniętego? Sytuacja przebiega podobnie lecz z jednym małym wyjątkiem. Ale wszystko po kolei. Tak jak poprzednio w kierunku hosta zombie zostaje wysłany pakiet SYN/ACK, celem pakietu jest sprawdzenie wartości identyfikatora IPID.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image54.png" alt="image54" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Kolejny krok przebiega identycznie jak w przypadku sytuacji z portem otwartym - zostaje wysłany pakiet SYN w kt&oacute;rym źr&oacute;dłowy adres IP wskazuje na hosta zombie (celem jest skanowany host). Ponieważ badany port jest portem zamkniętym w kierunku hosta zombie zostaje odesłany datagram RST (wartość IPID nie ulega zmianie).</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image57.png" alt="image57" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Ostatnim krokiem jest wysłanie w kierunku hosta zombie kolejnego pakietu SYN/ACK, celem pakietu jest zbadanie o ile wzrosła wartość identyfikatora IPID. Ponieważ pakiet ten jest pakietem nieoczekiwanym host zombie odsyła pakiet RST, wysłanie pakietu wymusza na hoście zwiększenie wartości IPID o 1.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image58.png" alt="image58" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Reasumując w scenariuszu z portem zamkniętym sprawdzana wartość IPID wzrasta tylko o 1. Taki wzrost wartości IPID jest sygnałem dla napastnika iż skanowany port jest portem zamkniętym.</p> <p>&nbsp;</p> <p>Aby sprawdzić czy dany host wspiera sekwencyjną inkrementację numer&oacute;w identyfikacyjnych IPID można posłużyć się narzędziem hping3. Po wydaniu polecenia: <strong>hping3 -c 6 &lt;adres_IP_hosta&gt;</strong> zostanie wysłana seria pakiet&oacute;w TCP Null (brak aktywnych flag), analiza otrzymanych wynik&oacute;w pozwala nam stwierdzić czy host wspiera sekwencyjną inkrementację. Jak widać poniżej wartości IPID są powiększane o 1 co oznacza, że komputer ten może zostać hostem zombie (system Windows XP SP2).</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image59.png" alt="image59" width="700" height="204" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Poniżej przedstawiono wykorzystanie tego samego polecenia ale względem systemu Ubuntu 14.04 jak można zaobserwować wartości IPID są wartościami losowymi. Host ten nie spełnia warunku sekwencyjności wartości IPID czego skutkiem jest brak możliwości wykorzystania go do skanowania w <strong>trybie Idle</strong>.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/skanowanieportow/image60.png" alt="image60" width="700" height="211" style="display: block; margin-left: auto; margin-right: auto;" />&nbsp;</p> <p>&nbsp;</p> <p>Innym sposobem wykrycia system&oacute;w, kt&oacute;re mogły by posłużyć do pełnienia roli host&oacute;w zombie jest wykorzystanie skaner&oacute;w IPIDSeq.</p> <p>&nbsp;</p> <p>Pierwszym z skaner&oacute;w jest skaner wbudowany w framework Metasploit. Zaletą użycia skaner&oacute;w jest fakt iż możemy ich użyć w poszukiwaniu potencjalnych system&oacute;w zombie przeczesując całą podsieć.</p> <p>&nbsp;</p> <p>Aby wykorzystać skaner należy w pierwszej kolejności za pomocą polecenia: <strong>msfconsole</strong> uruchomić framework. Po wydaniu polecenia (Metasploit korzysta z własnej linii poleceń) musimy wykonać czynności:</p> <p style="margin-left: 30px;">1 - za pomocą polecenia: <strong>use auxiliary/scanner/ip/ipidseq</strong> (polecenia możemy dopełniać za pomocą użycia klawisza TAB) uruchamiamy skaner,</p> <p style="margin-left: 30px;">2 - komenda: <strong>set RHOSTS &lt;adres_IP/zakres&gt;</strong> ustawia zakres przeprowadzanego skanu,</p> <p style="margin-left: 30px;">3 - komenda: <strong>set THREADS &lt;wartość&gt;</strong> ustala liczbę uruchamianych wątk&oacute;w, niższa wartość wolniejsze skanowanie zaś wartość wyższa spowoduje szybsze wykonanie skanu,</p> <p style="margin-left: 30px;">4 - komenda: <strong>show options</strong> pozwala na sprawdzenie wprowadzonych ustawień.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image61.png" alt="image61" width="700" height="435" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po zdefiniowaniu wszystkich ustawień możemy uruchomić skaner. Uruchomienie skanu rozpoczynamy po wydaniu polecenia: <strong>run </strong>Skan wykrył jednego hosta o adresie IP 192.168.1.230, kt&oacute;ry spełnia warunki do użycia go w roli zombie.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image62.png" alt="image62" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Tą samą czynność wykrycia host&oacute;w spełniających warunek sekwencyjnej inkrementacji wykonamy za pomocą narzędzia Nmap i dołączonych skrypt&oacute;w. Aby uruchomić skan należy wydać polecenie: <strong>nmap &lt;adres_IP/zakres&gt; --script ipidseq</strong> Po wydaniu polecenia (w tym scenariuszu przeszukujemy sieć 192.168.1.0/24) Nmap rozpoczyna skanowanie. Jak widać poniżej efektem przeprowadzanego skanu jest wykrycie tego samego hosta co w przypadku użycia frameworku Metasploit.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image63.png" alt="image63" width="700" height="423" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po odnalezieniu hosta możemy przejść do przeprowadzenia skanu port&oacute;w. Nie zmieniamy scenariusza - wykonujemy skanowania port&oacute;w z komputera o adresie IP 192.168.1.50, celem będzie host o adresie IP 192.168.1.205 zaś hostem zombie komputer 192.168.1.230.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image64.png" alt="image64" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Wykonanie skanowania port&oacute;w z wykorzystaniem trybu jałowego uruchamiamy za pomocą polecenia: <strong>nmap &lt;host_skanowany&gt; -sI &lt;host_zombie&gt;</strong> Użycie dodatkowego parametru <strong>-Pn</strong> spowoduje brak pingowania systemu docelowego.</p> <p>&nbsp;</p> <p>Host 192.168.1.205 został przeskanowany a skan ujawnił otwarte porty.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image65.png" alt="image65" width="700" height="541" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Dodatkowo na hoście 192.168.1.205 podczas prowadzonego skanowania został uruchomiony Wireshark tak by przekonać się czy rzeczywiście cały proces jest wykonywany przez hosta zombie. Jak widać poniżej całość przechwyconej komunikacji odbyła się tylko pomiędzy hostem zombie a skanowanym systemem, brak jest śladu obecności adresu IP komputera, kt&oacute;ry faktycznie skan przeprowadzał (host 192.168.1.50).</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image66.png" alt="image66" width="700" height="564" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Opisany proces skanowania pozwala nam na wykonanie skanu bez pozostawienia w badanym systemie, ślad&oacute;w wskazujących na faktycznego sprawcę ataku.</p> <p>&nbsp;</p> <p>Wiemy już jak przeprowadzać skanowanie w spos&oacute;b całkowicie anonimowy. A co jeśli nie mamy możliwość przeprowadzenia skanu z wykorzystaniem metody opisanej powyżej i musimy narazić się na ewentualne wykrycie? Nieumiejętnie przeprowadzony proces skanowania lub przeprowadzony bez dodatkowych środk&oacute;w bezpieczeństwa może wzbudzić alarm a informacja o atakującym (adres IP) zostanie zapisana w dziennikach firewalli i system&oacute;w IDS. Aby utrudnić administratorom analizę log&oacute;w po wykryciu skanu możemy wykorzystać opcję, nazywaną <strong>wabikiem</strong> (użycie parametru <strong>-D</strong> ang. decoy). Co ważne użycie tej opcji nie chroni Twojego adresu IP przed rejestracją ale sprawia, że wynik skanowania jest &bdquo;zaciemniony&rdquo;. Proces ten polega na stworzeniu iluzji, kt&oacute;ra ma przekonać, że w tym samym czasie nastąpił jednoczesny skan z r&oacute;żnych host&oacute;w.</p> <p>&nbsp;</p> <p>Składnia polecenia wykorzystująca opcję wabika przedstawia się następująco: <strong>nmap &lt;tryb_skanowania&gt; &lt;cel&gt; -D &lt;pozorne_adresy_IP&gt; </strong> Możliwe jest użycie więcej niż jednego pozornego adresu IP, adresy te oddzielamy od siebie przecinkiem.</p> <p>&nbsp;</p> <p>Poniżej został przedstawiony przykład skanowania stealth z wykorzystaniem parametru <strong>-D</strong>. Adresy IP podane po fladze <strong>-D</strong> są fałszywymi adresami, kt&oacute;re r&oacute;wnież pojawią się w logach. Skanowanym hostem jest komputer o adresie IP 192.168.1.205 natomiast adresy 10.0.0.2 oraz 172.16.45.67 są adresami fikcyjnych host&oacute;w.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image67.png" alt="image67" width="700" height="443" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Aby fałsze adresy IP mogły być zarejestrowane w logach, fizycznie muszą zostać odebrane przez cel skanowania. Przechwytując ruch sieciowy na hoście docelowym można zaobserwować pakiety od nieistniejących host&oacute;w.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image68.png" alt="image68" width="700" height="490" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Użycie flagi <strong>-D</strong> utrudnia stwierdzenie, kto faktycznie skan przeprowadził.</p> <p>&nbsp;</p> <p><strong>Skanowanie - DNmap</strong></p> <p>&nbsp;</p> <p>Przeprowadzenie skanu port&oacute;w pojedynczych host&oacute;w nie stanowi problemu - A co w sytuacji w kt&oacute;rej musimy przeprowadzić odkrywanie aktywnych port&oacute;w na kilkunastu bądź kilkudziesięciu maszynach? Wykonanie tego zadania z wykorzystaniem pojedynczego hosta będzie utrudnione i czasochłonne. Dlatego w takiej sytuacji można użyć narzędzia <strong>DNmap</strong>. Narzędzie te zostało stworzone przez Sebastiana Garcię i jest odpowiedzią na postawione pytanie. Działanie narzędzia oparte jest o model klient-serwer. Oznacza to, że z wykorzystaniem aplikacji możemy stworzyć sieć komputer&oacute;w, kt&oacute;ra przy pomocy narzędzia Nmap będzie prowadzić proces skanowania a wyniki skanowania zostaną zapisane na serwerze.</p> <p>&nbsp;</p> <p>Myślę, że poniższa ilustracja w dość wymowny spos&oacute;b przedstawia zasadę prowadzenia procesu skanowania z wykorzystaniem narzędzia DNmap.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image69.png" alt="image69" width="700" height="469" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Narzędzie DNmap tak naprawdę jest skryptem napisanym z wykorzystaniem języka Python i aby działać w systemie musi być zainstalowany interpreter tego języka wraz z bibliotekami: python-twisted oraz python-openssl. DNmap do działania wymaga r&oacute;wnież zainstalowanego Nmap-a. Narzędzie pobierzemy ze strony: <a href="https://sourceforge.net/projects/dnmap/">https://sourceforge.net/projects/dnmap/</a></p> <p>&nbsp;</p> <p>Aby m&oacute;c utworzyć sieć komputer&oacute;w, kt&oacute;re będą realizować proces skanowania musimy wykonać trzy kroki:</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">1 - utworzyć listę poleceń narzędzia Nmap, listę poleceń zapisujemy w pliku tekstowym,</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">2 - uruchomić serwer DNmap, utworzony w poprzednim kroku plik posłuży nam do uruchomienia serwera,</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">3 - podłączyć klient&oacute;w do serwera.</p> <p>&nbsp;</p> <p>Rozpoczynamy od punktu pierwszego. Polecenia narzędzia Nmap zapisujemy w pliku tekstowym o nazwie: dnmapscan.txt. Plik zostaje zapisany w katalogu domowym. Serwer uruchamiamy w systemie Linux.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image70.png" alt="image70" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po utworzeniu pliku zawierającego zapisane komendy Nmap-a przechodzimy do uruchomienia serwera DNmap. Serwer aktywujemy za pomocą polecenia: <strong>dnmap_server -f &lt;plik_poleceń&gt;</strong> W naszym przykładzie komenda przyjmie postać: <strong>dnmap_server -f dnmapscan.txt</strong></p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image71.png" alt="image71" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Serwer został uruchomiony.</p> <p>&nbsp;</p> <p>Ostatnim krokiem jest podłączenie klient&oacute;w. W ramach ćwiczenia do serwera zostanie podłączonych dw&oacute;ch klient&oacute;w. Oba komputery klienckie pracują pod kontrolą systemu Linux.</p> <p>&nbsp;</p> <p>Podłączenie klient&oacute;w realizujemy po uprzednim pobraniu DNmap-a i niezbędnych bibliotek. Aby klient m&oacute;gł skomunikować się z serwerem należy wydać polecenie: <strong>dnmap_client -s &lt;adres_IP_serwera&gt; -a &lt;nazwa_klienta&gt;</strong> (w niekt&oacute;rych wersjach systemu Linux polecenie należy poprzedzić komendą: <strong>python</strong>)</p> <p>&nbsp;</p> <p>W scenariuszu do serwera o adresie IP 192.168.1.50 zostaje podłączony host o nazwie komp1 (IP 192.168.1.245).</p> <p>&nbsp;</p> <p>Klient uzyskuje połączenie i zaczyna realizować proces skanowania.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image72.png" alt="image72" width="700" height="449" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po podłączeniu pierwszego klienta przystępujemy do klienta drugiego. Do serwerem DNmap zostaje podłączony host komp02 (IP 192.168.1.246). Tak jak poprzednik, po zestawieniu połączenia klient realizuje proces skanowania.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image73.png" alt="image73" width="700" height="471" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Status podłączających się klient&oacute;w możemy obserwować w oknie terminala w kt&oacute;rym zostało wydane polecenie uruchamiające serwer. Jak widać poniżej oba hosty komp1 i komp02 zostały prawidłowo podłączone a status host&oacute;w został ustalony na <strong>Executing</strong>.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image74.png" alt="image74" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Proces skanowania trwa, oba podłączone hosty wykonują polecenia otrzymywane od serwera DNmap. Proces trwa tak długo, aż zostaną wykonane wszystkie polecenia zawarte w wcześniej utworzonym pliku tekstowym.</p> <p>&nbsp;</p> <p>Poniżej host komp1 zakończył wykonywanie pierwszego zadania a że na serwerze zostały zdefiniowane trzy polecenia tak więc host zaczął realizować kolejne zadanie.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image75.png" alt="image75" width="700" height="448" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Host komp02 po wykonaniu swojej części pracy zakończył zadanie - serwer nie ma zdefiniowanych więcej poleceń.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image76.png" alt="image76" width="700" height="384" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po przeprowadzeniu skanu wszystkie wyniki są umieszczone na serwerze w katalogu: <strong>nmap_results</strong>.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image77.png" alt="image77" width="700" height="438" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Obszar skanowania obejmował sieć 192.168.1.0/24 oraz hosta 192.168.1.205. Na hoście tym podczas wykonywania skanowania zostało włączone przechwytywanie pakiet&oacute;w zaś wynik tego procesu został zaprezentowany poniżej. Jak można zaobserwować brak jest śladu w wynikach adresu IP serwera DNmap (IP 192.168.1.50) jako faktycznie tego hosta, kt&oacute;ry koordynował cały proces, natomiast wyniki jednoznacznie wskazują, że hostami przeprowadzającymi skanowanie były komputery o adresach IP 192.168.1.245 oraz 192.168.1.246. Wnioski Czytelniku mam nadzieję, że nasunęły Ci się same - użycie serwera DNmap, r&oacute;wnież w pewien spos&oacute;b maskuje faktycznego sprawcę ataku.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image78.png" alt="image78" width="700" height="490" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Na koniec jeszcze dwie kr&oacute;tkie uwagi odnośnie omawianego narzędzia.</p> <p>&nbsp;</p> <p>Jeśli będziesz chciał przeprowadzić ponowne skanowanie z wykorzystaniem wcześniej utworzonego pliku z poleceniami koniecznie skasuj plik: <strong>nazwa_pliku.dnmaptrace</strong> gdyż w przeciwnym wypadku nie uruchomisz serwera. W omawianym scenariuszu polecenia zostały zapisane w pliku <strong>dnmapscan.txt</strong> tak więc przed ponownym uruchomieniem serwera skasuj plik: <strong>dnmapscan.txt.dnmaptrace</strong> Ewentualnie utw&oacute;rz plik o innej nazwie.</p> <p>&nbsp;</p> <p>Podane przeze mnie narzędzia oraz przykłady ich zastosowania oczywiście omawianego tematu skanowania port&oacute;w do końca nie wyczerpują lecz do pokazanych metod wykonania odkrywania aktywnych port&oacute;w jeszcze wr&oacute;cimy. Gdy już mamy wiedzę na temat wykrywania aktywnych host&oacute;w oraz skanowania ich port&oacute;w w kolejnym wpisie p&oacute;jdziemy o krok dalej czyli zajmiemy się przechwytywaniem baner&oacute;w oraz skanowaniem systemu pod kątem wykrycia luk.</p> <p>&nbsp;</p> <hr /> <p>&nbsp;BIBLIOGRAFIA:</p> <p>&nbsp;</p> <p><a href="http://resources.infosecinstitute.com/must-know-os-fingerprinting/">What You Must Know About OS Fingerprinting - InfoSec Resources</a></p> <p><a href="https://hackertarget.com/7-nmap-nse-scripts-recon/">7 Nmap NSE Scripts for Recon | HackerTarget.com</a></p> <p><a href="https://pentestlab.wordpress.com/2012/03/08/nmap-scripting-engine-basic-usage-2/">Nmap Scripting Engine &ndash; Basic Usage | Penetration Testing Lab</a></p> <p><a href="https://www.sans.org/reading-room/whitepapers/testing/scanning-windows-deeper-nmap-scanning-engine-33138">Scanning Windows Deeper With the Nmap Scanning Engine - scanning-windows-deeper-nmap-scanning-engine-33138</a></p> <p><a href="http://www.netresec.com/?page=Blog&amp;month=2011-11&amp;post=Passive-OS-Fingerprinting">Passive OS Fingerprinting - NETRESEC Blog</a></p> <p><a href="http://www.cyberciti.biz/networking/nmap-command-examples-tutorials/">Top 30 Nmap Command Examples For Sys/Network Admins</a></p> <p><span style="border-radius: 2px; text-indent: 20px; width: auto; padding: 0px 4px 0px 0px; text-align: center; font: bold 11px/20px 'Helvetica Neue',Helvetica,sans-serif; color: #ffffff; background: #bd081c no-repeat scroll 3px 50% / 14px 14px; position: absolute; opacity: 0.85; z-index: 8675309; display: none; cursor: pointer; top: 15008px; left: 23px;">Zapisz</span></p> <p><span style="border-radius: 2px; text-indent: 20px; width: auto; padding: 0px 4px 0px 0px; text-align: center; font: bold 11px/20px 'Helvetica Neue',Helvetica,sans-serif; color: #ffffff; background: #bd081c no-repeat scroll 3px 50% / 14px 14px; position: absolute; opacity: 0.85; z-index: 8675309; display: none; cursor: pointer; top: 22038px; left: 23px;">Zapisz</span></p> <p><span style="border-radius: 2px; text-indent: 20px; width: auto; padding: 0px 4px 0px 0px; text-align: center; font: bold 11px/20px 'Helvetica Neue',Helvetica,sans-serif; color: #ffffff; background: #bd081c no-repeat scroll 3px 50% / 14px 14px; position: absolute; opacity: 0.85; z-index: 8675309; display: none; cursor: pointer; top: 29672px; left: 23px;">Zapisz</span></p> <p><span style="border-radius: 2px; text-indent: 20px; width: auto; padding: 0px 4px 0px 0px; text-align: center; font: bold 11px/20px 'Helvetica Neue',Helvetica,sans-serif; color: #ffffff; background: #bd081c no-repeat scroll 3px 50% / 14px 14px; position: absolute; opacity: 0.85; z-index: 8675309; display: none; cursor: pointer; top: 33677px; left: 23px;">Zapisz</span></p> <p><span style="border-radius: 2px; text-indent: 20px; width: auto; padding: 0px 4px 0px 0px; text-align: center; font: bold 11px/20px 'Helvetica Neue',Helvetica,sans-serif; color: #ffffff; background: #bd081c no-repeat scroll 3px 50% / 14px 14px; position: absolute; opacity: 0.85; z-index: 8675309; display: none; cursor: pointer; top: 36414px; left: 23px;">Zapisz</span></p> <p><span style="border-radius: 2px; text-indent: 20px; width: auto; padding: 0px 4px 0px 0px; text-align: center; font: bold 11px/20px 'Helvetica Neue',Helvetica,sans-serif; color: #ffffff; background: #bd081c no-repeat scroll 3px 50% / 14px 14px; position: absolute; opacity: 0.85; z-index: 8675309; display: none; cursor: pointer; top: 47824px; left: 23px;">Zapisz</span></p></div> <div class="K2FeedImage"><img src="http://slow7.pl/media/k2/items/cache/474f4cdd4383ff91fd1d98bcb039d93b_S.jpg" alt="Co w sieci siedzi. Skanowanie portów." /></div><div class="K2FeedIntroText"><p>Wiemy już jak wykryć aktywnego hosta a więc przyszła pora by nabytą wiedzę poszerzyć. W artykule tym zajmiemy się skanowaniem lecz p&oacute;jdziemy trochę dalej, naszym zadaniem będzie wykrycie i zidentyfikowanie usług sieciowych jakie na zdalnym hoście działają. Tak więc na tapetę bierzemy skanowanie port&oacute;w.</p> </div><div class="K2FeedFullText"> <p>&nbsp;</p> <p>Pozw&oacute;l Czytelniku, że posłużę się o to taką analogią: W pierwszym kroku by m&oacute;c przejść do skanowania port&oacute;w należy wykryć czy dany host jest aktywny (czytaj włączony). Wykrycie takiego komputera jest jak znalezienie adresu domu. Gdy posiadamy adres domu możemy p&oacute;jść dalej i poszukać sposobu dostania się do tego domu. Aby wejść do środka można skorzystać z drzwi frontowych ale r&oacute;wnież poszukać wejścia od tyłu czy przez garaż. Co bardziej kreatywni stwierdzą, że do środka można dostać się przez okno czy otw&oacute;r przeznaczony dla zwierząt. Tak więc sam Czytelniku widzisz, że jest kilka dr&oacute;g by osiągnąć zamierzony cel. W przypadku komputer&oacute;w potencjalnymi sposobami uzyskania dostępu jest skorzystanie z otwartych port&oacute;w a w znalezieniu wejścia pomoże nam skanowanie port&oacute;w. Wyniki uzyskane dzięki przeprowadzonemu skanowaniu są potencjalnymi drzwiami przy wykorzystaniu, kt&oacute;rych wrota &bdquo;domu&rdquo; staną przed nami otworem. Tak więc port jest rodzajem &bdquo;drzwi&rdquo; przy pomocy, kt&oacute;rego możemy uzyskać dostęp do komputera.</p> <p>&nbsp;</p> <p>Tak więc proces skanowania sprowadza się do odnalezienia działających system&oacute;w a dodatkowo usług oferowanych przez te systemy.</p> <p>&nbsp;</p> <p>Proces skanowania możemy podzielić na trzy odrębne fazy tj.:</p> <ul> <li style="padding-left: 60px;">określenie czy dany system zdalny działa,</li> <li style="padding-left: 60px;">skanowanie i wykrycie używanych port&oacute;w,</li> <li style="padding-left: 60px;">skanowanie systemu pod kątem wykrycia luk, kt&oacute;re to w p&oacute;źniejszej fazie można wykorzystać jako cel ataku.</li> </ul> <p>&nbsp;</p> <p><strong>Proces wykrycia działającego systemu</strong> jak już wspomniałem został om&oacute;wiony więc tak by treści nie powtarzać odsyłam do wpisu - <a href="http://slow7.pl/item/110-co-w-sieci-siedzi-skanowanie-sieci-aktywne-hosty">http://slow7.pl/item/110-co-w-sieci-siedzi-skanowanie-sieci-aktywne-hosty</a></p> <p>&nbsp;</p> <p><strong>Skanowanie i wykrycie otwartych port&oacute;w</strong> sprowadza się do odnalezienie portu oraz identyfikacji usługi korzystającej z danego portu. Można to ująć w ten spos&oacute;b: port to nic innego jak otwarte okno bądź furtka dzięki, kt&oacute;rej inny komputer bądź program może ustanowić połączenie, tak by mogła nastąpić wymiana danych. Porty posiadają swoje unikalne numery a dodatkowo dzięki zastosowaniu idei port&oacute;w komputer może prowadzić wiele r&oacute;wnoległych kanał&oacute;w wymiany danych tak aby jeden proces nie musiał czekać na zakończenie innego. Dlatego r&oacute;wnocześnie możemy wysyłać/odbierać pocztę, pobierać pliki czy słuchać ulubionego radia internetowego.</p> <p>&nbsp;</p> <p>Niekt&oacute;re z port&oacute;w przyjęte są jako znane, oznacz to, że na portach tych działają określone usługi. Przykładem takiej usługi, kt&oacute;ra do swego działania wykorzystuje port o numerze 22 jest SSH. Usługa odpowiedzialna jest za nawiązanie bezpiecznych połączeń z hostem zdalnym. Każdy klient pr&oacute;bujący nawiązać ten typ połączenia wie, że aby m&oacute;c skomunikować się z innym komputerem należy użyć docelowego portu 22, gdyż na tym porcie nasłuchuje serwer SSH. Kolejnym przykładem jest użycie przeglądarki internetowej. Nawiązując połączenie z daną stroną internetową, po podaniu adresu, przeglądarka pr&oacute;buje ustanowić połączenie z serwerem WWW wykorzystując do tego zdalny port o numerze 80 gdyż na porcie tym serwer domyślnie oczekuje przychodzących połączeń. Na komputerze lokalnym zostaje otwarty losowy port, tak aby m&oacute;gł być zestawiony pełny kanał komunikacyjny. Oczywiście można zmienić domyślny port pracy serwera WWW lecz wtedy celem nawiązania połączenia trzeba się do niego odwołać.</p> <p>&nbsp;</p> <p>Numery port&oacute;w reprezentowane są przez liczby naturalne z zakresu od 0 do 65535.</p> <ul> <li style="padding-left: 60px;">wartości od 0 do 1023 przyjęto jako <strong>og&oacute;lnie znane</strong>, (ang. well known ports),</li> <li style="padding-left: 60px;"><strong>zarejestrowane porty</strong> (ang. registered ports) to porty o numerach od 1024 do 49151 Porty te są przewidziane dla usług, kt&oacute;re zwyczajowo korzystają z określonych port&oacute;w,</li> <li style="padding-left: 60px;">porty <strong>przydzielane dynamicznie</strong> (ang. dynamically allocated ports, r&oacute;wnież ephemeral ports) to porty o numerach od 49152 do 65535.</li> </ul> <p>&nbsp;</p> <p>Dodatkowo porty mogą być typu TCP bądź UDP (w zależności od użytego protokołu transportowego).</p> <p>&nbsp;</p> <p>Przykładami innych usług, kt&oacute;re korzystają ze standardowych numer&oacute;w port&oacute;w są te przedstawione poniżej:</p> <ul> <li style="padding-left: 60px;">DNS &ndash; 53 (TCP, UDP),</li> <li style="padding-left: 60px;">FTP &ndash; 20, przesyłanie danych (TCP),</li> <li style="padding-left: 60px;">FTP &ndash; 21, przesyłanie poleceń (TCP),</li> <li style="padding-left: 60px;">HTTP &ndash; 80, (TCP),</li> <li style="padding-left: 60px;">HTTPS &ndash; 443 (HTTP na SSL) (TCP),</li> <li style="padding-left: 60px;">IMAP &ndash; 143 (TCP),</li> <li style="padding-left: 60px;">POP3 &ndash; 110 (TCP),</li> <li style="padding-left: 60px;">SMTP &ndash; 25 (TCP),</li> <li style="padding-left: 60px;">Telnet &ndash; 23 (TCP).</li> </ul> <p>&nbsp;</p> <p>Oczywiście nie jest to pełna lista lecz jej niewielki wycinek. Listę port&oacute;w i wykorzystujące je usługi, znajdziesz tu: <a href="http://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xml">http://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xml</a></p> <p>&nbsp;</p> <p><strong>Skanowanie systemu pod kątem wykrycia luk</strong> ma za zadanie wykrycie i zidentyfikowanie wszelkich słabych punkt&oacute;w w usługach udostępnianych na określonych portach tak by mogły być one celem skutecznego ataku. Zagadnienie te w tym wpisie tylko &bdquo;liźniemy&rdquo; gdyż temat ten jest materiałem na kolejny artykuł.</p> <p>&nbsp;</p> <p>Aby m&oacute;c skutecznie wykorzystać skanowanie port&oacute;w należy dokładnie zrozumieć działanie protokoł&oacute;w TCP oraz UDP (często niedocenianego) dlatego też zanim przejdziemy dalej winien jestem parę sł&oacute;w wprowadzenia.</p> <p>&nbsp;</p> <p>Zaczniemy od protokołu TCP.</p> <p>&nbsp;</p> <p>Gł&oacute;wnymi zadaniami protokołu TCP jest stwierdzenie czy transmitowane dane są:</p> <ul> <li style="padding-left: 60px;">uszkodzone,</li> <li style="padding-left: 60px;">zagubione,</li> <li style="padding-left: 60px;">powielone,</li> <li style="padding-left: 60px;">dostarczone w nieodpowiedniej kolejności do odbiorcy.</li> </ul> <p>&nbsp;</p> <p>Protok&oacute;ł TCP używany jest wszędzie tam gdzie musi być zachowana integralność przesyłanych danych, należy do tzw. <strong>protokoł&oacute;w niezawodnych</strong>. Aby została zapewniona niezawodność transmisji i by dane dotarły w nie zmienionej formie stosuje się następujące mechanizmy:</p> <ul> <li style="padding-left: 60px;">każdy wysłany pakiet danych TCP jest numerowany,</li> <li style="padding-left: 60px;">każdy pakiet TCP potwierdzający odbi&oacute;r jest numerowany,</li> <li style="padding-left: 60px;">protok&oacute;ł wykorzystuje mechanizm pozytywnego potwierdzenia odbioru danych z retransmisją tzn. potwierdzany jest poprawny odbi&oacute;r danych,</li> <li style="padding-left: 60px;">stosowany jest zegar mierzący czas oczekiwania na potwierdzenie odbioru.</li> </ul> <p>&nbsp;</p> <p>Nagł&oacute;wek protokołu TCP został przedstawiony poniżej.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image1.png" alt="image1" width="700" height="233" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Budowa nagł&oacute;wka TCP rozpoczyna się od p&oacute;l w kt&oacute;rych przechowywane są wartości <strong>portu źr&oacute;dłowego</strong> oraz <strong>portu docelowego</strong>. Wartości te w połączeniu z danymi zawartymi w nagł&oacute;wku IP (adres IP źr&oacute;dłowy oraz adres docelowy) są podstawą identyfikacji połączenia.</p> <p>&nbsp;</p> <p>Pola <strong>numer sekwencyjny</strong> oraz <strong>numer potwierdzenia</strong> zawierają wartości, kt&oacute;re są niezbędne aby prowadzić skuteczną wymianę danych gdyż tylko w oparciu o numerowanie pakiet&oacute;w hosty prowadzące ze sobą komunikację wiedzą jakich pakiet&oacute;w mają się spodziewać, czy nadchodzą one w prawidłowej kolejności i czy przypadkiem, kt&oacute;ryś z pakiet&oacute;w nie zaginął. Więcej informacji i użyciu tych p&oacute;l już za chwilę.</p> <p>&nbsp;</p> <p>Wartość w polu <strong>długość nagł&oacute;wka</strong> zawiera informację o długości nagł&oacute;wka.</p> <p>&nbsp;</p> <p>W polu <strong>bity kodu </strong>znajduje się osiem jednobitowych p&oacute;l (zwanych r&oacute;wnież flagmi), kt&oacute;rych włączenie bądź wyłączenie sygnalizuje z jakim typem nagł&oacute;wka TCP mamy do czynienia. Co ważne włączenie jednego z p&oacute;l nie wyklucza włączenia innych. Zastosowanie poszczeg&oacute;lnych p&oacute;l zaprezentowano poniżej (opis ten jest skr&oacute;towy, gdyż do tematu flag będziemy wracać nie raz):</p> <ul> <li style="padding-left: 60px;">CWR (ang. Congestion Window Reduced) - ustawienie flagi informuje o zmniejszeniu szybkości transmisji,</li> <li style="padding-left: 60px;">ECE (ang. ECN Echo) - informacja o przeciążeniu,</li> <li style="padding-left: 60px;">URG (ang. Urgent) - pilne dane (rzadko używane),</li> <li style="padding-left: 60px;">ACK (ang. Acknowledgement) - numer potwierdzenia,</li> <li style="padding-left: 60px;">PSH (ang. Push) - otrzymane dane maja być przekazane tak szybko jak to możliwe (nieużywane, gdyż spos&oacute;b implementacji tej funkcji nie do końca spełnia niezawodność),</li> <li style="padding-left: 60px;">RST (ang. Reset) - zresetowanie połączenia na wskutek błędu,</li> <li style="padding-left: 60px;">SYN (ang. Synchronize) - flaga używana celem synchronizacji numer&oacute;w ISN,</li> <li style="padding-left: 60px;">FIN (ang. Finished) - flaga używana przy kończeniu połączenia sygnalizująca koniec wysyłania danych.</li> </ul> <p>&nbsp;</p> <p>W protokole TCP celem zapewnienia ciągłości komunikacji oraz optymalnej dla danego typu połączenia szybkości przesyłania danych zastosowano tzw. mechanizm <strong>przesuwnego okna pakiet&oacute;w</strong> (działanie tej funkcji wykracza poza ramy tego artykułu więc wybacz Czytelniku iż tematu nie rozwijam). Pole <strong>okno</strong> jest odpowiedzialne za ustawienie rozmiaru okna pakiet&oacute;w.</p> <p>&nbsp;</p> <p>Pole <strong>suma kontrolna</strong> jest odpowiedzialne za wyliczenie wartości bazującej na danych zawartych w nagł&oacute;wku TCP (acz nie tylko) a celem jest sprawdzenie czy dane podczas przesyłu nie uległy modyfikacji. Pole te jest wyliczane przez nadawcę a weryfikowane przez odbiorcę.</p> <p>&nbsp;</p> <p>Pole <strong>wskaźnik ważności</strong> ma znaczenie tylko przy ustawionej fladze URG i odznacza dane, kt&oacute;re mają być pilnie przekazane.</p> <p>&nbsp;</p> <p>W nagł&oacute;wku TCP mogą być definiowane r&oacute;żne parametry, kt&oacute;rych ustawienie ma wpływ na działanie protokołu TCP i tu r&oacute;wnież opis ich wszystkich stanowiłby zbyt dalekie zboczenie z tematu wpisu aczkolwiek opiszemy jedną. Najczęściej umieszczanym parametrem w polu <strong>opcje</strong> jest <strong>maksymalny rozmiar segmentu</strong> (tzw. MSS, ang. maximum segment size). Opcja ta odpowiedzialna jest za ustalenie rozmiaru największego segmentu jaki może zostać przesłany. Rozmiar segmentu ustalany jest podczas procesu nawiązywania połączenia.</p> <p>&nbsp;</p> <p>Ostatnie pole zawiera dane, choć zdarzają się pakiety, kt&oacute;re tych danych są pozbawione</p> <p>&nbsp;</p> <p>Po om&oacute;wieniu podstawowych parametr&oacute;w protokołu TCP czas przejść do pokazania ich zastosowania.</p> <p>&nbsp;</p> <p>Podczas nawiązywania połączenia pomiędzy dwoma urządzeniami i przy wykorzystaniu protokołu TCP w pierwszej kolejności musi nastąpić proces <strong>zestawienia połączenia</strong> (ang. Three-Way Handshake). Dopiero po dokonanym uzgodnieniu można przejść do właściwej wymiany informacji.</p> <p>&nbsp;</p> <p>Cały proces negocjacji rozpoczyna się od wysłania na zdefiniowany adres IP i do określonego portu pakietu z ustawioną <strong>flagą SYN</strong>. Pakiet ten wysyła host nawiązujący połączenie. Jeśli host docelowy jest uruchomiony i usługa korzystająca z danego portu nasłuchuje na tym porcie w kierunku hosta ustanawiającego połączenie zostaje odesłany pakiet z ustawioną <strong>flagą SYN/ACK</strong>. Po otrzymaniu takiego pakietu w kierunku hosta z kt&oacute;rym nawiązujemy połączenie zostaje wysłane potwierdzenie w postaci pakietu z włączoną <strong>flagą ACK</strong>.</p> <p>&nbsp;</p> <p>Proces nawiązywania połączenia TCP przedstawia poniższy rysunek, komputer Host jest inicjującym połączenie z Serwerem.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image2.png" alt="image2" width="700" height="225" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Dociekliwy Czytelnik m&oacute;głby zadać pytanie - Ale jak to się dzieje, że komputer rozr&oacute;żnia poszczeg&oacute;lne sesje TCP, przecież w danej chwili może być nawiązanych kilka sesji? Rozr&oacute;żnienie sesji TCP opiera się na wykorzystaniu <strong>numer&oacute;w sekwencyjnych</strong> oraz <strong>numer&oacute;w potwierdzenia</strong>. Numer sekwencyjny często jest określany jako <strong>ISN</strong> zaś numer potwierdzenia jako <strong>ACK</strong>.</p> <p>&nbsp;</p> <p>Jak już wiesz Czytelniku aby sesja TCP mogła zostać nawiązana w pierwszej kolejności zostaje wysłany pakiet z ustawioną flagą SYN. Pakiet ten został pokazany na rysunku poniżej. Prześledzimy sesję nawiązaną pomiędzy hostem o adresie IP 192.168.1.140 a komputerem o adresie IP 192.168.1.205 na przykładzie ruchu przechwyconego za pomocą Wireshark-a.</p> <p>&nbsp;</p> <p>Pakiet SYN (punkt 1) z hosta 192.168.1.140 (port 1074) zostaje wysłany w kierunku komputera 192.168.1.205 na port 80 (sesja WWW). Numer sekwencyjny został ustalony na 2831575758 (punkt 2). Numer sekwencyjny ISN jest losową liczbą z przedziału od 0 do 2^32-1.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image3.png" alt="image3" width="700" height="564" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Host 192.168.1.205 na otrzymany pakiet SYN odpowiada pakietem z ustawioną flagą SYN/ACK (punkt 4). Pakiet ten zostaje odesłany z źr&oacute;dłowego portu 80 na docelowy port 1074 w kierunku hosta 192.168.1.140 (punkt 1). Host w pakiecie SYN/ACK umieszcza sw&oacute;j własny numer sekwencyjny: 1854235621 (punkt 2) ale dodatkowo zostaje jeszcze umieszczony tzw. numer potwierdzenia Numer ten ma wartość o jeden większą niż numer sekwencyjny otrzymany w pakiecie SYN - 2831575759 (punkt 3).</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image4.png" alt="image4" width="700" height="564" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Ostatnim pakietem jest pakiet ACK (punkt 4), kt&oacute;ry jest odpowiedzią hosta 192.168.1.140 na otrzymany pakiet SYN/ACK (punkt 1). W pakiecie tym numer sekwencyjny zostaje ustalony na wartość o jeden większą w stosunku do pierwszego pakietu, kt&oacute;rym był pakiet SYN - 2831575759 (punkt 2) zaś numer potwierdzenia stanowi wartość o jeden większą niż wartość numeru sekwencyjnego otrzymanego od hosta192.168.1.205 w pakiecie SYN/ACT - 1854235622 (punkt 3).</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image5.png" alt="image5" width="700" height="564" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Proces ustanowienia sesji TCP zakończył się sukcesem. Nasz schemat ustanawiania sesji TCP możemy wzbogacić o dodatkowe informacje.</p> <p><img src="http://slow7.pl/images/stories/siec/skanowanieportow/image6.png" alt="image6" width="700" height="261" style="display: block; margin-left: auto; margin-right: auto;" />&nbsp;</p> <p>&nbsp;</p> <p>Po tym etapie następuje transmisja danych, kt&oacute;ra r&oacute;wnież opiera się na przekazywaniu pomiędzy hostami pakiet&oacute;w z odpowiednimi wartościami numer&oacute;w sekwencyjnych i numer&oacute;w potwierdzenia.</p> <p>&nbsp;</p> <p>Po przesłaniu wszystkich danych komunikacja musi się zakończyć. Zakończenie sesji może odbyć się na dwa sposoby. Jeden należy do sposob&oacute;w &bdquo;eleganckich&rdquo; i polega na wykorzystaniu czterech pakiet&oacute;w wraz z ustawioną flagą FIN. Drugi zaś np. na skutek nieoczekiwanego błędu (wyłączenie hosta, błędna konfiguracja) wykorzystuje pakiety TCP z ustawioną flagą RST.</p> <p>&nbsp;</p> <p>Użycie pierwszego ze sposob&oacute;w rozpoczyna się od wysłania pakietu z ustawionymi flagami FIN i ACK (pakiet wysyła host chcący zakończyć sesję). Komputer do kt&oacute;rego trafia pakiet odpowiada pakietem ACK a dodatkowo wysyła własny pakiet w kt&oacute;rym ustawione są flagi FIN i ACK. Host inicjujący zamknięcie odpowiada pakietem ACK.</p> <p>&nbsp;</p> <p>Poniżej na zrzucie pokazano zamknięcie sesji TCP przy wykorzystaniu pakietu FIN.</p> <p>&nbsp;</p> <p>Host 192.168.1 .140 inicjuje zamknięcie w tym celu do komputera o adresie 192.168.1.205 zostaje wysłany pakiet FIN/ACK. Host 192.168.1.205 odpowiada dwoma pakietami &ndash; pakietem ACK oraz własnym pakietem FIN/ACK. Po otrzymaniu od hosta 192.168.1.205 pakietu FIN/ACK komputer 192.168.1 .140 potwierdza fakt zamknięcia sesji pakietem ACK.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image7.png" alt="image7" width="700" height="368" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Zwr&oacute;ć uwagę Czytelniku na wartości numer&oacute;w sekwencyjnych i potwierdzenia. Jak można stwierdzić schemat numeracji opiera się na tej samej zasadzie jaka została wykorzystana w przypadku nawiązywania połączenia. Schematycznie proces został przedstawiony na rysunku poniżej.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image8.png" alt="image8" width="700" height="261" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Drugi ze sposob&oacute;w jak zostało wspomniane wykorzystuje pakiet TCP z ustawioną flagą RST. Wysłanie takiego pakietu informuje hosta o zerwaniu połączenia bądź odmowie jego nawiązania.</p> <p>&nbsp;</p> <p>Poniżej przedstawiono pakiet wysłany od hosta 192.168.1.140 kończącego sesję TCP na wskutek wystąpienia błędu. Pakiet ma ustawione flagi RST oraz ACK. Wysłanie pakietu kończy komunikację pomiędzy komputerami 192.168.1.140 a 192.168.1.205.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image9.png" alt="image9" width="700" height="448" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Podczas skanowania będziemy mieli do czynienia z jeszcze jednym protokołem a mianowicie z protokołem UDP (ang. User Datagram Protocol). Informacje o tym protokole znajdziesz w dalszej części wpisu gdy przejdziemy do przykład&oacute;w użycia go podczas skanowania.</p> <p>&nbsp;</p> <p><strong>Wykrywanie systemu</strong></p> <p>&nbsp;</p> <p>Naszą przygodę ze skanowaniem port&oacute;w rozpoczniemy od zaprezentowania sposob&oacute;w wykrycia skanowanego systemu. Tak zwany <strong>fingerprinting systemu</strong> jest metodą, kt&oacute;ra pozwoli nam poznać wersję skanowanego systemu. Można by zapytać &ndash; Jakie korzyści z posiadania takiej informacji będziemy mieli? Ot&oacute;ż poznanie wersji systemu pomoże nam w doborze skutecznych technik skanowania. Dob&oacute;r odpowiedniej metody skanowania w zależności od naszego celu (skanowanego systemu) będzie łatwiejszy i da bardziej wymierny efekt w zdobyciu poszukiwanych informacji. M&oacute;wiąc inaczej wyb&oacute;r danej metody skanowania zależny jest od wykrytego systemu operacyjnego, gdyż po co wykorzystać dany rodzaj skanu gdy z g&oacute;ry wiadomo, że w danym systemie on nie zadziała. Tak więc system operacyjny wymusza na nas zastosowanie określnych rozwiązań.</p> <p>&nbsp;</p> <p>Identyfikacja systemu operacyjnego możliwa jest dzięki r&oacute;żnej interpretacji wytycznych zawartych w dokumentach RFC. Oznacza to, że dani producenci inaczej w swoich systemach operacyjnych implementują rozwiązania związane z obsługą protokoł&oacute;w IP, TCP czy UDP. Wychwycenie tych r&oacute;żnic (często bardzo subtelnych) umożliwia narzędziom wykorzystywanym do skanu zidentyfikowanie skanowanego systemu.</p> <p>&nbsp;</p> <p>Poniżej przykład r&oacute;żnej implementacji początkowej wartości pola TTL w nagł&oacute;wku IP oraz rozmiaru zastosowanego okna TCP. Por&oacute;wnanie tych informacji z dużym prawdopodobieństwem da nam odpowiedź o typie systemu operacyjnego.</p> <p style="text-align: justify;">&nbsp;</p> <table border="1" style="width: 599px; border-collapse: collapse; margin-left: auto; margin-right: auto;" cellspacing="0" cellpadding="0"> <tbody> <tr style="height: 36.75pt;"> <td style="border: 1pt solid windowtext; padding: 0cm 5.4pt; height: 36.75pt;" valign="top"><strong>System operacyjny</strong></td> <td style="width: 116.45pt; border-width: 1pt 1pt 1pt medium; border-style: solid solid solid none; border-color: windowtext windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 36.75pt;" valign="top" width="155"> <p style="margin-bottom: 6pt; text-align: center; line-height: 115%;"><strong>Początkowa wartość </strong></p> <p style="margin-bottom: 6pt; text-align: center; line-height: 115%;"><strong>pola TTL</strong></p> </td> <td style="width: 116.45pt; border-width: 1pt 1pt 1pt medium; border-style: solid solid solid none; border-color: windowtext windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 36.75pt;" valign="top" width="155"> <p style="margin-bottom: 6pt; text-align: center; line-height: 115%;"><strong>Rozmiar okna </strong></p> <p style="margin-bottom: 6pt; text-align: center; line-height: 115%;"><strong>nagł&oacute;wka TCP</strong></p> </td> </tr> <tr style="height: 21pt;"> <td style="border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 21pt;" valign="top"><strong>Linux (kernel 2.4 and 2.6)</strong></td> <td style="width: 116.45pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 21pt;" valign="top" width="155">64</td> <td style="width: 116.45pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 21pt;" valign="top" width="155">5840</td> </tr> <tr style="height: 21pt;"> <td style="border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 21pt;" valign="top"><strong>FreeBSD</strong></td> <td style="width: 116.45pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 21pt;" valign="top" width="155">64</td> <td style="width: 116.45pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 21pt;" valign="top" width="155">65535</td> </tr> <tr style="height: 21pt;"> <td style="border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 21pt;" valign="top"><strong>Windows XP</strong></td> <td style="width: 116.45pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 21pt;" valign="top" width="155">128</td> <td style="width: 116.45pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 21pt;" valign="top" width="155">65535</td> </tr> <tr style="height: 21.75pt;"> <td style="border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 21.75pt;" valign="top"><strong>Windows 7, Vista and Server 2008</strong></td> <td style="width: 116.45pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 21.75pt;" valign="top" width="155">128</td> <td style="width: 116.45pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 21.75pt;" valign="top" width="155">8192</td> </tr> <tr style="height: 21.75pt;"> <td style="border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt; height: 21.75pt;" valign="top"><strong>Cisco Router (IOS 12.4)</strong></td> <td style="width: 116.45pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 21.75pt;" valign="top" width="155">255</td> <td style="width: 116.45pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt; height: 21.75pt;" valign="top" width="155">4128</td> </tr> </tbody> </table> <p style="text-align: justify;">&nbsp;</p> <p>Inne typy analizowanych danych opierają się m.in. o:</p> <ul> <li style="padding-left: 60px;"><strong>Por&oacute;wnanie numer&oacute;w ISN</strong> (ang. Initial Sequence Number) &ndash; wartość ISN jest wykorzystywana przy zestawianiu sesji TCP. Numer ten z reguły jest losowy lecz niekt&oacute;re z system&oacute;w preferują bardziej lub mniej pewne wartości. Analiza wzorca numeru pozwala na określenie typu systemu.</li> <li style="padding-left: 60px;"><strong>Wykorzystanie pakiet&oacute;w TCP</strong> &ndash; celem weryfikacji systemu można wysłać w kierunku celu specjalnie spreparowane pakiety TCP. Pakiety te mają ustawione nietypowe flagi protokołu TCP, kt&oacute;re nie są przewidziane w specyfikacji dokument&oacute;w RFC. Analizując otrzymaną odpowiedź można wykonać pewne założenia odnośnie systemu z kt&oacute;rego zostały wysłane. Np. pakiet TCP z ustawioną flagą FIN jest wysyłany do otwartego portu, zgodnie z dokumentacją RFC odpowiedzią na tak otrzymaną informację powinien być brak odpowiedzi lecz systemy z rodziny Windows na odebrany pakiet odpowiadają pakietem z ustawioną flagą FIN/ACK.</li> <li style="padding-left: 60px;"><strong>Wykorzystanie komunikat&oacute;w ICMP</strong> &ndash; podczas wystąpienia błęd&oacute;w protokołu ICMP, dane systemy w odpowiedziach odsyłają r&oacute;żną liczbę danych, analiza otrzymanych danych definiuje system z kt&oacute;rego zostały wysłane.</li> <li style="padding-left: 60px;"><strong>Zastosowanie bitu &bdquo;nie dziel na fragmenty&rdquo;</strong> &ndash; bit ten jest wykorzystywany w komunikacji TCP celem zwiększenia wydajności, lecz nie jest on stosowany przez wszystkie systemy operacyjne, weryfikacja bitu pozwala zawęzić liczbę system&oacute;w operacyjnych,</li> <li style="padding-left: 60px;"><strong>Zaawansowane opcje protokołu TCP</strong> &ndash; protok&oacute;ł TCP w r&oacute;żnych odstępach czasu podlegał modyfikacjom i usprawnieniom, implementacja i ocena przyjętych rozwiązań (np. maksymalna wielkość segmentu, blok niewykonywalny czy wsp&oacute;łczynnik skalowania okna) pozwala na wytypowanie systemu zdalnego.</li> </ul> <p>&nbsp;</p> <p>Przedstawione i opisane mechanizmy oczywiście nie wyczerpują tematu identyfikacji używanego systemu operacyjnego lecz mają za zadanie ukazanie jak wiele metod może zostać użytych aby mieć pewność iż cel ataku zostanie poprawnie rozpoznany.</p> <p>&nbsp;</p> <p>Pierwszym z narzędzi jakie chciałbym zaprezentować jest już wcześniej opisywany Nmap. Ten wszechstronny program nie tylko pozwala nam na odkrycie aktywnych host&oacute;w ale r&oacute;wnież przy wykorzystaniu pełni jego możliwości możemy wykonać proces identyfikacji systemu operacyjnego oraz proces skanowania port&oacute;w (w wpisie tym często a nawet bardzo często będziemy z tego narzędzia korzystać).</p> <p>&nbsp;</p> <p>Aby zidentyfikować system zdalny należy posłużyć się poleceniem: <strong>nmap -O &lt;adres_hosta&gt;</strong> Po wydaniu komendy uzyskamy informację o systemie operacyjnym &ndash; polecenie przyjmie postać: <strong>nmap -O 192.168.1.140</strong>. Jak widać poniżej system zdalny został określony jako Windows 2000 bądź Windows XP. Opr&oacute;cz identyfikacji systemu uzyskamy r&oacute;wnież informację o otwartych portach &ndash; 139, 445, 3389</p> <p>&nbsp;</p> <p>Otrzymane wyniki potwierdzają, że mamy do czynienia z systemem Windows ponieważ opr&oacute;cz występujących sprzeczności w implementacji protokoł&oacute;w, identyfikację systemu możemy także oprzeć o analizę aktywnych numer&oacute;w port&oacute;w. Gdyż w systemach operacyjnych wykorzystywane porty stale się powtarzają. Wykryte porty 139, 445 a w szczeg&oacute;lności 3389 są przynależne systemowi Windows. W przypadku systemu Linux będziemy mieli do czynienia z innym zestawem charakterystycznych dla tego systemu wartości numer&oacute;w port&oacute;w.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image10.png" alt="image10" width="700" height="443" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Spr&oacute;bujmy wykonać skan na innym systemie operacyjnym.</p> <p>&nbsp;</p> <p>Tym razem po wydaniu polecenia uzyskujemy informację, że mamy do czynienia z systemem Windows 7, Windows 8, Windows Vista bądź Windows 2008.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image11.png" alt="image11" width="700" height="688" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>No to kolejny przykład, tym razem system został określony jednoznacznie jako Windows 10.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image12.png" alt="image12" width="700" height="513" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>I ostatni przykład. Tym razem skanowany system zdalny został określony jako Linux w wersji 2.6.X (gdzie X od 9 do 33).</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image13.png" alt="image13" width="700" height="731" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Dokładniejsze wyniki uzyskamy jeśli skorzystamy z funkcji włączenia&nbsp;detekcji&nbsp;OS&nbsp;i&nbsp;wersji&nbsp;usług. Aby wykonać tę operację należy wydać polecenie: <strong>nmap -A &lt;adres_hosta&gt; </strong>Poniżej przykład w kt&oacute;rym względem hosta 192.168.1.140 ponownie zostaje wydane polecenie celem identyfikacji systemu operacyjnego. Przy wykorzystaniu opcji <strong>-O</strong> system został określony jako Windows 2000 bądź Windows XP zaś przy wykorzystaniu flagi <strong>-A</strong> system został zawężony do Windows XP z zainstalowanym SP3 (co w 100% jest prawdą).</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image14.png" alt="image14" width="700" height="513" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Wydanie komendy detekcji systemu i usług względem komputera 192.168.1.205 (informacje uzyskane dzięki wcześniejszemu skanowaniu to: Windows 7, Windows 8, Windows Vista bądź Windows 2008) r&oacute;wnież zawęża dane &ndash; wykryty system to Windows 7 (poznajemy r&oacute;wnież dokładną wersję systemu). Dodatkowo opr&oacute;cz poznania wersji systemu Windows nasza wiedza o skanowanym hoście zostaje poszerzona m.in. o: nazwę komputera, tryb pracy sieciowej (domena, grupa robocza) czy informację o sposobie logowania. Zaprezentowane poniżej wyniki zostały zawężone do informacji dotyczących wersji systemu.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image15.png" alt="image15" width="700" height="198" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Użycie detekcji systemu odnośnie hosta 192.168.1.200 dostarcza nam szeregu informacji o typie usług działających na określonych portach (wyniki zostały zawężone).</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image16.png" alt="image16" width="700" height="633" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Mechanizm wykrywania systemu zdalnego wykorzystywany przez narzędzie Nmap opiera się na wysyłaniu do badanego systemu odpowiednio przygotowanych żądań i analizie uzyskanych odpowiedzi. Do analizy uzyskanych odpowiedzi jest wykorzystywana baza sygnatur. Baza sygnatur programu Nmap jest przechowywana w pliku <strong>nmap-os-db</strong> bądź <strong>nmap-os-fingerprints</strong>.</p> <p>&nbsp;</p> <p>Na podobnej zasadzie analizę systemu operacyjnego będą przeprowadzały narzędzia om&oacute;wione w dalszej części wpisu. Pierwszym (opr&oacute;cz Nmap-a) narzędziem, kt&oacute;re chciałbym przedstawić jest <strong>xProbe2</strong>.</p> <p>&nbsp;</p> <p>Aby za pomocą tego programu określić system zdalny należy posłużyć się poleceniem: <strong>xprobe2 &lt;adres_hosta&gt;</strong></p> <p>&nbsp;</p> <p>Narzędzie wykorzystamy odnośnie znanego nam już hosta 192.168.1.140 Sprawdźmy zatem czy wyniki uzyskane dzięki xProbe2 pokrywają się z wynikami uzyskanymi dzięki użyciu Nmap-a.</p> <p>&nbsp;</p> <p>Wydanie komendy identyfikującej system określa, że mamy do czynienia z systemem Mac OS bądź z produktami firmy HP.</p> <p>&nbsp;</p> <p>Uzyskany wynik całkowicie nie pokrywa się z danymi jakie uzyskaliśmy po uruchomieniu Nmap-a. Taki stan rzeczy jest spowodowany faktem iż narzędzie te już od dość dłuższego czasu nie jest rozwijane.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image17.png" alt="image17" width="700" height="655" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>By uściślić wyniki otrzymane w poprzednim kroku spr&oacute;bujmy użyć narzędzia xProbe2 w odniesieniu do zdefiniowanego portu. Aby narzędzie xProbe2 wykryło system zdalny poprzez analizę danych otrzymanych z określonego portu należy w definicji polecenia użyć przełącznika <strong>-T &lt;numer_portu</strong>&gt;.</p> <p>&nbsp;</p> <p>Przypuśćmy, że podejrzewamy iż skanowany system będzie należał do system&oacute;w z rodziny Windows. Dlatego też doskonałym wyborem sprawdzanego numeru portu będzie port o numerze 3389 (port odpowiedzialny za realizację połączeń Pulpitu zdalnego - rozwiązanie stosowane tylko w systemie Windows). Zatem polecenie przyjmie postać: <strong>xprobe2&nbsp;192.168.1.140 -T3389</strong></p> <p>&nbsp;</p> <p>Jak widać poniżej analizowany system zdalny zostaje określony jako Windows.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image18.png" alt="image18" width="700" height="673" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Wyniki uzyskane dzięki narzędziu xProbe2 względem hosta o adresie IP 192.168.1.200 identyfikują system jako Linux w wersji 2.6.X (podobnie jak Nmap).</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image19.png" alt="image19" width="700" height="643" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Oba zaprezentowane do tej pory narzędzia opierały się na tzw. <strong>aktywnym fingerprintigu stosu</strong> czyli wersja systemu zdalnego została ustalona dzięki przesłaniu w kierunku celu specjalnie przygotowanych pakiet&oacute;w. Analiza otrzymanych odpowiedzi wraz z ich por&oacute;wnaniem z bazą sygnatur pozwala odpowiedzieć na pytanie z jakim systemem mamy do czynienia.</p> <p>&nbsp;</p> <p>Przeciwieństwem metody aktywnej jest <strong>pasywne</strong> zdobycie informacji o typie zainstalowanego systemu. Metoda ta charakteryzuje się brakiem jakiejkolwiek interakcji z badanym hostem. Określenie systemu zdalnego odbywa się tylko na podstawie analizy pakiet&oacute;w pojawiających się w sieci. Metoda ta nie jest tak precyzyjna jak aktywna lecz zastosowanie jej eliminuje szanse wykrycia wykonywanego skanu.</p> <p>&nbsp;</p> <p>Jednym z narzędzi jakie możemy wykorzystać przy pasywnym określaniu systemu jest program <strong>p0f</strong>.</p> <p>&nbsp;</p> <p>Użycie narzędzia sprowadza się tylko do wydania polecenia: <strong>p0f</strong> Po uruchomieniu programu, narzędzie rozpoczyna analizę otrzymywanych pakiet&oacute;w. Aby metoda pasywna zdała egzamin należy zadbać o odpowiednią ilość danych do analizy. Dane te możemy dostarczyć np. poprzez wykonanie ataku MITM (ang. Man in the middle &ndash; atak polegający na podsłuchu a czasem modyfikacji wiadomości przesyłanych pomiędzy dwiema stronami bez ich wiedzy), fizycznym zainstalowaniu TAP-a sieciowego (urządzenie odpowiedzialne za klonowanie sygnału sieciowego i przesłanie go do atakującego, możliwe jest użycie zwykłego HUB-a lecz wtedy obniżymy przepustowość łącza do 10Mb/s i dodatkowo dochodzi problem z kolizją pakiet&oacute;w) czy wykorzystaniem portu lustrzanego (opcja kopiowania pakiet&oacute;w odbieranych/wysyłanych przez określony port przełącznika do innego portu).</p> <p>&nbsp;</p> <p>Poniżej na zrzucie efekt użycia narzędzia p0f (aplikacja dostępna w systemie Linux). Po uruchomieniu programu zostały wykryte dwa systemy zdalne &ndash; host o adresie 192.168.1.30 korzysta z systemu Linux 3.11 lub nowszego natomiast host 192.168.1.140 to system Windows.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image20.png" alt="image20" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Podobnym programem potrafiącym określić system zdalny poprzez pasywną analizę pakiet&oacute;w jest <strong>NetworkMiner</strong>. NetworkMiner to tzw. sniffer czyli narzędzie służące do przechwytywania pakiet&oacute;w pojawiających się w sieci. Aplikacja potrafi je analizować i na tej podstawie definiować typ systemu (program ma więcej możliwości m.in. potrafi określić otwarte porty, przechwycić pojawiające się pliki czy dane uwierzytelniające - nazwy użytkownik&oacute;w oraz hasła). Aplikacja do działania wykorzystuje graficzny interfejs użytkownika i dla odmiany jest dostępna w systemie Windows.</p> <p>&nbsp;</p> <p>Poniżej na rysunku zaprezentowano efekt pracy programu. Po kr&oacute;tkiej chwili od uruchomienia, narzędzie identyfikuje host 192.168.1.140 jako Windows (co jak wiemy po efektach pracy innych narzędzi jest wynikiem prawidłowym).</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image21.png" alt="image21" width="700" height="572" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Aplikację NetworkMiner pr&oacute;cz systemu Windows możemy r&oacute;wnież uruchomić w systemach Linux, MacOS czy FreeBSD - strona programu: <a href="http://www.netresec.com/?page=NetworkMiner">http://www.netresec.com/?page=NetworkMiner</a></p> <p>&nbsp;</p> <p><strong>Skanowanie port&oacute;w</strong></p> <p>&nbsp;</p> <p>Teraz jak już wiemy jak zidentyfikować system operacyjny zdalnego hosta możemy przejść do om&oacute;wienia metod wykorzystywanych w procesie skanowania port&oacute;w.</p> <p>&nbsp;</p> <p>Rozpoczniemy od podstawowej operacji jaką jest skanowanie TCP. Ten rodzaj skanu należy do najczęściej wykorzystywanych metod. Skanowanie te w pierwszej kolejności wykonamy przy użyciu Nmap-a. Nmap przeprowadza proces pełnego nawiązania połączenia a następnie zamyka połączenie. Proces ten wykonywany jest odnośnie każdego portu.</p> <p>&nbsp;</p> <p>Skanowanie inicjujemy poprzez wydanie polecenia: <strong>nmap -sT &lt;adres_IP&gt;</strong> Wydanie komendy spowoduje wykonanie skanowania TCP (opcja <strong>-sT </strong>&ndash; opcja <strong>-s</strong> wskazuje na typ skanowania natomiast <strong>-T</strong> oznacza skanowanie TCP) hosta o zdefiniowanym adresie IP. Skan wielu host&oacute;w przeprowadzamy poprzez definicję początkowego i ostatniego adresu IP np. <strong>nmap -sT 192.168.0.1-254</strong> bądź opcjonalnie gdy skanowana jest cała podsieć korzystamy z notacji CIDR (definicja adresu sieci i długości maski) - <strong>nmap -sT 192.168.0.1/24</strong> Podczas definicji adres&oacute;w IP host&oacute;w, kt&oacute;re będą podlegać skanowaniu możemy za pomocą opcji: <strong>--exclude &lt;adres_IP&gt;</strong> wykluczyć komputery - hosty zdalne o zdefiniowanych adresach IP nie będą skanowane. Użycie np. takiej komendy: <strong>nmap 192.168.0.0/24 --exclude 192.168.0.10,192.168.0.24</strong> spowoduje przeskanowanie wszystkich host&oacute;w należących do podsieci 192.168.0.0/24 za wyjątkiem adres&oacute;w IP: 192.168.0.10 oraz 192.168.0.24</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image22.png" alt="image22" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Jak widać powyżej udało nam się przeskanować hosta o adresie IP 192.168.1.110 i wykryć na tym hoście otwarte porty. Czas skanowania wyni&oacute;sł niecałe 5 sekund. Niestety nie jest to komplet informacji gdyż zostało przeskanowanych tylko tysiąc najczęściej używanych port&oacute;w.</p> <p>&nbsp;</p> <p>Aby wykonać pełne skanowanie wszystkich port&oacute;w należy do polecenia dodać parametr: <strong>-p-</strong></p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image23.png" alt="image23" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Możliwe jest przeprowadzenie skanowania wybranego portu bądź zakresu port&oacute;w. Aby wykonać skanowanie jednego portu po fladze <strong>-p </strong>należy zdefiniować docelowy port bądź grupę port&oacute;w. Jeżeli zaś chcemy wykonać skan określonych, niekolejnych port&oacute;w to ich numery oddzielone przecinkami podajemy r&oacute;wnież po opcji <strong>-p</strong>. Zakres port&oacute;w definiujemy za pomocą znaku: <strong>-</strong> podając pierwszy i ostatni numer portu.</p> <p>&nbsp;</p> <p>Na zrzucie poniżej ukazano kilka przykład&oacute;w użycia flagi <strong>-p</strong>.</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">1 - skanowanie TCP pojedynczego portu 3389,</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">2 - skanowanie TCP portu 3389 oraz 139,</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">3 - skanowanie TCP zakresu port&oacute;w - od 100 do 200.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image24.png" alt="image24" width="700" height="453" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Do tej pory skanowaniu podlegały tylko porty korzystające z protokołu TCP, a jak już Czytelniku wiesz (lecz temat nie został jeszcze dokładnie om&oacute;wiony) pr&oacute;cz protokołu TCP istnieje r&oacute;wnież UDP. Trochę może wyprzedzam temat lecz to co chciałbym pokazać to to, iż przy wykorzystaniu flagi <strong>-p</strong> (z dodatkowymi opcjami) można definiować r&oacute;żne metody skanu, kt&oacute;re będą stosowane względem określonych port&oacute;w.</p> <p>&nbsp;</p> <p>Na zrzucie poniżej za pomocą komendy: <strong>nmap -sU -sT -p U:53,11,137,T:3389 192.168.1.205</strong> zostało uruchomione skanowanie określonych numer&oacute;w port&oacute;w lecz co ważne w procesie tym do skanowania wykorzystywany jest zar&oacute;wno protok&oacute;ł UDP jaki i TCP.</p> <p>&nbsp;</p> <p>Wytłumaczmy zatem wydane polecenie:</p> <ul> <li style="padding-left: 60px;">opcja <strong>-sU</strong> - włącza skanowanie UDP,</li> <li style="padding-left: 60px;">opcja <strong>-sT</strong> - włącza skanowanie TCP,</li> <li style="padding-left: 60px;">flaga <strong>-p</strong> wraz z opcjami <strong>U:53,11,137,T:3389 </strong>definiuje skanowane porty, przy czym port 53, 11 oraz 137 skanowany jest przy wykorzystaniu protokołu UDP (wykorzystanie parametru U) zaś port 3389 podlega skanowaniu z wykorzystaniem TCP (wykorzystanie parametru T).</li> </ul> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image25.png" alt="image25" width="700" height="179" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Opcją, kt&oacute;rą bardzo często wykorzystuje się przy skanowaniu jest flaga <strong>-PN</strong>. Należy mieć na uwadze, że w procesie odkrywania aktywnych host&oacute;w może zdarzyć się sytuacja w kt&oacute;rej host zdalny będzie włączony lecz nasze skanowanie faktu tego nie potwierdzi. Użycie opcji <strong>-PN</strong> nakazuje Nmap-owi wykonanie skanowania port&oacute;w tak jakby host był włączony i aktywny. Np wydanie polecenia: <strong>nmap -sT -p- -PN 192.168.1.1-10 </strong>spowoduje wykonanie skanowania TCP host&oacute;w od adresu IP 192.168.1.1 do 192.168.1.10 tak jakby hosty te były aktywne a dodatkowo proces skanowania obejmie wszystkie porty. Pominięty jest proces wykrywania aktywnych host&oacute;w.</p> <p>&nbsp;</p> <p>A co w sytuacji w kt&oacute;rej musimy wykonać proces wykrywania aktywnych port&oacute;w dla host&oacute;w, kt&oacute;rych adres IP nie są ułożone kolejno? Dobrym rozwiązaniem tego problemu jest umieszczenie adres&oacute;w IP w osobnym pliku tekstowym (jeden adres IP na wiersz pliku) i zaimportowanie tak przygotowanej listy do narzędzi Nmap. Import dokonujemy przy wykorzystaniu opcji: <strong>-iL &lt;ścieżka_do_pliku&gt;</strong>.</p> <p>&nbsp;</p> <p>Poniżej pokazano przykład wykonania skanu wszystkich port&oacute;w dw&oacute;ch komputer&oacute;w, kt&oacute;rych adresy IP zostały zapisane w pliku tekstowym: <strong>nmapscan.txt</strong>. Skanowanie zostało wywołane za pomocą komendy: <strong>nmap -sT -p- -iL nmapscan.txt</strong></p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image26.png" alt="image26" width="700" height="541" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Pliku tekstowego z zdefiniowanymi adresami IP możemy także użyć do określenia adres&oacute;w IP host&oacute;w, kt&oacute;re nie będą podlegały skanowaniu. Wydanie komendy: <strong>nmap -iL nmapscan.txt --excludefile nieskanuj.txt</strong> spowoduje wykonie skanowania host&oacute;w kt&oacute;rych adresy IP zostały zapisane w pliku <strong>nmapscan.txt </strong>za wyjątkiem tych określonych w pliku <strong>nieskanuj.txt</strong></p> <p>&nbsp;</p> <p>Zatrzymajmy się jeszcze chwilę nad powyższym zrzutem. Analizując listę otwartych port&oacute;w na hoście 192.168.1.205 można zauważyć iż część działających usług nie została rozpoznana (porty z zakresu od 49152 do 49157 oraz 49166). Nmap opr&oacute;cz skanowania port&oacute;w potrafi r&oacute;wnież przeprowadzić operację skanowania wersji usług. Skanowanie te polega na wysłaniu w kierunku badanego hosta pr&oacute;bek, kt&oacute;rych zadaniem jest bardziej dokładne zidentyfikowanie usługi działającej na określonym porcie. Wywołanie skanowania wersji wywołujemy za pomocą flagi: -<strong>sV</strong></p> <p>&nbsp;</p> <p>Poniżej przedstawiono użycie opcji <strong>-sV </strong>odnośnie niezidentyfikowanych port&oacute;w hosta 192.168.1.205 a ponieważ skan ujawnił otwarty port 80 dodatkowo został przeprowadzony skan tego portu w celu uzyskania bardziej szczeg&oacute;łowych informacji na temat działającego serwera www. Komenda uruchamiająca proces skanowania wersji przybierze postać: <strong>nmap -sV -p49152-49157,80,49166 192.168.1.205</strong></p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image27.png" alt="image27" width="700" height="373" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Analizując informacje uzyskane po wydaniu polecenia dochodzimy do wniosku iż na portach tych działają usługi systemu Windows. Zaś serwer WWW został zidentyfikowany jako IIS w wersji 7.5. Co odpowiada stanu faktycznemu. Poniżej zrzut z skanowanego hosta.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/skanowanieportow/image28.png" alt="image28" width="700" height="473" style="display: block; margin-left: auto; margin-right: auto;" />&nbsp;</p> <p>&nbsp;</p> <p>Jak widać Nmap potrafi być naprawdę skuteczny.</p> <p>&nbsp;</p> <p>Dodatkowo za pomocą parametru <strong>--version-intensity &lt;level&gt;</strong> możemy zdefiniować stopień - nazwijmy to agresywności przeprowadzanego testu. Poziom testu ustalamy w zakresie od 0 do 9 (0 - test łagodny, 9 - test brutalny). Aby wykonać test z ustalonym poziomem na 9 można opcjonalnie posłużyć się parametrem: <strong>--version-all</strong></p> <p>&nbsp;</p> <p>Zdefiniowanie parametru <strong>--version-trace</strong> spowoduje uruchomienie procesu debugowania przeprowadzanego skanu a tym samym uzyskamy wgląd w wykonywane operacje i trwające etapy uruchomionego procesu.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image29.png" alt="image29" width="700" height="525" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Pr&oacute;cz tradycyjnego skanowania TCP Nmap umożliwi nam przeprowadzenia tak zwanego skanowania SYN. Czym ta metoda r&oacute;żni się od poprzedniej? Ot&oacute;ż jak już wiesz skanowanie TCP nawiązuje pełną sesję z badanym hostem. Proces skanowania obejmuje pełne ustanowienie połączenia. Do przeprowadzenia skanowania SYN wykorzystywane są tylko dwa pierwsze etapy nawiązywania połączenia TCP. Oznacza to, że komputer atakujący wysyła standardowy pakiet SYN, na kt&oacute;ry uzyskuje odpowiedź w postaci pakietu SYN/ACK. Kolejnym krokiem powinno być odesłanie przez komputer wykonujący skanowanie pakietu ACK. Tak się jednak nie dzieje. Zamiast pakietu ACK zostaje wysłany pakiet RST (tzw. pakiet zerowania). Pakiet ten nakazuje zignorowanie wcześniej przesłanych informacji i zamknięcie połączenia.</p> <p>&nbsp;</p> <p>Ten typ skanowania w literaturze bardzo często określany jest skanowaniem typu <strong>stealth</strong>. Skojarzenie z niewykrywalnymi samolotami jest jak najbardziej na miejscu. Gdyż tak jak samolot dla radar&oacute;w pozostaje niewykrywalny tak ten typ skanowania może pozostać niezauważony dla narzędzi, kt&oacute;rych zadaniem jest monitorowanie ruchu sieciowego. Niewykrywalność tej metody bazuje na fakcie iż połączenie pomiędzy hostem atakującym a celem ataku nigdy w 100% nie zostaje nawiązane.</p> <p>&nbsp;</p> <p>Tak więc aby zilustrować ten proces sp&oacute;jrz na poniższy rysunek przedstawiający schematycznie przebieg skanowania SYN.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image30.png" alt="image30" width="700" height="212" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Już po opisie tej metody można wysunąć wniosek, iż ten rodzaj skanowania przebiega szybciej niż tradycyjne wyliczanie port&oacute;w TCP. Szybkość skanowania wynika z mniejszej liczby przesłanych pakiet&oacute;w.</p> <p>&nbsp;</p> <p>Aby przeprowadzić skanowanie SYN w definicji polecenia należy użyć flagi: <strong>-sS </strong>Tak naprawdę dodanie w linii poleceń flagi <strong>-sS</strong> jest zbędne gdyż domyślnie wykonywanym przez Nmap-a skanowaniem jest skanowanie TCP stealth.</p> <p>&nbsp;</p> <p>Poniżej przykład wykonania skanu SYN wszystkich port&oacute;w hosta o adresie IP 192.168.1.205, polecenie przybrało postać: <strong>nmap -sS -p- 192.168.1.205</strong></p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image31.png" alt="image31" width="700" height="535" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Czas skanowania wyni&oacute;sł 24,23s Aby nie być gołosłownym odnośnie czasu wykonywania skanu poniżej przedstawiam zrzut z wykonanego wyliczania port&oacute;w tego samego hosta lecz z wykorzystaniem metody TCP.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image32.png" alt="image32" width="700" height="535" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Por&oacute;wnując czas obu skan&oacute;w wyraźnie widać iż skanowanie SYN przebiega znacznie szybciej (o ponad 20 sekund) a r&oacute;żnic w uzyskanych wynikach nie widać. Może Ci się to Czytelniku wydać mało istotne ale wykonując skan całej podsieci o masce /24 r&oacute;żnica w czasie skanowania będzie już znaczna.</p> <p>&nbsp;</p> <p>Innym narzędziem jakie możemy użyć do przeprowadzenia skanowania SYN jest aplikacja hping3. W poprzednim wpisie narzędzia tego używaliśmy do wykrycia aktywnych host&oacute;w zaś w tym pokarzę jak program wykorzystać do skanowania port&oacute;w.</p> <p>&nbsp;</p> <p>Aby za pomocą hping3 wykonać proces skanowania należy posłużyć się poleceniem: <strong>hping3 &lt;adres_IP_celu&gt; --scan &lt;skanowane_porty&gt; -S</strong> Poniżej przedstawiono proces skanowania hosta o adresie IP 192.168.1.200, skanowaniu podlegają wszystkie porty.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image33.png" alt="image33" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po wydaniu polecenia uzyskujemy listę otwartych port&oacute;w. Działanie programu polega na wysłaniu na wskazane porty pakietu TCP z ustawioną flagą SYN (za wysłanie tego typu pakietu odpowiada flaga: <strong>-S</strong>). Zgodnie z zasadą ustanawiania sesji TCP otwarty i aktywny port na otrzymany pakiet SYN odpowiada pakietem SYN/ACK (na zrzucie powyżej lista wszystkich port&oacute;w, kt&oacute;re na otrzymane żądanie odpowiedziały - jak widać odpowiedzią są pakiety SYN/ACK - kolumna <strong>flags</strong>).</p> <p>&nbsp;</p> <p>Aby zdefiniować listę określonych port&oacute;w ich numery wymieniamy w linii poleceń oddzielając je od siebie przecinkami. Zakres port&oacute;w definiujemy za pomocą myślnika (np. <strong>--scan 200-300</strong>).</p> <p>&nbsp;</p> <p>Narzędzie hping3 czasem nie wyświetla wszystkich informacji dlatego warto w linii poleceń użyć dodatkowej opcji: <strong>-v</strong></p> <p>&nbsp;</p> <p><strong>Skanowanie UDP</strong></p> <p>&nbsp;</p> <p>Warstwa czwarta modelu ISO/OSI to nie tylko protok&oacute;ł TCP ale r&oacute;wnież protok&oacute;ł UDP. Często protok&oacute;ł ten w procesie wykrywania aktywnych port&oacute;w jest pomijany i lekceważony. A nie wolno zapomnieć iż otwarte porty UDP i usługi działające na tych portach w p&oacute;źniejszej fazie np. przeprowadzanego testu penetracyjnego mogą stanowić wektor ataku.</p> <p>&nbsp;</p> <p>Aby za pomocą narzędzia Nmap przeprowadzić proces skanowania port&oacute;w UDP w składni polecenia należy użyć flagi: <strong>-sU</strong></p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/skanowanieportow/image34.png" alt="image34" width="700" height="415" style="display: block; margin-left: auto; margin-right: auto;" />&nbsp;</p> <p>&nbsp;</p> <p>Połączenie realizowane poprzez protok&oacute;ł UDP należy do tzw. połączeń bezpołączeniowych oznacza to, że pomiędzy nadawcą a odbiorcą w żaden spos&oacute;b nie jest zestawiany kanał komunikacyjny, kt&oacute;ry umożliwiłby w jakikolwiek weryfikację czy pakiety wysłane od adresata trafią do nadawcy. Brak jest r&oacute;wnież jakiegokolwiek mechanizmu zapewniającego ponowną retransmisje uszkodzonych bądź zagubionych pakiet&oacute;w. Komunikacje poprzez protok&oacute;ł UDP możemy por&oacute;wnać do sytuacji w kt&oacute;rej wrzucamy zaadresowany list do skrzynki pocztowej z nadzieją, że szczęśliwie dotrze do odbiorcy. W większości przypadk&oacute;w tak się oczywiście dzieje ale są sytuacje w kt&oacute;rych na skutek nieprzewidzianych okoliczności nasz list zaginie.</p> <p>&nbsp;</p> <p>Protok&oacute;ł UDP nie ma zaimplementowanych funkcji: kontroli kolejności wiadomości, eliminowania duplikat&oacute;w, korekcji błęd&oacute;w czy sterowania przepływem. Jedynym z ważnych mechanizm&oacute;w wspieranych przez ten protok&oacute;ł jest detekcja błęd&oacute;w. Detekcja ta opiera się na wyliczaniu sum kontrolnych, kt&oacute;re są dodawane i analizowane przez nadawcę i adresata (suma jest obliczana po stronie nadawcy a weryfikuje ją adresat). Brak wielu ważnych i wymienionych funkcji sugerowałby iż stosowanie tego protokołu jest bezzasadne. Nie do końca stwierdzenie te jest prawdą, gdyż wielką zaletą protokołu UDP jest jego prostota a co za tym idzie niewielki narzut danych generowanych przez sam protok&oacute;ł. Dodatkowo łatwiej przy pomocy protokołu UDP zrealizować proces transmisji danych opartych o multiemisję.</p> <p>&nbsp;</p> <p>Skanowanie przy wykorzystaniu protokołu UDP jest utrudnione gdyż należy mieć na uwadze fakt iż ze względu na naturę działania protokołu, nadawcy rzadko są udzielane odpowiedzi. Nmap tak samo jak w przypadku skanowania z użyciem protokołu TCP wysyła pakiety UDP do wybranych port&oacute;w, zawartość pakietu zmienia się w zależności od numeru skanowanego portu. Po wysłaniu pakietu Nmap czeka na odpowiedź, jeśli taka odpowiedź nadejdzie port przyjmie status: <strong>open</strong>. Port zamknięty jest określany na podstawie komunikatu ICMP Port Unreachable. W przypadku skanowania UDP może wystąpić jeszcze trzecia sytuacja a mianowicie stan portu może zostać zdefiniowany jako: <strong>open|filtered</strong> Dlatego też w wynikach skanu UDP port często będzie przyjmować ten stan. Status <strong>open|filtered</strong> przyjmie port, kt&oacute;ry nie udzieli żadnej odpowiedzi. Brak odpowiedzi może być spowodowany filtrowaniem pakiet&oacute;w przez zaporę sieciową bądź winne może być oprogramowanie, kt&oacute;re na zapytania wysłane przez Nmap-a nie odpowiada.</p> <p>&nbsp;</p> <p>To co jeszcze należy dopowiedzieć odnośnie wykonywania wyliczania port&oacute;w przy wykorzystaniu protokołu UDP to to iż skanowanie to jest czasochłonne. Przeprowadzenie skanu domyślnych tysiąca port&oacute;w potrafi zająć około 15 minut i więcej. W przykładzie powyżej, czas skanu wyni&oacute;sł 15 minut.</p> <p>&nbsp;</p> <p>Aby uzyskać dokładniejsze wyniki można nakazać narzędziu zastosowanie wspomnianej już funkcji wykrywania wersji. Uaktywnienie funkcji spowoduje wysłanie do wszystkich skanowanych port&oacute;w dodatkowych pakiet&oacute;w (pr&oacute;bek), kt&oacute;rych celem jest dokładniejsza identyfikacja działających usług. Jak pewnie pamiętasz nakazanie Nmap-owi włączenie funkcji wykrywania wersji odbywa się poprzez zastosowanie przełącznika:<strong>-sV</strong> a skanowanie UDP wymaga użycia flagi: <strong>-sU</strong> dlatego też całość opcji możemy połączyć w jeden ciąg i użyć parametru: <strong>-sUV</strong></p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image35.png" alt="image35" width="700" height="801" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Kolejnym narzędziem za pomocą, kt&oacute;rego przeprowadzimy skanowanie UDP jest <strong>Metasploit</strong> a tak naprawdę należy użyć jeden z moduł&oacute;w zawarty w tym narzędziu - <strong>udp_sweep</strong>.</p> <p>&nbsp;</p> <p>Aby m&oacute;c uruchomić moduł w pierwszej kolejności za pomocą polecenia: <strong>msfconsole</strong> uruchamiamy linie poleceń narzędzia Metasploit.</p> <p>&nbsp;</p> <p>Aby m&oacute;c uruchomić moduł skanujący w linii poleceń wydajemy polecenie: <strong>use</strong> wraz z <strong>ścieżką do modułu</strong>. Aby uruchomić moduł udp_sweep wydaj komendę: <strong>use auxiliary/scanner/discovery/udp_sweep</strong> (punkt 1).</p> <p>&nbsp;</p> <p>Po uruchomieniu modułu za pomocą komendy: <strong>set RHOSTS &lt;adres_IP&gt;</strong> ustalamy adres zdalnego hosta - cel ataku (punkt 2). Aby zdefiniować większą liczbę cel&oacute;w należy określić pierwszy i ostatni adres IP, adresy oddzielone są od siebie myślnikiem (np. <strong>set RHOSTS 192.168.1.200-210</strong>), skanowanie podsieci definiujemy z wykorzystaniem notacji CIDR (np. <strong>set RHOSTS 192.168.1.200/24</strong>),</p> <p>&nbsp;</p> <p>Kolejne polecenie: <strong>set THREADS &lt;wartość&gt; </strong>odpowiedzialne jest za ustalenie liczby uruchomionych wątk&oacute;w modułu. Im wyższa wartość skanowanie będzie przebiegało szybciej - bardziej agresywnie. Gdy naszym priorytetem jest pozostanie nie zauważonym ustalenie niskiej wartości parametru THREADS spowoduje przeprowadzenie skanowania z mniejszą szybkością co zwiększa nasze szanse na pozostanie niezauważonym (punkt 3).</p> <p>&nbsp;</p> <p>Aby sprawdzić konfigurowane opcje należy posłużyć się poleceniem: <strong>show options</strong> (punkt 4). Jak widać poniżej definiowane parametry zostały wprowadzone.</p> <p>&nbsp;</p> <p>Uruchomienie skanowania UDP rozpoczynamy po wydaniu komendy: <strong>run</strong> (punkt 5).</p> <p>&nbsp;</p> <p>Wyniki skanowania zostaną zaprezentowane po zakończeniu procesu.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image36.png" alt="image36" width="700" height="382" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p><strong>Skanowanie Xmas</strong></p> <p>&nbsp;</p> <p>Ten rodzaj skanowania swoją nazwę <strong>Xmas</strong> przyjął od analogi związanej z świecącą choinką gdyż do jego przeprowadzenia jest używany pakiet TCP, kt&oacute;ry ma włączone flagi URG, PSH i FIN natomiast brak jest włączenia flagi SYN lub ACK. Jest to nietypowy rodzaj pakietu, kt&oacute;rego specyfikacja zawarta w dokumentach RFC nie obejmuje. Zastosowanie tak spreparowanego pakietu TCP odnośnie skanowanego systemu spowoduje wymuszenie nietypowych odpowiedzi. Ponieważ odpowiedzi te w r&oacute;żnych systemach przyjmą inny kształt to analiza ich może dać informację o stanie aktywnych port&oacute;w. Producenci oprogramowania z powodu braku dokładnych wytycznych w dokumentach RFC wdrożyli swoje własne autorskie rozwiązania.</p> <p>&nbsp;</p> <p>Poniżej przedstawiono pakiet Xmas przechwycony podczas wykonywania skanu. Jak można zauważyć i tak jak to zostało opisane powyżej pakiet ten ma ustawione flagi URG, PSH i FIN.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image37.png" alt="image37" width="700" height="521" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Aby przeprowadzić skanowanie Xmas należy w linii poleceń narzędzia Nmap użyć flagi: <strong>-sX</strong> Jak można zaobserwować poniżej użycie tego typu skanu względem systemu Windows (a dokładniej Windows 7) nie przyniosło nam żadnych wymiernych efekt&oacute;w. Skanowanie Xmas odnośnie systemu Windows jest nieskuteczne (dlatego warto przed zastosowaniem danego typu skanu znać wersję systemu odnośnie kt&oacute;rego będzie przeprowadzane badanie).</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image38.png" alt="image38" width="700" height="190" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Sprawdźmy zatem jaki efekt uzyskamy gdy celem będzie system Linux. Po przeprowadzeniu skanu jedyną informację jaką uzyskujemy to to iż w badanym systemie dostępnych jest 30 port&oacute;w o statusie <strong>open|filtered</strong>.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image39.png" alt="image39" width="700" height="169" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Aby uzyskać bardziej dokładne informacje o wykrytych portach należy użyć znanej nam opcji <strong>-sV</strong>. Po wydaniu komendy uzyskamy bardziej szczeg&oacute;łowe informacje.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image40.png" alt="image40" width="700" height="703" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p><strong>Skanowanie NULL</strong></p> <p>&nbsp;</p> <p>Ten typ skanu podobnie jak Xmas wykorzystuje pakiet TCP, kt&oacute;ry jest niezgodny z specyfikacją zawartą w dokumentach RFC. W przypadku tej metody używany jest pakiet, kt&oacute;ry ma wyłączone wszystkie flagi (stąd nazwa skanowania).</p> <p>&nbsp;</p> <p>Poniżej tak jak w przypadku metody Xmas został przedstawiony przechwycony pakiet Null. Wszystkie flagi pakietu TCP zostały wyłączone.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image41.png" alt="image41" width="700" height="521" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Aby użyć tej metody należy w linii poleceń zdefiniować opcję <strong>-sV</strong>. Podobnie jak w poprzednim przypadku w pierwszej kolejności skanowanie zostało użyte wobec systemu Windows 7. Zastosowana metoda nie wykryła żadnych otwartych port&oacute;w. Tak jak w przypadku metody Xmas, skan przy wykorzystaniu pakiet&oacute;w Null gdy celem jest system Windows jest nieskuteczny.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image42.png" alt="image42" width="700" height="160" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Sprawdźmy zatem co osiągniemy w przypadku systemu Linux. Skan Null systemu Linux o adresie IP 192.168.1.200 wykazał szereg port&oacute;w o statusie: <strong>open|filtered</strong>.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image43.png" alt="image43" width="700" height="463" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>I tak jak poprzednio aby uzyskać dodatkowe informacje o działających usługach wykorzystamy flagę<strong>: -sV</strong>. Użyta opcja pozwala na zidentyfikowanie usług wykorzystujących dane porty.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image44.png" alt="image44" width="700" height="502" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Wykorzystanie obu metod odnośnie systemu Windows nie dało żadnych efekt&oacute;w zaś w przypadku systemu Linux pozwoliło nam na określenie otwartych port&oacute;w. W przypadku obu metod należy mieć na uwadze fakt, iż ich zadaniem nie jest ustanowienie kanału komunikacji przez kt&oacute;ry moglibyśmy przesłać dane ale wykrycie w badanym systemie potencjalnych luk. Opisane metody ze względu na sw&oacute;j nietypowy charakter działania mogą pozostać niezauważone przez administratora odpowiedzialnego za ochronę skanowanych system&oacute;w a dodatkowo pozwalają na ominięcie list kontroli dostępu (ACL), kt&oacute;rych zadaniem jest uniemożliwienie przeprowadzania skanowania TCP czy skanowania SYN.</p> <p>&nbsp;</p> <p><strong>Skanowanie ACK</strong></p> <p>&nbsp;</p> <p>Skanowanie ACK polega na wysłaniu pakietu TCP, kt&oacute;ry ma ustawiony aktywny bit ACK. Proces skanowania sprowadza się do wysłania w kierunku celu pakietu z aktywna flagą ACK, jeśli system zdalny odpowie pakietem RST oznacza to, że port jest niefiltrowany w przypadku otrzymania odpowiedzi w postaci komunikatu ICMP lub braku jakiejkolwiek odpowiedzi Nmap uzna port za filtrowany.</p> <p>&nbsp;</p> <p>Trochę to zagmatwane ale już spieszę z wytłumaczeniem. Ten typ skanowania w szczeg&oacute;lności przydatny jest w sytuacjach w kt&oacute;rych mamy do czynienia z zaporą sieciową. W przypadku zap&oacute;r sieciowych ich klasyfikację możemy przeprowadzić ze względu na charakter działania. Tak więc zapory sieciowe czy bardziej popularnie - firewalle możemy podzielić na <strong>bezstanowe</strong> i <strong>stanowe</strong>.</p> <p>&nbsp;</p> <p><strong>Zapory bezstanowe</strong> są odpowiedzialne za filtrowanie ruchu sieciowego (ruch wychodzący jaki i przychodzący) przy czym analiza tego ruchu obejmuje warstwę trzecią i warstwę czwartą modelu ISO/OSI. Tak więc analizowanymi protokołami są IP, TCP i UDP a m&oacute;wiąc bardziej szczeg&oacute;łowo informacje zawarte w przenoszonych pakietach - źr&oacute;dłowy adres IP, docelowy adres IP, port źr&oacute;dłowy i port docelowy. Największą wadą tego typu zap&oacute;r jest fakt iż zapory tego typu decyzję o zablokowaniu bądź przepuszczeniu danego ruch sieciowego podejmują w oparciu o analizę pojedynczego pakietu. Działanie tego typu zap&oacute;r nie obejmuje sprawdzenia czy dany pakiet jest fragmentem całości czyli już nawiązanego połączenia, czy jest pakietem przypadkowym bądź pakietem wygenerowanym przez atakującego. Stąd podatność tego typu zap&oacute;r na ataki typu ACK czy FIN.</p> <p>&nbsp;</p> <p>Poniżej przedstawiono przykład w kt&oacute;rym host o adresie 192.168.1.50 przeprowadza skanowanie ACK hosta 192.168.1.205 (skanowany port 139) - punkt 1. W wyniku skanowania cel ataku odsyła pakiet TCP z ustawioną flagą RST - punkt 2. Oznacza to, że port jest <strong>niefiltrowany</strong>. Odpowiedź RST została odesłana ponieważ host znajdował się za bezstanową zaporą.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image45.png" alt="image45" width="700" height="521" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p><strong>Zapory stanowe</strong> jeśli można tak powiedzieć są &bdquo;bardziej mądre&rdquo; od swoich braci. Cały ruch sieciowy przez zaporę jest traktowany jako całość co oznacza, że decyzja o przepuszczeniu bądź zablokowaniu danego datagramu jest podejmowana w oparciu o analizę pakiet&oacute;w tworzących połączenie. M&oacute;wiąc trochę inaczej, firewall &bdquo;wie&rdquo;, czy otrzymany pakiet jest częścią aktualnie realizowanego połączenia czy może jest całkowicie odrębnym i nieoczekiwanym pakietem.</p> <p>&nbsp;</p> <p>Poniżej przedstawiono ten sam scenariusz jaki miał miejsce wyżej z tą tylko r&oacute;żnicą iż aktualnie host 192.168.1.205 znajduje się za zaporą stanową. W kierunku hosta zostaje wysłany pakiet TCP z ustawioną flagą ACK - punkt 1. Tym razem odpowiedź nie nadchodzi. Port przyjmuje status <strong>filtrowany</strong>.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image46.png" alt="image46" width="700" height="521" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Odpowiedź od hosta została zablokowana przez zaporę gdyż nie stanowiła większej całości połączenia.</p> <p>&nbsp;</p> <p><strong>Skanowanie FIN</strong></p> <p>&nbsp;</p> <p>Skanowanie te jest podobne do om&oacute;wionego powyżej skanowania ACK lecz z tą r&oacute;żnicą, że zamiast pakietu z ustawioną flagą ACK zostaje wysłany pakiet z aktywną flagą FIN. W tej metodzie skanowania sprawdzamy powracający pakiet - domyślnie brak odpowiedzi oznacza, że port jest otwarty, a odpowiedź w postaci datagramu z ustawioną flagą RST/ACK, oznacza zamknięty port. Przy użyciu tej metody skanowania ważne jest rozpoznanie systemu, kt&oacute;ry będzie stanowił nasz cel ponieważ część system&oacute;w wysyła odpowiedzi RST niezależnie od tego czy port jest otwarty czy nie. Brak rozr&oacute;żnienia powoduje, że w wynikach skanowania wszystkie porty przyjmą status zamknięty. Systemy, kt&oacute;re zachowują się w ten spos&oacute;b to systemy z rodziny Windows lecz też wiele urządzeń Cisco. Skanowanie tego typu przeprowadzamy wobec system&oacute;w Linux. Dodatkowo skanowanie te pomoże nam wykryć typ używanej zapory sieciowej.</p> <p>&nbsp;</p> <p>Rozważmy analogiczną sytuację jaka miała miejsce przy skanowaniu ACK i sprawdźmy zachowanie hosta o adresie IP 192.168.1.205 w zależności od typu użytej zapory.</p> <p>&nbsp;</p> <p>W pierwszej kolejności host za zaporą bezstanową. Po wykonaniu skanowania FIN (port 3986) - punkt 1 zostaje udzielona odpowiedź w postaci pakietu RST/ACK - punkt 2. Status portu w wyniku skanowania zostaje zakwalifikowany jako <strong>closed</strong>. Można zastanawiać się - Czemu port jest zamknięty skoro została udzielona odpowiedź? Ot&oacute;ż skanowanym hostem jest Windows 7 a system ten udzieli odpowiedzi RST/ACK niezależnie od statusu portu - pakiet RST/ACK jest wysyłany dla portu otwartego ale r&oacute;wnież zamkniętego.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image47.png" alt="image47" width="700" height="521" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Umieśćmy hosta za zaporą stanową i wykonajmy skanowanie tego samego portu. Tym razem w wynikach skanowania status portu zostaje ustawiony jako: <strong>open|filtered</strong> Status portu przyjął taki stan gdyż nie został odesłany pakiet RST/ACK. Brak pakietu oznacza iż został on zablokowany przez zaporę.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image48.png" alt="image48" width="700" height="521" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po wykonaniu skanowania FIN jesteśmy w stanie stwierdzić jaka zapora chroni dostęp do hosta.</p> <p>&nbsp;</p> <p>W systemie Linux mamy do czynienia z sytuacją odwrotną. Przeprowadzono skanowanie FIN wobec hosta 192.168.1.200, skanowany port 22 (SSH). Status portu został ustawiony na <strong>open|filtered </strong>gdyż otwarty port nie wysyła flagi RST/ACK.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image49.png" alt="image49" width="700" height="521" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>W przypadku wykonania skanu FIN zamkniętego portu 29, status portu przyjmie stan <strong>closed</strong>. Status portu przyjął taki stan gdyż został odesłany datagram RST/ACK.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/skanowanieportow/image50.png" alt="image50" width="700" height="521" style="display: block; margin-left: auto; margin-right: auto;" />&nbsp;</p> <p>Opisana wyżej sytuacja odnosi się do hosta, kt&oacute;ry znajduje się za zaporą bezstanową.</p> <p>&nbsp;</p> <p>To sprawdźmy jak przebiegnie skanowanie gdy hosta będzie chroniła zapora stanowa.</p> <p>&nbsp;</p> <p>W przypadku portu otwartego status portu zostaje określony jako <strong>open|filterd</strong>.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image51.png" alt="image51" width="700" height="521" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Port zamknięty zgłasza ten sam status.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image52.png" alt="image52" width="700" height="521" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>W przypadku zapory stanowej nie jest możliwe dokładne określenie statusu portu gdyż stan portu zostaje zdefiniowany na podstawie odpowiedzi w postaci pakietu RST/ACK. Zapora stanowa blokuje te pakiety tak więc wszystkie skanowane porty zostaną wykryte jako <strong>open|filterd</strong>.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image53.png" alt="image53" width="700" height="192" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Wszystkie przedstawione do tej pory metody, angażowały do skanowania host na kt&oacute;rym zostało wydane polecenie wykonania skanu. Oznacza to, że przeprowadzanie wielu skan&oacute;w naraża nas na wykrycie. R&oacute;żne systemy w swoich logach rejestrują informacje przeprowadzanych operacji a dodatkowo w sieciach funkcjonują systemy IDS/IPS (ang. Intrusion Detection System, Intrusion Prevention System), kt&oacute;rych zadaniem jest wykrywanie (IDS) lub wykrywanie i blokowanie atak&oacute;w (IPS) w czasie rzeczywistym. Zabezpieczenia te są więc odpowiedzialne za rejestrowanie zdarzeń, kt&oacute;re mogą wpłynąć na bezpieczeństwo chronionej sieci. Wykorzystanie metod opisanych powyżej może wywołać alarm, kt&oacute;ry doprowadzi do wykrycia przeprowadzanych operacji.</p> <p>&nbsp;</p> <p>Aby uniemożliwić wykrycie adresu IP hosta przeprowadzającego skanowanie można skorzystać z tzw. <strong>skanowania jałowego</strong> (ang. Idle Scanning). Przy użyciu tej techniki skanowania w całości procesu uczestniczy dodatkowy host tzw. <strong>zombie</strong>. Najlepsze kryterium wyboru hosta zombie stanowi komputer, kt&oacute;ry w sieci generuje mało ruchu. Hostem zombie może r&oacute;wnież zostać maszyna wirtualna.</p> <p>&nbsp;</p> <p>Znalezienie i wykorzystanie hosta, kt&oacute;ry w naszym imieniu przeprowadziłby skanowanie jest największym problemem gdyż większość nowych system&oacute;w na pełnienie tej (zaszczytnej) funkcji jest już uodporniona ale nic nie stoi na przeszkodzie by użyć odpowiednio przygotowany system wykorzystując do tego oprogramowanie VirtualBox czy VMware (Windows XP SP2 świetnie się w tej roli sprawdzi).</p> <p>&nbsp;</p> <p>Skanowanie przy użyciu hosta zombie bazuje na trzech założeniach:</p> <ul> <li style="padding-left: 60px;">Skanowany otwarty port po odebraniu pakietu TCP z ustawioną flagą SYN odpowiada pakietem SYN/ACK, natomiast port zamknięty odpowie pakietem RST,</li> <li style="padding-left: 60px;">Komputer zombie na skutek odebrania nieoczekiwanego datagramu SYN/ACK odpowiada wiadomością RST (sytuacja w przypadku portu otwartego), natomiast odebranie przez komputer zombie nieoczekiwanego komunikatu RST jest przez niego ignorowane (sytuacja w przypadku portu zamkniętego),</li> <li style="padding-left: 60px;">Host zombie a raczej system operacyjny musi spełnić warunek tzw. <strong>sekwencyjnej inkrementacji numer&oacute;w identyfikacyjnych</strong> (tzw. identyfikator IPID). By m&oacute;c wykorzystać dany system jako hosta zombie identyfikator IPID musi być przydzielany w spos&oacute;b przewidywalny tj. wartości IPID muszą przyjmować kolejne wartości zwiększane o 1. W przypadku nowych system&oacute;w wartość numeru IPID jest wartością losową zaś starsze systemy działają według zasady przypisywania kolejnej wartości numerowi IPID.</li> </ul> <p>&nbsp;</p> <p>Aby skanowanie jałowe mogło zostać przeprowadzone, napastnik wysyła w kierunku hosta zombie pakiet z ustawioną flagą SYN/ACK. W odebranym pakiecie RST sprawdzana jest wartość identyfikatora IPID.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image54.png" alt="image54" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Kolejnym krokiem jest wysłanie specjalnie przygotowanego pakietu SYN lecz tym razem celem jest dany port skanowanego hosta. Wysłany pakiet zawiera ustawiony adres źr&oacute;dłowy IP hosta zombie. Jeśli badany port jest otwarty zgodnie z zasadą ustalania sesji TCP system skanowany po otrzymaniu pakietu SYN w kierunku hosta zombie odsyła pakiet SYN/ACK. Dla hosta zombie otrzymany pakiet jest nieoczekiwany (pamiętamy, że pakiet SYN wysłał napastnik) dlatego też odsyła on w kierunku celu skanowania datagram RST, wysłanie pakietu powoduje zwiększenie wartości identyfikatora IPID o 1.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image55.png" alt="image55" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Ostatnim krokiem w tym procesie jest ponowne wysłanie w kierunku hosta zombie pakietu z aktywnymi flagami SYN/ACK (pakiet ten wysyła napastnik). Dla hosta zombie otrzymany pakiet zn&oacute;w jest pakietem nieoczekiwanym więc odsyła on pakiet RST, tym samym powiększając wartość identyfikatora IPID zn&oacute;w o 1.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image56.png" alt="image56" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Podsumowując wszystkie czynności, wartość identyfikatora IPID wzrosła o 2 od sprawdzonej wartości początkowej. Oznacza to, że na skanowanym hoście, badany port jest portem otwartym.</p> <p>&nbsp;</p> <p>A co w przypadku portu zamkniętego? Sytuacja przebiega podobnie lecz z jednym małym wyjątkiem. Ale wszystko po kolei. Tak jak poprzednio w kierunku hosta zombie zostaje wysłany pakiet SYN/ACK, celem pakietu jest sprawdzenie wartości identyfikatora IPID.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image54.png" alt="image54" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Kolejny krok przebiega identycznie jak w przypadku sytuacji z portem otwartym - zostaje wysłany pakiet SYN w kt&oacute;rym źr&oacute;dłowy adres IP wskazuje na hosta zombie (celem jest skanowany host). Ponieważ badany port jest portem zamkniętym w kierunku hosta zombie zostaje odesłany datagram RST (wartość IPID nie ulega zmianie).</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image57.png" alt="image57" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Ostatnim krokiem jest wysłanie w kierunku hosta zombie kolejnego pakietu SYN/ACK, celem pakietu jest zbadanie o ile wzrosła wartość identyfikatora IPID. Ponieważ pakiet ten jest pakietem nieoczekiwanym host zombie odsyła pakiet RST, wysłanie pakietu wymusza na hoście zwiększenie wartości IPID o 1.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image58.png" alt="image58" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Reasumując w scenariuszu z portem zamkniętym sprawdzana wartość IPID wzrasta tylko o 1. Taki wzrost wartości IPID jest sygnałem dla napastnika iż skanowany port jest portem zamkniętym.</p> <p>&nbsp;</p> <p>Aby sprawdzić czy dany host wspiera sekwencyjną inkrementację numer&oacute;w identyfikacyjnych IPID można posłużyć się narzędziem hping3. Po wydaniu polecenia: <strong>hping3 -c 6 &lt;adres_IP_hosta&gt;</strong> zostanie wysłana seria pakiet&oacute;w TCP Null (brak aktywnych flag), analiza otrzymanych wynik&oacute;w pozwala nam stwierdzić czy host wspiera sekwencyjną inkrementację. Jak widać poniżej wartości IPID są powiększane o 1 co oznacza, że komputer ten może zostać hostem zombie (system Windows XP SP2).</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image59.png" alt="image59" width="700" height="204" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Poniżej przedstawiono wykorzystanie tego samego polecenia ale względem systemu Ubuntu 14.04 jak można zaobserwować wartości IPID są wartościami losowymi. Host ten nie spełnia warunku sekwencyjności wartości IPID czego skutkiem jest brak możliwości wykorzystania go do skanowania w <strong>trybie Idle</strong>.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/skanowanieportow/image60.png" alt="image60" width="700" height="211" style="display: block; margin-left: auto; margin-right: auto;" />&nbsp;</p> <p>&nbsp;</p> <p>Innym sposobem wykrycia system&oacute;w, kt&oacute;re mogły by posłużyć do pełnienia roli host&oacute;w zombie jest wykorzystanie skaner&oacute;w IPIDSeq.</p> <p>&nbsp;</p> <p>Pierwszym z skaner&oacute;w jest skaner wbudowany w framework Metasploit. Zaletą użycia skaner&oacute;w jest fakt iż możemy ich użyć w poszukiwaniu potencjalnych system&oacute;w zombie przeczesując całą podsieć.</p> <p>&nbsp;</p> <p>Aby wykorzystać skaner należy w pierwszej kolejności za pomocą polecenia: <strong>msfconsole</strong> uruchomić framework. Po wydaniu polecenia (Metasploit korzysta z własnej linii poleceń) musimy wykonać czynności:</p> <p style="margin-left: 30px;">1 - za pomocą polecenia: <strong>use auxiliary/scanner/ip/ipidseq</strong> (polecenia możemy dopełniać za pomocą użycia klawisza TAB) uruchamiamy skaner,</p> <p style="margin-left: 30px;">2 - komenda: <strong>set RHOSTS &lt;adres_IP/zakres&gt;</strong> ustawia zakres przeprowadzanego skanu,</p> <p style="margin-left: 30px;">3 - komenda: <strong>set THREADS &lt;wartość&gt;</strong> ustala liczbę uruchamianych wątk&oacute;w, niższa wartość wolniejsze skanowanie zaś wartość wyższa spowoduje szybsze wykonanie skanu,</p> <p style="margin-left: 30px;">4 - komenda: <strong>show options</strong> pozwala na sprawdzenie wprowadzonych ustawień.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image61.png" alt="image61" width="700" height="435" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po zdefiniowaniu wszystkich ustawień możemy uruchomić skaner. Uruchomienie skanu rozpoczynamy po wydaniu polecenia: <strong>run </strong>Skan wykrył jednego hosta o adresie IP 192.168.1.230, kt&oacute;ry spełnia warunki do użycia go w roli zombie.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image62.png" alt="image62" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Tą samą czynność wykrycia host&oacute;w spełniających warunek sekwencyjnej inkrementacji wykonamy za pomocą narzędzia Nmap i dołączonych skrypt&oacute;w. Aby uruchomić skan należy wydać polecenie: <strong>nmap &lt;adres_IP/zakres&gt; --script ipidseq</strong> Po wydaniu polecenia (w tym scenariuszu przeszukujemy sieć 192.168.1.0/24) Nmap rozpoczyna skanowanie. Jak widać poniżej efektem przeprowadzanego skanu jest wykrycie tego samego hosta co w przypadku użycia frameworku Metasploit.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image63.png" alt="image63" width="700" height="423" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po odnalezieniu hosta możemy przejść do przeprowadzenia skanu port&oacute;w. Nie zmieniamy scenariusza - wykonujemy skanowania port&oacute;w z komputera o adresie IP 192.168.1.50, celem będzie host o adresie IP 192.168.1.205 zaś hostem zombie komputer 192.168.1.230.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image64.png" alt="image64" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Wykonanie skanowania port&oacute;w z wykorzystaniem trybu jałowego uruchamiamy za pomocą polecenia: <strong>nmap &lt;host_skanowany&gt; -sI &lt;host_zombie&gt;</strong> Użycie dodatkowego parametru <strong>-Pn</strong> spowoduje brak pingowania systemu docelowego.</p> <p>&nbsp;</p> <p>Host 192.168.1.205 został przeskanowany a skan ujawnił otwarte porty.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image65.png" alt="image65" width="700" height="541" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Dodatkowo na hoście 192.168.1.205 podczas prowadzonego skanowania został uruchomiony Wireshark tak by przekonać się czy rzeczywiście cały proces jest wykonywany przez hosta zombie. Jak widać poniżej całość przechwyconej komunikacji odbyła się tylko pomiędzy hostem zombie a skanowanym systemem, brak jest śladu obecności adresu IP komputera, kt&oacute;ry faktycznie skan przeprowadzał (host 192.168.1.50).</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image66.png" alt="image66" width="700" height="564" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Opisany proces skanowania pozwala nam na wykonanie skanu bez pozostawienia w badanym systemie, ślad&oacute;w wskazujących na faktycznego sprawcę ataku.</p> <p>&nbsp;</p> <p>Wiemy już jak przeprowadzać skanowanie w spos&oacute;b całkowicie anonimowy. A co jeśli nie mamy możliwość przeprowadzenia skanu z wykorzystaniem metody opisanej powyżej i musimy narazić się na ewentualne wykrycie? Nieumiejętnie przeprowadzony proces skanowania lub przeprowadzony bez dodatkowych środk&oacute;w bezpieczeństwa może wzbudzić alarm a informacja o atakującym (adres IP) zostanie zapisana w dziennikach firewalli i system&oacute;w IDS. Aby utrudnić administratorom analizę log&oacute;w po wykryciu skanu możemy wykorzystać opcję, nazywaną <strong>wabikiem</strong> (użycie parametru <strong>-D</strong> ang. decoy). Co ważne użycie tej opcji nie chroni Twojego adresu IP przed rejestracją ale sprawia, że wynik skanowania jest &bdquo;zaciemniony&rdquo;. Proces ten polega na stworzeniu iluzji, kt&oacute;ra ma przekonać, że w tym samym czasie nastąpił jednoczesny skan z r&oacute;żnych host&oacute;w.</p> <p>&nbsp;</p> <p>Składnia polecenia wykorzystująca opcję wabika przedstawia się następująco: <strong>nmap &lt;tryb_skanowania&gt; &lt;cel&gt; -D &lt;pozorne_adresy_IP&gt; </strong> Możliwe jest użycie więcej niż jednego pozornego adresu IP, adresy te oddzielamy od siebie przecinkiem.</p> <p>&nbsp;</p> <p>Poniżej został przedstawiony przykład skanowania stealth z wykorzystaniem parametru <strong>-D</strong>. Adresy IP podane po fladze <strong>-D</strong> są fałszywymi adresami, kt&oacute;re r&oacute;wnież pojawią się w logach. Skanowanym hostem jest komputer o adresie IP 192.168.1.205 natomiast adresy 10.0.0.2 oraz 172.16.45.67 są adresami fikcyjnych host&oacute;w.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image67.png" alt="image67" width="700" height="443" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Aby fałsze adresy IP mogły być zarejestrowane w logach, fizycznie muszą zostać odebrane przez cel skanowania. Przechwytując ruch sieciowy na hoście docelowym można zaobserwować pakiety od nieistniejących host&oacute;w.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image68.png" alt="image68" width="700" height="490" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Użycie flagi <strong>-D</strong> utrudnia stwierdzenie, kto faktycznie skan przeprowadził.</p> <p>&nbsp;</p> <p><strong>Skanowanie - DNmap</strong></p> <p>&nbsp;</p> <p>Przeprowadzenie skanu port&oacute;w pojedynczych host&oacute;w nie stanowi problemu - A co w sytuacji w kt&oacute;rej musimy przeprowadzić odkrywanie aktywnych port&oacute;w na kilkunastu bądź kilkudziesięciu maszynach? Wykonanie tego zadania z wykorzystaniem pojedynczego hosta będzie utrudnione i czasochłonne. Dlatego w takiej sytuacji można użyć narzędzia <strong>DNmap</strong>. Narzędzie te zostało stworzone przez Sebastiana Garcię i jest odpowiedzią na postawione pytanie. Działanie narzędzia oparte jest o model klient-serwer. Oznacza to, że z wykorzystaniem aplikacji możemy stworzyć sieć komputer&oacute;w, kt&oacute;ra przy pomocy narzędzia Nmap będzie prowadzić proces skanowania a wyniki skanowania zostaną zapisane na serwerze.</p> <p>&nbsp;</p> <p>Myślę, że poniższa ilustracja w dość wymowny spos&oacute;b przedstawia zasadę prowadzenia procesu skanowania z wykorzystaniem narzędzia DNmap.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image69.png" alt="image69" width="700" height="469" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Narzędzie DNmap tak naprawdę jest skryptem napisanym z wykorzystaniem języka Python i aby działać w systemie musi być zainstalowany interpreter tego języka wraz z bibliotekami: python-twisted oraz python-openssl. DNmap do działania wymaga r&oacute;wnież zainstalowanego Nmap-a. Narzędzie pobierzemy ze strony: <a href="https://sourceforge.net/projects/dnmap/">https://sourceforge.net/projects/dnmap/</a></p> <p>&nbsp;</p> <p>Aby m&oacute;c utworzyć sieć komputer&oacute;w, kt&oacute;re będą realizować proces skanowania musimy wykonać trzy kroki:</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">1 - utworzyć listę poleceń narzędzia Nmap, listę poleceń zapisujemy w pliku tekstowym,</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">2 - uruchomić serwer DNmap, utworzony w poprzednim kroku plik posłuży nam do uruchomienia serwera,</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">3 - podłączyć klient&oacute;w do serwera.</p> <p>&nbsp;</p> <p>Rozpoczynamy od punktu pierwszego. Polecenia narzędzia Nmap zapisujemy w pliku tekstowym o nazwie: dnmapscan.txt. Plik zostaje zapisany w katalogu domowym. Serwer uruchamiamy w systemie Linux.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image70.png" alt="image70" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po utworzeniu pliku zawierającego zapisane komendy Nmap-a przechodzimy do uruchomienia serwera DNmap. Serwer aktywujemy za pomocą polecenia: <strong>dnmap_server -f &lt;plik_poleceń&gt;</strong> W naszym przykładzie komenda przyjmie postać: <strong>dnmap_server -f dnmapscan.txt</strong></p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image71.png" alt="image71" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Serwer został uruchomiony.</p> <p>&nbsp;</p> <p>Ostatnim krokiem jest podłączenie klient&oacute;w. W ramach ćwiczenia do serwera zostanie podłączonych dw&oacute;ch klient&oacute;w. Oba komputery klienckie pracują pod kontrolą systemu Linux.</p> <p>&nbsp;</p> <p>Podłączenie klient&oacute;w realizujemy po uprzednim pobraniu DNmap-a i niezbędnych bibliotek. Aby klient m&oacute;gł skomunikować się z serwerem należy wydać polecenie: <strong>dnmap_client -s &lt;adres_IP_serwera&gt; -a &lt;nazwa_klienta&gt;</strong> (w niekt&oacute;rych wersjach systemu Linux polecenie należy poprzedzić komendą: <strong>python</strong>)</p> <p>&nbsp;</p> <p>W scenariuszu do serwera o adresie IP 192.168.1.50 zostaje podłączony host o nazwie komp1 (IP 192.168.1.245).</p> <p>&nbsp;</p> <p>Klient uzyskuje połączenie i zaczyna realizować proces skanowania.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image72.png" alt="image72" width="700" height="449" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po podłączeniu pierwszego klienta przystępujemy do klienta drugiego. Do serwerem DNmap zostaje podłączony host komp02 (IP 192.168.1.246). Tak jak poprzednik, po zestawieniu połączenia klient realizuje proces skanowania.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image73.png" alt="image73" width="700" height="471" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Status podłączających się klient&oacute;w możemy obserwować w oknie terminala w kt&oacute;rym zostało wydane polecenie uruchamiające serwer. Jak widać poniżej oba hosty komp1 i komp02 zostały prawidłowo podłączone a status host&oacute;w został ustalony na <strong>Executing</strong>.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image74.png" alt="image74" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Proces skanowania trwa, oba podłączone hosty wykonują polecenia otrzymywane od serwera DNmap. Proces trwa tak długo, aż zostaną wykonane wszystkie polecenia zawarte w wcześniej utworzonym pliku tekstowym.</p> <p>&nbsp;</p> <p>Poniżej host komp1 zakończył wykonywanie pierwszego zadania a że na serwerze zostały zdefiniowane trzy polecenia tak więc host zaczął realizować kolejne zadanie.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image75.png" alt="image75" width="700" height="448" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Host komp02 po wykonaniu swojej części pracy zakończył zadanie - serwer nie ma zdefiniowanych więcej poleceń.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image76.png" alt="image76" width="700" height="384" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po przeprowadzeniu skanu wszystkie wyniki są umieszczone na serwerze w katalogu: <strong>nmap_results</strong>.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image77.png" alt="image77" width="700" height="438" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Obszar skanowania obejmował sieć 192.168.1.0/24 oraz hosta 192.168.1.205. Na hoście tym podczas wykonywania skanowania zostało włączone przechwytywanie pakiet&oacute;w zaś wynik tego procesu został zaprezentowany poniżej. Jak można zaobserwować brak jest śladu w wynikach adresu IP serwera DNmap (IP 192.168.1.50) jako faktycznie tego hosta, kt&oacute;ry koordynował cały proces, natomiast wyniki jednoznacznie wskazują, że hostami przeprowadzającymi skanowanie były komputery o adresach IP 192.168.1.245 oraz 192.168.1.246. Wnioski Czytelniku mam nadzieję, że nasunęły Ci się same - użycie serwera DNmap, r&oacute;wnież w pewien spos&oacute;b maskuje faktycznego sprawcę ataku.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/skanowanieportow/image78.png" alt="image78" width="700" height="490" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Na koniec jeszcze dwie kr&oacute;tkie uwagi odnośnie omawianego narzędzia.</p> <p>&nbsp;</p> <p>Jeśli będziesz chciał przeprowadzić ponowne skanowanie z wykorzystaniem wcześniej utworzonego pliku z poleceniami koniecznie skasuj plik: <strong>nazwa_pliku.dnmaptrace</strong> gdyż w przeciwnym wypadku nie uruchomisz serwera. W omawianym scenariuszu polecenia zostały zapisane w pliku <strong>dnmapscan.txt</strong> tak więc przed ponownym uruchomieniem serwera skasuj plik: <strong>dnmapscan.txt.dnmaptrace</strong> Ewentualnie utw&oacute;rz plik o innej nazwie.</p> <p>&nbsp;</p> <p>Podane przeze mnie narzędzia oraz przykłady ich zastosowania oczywiście omawianego tematu skanowania port&oacute;w do końca nie wyczerpują lecz do pokazanych metod wykonania odkrywania aktywnych port&oacute;w jeszcze wr&oacute;cimy. Gdy już mamy wiedzę na temat wykrywania aktywnych host&oacute;w oraz skanowania ich port&oacute;w w kolejnym wpisie p&oacute;jdziemy o krok dalej czyli zajmiemy się przechwytywaniem baner&oacute;w oraz skanowaniem systemu pod kątem wykrycia luk.</p> <p>&nbsp;</p> <hr /> <p>&nbsp;BIBLIOGRAFIA:</p> <p>&nbsp;</p> <p><a href="http://resources.infosecinstitute.com/must-know-os-fingerprinting/">What You Must Know About OS Fingerprinting - InfoSec Resources</a></p> <p><a href="https://hackertarget.com/7-nmap-nse-scripts-recon/">7 Nmap NSE Scripts for Recon | HackerTarget.com</a></p> <p><a href="https://pentestlab.wordpress.com/2012/03/08/nmap-scripting-engine-basic-usage-2/">Nmap Scripting Engine &ndash; Basic Usage | Penetration Testing Lab</a></p> <p><a href="https://www.sans.org/reading-room/whitepapers/testing/scanning-windows-deeper-nmap-scanning-engine-33138">Scanning Windows Deeper With the Nmap Scanning Engine - scanning-windows-deeper-nmap-scanning-engine-33138</a></p> <p><a href="http://www.netresec.com/?page=Blog&amp;month=2011-11&amp;post=Passive-OS-Fingerprinting">Passive OS Fingerprinting - NETRESEC Blog</a></p> <p><a href="http://www.cyberciti.biz/networking/nmap-command-examples-tutorials/">Top 30 Nmap Command Examples For Sys/Network Admins</a></p> <p><span style="border-radius: 2px; text-indent: 20px; width: auto; padding: 0px 4px 0px 0px; text-align: center; font: bold 11px/20px 'Helvetica Neue',Helvetica,sans-serif; color: #ffffff; background: #bd081c no-repeat scroll 3px 50% / 14px 14px; position: absolute; opacity: 0.85; z-index: 8675309; display: none; cursor: pointer; top: 15008px; left: 23px;">Zapisz</span></p> <p><span style="border-radius: 2px; text-indent: 20px; width: auto; padding: 0px 4px 0px 0px; text-align: center; font: bold 11px/20px 'Helvetica Neue',Helvetica,sans-serif; color: #ffffff; background: #bd081c no-repeat scroll 3px 50% / 14px 14px; position: absolute; opacity: 0.85; z-index: 8675309; display: none; cursor: pointer; top: 22038px; left: 23px;">Zapisz</span></p> <p><span style="border-radius: 2px; text-indent: 20px; width: auto; padding: 0px 4px 0px 0px; text-align: center; font: bold 11px/20px 'Helvetica Neue',Helvetica,sans-serif; color: #ffffff; background: #bd081c no-repeat scroll 3px 50% / 14px 14px; position: absolute; opacity: 0.85; z-index: 8675309; display: none; cursor: pointer; top: 29672px; left: 23px;">Zapisz</span></p> <p><span style="border-radius: 2px; text-indent: 20px; width: auto; padding: 0px 4px 0px 0px; text-align: center; font: bold 11px/20px 'Helvetica Neue',Helvetica,sans-serif; color: #ffffff; background: #bd081c no-repeat scroll 3px 50% / 14px 14px; position: absolute; opacity: 0.85; z-index: 8675309; display: none; cursor: pointer; top: 33677px; left: 23px;">Zapisz</span></p> <p><span style="border-radius: 2px; text-indent: 20px; width: auto; padding: 0px 4px 0px 0px; text-align: center; font: bold 11px/20px 'Helvetica Neue',Helvetica,sans-serif; color: #ffffff; background: #bd081c no-repeat scroll 3px 50% / 14px 14px; position: absolute; opacity: 0.85; z-index: 8675309; display: none; cursor: pointer; top: 36414px; left: 23px;">Zapisz</span></p> <p><span style="border-radius: 2px; text-indent: 20px; width: auto; padding: 0px 4px 0px 0px; text-align: center; font: bold 11px/20px 'Helvetica Neue',Helvetica,sans-serif; color: #ffffff; background: #bd081c no-repeat scroll 3px 50% / 14px 14px; position: absolute; opacity: 0.85; z-index: 8675309; display: none; cursor: pointer; top: 47824px; left: 23px;">Zapisz</span></p></div> Co w sieci siedzi. Zrozumieć i "pokochać" protokół STP. 2016-05-09T07:03:27+00:00 2016-05-09T07:03:27+00:00 http://slow7.pl/sieci-komputerowe/item/120-co-w-sieci-siedzi-zrozumiec-i-pokochac-protokol-stp pikolo [email protected] <div class="K2FeedImage"><img src="http://slow7.pl/media/k2/items/cache/0c758c944f0062609b2677e28107bc5e_S.jpg" alt="Co w sieci siedzi. Zrozumieć i "pokochać" protokół STP." /></div><div class="K2FeedIntroText"><p>W tym wpisie zajmiemy się protokołem STP, kt&oacute;ry przynależny jest do urządzeń warstwy drugiej, czyli switchy, a jego gł&oacute;wnym zadaniem jest wykrywanie i zapobieganie wystąpieniu w sieci pętli. To co należy wiedzieć na temat tego protokołu to to, że ściśle wiąże się on z nadmiarowością łączy, tak aby w przypadku wystąpienia awarii nie nastąpił przest&oacute;j sieci i by pakiety, pomimo zaistniałych problem&oacute;w, mogły szczęśliwie dotrzeć do celu.</p> </div><div class="K2FeedFullText"> <p>&nbsp;</p> <p>Aby zrozumieć sens stosowania tego typu rozwiązań prześledźmy prosty przykład przedstawiony na poniższym rysunku.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image1.png" alt="image1" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>Host1 pr&oacute;buje skomunikować się ze stacją Host2 lecz niestety komputerowi Host1 nie jest znany adres MAC komputera Host2. W tym celu w kierunku switcha S1 zostaje wysłane rozgłoszenie. Ramka broadcast poprze interfejs f0/4 trafia do przełącznika. Przełącznik ruch ten kopiuje na wszystkie aktywne interfejsy z wyjątkiem tego z kt&oacute;rego rozgłoszenie zostało otrzymane. Tak więc ruch brodcastowy zostaje wysłany z interfejsu f0/1 w kierunku switcha S2 oraz z interfejsu f0/3 w kierunku przełącznika S3. Rozgłoszenie zostaje odebrane przez przełącznik S2 i przekazane dalej w kierunku switcha S3, w tym samym czasie ten sam ruch zostaje odebrany przez przełącznik S3 (rozgłoszenie otrzymane od S1) i r&oacute;wnież skopiowane i przesłane dalej lecz tym razem w kierunku switcha S2. Tak więc przełączniki otrzymują kolejne kopie tej samej ramki, kt&oacute;re są przesyłane w nieskończoność - <strong>powstaje pętla</strong>. Jeśli Czytelniku czytałeś moje wcześniejsze wpisy bądź Masz wiedzę na temat warstwy 3 modelu ISO/OSI to pewnie wiesz o istnieniu parametru TTL (ang. Time to Live). Mechanizm ten odpowiada za zmniejszenie wartości pola o 1 za każdym razem gdy pakiet na swej drodze napotka router, tak więc w momencie osiągnięcia przez TTL wartości zero, router nie przekaże pakietu do kolejnego urządzenia sieciowego. W warstwie 2 niestety tego typu zabezpieczeń <strong>NIE MA</strong>. Jedynym sposobem na przerwanie powstałej <strong>burzy rozgłoszeniowej</strong> (ang. broadcast storm) jest wyłączenie dowolnego z aktywnych interfejs&oacute;w.</p> <p>&nbsp;</p> <p>Aby zademonstrować spos&oacute;b działania i skutki powstania burzy rozgłoszeniowej prześledźmy o to taki przykład w kt&oacute;rym to w sieci zbudowanej ze switchy występują nadmiarowe linki a na przełącznikach został wyłączony protok&oacute;ł STP. Przyjęta topologia sieci odpowiada rysunkowi powyżej.</p> <p>&nbsp;</p> <p>Aby wykryć i zdiagnozować burzę wykorzystamy polecenie: <strong>show processes cpu history</strong>. Po wydaniu polecenia zostanie wyświetlony histogram (a tak naprawdę trzy) przedstawiający użycie procesora. Zakres wyświetlonych danych obejmuje ostatnie 72 godziny.</p> <p>&nbsp;</p> <p>Pierwszy wykres obejmuje wykorzystanie procesora w procentach na sekundę w ciągu ostatnich 60 sekund (CPU percent per second - last 60 seconds), drugi wykorzystanie procesora w procentach na minutę w ciągu ostatnich 60 minut (CPU percent per minute - last 60 minutes), trzeci zaś wykorzystanie procesora w procentach na godzinę w ciągu ostatnich 72 godzin (CPU percent per hour - last 72 hours).</p> <p>&nbsp;</p> <p>Na osi x został przedstawiony czas (0 oznacza moment wydania polecenia), zaś na osi y został umiejscowiony poziom wykorzystania procesora.</p> <p>&nbsp;</p> <p>Jak można zaobserwować poniżej w momencie wydania polecenia użycie procesora było na poziomie 4% by w 20 sekundzie skoczyć do 7% i następnie w 50 sekundzie spaść zn&oacute;w do 4% Gwiazdki poniżej budują wykres.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image2.png" alt="image2" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Na każdym z przełącznik&oacute;w zostało wydane polecenie: <strong>no spanning-tree vlan 1</strong> nakazujące wyłączenie protokołu STP w domyślnej sieci VLAN1.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image3.png" alt="image3" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Wydanie polecenia wyłączającego STP na dw&oacute;ch pierwszych przełącznikach S1 i S2 jeszcze nie powoduje żadnych konsekwencji gdyż by burza broadcastowa mogła wystąpić musi powstać pętla.</p> <p>&nbsp;</p> <p>Wyłączenie protokołu STP na przełączniku S3 inicjuje burzę - mamy do czynienia z pętlą. Nie trzeba długo czekać (wystarczyło 5 sekund) by zauważyć op&oacute;źnienie podczas wprowadzania poleceń systemu IOS. Wydanie polecenia pokazującego wykorzystanie procesora ukazuje nam zużycie CPU na poziomie 99-100% (ostatnia minuta).</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image4.png" alt="image4" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Dodatkowo już po minucie zaistnienia burzy dochodzi kolejny problem związany z niestabilnością tablicy adres&oacute;w MAC. Trwająca burza rozgłoszeniowa powoduje nieustanne aktualizowanie tablic adres&oacute;w MAC. Każda z aktualizacji oznacza zmianę drogi wysyłania ramek - pamiętaj, że przełącznik celem określenia interfejsu przez kt&oacute;ry ma wysłać daną ramkę tak by dotarła do miejsca przeznaczenia analizuje wszystkie otrzymane ramki (przypisanie: interfejs przełącznika - adres MAC).</p> <p>&nbsp;</p> <p>W naszym przykładzie oznacza to, że dla przełącznika S1 dany host jest raz dostępny poprzez interfejs f0/1 a raz f0/3. O zmianach tych, kt&oacute;re następują bardzo szybko jesteśmy informowani na bieżąco w postaci komunikat&oacute;w w linii CLI przełącznika.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image5.png" alt="image5" width="700" height="154" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Aby burza mogła zostać przerwana należy wyłączyć jeden z interfejs&oacute;w tak by przerwać powielanie jednych i tych samych ramek. Oczywiście problem burzy rozwiąże ponowne włączenie protokołu STP. I te rozwiązanie zostało wybrane. Po obserwacji zużycia CPU dochodzimy do wniosku - problem z burzą został rozwiązany.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image6.png" alt="image6" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Można by zadać pytanie - Gdzie w tym wszystkim protok&oacute;ł STP i w jaki spos&oacute;b nie dopuszcza on do powstania pętli? Ot&oacute;ż protok&oacute;ł ten domyślnie jest włączony na każdym porcie switcha i jego gł&oacute;wnym zadaniem jest zapobieganie sytuacji opisanej powyżej. Realizacja tego zadania odbywa się poprzez czasowe wyłączenie (blokowanie) połączeń pomiędzy przełącznikami, kt&oacute;re potencjalnie mogły by być źr&oacute;dłem powstania pętli. Tak więc dzięki zastosowaniu protokołu STP nasza topologia sieciowa mogłaby przybrać o to taką postać.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image7.png" alt="image7" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>Efektem działania protokołu STP jest zablokowanie łącza pomiędzy switchem S1 a S3. Łącze te jest zablokowane czasowo, co oznacza, że w przypadku wystąpienia problem&oacute;w z innymi łączami zostanie ono przywr&oacute;cone by zapewnić ciągłość komunikacji. Zablokowanie ruchu sieciowego pomiędzy przełącznikami uniemożliwia powstanie pętli, kt&oacute;rej następstwem mogłaby być burza rozgłoszeniowa powodująca problemy z komunikacją.</p> <p>&nbsp;</p> <p>Po tym wprowadzeniu na pewno Czytelniku w głowie masz szereg pytań - Jak działa protok&oacute;ł?, Jakie kryteria decydują o zablokowaniu danego łącza? czy Jak dokonać jego prawidłowej konfiguracji?</p> <p>&nbsp;</p> <p>Zanim przejdziemy z opisem dalej by na tak postawione pytania udzielić odpowiedzi, winien jestem jeszcze parę sł&oacute;w wyjaśnienia. Zacznijmy może tak - na uwadze należy mieć fakt, iż protok&oacute;ł STP od dawna już nie jest obowiązującym standardem (z powodu swoich wad) i że w nowoczesnych sieciach po prostu się go <strong>NIE STOSUJE</strong>. Co nie znaczy, że na swej drodze administratora się z nim nie spotkasz. Tworzenie artykułu dość obszernego i co tu m&oacute;wiąc tematycznie nie łatwego nie miało by sensu gdyby opierać się tylko na założeniu, że przypadkiem nasze drogi z tym protokołem się nie skrzyżują. Protok&oacute;ł STP i spos&oacute;b jego działania po prostu warto poznać gdyż stanowi on bazę do poznania bardziej zaawansowanych rozwiązań - takich jak PVST czy RSTP.</p> <p>&nbsp;</p> <p>W wpisie tym przyjąłem założenie w kt&oacute;rym to będę odnosić się do protokołu STP a tak naprawdę przełączniki będą działać pod kontrolą PVST czyli STP z obsługą sieci VLAN.</p> <p>&nbsp;</p> <p>Tak więc już wiesz że gł&oacute;wnym zadaniem protokołu STP jest wykrycie fizycznych pętli i wyeliminowanie ich poprzez wynegocjowanie wolnej od pętli topologii logicznej.</p> <p>&nbsp;</p> <p>Kr&oacute;tko m&oacute;wiąc</p> <ul> <li style="padding-left: 60px;">STP wykrywa pętle i blokuje nadmiarowe linki,</li> <li style="padding-left: 60px;">Zapewnia, że między dwoma dowolnymi urządzeniami jest tylko jedna aktywna ścieżka.</li> </ul> <p>&nbsp;</p> <p>Działanie protokołu STP opiera się o algorytm drzewa rozpinającego (ang. Spanning Tree Algorithm), to właśnie on jest odpowiedzialny za wyznaczenie drogi wolnej od pętli. Pierwszym z ważnych zadań algorytmu STA jest określenie puntu odniesienia, tzw. <strong>root bridge</strong> (korzeń drzewa). Korzeniem drzewa zostaje jeden z przełącznik&oacute;w, kt&oacute;ry w dalszych operacjach wyznaczania drogi jest punktem odniesienia dla kolejnych obliczeń. W kolejnym kroku STA określa wszystkie możliwe ścieżki do korzenia jeśli istnieją drogi alternatywne czyli więcej niż jedna ścieżka, wybierana jest najkorzystniejsza, zaś pozostałe drogi są blokowane. Blokowanie odbywa się poprzez wyłączenie ruchu sieciowego na danym porcie przełącznika. Przy czym co należy dodać blokowanie nie dotyczy ramek <strong>BPDU</strong> (ang. bridge protocol data unit), kt&oacute;rych zadaniem jest zapewnienie poprawnego działania protokołu poprzez komunikację z innymi przełącznikami (o ramkach BPDU więcej za chwilę).</p> <p>&nbsp;</p> <p>Najważniejsze pojęcia związane z działaniem protokołu STP to:</p> <ul> <li style="padding-left: 60px;">Bridge ID (identyfikator switcha, identyfikator mostu),</li> <li style="padding-left: 60px;">Path Cost (koszt ścieżki).</li> </ul> <p>&nbsp;</p> <p>Identyfikator BID (Bridge ID) jest 8 bajtową liczbą, w skład identyfikatora wchodzi tzw. priorytet oraz adres MAC. BID jednoznacznie identyfikuje każdy przełącznik i jest jedynym kryterium przy wyborze root-a (korzenia). Informacja o wartości BID jest przekazywana podczas wymiany ramek BPDU. Switch o najmniejszej wartości BID staje się root bridge.</p> <p>&nbsp;</p> <p>Jak już wspomniałem BID składa się z dw&oacute;ch części:</p> <ul> <li style="padding-left: 60px;">priorytet (2 bajty) na urządzeniach Cisco domyślnie 32768</li> <li style="padding-left: 60px;">adresu MAC</li> </ul> <p>&nbsp;</p> <p>Priorytet najczęściej podaje się dziesiętnie, a MAC w postaci szesnastkowej.</p> <p>&nbsp;</p> <p>W protokole STP punkt odniesienia czyli przełącznik root względem, kt&oacute;rego będą przeprowadzane obliczenia wybierany jest dla wszystkich VLAN-&oacute;w naraz (jeden korzeń w całej sieci). Po dokonanych usprawnieniach i poprawkach np. PVST, należało zmodyfikować BID, tak aby przenosił informację o numerze VLAN gdyż protok&oacute;ł ten wymaga osobnej instancji STP dla każdej sieci VLAN. Dlatego też z dw&oacute;ch bajt&oacute;w pozostawiono 4 bity na priorytet, zaś pozostałe 12 bit&oacute;w przydzielono na identyfikator VID (VLAN ID).</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image8.png" alt="image8" width="700" height="466" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>W domyślnej konfiguracji priorytet przełącznika jest ustawiony na wartość 32768 ustawienie to powoduje, że w procesie elekcji rootem zostanie przełącznik o najniższym adresie MAC. Wyboru tego nie powinno się pozostawić przypadkowi bo może się okazać, że funkcję tą będzie pełnił najmniej wydajny przełącznik - należy więc ręcznie zdefiniować priorytet na wybranym switchu, kt&oacute;ry ma zostać rootem (opis w dalszej części wpisu).</p> <p>&nbsp;</p> <p>Koszt ścieżki jest ściśle powiązany z prędkością łącza, została zastosowana zasada, że im wyższa prędkość, tym niższy koszt. Na tej podstawie przełączniki określają, jak daleko mają do korzenia (roota).</p> <p>&nbsp;</p> <p style="text-align: left;">W pierwotnej wersji protokołu STP (802.1D) koszt był wyliczany jako: <strong>1000/pasmo ścieżki w Mbps</strong>. Jak widać poniżej rozwiązanie te okazało się nie wystarczające gdyż po wprowadzeniu nowych standard&oacute;w przesyłu danych koszt ścieżki zawsze wynosił 1. Taki sam koszt był przypisany łączu o prędkości 1 Gbps jak i łączu dziesięciokrotnie szybszemu. Aby uwzględnić tę zmianę IEEE dokonało poprawki zmieniając skalę na nieliniową, tak by koszt uwzględniał faktyczną prędkość łącza.</p> <p style="text-align: center;">&nbsp;</p> <table border="1" style="border-collapse: collapse; margin-left: auto; margin-right: auto;" cellspacing="0" cellpadding="0"> <tbody> <tr> <td style="width: 153.5pt; border: 1pt solid windowtext; padding: 0cm 5.4pt;" valign="top" width="205">Prędkość łącza</td> <td style="width: 153.55pt; border-width: 1pt 1pt 1pt medium; border-style: solid solid solid none; border-color: windowtext windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top" width="205">Koszt ścieżki</td> <td style="width: 153.55pt; border-width: 1pt 1pt 1pt medium; border-style: solid solid solid none; border-color: windowtext windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top" width="205">Koszt ścieżki</td> </tr> <tr> <td style="width: 153.5pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt;" valign="top" width="205">10 Gbps</td> <td style="width: 153.55pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top" width="205">2</td> <td style="width: 153.55pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top" width="205">1</td> </tr> <tr> <td style="width: 153.5pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt;" valign="top" width="205">1 Gbps</td> <td style="width: 153.55pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top" width="205">4</td> <td style="width: 153.55pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top" width="205">1</td> </tr> <tr> <td style="width: 153.5pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt;" valign="top" width="205">100 Mbps</td> <td style="width: 153.55pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top" width="205">19</td> <td style="width: 153.55pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top" width="205">10</td> </tr> <tr> <td style="width: 153.5pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt;" valign="top" width="205">10 Mbps</td> <td style="width: 153.55pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top" width="205">100</td> <td style="width: 153.55pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top" width="205">100</td> </tr> </tbody> </table> <p style="text-align: center;">&nbsp;</p> <p>Możemy ręcznie dokonać modyfikacji kosztu ścieżki poprzez zmianę kosztu portu. Zmianę tą jednak wykonujemy jeśli mamy ku temu dobry pow&oacute;d. Zmiana kosztu ścieżki została opisana w dalszej części wpisu.</p> <p>&nbsp;</p> <p>Aby protok&oacute;ł STP m&oacute;gł działać i pełnić swoją rolę musi mieć możliwość komunikacji z innymi przełącznikami. Komunikacja ta odbywa się dzięki ramkom BPDU.</p> <p>&nbsp;</p> <p>Switch dla każdego swojego portu zapisuje kopię najlepszej ramki BPDU, kt&oacute;rą &bdquo;zobaczył&rdquo; na danym porcie. Przez &bdquo;zobaczyć&rdquo; należy rozumieć ramkę kt&oacute;rą przełącznik otrzymał bądź zamierza wysłać.</p> <p>&nbsp;</p> <p>Ramka BPDU obejmuje 12 p&oacute;l i w jej budowie możemy wyr&oacute;żnić trzy gł&oacute;wne części tj.:</p> <ul> <li style="padding-left: 60px;">Cztery pierwsze pola: <strong>Identyfikator protokołu</strong>, <strong>Wersja</strong>, <strong>Typ komunikatu</strong> oraz <strong>Flagi</strong> odpowiedzialne są za identyfikację ramki BPDU,</li> <li style="padding-left: 60px;">Kolejne cztery pola (<strong>Identyfikator mostu gł&oacute;wnego</strong>, <strong>Koszt ścieżki</strong>, <strong>Identyfikator mostu</strong>, <strong>Identyfikator portu</strong>) odpowiedzialne są za przesłanie informacji pozwalających ustalić roota oraz wybranie najlepszych ścieżek,</li> <li style="padding-left: 60px;">Ostanie cztery pola (<strong>Wiek komunikatu</strong>, <strong>Wiek maksymalny</strong>, <strong>Czas powitania</strong>, <strong>Op&oacute;źnienie</strong> przekazania) są polami timer&oacute;w (zegar&oacute;w protokołu STP).</li> </ul> <p>&nbsp;</p> <p>Ramka BPDU została schematycznie przedstawiona na rysunku poniżej:</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image9.png" alt="image9" width="700" height="51" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>I poniżej ramka BPDU, kt&oacute;ra została przechwycona z wykorzystaniem aplikacji Wireshark</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image10.png" alt="image10" width="700" height="529" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Ramka BPDU jest enkapsulowana w ramce ethernetowej a następnie wysyłana na adres grupowy MAC: 01:80:C2:00:00:00 Adres ten jest odpowiedzialny za obsługę protokołu STP i informacje przesłane za jego pośrednictwem trafią do wszystkich przełącznik&oacute;w w obrębie danej domeny rozgłoszeniowej.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image11.png" alt="image11" width="700" height="200" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Zbieżność protokołu STP jest osiągana w trzech krokach:</p> <ul> <li style="padding-left: 60px;">wyb&oacute;r Root Bridge,</li> <li style="padding-left: 60px;">wyb&oacute;r Root Port&oacute;w,</li> <li style="padding-left: 60px;">wyb&oacute;r Port&oacute;w desygnowanych.</li> </ul> <p>&nbsp;</p> <p>Po uruchomieniu wszystkich urządzeń w sieci, wszystkie przełączniki rozgłaszają kompletnie niesp&oacute;jne informacje. Dzieje się tak gdyż każdy z switchy uznaje siebie za root-a.</p> <p>&nbsp;</p> <p>W przykładzie poniżej zastosowałem pewne uproszczenie gdyż przyjęto jeden adres MAC na switch a w rzeczywistości scenariusz powinien być rozpatrywany w odniesieniu do każdego z użytych interfejs&oacute;w. Uproszczenie zastosowałem by na samym początku uczenia się działania protokołu STP nie zostać przytłoczonym zbyt dużą ilością informacji. W dalszej części wpisu będzie rozważana topologia trochę bardziej złożona.</p> <p>&nbsp;</p> <p>Proces elekcji root-a rozpoczyna się od wysłania ramek BPDU w kt&oacute;rych każdy z przełącznik&oacute;w siebie samego wybiera do pełnienia tej roli. Jak widać po poniższym rysunku i analizie przesłanych danych rootem zostanie przełącznik S1 gdyż ten switch ma przypisany najmniejszy priorytet. A jak już wiesz wartość priorytetu ma większą wagę niż adres MAC. Ale wszystko po kolei.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image12.png" alt="image12" width="700" height="492" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Przełącznik S3 po otrzymaniu ramki BPDU od switcha S2 sprawdza zawarte dane w otrzymanej ramce BPDU. W kolejnym kroku następuje por&oacute;wnanie swoich danych z danymi otrzymanymi. Wartości priorytetu (32769) są jednakowe więc kryterium, kt&oacute;re będzie rozstrzygać o pierwszeństwie będzie adres MAC. Por&oacute;wnując adresy MAC przełącznik S3 uzna switch S2 jako root gdyż otrzymany adres MAC od S2 ma mniejszą wartość niż własny. Informacje zawarte w ramce BPDU zostają prze przełącznik zapisane (zostaną wykorzystane w kolejnym etapie elekcji).</p> <p>&nbsp;</p> <p>Przełącznik S2 ramkę BPDU wysyła w kierunku S1. Por&oacute;wnanie wartości prowadzi do odrzucenia przez przełącznik S1 otrzymanej ramki gdyż wartość priorytetu w ramce BPDU jest wyższa od tej kt&oacute;ra jest przypisana switchowi S1.</p> <p>&nbsp;</p> <p>Przełącznik S3 na tym etapie uznaje za roota switcha S2. Dlatego w kolejnych ramkach BPDU rozgłasza dane przełącznika S2. Ramki BPDU zostają wysłane w kierunku przełącznika S2 i S1.</p> <p>&nbsp;</p> <p>Przełącznik S1 po raz kolejny otrzymaną ramkę BPDU odrzuca gdyż wartość priorytetu otrzymanego jest większa od własnego priorytetu.</p> <p>&nbsp;</p> <p>Przełącznik S2 otrzymaną ramkę r&oacute;wnież odrzuca gdyż otrzymane dane pokrywają się z danymi własnymi.</p> <p>&nbsp;</p> <p>Ramki BPDU zostają wysłane z przełącznika S1 do przełącznik&oacute;w S2 i S3.</p> <p>&nbsp;</p> <p>Switch S2 po otrzymaniu informacji od S1 uznaje go za roota gdyż dane priorytetu otrzymanego są niższe od własnych.</p> <p>&nbsp;</p> <p>Switch S3 r&oacute;wnież uaktualnia swoje informacje i za roota przyjmuje przełącznik S1, tak jak w przypadku switcha S2 decyzja ta zostaje podjęta po analizie otrzymanych informacji a konkretnie wartości otrzymanego priorytetu.</p> <p>&nbsp;</p> <p>Rootem zostaje przełącznik S1.</p> <p>&nbsp;</p> <p>Sprawdźmy zatem jak przedstawia się konfiguracja przełącznik&oacute;w.</p> <p>&nbsp;</p> <p>Podstawowym poleceniem, kt&oacute;re pozwoli nam na uzyskanie informacji na temat protokołu STP jest komenda: <strong>show spannig-tree</strong></p> <p>&nbsp;</p> <p>Na pierwszy rzut przejrzyjmy konfigurację przełącznika S1.</p> <p>&nbsp;</p> <p>Po wydaniu polecenia: <strong>show spannig-tree </strong>uzyskujemy dane na podstawie, kt&oacute;rych możemy stwierdzić, kt&oacute;ry przełącznik pełni funkcję roota.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image13.png" alt="image13" width="700" height="341" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Dane przełącznika S1, kt&oacute;re posłużyły do zbudowania ramki BPDU wysłanej do innych switchy zawarte są w sekcji <strong>Bridge ID</strong> (punkt 1). Tak więc znajdziemy w nich wartość ustalonego priorytetu (Priority) oraz adres MAC interfejsu biorącego udział w procesie STP.</p> <p>&nbsp;</p> <p>Gdy podczas przeglądania informacji zawartych po wydaniu polecenia:<strong> show spannig-tree </strong>odnajdziemy komunikat: <strong>This bridge is the root</strong> oznacza to, że przełącznik ten w procesie STP jest punktem odniesienia dla wszystkich pozostałych przełącznik&oacute;w jest przełącznikiem gł&oacute;wnym. (punkt 2).</p> <p>&nbsp;</p> <p>Przyjrzyjmy się kolejnemu przełącznikowi i sprawdźmy konfigurację ustawień STP na switchu S2.</p> <p>&nbsp;</p> <p>Jak widać poniżej w sekcji Root ID znajdują się dane wskazujące na przełącznik S1 jako ten kt&oacute;ry pełni rolę root-a. W sekcji Bridge ID znajdują się dane przełącznika S2. Por&oacute;wnując te dane ze sobą dochodzimy do wniosku iż switch ten nie może pełnić rolę root-a gdyż jego wartość priorytetu jest wyższa od priorytetu przełącznika S1.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image14.png" alt="image14" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Uważnego Czytelnika pewnie zainteresuje wartość priorytetu przełącznika ustalona na 32769. Jeszcze chwilę temu wspomniałem, że domyślną wartością dla switchy jest wartość 32768. Więc skąd ta r&oacute;żnica wynosząca aż 1? Dodam, że przełącznik S2 oczywiście korzysta z ustawień domyślnych - nic w konfiguracji nie zostało zmienione. Wartość domyślna jest powiększona o 1, ponieważ na przełączniku istnieje domyślna sieć VLAN o przypisanym identyfikatorze 1 (sieć VLAN0001 jest skonfigurowana na każdym z przełącznik&oacute;w). Oznacza to, że istnienie sieci VLAN ma wpływ na wartość priorytetu. Gdyby na przełączniku został skonfigurowany dodatkowy VLAN o identyfikatorze 20 wartość priorytetu wzrosłaby o tą wartość.</p> <p>&nbsp;</p> <p>Spos&oacute;b wyliczenia wartości priorytetu przedstawia poniższy rysunek.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image15.png" alt="image15" width="700" height="194" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Poniżej został jeszcze przedstawiony przykład w kt&oacute;rym interfejs przełącznika S2 został przeniesiony do sieci VLAN o identyfikatorze 10. Jak widać zmiana położenia interfejsu względem VLANu zmieniła wartość priorytetu. Wartość ta wynosi 32778 (wartość domyślna 32768 + identyfikator sieci VLAN 10).</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image16.png" alt="image16" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Sprawdzenie konfiguracji STP przełącznika S3 utwierdza nas w przekonaniu iż to switch S1 pełni rolę root-a.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image17.png" alt="image17" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>W naszej testowej sieci zaszczytną rolę root-a pełni przełącznik S1. Można by było zapytać - Co się stanie w przypadku gdy go wyłączymy? i Jak w takiej sytuacji zareaguje protok&oacute;ł STP?</p> <p>&nbsp;</p> <p>Aby odpowiedzieć sobie na tak postawione pytania interfejsy f0/1 oraz f0/3 przełącznika S1 zostały wyłączone - co pokazuje poniższy zrzut.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image18.png" alt="image18" width="700" height="195" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Aby sprawdzić konfigurację STP na przełączniku S2 ponownie wydajemy polecenie: <strong>show spanning-tree</strong>. Wydanie polecenia informuje nas iż ten switch pełni rolę root-a.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image19.png" alt="image19" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Wydanie tego samego polecenia na przełączniku S3 potwierdza informacje uzyskane w poprzednim kroku - rola root-a została przypisana switchowi S2.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image20.png" alt="image20" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>I zn&oacute;w można by było zapytać - Czemu funkcja ta została przypisana przełącznikowi S2? Pewnie część z Was już zna odpowiedź. Analiza danych z obu przełącznik&oacute;w (sekcja Bridge ID) przekonuje nas iż wartość priorytetu dla obu przełącznik&oacute;w jest jednakowa i wynosi 32769. W takim przypadku gdy nie można rozstrzygnąć elekcji przy wykorzystaniu wartości priorytetu decyduje najmniejsza wartość interfejsu adresu MAC. Por&oacute;wnując wartości adres&oacute;w:</p> <ul> <li style="padding-left: 60px;">przełącznik S2 - <strong>0817.35e3.b500</strong>,</li> <li style="padding-left: 60px;">przełącznik S3 - <strong>8cb6.4fd8.fa00</strong>.</li> </ul> <p>dochodzimy do wniosku iż wartość interfejsu MAC przełącznika S2 jest niższa. Przełącznik ten zaczyna pełnić rolę root bridge.</p> <p>&nbsp;</p> <p>Blokowanie ruchu sieciowego odbywa się poprzez czasowe wyłączenie interfejsu przełącznika, kt&oacute;ry z punktu widzenia protokołu STP spowodowałby powstanie pętli. Informacje o stanie port&oacute;w uzyskamy r&oacute;wnież dzięki poleceniu: <strong>show spanning-tree</strong></p> <p>&nbsp;</p> <p>Przyjrzyjmy się jeszcze raz konfiguracji STP na przełączniku S1.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image21.png" alt="image21" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Na rysunku znajduje się tabela w kt&oacute;rej pierwszą kolumną jest <strong>Interface</strong> W kolumnie tej zostały ukazane wszystkie porty przełącznika biorące udział w procesie STP.</p> <p>&nbsp;</p> <p>Druga kolumna przedstawia rolę jaką pełni dany interfejs.</p> <p>&nbsp;</p> <p>W procesie STP jedną z r&oacute;l jaką może pełnić interfejs jest rola: <strong>portu gł&oacute;wnego</strong>.</p> <p>&nbsp;</p> <p><strong>Root port</strong> (port gł&oacute;wny) - port ten zawsze znajduje się najbliżej przełącznika pełniącego rolę root-a. Oznacza to, że przełącznik interfejs&oacute;w w tym stanie nie będzie posiadał lecz rolę tę będą pełniły porty leżące najbliżej niego czyli interfejsy sąsiad&oacute;w. W naszym scenariuszu będzie to interfejs f0/1 przełącznika S2 oraz interfejs f0/3 przełącznika S3. Sprawdzenie konfiguracji stanu port&oacute;w na przełącznikach S2 oraz S3 potwierdza nasze rozważania.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image22.png" alt="image22" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Nasza testowa topologia przyjmie więc postać:</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image23.png" alt="image23" width="700" height="477" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Drugą rolą jaką może pełnić port przełącznika jest rola: <strong>portu desygnowanego</strong>.</p> <p>&nbsp;</p> <p><strong>Designated port</strong> jest portem, kt&oacute;rego zadaniem jest przekazanie ruch sieciowego w kierunku innych przełącznik&oacute;w. Ponieważ rootem został przełącznik S1 tak więc wszystkie jego porty będą znajdować się w tym stanie. Co należy jeszcze wiedzieć o porcie desygnowanym? - to to że w połączeniach point-to-point port pracujący w tym trybie może być tylko jeden. Oznacza to, że nie zajdzie sytuacja w kt&oacute;rej po obu stronach połączonych ze sobą przełącznik&oacute;w, oba porty będą ustawione do pracy w trybie designated.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image24.png" alt="image24" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Portem desygnowanym został r&oacute;wnież interfejs f0/3 przełącznika S2.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image25.png" alt="image25" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Uzupełnijmy więc nasz diagram sieci o nowe informacje.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image26.png" alt="image26" width="700" height="475" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Przy porcie f0/1 przełącznika S3 w kolumnie <strong>Role</strong> widnieje skr&oacute;t <strong>Altn</strong> (rysunek powyżej) oznacza to, że port pełni rolę portu alternatywnego (ang. alternate port). Port alternatywny jest to port, kt&oacute;ry może przekazywać ramki ale w tym momencie jest wyłączony (zablokowany) tak by nie powstała pętla. Nazwa alternate port jest używana w protokołach PVST oraz RSTP zaś w przypadku zwykłego STP port ten przyjmuje nazwę non-designated port.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image27.png" alt="image27" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Tak więc dodajmy kolejne dane do naszego diagramu sieci a dodatkowo uzupełnijmy go o koszt ścieżek (koszt wszystkich ścieżek wynosi 19, gdyż połączenia pomiędzy przełącznikami wynoszą 100 Mbps &ndash; standard FastEthernet).</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image28.png" alt="image28" width="700" height="475" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po uzupełnieniu wszystkich danych mogą nasunąć się pewne pytania. Pierwsze z nich to - Czy root portem w przypadku przełącznika S2 m&oacute;głby zostać interfejs f0/3? Tu w udzieleniu odpowiedzi pomogą nam koszty ścieżek. Odpowiedź brzmi - NIE. Koszt dotarcia do root-a w przypadku użycia interfejsu f0/1 wynosi 19 natomiast koszt dotarcia do S1 przy użyciu portu f0/3 r&oacute;wna się 38 (19 - ścieżka S2-S3 +19 &ndash; ścieżka S3-S1 ).</p> <p>&nbsp;</p> <p>Drugie pytanie - Dlaczego portem blokowanym (alternate port) jest interfejs f0/1 przełącznika S3 a nie interfejs f0/3 switcha S2. Tu by udzielić poprawnej odpowiedzi należy por&oacute;wnać adresy MAC obu użytych interfejs&oacute;w. Niższy adres MAC posiada przełącznik S2 dlatego interfejs f0/3 został wybrany jak designated port.</p> <p>&nbsp;</p> <p>Trzecie pytanko - A co w przypadku w kt&oacute;rym koszt dotarcia do root-a dla obu interfejs&oacute;w wyni&oacute;słby tyle samo? W takim przypadku brany jest pod uwagę tzw. <strong>priorytet portu</strong>. Dla przełącznik&oacute;w Cisco wartość priorytetu domyślnie została ustalona na wartość 128. Wartość priorytetu może wahać się od 0 do 240 lecz musi spełnić jeden warunek &ndash; wartość priorytetu musi być wielokrotnością liczby 16. Pierwszeństwo oczywiście mają mniejsze wartości.</p> <p>&nbsp;</p> <p>I tu r&oacute;wnież może dojść do sytuacji w kt&oacute;rej priorytetu portu będą miały przypisane te same wartości - wyb&oacute;r interfejsu dalej nie będzie rozstrzygnięty. W takim przypadku o wyborze interfejsu decyduje <strong>numer portu</strong>. Priorytet portu w połączeniu z numerem portu nazywany jest <strong>identyfikatorem portu</strong>.</p> <p>&nbsp;</p> <p>Poniżej przedstawiono zrzut przedstawiający konfigurację STP przełącznika S2. Po wydaniu polecenia: <strong>show spanning-tree</strong> uzyskamy informację o koszcie (kolumna Cost) i dodatkowo poznamy identyfikator portu (kolumna Prio.Nbr). Np. interfejs f0/1 posiada przypisany priorytet 128 i numer portu wynosi 1 zaś koszt trasy został ustalony na 19.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image29.png" alt="image29" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Aby port przełącznika m&oacute;gł pełnić powierzoną mu rolę musi przejść przez wszystkie stany procesu STP. Stany te ściśle związane są z zegarami STP (został określony czas po jakim port może zmienić sw&oacute;j stan) a gł&oacute;wnym ich zadaniem jest uzyskanie topologii wolnej od pętli.</p> <p>&nbsp;</p> <p>Możliwe stany portu zostały przedstawione i opisane poniżej:</p> <p>&nbsp;</p> <p><strong>Disabled (stan wyłączenia)</strong> - port jest wyłączony administracyjnie (shutdown), dlatego też odrzuca odbierane na nim ramki a co za tym idzie przełącznik z wykorzystaniem tego interfejsu nie uczy się adres&oacute;w MAC ani nie odbiera ramek BPDU (brak uczestnictwa w procesie STP)</p> <p>&nbsp;</p> <p><strong>Blocking (stan blokowania</strong>) - port jest zablokowany (niedesygnowany) co oznacza, że nie przekazuje ramek zawierających dane oraz odrzuca wszystkie ramki z danymi przekazane z innych interfejs&oacute;w. Proces uczenia się adres&oacute;w MAC jest wyłączony lecz interfejs odbiera i przetwarza ramki BPDU co oznacza, że stan interfejsu w zależności od zaistniałych warunk&oacute;w może ulec zmianie</p> <p>&nbsp;</p> <p><strong>Listening (stan nasłuchiwania)</strong> - w tym stanie port odrzuca wszystkie ramki z danymi oraz nie uczy się adres&oacute;w MAC. Port w tym stanie jest potencjalnym kandydatem do osiągnięcia funkcji root port bądź designated port dlatego też interfejs odbiera i przetwarza ramki BPDU a dodatkowo transmituje własne. Port przejdzie w stan blokowania gdy nie zostanie spełniony warunek dotarcia do root-a z wykorzystaniem ścieżki o niższym koszcie. Oznacza to, iż przez interfejs ten musi prowadzić droga do mostu gł&oacute;wnego o niższym koszcie niż z interfejs&oacute;w pozostałych.</p> <p>&nbsp;</p> <p><strong>Learning (uczenie się)</strong> - port nie przekazuje żadnych ramek z danymi, następuje przygotowanie do tego procesu dlatego też tablica adres&oacute;w MAC przełącznika wypełnia się adresami MAC. Ramki BPDU są odbierane, przekazywane i transmitowane.</p> <p>&nbsp;</p> <p><strong>Forwarding (stan przekazywania)</strong> - port przełącznika stał się częścią topologii oznacza to że przekazuje i odbiera ramki zawierające dane, ramki BPDU są oczywiście odbierane, przekazywane i transmitowane.</p> <p>&nbsp;</p> <p>Przejdźmy zatem do trochę trudniejszego przykładu. Nasza testowa topologia sieciowa została przedstawiona na rysunku poniżej. Tworzą ją trzy przełącznik, kt&oacute;re zostały połączone ze sobą tak, że każdy z każdym jest spięty dwoma niezależnymi interfejsami.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image30.png" alt="image30" width="700" height="462" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Adresy MAC port&oacute;w został sprawdzone na każdym ze switchy (rysunek poniżej) i ich wartości zamieszczono na schemacie powyżej.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image31.png" alt="image31" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Przełączniki zostały uruchomione. Protok&oacute;ł STP rozpoczyna działanie by wyznaczyć trasę, kt&oacute;ra będzie wolna od pętli.</p> <p>&nbsp;</p> <p>Poniżej na rysunku przedstawiono efekt działania protokołu STP na każdym z przełącznik&oacute;w.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image32.png" alt="image32" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Przeglądając powyższą konfigurację procesu STP możemy dojść do następujących wniosk&oacute;w:</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">1 - przełącznikiem root został wybrany switch S2,</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">2 - wszystkie interesy przełącznika S2 pełnią rolę port&oacute;w desygnowanych,</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">3 - funkcję root port pełnią interfejsy: f0/1 przełącznika S1 oraz f0/1 przełącznika S3,</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">4 - portami blokowanymi (alternate port) są interfejsy: f0/2 przełącznika S1 oraz f0/2, f0/3, f0/4 przełącznika S3.</p> <p>&nbsp;</p> <p style="margin-bottom: 0.0001pt;">Celem lepszego zobrazowania wytyczonej ścieżki wszystkie powyższe informacje zostały zebrane na diagramie sieci poniżej.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image33.png" alt="image33" width="700" height="478" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Odpowiedzmy więc sobie na pytanie - Czemu została wytyczono taką drogę przesyłu pakiet&oacute;w?</p> <p>&nbsp;</p> <p>Rozpoczniemy od analizy adres&oacute;w MAC biorących udział w procesie STP.</p> <p>&nbsp;</p> <p>Najniższy adres MAC posiada interfejs f0/1 przełącznika S2 (0817.35E3.B501). Wszystkie przełączniki mają domyślnie ustaloną wartość priorytetu (32768) i domyślnie istnieje skonfigurowany jeden VLAN o identyfikatorze 1. Tak więc wartość priorytetu wyniesie 32769.</p> <p>&nbsp;</p> <p>Przy pomocy wartości priorytetu nie możemy określić, kt&oacute;ry z przełącznik&oacute;w będzie pełnić funkcję root-a.</p> <p>&nbsp;</p> <p>Gdy priorytet na wszystkich przełącznikach wynosi tyle samo, kryterium rozstrzygającym jest adres MAC. Najniższy adres MAC należy do interfejsu f0/1 przełącznika S2 tak więc ten przełącznik zaczyna pełnić funkcję root bridge.</p> <p>&nbsp;</p> <p>Ponieważ przełącznik S2 został root-em wszystkie jego interfejsy pełnią rolę port&oacute;w desygnowanych.</p> <p>&nbsp;</p> <p>Portem pełniącym rolę root port na przełączniku S1 został interfejs f0/1 gdyż posiada on najniższy adres MAC &ndash; priorytet port&oacute;w ma przypisaną domyślną wartość 128 (wszystkie interfejsy, wszystkich przełącznik&oacute;w). Interfejsy f0/3 i f0/4 nie mogą pełnić roli root port gdyż koszt dotarcia do przełącznika S2 z poziomu tych port&oacute;w wyni&oacute;słby 38. Koszt dla interfejsu f0/1 wynosi 19. Interfejsy f0/3 i f0/4 pełnią rolę port&oacute;w desygnowanych. Rola została im przypisana ponieważ ich adresy MAC mają niższa wartość w por&oacute;wnaniu do adres&oacute;w MAC sąsiada (przełącznik S3).</p> <p>&nbsp;</p> <p>W przypadku przełącznika S3 jako root port został wybrany interfejs f0/1 gdyż adres MAC tego interfejsu jest najniższy a koszt dotarcia do root bridge wynosi 19. Tak jak w przypadku przełącznika S1 dwa jego interfejsy f0/3 oraz f0/4 nie mogły zostać root portami ponieważ koszt dotarcia do mostu z ich wykorzystaniem wynosi 38. Ponieważ interfejsy te są połączone z interfejsami pełniącymi już rolę port&oacute;w desygnowanych ich stan został określony jako alternate port. Interfejsy te przez protok&oacute;ł STP zostały wyłączone jako te kt&oacute;re by powodowały powstanie pętli.</p> <p>&nbsp;</p> <p>Interfejsy, kt&oacute;re przez protok&oacute;ł STP zostały r&oacute;wnież zablokowane to: interfejs f0/2 przełącznika S1 oraz interfejs f0/2 przełącznika S3. Przełączniki S1 i S3 mają już łączność z rootem tak więc każde kolejne fizyczne połączenie z przełącznikiem gł&oacute;wnym zostanie zablokowane by uniemożliwić powstanie pętli.</p> <p>&nbsp;</p> <p>Trasa pomiędzy przełącznikami został ustalona.</p> <p>&nbsp;</p> <p>W tym scenariuszu nie ingerowaliśmy w wyb&oacute;r przełącznika gł&oacute;wnego wszystkie ustalenia protokołu STP odbyły się z wykorzystaniem domyślnych wartości. Zadajmy pytanie &ndash; Jakie czynności należy wykonać aby root-em został przełącznik, kt&oacute;ry sam wybierzemy ?</p> <p>&nbsp;</p> <p>Zadanie te możemy wykonać na dwa sposoby:</p> <ul> <li style="padding-left: 60px;">pierwszy spos&oacute;b: wykorzystanie polecenia - <strong>spanning-tree vlan &lt;id_VLAN&gt; root primary</strong></li> <li style="padding-left: 60px;">drugi spos&oacute;b: wykorzystanie polecenia - <strong>spanning-tree &lt;id_VLAN&gt; priority &lt;wartość&gt;</strong></li> </ul> <p>&nbsp;</p> <p>Oba polecenia wydajemy w trybie konfiguracji globalnej. Zał&oacute;żmy, że zależy nam aby to przełącznik S1 został rootem. Wydajmy więc pierwsze z poleceń.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image34.png" alt="image34" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po wydaniu komendy sprawdźmy efekt jej wykonania. Jak można zauważyć switch S1 został przełącznikiem gł&oacute;wnym.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image35.png" alt="image35" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Wykorzystajmy drugi z sposob&oacute;w i sprawmy aby teraz switch S3 uzyskał status root-a. Zostało wydane polecenie: <strong>spanning-tree vlan 1 priority 20000</strong> Jak można stwierdzić komenda nie została wykonana gdyż wartość priorytetu musi być wielokrotnością 4096. Poprawmy naszą komendę i spr&oacute;bujmy wydać polecenie: <strong>spanning-tree vlan 1 priority 20480</strong> Tym razem wydanie komendy kończy się sukcesem.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image36.png" alt="image36" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Sprawdzenie efekt&oacute;w przeprowadzonej konfiguracji przekonuje nas, że przełącznik S3 pełni teraz rolę roota.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image37.png" alt="image37" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Jak jest r&oacute;żnica pomiędzy poleceniami? Zacznijmy od końca &ndash; wykorzystanie polecenia: <strong>spanning-tree &lt;id_VLAN&gt; priority &lt;wartość&gt; </strong>wymusza na nas dobranie takiej wartości priorytetu by ta okazała się najniższa a tym samym pozwoliła switchowi na pełnienie roli przełącznika gł&oacute;wnego (wartość priorytetu w przypadku PVST jest ustalana w obrębie VLAN-u). W przykładzie z wykorzystaniem komendy: <strong>spanning-tree vlan &lt;id_VLAN&gt; root primary</strong>switch sam zadba o takie dobranie wartości priorytetu by stać się przełącznikiem gł&oacute;wnym.</p> <p>&nbsp;</p> <p>Powr&oacute;ćmy do naszej początkowej konfiguracji w kt&oacute;rej to S2 pełni rolę roota i zał&oacute;żmy, że z jakiś powod&oacute;w nie odpowiada nam wyb&oacute;r trasy ustalonej pomiędzy switchem S3 i S2. Chcemy aby nowa trasa przesyłu pakiet&oacute;w uwzględniła interfejs f0/3 bądź f0/4 przełącznika S3 a tym samym by podr&oacute;ż pakiet&oacute;w odbywała się poprzez przełącznik S1.</p> <p>&nbsp;</p> <p>M&oacute;wiąc może trochę prościej doprowadźmy do sytuacji w kt&oacute;rej to porty f0/1 oraz f0/2 przełącznika S3 zostaną zablokowane. Jak widać na zrzucie poniżej na razie mamy do czynienia z sytuacją odwrotną.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image38.png" alt="image38" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Aby zmienić drogę, podr&oacute;ży ramek musimy dokonać takiej modyfikacji kosztu ścieżki aby ta obecnie ustalona okazała się z punktu widzenia protokołu STP mniej korzystna. Dokonamy zmiany kosztu ścieżki dla interfejs&oacute;w f0/1 oraz f0/2 przełącznika S3.</p> <p>&nbsp;</p> <p>Zmianę kosztu ścieżki dokonujemy za pomocą polecenia: <strong>spanning-tree cost &lt;wartość&gt;</strong>. Polecenie wydajemy w trybie konfiguracji interfejsu. Wartość kosztu ścieżki z domyślnej 19 została zmieniona na 50. Aby powr&oacute;cić do wartości domyślnej skorzystaj z polecenia: <strong>no spanning-tree cost</strong></p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image39.png" alt="image39" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po dokonanej zmianie konfiguracji porty f0/1 oraz f0/2 przełącznika zostają zablokowane. Koszt dotarcia za ich pośrednictwem do S2 wynosi 50 i jest wartością wyższą (mniej korzystną &ndash; pamiętamy, że w przypadku kosztu ścieżki preferowane są wartości niższe) niż w przypadku skorzystania z drogi poprzez przełącznik S1 &ndash; koszt trasy 19+19=38</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image40.png" alt="image40" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Nasza topologia po tej zmianie przybiera następujący kształt.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image41.png" alt="image41" width="700" height="478" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Przy protokole STP w przypadku wykorzystania wielu łączy fizycznych możemy dokonać r&oacute;wnież zmiany aktualnie aktywnego kanału przesyłu danych (czytaj interfejsu, kt&oacute;ry będzie odpowiedzialny za przekazywanie ruchu sieciowego). Zmianę tą dokonujemy za pomocą zmiany priorytetu portu.</p> <p>&nbsp;</p> <p>Powr&oacute;ćmy z powrotem do sytuacji w kt&oacute;rej to przełącznik S2 został wybrany przez protok&oacute;ł STP do pełnienia roli przełącznika gł&oacute;wnego a komunikacja pomiędzy S2 i S3 odbywa się za pomocą interfejs&oacute;w f0/1 oraz f0/2 przełącznika S3.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image42.png" alt="image42" width="700" height="478" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Konfiguracja zmiany priorytet&oacute;w przełącznika zostanie wykonana na switchu S3.</p> <p>&nbsp;</p> <p>Jak można zaobserwować poniżej aktywnym interfejsem przełącznika S3, kt&oacute;ry jest odpowiedzialny za przesyłanie ramek jest port f0/1 (jeszcze w stanie nasłuchiwania) natomiast blokowanym portem jest f0/2. Spr&oacute;bujmy ten stan rzeczy zmienić i doprowadzić do sytuacji w kt&oacute;rej interfejsy zamienią się rolami tj. f0/1 będzie portem blokowanym natomiast f0/2 będzie interfejsem obsługującym ruch sieciowy.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image43.png" alt="image43" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Aby porty zamieniły się swoimi rolami musimy doprowadzić do sytuacji w kt&oacute;rej protok&oacute;ł STP stwierdzi, że korzystniejszą opcją będzie powierzenie roli root port interfejsowi f0/2. Aby scenariusz taki m&oacute;gł mieć miejsce musimy zmodyfikować wartość priorytetu portu f0/2 na niższą niż ta kt&oacute;ra została przypisana interfejsowi f0/1 - oba interfejsy mają ustawioną domyślną wartość priorytetu portu na 128 (oczywiście sytuacja w kt&oacute;rej zwiększamy wartość priorytetu interfejsu f0/1 na większą niż ta posiadana przez interfejs f0/2 jest r&oacute;wnież jak najbardziej dozwolona). Wartość priorytetu portu obejmuje zakres od 0 do 255 a niższa wartość przez algorytm STP jest bardziej preferowana.</p> <p>&nbsp;</p> <p>Aby dokonać zmiany wartości priorytetu należy posłużyć się poleceniem: <strong>spanning-tree port-priority &lt;wartość_priorytetu&gt;</strong>. Polecenie wydajemy w trybie konfiguracji interfejsu, nam zależy aby to interfejs f0/2 stał się portem komunikacyjnym tak więc komenda została wydana w linii poleceń tegoż interfejsu.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image44.png" alt="image44" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po zmianie wartości priorytetu portu f0/2 z 128 na 112 możemy sprawdzić jakie zmiany zaszły w naszej topologii.</p> <p>&nbsp;</p> <p>Zmiana priorytetu doprowadziła do zamiany r&oacute;l port&oacute;w. Interfejs f0/1 przełącznika S3 (wyższy priorytet) został zablokowany natomiast interfejs f0/2 (niższy priorytet) stał się root portem.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image45.png" alt="image45" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Modyfikację priorytetu portu można dokonać dla jednej lub większej liczby sieci VLAN. Modyfikacji tej dokonujemy poprzez dodanie opcjonalnego parametru <strong>vlan</strong>. Identyfikatory sieci VLAN są definiowane jako lista, kt&oacute;rej elementy oddzielamy przecinkami. Pominięcie parametru <strong>vlan</strong> spowoduje ustawienie wartości priorytetu dla wszystkich aktywnych sieci VLAN. Przykładowe polecenie: <strong>spanning-tree vlan 1, 10 port-priority 32 </strong>spowoduje zmianę priorytetu na 32, wartość ta będzie obowiązywać w sieciach VLAN o identyfikatorze 1 oraz 10 (pamiętamy o warunku: wartość priorytetu portu musi być wielokrotnością liczby 16).</p> <p>&nbsp;</p> <p>Zanim przejdziemy dalej chciałbym przedstawić kilka poleceń systemu IOS, kt&oacute;re bezpośrednio odnoszą się do protokołu STP a pozwolą nam one na uzyskanie informacji potrzebnych do zrozumienia om&oacute;wionych zagadnień a dodatkowo przydadzą w dalszej części wpisu.</p> <p>&nbsp;</p> <p>Za pomocą polecenia: <strong>show spanning-tree blockedports</strong> poznamy listę interfejs&oacute;w, kt&oacute;re w wyniku działania algorytmu drzewa rozpinającego zostały zablokowane.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image46.png" alt="image46" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Komendy: <strong>show spanning-tree bridge</strong> lub <strong>show spanning-tree root</strong> są odpowiedzialne za udzielenie informacji na temat przełącznika gł&oacute;wnego. Za pomocą komend poznamy wartości zegar&oacute;w STP.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image47.png" alt="image47" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Polecenie: <strong>show spanning-tree detail</strong> dostarcza bardzo szczeg&oacute;łowych informacji o interfejsach w kontekście działania protokołu STP.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image48.png" alt="image48" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Wydanie polecenia: <strong>show spanning-tree interface &lt;id_interfejsu&gt;</strong> dostarczy skr&oacute;conych informacji na temat portu uczestniczącego w procesie STP. Informacje te dostarczają podstawowych informacji o protokole STP tj. informują o: bieżącym statucie portu, pełnionej roli, koszcie ścieżki czy priorytecie portu.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image49.png" alt="image49" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Wydanie komendy: <strong>show spanning-tree summary</strong> poinformuje nas o włączeniu takich funkcji jak PortFast, BPDU Guard, filtrowanie BPDU, UplinkFast czy BackboneFast (opis w dalszej części artykułu). A co najważniejsze uzyskamy dane o aktywnej wersji protokołu STP (na zrzucie poniżej przełącznik obsługuje tryb PVST &ndash; czyli STP z wsparciem dla sieci VLAN).</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image50.png" alt="image50" width="700" height="762" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Zaś polecenie: <strong>show spanning-tree vlan 1</strong> dostarczy nam informacji o parametrach protokołu STP obowiązujących w danej sieci VLAN.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image51.png" alt="image51" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>W protokole STP mamy do czynienia z trzema zegarami (timerami) kontrolującymi przejście portu z jednego stanu do kolejnego. Przyjęte wartości zegar&oacute;w zostały dobrane na wzorcowym rozmiarze sieci co oznacza, że dla małych sieci wartości te możemy zmienić na kr&oacute;tsze tak by zbieżność sieci została osiągnięta szybciej. Wzorcowy rozmiar sieci został przyjęty na 7 (ramka danych musi przejść drogę przez 7 przełącznik&oacute;w) i dla takiej sieci wartości domyślne zegar&oacute;w zostały przyjęte.</p> <p>&nbsp;</p> <p>Modyfikację zegar&oacute;w protokołu STP dokonujemy na przełączniku gł&oacute;wnym gdyż tylko on jest odpowiedzialny za rozpowszechnienie tych informacji. Propagacja danych odbywa się poprzez wysłanie ramek BPDU (wartości zegar&oacute;w swoje odzwierciedlenie znajdują w odpowiednich polach ramki BPDU).</p> <p>&nbsp;</p> <p>Do czynienia mamy z następującymi zegarami:</p> <p>&nbsp;</p> <p><strong>Zegar Hello</strong> - odpowiedzialny za wyzwalanie okresowych komunikat&oacute;w powitań. Domyślnie zegar został ustawiony na wartość 2 sekund a jego modyfikacja zawiera się w zakresie od 1 do 10 sekund. Zmiana wartości zegara powoduje wymuszenie na sąsiadach wysyłanie powitań w ustalonym odstępie czasu, oznacza to, że przełącznik gł&oacute;wny będzie oczekiwał nadejścia ramek w zdefiniowanym interwale czasu. Modyfikację zegara hello dokonujemy za pomocą polecenia: <strong>spanning-tree hello-time &lt;sekundy&gt;</strong></p> <p>&nbsp;</p> <p><strong>Zegar op&oacute;źnienia przesyłania</strong> (ang. forward delay) odpowiedzialny za czas potrzebny z przejścia z stanu nasłuchiwania do stanu uczenia się a także określa czas potrzebny by ze stanu uczenia się przejść do stanu przesyłania. Domyślna wartość zegara została ustawiona na 15 sekund a jego modyfikacja zawiera się w zakresie od 4 do 30 sekund. Wartość tego zegara powinna być starannie dobrana gdyż zależy ona od fizycznych rozmiar&oacute;w naszej sieci, zbyt szybkie przejście portu z jednego stanu do drugiego może spowodować powstanie pętli. Zmianę wartości zegara dokonujemy za pomocą polecenia: <strong>spanning-tree forward-time &lt;sekundy&gt;</strong></p> <p>&nbsp;</p> <p><strong>Zegar maksymalnego wieku</strong> (ang. max age) definiuje czas przechowywania jednostki BPDU, kt&oacute;ra została otrzymana od sąsiada. Po wygaśnięciu tego czasu port przełącznika zaczyna generować ramki BPDU konfiguracji. Wartość domyślna zegara to 20 sekund a zmiana zegara jest możliwa w zakresie od 6 do 40 sekund. Zmianę wartości zegara maksymalnego wieku dokonamy za pomocą polecenia: <strong>spanning-tree max-age &lt;sekundy&gt;</strong></p> <p>Wszystkie polecenia dotyczące zmiany domyślnych wartości zegar&oacute;w protokołu STP dokonujemy w trybie konfiguracji globalnej.</p> <p>&nbsp;</p> <p>W poleceniach tych należy dołączyć dodatkowy parametr <strong>vlan</strong> odpowiedzialny za definicję zegar&oacute;w STP w określonych sieciach VLAN. Np. polecenie: <strong>spanning-tree vlan 1,10 hello-time &lt;sekundy&gt; </strong>spowoduje zmianę częstotliwości wysyłania komunikat&oacute;w powitań w odniesieniu do sieci VLAN o identyfikatorze 1 oraz 10. Pominięcie parametru <strong>vlan</strong> (nie zawsze jest dozwolone, zależy od wersji systemu IOS) spowoduje ustawienie wartości zegar&oacute;w dla wszystkich sieci VLAN bądź wygenerowanie błędu składni polecenia. Jeśli taka sytuacja nastąpi należy użyć i zdefiniować parametr <strong>vlan</strong>.</p> <p>&nbsp;</p> <p>Zmianę zegar&oacute;w STP przetestujemy na topologii zamieszczonej poniżej.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image52.png" alt="image52" width="700" height="438" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Przełączniki został włączone, algorytm STP wybrał root-a (przełącznik S2), wartości zegar&oacute;w protokołu STP przyjęły domyślne wartości. Wartość przyjętych czas&oacute;w poznamy po wydaniu polecenia: <strong>show spanning-tree</strong></p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image53.png" alt="image53" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Spr&oacute;bujmy dokonać modyfikacji wartości zegar&oacute;w. Modyfikowane interwały czasu zostały ustalone na następujące wartości:</p> <ul> <li style="padding-left: 60px;">hello-time - 3 sekundy,</li> <li style="padding-left: 60px;">forward-time - 8 sekund,</li> <li style="padding-left: 60px;">max-age - 12 sekund.</li> </ul> <p>&nbsp;</p> <p>Aby dostosować zegary do przyjętych wartości zostały wydane polecenia (komendy wydajemy oczywiście na przełączniku gł&oacute;wnym a odnoszą się one do domyślnej sieci VLAN 1):</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image54.png" alt="image54" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po dokonanej zmianie wartości czasu poszczeg&oacute;lnych zegar&oacute;w, efekt zmian sprawdzimy wydając ponownie polecenie: <strong>show spanning-tree </strong>Wartości timer&oacute;w zostały zmodyfikowane.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image55.png" alt="image55" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Zmianę zegar&oacute;w dodatkowo możemy sprawdzić na innym z przełącznik&oacute;w (poniżej zrzut konfiguracji protokołu STP przełącznika S1).</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image56.png" alt="image56" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Jest jeszcze jeden ze sposob&oacute;w aby dostosować zegary protokołu STP. Zastosowanie go nie wymaga od nas ręcznego określania wartości każdego z zegar&oacute;w. Wcześniej wspomniałem, że wartości zegar&oacute;w zostały ustanowione na wzorcowej sieci, kt&oacute;rej średnica odniesienia wynosi 7 przełącznik&oacute;w. Zał&oacute;żmy, że w naszej sieci pracują trzy przełączniki podłączone w tr&oacute;jkąt. Tak więc najdłuższą dostępną drogą jaką może zostać przesłana ramka danych jest ścieżka obejmująca wszystkie trzy przełączniki. Jest to mniej niż przyjęta wartość odniesienia. W naszym scenariuszu możemy przyjąć iż średnica naszej sieci wynosi 3 a dodatkowo by przełączniki jak najszybciej mogły wykryć brak sąsiada czas Hello Time zostaje skr&oacute;cony do 1 sekundy. Aby wykonać przyjęte założenia należy wydać polecenie: <strong>spanning-tree vlan &lt;id_VLAN&gt; root primary diameter &lt;średnica_sieci&gt; hello-time 1</strong></p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image57.png" alt="image57" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Wydanie polecenia spowoduje zmianę domyślnych zegar&oacute;w protokołu STP na te odpowiadające przyjętej średnicy sieci a dodatkowo ustawi zegar Hello Time na 1 sekundę. Po wydaniu tej komendy switch na kt&oacute;rym przeprowadzamy konfigurację zostaje rootem. Zmienione wartości zegar&oacute;w zostały pokazana na zrzucie poniżej.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image58.png" alt="image58" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Funkcja ta odpowiada za pominięcie kliku stan&oacute;w protokołu STP tak by jak najszybciej przejść do trybu w kt&oacute;rym będzie można przekazywać ruch sieciowy. Funkcja PortFast stosowana jest w sytuacji w kt&oacute;rej do portu przełącznika podpięta jest stacja końcowa (komputer, drukarka sieciowa). Oznacza to, że funkcja ta powinna być stosowana tylko w warstwie dostępu. Funkcja ta w żadnym przypadku nie może być wykorzystana na interfejsie do kt&oacute;rego podpięty jest inny przełącznik.</p> <p>&nbsp;</p> <p>Wyobraźmy sobie sytuację w kt&oacute;rej host końcowy zostaje wyłączony (interfejs sieciowy hosta jest nie aktywny) port przełącznika za pomocą kt&oacute;rego jest ustanowiona komunikacja z hostem przechodzi w stan nieaktywny. Powt&oacute;rne włączenie hosta spowoduje uaktywnienie portu przełącznika lecz by m&oacute;gł on pełnić swoją rolę i poprawnie przesyłać otrzymane ramki musi przejść przez wszystkie stany protokołu STP. Oznacza to, że za nim port zacznie przekazywać ramki (przy domyślnych zegarach STP) minie przynajmniej 30 sekund (15 sekund na nasłuchiwanie i uczenie się kolejne 15 sekund zostanie wykorzystane by przejść z stanu nasłuchiwania do transmitowania). Aby skr&oacute;cić ten czas i by port przełącznika m&oacute;gł natychmiast przesyłać dane należy na interfejsie przełącznika do kt&oacute;rego host jest podłączony uaktywnić funkcję PortFast. Włączenie tego mechanizmu spowoduje skr&oacute;cenie stan&oacute;w nasłuchiwania i uczenia się tak by możliwe było natychmiastowe przesyłanie danych.</p> <p>&nbsp;</p> <p>Po włączeniu mechanizmu PortFast wykrywanie pętli nadal działa, a interfejs przełącznika zostanie zablokowany w sytuacji w kt&oacute;rej pętla takowa zostanie wykryta. Pojedynczy host w większości przypadk&oacute;w takiej pętli nie utworzy (lecz jest wyjątek). Wyjątkiem tym może być sytuacja w kt&oacute;rej np. w systemie Windows poprzez dodatkowy interfejs jest zapewniona inna droga połączenia z siecią a dodatkowo na hoście jest uruchomiona funkcja: <strong>Połączenia mostkowe</strong>. Opisana sytuacja jest dość specyficznym wariantem konfiguracji systemu i spotykana jest niezmiernie rzadko lecz warto o takim wariancie pamiętać.</p> <p>&nbsp;</p> <p>Domyślnie na wszystkich portach przełącznika mechanizm PortFast jest wyłączony. Aby go uaktywnić można skorzystać z dw&oacute;ch rozwiązań.</p> <p>&nbsp;</p> <p>Rozwiązanie pierwsze uaktywnia funkcję PortFast na wszystkich portach pracujących w trybie dostępu (access). Oznacza to, że polecenie pominie interfejsy na kt&oacute;rych został ustanowiony tryb trunk (łącze magistrali). Aby włączyć PortFast należy w trybie konfiguracji globalnej wydać polecenie: <strong>spanning-tree portfast default</strong></p> <p>&nbsp;</p> <p>Drugie rozwiązanie sprowadza się do włączenia funkcji PortFast na każdym z interfejs&oacute;w z osobna. Polecenie nakazujące włączenie PortFast wydajemy w trybie konfiguracji interfejsu - <strong>spanning-tree portfast</strong></p> <p>&nbsp;</p> <p>Jest i trzeci spos&oacute;b - opis w tekście poniżej.</p> <p>&nbsp;</p> <p>Wyłączenie mechanizmu PortFast odbywa się za pomocą polecenia: <strong>no</strong> <strong>spanning-tree portfast</strong> wydanego w trybie konfiguracji interfejsu.</p> <p>&nbsp;</p> <p>Topologia dla scenariusza PortFast przedstawia się następująco:</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image59.png" alt="image59" width="700" height="568" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Jak widać powyżej pomiędzy wszystkimi przełącznikami zostało zestawione łącze trunk natomiast do dw&oacute;ch interfejs&oacute;w - przełącznik S1 port f0/6 oraz przełącznik S3 port f0/18 zostały podłączone hosty. Łącza te pracują w trybie dostępu. Hosty (a raczej interfejsy przełącznika do kt&oacute;rych są podłączone) zostały przypisane do sieci VLAN o identyfikatorze 10.</p> <p>&nbsp;</p> <p>Polecenie: <strong>show interfeces trunk</strong> wydane na przełączniku S1 przedstawia wszystkie interfejsy pracujące w trybie magistrali (trunk).</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image60.png" alt="image60" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Dla przypomnienia, r&oacute;wnież komenda: <strong>show interfaces &lt;id_portu&gt; switchport</strong> pokaże nam bieżący status portu. Poniżej został ukazany stan interfejsu f0/1 przełącznika S1. Interfejs ten pracuje w trybie trunk (zresztą jak r&oacute;wnież interfejs f0/3).</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image61.png" alt="image61" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Wydanie tej samej komendy w odniesieniu do interfejsu f0/6 ukaże nam iż interfejs ten został skonfigurowany w trybie dostępu (do portu zostało podłączone urządzenie końcowe).</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image62.png" alt="image62" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Sprawdźmy stan skonfigurowany port&oacute;w pod kątem mechanizmu PortFast. Wydanie polecenia: <strong>show</strong> <strong>spanning-tree interface &lt;id_portu&gt; portfast</strong> uwidoczni status funkcji.</p> <p>&nbsp;</p> <p>Poniżej dla przełącznika S1 i jego interfejs&oacute;w f0/1 oraz f0/6, mechanizm PortFast jest nieaktywny. Host podłączony do interfejsu f0/6 i należący do sieci VLAN 10 z funkcji PortFast nie korzysta.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image63.png" alt="image63" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Uaktywnijmy PortFast korzystając z pierwszego rozwiązania a mianowicie uruchamiając go z wykorzystaniem polecenia: <strong>spanning-tree portfast default</strong> PortFast powinien zostać uruchomiony na wszystkich interfejsach dostępowych.</p> <p>&nbsp;</p> <p>Po wydaniu polecenia jesteśmy ostrzeżeni o konsekwencjach podłączenia do interfejsu na kt&oacute;rym została uaktywniona funkcja PortFast przełącznika bądź huba - podłączenie takowego urządzenia spowoduje powstanie pętli.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image64.png" alt="image64" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po uaktywnieniu PortFast sprawdźmy stan mechanizmu. Ponowne wydanie polecenia:<strong> show</strong> <strong>spanning-tree interface &lt;id_portu&gt; portfast</strong> ukaże nam włączony interfejs f0/6 przełącznika S1, na kt&oacute;rym działa funkcja PortFast.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image65.png" alt="image65" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Ten sam efekt zostałby by uzyskany gdybyśmy w trybie konfiguracji interfejsu f0/6 wydali polecenie: <strong>spanning-tree portfast</strong></p> <p>&nbsp;</p> <p>Jest jeszcze jeden spos&oacute;b, kt&oacute;ry pozwoli nam włączyć PortFast na porcie a mianowicie wykorzystanie polecenia:<strong> switchport host </strong>Komendę wydajemy w trybie konfiguracji interfejsu. Tak naprawdę wydanie polecenia spowoduje wykonanie trzech osobnych instrukcji (dość wygodne gdyż nie musimy wykonywać tego osobnymi komendami):</p> <p>&nbsp;</p> <ul> <li style="padding-left: 60px;">Uaktywniona zostanie funkcja PortFast,</li> <li style="padding-left: 60px;">Interfejs przełącznika ustawiany jest w trybie dostępu,</li> <li style="padding-left: 60px;">Wyłączany jest protok&oacute;ł PAgP odpowiedzialny za zestawienie kanału EtcherChannel (o EtcherChannel możesz przeczytać w moimi wcześniejszym wpisie: <a href="http://slow7.pl/sieci-komputerowe/item/112-co-w-sieci-siedzi-agregacja-laczy-przelacznika">http://slow7.pl/sieci-komputerowe/item/112-co-w-sieci-siedzi-agregacja-laczy-przelacznika</a>).</li> </ul> <p>&nbsp;</p> <p>Poniżej na rysunku za pomocą polecenia: <strong>switchport host</strong> został skonfigurowany interfejs f0/18 przełącznika S3.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image66.png" alt="image66" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Sprawdzenie stanu mechanizmu PortFast uwidacznia, że interfejs został skonfigurowany poprawnie.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image67.png" alt="image67" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Dodatkową weryfikację stanu włączenia bądź wyłączenia funkcji PortFast możemy dokonać za pomocą polecenia:<strong> show spanning-tree vlan &lt;id_VLAN&gt; </strong>Na rysunku poniżej w tabeli w kolumnie <strong>Type</strong> przy interfejsie f0/18 pojawił się wpis <strong>Edge</strong> oznaczający aktywność PortFast na danym interfejsie.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image68.png" alt="image68" width="700" height="359" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Poleceniem, kt&oacute;re r&oacute;wnież pozwoli nam na zweryfikowanie stanu PortFast jest polecenie:<strong> show spanning-tree detail</strong> Po wydaniu polecenia zostanie przedstawiona konfiguracji protokołu STP w odniesieniu do konkretnych interfejs&oacute;w przełącznika i ich przynależności do konkretnych sieci VLAN.</p> <p>&nbsp;</p> <p>Aby uzyskać informacje w kontekście jednego konkretnego interfejsu można posłużyć się poleceniem: <strong>show spanning-tree interface &lt;id_portu&gt; detail</strong></p> <p>&nbsp;</p> <p>Poniżej na zrzucie został ukazany stan interfejsu f0/18. Analiza informacji uzyskanych po wydaniu polecenia przekonuje nas iż na porcie tym aktywna jest funkcja PortFast. Dodatkowo można zauważyć, że pomimo uaktywnienia mechanizmu port nadal odbiera i wysyła ramki BPDU. Spowodowane to jest nadal aktywnym wykrywanie ewentualnych pętli.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image69.png" alt="image69" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Z mechanizmem PortFast związana jest jeszcze jedna funkcja a mianowicie BPDU Guard. BPDU Guard jest funkcją, kt&oacute;ra chroni interfejs przełącznika przed otrzymywaniem ramek BPDU na portach, na kt&oacute;rych nie powinny się takowe ramki pojawić. Funkcja ta stanowi jeden z element&oacute;w podwyższających bezpieczeństwo naszego przełącznika, gdyż można wyobrazić sobie atak w warstwie drugiej przeprowadzony z wykorzystaniem protokołu STP. Atakujący m&oacute;głby wykorzystać zestawione do hosta połączenie aby w miejsce hosta podłączyć przełącznik bądź użyć oprogramowania potrafiącego wygenerować fałszywe ramki BPDU (np. stp-packet, brconfig, scapy czy yersinia)</p> <p>&nbsp;</p> <p>Atak na STP zwykle wiąże się ze zmianą przełącznika gł&oacute;wnego na ten kontrolowany przez atakującego. Wspomniane programy mogą zostać wykorzystane do wysłania fałszywych komunikat&oacute;w STP. Atakujący host poprzez rozgłoszenie komunikat&oacute;w BPDU stara się wymusić ponowne przeliczenie algorytmu spanning-tree. BPDU generowane przez fałszywego hosta ogłaszają niższe wartości priorytetu tak, aby atakujący host został wybrany jako root. W przypadku powodzenia ataku i wybrania fałszywego przełącznika root-em uzyskujemy dostęp do informacji, kt&oacute;re by były nie osiągalne w inny spos&oacute;b.</p> <p>&nbsp;</p> <p>Jeśli port skonfigurowany jako PortFast i z włączoną opcją BPDU Guard zacznie otrzymywać ramki BPDU, switch automatycznie zablokuje ten port (przełączy go w stan errdisable). Po przejściu portu w ten stan administrator ręcznie musi go uaktywnić (możliwe jest r&oacute;wnież skonfigurowanie tzw. errdisable timeout czyli czasu, po minięciu kt&oacute;rego, port powraca do stanu normalnego funkcjonowania).</p> <p>&nbsp;</p> <p>Aby włączyć BPDU guard na wszystkich portach z włączoną opcją PortFast, korzystamy z polecenia: <strong>spanning-tree portfast bpduguard default</strong> Polecenie wydajemy w trybie konfiguracji globalnej.</p> <p>&nbsp;</p> <p>BPDU Guard możemy r&oacute;wnież włączyć na interesującym nas interfejsie z wykorzystaniem polecenia: <strong>spanning-tree bpduguard enable</strong> Komendę oczywiście wydajemy w trybie konfiguracji interfejsu.</p> <p>&nbsp;</p> <p>Przeprowadźmy więc mały test zbudujmy bardzo prostą konfigurację opartą na schemacie zamieszczonym poniżej.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image70.png" alt="image70" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Interfejs f0/3 przełącznika pracuje w trybie dostępu a dodatkowo na porcie została włączona funkcja PortFast oraz BPDU Guard.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image71.png" alt="image71" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Jak widać poniżej na zrzucie po wydaniu polecenia: <strong>show spanning-tree interface f0/3 detail</strong> obie funkcje są włączone.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image72.png" alt="image72" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>W scenariuszu do interfejsu f0/3 jest podłączony host. Aby mieć możliwość wysłania komunikat&oacute;w BPDU, host zostaje zamieniony na przełącznik. Po dokonanej zmianie nowo podłączony przełącznik zaczyna wysyłać ramki BPDU. Na skutek włączonej funkcji BPDU Guard interfejs f0/3 przełącznika S1 przechodzi do stanu errdisable.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image73.png" alt="image73" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Informacje o interfejsach wyłączonych na skutek włączonych mechanizm&oacute;w zabezpieczeń uzyskamy po wydaniu polecenia:<strong> show interfaces status err-disabled </strong></p> <p>&nbsp;</p> <p>Funkcja BPDU Guard zablokowała port.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image74.png" alt="image74" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Jak wcześniej wspominałem funkcję PortFast oraz BPDU Guard można aktywować globalnie tak by domyślnie oba mechanizmy były włączone.</p> <p>&nbsp;</p> <p>Poniżej na rysunku włączenie obu funkcji na przełączniku S1.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image75.png" alt="image75" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Status funkcji poznamy po wydaniu polecenia: <strong>show spanning-tree summary totals</strong></p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image76.png" alt="image76" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Z mechanizmem PortFast związana jest także funkcja <strong>filtrowania BPDU</strong>. Opcja ta zabezpiecza interfejsy w trybie PortFast przed odbieraniem i wysyłanie komunikat&oacute;w BPDU. Tak więc filtrowanie uniemożliwia wysyłanie i przetwarzanie ramek BPDU na portach przełącznika.</p> <p>&nbsp;</p> <p>Opcja ta, może być skonfigurowana globalnie lub na poziomie interfejsu.</p> <p>&nbsp;</p> <p>Filtrowanie domyślnie jest wyłączone na wszystkich interfejsach przełącznika. Aby automatycznie włączyć BPDU filtering na wszystkich interfejsach z aktywnym PortFast korzystamy z polecenia: <strong>spanning-tree portfast bpdufilter default</strong> Polecenie wydajemy w trybie konfiguracji globalnej. W przypadku interfejs&oacute;w, kt&oacute;re nie korzystają z PortFast filtrowanie nie zostanie włączone. Uruchomienie filtrowania w ten spos&oacute;b spowoduje wyłączenie wysyłania ramek BPDU w kierunku host&oacute;w. W przypadku pojawienia się ramek BPDU interfejs traci status PortFast i filtrowanie BPDU zostaje wyłączone.</p> <p>&nbsp;</p> <p>Włączenie filtrowania BPDU w trybie konfiguracji interfejsu odbywa się za pomocą polecenia: <strong>spanning-tree bpdufilter enable </strong>Uaktywnienie opcji spowoduje wyłączenie na interfejsie protokołu spanning-tree co może doprowadzić do powstania pętli.</p> <p>&nbsp;</p> <p>Weryfikację filtrowania BPDU przeprowadzimy za pomocą poleceń: <strong>show spanning-tree summary </strong>oraz <strong>show spanning-tree interface &lt;id_interfejsu&gt; detail</strong>.</p> <p>&nbsp;</p> <p>Aby jeszcze podwyższyć ochronę protokołu STP można skorzystać z dodatkowej funkcji jaką jest <strong>Root guard</strong>. Mechanizm ten umożliwia nam kontrolę nad wyborem przełącznika gł&oacute;wnego. Kontrola ta realizowana jest poprzez ograniczenie port&oacute;w przełącznika, na kt&oacute;rych będzie realizowany proces negocjacji. Na interfejsie przełącznika z skonfigurowaną funkcją Root guard otrzymane komunikaty BPDU z wartościami lepszymi będą ignorowane. Po otrzymaniu takich ramek port switcha przełączy się do stanu root-inconsistent. Oznacza to, że interfejs nie bierze udziału w przekazywaniu ruchu sieciowego. Port zostanie przywr&oacute;cony do normalnego stanu tylko wtedy gdy na interfejsie przestaną pojawiać się komunikaty BPDU wymuszające na przełączniku zmianę roota.</p> <p>&nbsp;</p> <p>Podsumowując, mechanizm Root guard powinien być włączany na interfejsach przełącznika, do kt&oacute;rych podłączone są inne switche, kt&oacute;re nigdy nie powinny zostać rootami.</p> <p>&nbsp;</p> <p>Root guard uaktywniamy za pomocą polecenia: <strong>spanning-tree guard root</strong> wydanego w trybie konfiguracji interfejsu.</p> <p>&nbsp;</p> <p>To tradycyjnie już mały przykład. Zał&oacute;żmy, że mamy o to taką prostą topologię złożoną z dw&oacute;ch przełącznik&oacute;w.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/ostatni.png" alt="ostatni" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Przełącznik S1 jest rootem.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image77.png" alt="image77" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Oba przełącznik są ze sobą połączone za pomocą interfejsu f0/3. Na przełączniku S1 zostaje uaktywniona funkcja Root guard. Włączenie funkcji zabroni przełącznikowi S2 zostanie przełącznikiem gł&oacute;wnym. O włączeniu Root guard dodatkowo jesteśmy poinformowani stosownym komunikatem w linii CLI przełącznika.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image78.png" alt="image78" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Dodatkowo weryfikację włączenia funkcji możemy przeprowadzić za pomocą polecenia: <strong>show spanning-tree interface &lt;id_interfejsu&gt; detail</strong> Na porcie f0/3 przełącznika S1 została uaktywniona funkcja Root guard.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image79.png" alt="image79" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Wymuśmy sytuację w kt&oacute;rej to przełącznik S2 będzie chciał zostać root-em. Na przełączniku S2 zostaje wydane polecenie: <strong>spanning-tree vlan 1 root primary</strong> Efekt wydania polecenia powinien być taki iż przełącznik S2 powinien zacząć pełnić rolę przełącznika gł&oacute;wnego.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image80.png" alt="image80" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Tak się nie dzieje gdyż mechanizm Root guard uaktywniony na switchu S1 wykrywa ramki BPDU nakazujące zmienić status pełnionej roli i zaczyna blokować interfejs f0/3. Informacja o zablokowaniu portu f0/3 zostaje nam przekazana poprzez komunikat w linii CLI przełącznika.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image81.png" alt="image81" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Sprawdzenie statusu portu f0/3 dostarcza nam informacji iż port f0/3 nie działa - status portu został ustanowiony na tzw. stan <strong>root inconsistent</strong></p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image82.png" alt="image82" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Port f0/3 w stanie root inconsistent będzie tak długo pozostawał aż przestaną napływać ramki BPDU o parametrach STP lepszych niż te kt&oacute;re zostały przypisane przełącznikowi S1.</p> <p>&nbsp;</p> <p>Aby zaprzestać wymuszenie zmiany root-a na przełączniku S2 zostaje wydane polecenie: <strong>no</strong> <strong>spanning-tree vlan 1 root primary</strong></p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image83.png" alt="image83" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po wydaniu polecenia port f0/3 przełącznika S1 przechodzi z stanu blokowania do stanu normalnego funkcjonowania. O fakcie tym jesteśmy poinformowani komunikatem.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image84.png" alt="image84" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Ponowne sprawdzenie stanu interfejsu potwierdza otrzymaną informację. Port f0/3 uczestniczy w procesie przekazywania danych. Zostało przywr&oacute;cone normalne funkcjonowanie portu.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image85.png" alt="image85" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Tak więc by zakończyć temat ochrony protokołu STP na koniec kr&oacute;tkie por&oacute;wnanie BPDU guard i Root guard.</p> <p>&nbsp;</p> <p><strong>BPDU guard</strong> spowoduje wyłączenie interfejsu przełącznika (stan errdisable) po otrzymaniu komunikatu BPDU jeśli na porcie uaktywniono PortFast. Ponowne włączenie portu musi zostać wykonane przez administratora.</p> <p>&nbsp;</p> <p><strong>Root guard</strong> pozwala innym przełącznikom uczestniczyć w STP, uczestnictwo trwa tak długo, p&oacute;ki dane urządzenie nie stara się zostać rootem. Normalne funkcjonowanie portu jest przywracane automatycznie po zaprzestaniu otrzymywania ramek BPDU wymuszających zmianę roota a kt&oacute;re to mogą być np. efektem przeprowadzanego ataku.</p> <p>&nbsp;</p> <p>Z protokołem STP związana jest jeszcze jedna funkcja - <strong>UplinkFast</strong>. Mechanizm ten został zaprojektowany z myślą o przełącznikach pracujących w warstwie dostępowej. Przełączniki pracujące w tej warstwie celem redundancji łącz z reguły są połączone wieloma łączami pomiędzy sobą a dodatkowo mają zestawione łącza pozwalające dotrzeć do przełącznik&oacute;w pracujących w warstwie dystrybucji. W domyślnej konfiguracji awaria łącza powoduje przejęcie zadań przez inny interfejs przełącznika. Aby port m&oacute;gł uczestniczyć w przekazywaniu ruchu sieciowego musi przejść wszystkie stany algorytmu STP. Cały proces uzyskania zbieżności może potrwać około 45 sekund bądź dłużej (wszystko zależy od konfiguracji naszej sieci). Mechanizm UplinkFast pozwala interfejsowi będącemu w trybie alternate port pominąć stany listening (stan nasłuchiwania) oraz learning (uczenie się) tak by od razu przejść do przekazywania danych. Z czasu 45 sekund przy ustawieniach domyślnych możemy zejść do 5 sekund przy aktywnym UplinkFast.</p> <p>&nbsp;</p> <p>Aby włączyć UplinkFast na przełączniku należy w trybie konfiguracji globalnej wydać polecenie: <strong>spanning-tree uplinkfast</strong></p> <p>&nbsp;</p> <p>Funkcja ta powinna być aktywowana tylko na przełącznikach pracujących w warstwie dostępowej a w żadnym przypadku na switchach pracujących w warstwie dystrybucji bądź rdzenia ponieważ uruchomienie mechanizmu uniemożliwi przełącznikowi zostanie rootem. Włączenie UplinkFast spowoduje ustawienie priorytetu na wartość wynoszącą 49152 (zmiana dotyczy wszystkich sieci VLAN), zmianie r&oacute;wnież ulegną koszty łączy (koszt zostanie zmieniony na wartość 3019). Dokonane zmiany możemy zaobserwować po wydaniu polecenia: <strong>show spanning-tree</strong></p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image86.png" alt="image86" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Weryfikację UplinkFast dokonujemy za pomocą polecenia: <strong>show spanning-tree summary totals</strong> Jak widać poniżej funkcja jest włączona.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image87.png" alt="image87" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Wyłączenie UplinkFast następuje po wydaniu polecenia: <strong>no</strong> <strong>spanning-tree uplinkfast </strong>Komenda cofa wszystkie modyfikacje priorytet&oacute;w i koszt&oacute;w łącza.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image88.png" alt="image88" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Tak więc na tym etapie rozważania na temat protokołu STP chciałbym zakończyć tak by w kt&oacute;rymś z kolejnych wpis&oacute;w zająć się protokołami PVST czy RSTP.</p></div> <div class="K2FeedImage"><img src="http://slow7.pl/media/k2/items/cache/0c758c944f0062609b2677e28107bc5e_S.jpg" alt="Co w sieci siedzi. Zrozumieć i "pokochać" protokół STP." /></div><div class="K2FeedIntroText"><p>W tym wpisie zajmiemy się protokołem STP, kt&oacute;ry przynależny jest do urządzeń warstwy drugiej, czyli switchy, a jego gł&oacute;wnym zadaniem jest wykrywanie i zapobieganie wystąpieniu w sieci pętli. To co należy wiedzieć na temat tego protokołu to to, że ściśle wiąże się on z nadmiarowością łączy, tak aby w przypadku wystąpienia awarii nie nastąpił przest&oacute;j sieci i by pakiety, pomimo zaistniałych problem&oacute;w, mogły szczęśliwie dotrzeć do celu.</p> </div><div class="K2FeedFullText"> <p>&nbsp;</p> <p>Aby zrozumieć sens stosowania tego typu rozwiązań prześledźmy prosty przykład przedstawiony na poniższym rysunku.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image1.png" alt="image1" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>Host1 pr&oacute;buje skomunikować się ze stacją Host2 lecz niestety komputerowi Host1 nie jest znany adres MAC komputera Host2. W tym celu w kierunku switcha S1 zostaje wysłane rozgłoszenie. Ramka broadcast poprze interfejs f0/4 trafia do przełącznika. Przełącznik ruch ten kopiuje na wszystkie aktywne interfejsy z wyjątkiem tego z kt&oacute;rego rozgłoszenie zostało otrzymane. Tak więc ruch brodcastowy zostaje wysłany z interfejsu f0/1 w kierunku switcha S2 oraz z interfejsu f0/3 w kierunku przełącznika S3. Rozgłoszenie zostaje odebrane przez przełącznik S2 i przekazane dalej w kierunku switcha S3, w tym samym czasie ten sam ruch zostaje odebrany przez przełącznik S3 (rozgłoszenie otrzymane od S1) i r&oacute;wnież skopiowane i przesłane dalej lecz tym razem w kierunku switcha S2. Tak więc przełączniki otrzymują kolejne kopie tej samej ramki, kt&oacute;re są przesyłane w nieskończoność - <strong>powstaje pętla</strong>. Jeśli Czytelniku czytałeś moje wcześniejsze wpisy bądź Masz wiedzę na temat warstwy 3 modelu ISO/OSI to pewnie wiesz o istnieniu parametru TTL (ang. Time to Live). Mechanizm ten odpowiada za zmniejszenie wartości pola o 1 za każdym razem gdy pakiet na swej drodze napotka router, tak więc w momencie osiągnięcia przez TTL wartości zero, router nie przekaże pakietu do kolejnego urządzenia sieciowego. W warstwie 2 niestety tego typu zabezpieczeń <strong>NIE MA</strong>. Jedynym sposobem na przerwanie powstałej <strong>burzy rozgłoszeniowej</strong> (ang. broadcast storm) jest wyłączenie dowolnego z aktywnych interfejs&oacute;w.</p> <p>&nbsp;</p> <p>Aby zademonstrować spos&oacute;b działania i skutki powstania burzy rozgłoszeniowej prześledźmy o to taki przykład w kt&oacute;rym to w sieci zbudowanej ze switchy występują nadmiarowe linki a na przełącznikach został wyłączony protok&oacute;ł STP. Przyjęta topologia sieci odpowiada rysunkowi powyżej.</p> <p>&nbsp;</p> <p>Aby wykryć i zdiagnozować burzę wykorzystamy polecenie: <strong>show processes cpu history</strong>. Po wydaniu polecenia zostanie wyświetlony histogram (a tak naprawdę trzy) przedstawiający użycie procesora. Zakres wyświetlonych danych obejmuje ostatnie 72 godziny.</p> <p>&nbsp;</p> <p>Pierwszy wykres obejmuje wykorzystanie procesora w procentach na sekundę w ciągu ostatnich 60 sekund (CPU percent per second - last 60 seconds), drugi wykorzystanie procesora w procentach na minutę w ciągu ostatnich 60 minut (CPU percent per minute - last 60 minutes), trzeci zaś wykorzystanie procesora w procentach na godzinę w ciągu ostatnich 72 godzin (CPU percent per hour - last 72 hours).</p> <p>&nbsp;</p> <p>Na osi x został przedstawiony czas (0 oznacza moment wydania polecenia), zaś na osi y został umiejscowiony poziom wykorzystania procesora.</p> <p>&nbsp;</p> <p>Jak można zaobserwować poniżej w momencie wydania polecenia użycie procesora było na poziomie 4% by w 20 sekundzie skoczyć do 7% i następnie w 50 sekundzie spaść zn&oacute;w do 4% Gwiazdki poniżej budują wykres.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image2.png" alt="image2" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Na każdym z przełącznik&oacute;w zostało wydane polecenie: <strong>no spanning-tree vlan 1</strong> nakazujące wyłączenie protokołu STP w domyślnej sieci VLAN1.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image3.png" alt="image3" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Wydanie polecenia wyłączającego STP na dw&oacute;ch pierwszych przełącznikach S1 i S2 jeszcze nie powoduje żadnych konsekwencji gdyż by burza broadcastowa mogła wystąpić musi powstać pętla.</p> <p>&nbsp;</p> <p>Wyłączenie protokołu STP na przełączniku S3 inicjuje burzę - mamy do czynienia z pętlą. Nie trzeba długo czekać (wystarczyło 5 sekund) by zauważyć op&oacute;źnienie podczas wprowadzania poleceń systemu IOS. Wydanie polecenia pokazującego wykorzystanie procesora ukazuje nam zużycie CPU na poziomie 99-100% (ostatnia minuta).</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image4.png" alt="image4" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Dodatkowo już po minucie zaistnienia burzy dochodzi kolejny problem związany z niestabilnością tablicy adres&oacute;w MAC. Trwająca burza rozgłoszeniowa powoduje nieustanne aktualizowanie tablic adres&oacute;w MAC. Każda z aktualizacji oznacza zmianę drogi wysyłania ramek - pamiętaj, że przełącznik celem określenia interfejsu przez kt&oacute;ry ma wysłać daną ramkę tak by dotarła do miejsca przeznaczenia analizuje wszystkie otrzymane ramki (przypisanie: interfejs przełącznika - adres MAC).</p> <p>&nbsp;</p> <p>W naszym przykładzie oznacza to, że dla przełącznika S1 dany host jest raz dostępny poprzez interfejs f0/1 a raz f0/3. O zmianach tych, kt&oacute;re następują bardzo szybko jesteśmy informowani na bieżąco w postaci komunikat&oacute;w w linii CLI przełącznika.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image5.png" alt="image5" width="700" height="154" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Aby burza mogła zostać przerwana należy wyłączyć jeden z interfejs&oacute;w tak by przerwać powielanie jednych i tych samych ramek. Oczywiście problem burzy rozwiąże ponowne włączenie protokołu STP. I te rozwiązanie zostało wybrane. Po obserwacji zużycia CPU dochodzimy do wniosku - problem z burzą został rozwiązany.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image6.png" alt="image6" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Można by zadać pytanie - Gdzie w tym wszystkim protok&oacute;ł STP i w jaki spos&oacute;b nie dopuszcza on do powstania pętli? Ot&oacute;ż protok&oacute;ł ten domyślnie jest włączony na każdym porcie switcha i jego gł&oacute;wnym zadaniem jest zapobieganie sytuacji opisanej powyżej. Realizacja tego zadania odbywa się poprzez czasowe wyłączenie (blokowanie) połączeń pomiędzy przełącznikami, kt&oacute;re potencjalnie mogły by być źr&oacute;dłem powstania pętli. Tak więc dzięki zastosowaniu protokołu STP nasza topologia sieciowa mogłaby przybrać o to taką postać.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image7.png" alt="image7" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>Efektem działania protokołu STP jest zablokowanie łącza pomiędzy switchem S1 a S3. Łącze te jest zablokowane czasowo, co oznacza, że w przypadku wystąpienia problem&oacute;w z innymi łączami zostanie ono przywr&oacute;cone by zapewnić ciągłość komunikacji. Zablokowanie ruchu sieciowego pomiędzy przełącznikami uniemożliwia powstanie pętli, kt&oacute;rej następstwem mogłaby być burza rozgłoszeniowa powodująca problemy z komunikacją.</p> <p>&nbsp;</p> <p>Po tym wprowadzeniu na pewno Czytelniku w głowie masz szereg pytań - Jak działa protok&oacute;ł?, Jakie kryteria decydują o zablokowaniu danego łącza? czy Jak dokonać jego prawidłowej konfiguracji?</p> <p>&nbsp;</p> <p>Zanim przejdziemy z opisem dalej by na tak postawione pytania udzielić odpowiedzi, winien jestem jeszcze parę sł&oacute;w wyjaśnienia. Zacznijmy może tak - na uwadze należy mieć fakt, iż protok&oacute;ł STP od dawna już nie jest obowiązującym standardem (z powodu swoich wad) i że w nowoczesnych sieciach po prostu się go <strong>NIE STOSUJE</strong>. Co nie znaczy, że na swej drodze administratora się z nim nie spotkasz. Tworzenie artykułu dość obszernego i co tu m&oacute;wiąc tematycznie nie łatwego nie miało by sensu gdyby opierać się tylko na założeniu, że przypadkiem nasze drogi z tym protokołem się nie skrzyżują. Protok&oacute;ł STP i spos&oacute;b jego działania po prostu warto poznać gdyż stanowi on bazę do poznania bardziej zaawansowanych rozwiązań - takich jak PVST czy RSTP.</p> <p>&nbsp;</p> <p>W wpisie tym przyjąłem założenie w kt&oacute;rym to będę odnosić się do protokołu STP a tak naprawdę przełączniki będą działać pod kontrolą PVST czyli STP z obsługą sieci VLAN.</p> <p>&nbsp;</p> <p>Tak więc już wiesz że gł&oacute;wnym zadaniem protokołu STP jest wykrycie fizycznych pętli i wyeliminowanie ich poprzez wynegocjowanie wolnej od pętli topologii logicznej.</p> <p>&nbsp;</p> <p>Kr&oacute;tko m&oacute;wiąc</p> <ul> <li style="padding-left: 60px;">STP wykrywa pętle i blokuje nadmiarowe linki,</li> <li style="padding-left: 60px;">Zapewnia, że między dwoma dowolnymi urządzeniami jest tylko jedna aktywna ścieżka.</li> </ul> <p>&nbsp;</p> <p>Działanie protokołu STP opiera się o algorytm drzewa rozpinającego (ang. Spanning Tree Algorithm), to właśnie on jest odpowiedzialny za wyznaczenie drogi wolnej od pętli. Pierwszym z ważnych zadań algorytmu STA jest określenie puntu odniesienia, tzw. <strong>root bridge</strong> (korzeń drzewa). Korzeniem drzewa zostaje jeden z przełącznik&oacute;w, kt&oacute;ry w dalszych operacjach wyznaczania drogi jest punktem odniesienia dla kolejnych obliczeń. W kolejnym kroku STA określa wszystkie możliwe ścieżki do korzenia jeśli istnieją drogi alternatywne czyli więcej niż jedna ścieżka, wybierana jest najkorzystniejsza, zaś pozostałe drogi są blokowane. Blokowanie odbywa się poprzez wyłączenie ruchu sieciowego na danym porcie przełącznika. Przy czym co należy dodać blokowanie nie dotyczy ramek <strong>BPDU</strong> (ang. bridge protocol data unit), kt&oacute;rych zadaniem jest zapewnienie poprawnego działania protokołu poprzez komunikację z innymi przełącznikami (o ramkach BPDU więcej za chwilę).</p> <p>&nbsp;</p> <p>Najważniejsze pojęcia związane z działaniem protokołu STP to:</p> <ul> <li style="padding-left: 60px;">Bridge ID (identyfikator switcha, identyfikator mostu),</li> <li style="padding-left: 60px;">Path Cost (koszt ścieżki).</li> </ul> <p>&nbsp;</p> <p>Identyfikator BID (Bridge ID) jest 8 bajtową liczbą, w skład identyfikatora wchodzi tzw. priorytet oraz adres MAC. BID jednoznacznie identyfikuje każdy przełącznik i jest jedynym kryterium przy wyborze root-a (korzenia). Informacja o wartości BID jest przekazywana podczas wymiany ramek BPDU. Switch o najmniejszej wartości BID staje się root bridge.</p> <p>&nbsp;</p> <p>Jak już wspomniałem BID składa się z dw&oacute;ch części:</p> <ul> <li style="padding-left: 60px;">priorytet (2 bajty) na urządzeniach Cisco domyślnie 32768</li> <li style="padding-left: 60px;">adresu MAC</li> </ul> <p>&nbsp;</p> <p>Priorytet najczęściej podaje się dziesiętnie, a MAC w postaci szesnastkowej.</p> <p>&nbsp;</p> <p>W protokole STP punkt odniesienia czyli przełącznik root względem, kt&oacute;rego będą przeprowadzane obliczenia wybierany jest dla wszystkich VLAN-&oacute;w naraz (jeden korzeń w całej sieci). Po dokonanych usprawnieniach i poprawkach np. PVST, należało zmodyfikować BID, tak aby przenosił informację o numerze VLAN gdyż protok&oacute;ł ten wymaga osobnej instancji STP dla każdej sieci VLAN. Dlatego też z dw&oacute;ch bajt&oacute;w pozostawiono 4 bity na priorytet, zaś pozostałe 12 bit&oacute;w przydzielono na identyfikator VID (VLAN ID).</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image8.png" alt="image8" width="700" height="466" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>W domyślnej konfiguracji priorytet przełącznika jest ustawiony na wartość 32768 ustawienie to powoduje, że w procesie elekcji rootem zostanie przełącznik o najniższym adresie MAC. Wyboru tego nie powinno się pozostawić przypadkowi bo może się okazać, że funkcję tą będzie pełnił najmniej wydajny przełącznik - należy więc ręcznie zdefiniować priorytet na wybranym switchu, kt&oacute;ry ma zostać rootem (opis w dalszej części wpisu).</p> <p>&nbsp;</p> <p>Koszt ścieżki jest ściśle powiązany z prędkością łącza, została zastosowana zasada, że im wyższa prędkość, tym niższy koszt. Na tej podstawie przełączniki określają, jak daleko mają do korzenia (roota).</p> <p>&nbsp;</p> <p style="text-align: left;">W pierwotnej wersji protokołu STP (802.1D) koszt był wyliczany jako: <strong>1000/pasmo ścieżki w Mbps</strong>. Jak widać poniżej rozwiązanie te okazało się nie wystarczające gdyż po wprowadzeniu nowych standard&oacute;w przesyłu danych koszt ścieżki zawsze wynosił 1. Taki sam koszt był przypisany łączu o prędkości 1 Gbps jak i łączu dziesięciokrotnie szybszemu. Aby uwzględnić tę zmianę IEEE dokonało poprawki zmieniając skalę na nieliniową, tak by koszt uwzględniał faktyczną prędkość łącza.</p> <p style="text-align: center;">&nbsp;</p> <table border="1" style="border-collapse: collapse; margin-left: auto; margin-right: auto;" cellspacing="0" cellpadding="0"> <tbody> <tr> <td style="width: 153.5pt; border: 1pt solid windowtext; padding: 0cm 5.4pt;" valign="top" width="205">Prędkość łącza</td> <td style="width: 153.55pt; border-width: 1pt 1pt 1pt medium; border-style: solid solid solid none; border-color: windowtext windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top" width="205">Koszt ścieżki</td> <td style="width: 153.55pt; border-width: 1pt 1pt 1pt medium; border-style: solid solid solid none; border-color: windowtext windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top" width="205">Koszt ścieżki</td> </tr> <tr> <td style="width: 153.5pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt;" valign="top" width="205">10 Gbps</td> <td style="width: 153.55pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top" width="205">2</td> <td style="width: 153.55pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top" width="205">1</td> </tr> <tr> <td style="width: 153.5pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt;" valign="top" width="205">1 Gbps</td> <td style="width: 153.55pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top" width="205">4</td> <td style="width: 153.55pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top" width="205">1</td> </tr> <tr> <td style="width: 153.5pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt;" valign="top" width="205">100 Mbps</td> <td style="width: 153.55pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top" width="205">19</td> <td style="width: 153.55pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top" width="205">10</td> </tr> <tr> <td style="width: 153.5pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt;" valign="top" width="205">10 Mbps</td> <td style="width: 153.55pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top" width="205">100</td> <td style="width: 153.55pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top" width="205">100</td> </tr> </tbody> </table> <p style="text-align: center;">&nbsp;</p> <p>Możemy ręcznie dokonać modyfikacji kosztu ścieżki poprzez zmianę kosztu portu. Zmianę tą jednak wykonujemy jeśli mamy ku temu dobry pow&oacute;d. Zmiana kosztu ścieżki została opisana w dalszej części wpisu.</p> <p>&nbsp;</p> <p>Aby protok&oacute;ł STP m&oacute;gł działać i pełnić swoją rolę musi mieć możliwość komunikacji z innymi przełącznikami. Komunikacja ta odbywa się dzięki ramkom BPDU.</p> <p>&nbsp;</p> <p>Switch dla każdego swojego portu zapisuje kopię najlepszej ramki BPDU, kt&oacute;rą &bdquo;zobaczył&rdquo; na danym porcie. Przez &bdquo;zobaczyć&rdquo; należy rozumieć ramkę kt&oacute;rą przełącznik otrzymał bądź zamierza wysłać.</p> <p>&nbsp;</p> <p>Ramka BPDU obejmuje 12 p&oacute;l i w jej budowie możemy wyr&oacute;żnić trzy gł&oacute;wne części tj.:</p> <ul> <li style="padding-left: 60px;">Cztery pierwsze pola: <strong>Identyfikator protokołu</strong>, <strong>Wersja</strong>, <strong>Typ komunikatu</strong> oraz <strong>Flagi</strong> odpowiedzialne są za identyfikację ramki BPDU,</li> <li style="padding-left: 60px;">Kolejne cztery pola (<strong>Identyfikator mostu gł&oacute;wnego</strong>, <strong>Koszt ścieżki</strong>, <strong>Identyfikator mostu</strong>, <strong>Identyfikator portu</strong>) odpowiedzialne są za przesłanie informacji pozwalających ustalić roota oraz wybranie najlepszych ścieżek,</li> <li style="padding-left: 60px;">Ostanie cztery pola (<strong>Wiek komunikatu</strong>, <strong>Wiek maksymalny</strong>, <strong>Czas powitania</strong>, <strong>Op&oacute;źnienie</strong> przekazania) są polami timer&oacute;w (zegar&oacute;w protokołu STP).</li> </ul> <p>&nbsp;</p> <p>Ramka BPDU została schematycznie przedstawiona na rysunku poniżej:</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image9.png" alt="image9" width="700" height="51" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>I poniżej ramka BPDU, kt&oacute;ra została przechwycona z wykorzystaniem aplikacji Wireshark</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image10.png" alt="image10" width="700" height="529" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Ramka BPDU jest enkapsulowana w ramce ethernetowej a następnie wysyłana na adres grupowy MAC: 01:80:C2:00:00:00 Adres ten jest odpowiedzialny za obsługę protokołu STP i informacje przesłane za jego pośrednictwem trafią do wszystkich przełącznik&oacute;w w obrębie danej domeny rozgłoszeniowej.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image11.png" alt="image11" width="700" height="200" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Zbieżność protokołu STP jest osiągana w trzech krokach:</p> <ul> <li style="padding-left: 60px;">wyb&oacute;r Root Bridge,</li> <li style="padding-left: 60px;">wyb&oacute;r Root Port&oacute;w,</li> <li style="padding-left: 60px;">wyb&oacute;r Port&oacute;w desygnowanych.</li> </ul> <p>&nbsp;</p> <p>Po uruchomieniu wszystkich urządzeń w sieci, wszystkie przełączniki rozgłaszają kompletnie niesp&oacute;jne informacje. Dzieje się tak gdyż każdy z switchy uznaje siebie za root-a.</p> <p>&nbsp;</p> <p>W przykładzie poniżej zastosowałem pewne uproszczenie gdyż przyjęto jeden adres MAC na switch a w rzeczywistości scenariusz powinien być rozpatrywany w odniesieniu do każdego z użytych interfejs&oacute;w. Uproszczenie zastosowałem by na samym początku uczenia się działania protokołu STP nie zostać przytłoczonym zbyt dużą ilością informacji. W dalszej części wpisu będzie rozważana topologia trochę bardziej złożona.</p> <p>&nbsp;</p> <p>Proces elekcji root-a rozpoczyna się od wysłania ramek BPDU w kt&oacute;rych każdy z przełącznik&oacute;w siebie samego wybiera do pełnienia tej roli. Jak widać po poniższym rysunku i analizie przesłanych danych rootem zostanie przełącznik S1 gdyż ten switch ma przypisany najmniejszy priorytet. A jak już wiesz wartość priorytetu ma większą wagę niż adres MAC. Ale wszystko po kolei.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image12.png" alt="image12" width="700" height="492" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Przełącznik S3 po otrzymaniu ramki BPDU od switcha S2 sprawdza zawarte dane w otrzymanej ramce BPDU. W kolejnym kroku następuje por&oacute;wnanie swoich danych z danymi otrzymanymi. Wartości priorytetu (32769) są jednakowe więc kryterium, kt&oacute;re będzie rozstrzygać o pierwszeństwie będzie adres MAC. Por&oacute;wnując adresy MAC przełącznik S3 uzna switch S2 jako root gdyż otrzymany adres MAC od S2 ma mniejszą wartość niż własny. Informacje zawarte w ramce BPDU zostają prze przełącznik zapisane (zostaną wykorzystane w kolejnym etapie elekcji).</p> <p>&nbsp;</p> <p>Przełącznik S2 ramkę BPDU wysyła w kierunku S1. Por&oacute;wnanie wartości prowadzi do odrzucenia przez przełącznik S1 otrzymanej ramki gdyż wartość priorytetu w ramce BPDU jest wyższa od tej kt&oacute;ra jest przypisana switchowi S1.</p> <p>&nbsp;</p> <p>Przełącznik S3 na tym etapie uznaje za roota switcha S2. Dlatego w kolejnych ramkach BPDU rozgłasza dane przełącznika S2. Ramki BPDU zostają wysłane w kierunku przełącznika S2 i S1.</p> <p>&nbsp;</p> <p>Przełącznik S1 po raz kolejny otrzymaną ramkę BPDU odrzuca gdyż wartość priorytetu otrzymanego jest większa od własnego priorytetu.</p> <p>&nbsp;</p> <p>Przełącznik S2 otrzymaną ramkę r&oacute;wnież odrzuca gdyż otrzymane dane pokrywają się z danymi własnymi.</p> <p>&nbsp;</p> <p>Ramki BPDU zostają wysłane z przełącznika S1 do przełącznik&oacute;w S2 i S3.</p> <p>&nbsp;</p> <p>Switch S2 po otrzymaniu informacji od S1 uznaje go za roota gdyż dane priorytetu otrzymanego są niższe od własnych.</p> <p>&nbsp;</p> <p>Switch S3 r&oacute;wnież uaktualnia swoje informacje i za roota przyjmuje przełącznik S1, tak jak w przypadku switcha S2 decyzja ta zostaje podjęta po analizie otrzymanych informacji a konkretnie wartości otrzymanego priorytetu.</p> <p>&nbsp;</p> <p>Rootem zostaje przełącznik S1.</p> <p>&nbsp;</p> <p>Sprawdźmy zatem jak przedstawia się konfiguracja przełącznik&oacute;w.</p> <p>&nbsp;</p> <p>Podstawowym poleceniem, kt&oacute;re pozwoli nam na uzyskanie informacji na temat protokołu STP jest komenda: <strong>show spannig-tree</strong></p> <p>&nbsp;</p> <p>Na pierwszy rzut przejrzyjmy konfigurację przełącznika S1.</p> <p>&nbsp;</p> <p>Po wydaniu polecenia: <strong>show spannig-tree </strong>uzyskujemy dane na podstawie, kt&oacute;rych możemy stwierdzić, kt&oacute;ry przełącznik pełni funkcję roota.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image13.png" alt="image13" width="700" height="341" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Dane przełącznika S1, kt&oacute;re posłużyły do zbudowania ramki BPDU wysłanej do innych switchy zawarte są w sekcji <strong>Bridge ID</strong> (punkt 1). Tak więc znajdziemy w nich wartość ustalonego priorytetu (Priority) oraz adres MAC interfejsu biorącego udział w procesie STP.</p> <p>&nbsp;</p> <p>Gdy podczas przeglądania informacji zawartych po wydaniu polecenia:<strong> show spannig-tree </strong>odnajdziemy komunikat: <strong>This bridge is the root</strong> oznacza to, że przełącznik ten w procesie STP jest punktem odniesienia dla wszystkich pozostałych przełącznik&oacute;w jest przełącznikiem gł&oacute;wnym. (punkt 2).</p> <p>&nbsp;</p> <p>Przyjrzyjmy się kolejnemu przełącznikowi i sprawdźmy konfigurację ustawień STP na switchu S2.</p> <p>&nbsp;</p> <p>Jak widać poniżej w sekcji Root ID znajdują się dane wskazujące na przełącznik S1 jako ten kt&oacute;ry pełni rolę root-a. W sekcji Bridge ID znajdują się dane przełącznika S2. Por&oacute;wnując te dane ze sobą dochodzimy do wniosku iż switch ten nie może pełnić rolę root-a gdyż jego wartość priorytetu jest wyższa od priorytetu przełącznika S1.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image14.png" alt="image14" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Uważnego Czytelnika pewnie zainteresuje wartość priorytetu przełącznika ustalona na 32769. Jeszcze chwilę temu wspomniałem, że domyślną wartością dla switchy jest wartość 32768. Więc skąd ta r&oacute;żnica wynosząca aż 1? Dodam, że przełącznik S2 oczywiście korzysta z ustawień domyślnych - nic w konfiguracji nie zostało zmienione. Wartość domyślna jest powiększona o 1, ponieważ na przełączniku istnieje domyślna sieć VLAN o przypisanym identyfikatorze 1 (sieć VLAN0001 jest skonfigurowana na każdym z przełącznik&oacute;w). Oznacza to, że istnienie sieci VLAN ma wpływ na wartość priorytetu. Gdyby na przełączniku został skonfigurowany dodatkowy VLAN o identyfikatorze 20 wartość priorytetu wzrosłaby o tą wartość.</p> <p>&nbsp;</p> <p>Spos&oacute;b wyliczenia wartości priorytetu przedstawia poniższy rysunek.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image15.png" alt="image15" width="700" height="194" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Poniżej został jeszcze przedstawiony przykład w kt&oacute;rym interfejs przełącznika S2 został przeniesiony do sieci VLAN o identyfikatorze 10. Jak widać zmiana położenia interfejsu względem VLANu zmieniła wartość priorytetu. Wartość ta wynosi 32778 (wartość domyślna 32768 + identyfikator sieci VLAN 10).</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image16.png" alt="image16" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Sprawdzenie konfiguracji STP przełącznika S3 utwierdza nas w przekonaniu iż to switch S1 pełni rolę root-a.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image17.png" alt="image17" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>W naszej testowej sieci zaszczytną rolę root-a pełni przełącznik S1. Można by było zapytać - Co się stanie w przypadku gdy go wyłączymy? i Jak w takiej sytuacji zareaguje protok&oacute;ł STP?</p> <p>&nbsp;</p> <p>Aby odpowiedzieć sobie na tak postawione pytania interfejsy f0/1 oraz f0/3 przełącznika S1 zostały wyłączone - co pokazuje poniższy zrzut.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image18.png" alt="image18" width="700" height="195" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Aby sprawdzić konfigurację STP na przełączniku S2 ponownie wydajemy polecenie: <strong>show spanning-tree</strong>. Wydanie polecenia informuje nas iż ten switch pełni rolę root-a.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image19.png" alt="image19" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Wydanie tego samego polecenia na przełączniku S3 potwierdza informacje uzyskane w poprzednim kroku - rola root-a została przypisana switchowi S2.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image20.png" alt="image20" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>I zn&oacute;w można by było zapytać - Czemu funkcja ta została przypisana przełącznikowi S2? Pewnie część z Was już zna odpowiedź. Analiza danych z obu przełącznik&oacute;w (sekcja Bridge ID) przekonuje nas iż wartość priorytetu dla obu przełącznik&oacute;w jest jednakowa i wynosi 32769. W takim przypadku gdy nie można rozstrzygnąć elekcji przy wykorzystaniu wartości priorytetu decyduje najmniejsza wartość interfejsu adresu MAC. Por&oacute;wnując wartości adres&oacute;w:</p> <ul> <li style="padding-left: 60px;">przełącznik S2 - <strong>0817.35e3.b500</strong>,</li> <li style="padding-left: 60px;">przełącznik S3 - <strong>8cb6.4fd8.fa00</strong>.</li> </ul> <p>dochodzimy do wniosku iż wartość interfejsu MAC przełącznika S2 jest niższa. Przełącznik ten zaczyna pełnić rolę root bridge.</p> <p>&nbsp;</p> <p>Blokowanie ruchu sieciowego odbywa się poprzez czasowe wyłączenie interfejsu przełącznika, kt&oacute;ry z punktu widzenia protokołu STP spowodowałby powstanie pętli. Informacje o stanie port&oacute;w uzyskamy r&oacute;wnież dzięki poleceniu: <strong>show spanning-tree</strong></p> <p>&nbsp;</p> <p>Przyjrzyjmy się jeszcze raz konfiguracji STP na przełączniku S1.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image21.png" alt="image21" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Na rysunku znajduje się tabela w kt&oacute;rej pierwszą kolumną jest <strong>Interface</strong> W kolumnie tej zostały ukazane wszystkie porty przełącznika biorące udział w procesie STP.</p> <p>&nbsp;</p> <p>Druga kolumna przedstawia rolę jaką pełni dany interfejs.</p> <p>&nbsp;</p> <p>W procesie STP jedną z r&oacute;l jaką może pełnić interfejs jest rola: <strong>portu gł&oacute;wnego</strong>.</p> <p>&nbsp;</p> <p><strong>Root port</strong> (port gł&oacute;wny) - port ten zawsze znajduje się najbliżej przełącznika pełniącego rolę root-a. Oznacza to, że przełącznik interfejs&oacute;w w tym stanie nie będzie posiadał lecz rolę tę będą pełniły porty leżące najbliżej niego czyli interfejsy sąsiad&oacute;w. W naszym scenariuszu będzie to interfejs f0/1 przełącznika S2 oraz interfejs f0/3 przełącznika S3. Sprawdzenie konfiguracji stanu port&oacute;w na przełącznikach S2 oraz S3 potwierdza nasze rozważania.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image22.png" alt="image22" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Nasza testowa topologia przyjmie więc postać:</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image23.png" alt="image23" width="700" height="477" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Drugą rolą jaką może pełnić port przełącznika jest rola: <strong>portu desygnowanego</strong>.</p> <p>&nbsp;</p> <p><strong>Designated port</strong> jest portem, kt&oacute;rego zadaniem jest przekazanie ruch sieciowego w kierunku innych przełącznik&oacute;w. Ponieważ rootem został przełącznik S1 tak więc wszystkie jego porty będą znajdować się w tym stanie. Co należy jeszcze wiedzieć o porcie desygnowanym? - to to że w połączeniach point-to-point port pracujący w tym trybie może być tylko jeden. Oznacza to, że nie zajdzie sytuacja w kt&oacute;rej po obu stronach połączonych ze sobą przełącznik&oacute;w, oba porty będą ustawione do pracy w trybie designated.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image24.png" alt="image24" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Portem desygnowanym został r&oacute;wnież interfejs f0/3 przełącznika S2.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image25.png" alt="image25" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Uzupełnijmy więc nasz diagram sieci o nowe informacje.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image26.png" alt="image26" width="700" height="475" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Przy porcie f0/1 przełącznika S3 w kolumnie <strong>Role</strong> widnieje skr&oacute;t <strong>Altn</strong> (rysunek powyżej) oznacza to, że port pełni rolę portu alternatywnego (ang. alternate port). Port alternatywny jest to port, kt&oacute;ry może przekazywać ramki ale w tym momencie jest wyłączony (zablokowany) tak by nie powstała pętla. Nazwa alternate port jest używana w protokołach PVST oraz RSTP zaś w przypadku zwykłego STP port ten przyjmuje nazwę non-designated port.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image27.png" alt="image27" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Tak więc dodajmy kolejne dane do naszego diagramu sieci a dodatkowo uzupełnijmy go o koszt ścieżek (koszt wszystkich ścieżek wynosi 19, gdyż połączenia pomiędzy przełącznikami wynoszą 100 Mbps &ndash; standard FastEthernet).</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image28.png" alt="image28" width="700" height="475" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po uzupełnieniu wszystkich danych mogą nasunąć się pewne pytania. Pierwsze z nich to - Czy root portem w przypadku przełącznika S2 m&oacute;głby zostać interfejs f0/3? Tu w udzieleniu odpowiedzi pomogą nam koszty ścieżek. Odpowiedź brzmi - NIE. Koszt dotarcia do root-a w przypadku użycia interfejsu f0/1 wynosi 19 natomiast koszt dotarcia do S1 przy użyciu portu f0/3 r&oacute;wna się 38 (19 - ścieżka S2-S3 +19 &ndash; ścieżka S3-S1 ).</p> <p>&nbsp;</p> <p>Drugie pytanie - Dlaczego portem blokowanym (alternate port) jest interfejs f0/1 przełącznika S3 a nie interfejs f0/3 switcha S2. Tu by udzielić poprawnej odpowiedzi należy por&oacute;wnać adresy MAC obu użytych interfejs&oacute;w. Niższy adres MAC posiada przełącznik S2 dlatego interfejs f0/3 został wybrany jak designated port.</p> <p>&nbsp;</p> <p>Trzecie pytanko - A co w przypadku w kt&oacute;rym koszt dotarcia do root-a dla obu interfejs&oacute;w wyni&oacute;słby tyle samo? W takim przypadku brany jest pod uwagę tzw. <strong>priorytet portu</strong>. Dla przełącznik&oacute;w Cisco wartość priorytetu domyślnie została ustalona na wartość 128. Wartość priorytetu może wahać się od 0 do 240 lecz musi spełnić jeden warunek &ndash; wartość priorytetu musi być wielokrotnością liczby 16. Pierwszeństwo oczywiście mają mniejsze wartości.</p> <p>&nbsp;</p> <p>I tu r&oacute;wnież może dojść do sytuacji w kt&oacute;rej priorytetu portu będą miały przypisane te same wartości - wyb&oacute;r interfejsu dalej nie będzie rozstrzygnięty. W takim przypadku o wyborze interfejsu decyduje <strong>numer portu</strong>. Priorytet portu w połączeniu z numerem portu nazywany jest <strong>identyfikatorem portu</strong>.</p> <p>&nbsp;</p> <p>Poniżej przedstawiono zrzut przedstawiający konfigurację STP przełącznika S2. Po wydaniu polecenia: <strong>show spanning-tree</strong> uzyskamy informację o koszcie (kolumna Cost) i dodatkowo poznamy identyfikator portu (kolumna Prio.Nbr). Np. interfejs f0/1 posiada przypisany priorytet 128 i numer portu wynosi 1 zaś koszt trasy został ustalony na 19.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image29.png" alt="image29" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Aby port przełącznika m&oacute;gł pełnić powierzoną mu rolę musi przejść przez wszystkie stany procesu STP. Stany te ściśle związane są z zegarami STP (został określony czas po jakim port może zmienić sw&oacute;j stan) a gł&oacute;wnym ich zadaniem jest uzyskanie topologii wolnej od pętli.</p> <p>&nbsp;</p> <p>Możliwe stany portu zostały przedstawione i opisane poniżej:</p> <p>&nbsp;</p> <p><strong>Disabled (stan wyłączenia)</strong> - port jest wyłączony administracyjnie (shutdown), dlatego też odrzuca odbierane na nim ramki a co za tym idzie przełącznik z wykorzystaniem tego interfejsu nie uczy się adres&oacute;w MAC ani nie odbiera ramek BPDU (brak uczestnictwa w procesie STP)</p> <p>&nbsp;</p> <p><strong>Blocking (stan blokowania</strong>) - port jest zablokowany (niedesygnowany) co oznacza, że nie przekazuje ramek zawierających dane oraz odrzuca wszystkie ramki z danymi przekazane z innych interfejs&oacute;w. Proces uczenia się adres&oacute;w MAC jest wyłączony lecz interfejs odbiera i przetwarza ramki BPDU co oznacza, że stan interfejsu w zależności od zaistniałych warunk&oacute;w może ulec zmianie</p> <p>&nbsp;</p> <p><strong>Listening (stan nasłuchiwania)</strong> - w tym stanie port odrzuca wszystkie ramki z danymi oraz nie uczy się adres&oacute;w MAC. Port w tym stanie jest potencjalnym kandydatem do osiągnięcia funkcji root port bądź designated port dlatego też interfejs odbiera i przetwarza ramki BPDU a dodatkowo transmituje własne. Port przejdzie w stan blokowania gdy nie zostanie spełniony warunek dotarcia do root-a z wykorzystaniem ścieżki o niższym koszcie. Oznacza to, iż przez interfejs ten musi prowadzić droga do mostu gł&oacute;wnego o niższym koszcie niż z interfejs&oacute;w pozostałych.</p> <p>&nbsp;</p> <p><strong>Learning (uczenie się)</strong> - port nie przekazuje żadnych ramek z danymi, następuje przygotowanie do tego procesu dlatego też tablica adres&oacute;w MAC przełącznika wypełnia się adresami MAC. Ramki BPDU są odbierane, przekazywane i transmitowane.</p> <p>&nbsp;</p> <p><strong>Forwarding (stan przekazywania)</strong> - port przełącznika stał się częścią topologii oznacza to że przekazuje i odbiera ramki zawierające dane, ramki BPDU są oczywiście odbierane, przekazywane i transmitowane.</p> <p>&nbsp;</p> <p>Przejdźmy zatem do trochę trudniejszego przykładu. Nasza testowa topologia sieciowa została przedstawiona na rysunku poniżej. Tworzą ją trzy przełącznik, kt&oacute;re zostały połączone ze sobą tak, że każdy z każdym jest spięty dwoma niezależnymi interfejsami.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image30.png" alt="image30" width="700" height="462" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Adresy MAC port&oacute;w został sprawdzone na każdym ze switchy (rysunek poniżej) i ich wartości zamieszczono na schemacie powyżej.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image31.png" alt="image31" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Przełączniki zostały uruchomione. Protok&oacute;ł STP rozpoczyna działanie by wyznaczyć trasę, kt&oacute;ra będzie wolna od pętli.</p> <p>&nbsp;</p> <p>Poniżej na rysunku przedstawiono efekt działania protokołu STP na każdym z przełącznik&oacute;w.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image32.png" alt="image32" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Przeglądając powyższą konfigurację procesu STP możemy dojść do następujących wniosk&oacute;w:</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">1 - przełącznikiem root został wybrany switch S2,</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">2 - wszystkie interesy przełącznika S2 pełnią rolę port&oacute;w desygnowanych,</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">3 - funkcję root port pełnią interfejsy: f0/1 przełącznika S1 oraz f0/1 przełącznika S3,</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">4 - portami blokowanymi (alternate port) są interfejsy: f0/2 przełącznika S1 oraz f0/2, f0/3, f0/4 przełącznika S3.</p> <p>&nbsp;</p> <p style="margin-bottom: 0.0001pt;">Celem lepszego zobrazowania wytyczonej ścieżki wszystkie powyższe informacje zostały zebrane na diagramie sieci poniżej.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image33.png" alt="image33" width="700" height="478" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Odpowiedzmy więc sobie na pytanie - Czemu została wytyczono taką drogę przesyłu pakiet&oacute;w?</p> <p>&nbsp;</p> <p>Rozpoczniemy od analizy adres&oacute;w MAC biorących udział w procesie STP.</p> <p>&nbsp;</p> <p>Najniższy adres MAC posiada interfejs f0/1 przełącznika S2 (0817.35E3.B501). Wszystkie przełączniki mają domyślnie ustaloną wartość priorytetu (32768) i domyślnie istnieje skonfigurowany jeden VLAN o identyfikatorze 1. Tak więc wartość priorytetu wyniesie 32769.</p> <p>&nbsp;</p> <p>Przy pomocy wartości priorytetu nie możemy określić, kt&oacute;ry z przełącznik&oacute;w będzie pełnić funkcję root-a.</p> <p>&nbsp;</p> <p>Gdy priorytet na wszystkich przełącznikach wynosi tyle samo, kryterium rozstrzygającym jest adres MAC. Najniższy adres MAC należy do interfejsu f0/1 przełącznika S2 tak więc ten przełącznik zaczyna pełnić funkcję root bridge.</p> <p>&nbsp;</p> <p>Ponieważ przełącznik S2 został root-em wszystkie jego interfejsy pełnią rolę port&oacute;w desygnowanych.</p> <p>&nbsp;</p> <p>Portem pełniącym rolę root port na przełączniku S1 został interfejs f0/1 gdyż posiada on najniższy adres MAC &ndash; priorytet port&oacute;w ma przypisaną domyślną wartość 128 (wszystkie interfejsy, wszystkich przełącznik&oacute;w). Interfejsy f0/3 i f0/4 nie mogą pełnić roli root port gdyż koszt dotarcia do przełącznika S2 z poziomu tych port&oacute;w wyni&oacute;słby 38. Koszt dla interfejsu f0/1 wynosi 19. Interfejsy f0/3 i f0/4 pełnią rolę port&oacute;w desygnowanych. Rola została im przypisana ponieważ ich adresy MAC mają niższa wartość w por&oacute;wnaniu do adres&oacute;w MAC sąsiada (przełącznik S3).</p> <p>&nbsp;</p> <p>W przypadku przełącznika S3 jako root port został wybrany interfejs f0/1 gdyż adres MAC tego interfejsu jest najniższy a koszt dotarcia do root bridge wynosi 19. Tak jak w przypadku przełącznika S1 dwa jego interfejsy f0/3 oraz f0/4 nie mogły zostać root portami ponieważ koszt dotarcia do mostu z ich wykorzystaniem wynosi 38. Ponieważ interfejsy te są połączone z interfejsami pełniącymi już rolę port&oacute;w desygnowanych ich stan został określony jako alternate port. Interfejsy te przez protok&oacute;ł STP zostały wyłączone jako te kt&oacute;re by powodowały powstanie pętli.</p> <p>&nbsp;</p> <p>Interfejsy, kt&oacute;re przez protok&oacute;ł STP zostały r&oacute;wnież zablokowane to: interfejs f0/2 przełącznika S1 oraz interfejs f0/2 przełącznika S3. Przełączniki S1 i S3 mają już łączność z rootem tak więc każde kolejne fizyczne połączenie z przełącznikiem gł&oacute;wnym zostanie zablokowane by uniemożliwić powstanie pętli.</p> <p>&nbsp;</p> <p>Trasa pomiędzy przełącznikami został ustalona.</p> <p>&nbsp;</p> <p>W tym scenariuszu nie ingerowaliśmy w wyb&oacute;r przełącznika gł&oacute;wnego wszystkie ustalenia protokołu STP odbyły się z wykorzystaniem domyślnych wartości. Zadajmy pytanie &ndash; Jakie czynności należy wykonać aby root-em został przełącznik, kt&oacute;ry sam wybierzemy ?</p> <p>&nbsp;</p> <p>Zadanie te możemy wykonać na dwa sposoby:</p> <ul> <li style="padding-left: 60px;">pierwszy spos&oacute;b: wykorzystanie polecenia - <strong>spanning-tree vlan &lt;id_VLAN&gt; root primary</strong></li> <li style="padding-left: 60px;">drugi spos&oacute;b: wykorzystanie polecenia - <strong>spanning-tree &lt;id_VLAN&gt; priority &lt;wartość&gt;</strong></li> </ul> <p>&nbsp;</p> <p>Oba polecenia wydajemy w trybie konfiguracji globalnej. Zał&oacute;żmy, że zależy nam aby to przełącznik S1 został rootem. Wydajmy więc pierwsze z poleceń.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image34.png" alt="image34" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po wydaniu komendy sprawdźmy efekt jej wykonania. Jak można zauważyć switch S1 został przełącznikiem gł&oacute;wnym.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image35.png" alt="image35" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Wykorzystajmy drugi z sposob&oacute;w i sprawmy aby teraz switch S3 uzyskał status root-a. Zostało wydane polecenie: <strong>spanning-tree vlan 1 priority 20000</strong> Jak można stwierdzić komenda nie została wykonana gdyż wartość priorytetu musi być wielokrotnością 4096. Poprawmy naszą komendę i spr&oacute;bujmy wydać polecenie: <strong>spanning-tree vlan 1 priority 20480</strong> Tym razem wydanie komendy kończy się sukcesem.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image36.png" alt="image36" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Sprawdzenie efekt&oacute;w przeprowadzonej konfiguracji przekonuje nas, że przełącznik S3 pełni teraz rolę roota.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image37.png" alt="image37" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Jak jest r&oacute;żnica pomiędzy poleceniami? Zacznijmy od końca &ndash; wykorzystanie polecenia: <strong>spanning-tree &lt;id_VLAN&gt; priority &lt;wartość&gt; </strong>wymusza na nas dobranie takiej wartości priorytetu by ta okazała się najniższa a tym samym pozwoliła switchowi na pełnienie roli przełącznika gł&oacute;wnego (wartość priorytetu w przypadku PVST jest ustalana w obrębie VLAN-u). W przykładzie z wykorzystaniem komendy: <strong>spanning-tree vlan &lt;id_VLAN&gt; root primary</strong>switch sam zadba o takie dobranie wartości priorytetu by stać się przełącznikiem gł&oacute;wnym.</p> <p>&nbsp;</p> <p>Powr&oacute;ćmy do naszej początkowej konfiguracji w kt&oacute;rej to S2 pełni rolę roota i zał&oacute;żmy, że z jakiś powod&oacute;w nie odpowiada nam wyb&oacute;r trasy ustalonej pomiędzy switchem S3 i S2. Chcemy aby nowa trasa przesyłu pakiet&oacute;w uwzględniła interfejs f0/3 bądź f0/4 przełącznika S3 a tym samym by podr&oacute;ż pakiet&oacute;w odbywała się poprzez przełącznik S1.</p> <p>&nbsp;</p> <p>M&oacute;wiąc może trochę prościej doprowadźmy do sytuacji w kt&oacute;rej to porty f0/1 oraz f0/2 przełącznika S3 zostaną zablokowane. Jak widać na zrzucie poniżej na razie mamy do czynienia z sytuacją odwrotną.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image38.png" alt="image38" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Aby zmienić drogę, podr&oacute;ży ramek musimy dokonać takiej modyfikacji kosztu ścieżki aby ta obecnie ustalona okazała się z punktu widzenia protokołu STP mniej korzystna. Dokonamy zmiany kosztu ścieżki dla interfejs&oacute;w f0/1 oraz f0/2 przełącznika S3.</p> <p>&nbsp;</p> <p>Zmianę kosztu ścieżki dokonujemy za pomocą polecenia: <strong>spanning-tree cost &lt;wartość&gt;</strong>. Polecenie wydajemy w trybie konfiguracji interfejsu. Wartość kosztu ścieżki z domyślnej 19 została zmieniona na 50. Aby powr&oacute;cić do wartości domyślnej skorzystaj z polecenia: <strong>no spanning-tree cost</strong></p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image39.png" alt="image39" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po dokonanej zmianie konfiguracji porty f0/1 oraz f0/2 przełącznika zostają zablokowane. Koszt dotarcia za ich pośrednictwem do S2 wynosi 50 i jest wartością wyższą (mniej korzystną &ndash; pamiętamy, że w przypadku kosztu ścieżki preferowane są wartości niższe) niż w przypadku skorzystania z drogi poprzez przełącznik S1 &ndash; koszt trasy 19+19=38</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image40.png" alt="image40" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Nasza topologia po tej zmianie przybiera następujący kształt.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image41.png" alt="image41" width="700" height="478" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Przy protokole STP w przypadku wykorzystania wielu łączy fizycznych możemy dokonać r&oacute;wnież zmiany aktualnie aktywnego kanału przesyłu danych (czytaj interfejsu, kt&oacute;ry będzie odpowiedzialny za przekazywanie ruchu sieciowego). Zmianę tą dokonujemy za pomocą zmiany priorytetu portu.</p> <p>&nbsp;</p> <p>Powr&oacute;ćmy z powrotem do sytuacji w kt&oacute;rej to przełącznik S2 został wybrany przez protok&oacute;ł STP do pełnienia roli przełącznika gł&oacute;wnego a komunikacja pomiędzy S2 i S3 odbywa się za pomocą interfejs&oacute;w f0/1 oraz f0/2 przełącznika S3.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image42.png" alt="image42" width="700" height="478" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Konfiguracja zmiany priorytet&oacute;w przełącznika zostanie wykonana na switchu S3.</p> <p>&nbsp;</p> <p>Jak można zaobserwować poniżej aktywnym interfejsem przełącznika S3, kt&oacute;ry jest odpowiedzialny za przesyłanie ramek jest port f0/1 (jeszcze w stanie nasłuchiwania) natomiast blokowanym portem jest f0/2. Spr&oacute;bujmy ten stan rzeczy zmienić i doprowadzić do sytuacji w kt&oacute;rej interfejsy zamienią się rolami tj. f0/1 będzie portem blokowanym natomiast f0/2 będzie interfejsem obsługującym ruch sieciowy.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image43.png" alt="image43" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Aby porty zamieniły się swoimi rolami musimy doprowadzić do sytuacji w kt&oacute;rej protok&oacute;ł STP stwierdzi, że korzystniejszą opcją będzie powierzenie roli root port interfejsowi f0/2. Aby scenariusz taki m&oacute;gł mieć miejsce musimy zmodyfikować wartość priorytetu portu f0/2 na niższą niż ta kt&oacute;ra została przypisana interfejsowi f0/1 - oba interfejsy mają ustawioną domyślną wartość priorytetu portu na 128 (oczywiście sytuacja w kt&oacute;rej zwiększamy wartość priorytetu interfejsu f0/1 na większą niż ta posiadana przez interfejs f0/2 jest r&oacute;wnież jak najbardziej dozwolona). Wartość priorytetu portu obejmuje zakres od 0 do 255 a niższa wartość przez algorytm STP jest bardziej preferowana.</p> <p>&nbsp;</p> <p>Aby dokonać zmiany wartości priorytetu należy posłużyć się poleceniem: <strong>spanning-tree port-priority &lt;wartość_priorytetu&gt;</strong>. Polecenie wydajemy w trybie konfiguracji interfejsu, nam zależy aby to interfejs f0/2 stał się portem komunikacyjnym tak więc komenda została wydana w linii poleceń tegoż interfejsu.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image44.png" alt="image44" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po zmianie wartości priorytetu portu f0/2 z 128 na 112 możemy sprawdzić jakie zmiany zaszły w naszej topologii.</p> <p>&nbsp;</p> <p>Zmiana priorytetu doprowadziła do zamiany r&oacute;l port&oacute;w. Interfejs f0/1 przełącznika S3 (wyższy priorytet) został zablokowany natomiast interfejs f0/2 (niższy priorytet) stał się root portem.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image45.png" alt="image45" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Modyfikację priorytetu portu można dokonać dla jednej lub większej liczby sieci VLAN. Modyfikacji tej dokonujemy poprzez dodanie opcjonalnego parametru <strong>vlan</strong>. Identyfikatory sieci VLAN są definiowane jako lista, kt&oacute;rej elementy oddzielamy przecinkami. Pominięcie parametru <strong>vlan</strong> spowoduje ustawienie wartości priorytetu dla wszystkich aktywnych sieci VLAN. Przykładowe polecenie: <strong>spanning-tree vlan 1, 10 port-priority 32 </strong>spowoduje zmianę priorytetu na 32, wartość ta będzie obowiązywać w sieciach VLAN o identyfikatorze 1 oraz 10 (pamiętamy o warunku: wartość priorytetu portu musi być wielokrotnością liczby 16).</p> <p>&nbsp;</p> <p>Zanim przejdziemy dalej chciałbym przedstawić kilka poleceń systemu IOS, kt&oacute;re bezpośrednio odnoszą się do protokołu STP a pozwolą nam one na uzyskanie informacji potrzebnych do zrozumienia om&oacute;wionych zagadnień a dodatkowo przydadzą w dalszej części wpisu.</p> <p>&nbsp;</p> <p>Za pomocą polecenia: <strong>show spanning-tree blockedports</strong> poznamy listę interfejs&oacute;w, kt&oacute;re w wyniku działania algorytmu drzewa rozpinającego zostały zablokowane.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image46.png" alt="image46" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Komendy: <strong>show spanning-tree bridge</strong> lub <strong>show spanning-tree root</strong> są odpowiedzialne za udzielenie informacji na temat przełącznika gł&oacute;wnego. Za pomocą komend poznamy wartości zegar&oacute;w STP.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image47.png" alt="image47" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Polecenie: <strong>show spanning-tree detail</strong> dostarcza bardzo szczeg&oacute;łowych informacji o interfejsach w kontekście działania protokołu STP.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image48.png" alt="image48" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Wydanie polecenia: <strong>show spanning-tree interface &lt;id_interfejsu&gt;</strong> dostarczy skr&oacute;conych informacji na temat portu uczestniczącego w procesie STP. Informacje te dostarczają podstawowych informacji o protokole STP tj. informują o: bieżącym statucie portu, pełnionej roli, koszcie ścieżki czy priorytecie portu.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image49.png" alt="image49" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Wydanie komendy: <strong>show spanning-tree summary</strong> poinformuje nas o włączeniu takich funkcji jak PortFast, BPDU Guard, filtrowanie BPDU, UplinkFast czy BackboneFast (opis w dalszej części artykułu). A co najważniejsze uzyskamy dane o aktywnej wersji protokołu STP (na zrzucie poniżej przełącznik obsługuje tryb PVST &ndash; czyli STP z wsparciem dla sieci VLAN).</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image50.png" alt="image50" width="700" height="762" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Zaś polecenie: <strong>show spanning-tree vlan 1</strong> dostarczy nam informacji o parametrach protokołu STP obowiązujących w danej sieci VLAN.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image51.png" alt="image51" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>W protokole STP mamy do czynienia z trzema zegarami (timerami) kontrolującymi przejście portu z jednego stanu do kolejnego. Przyjęte wartości zegar&oacute;w zostały dobrane na wzorcowym rozmiarze sieci co oznacza, że dla małych sieci wartości te możemy zmienić na kr&oacute;tsze tak by zbieżność sieci została osiągnięta szybciej. Wzorcowy rozmiar sieci został przyjęty na 7 (ramka danych musi przejść drogę przez 7 przełącznik&oacute;w) i dla takiej sieci wartości domyślne zegar&oacute;w zostały przyjęte.</p> <p>&nbsp;</p> <p>Modyfikację zegar&oacute;w protokołu STP dokonujemy na przełączniku gł&oacute;wnym gdyż tylko on jest odpowiedzialny za rozpowszechnienie tych informacji. Propagacja danych odbywa się poprzez wysłanie ramek BPDU (wartości zegar&oacute;w swoje odzwierciedlenie znajdują w odpowiednich polach ramki BPDU).</p> <p>&nbsp;</p> <p>Do czynienia mamy z następującymi zegarami:</p> <p>&nbsp;</p> <p><strong>Zegar Hello</strong> - odpowiedzialny za wyzwalanie okresowych komunikat&oacute;w powitań. Domyślnie zegar został ustawiony na wartość 2 sekund a jego modyfikacja zawiera się w zakresie od 1 do 10 sekund. Zmiana wartości zegara powoduje wymuszenie na sąsiadach wysyłanie powitań w ustalonym odstępie czasu, oznacza to, że przełącznik gł&oacute;wny będzie oczekiwał nadejścia ramek w zdefiniowanym interwale czasu. Modyfikację zegara hello dokonujemy za pomocą polecenia: <strong>spanning-tree hello-time &lt;sekundy&gt;</strong></p> <p>&nbsp;</p> <p><strong>Zegar op&oacute;źnienia przesyłania</strong> (ang. forward delay) odpowiedzialny za czas potrzebny z przejścia z stanu nasłuchiwania do stanu uczenia się a także określa czas potrzebny by ze stanu uczenia się przejść do stanu przesyłania. Domyślna wartość zegara została ustawiona na 15 sekund a jego modyfikacja zawiera się w zakresie od 4 do 30 sekund. Wartość tego zegara powinna być starannie dobrana gdyż zależy ona od fizycznych rozmiar&oacute;w naszej sieci, zbyt szybkie przejście portu z jednego stanu do drugiego może spowodować powstanie pętli. Zmianę wartości zegara dokonujemy za pomocą polecenia: <strong>spanning-tree forward-time &lt;sekundy&gt;</strong></p> <p>&nbsp;</p> <p><strong>Zegar maksymalnego wieku</strong> (ang. max age) definiuje czas przechowywania jednostki BPDU, kt&oacute;ra została otrzymana od sąsiada. Po wygaśnięciu tego czasu port przełącznika zaczyna generować ramki BPDU konfiguracji. Wartość domyślna zegara to 20 sekund a zmiana zegara jest możliwa w zakresie od 6 do 40 sekund. Zmianę wartości zegara maksymalnego wieku dokonamy za pomocą polecenia: <strong>spanning-tree max-age &lt;sekundy&gt;</strong></p> <p>Wszystkie polecenia dotyczące zmiany domyślnych wartości zegar&oacute;w protokołu STP dokonujemy w trybie konfiguracji globalnej.</p> <p>&nbsp;</p> <p>W poleceniach tych należy dołączyć dodatkowy parametr <strong>vlan</strong> odpowiedzialny za definicję zegar&oacute;w STP w określonych sieciach VLAN. Np. polecenie: <strong>spanning-tree vlan 1,10 hello-time &lt;sekundy&gt; </strong>spowoduje zmianę częstotliwości wysyłania komunikat&oacute;w powitań w odniesieniu do sieci VLAN o identyfikatorze 1 oraz 10. Pominięcie parametru <strong>vlan</strong> (nie zawsze jest dozwolone, zależy od wersji systemu IOS) spowoduje ustawienie wartości zegar&oacute;w dla wszystkich sieci VLAN bądź wygenerowanie błędu składni polecenia. Jeśli taka sytuacja nastąpi należy użyć i zdefiniować parametr <strong>vlan</strong>.</p> <p>&nbsp;</p> <p>Zmianę zegar&oacute;w STP przetestujemy na topologii zamieszczonej poniżej.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image52.png" alt="image52" width="700" height="438" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Przełączniki został włączone, algorytm STP wybrał root-a (przełącznik S2), wartości zegar&oacute;w protokołu STP przyjęły domyślne wartości. Wartość przyjętych czas&oacute;w poznamy po wydaniu polecenia: <strong>show spanning-tree</strong></p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image53.png" alt="image53" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Spr&oacute;bujmy dokonać modyfikacji wartości zegar&oacute;w. Modyfikowane interwały czasu zostały ustalone na następujące wartości:</p> <ul> <li style="padding-left: 60px;">hello-time - 3 sekundy,</li> <li style="padding-left: 60px;">forward-time - 8 sekund,</li> <li style="padding-left: 60px;">max-age - 12 sekund.</li> </ul> <p>&nbsp;</p> <p>Aby dostosować zegary do przyjętych wartości zostały wydane polecenia (komendy wydajemy oczywiście na przełączniku gł&oacute;wnym a odnoszą się one do domyślnej sieci VLAN 1):</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image54.png" alt="image54" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po dokonanej zmianie wartości czasu poszczeg&oacute;lnych zegar&oacute;w, efekt zmian sprawdzimy wydając ponownie polecenie: <strong>show spanning-tree </strong>Wartości timer&oacute;w zostały zmodyfikowane.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image55.png" alt="image55" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Zmianę zegar&oacute;w dodatkowo możemy sprawdzić na innym z przełącznik&oacute;w (poniżej zrzut konfiguracji protokołu STP przełącznika S1).</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image56.png" alt="image56" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Jest jeszcze jeden ze sposob&oacute;w aby dostosować zegary protokołu STP. Zastosowanie go nie wymaga od nas ręcznego określania wartości każdego z zegar&oacute;w. Wcześniej wspomniałem, że wartości zegar&oacute;w zostały ustanowione na wzorcowej sieci, kt&oacute;rej średnica odniesienia wynosi 7 przełącznik&oacute;w. Zał&oacute;żmy, że w naszej sieci pracują trzy przełączniki podłączone w tr&oacute;jkąt. Tak więc najdłuższą dostępną drogą jaką może zostać przesłana ramka danych jest ścieżka obejmująca wszystkie trzy przełączniki. Jest to mniej niż przyjęta wartość odniesienia. W naszym scenariuszu możemy przyjąć iż średnica naszej sieci wynosi 3 a dodatkowo by przełączniki jak najszybciej mogły wykryć brak sąsiada czas Hello Time zostaje skr&oacute;cony do 1 sekundy. Aby wykonać przyjęte założenia należy wydać polecenie: <strong>spanning-tree vlan &lt;id_VLAN&gt; root primary diameter &lt;średnica_sieci&gt; hello-time 1</strong></p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image57.png" alt="image57" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Wydanie polecenia spowoduje zmianę domyślnych zegar&oacute;w protokołu STP na te odpowiadające przyjętej średnicy sieci a dodatkowo ustawi zegar Hello Time na 1 sekundę. Po wydaniu tej komendy switch na kt&oacute;rym przeprowadzamy konfigurację zostaje rootem. Zmienione wartości zegar&oacute;w zostały pokazana na zrzucie poniżej.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image58.png" alt="image58" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Funkcja ta odpowiada za pominięcie kliku stan&oacute;w protokołu STP tak by jak najszybciej przejść do trybu w kt&oacute;rym będzie można przekazywać ruch sieciowy. Funkcja PortFast stosowana jest w sytuacji w kt&oacute;rej do portu przełącznika podpięta jest stacja końcowa (komputer, drukarka sieciowa). Oznacza to, że funkcja ta powinna być stosowana tylko w warstwie dostępu. Funkcja ta w żadnym przypadku nie może być wykorzystana na interfejsie do kt&oacute;rego podpięty jest inny przełącznik.</p> <p>&nbsp;</p> <p>Wyobraźmy sobie sytuację w kt&oacute;rej host końcowy zostaje wyłączony (interfejs sieciowy hosta jest nie aktywny) port przełącznika za pomocą kt&oacute;rego jest ustanowiona komunikacja z hostem przechodzi w stan nieaktywny. Powt&oacute;rne włączenie hosta spowoduje uaktywnienie portu przełącznika lecz by m&oacute;gł on pełnić swoją rolę i poprawnie przesyłać otrzymane ramki musi przejść przez wszystkie stany protokołu STP. Oznacza to, że za nim port zacznie przekazywać ramki (przy domyślnych zegarach STP) minie przynajmniej 30 sekund (15 sekund na nasłuchiwanie i uczenie się kolejne 15 sekund zostanie wykorzystane by przejść z stanu nasłuchiwania do transmitowania). Aby skr&oacute;cić ten czas i by port przełącznika m&oacute;gł natychmiast przesyłać dane należy na interfejsie przełącznika do kt&oacute;rego host jest podłączony uaktywnić funkcję PortFast. Włączenie tego mechanizmu spowoduje skr&oacute;cenie stan&oacute;w nasłuchiwania i uczenia się tak by możliwe było natychmiastowe przesyłanie danych.</p> <p>&nbsp;</p> <p>Po włączeniu mechanizmu PortFast wykrywanie pętli nadal działa, a interfejs przełącznika zostanie zablokowany w sytuacji w kt&oacute;rej pętla takowa zostanie wykryta. Pojedynczy host w większości przypadk&oacute;w takiej pętli nie utworzy (lecz jest wyjątek). Wyjątkiem tym może być sytuacja w kt&oacute;rej np. w systemie Windows poprzez dodatkowy interfejs jest zapewniona inna droga połączenia z siecią a dodatkowo na hoście jest uruchomiona funkcja: <strong>Połączenia mostkowe</strong>. Opisana sytuacja jest dość specyficznym wariantem konfiguracji systemu i spotykana jest niezmiernie rzadko lecz warto o takim wariancie pamiętać.</p> <p>&nbsp;</p> <p>Domyślnie na wszystkich portach przełącznika mechanizm PortFast jest wyłączony. Aby go uaktywnić można skorzystać z dw&oacute;ch rozwiązań.</p> <p>&nbsp;</p> <p>Rozwiązanie pierwsze uaktywnia funkcję PortFast na wszystkich portach pracujących w trybie dostępu (access). Oznacza to, że polecenie pominie interfejsy na kt&oacute;rych został ustanowiony tryb trunk (łącze magistrali). Aby włączyć PortFast należy w trybie konfiguracji globalnej wydać polecenie: <strong>spanning-tree portfast default</strong></p> <p>&nbsp;</p> <p>Drugie rozwiązanie sprowadza się do włączenia funkcji PortFast na każdym z interfejs&oacute;w z osobna. Polecenie nakazujące włączenie PortFast wydajemy w trybie konfiguracji interfejsu - <strong>spanning-tree portfast</strong></p> <p>&nbsp;</p> <p>Jest i trzeci spos&oacute;b - opis w tekście poniżej.</p> <p>&nbsp;</p> <p>Wyłączenie mechanizmu PortFast odbywa się za pomocą polecenia: <strong>no</strong> <strong>spanning-tree portfast</strong> wydanego w trybie konfiguracji interfejsu.</p> <p>&nbsp;</p> <p>Topologia dla scenariusza PortFast przedstawia się następująco:</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image59.png" alt="image59" width="700" height="568" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Jak widać powyżej pomiędzy wszystkimi przełącznikami zostało zestawione łącze trunk natomiast do dw&oacute;ch interfejs&oacute;w - przełącznik S1 port f0/6 oraz przełącznik S3 port f0/18 zostały podłączone hosty. Łącza te pracują w trybie dostępu. Hosty (a raczej interfejsy przełącznika do kt&oacute;rych są podłączone) zostały przypisane do sieci VLAN o identyfikatorze 10.</p> <p>&nbsp;</p> <p>Polecenie: <strong>show interfeces trunk</strong> wydane na przełączniku S1 przedstawia wszystkie interfejsy pracujące w trybie magistrali (trunk).</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image60.png" alt="image60" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Dla przypomnienia, r&oacute;wnież komenda: <strong>show interfaces &lt;id_portu&gt; switchport</strong> pokaże nam bieżący status portu. Poniżej został ukazany stan interfejsu f0/1 przełącznika S1. Interfejs ten pracuje w trybie trunk (zresztą jak r&oacute;wnież interfejs f0/3).</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image61.png" alt="image61" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Wydanie tej samej komendy w odniesieniu do interfejsu f0/6 ukaże nam iż interfejs ten został skonfigurowany w trybie dostępu (do portu zostało podłączone urządzenie końcowe).</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image62.png" alt="image62" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Sprawdźmy stan skonfigurowany port&oacute;w pod kątem mechanizmu PortFast. Wydanie polecenia: <strong>show</strong> <strong>spanning-tree interface &lt;id_portu&gt; portfast</strong> uwidoczni status funkcji.</p> <p>&nbsp;</p> <p>Poniżej dla przełącznika S1 i jego interfejs&oacute;w f0/1 oraz f0/6, mechanizm PortFast jest nieaktywny. Host podłączony do interfejsu f0/6 i należący do sieci VLAN 10 z funkcji PortFast nie korzysta.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image63.png" alt="image63" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Uaktywnijmy PortFast korzystając z pierwszego rozwiązania a mianowicie uruchamiając go z wykorzystaniem polecenia: <strong>spanning-tree portfast default</strong> PortFast powinien zostać uruchomiony na wszystkich interfejsach dostępowych.</p> <p>&nbsp;</p> <p>Po wydaniu polecenia jesteśmy ostrzeżeni o konsekwencjach podłączenia do interfejsu na kt&oacute;rym została uaktywniona funkcja PortFast przełącznika bądź huba - podłączenie takowego urządzenia spowoduje powstanie pętli.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image64.png" alt="image64" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po uaktywnieniu PortFast sprawdźmy stan mechanizmu. Ponowne wydanie polecenia:<strong> show</strong> <strong>spanning-tree interface &lt;id_portu&gt; portfast</strong> ukaże nam włączony interfejs f0/6 przełącznika S1, na kt&oacute;rym działa funkcja PortFast.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image65.png" alt="image65" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Ten sam efekt zostałby by uzyskany gdybyśmy w trybie konfiguracji interfejsu f0/6 wydali polecenie: <strong>spanning-tree portfast</strong></p> <p>&nbsp;</p> <p>Jest jeszcze jeden spos&oacute;b, kt&oacute;ry pozwoli nam włączyć PortFast na porcie a mianowicie wykorzystanie polecenia:<strong> switchport host </strong>Komendę wydajemy w trybie konfiguracji interfejsu. Tak naprawdę wydanie polecenia spowoduje wykonanie trzech osobnych instrukcji (dość wygodne gdyż nie musimy wykonywać tego osobnymi komendami):</p> <p>&nbsp;</p> <ul> <li style="padding-left: 60px;">Uaktywniona zostanie funkcja PortFast,</li> <li style="padding-left: 60px;">Interfejs przełącznika ustawiany jest w trybie dostępu,</li> <li style="padding-left: 60px;">Wyłączany jest protok&oacute;ł PAgP odpowiedzialny za zestawienie kanału EtcherChannel (o EtcherChannel możesz przeczytać w moimi wcześniejszym wpisie: <a href="http://slow7.pl/sieci-komputerowe/item/112-co-w-sieci-siedzi-agregacja-laczy-przelacznika">http://slow7.pl/sieci-komputerowe/item/112-co-w-sieci-siedzi-agregacja-laczy-przelacznika</a>).</li> </ul> <p>&nbsp;</p> <p>Poniżej na rysunku za pomocą polecenia: <strong>switchport host</strong> został skonfigurowany interfejs f0/18 przełącznika S3.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image66.png" alt="image66" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Sprawdzenie stanu mechanizmu PortFast uwidacznia, że interfejs został skonfigurowany poprawnie.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image67.png" alt="image67" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Dodatkową weryfikację stanu włączenia bądź wyłączenia funkcji PortFast możemy dokonać za pomocą polecenia:<strong> show spanning-tree vlan &lt;id_VLAN&gt; </strong>Na rysunku poniżej w tabeli w kolumnie <strong>Type</strong> przy interfejsie f0/18 pojawił się wpis <strong>Edge</strong> oznaczający aktywność PortFast na danym interfejsie.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image68.png" alt="image68" width="700" height="359" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Poleceniem, kt&oacute;re r&oacute;wnież pozwoli nam na zweryfikowanie stanu PortFast jest polecenie:<strong> show spanning-tree detail</strong> Po wydaniu polecenia zostanie przedstawiona konfiguracji protokołu STP w odniesieniu do konkretnych interfejs&oacute;w przełącznika i ich przynależności do konkretnych sieci VLAN.</p> <p>&nbsp;</p> <p>Aby uzyskać informacje w kontekście jednego konkretnego interfejsu można posłużyć się poleceniem: <strong>show spanning-tree interface &lt;id_portu&gt; detail</strong></p> <p>&nbsp;</p> <p>Poniżej na zrzucie został ukazany stan interfejsu f0/18. Analiza informacji uzyskanych po wydaniu polecenia przekonuje nas iż na porcie tym aktywna jest funkcja PortFast. Dodatkowo można zauważyć, że pomimo uaktywnienia mechanizmu port nadal odbiera i wysyła ramki BPDU. Spowodowane to jest nadal aktywnym wykrywanie ewentualnych pętli.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image69.png" alt="image69" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Z mechanizmem PortFast związana jest jeszcze jedna funkcja a mianowicie BPDU Guard. BPDU Guard jest funkcją, kt&oacute;ra chroni interfejs przełącznika przed otrzymywaniem ramek BPDU na portach, na kt&oacute;rych nie powinny się takowe ramki pojawić. Funkcja ta stanowi jeden z element&oacute;w podwyższających bezpieczeństwo naszego przełącznika, gdyż można wyobrazić sobie atak w warstwie drugiej przeprowadzony z wykorzystaniem protokołu STP. Atakujący m&oacute;głby wykorzystać zestawione do hosta połączenie aby w miejsce hosta podłączyć przełącznik bądź użyć oprogramowania potrafiącego wygenerować fałszywe ramki BPDU (np. stp-packet, brconfig, scapy czy yersinia)</p> <p>&nbsp;</p> <p>Atak na STP zwykle wiąże się ze zmianą przełącznika gł&oacute;wnego na ten kontrolowany przez atakującego. Wspomniane programy mogą zostać wykorzystane do wysłania fałszywych komunikat&oacute;w STP. Atakujący host poprzez rozgłoszenie komunikat&oacute;w BPDU stara się wymusić ponowne przeliczenie algorytmu spanning-tree. BPDU generowane przez fałszywego hosta ogłaszają niższe wartości priorytetu tak, aby atakujący host został wybrany jako root. W przypadku powodzenia ataku i wybrania fałszywego przełącznika root-em uzyskujemy dostęp do informacji, kt&oacute;re by były nie osiągalne w inny spos&oacute;b.</p> <p>&nbsp;</p> <p>Jeśli port skonfigurowany jako PortFast i z włączoną opcją BPDU Guard zacznie otrzymywać ramki BPDU, switch automatycznie zablokuje ten port (przełączy go w stan errdisable). Po przejściu portu w ten stan administrator ręcznie musi go uaktywnić (możliwe jest r&oacute;wnież skonfigurowanie tzw. errdisable timeout czyli czasu, po minięciu kt&oacute;rego, port powraca do stanu normalnego funkcjonowania).</p> <p>&nbsp;</p> <p>Aby włączyć BPDU guard na wszystkich portach z włączoną opcją PortFast, korzystamy z polecenia: <strong>spanning-tree portfast bpduguard default</strong> Polecenie wydajemy w trybie konfiguracji globalnej.</p> <p>&nbsp;</p> <p>BPDU Guard możemy r&oacute;wnież włączyć na interesującym nas interfejsie z wykorzystaniem polecenia: <strong>spanning-tree bpduguard enable</strong> Komendę oczywiście wydajemy w trybie konfiguracji interfejsu.</p> <p>&nbsp;</p> <p>Przeprowadźmy więc mały test zbudujmy bardzo prostą konfigurację opartą na schemacie zamieszczonym poniżej.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image70.png" alt="image70" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Interfejs f0/3 przełącznika pracuje w trybie dostępu a dodatkowo na porcie została włączona funkcja PortFast oraz BPDU Guard.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image71.png" alt="image71" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Jak widać poniżej na zrzucie po wydaniu polecenia: <strong>show spanning-tree interface f0/3 detail</strong> obie funkcje są włączone.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image72.png" alt="image72" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>W scenariuszu do interfejsu f0/3 jest podłączony host. Aby mieć możliwość wysłania komunikat&oacute;w BPDU, host zostaje zamieniony na przełącznik. Po dokonanej zmianie nowo podłączony przełącznik zaczyna wysyłać ramki BPDU. Na skutek włączonej funkcji BPDU Guard interfejs f0/3 przełącznika S1 przechodzi do stanu errdisable.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image73.png" alt="image73" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Informacje o interfejsach wyłączonych na skutek włączonych mechanizm&oacute;w zabezpieczeń uzyskamy po wydaniu polecenia:<strong> show interfaces status err-disabled </strong></p> <p>&nbsp;</p> <p>Funkcja BPDU Guard zablokowała port.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image74.png" alt="image74" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Jak wcześniej wspominałem funkcję PortFast oraz BPDU Guard można aktywować globalnie tak by domyślnie oba mechanizmy były włączone.</p> <p>&nbsp;</p> <p>Poniżej na rysunku włączenie obu funkcji na przełączniku S1.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image75.png" alt="image75" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Status funkcji poznamy po wydaniu polecenia: <strong>show spanning-tree summary totals</strong></p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image76.png" alt="image76" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Z mechanizmem PortFast związana jest także funkcja <strong>filtrowania BPDU</strong>. Opcja ta zabezpiecza interfejsy w trybie PortFast przed odbieraniem i wysyłanie komunikat&oacute;w BPDU. Tak więc filtrowanie uniemożliwia wysyłanie i przetwarzanie ramek BPDU na portach przełącznika.</p> <p>&nbsp;</p> <p>Opcja ta, może być skonfigurowana globalnie lub na poziomie interfejsu.</p> <p>&nbsp;</p> <p>Filtrowanie domyślnie jest wyłączone na wszystkich interfejsach przełącznika. Aby automatycznie włączyć BPDU filtering na wszystkich interfejsach z aktywnym PortFast korzystamy z polecenia: <strong>spanning-tree portfast bpdufilter default</strong> Polecenie wydajemy w trybie konfiguracji globalnej. W przypadku interfejs&oacute;w, kt&oacute;re nie korzystają z PortFast filtrowanie nie zostanie włączone. Uruchomienie filtrowania w ten spos&oacute;b spowoduje wyłączenie wysyłania ramek BPDU w kierunku host&oacute;w. W przypadku pojawienia się ramek BPDU interfejs traci status PortFast i filtrowanie BPDU zostaje wyłączone.</p> <p>&nbsp;</p> <p>Włączenie filtrowania BPDU w trybie konfiguracji interfejsu odbywa się za pomocą polecenia: <strong>spanning-tree bpdufilter enable </strong>Uaktywnienie opcji spowoduje wyłączenie na interfejsie protokołu spanning-tree co może doprowadzić do powstania pętli.</p> <p>&nbsp;</p> <p>Weryfikację filtrowania BPDU przeprowadzimy za pomocą poleceń: <strong>show spanning-tree summary </strong>oraz <strong>show spanning-tree interface &lt;id_interfejsu&gt; detail</strong>.</p> <p>&nbsp;</p> <p>Aby jeszcze podwyższyć ochronę protokołu STP można skorzystać z dodatkowej funkcji jaką jest <strong>Root guard</strong>. Mechanizm ten umożliwia nam kontrolę nad wyborem przełącznika gł&oacute;wnego. Kontrola ta realizowana jest poprzez ograniczenie port&oacute;w przełącznika, na kt&oacute;rych będzie realizowany proces negocjacji. Na interfejsie przełącznika z skonfigurowaną funkcją Root guard otrzymane komunikaty BPDU z wartościami lepszymi będą ignorowane. Po otrzymaniu takich ramek port switcha przełączy się do stanu root-inconsistent. Oznacza to, że interfejs nie bierze udziału w przekazywaniu ruchu sieciowego. Port zostanie przywr&oacute;cony do normalnego stanu tylko wtedy gdy na interfejsie przestaną pojawiać się komunikaty BPDU wymuszające na przełączniku zmianę roota.</p> <p>&nbsp;</p> <p>Podsumowując, mechanizm Root guard powinien być włączany na interfejsach przełącznika, do kt&oacute;rych podłączone są inne switche, kt&oacute;re nigdy nie powinny zostać rootami.</p> <p>&nbsp;</p> <p>Root guard uaktywniamy za pomocą polecenia: <strong>spanning-tree guard root</strong> wydanego w trybie konfiguracji interfejsu.</p> <p>&nbsp;</p> <p>To tradycyjnie już mały przykład. Zał&oacute;żmy, że mamy o to taką prostą topologię złożoną z dw&oacute;ch przełącznik&oacute;w.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/ostatni.png" alt="ostatni" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Przełącznik S1 jest rootem.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image77.png" alt="image77" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Oba przełącznik są ze sobą połączone za pomocą interfejsu f0/3. Na przełączniku S1 zostaje uaktywniona funkcja Root guard. Włączenie funkcji zabroni przełącznikowi S2 zostanie przełącznikiem gł&oacute;wnym. O włączeniu Root guard dodatkowo jesteśmy poinformowani stosownym komunikatem w linii CLI przełącznika.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image78.png" alt="image78" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Dodatkowo weryfikację włączenia funkcji możemy przeprowadzić za pomocą polecenia: <strong>show spanning-tree interface &lt;id_interfejsu&gt; detail</strong> Na porcie f0/3 przełącznika S1 została uaktywniona funkcja Root guard.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image79.png" alt="image79" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Wymuśmy sytuację w kt&oacute;rej to przełącznik S2 będzie chciał zostać root-em. Na przełączniku S2 zostaje wydane polecenie: <strong>spanning-tree vlan 1 root primary</strong> Efekt wydania polecenia powinien być taki iż przełącznik S2 powinien zacząć pełnić rolę przełącznika gł&oacute;wnego.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image80.png" alt="image80" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Tak się nie dzieje gdyż mechanizm Root guard uaktywniony na switchu S1 wykrywa ramki BPDU nakazujące zmienić status pełnionej roli i zaczyna blokować interfejs f0/3. Informacja o zablokowaniu portu f0/3 zostaje nam przekazana poprzez komunikat w linii CLI przełącznika.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image81.png" alt="image81" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Sprawdzenie statusu portu f0/3 dostarcza nam informacji iż port f0/3 nie działa - status portu został ustanowiony na tzw. stan <strong>root inconsistent</strong></p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image82.png" alt="image82" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Port f0/3 w stanie root inconsistent będzie tak długo pozostawał aż przestaną napływać ramki BPDU o parametrach STP lepszych niż te kt&oacute;re zostały przypisane przełącznikowi S1.</p> <p>&nbsp;</p> <p>Aby zaprzestać wymuszenie zmiany root-a na przełączniku S2 zostaje wydane polecenie: <strong>no</strong> <strong>spanning-tree vlan 1 root primary</strong></p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image83.png" alt="image83" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po wydaniu polecenia port f0/3 przełącznika S1 przechodzi z stanu blokowania do stanu normalnego funkcjonowania. O fakcie tym jesteśmy poinformowani komunikatem.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image84.png" alt="image84" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Ponowne sprawdzenie stanu interfejsu potwierdza otrzymaną informację. Port f0/3 uczestniczy w procesie przekazywania danych. Zostało przywr&oacute;cone normalne funkcjonowanie portu.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image85.png" alt="image85" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Tak więc by zakończyć temat ochrony protokołu STP na koniec kr&oacute;tkie por&oacute;wnanie BPDU guard i Root guard.</p> <p>&nbsp;</p> <p><strong>BPDU guard</strong> spowoduje wyłączenie interfejsu przełącznika (stan errdisable) po otrzymaniu komunikatu BPDU jeśli na porcie uaktywniono PortFast. Ponowne włączenie portu musi zostać wykonane przez administratora.</p> <p>&nbsp;</p> <p><strong>Root guard</strong> pozwala innym przełącznikom uczestniczyć w STP, uczestnictwo trwa tak długo, p&oacute;ki dane urządzenie nie stara się zostać rootem. Normalne funkcjonowanie portu jest przywracane automatycznie po zaprzestaniu otrzymywania ramek BPDU wymuszających zmianę roota a kt&oacute;re to mogą być np. efektem przeprowadzanego ataku.</p> <p>&nbsp;</p> <p>Z protokołem STP związana jest jeszcze jedna funkcja - <strong>UplinkFast</strong>. Mechanizm ten został zaprojektowany z myślą o przełącznikach pracujących w warstwie dostępowej. Przełączniki pracujące w tej warstwie celem redundancji łącz z reguły są połączone wieloma łączami pomiędzy sobą a dodatkowo mają zestawione łącza pozwalające dotrzeć do przełącznik&oacute;w pracujących w warstwie dystrybucji. W domyślnej konfiguracji awaria łącza powoduje przejęcie zadań przez inny interfejs przełącznika. Aby port m&oacute;gł uczestniczyć w przekazywaniu ruchu sieciowego musi przejść wszystkie stany algorytmu STP. Cały proces uzyskania zbieżności może potrwać około 45 sekund bądź dłużej (wszystko zależy od konfiguracji naszej sieci). Mechanizm UplinkFast pozwala interfejsowi będącemu w trybie alternate port pominąć stany listening (stan nasłuchiwania) oraz learning (uczenie się) tak by od razu przejść do przekazywania danych. Z czasu 45 sekund przy ustawieniach domyślnych możemy zejść do 5 sekund przy aktywnym UplinkFast.</p> <p>&nbsp;</p> <p>Aby włączyć UplinkFast na przełączniku należy w trybie konfiguracji globalnej wydać polecenie: <strong>spanning-tree uplinkfast</strong></p> <p>&nbsp;</p> <p>Funkcja ta powinna być aktywowana tylko na przełącznikach pracujących w warstwie dostępowej a w żadnym przypadku na switchach pracujących w warstwie dystrybucji bądź rdzenia ponieważ uruchomienie mechanizmu uniemożliwi przełącznikowi zostanie rootem. Włączenie UplinkFast spowoduje ustawienie priorytetu na wartość wynoszącą 49152 (zmiana dotyczy wszystkich sieci VLAN), zmianie r&oacute;wnież ulegną koszty łączy (koszt zostanie zmieniony na wartość 3019). Dokonane zmiany możemy zaobserwować po wydaniu polecenia: <strong>show spanning-tree</strong></p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image86.png" alt="image86" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Weryfikację UplinkFast dokonujemy za pomocą polecenia: <strong>show spanning-tree summary totals</strong> Jak widać poniżej funkcja jest włączona.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image87.png" alt="image87" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Wyłączenie UplinkFast następuje po wydaniu polecenia: <strong>no</strong> <strong>spanning-tree uplinkfast </strong>Komenda cofa wszystkie modyfikacje priorytet&oacute;w i koszt&oacute;w łącza.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/stp/image88.png" alt="image88" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Tak więc na tym etapie rozważania na temat protokołu STP chciałbym zakończyć tak by w kt&oacute;rymś z kolejnych wpis&oacute;w zająć się protokołami PVST czy RSTP.</p></div> Konfiguracja połączenia VPN w środowisku Windows lecz nie tylko. 2016-03-26T19:57:25+00:00 2016-03-26T19:57:25+00:00 http://slow7.pl/sieci-komputerowe/item/117-konfiguracja-polaczenia-vpn-w-srodowisku-windows-lecz-nie-tylko pikolo [email protected] <div class="K2FeedImage"><img src="http://slow7.pl/media/k2/items/cache/39a27618f1dc54b80987c6706135e6b7_S.jpg" alt="Konfiguracja połączenia VPN w środowisku Windows lecz nie tylko." /></div><div class="K2FeedIntroText"><p>W dobie coraz większej inwigilacji i ochrony swojej prywatności wielu użytkownik&oacute;w decyduje się na korzystanie z sieci Internet za pośrednictwem połączenia VPN. Lecz czym tak naprawdę ten VPN jest? Wikipedia definicję VPN-u określa jako:</p> <p>&bdquo;VPN (ang. Virtual Private Network, Wirtualna Sieć Prywatna) &ndash; tunel, przez kt&oacute;ry płynie ruch w ramach sieci prywatnej pomiędzy klientami końcowymi za pośrednictwem publicznej sieci (takiej jak Internet) w taki spos&oacute;b, że węzły tej sieci są przezroczyste dla przesyłanych w ten spos&oacute;b pakiet&oacute;w. Można opcjonalnie kompresować lub szyfrować przesyłane dane w celu zapewnienia lepszej jakości lub większego poziomu bezpieczeństwa. Określenie &bdquo;wirtualna&rdquo; oznacza, że sieć ta istnieje jedynie jako struktura logiczna działająca w rzeczywistości w ramach sieci publicznej, w odr&oacute;żnieniu od sieci prywatnej, kt&oacute;ra powstaje na bazie specjalnie dzierżawionych w tym celu łącz. Pomimo takiego mechanizmu działania stacje końcowe mogą korzystać z VPN dokładnie tak, jak gdyby istniało pomiędzy nimi fizyczne łącze prywatne.&rdquo;</p> </div><div class="K2FeedFullText"> <p>I tak naprawdę definicja ta w spos&oacute;b dokładny opisuje mechanizm i sens wdrożenia tej technologii. Lecz nie wspomniano w niej o jeszcze jednej kwestii szczeg&oacute;lnie ważnej z punktu działania firm.</p> <p>&nbsp;</p> <p>Zdalny dostęp do sieci firmowej i jej zasob&oacute;w stał się elementem kluczowym dla wielu firm bez kt&oacute;rego wielu pracownik&oacute;w nie mogłoby realizować swoich podstawowych zadań. Odeszliśmy już od modelu w kt&oacute;rym pracownik by uzyskać np. dostęp do swoich plik&oacute;w musiał znajdować się fizycznie w oddziale firmy teraz za pośrednictwem odpowiednio skonfigurowanej infrastruktury sieciowej może tego dokonać z dowolnego miejsca na świecie pod warunkiem, że ma się dostęp do Internetu. Tak więc z punktu widzenia firmy, pracownik&oacute;w i wykonywanych obowiązk&oacute;w największą zaletą tworzenia połączeń VPN jest możliwość zdalnej pracy tak jak by się znajdowało przy własnym biurku.</p> <p>&nbsp;</p> <p>A dodatkowo dzięki zastosowaniu szyfrowania uzyskujemy bezpieczne połączenie z Internetem korzystając z niezabezpieczonej sieci bezprzewodowej w miejscach użyteczności publicznej.</p> <p>&nbsp;</p> <p>Dla niekt&oacute;rych os&oacute;b argumentem, kt&oacute;ry ma niebanalne znaczenie jest możliwość uzyskania adresu IP zgodnego z wybraną lokalizacją geograficzną. Oznacza to możliwość uzyskania adresu IP przynależnego np. USA. Takie podejście do sprawy sprawi, że otrzymamy dostęp do usług przynależnych danemu regionowi. Przykład proszę bardzo &ndash; od niedawna Polacy otrzymali dostęp do usługi VOD Netflix (dla niewtajemniczonych wypożyczalnia film&oacute;w online) a jeszcze do niedawna było to niemożliwe gdyż Netflix oficjalnie na naszym terenie usług tego typu nie prowadził. Oznaczało to brak możliwości rejestracji w serwisie dla os&oacute;b nie będących obywatelami USA. Część użytkownik&oacute;w by ominąć te ograniczenie za pośrednictwem łącza VPN łączyło się z serwerem amerykańskim, dzięki temu komputer otrzymywał adres IP zgodny z lokalizacją geograficzną a otrzymanie takiego adresu IP gwarantowało dostęp do usług serwisu video (serwery Netflixa odnotowywały rejestrację z obszaru USA).</p> <p>&nbsp;</p> <p>Aby rozwiać jeszcze wątpliwości co do sposobu działania mechanizmu VPN przeanalizujmy przykład, kt&oacute;ry został zaprezentowany na rysunku poniżej.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image1.png" alt="image1" width="700" height="323" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Z połączenia z Internetem korzysta dw&oacute;ch użytkownik&oacute;w: Beata i Jan.</p> <p>&nbsp;</p> <p>Beata dostęp do sieci realizuje w spos&oacute;b tradycyjny tj. ma wykupione łącze u lokalnego dostawcy ISP (dostawca usług internetowych) i dzięki połączeniu z nim może przeglądać zasoby sieci. Nie wykorzystuje mechanizmu VPN. Oznacz to, że cały ruch sieciowy dla dostawcy jest przezroczysty tak więc indeks odwiedzanych miejsc, pobranych plik&oacute;w znajduje swoje odzwierciedlenie w logach ISP. Dodatkowo informacja ta jest odnotowana na serwerach docelowych z kt&oacute;rymi użytkownik Beata nawiązała połączenie.</p> <p>&nbsp;</p> <p>Drugi użytkownik Jan pomimo wykupienia łącza u swojego provaidera dodatkowo zdecydował się na realizację połączenia z siecią za pośrednictwem bramy VPN. Dzięki wykorzystaniu tunelu VPN, ISP Jana wie jedynie, że Jan uzyskał połączenie z bramą VPN lecz nie widzi jaki konkretnie ruch sieciowy jest prowadzony. Komunikacja pomiędzy Janem a serwerem VPN jest zaszyfrowana.</p> <p>&nbsp;</p> <p>Dodatkowo serwery docelowe odnotowują aktywność w postaci przeglądanych stron i pobranych plik&oacute;w lecz administrator serwera nie jest w stanie określić iż to właśnie Robert dane treści przegląda, gdyż wszystkie działania w imieniu Roberta podejmuje serwer VPN i to informacje o jego adresie IP znajdą się w logach serwer&oacute;w końcowych.</p> <p>&nbsp;</p> <p>Tak więc myślę, że ten praktyczny przykład w spos&oacute;b dość obrazowy ilustruje mechanizm działania połączeń VPN oraz sens ich stosowania.</p> <p>&nbsp;</p> <p>Rozr&oacute;żniamy dwa podstawowe rodzaje sieci VPN:</p> <p>&nbsp;</p> <p><strong>Site - to - Site</strong> - połączenie VPN jest tworzone pomiędzy dwiema odległymi sieciami LAN. Urządzeniami realizującymi połączenie może być router z obsługą połączeń VPN bądź firmowy serwer. Przykładem połączenia Site - to - Site jest połączenie oddział&oacute;w firmy z centralą.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image2.png" alt="image2" width="700" height="281" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p><strong>Client - Site </strong>- tunel VPN zestawiany jest np. pomiędzy komputerem zdalnego użytkownika a siecią LAN. Przykładem takiego połączenia jest sytuacja w kt&oacute;rej pracownik firmy będąc poza jej siedzibą musi mieć dostęp do zasob&oacute;w znajdujących się w sieci firmowej (pliki, oprogramowanie, bazy danych itp.).</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image3.png" alt="image3" width="700" height="366" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>W artykule w gł&oacute;wnej mierze będziemy zajmować się połączeniami typu Client - Site lecz na samym końcu pokarzę przykład połączenia Site - to - Site.</p> <p>&nbsp;</p> <p>Przy konfiguracji połączenia VPN będziemy mieli do czynienia z r&oacute;żnymi protokołami odpowiedzialnymi za zestawienie łącza więc poniżej kr&oacute;tka ich charakterystyka.</p> <p>&nbsp;</p> <p><strong>Protok&oacute;ł SSTP</strong> (ang. Secure Socket Tunneling Protocol) Protok&oacute;ł SSTP został wprowadzony wraz z systemem Windows Vista SP1 oraz Windows Server 2008 umożliwiając przekazywanie ruchu poprzez zapory blokujące ruch PPTP i L2TP/IPsec. Protok&oacute;ł ten umieszcza ramki protokołu PPP w ramkach protokołu HTTP umożliwiając realizowanie połączeń VPN w sytuacjach gdy klient znajduje się poza firewallem, urządzeniem z obsługą translacji adres&oacute;w sieciowych (NAT) lub serwerem proxy. Użycie protokołu umożliwia obsługę metod silnego uwierzytelniania, takich jak EAP-TLS. Korzystanie z HTTPS oznacza, że ruch przekazywany jest przez port 443 protokołu TCP, czyli powszechnie używany port dostępu do sieci Web. Protok&oacute;ł SSL (Secure Sockets Layer) zapewnia bezpieczeństwo na poziomie transportu wraz z rozszerzonymi metodami negocjacji klucza, szyfrowania i sprawdzania integralności.</p> <p>&nbsp;</p> <p>Zalety:</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">- bardzo bezpieczny,</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">- pełna integracja z środowiskiem Windows (Windows Vista z dodatkiem SP1, Windows 7, Windows 8, Windows 10),</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">- ruch sieciowy protokoł&oacute;w odpowiedzialnych za działanie kanału VPN nie jest blokowany przez zapory sieciowe.</p> <p>Wady:</p> <p style="margin-left: 30px;">- brak wsparcia dla innych system&oacute;w.</p> <p><strong>&nbsp;</strong></p> <p>&nbsp;</p> <p><strong>OpenVPN </strong>jest pakietem oprogramowania, kt&oacute;re umożliwia nam utworzenie połączeń VPN. Biblioteki odpowiedzialne za działanie programu umożliwiają utworzenie zaszyfrowanych połączeń z wykorzystaniem protokoł&oacute;w SSLv3/TLSv1. Co ważne oprogramowania tego możemy użyć w trybie serwera umożliwiając klientom podłączenie się i korzystanie z tunelu VPN bądź trybie klienta. Jak to fajnie opisano (źr&oacute;dło: <a href="http://sekurak.pl/praktyczna-implementacja-sieci-vpn-na-przykladzie-openvpn/">http://sekurak.pl/praktyczna-implementacja-sieci-vpn-na-przykladzie-openvpn/</a>) &bdquo;OpenVPN zapewnia nam komplet mechanizm&oacute;w, kt&oacute;ry pozwala nam zbudować bezpieczną sieć VPN &ndash; autoryzuje, uwierzytelnia, szyfruje i zapewnia integralność przesłanych danych. Ponadto chroni serwer (koncentrator) przed atakami DoS oraz sieć wirtualną przed wstrzykiwaniem obcych danych. Wszystkie te rzeczy powodują, że OpenVPN jest doskonałym wyborem do większości zastosowań.&rdquo;</p> <p>&nbsp;</p> <p>Oprogramowanie OpenVPN to tak naprawdę temat sam w sobie i zasługuje na osobny wpis (jest w planach) co warto zaznaczyć, że warto korzystać z tego rozwiązania gdy tylko mamy taką możliwość. W wpisie tym o technologię tą ocierać się będziemy często lecz wykorzystamy tylko jedną funkcjonalność oprogramowania a mianowicie tworzenie połączenia VPN od strony klienta (serwerowymi aspektami w tym artykule zajmować się nie będziemy).</p> <p>&nbsp;</p> <p>Zalety:</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">- wysoka elastyczność konfiguracji,</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">- bardzo bezpieczny,</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">- brak problem&oacute;w z konfiguracją reguł firewalla,</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">- szeroki wyb&oacute;r algorytm&oacute;w szyfrowania,</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">- Open Source - łatwość weryfikacji kodu i działania narzędzia,</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">- oprogramowanie jest dostępne dla system&oacute;w mobilnych co do nie dawna stanowiło problem.</p> <p>Wady:</p> <p style="margin-left: 30px;">- Do poprawnego działania wymagana jest instalacja oprogramowania firm trzecich, brak wsparcia od strony system&oacute;w,</p> <p>&nbsp;</p> <p><strong>Protok&oacute;ł L2TP</strong> (ang. Layer Two Tunneling Protocol) Protok&oacute;ł ten jest powszechnym standardem pozwalającym na ustanowienie kanału VPN. Protok&oacute;ł L2TP jest połączeniem protokoł&oacute;w PPTP oraz L2F (ang. Layer 2 Forwarding), powstał w wyniku wsp&oacute;łpracy firm Cisco i Microsoft. Z protokołem L2TP bardzo często skojarzany jest protok&oacute;ł IPSec, taki połączenie znane jest jako L2TP over IPSec. Połączenie protokoł&oacute;w przyniosło same zalety gdyż sam protok&oacute;ł L2PT zyskał możliwość uwierzytelnienia zaś protok&oacute;ł IPSec rozszerzył swoją funkcjonalność o obsługę nie tylko pakiet&oacute;w IP. Protok&oacute;ł L2TP/IPsec został opisany w dokumencie RFC 2661.</p> <p>&nbsp;</p> <p>Zalety:</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">- bezpieczniejszy niż PPTP,</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">- łatwa konfiguracja,</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">- klient dostępny na wszystkich nowoczesnych platformach,</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">- szybszy niż OpenVPN.</p> <p style="margin-bottom: 0.0001pt;">Wady:</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">- może być zagrożony przez NSA (niesprawdzone).</p> <p>&nbsp;</p> <p><strong>Protok&oacute;ł PPTP</strong> (ang. Point-to-Point Tunneling Protocol) jest jednym z najstarszych sposob&oacute;w pozwalających nam na tworzenie wirtualnych sieci prywatnych. Protok&oacute;ł został opracowany przez firmę Microsoft.</p> <p>&nbsp;</p> <p>Zalety:</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">- klient obecny na wszystkich platformach systemowych,</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">- bardzo łatwa konfiguracja połączenia,</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">- szybkość działania.</p> <p style="margin-bottom: 0.0001pt;">Wady:</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">- nie gwarantuje odpowiedniego stopnia zabezpieczeń.</p> <p>&nbsp;</p> <p>I jeszcze jako podsumowanie wstępu, kr&oacute;tkie zebranie najważniejszych cech protokoł&oacute;w (źr&oacute;dło: <a href="http://vpnonline.pl/protokoly-vpn-porownanie">http://vpnonline.pl/protokoly-vpn-porownanie</a> oraz <a href="http://b1s.eu/pl/bez-kategorii/945-porownanie-protokolow-vpn.html">http://b1s.eu/pl/bez-kategorii/945-porownanie-protokolow-vpn.html</a>).</p> <p>&nbsp;</p> <table border="1" class="Tabela-Siatka1" style="border-collapse: collapse;" cellspacing="0" cellpadding="0"> <tbody> <tr> <td style="border: 1pt solid windowtext; padding: 0cm 5.4pt;" valign="top">&nbsp;</td> <td style="border-width: 1pt 1pt 1pt medium; border-style: solid solid solid none; border-color: windowtext windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top"><strong><span style="font-size: 8pt; line-height: 115%;">STANDARD VPN<br /> PPTP</span></strong></td> <td style="border-width: 1pt 1pt 1pt medium; border-style: solid solid solid none; border-color: windowtext windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top"><strong><span style="font-size: 8pt; line-height: 115%;">STANDARD VPN<br /> IPsec</span></strong></td> <td style="border-width: 1pt 1pt 1pt medium; border-style: solid solid solid none; border-color: windowtext windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top"><strong><span style="font-size: 8pt; line-height: 115%;">STANDARD VPN<br /> L2TP</span></strong></td> <td style="border-width: 1pt 1pt 1pt medium; border-style: solid solid solid none; border-color: windowtext windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top"><strong><span style="font-size: 8pt; line-height: 115%;">SECURE VPN<br /> OpenVPN</span></strong></td> <td style="border-width: 1pt 1pt 1pt medium; border-style: solid solid solid none; border-color: windowtext windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top"><strong><span style="font-size: 8pt; line-height: 115%;">SECURE VPN<br /> SSTP</span></strong></td> </tr> <tr> <td style="border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt;" valign="top"><strong><span style="font-size: 8pt; line-height: 115%;">Poziom szyfrowania</span></strong></td> <td style="border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top"><span style="font-size: 8pt; line-height: 115%;">128 BIT</span></td> <td style="border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top"><span style="font-size: 8pt; line-height: 115%;">128 BIT</span></td> <td style="border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top"><span style="font-size: 8pt; line-height: 115%;">128 BIT</span></td> <td style="border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top"><span style="font-size: 8pt; line-height: 115%;">256 BIT</span></td> <td style="border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top"><span style="font-size: 8pt; line-height: 115%;">256 BIT</span></td> </tr> <tr> <td style="border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt;" valign="top"><strong><span style="font-size: 8pt; line-height: 115%;">Wspierany system</span></strong></td> <td style="border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top"> <p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0.0001pt; line-height: 115%;"><span style="font-size: 8pt; line-height: 115%;">WindowsLinux</span></p> <p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0.0001pt; line-height: 115%;"><span style="font-size: 8pt; line-height: 115%;">iOS</span></p> <p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0.0001pt; line-height: 115%;"><span style="font-size: 8pt; line-height: 115%;">Android</span></p> <p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0.0001pt; line-height: 115%;"><span style="font-size: 8pt; line-height: 115%;">Windows Phone</span></p> <p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0.0001pt; line-height: 115%;"><span style="font-size: 8pt; line-height: 115%;">Mac OS X</span></p> </td> <td style="border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top"> <p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0.0001pt; line-height: 115%;"><span style="font-size: 8pt; line-height: 115%;">Windows</span></p> <p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0.0001pt; line-height: 115%;"><span style="font-size: 8pt; line-height: 115%;">Linux</span></p> <p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0.0001pt; line-height: 115%;"><span style="font-size: 8pt; line-height: 115%;">iOS</span></p> <p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0.0001pt; line-height: 115%;"><span style="font-size: 8pt; line-height: 115%;">Android</span></p> <p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0.0001pt; line-height: 115%;"><span style="font-size: 8pt; line-height: 115%;">Windows Phone</span></p> <p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0.0001pt; line-height: 115%;"><span style="font-size: 8pt; line-height: 115%;">Mac OS X</span></p> </td> <td style="border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top"> <p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0.0001pt; line-height: 115%;"><span style="font-size: 8pt; line-height: 115%;">Windows</span></p> <p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0.0001pt; line-height: 115%;"><span style="font-size: 8pt; line-height: 115%;">Linux</span></p> <p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0.0001pt; line-height: 115%;"><span style="font-size: 8pt; line-height: 115%;">iOS</span></p> <p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0.0001pt; line-height: 115%;"><span style="font-size: 8pt; line-height: 115%;">Android</span></p> <p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0.0001pt; line-height: 115%;"><span style="font-size: 8pt; line-height: 115%;">Windows Phone</span></p> <p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0.0001pt; line-height: 115%;"><span style="font-size: 8pt; line-height: 115%;">Mac OS X</span></p> </td> <td style="border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top"> <p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0.0001pt; line-height: 115%;"><span style="font-size: 8pt; line-height: 115%;">Windows</span></p> <p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0.0001pt; line-height: 115%;"><span style="font-size: 8pt; line-height: 115%;">Linux</span></p> <p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0.0001pt; line-height: 115%;"><span style="font-size: 8pt; line-height: 115%;">iOS</span></p> <p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0.0001pt; line-height: 115%;"><span style="font-size: 8pt; line-height: 115%;">Android</span></p> <p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0.0001pt; line-height: 115%;"><span style="font-size: 8pt; line-height: 115%;">Mac OS X</span></p> </td> <td style="border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top"> <p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0.0001pt; line-height: 115%;"><span style="font-size: 8pt; line-height: 115%;">Windows</span></p> <p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0.0001pt; line-height: 115%;"><span style="font-size: 8pt; line-height: 115%;">Linux</span></p> <p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0.0001pt; line-height: 115%;"><span style="font-size: 8pt; line-height: 115%;">BSD</span></p> </td> </tr> <tr> <td style="border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt;" valign="top"><strong><span style="font-size: 8pt; line-height: 115%;">Kompatybilność</span></strong></td> <td style="border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top"><span style="font-size: 8pt; line-height: 115%;">Komputery, smartfony, tablety</span></td> <td style="border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top"><span style="font-size: 8pt; line-height: 115%;">Komputery, smartfony, tablety</span></td> <td style="border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top"><span style="font-size: 8pt; line-height: 115%;">Komputery, smartfony, tablety</span></td> <td style="border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top"><span style="font-size: 8pt; line-height: 115%;">Komputery, smartfony, tablety</span></td> <td style="border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top"><span style="font-size: 8pt; line-height: 115%;">Komputery</span></td> </tr> <tr> <td style="border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt;" valign="top"><strong><span style="font-size: 8pt; line-height: 115%;">Bezpieczeństwo</span></strong></td> <td style="border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top"><span style="font-size: 8pt; line-height: 115%;">Podstawowe szyfrowanie do 128bit.</span></td> <td style="border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top"><span style="font-size: 8pt; line-height: 115%;">Mocne szyfrowanie. Dodatkowo opakowuje dane przez protok&oacute;ł IPsec do 128bit.</span></td> <td style="border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top"><span style="font-size: 8pt; line-height: 115%;">Mocne szyfrowanie. Dodatkowo opakowuje dane przez protok&oacute;ł IPsec do 128bit.</span></td> <td style="border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top"><span style="font-size: 8pt; line-height: 115%;">Bardzo mocne szyfrowanie za pomocą certyfikat&oacute;w do 256bit</span></td> <td style="border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top"><span style="font-size: 8pt; line-height: 115%;">Bardzo mocne szyfrowanie za pomocą certyfikat&oacute;w do 256bit</span></td> </tr> <tr> <td style="border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt;" valign="top"><strong><span style="font-size: 8pt; line-height: 115%;">Szybkość</span></strong></td> <td style="border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top"><span style="font-size: 8pt; line-height: 115%;">Bardzo szybki ze względu na podstawowe szyfrowanie</span></td> <td style="border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top"><span style="font-size: 8pt; line-height: 115%;">Wymaga więcej procesora do szyfrowania danych</span></td> <td style="border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top"><span style="font-size: 8pt; line-height: 115%;">Wymaga więcej procesora do szyfrowania danych</span></td> <td style="border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top"><span style="font-size: 8pt; line-height: 115%;">Najlepsza wydajność. Bardzo szybki nawet na połączeniach z dużym op&oacute;źnieniem</span></td> <td style="border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top"><span style="font-size: 8pt; line-height: 115%;">Najlepsza wydajność. Bardzo szybki nawet na połączeniach z dużym op&oacute;źnieniem</span></td> </tr> <tr> <td style="border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt;" valign="top"><strong><span style="font-size: 8pt; line-height: 115%;">Konfiguracja</span></strong></td> <td style="border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top"><span style="font-size: 8pt; line-height: 115%;">Bardzo prosta. Nie wymaga dodatkowego oprogramowania.</span></td> <td style="border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top"><span style="font-size: 8pt; line-height: 115%;">Prosta, wymaga dodatkowych ustawień. Nie wymaga dodatkowego oprogramowania</span></td> <td style="border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top"><span style="font-size: 8pt; line-height: 115%;">Prosta, wymaga dodatkowych ustawień. Nie wymaga dodatkowego oprogramowania</span></td> <td style="border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top"><span style="font-size: 8pt; line-height: 115%;">Wymagane dodatkowe oprogramowanie. Wymagana instalacja certyfikat&oacute;w</span></td> <td style="border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top"><span style="font-size: 8pt; line-height: 115%;">Protok&oacute;ł wbudowany w Windows Vista, Windows 7. Wymagana instalacja certyfikat&oacute;w</span></td> </tr> <tr> <td style="border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt;" valign="top"><strong><span style="font-size: 8pt; line-height: 115%;">Używane porty</span></strong></td> <td style="border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top"> <p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0.0001pt; line-height: 115%;"><span style="font-size: 8pt; line-height: 115%;">TCP 1723 - inicjalizacja</span></p> <p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0.0001pt; line-height: 115%;"><span style="font-size: 8pt; line-height: 115%;">GRE</span></p> </td> <td style="border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top"> <p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0.0001pt; line-height: 115%;"><span style="font-size: 8pt; line-height: 115%;">UDP 1701</span></p> <p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0.0001pt; line-height: 115%;"><span style="font-size: 8pt; line-height: 115%;">UDP 500 - kanał wymiany klucza</span></p> <p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0.0001pt; line-height: 115%;"><span style="font-size: 8pt; line-height: 115%;">UDP 4500</span></p> <p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0.0001pt; line-height: 115%;"><span style="font-size: 8pt; line-height: 115%;">ESP (protok&oacute;ł numer 50) dokument RFC 2406</span></p> </td> <td style="border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top"> <p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0.0001pt; line-height: 115%;"><span style="font-size: 8pt; line-height: 115%;">UDP 1701</span></p> <p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0.0001pt; line-height: 115%;"><span style="font-size: 8pt; line-height: 115%;">UDP 500 - kanał wymiany klucza</span></p> <p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0.0001pt; line-height: 115%;"><span style="font-size: 8pt; line-height: 115%;">UDP 4500</span></p> <p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0.0001pt; line-height: 115%;"><span style="font-size: 8pt; line-height: 115%;">ESP (protok&oacute;ł numer 50) dokument RFC 2406</span></p> </td> <td style="border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top"> <p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0.0001pt; line-height: 115%;"><span style="font-size: 8pt; line-height: 115%;">TCP 993</span></p> <p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0.0001pt; line-height: 115%;"><span style="font-size: 8pt; line-height: 115%;">TCP 443</span></p> </td> <td style="border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top"><span style="font-size: 8pt; line-height: 115%;">TCP 443</span></td> </tr> <tr> <td style="border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt;" valign="top"><strong><span style="font-size: 8pt; line-height: 115%;">Podsumowanie</span></strong></td> <td style="border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top"><span style="font-size: 8pt; line-height: 115%;">PPTP - Point to Point Tunneling Protocol. Najbardziej rozpowszechniony protok&oacute;ł najbardziej podatny na błędy. PPTP jest szybki i bardzo prosty w konfiguracji. Jest to dobry wyb&oacute;r jeżeli twoje urządzenie nie wspiera OpenVPN lub SSTP VPN. Rekomendowany dla urządzeń mobilnych.</span></td> <td style="border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top"><span style="font-size: 8pt; line-height: 115%;">IPsec&nbsp;IP Security. Istotną cechą tego protokołu jest jednokierunkowość. Pełna łączność wykorzystuje dwa kanały jeden od A do B drugi od B do A. L2TP/IPsec jest to dobry wyb&oacute;r jeżeli twoje urządzenie nie wspiera OpenVPN lub SSTP VPN i zależy ci na dużym bezpieczeństwie. Rekomendowany dla urządzeń mobilnych.</span></td> <td style="border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top"><span style="font-size: 8pt; line-height: 115%;">IPsec IP Security. Istotną cechą tego protokołu jest jednokierunkowość. Pełna łączność wykorzystuje dwa kanały jeden od A do B drugi od B do A. L2TP/IPsec jest to dobry wyb&oacute;r jeżeli twoje urządzenie nie wspiera OpenVPN lub SSTP VPN i zależy ci na dużym bezpieczeństwie. Rekomendowany dla urządzeń mobilnych.</span></td> <td style="border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top"><span style="font-size: 8pt; line-height: 115%;">OpenVPN jest bardzo szybkim,&nbsp; bezpieczny, bardzo stabilnym i rekomendowanym protokołem dla system&oacute;w Windows , Linux i Android. Zapewnia najwyższa wydajność, bezpieczeństwo i niezawodność. Używanie OpenVPN przez UDP jest szybsze niż przez TCP.</span></td> <td style="border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top"><span style="font-size: 8pt; line-height: 115%;">SSTP (Secure Socket Tunneling Protocol) VPN jest rekomendowanym protokołem dla system&oacute;w Windows. Najwyższa wydajność, bezpieczeństwo i niezawodność. Korzysta z protokołu SSL na porcie TCP 443 pozwala SSTP przejść przez praktycznie wszystkie firewalle i serwery proxy. PPTP nie wymaga użycia infrastruktury klucza publicznego (PKI).</span></td> </tr> </tbody> </table> <p>&nbsp;</p> <p>Wprowadzenie uważam za zakończone przejdźmy zatem dalej i już na konkretnych przykładach om&oacute;wmy spos&oacute;b konfiguracji i zestawiania połączenia VPN. Rozpoczniemy od systemu Windows 10 by w kolejnych krokach om&oacute;wić i opisać systemy: Windows Phone, IOS oraz Android. System Linux został przeze mnie celowo pominięty gdyż chciałbym temat opisać w osobnym wpisie i skupić się na OpenVPN z naciskiem na funkcję bramy (komputer realizuje połączenia w imieniu klienta).</p> <p>&nbsp;</p> <p>Przedstawione w tym wpisie przykłady konfiguracji połączeń VPN opierać się będą o usługi oferowane przez Private Internet Access (nie jest to żadna reklama lecz akurat z usług tej firm korzystam).</p> <p>&nbsp;</p> <p><strong><span style="font-size: 12pt; line-height: 115%;">System Windows 10</span></strong></p> <p>&nbsp;</p> <p>Aby w systemie Windows 10 skonfigurować połączenie VPN należy kliknąć na ikonę <strong>Centrum Akcji</strong> i z dostępnych ikon wybrać <strong>VPN</strong>.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image4.png" alt="image4" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Opcjonalnie do opcji odpowiedzialnych za zestawienie kanału VPN możemy dostać się po wybraniu ikony <strong>Sieć i Internet</strong> dostępnej w oknie <strong>Ustawienia</strong> (skr&oacute;t Win+I)</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image5.png" alt="image5" width="700" height="414" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po otwarciu nowego okna z dostępnych zakładek odszukujemy kartę <strong>VPN</strong> i z dostępnych opcji wybieramy <strong>Dodaj połączenie VPN</strong>.</p> <p>&nbsp;</p> <p>Dodatkowo na karcie tej możemy zdefiniować opcje użycia połączenia VPN:</p> <p style="margin-left: 30px;"><strong>Zezwalaj na połączenia VPN w sieciach taryfowych</strong> &ndash; dostęp do Internetu może być świadczony przez ISP, kt&oacute;ry nalicza opłaty za ilość wykorzystanych danych (tj. za ilość danych wysłanych i odebranych). Takie połączenie jest w&oacute;wczas traktowane jako połączenie <span class="newterm">taryfowe (najczęściej tego typu połączenie jest realizowane dzięki wykorzystaniu sieci kom&oacute;rkowych). Łącza tego typu po przekroczeniu ustalonego limitu bardzo często są ograniczane tj. nadal można cieszyć się z połączenia z Internetem lecz już nie z pełną prędkością bądź zostanie nam naliczona dodatkowa opłata za ilość danych wykorzystanych poza ustalonym limitem. </span>Opcja ta pozwala nam ustawić czy połączenie VPN może być zestawione w przypadku wykrycia korzystania z tego typu sieci.</p> <p style="margin-left: 30px;"><strong>Zezwalaj na połączenia VPN podczas korzystania z</strong> <strong>roamingu</strong> &ndash; wyłączenie opcji spowoduje zabronienie ustanowienie połączenia VPN w sieciach kom&oacute;rkowych innych niż sieć macierzysta.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image6.png" alt="image6" width="700" height="373" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po wyborze opcji dodania połączenia VPN w nowym oknie <strong>Dodawanie połączenia sieci VPN</strong> przechodzimy do konfiguracji parametr&oacute;w połączenia.</p> <p>&nbsp;</p> <p>Co należy zaznaczyć opcje definiowane w tym oknie zależne są od naszego operatora. Dokładny spos&oacute;b konfiguracji znajdziemy na stronach usługodawcy. W przypadku PIA konfiguracja sprowadza się do wybrania w polu <strong>Dostawca sieci VPN</strong> opcji <strong>Windows (wbudowane)</strong> Kolejny krokiem jest ustalenie nazwy połączenia. By m&oacute;c zestawić działające połączenie niezbędne opcje jakie musimy zdefiniować to <strong>Nazwa lub adres IP serwera</strong> oraz <strong>Typ sieci VPN</strong>. PIA umożliwia między innymi utworzenie łącza VPN z wykorzystaniem protokoł&oacute;w L2TP/IPsec z kluczem wstępnym, dlatego też opcje takowe zostały wybrane.</p> <p>&nbsp;</p> <p><strong>Nazwę użytkownika</strong> oraz <strong>hasło</strong> uzyskamy od operatora (jeśli jest taka potrzeba).</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image7.png" alt="image7" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po zdefiniowaniu wszystkich opcji wybieramy <strong>Zapisz</strong>. Połączenie pojawi się na liście dostępnych. Aby ustanowić połączenie wybieramy <strong>Połącz</strong>.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image8.png" alt="image8" width="700" height="639" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Jeśli wszystkie opcje zostały poprawnie zdefiniowane połączenie powinno zostać zestawione. Jak widać poniżej połączenie zostało ustanowione - status połączenia: <strong>Połączono</strong></p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image9.png" alt="image9" width="700" height="289" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Status połączenia VPN można r&oacute;wnież sprawdzić klikając w tray-u na ikonę połączenia sieciowego.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image10.png" alt="image10" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Na rysunku poniżej zaprezentowano wpływ wykorzystania skonfigurowanego i działającego połączenia VPN na przyznany adres IP (widoczność hosta od strony Internetu). Po lewej połączenie tradycyjne jak można zauważyć lokalizacja adresu IP wskazuje na Krak&oacute;w. Po prawej zaś adres IP po ustanowieniu połączenia z serwerem VPN, tym razem lokalizacja została ustalona na Frankfurt.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image11.png" alt="image11" width="700" height="359" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Przyjrzyjmy się jeszcze jak wygląda przechwycony ruch sieciowy bez połączenia VPN i przy aktywnym połączeniu z serwerem VPN.</p> <p>&nbsp;</p> <p>Na rysunku poniżej przedstawiono zrzut z okna programu Wireshark, kt&oacute;rego zadaniem jest przechwytywanie ruch sieciowego tj. danych wysyłanych i odbieranych przez kartę sieciową. Na rysunku poniżej możemy wyodrębnić szereg odrębnych transmisji prowadzonych r&oacute;wnolegle z r&oacute;żnymi hostami - np. 185.42.204.114 czy 62.179.1 62 Ruch ten w żaden spos&oacute;b nie jest chroniony tj. możemy ustalić cel i źr&oacute;dło wysłanej/odebranej informacji oraz najczęściej określić jej zawartość (najczęściej choć nie zawsze gdyż szyfrowanie może być prowadzone na warstwach wyższych). Przechwycony ruch sieciowy obrazuje normalne działanie karty sieciowej.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image12.png" alt="image12" width="700" height="471" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Zaś ilustracja poniżej przedstawia ten sam ruch sieciowy lecz przy aktywnym połączeniu VPN. W tym przypadku nie możemy już wyodrębnić pojedynczych transmisji/sesji, cały ruch sieciowy odbywa się pomiędzy komputerem na kt&oacute;rym zainicjowano połączenie VPN (adres IP 192.168.1.10) a bramą VPN (adres IP 178.162.199.91) Całość ruchu jest zaszyfrowana z wykorzystaniem protokołu ESP.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image13.png" alt="image13" width="700" height="471" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Tak więc myślę, że teraz jak na dłoni widać w jaki spos&oacute;b dzięki połączeniu VPN jest chroniona nasza komunikacja.</p> <p>&nbsp;</p> <p>Definicję połączenia VPN możemy r&oacute;wnież przeprowadzić za pomocą opcji dostępnych w oknie <strong>Centrum sieci i udostępniania</strong> Po wywołaniu okna (możesz skorzystać z pola <strong>Szukaj</strong> dostępnego w <strong>Panelu Sterowania</strong>) klikamy na <strong>Skonfiguruj nowe połączenie lub nową sieć</strong>. Przedstawiona konfiguracja jest analogiczna z tą kt&oacute;rą należy przeprowadzić w systemie Windows 7.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image14.png" alt="image14" width="700" height="523" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>W nowo otwartym oknie z typ&oacute;w dostępnych połączeń wybieramy <strong>Połącz z miejscem pracy</strong>.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image15.png" alt="image15" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>W kolejnym kroku należy wybrać typ połączenia. Do dyspozycji mamy opcję pozwalającą na wykorzystaniu połączenia internetowego (połączenie przewodowe, sieć WiFi) bądź metody opartej na bezpośrednim wybraniu numeru (tzw. wdzwanianie) - do ustanowienia połączenia niezbędny jest modem. Decydujemy się na pierwszą opcję: <strong>Użyj mojego połączenia internetowego</strong></p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image16.png" alt="image16" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po wybraniu sposobu łączenia należy określić adres serwera za pomocą, kt&oacute;rego będzie realizowane połączenie VPN oraz należy określić nazwę profilu. Tym razem decydujemy się na serwer VPN umiejscowiony w Rumuni &ndash; adres: ro.privateinternetaccess.com. Jeśli chcesz zezwolić innym użytkownikom komputera na korzystanie z tego połączenia zaznacz: <strong>Zezwalaj innym osobom na korzystanie z tego połączenia</strong>.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image17.png" alt="image17" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po określeniu wszystkich opcji wybieramy <strong>Utw&oacute;rz</strong>.</p> <p>&nbsp;</p> <p>Dostęp do połączenia będzie możliwy poprzez okno: <strong>Połączenia sieciowe</strong></p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image18.png" alt="image18" width="700" height="528" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Utworzone połączenie można spr&oacute;bować użyć lecz po wydaniu opcji <strong>Połącz</strong> łączność z serwerem nie zostanie ustanowiona gdyż nie wszystkie opcje zostały jeszcze zdefiniowane.</p> <p>&nbsp;</p> <p>Aby przejść do edycji ustawień połączenia VPN należy z menu kontekstowego połączenia wybrać <strong>Właściwości</strong>.</p> <p>&nbsp;</p> <p>Aby połączenie doszło do skutku należy na karcie <strong>Zaawansowane</strong> w sekcji <strong>Typ wirtualnej sieci prywatnej (VPN)</strong> wybrać: <strong>Protok&oacute;ł L2TP/IPSec</strong> oraz w sekcji <strong>Uwierzytelnienie</strong> po zaznaczeniu <strong>Zezwalaj na użycie tych protokoł&oacute;w</strong> wybrać <strong>Microsoft CHAP wersja 2 (MS-CHAP v2)</strong></p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image19.png" alt="image19" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Serwery PIA wymagają zdefiniowania klucza wstępnego tak więc by określić klucz należy po wybraniu protokołu <strong>L2TP/IPSec </strong>kliknąć na <strong>Ustawienia zaawansowane</strong></p> <p>&nbsp;</p> <p>W nowo otwartym oknie po wybraniu opcji: <strong>Użyj klucza wstępnego do uwierzytelnienia</strong> zdefiniować klucz &ndash; wartość klucza: <strong>mysafety</strong>.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image20.png" alt="image20" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Wprowadzone ustawienia należy zatwierdzić przyciskiem <strong>OK</strong>.</p> <p>&nbsp;</p> <p>Podczas wykonania pierwszego połączenia zostaniemy poproszeni o podanie danych umożliwiających przeprowadzenie procesu logowania.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image21.png" alt="image21" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po weryfikacji danych (login i hasło) połączenie VPN zostaje ustanowione.</p> <p>&nbsp;</p> <p>Sprawdzenie adresu IP przekonuje nas o poprawności wykonania czynności konfiguracyjnych &ndash; uzyskany adres IP wskazuje, że łączymy się z obszaru Rumuni.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image22.png" alt="image22" width="700" height="623" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Połączenie VPN wykorzystujące zestaw protokoł&oacute;w L2PT/IPsec jak już wież Czytelniku nie jest jedynym sposobem na ustalenie bezpiecznego kanału komunikacyjnego. Do zestawienia połączenia VPN może zostać wykorzystany pakiet oprogramowania <strong>OpenVPN</strong>. OpenVPN jest projektem zapoczątkowanym przez Jamesa Yonana a obecnie rozwijanym przez grupę ludzi z całego świata. Oprogramowanie to jest multiplatformowe, co oznacza dostępność narzędzia w systemach takich jak Solaris, Linux, OpenBSD, FreeBSD, NetBSD, QNX, Mac OS X, Android czy Windows XP/Vista/7/8/10. Pakiet jest publikowany na licencji GNU GPL. Dzięki tak dużej popularności oprogramowania wiele firm oferujących usługi połączeń VPN umożliwia zestawienie połączenia właśnie przy wykorzystaniu OpenVPN.</p> <p>&nbsp;</p> <p>Oprogramowanie pobierzemy ze strony projektu: <a href="https://openvpn.net/index.php/open-source/downloads.html">https://openvpn.net/index.php/open-source/downloads.html</a></p> <p>&nbsp;</p> <p>Po pobraniu pakietu zależnego od wersji posiadanego systemu przystępujemy do jego instalacji.</p> <p>&nbsp;</p> <p>Na pierwszym ekranie tradycyjnie należy zaakceptować licencję. Klikamy <strong>I Agree</strong>.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image23.png" alt="image23" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Drugi krok to wyb&oacute;r komponent&oacute;w. Możemy pozostawić te zaproponowane domyślnie. Klikamy <strong>Next</strong>.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image24.png" alt="image24" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Następuje instalacja oprogramowania. Aby OpenVPN m&oacute;gł poprawnie działać należy wyrazić zgodę na instalację sterownik&oacute;w dodatkowego interfejsu TAP-Win32 Adapter V9 Wybieramy: <strong>Zainstaluj</strong></p> <p>&nbsp;</p> <p>Po poprawnej instalacji by m&oacute;c korzystać z aplikacji należy pobrać pliki konfiguracyjne przygotowane przez usługodawcę - każda z firm, kt&oacute;ra wspiera te rozwiązanie ma przygotowane potrzebne pliki. Informacji szukaj na stronach operatora.</p> <p>&nbsp;</p> <p>Po pobraniu paczki konfiguracyjnej pliki należy wypakować do katalogu C<strong>:\Program Files\OpenVPN\config</strong> bądź <strong>C:\Program Files (x86)\OpenVPN\config</strong> (w zależności od wersji posiadanego systemu).</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image25.png" alt="image25" width="700" height="492" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po wykonaniu wszystkich czynności instalacyjnych na <strong>Pulpicie</strong> zostanie utworzony nowy skr&oacute;t <strong>OpenVPN GUI</strong>. Uruchamiamy narzędzie (domyślnie warto, ustawić uruchamianie narzędzia z uprawnieniami administratora). Dla niewtajemniczonych zmianę uprawnień dokonamy po wyborze z menu kontekstowego opcji <strong>Właściwości</strong> i zaznaczeniu na karcie <strong>Zgodność</strong> opcji <strong>Uruchom ten program jako administrator</strong></p> <p>&nbsp;</p> <p>Po uruchomieniu narzędzia w prawym dolnym rogu obok zegarka (patrz tray) powinniśmy zobaczyć ikonkę programu. Aby uzyskać połączenie klikamy na ikonę PPM i z rozwijanej listy wybieramy interesujący nas serwer VPN. Aby zestawić połączenie z serwerem wybieramy przycisk <strong>Połącz</strong></p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image26.png" alt="image26" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>W trakcie ustanawiania połączenia z serwerem VPN, zostaniemy poproszeni o wpisanie loginu i hasła. Wprowadzone dane zatwierdzamy <strong>OK</strong></p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image27.png" alt="image27" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po podaniu danych uwierzytelniających połączenie powinno zostać ustalone.</p> <p>&nbsp;</p> <p>Dodatkowo po nawiązaniu połączenia został przechwycony ruch sieciowy. Jak widać cała komunikacja przebiega pomiędzy hostem lokalnym (IP - 192.168.1.155) a bramą VPN (IP - 185.3.135.34), przesyłane informacje są zaszyfrowane</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image28.png" alt="image28" width="700" height="373" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>W dzisiejszym świecie komputer już dawno przestał być jedynym urządzeniem przez, kt&oacute;re realizujemy dostęp do sieci Internet. Zasoby sieci bardzo często przeglądamy na smartfonach czy tabletach i r&oacute;wnież na tych urządzeniach możemy zestawić połączenie z serwerem VPN.</p> <p>&nbsp;</p> <p><strong><span style="font-size: 12pt; line-height: 115%;">Windows Phone 8 oraz 10</span></strong></p> <p>&nbsp;</p> <p>Konfigurację połączenia VPN rozpoczniemy od systemu <strong>Windows Phone</strong>. Środowisko te oferuje nam możliwość skonfigurowania połączenia VPN m.in. z wykorzystaniem protokoł&oacute;w L2TP/IPSec</p> <p>&nbsp;</p> <p>Rozpoczynamy od wybrania <strong>Ustawienia</strong> by następnie przejść do sekcji <strong>VPN </strong>(w systemie Windows Phone 8 - rysunek z lewej) w przypadku systemu Windows Phone 10 opcję <strong>VPN</strong> odnajdziemy po wybraniu <strong>Sieć i połączenia bezprzewodowe</strong>.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image29.png" alt="image29" width="700" height="614" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>W przypadku gdy usługa jest nieaktywna należy ją włączyć. W kolejnym kroku poprzez wybranie przycisku <strong>Opcje</strong> możemy określić zasady ustalania połączenia z serwerem VPN (Windows Phone 8).</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image30.png" alt="image30" width="533" height="947" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Do dyspozycji mamy dwie opcje:</p> <p style="margin-left: 30px;"><strong>Zezwalaj na VPN przez sieć kom&oacute;rkową</strong> - połączenie z serwerem VPN zostanie ustanowione za pośrednictwem sieci kom&oacute;rkowej,</p> <p style="margin-left: 30px;"><strong>Zezwalaj na VPN w roamingu przez sieć kom&oacute;rkową</strong> - roaming czyli zmiana operatora sieci kom&oacute;rkowej najczęściej realizowana w przypadku gdy abonent znajduje się poza zasięgiem sieci operatora lub dostawcy Internetu, z kt&oacute;rym podpisał umowę o świadczenie usług telekomunikacyjnych. Zaznaczenie tej opcji spowoduje zestawienie połączenia VPN w sieciach nie będących naszą siecią macierzystą czyli np. gdy przebywamy za granicą.</p> <p>&nbsp;</p> <p>W przypadku Windows Phone 10 opcje te są dostępne od razu po otwarciu okna<strong> VPN</strong>.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image31.png" alt="image31" width="700" height="618" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Aby dodać profil VPN klikamy na znak plusa. W nowym oknie musimy określić następujące opcje:</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">1 - nazwa lub adres IP serwera VPN,</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">2 - typ połączenia VPN - wybieramy protok&oacute;ł L2TP/IPSec,</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">3 - określamy typ uwierzytelnienia - login + hasło + klucz wstępny,</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">4 - definiujemy nazwę użytkownika,</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">5 - wpisujemy hasło,</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">6 - określamy klucz wstępny,</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">7 - opcjonalnie zezwalamy na automatyczne tworzenie tunelu VPN,</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">8 - opcjonalnie określamy włączenie przesyłania całego ruchu,</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">9 - określamy nazwę profilu.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image32.png" alt="image32" width="700" height="1097" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Włączenie opcji <strong>Wysyłaj cały ruch spowoduje</strong>, że cała komunikacja opierająca się o transmisję danych będzie przekazywana poprzez serwer VPN. Po wyłączeniu opcji będziemy mogli zdecydować kiedy tunel VPN ma być stosowany a kiedy nie. Spos&oacute;b kształtowaniu ruchu definiujemy poprzez określenie adres&oacute;w IP bądź domen. Ruch sieciowy z tymi adresami będzie przesyłany przez bramę VPN.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image33.png" alt="image33" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po wyborze przycisku <strong>zaawansowane</strong> uzyskujemy dostęp do dodatkowych ustawień. Ustawienia te dotyczą serwera proxy a także wyłączenia sieci VPN dla sieci firmowej i domowej czyli tych sieci co do kt&oacute;rych mamy pewność, że są bezpieczne.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image34.png" alt="image34" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>W przypadku systemu Windows Phone 10 ustawienia zaawansowane odnajdziemy po kliknięciu na <strong>Właściwości</strong> utworzonego profilu.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image35.png" alt="image35" width="700" height="2546" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po zdefiniowaniu wszystkich opcji nie pozostaje nam nic innego jak pr&oacute;ba nawiązania połączenia. Jak widać poniżej pr&oacute;ba ta kończy się sukcesem. O fakcie ustanowienia poprawnego połączenia VPN dodatkowo jesteśmy informowani ikoną kł&oacute;dki &ndash; ikona ta pojawia się przy ikonie mocy nawiązanego połączenia.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image36.png" alt="image36" width="700" height="671" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Tak więc po przeprowadzonej konfiguracji możemy na swoim smartfonie z zasob&oacute;w Internetu korzystać w spos&oacute;b całkowicie bezpieczy.</p> <p>&nbsp;</p> <p><strong><span style="font-size: 12pt; line-height: 115%;">Apple - iOS</span></strong></p> <p>&nbsp;</p> <p>W środowisku urządzeń Apple czyli tych pracujących pod kontrolą systemu iOS ustanowienie połączenia VPN możemy zrealizować m.in. za pomocą protokołu L2TP oraz oprogramowania OpenVPN i na wykorzystaniu tych protokoł&oacute;w skupimy naszą uwagę.</p> <p>&nbsp;</p> <p>Zacznijmy od skonfigurowania łącza wykorzystując do tego protok&oacute;ł L2TP. Opis konfiguracji został przedstawiony na urządzeniu IPAD.</p> <p>&nbsp;</p> <p>Konfigurację rozpoczynamy od przejścia do <strong>Ustawień</strong> po czym odszukujemy opcję <strong>VPN</strong>.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image37.PNG" alt="image37" width="700" height="933" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po przejściu do ustawień karty <strong>VPN</strong> wybieramy <strong>Dodaj konfigurację VPN</strong></p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image38.PNG" alt="image38" width="700" height="933" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po otwarciu okna <strong>Typ</strong> wybieramy <strong>L2PT</strong></p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image39.PNG" alt="image39" width="700" height="933" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Aby skonfigurować połączenie VPN musimy określić następujące opcje:</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">1 - <strong>Opis</strong> &ndash; nazwa połączenia,</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">2 - <strong>Serwer</strong> &ndash; nazwa serwera VPN,</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">3 - <strong>Konto</strong> - login VPN,</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">4 - <strong>Hasło</strong> - hasło VPN,</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">5 - <strong>Hasło wsp&oacute;lne</strong> - klucz wsp&oacute;łdzielony,</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">6 - Opcja <strong>Wysyłaj wszystko</strong> &ndash; cały ruch sieciowy jest przesyłany przez bramę VPN.</p> <p>&nbsp;</p> <p style="margin-bottom: 0.0001pt;">Zapisanie zdefiniowanych ustawień odbywa się klikając na <strong>Gotowe</strong></p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image40.PNG" alt="image40" width="700" height="933" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po skonfigurowaniu wszystkich opcji połączenie jest gotowe do użycia. W przypadku zdefiniowania większej ilości połączeń VPN przed połączeniem wybieramy te z kt&oacute;rego chcemy skorzystać. Nawiązanie połączenia odbywa się za pomocą przełącznika <strong>Status</strong>. Jak widać poniżej udało się zestawić działający kanał VPN.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image41.PNG" alt="image41" width="700" height="933" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Łącze VPN zostało utworzone.</p> <p>&nbsp;</p> <p>System iOS domyślnie nie ma zainstalowanego klienta sieci OpenVPN ale nic nie stoi na przeszkodzie aby stosowane oprogramowanie samemu zainstalować.</p> <p>&nbsp;</p> <p>Instalacja odbywa się poprzez sklep AppStore. Po uruchomieniu sklepu odszukujemy aplikację <strong>OpenVPN Connect</strong> i instalujemy ją. Warto przy okazji nadmienić, że wiele firm oferujących usługę połączeń VPN dostarcza dedykowane aplikacje do łączności z swoją infrastrukturą. Tak więc gdy chcemy skorzystać z takiej aplikacji należy się upewnić czy nasz usługodawca przewidział taką możliwość.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image42.png" alt="image42" width="700" height="934" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Aby dokonać konfiguracji połączenia z wykorzystaniem aplikacji OpenVPN Connect, w pierwszej kolejności musisz zaimportować profil czyli plik z rozszerzeniem .ovpn. Import pliku można dokonać ręcznie podłączając iPhone lub iPad do komputera i za pośrednictwem iTunes w sekcji <strong>Aplikacje</strong>, będzie można skopiować plik .ovpn wraz z ewentualnymi certyfikatami. Pliki .ovpn należy pobrać ze strony usługodawcy. Pliki te stanowią profil w kt&oacute;rym są zapisane informacje pozwalające nam skorzystać z danego serwera VPN (najczęściej nazwa pliku określa umiejscowienie geograficzne serwera).</p> <p>&nbsp;</p> <p>Alternatywnym sposobem jest skopiowanie pliku .ovpn za pośrednictwem strony internetowej przygotowanej przez usługodawcę.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image43.PNG" alt="image43" width="700" height="933" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po wyborze interesującej nas lokalizacji pobrany plik otwieramy za pomocą programu OpenVPN Connect (po instalacji oprogramowania pliki z rozszerzeniem .ovpn będą skojarzone z aplikacją).</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image44.png" alt="image44" width="700" height="441" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po otwarciu aplikacji powinniśmy ujrzeć zaimportowany profil.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image45.PNG" alt="image45" width="700" height="933" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Aby można było skorzystać z profilu jego dane należy uzupełnić o dane uwierzytelniające. Dane te uzupełnimy klikając na ikonę plusa.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image46.PNG" alt="image46" width="700" height="933" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po wprowadzeniu danych, celem ich zapisania przesuwamy przełącznik <strong>Save</strong> i dokonujemy pr&oacute;by połączenia z bramą VPN. Jeśli wszystko skonfigurowaliśmy poprawnie status połączenia powinien przełączyć się do stanu <strong>Connected</strong></p> <p>&nbsp;</p> <p>Po uzyskaniu połączenia dodatkowo będziemy mogli przeglądać statystyki zestawionego połączenia.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image47.PNG" alt="image47" width="700" height="933" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Otwarcie okna przeglądarki i sprawdzenie przypisanego adresu IP informuje nas, że połączenie jest wykonywane z terenu Niemiec.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image48.png" alt="image48" width="700" height="860" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p><strong><span style="font-size: 12pt; line-height: 115%;">Android</span></strong></p> <p>&nbsp;</p> <p>Om&oacute;wiliśmy już Windowsa, IOSa tak więc przyszła pora na Androida. I tu tak samo jak w przypadku pozostałych system&oacute;w bardzo często zdarza się że nasz usługodawca umożliwia nam połączenie się ze swoją infrastrukturą z wykorzystaniem specjalnie do tego celu przygotowanej aplikacji (dostępność sprawdź na strona usługodawcy). My jednak zdecydujemy się na samodzielne skonfigurowanie połączenia VPN. Połączenie skonfigurujemy z wykorzystaniem protokołu L2PT/IPSec kt&oacute;ry jest wspierany przez system Android oraz z wykorzystaniem narzędzia OpenVPN.</p> <p>&nbsp;</p> <p>Aby rozpocząć konfigurację połączenia VPN w systemie Android przechodzimy do sekcji <strong>Połączenia</strong> a następnie z dostępnych opcji wybieramy <strong>Więcej sieci</strong> i dalej <strong>VPN</strong>.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image49.png" alt="image49" width="700" height="1120" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Połączenie VPN uda nam się skonfigurować tylko w przypadku ustawienia blokady ekranu na poświadczenie typu kod PIN bądź hasło. Jak widać poniżej opcje odpowiedzialne za konfigurację połączenia VPN są nie aktywne gdyż blokada ekranu jest realizowana za pomocą symbolu.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/vpn/image50.png" alt="image50" width="700" height="1120" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po kliknięciu na <strong>OK</strong> zostaniemy przekierowani do ekranu opcji <strong>Ustawienia odblokowania ekranu</strong>. Na ekranie tym ustalamy jeden ze sposob&oacute;w ochrony urządzenia.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image51.png" alt="image51" width="700" height="672" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>Decydujemy się na ustawienie kodu PIN.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image52.png" alt="image52" width="700" height="1121" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po ustaleniu PINu bądź hasła dostęp do opcji tworzenia kanału VPN będzie możliwy.</p> <p>&nbsp;</p> <p>Konfiguracja połączenia VPN sprowadza się do określenia:</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">1 &ndash; nazwy połączenia,</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">2 &ndash; typu użytych protokoł&oacute;w,</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">3 &ndash; adresu bramy VPN,</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">4 &ndash; klucza wsp&oacute;łdzielonego.</p> <p>&nbsp;</p> <p>Po zdefiniowaniu wszystkich opcji wybieramy <strong>Zapisz</strong>.</p> <p>&nbsp;</p> <p>Na uwadze należy mieć fakt, że u r&oacute;żnych dostawc&oacute;w konfiguracja połączenia może się nieznacznie r&oacute;żnić od tej przedstawionej. Wszystkie niezbędne informacje znajdziemy na pewno na stronach usługodawcy.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image53.png" alt="image53" width="700" height="1121" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po zapisaniu konfiguracji tunelu VPN możemy wykonać pr&oacute;bę połączenia. Po wybraniu połączenia określamy nazwę użytkownika oraz hasło.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image54.png" alt="image54" width="700" height="1120" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Jeśli wszystko wykonaliśmy poprawnie powinno nam udać się ustanowić połączenie VPN. O stanie połączenia zostaniemy poinformowani osobnym powiadomieniem, na belce opcji powinna pojawić się ikona <strong>klucza</strong>.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image55.png" alt="image55" width="700" height="1120" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>W systemie Android możemy r&oacute;wnież skorzystać z połączeń typu OpenVPN. Aby wykorzystać ten typ połączenia musimy zainstalować aplikację <strong>OpenVPN Connect</strong>, kt&oacute;rą znajdziemy w sklepie. Po odnalezieniu aplikacji wybieramy <strong>Zainstaluj</strong>.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image56.png" alt="image56" width="700" height="1121" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po instalacji oprogramowania należy tak jak w przypadku systemu IOS zaimportować odpowiedni profil połączenia. Przechodzimy na stronę udostępnioną przez operatora i wybieramy serwer przez kt&oacute;ry chcemy realizować połączenie. Po pobraniu pliku wybieramy <strong>Otw&oacute;rz</strong>.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image57.png" alt="image57" width="700" height="1120" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Akceptujemy ustawienia profilu wybierając <strong>Accept</strong>.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image58.png" alt="image58" width="700" height="552" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po zaimportowaniu profilu aby ukończyć konfigurację tunelu VPN zostaniemy poproszeni o podanie nazwy użytkownika i hasła. Po poprawnym zdefiniowaniu danych wybieramy <strong>Connect</strong>.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image59.png" alt="image59" width="700" height="1120" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Przed utworzeniem połączenia z serwerem VPN zostaniemy ostrzeżeni o przechwyceniu wszystkich aktywnych połączeń sieciowych przez aplikację OpenVPN Connect aby sfinalizować połączenie należy zaznaczyć <strong>Ufam tej aplikacji</strong> i całą operację potwierdzić klawiszem <strong>OK</strong></p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image60.png" alt="image60" width="700" height="1120" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po wykonaniu tych wszystkich operacji powinno Nam udać się zestawić połączenie VPN. Aktywne połączenie VPN jest sygnalizowane ikoną klucza na belce zadań.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image61.png" alt="image61" width="700" height="1120" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Trochę wcześniej obiecałem zaprezentować połączenie VPN typu site - to - site a więc aby nie rzucać sł&oacute;w na wiatr, jeszcze kilka sł&oacute;w na ten temat. Do tej pory zajmowaliśmy się konfigurowaniem połączeń VPN na każdym z urządzeń z osobna. Do problemu można podejść trochę z innej strony. A mianowicie w domu bądź firmie wszystkie urządzenia tworzące sieć lokalną aby uzyskać dostęp do Internetu muszą mieć łączność z bramą czyli routerem. Tak więc można zlecić routerowi utworzenie połączenia VPN w ten spos&oacute;b naszą sieć lokalną połączymy z siecią usługodawcy VPN. W ten o to prosty spos&oacute;b każde urządzenie pracujące w naszej sieci uzyska bezpieczny dostęp do Internetu poprzez bramę VPN. Niestety router&oacute;w, kt&oacute;re mają wbudowaną obsługę protokoł&oacute;w VPN na rynku tak wiele nie znajdziemy. Prym w tym temacie wiedzie firma Asus, kt&oacute;ra np. w routerach Asus RT-N16, Asus RT-N18U, Asus RT-N66U, Asus RT-AC66U, Asus RT-AC68U, Asus RT-AC87U, Asus RT-AC3200 czy Asus RT-AC5300 zaimplementowała obsługę protokołu OpenVPN (w niekt&oacute;rych routerach opcja utworzenia kanału VPN będzie dostępna po wgraniu najnowszego softu). Poniżej przykład dostępnych opcji odpowiedzialnych za zestawienie połączenia VPN na routerze Asus RT-AC5300.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image62.png" alt="image62" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Jeśli domyślny firmware routera nie ma opcji zaimplementowania połączeń VPN można zdecydować się na zainstalowanie oprogramowania typu DD-WRT czy Tomato będącego alternatywą dla oryginalnego oprogramowania. Lecz tu na stronach projekt&oacute;w musimy sprawdzić kompatybilność oprogramowania z posiadanym sprzętem. Poniżej na zrzucie panel opcji VPN dostępnych po instalacji DD-WRT.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image63.png" alt="image63" width="700" height="911" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Szczeg&oacute;łowy przebieg konfiguracji nie został przeze mnie przedstawiony gdyż konfiguracja r&oacute;żni się w zależności od dostawcy (tu odsyłam do stron internetowych już konkretnych usług). Bardziej zależało mi na wskazaniu &bdquo;drogi&rdquo; niż przedstawieniu opisu dla tego konkretnego dostawcy.</p> <p>&nbsp;</p> <p>Jeśli nie czujemy się na siłach w przeprowadzeniu flashowania routera i całej konfiguracji możemy zdecydować się na zakup już wstępnie przygotowanego routera - niekt&oacute;rzy dostawcy VPN w swojej ofercie mają przygotowaną taką opcję.</p> <p>&nbsp;</p> <p>I dobrnęliśmy do końca mam nadzieję Czytelniku, że utworzenie połączenia VPN po lekturze tego wpisu nie będzie stanowić żadnego problemu.</p> <p>&nbsp;</p> <hr /> <p>BIBLIOGRAFIA:</p> <p>&nbsp;</p> <p><a href="https://msdn.microsoft.com/en-us/library/cc247338.aspx">https://msdn.microsoft.com/en-us/library/cc247338.aspx</a></p> <p><a href="https://technet.microsoft.com/pl-pl/library/poradnik-krok-po-kroku-instalowanie-i-konfiguracja-sstp-cz-i.aspx#1">https://technet.microsoft.com/pl-pl/library/poradnik-krok-po-kroku-instalowanie-i-konfiguracja-sstp-cz-i.aspx#1</a></p> <p><a>https://www.bestvpn.com/blog/4147/pptp-vs-l2tp-vs-openvpn-vs-sstp-vs-ikev2/</a></p> <p><a href="https://thebestvpn.com/pptp-l2tp-openvpn-sstp-ikev2/" class="moz-txt-link-freetext">https://thebestvpn.com/pptp-l2tp-openvpn-sstp-ikev2/</a></p> <p><a href="https://vpntips.com/vpn-router-install/">https://vpntips.com/vpn-router-install/</a></p></div> <div class="K2FeedImage"><img src="http://slow7.pl/media/k2/items/cache/39a27618f1dc54b80987c6706135e6b7_S.jpg" alt="Konfiguracja połączenia VPN w środowisku Windows lecz nie tylko." /></div><div class="K2FeedIntroText"><p>W dobie coraz większej inwigilacji i ochrony swojej prywatności wielu użytkownik&oacute;w decyduje się na korzystanie z sieci Internet za pośrednictwem połączenia VPN. Lecz czym tak naprawdę ten VPN jest? Wikipedia definicję VPN-u określa jako:</p> <p>&bdquo;VPN (ang. Virtual Private Network, Wirtualna Sieć Prywatna) &ndash; tunel, przez kt&oacute;ry płynie ruch w ramach sieci prywatnej pomiędzy klientami końcowymi za pośrednictwem publicznej sieci (takiej jak Internet) w taki spos&oacute;b, że węzły tej sieci są przezroczyste dla przesyłanych w ten spos&oacute;b pakiet&oacute;w. Można opcjonalnie kompresować lub szyfrować przesyłane dane w celu zapewnienia lepszej jakości lub większego poziomu bezpieczeństwa. Określenie &bdquo;wirtualna&rdquo; oznacza, że sieć ta istnieje jedynie jako struktura logiczna działająca w rzeczywistości w ramach sieci publicznej, w odr&oacute;żnieniu od sieci prywatnej, kt&oacute;ra powstaje na bazie specjalnie dzierżawionych w tym celu łącz. Pomimo takiego mechanizmu działania stacje końcowe mogą korzystać z VPN dokładnie tak, jak gdyby istniało pomiędzy nimi fizyczne łącze prywatne.&rdquo;</p> </div><div class="K2FeedFullText"> <p>I tak naprawdę definicja ta w spos&oacute;b dokładny opisuje mechanizm i sens wdrożenia tej technologii. Lecz nie wspomniano w niej o jeszcze jednej kwestii szczeg&oacute;lnie ważnej z punktu działania firm.</p> <p>&nbsp;</p> <p>Zdalny dostęp do sieci firmowej i jej zasob&oacute;w stał się elementem kluczowym dla wielu firm bez kt&oacute;rego wielu pracownik&oacute;w nie mogłoby realizować swoich podstawowych zadań. Odeszliśmy już od modelu w kt&oacute;rym pracownik by uzyskać np. dostęp do swoich plik&oacute;w musiał znajdować się fizycznie w oddziale firmy teraz za pośrednictwem odpowiednio skonfigurowanej infrastruktury sieciowej może tego dokonać z dowolnego miejsca na świecie pod warunkiem, że ma się dostęp do Internetu. Tak więc z punktu widzenia firmy, pracownik&oacute;w i wykonywanych obowiązk&oacute;w największą zaletą tworzenia połączeń VPN jest możliwość zdalnej pracy tak jak by się znajdowało przy własnym biurku.</p> <p>&nbsp;</p> <p>A dodatkowo dzięki zastosowaniu szyfrowania uzyskujemy bezpieczne połączenie z Internetem korzystając z niezabezpieczonej sieci bezprzewodowej w miejscach użyteczności publicznej.</p> <p>&nbsp;</p> <p>Dla niekt&oacute;rych os&oacute;b argumentem, kt&oacute;ry ma niebanalne znaczenie jest możliwość uzyskania adresu IP zgodnego z wybraną lokalizacją geograficzną. Oznacza to możliwość uzyskania adresu IP przynależnego np. USA. Takie podejście do sprawy sprawi, że otrzymamy dostęp do usług przynależnych danemu regionowi. Przykład proszę bardzo &ndash; od niedawna Polacy otrzymali dostęp do usługi VOD Netflix (dla niewtajemniczonych wypożyczalnia film&oacute;w online) a jeszcze do niedawna było to niemożliwe gdyż Netflix oficjalnie na naszym terenie usług tego typu nie prowadził. Oznaczało to brak możliwości rejestracji w serwisie dla os&oacute;b nie będących obywatelami USA. Część użytkownik&oacute;w by ominąć te ograniczenie za pośrednictwem łącza VPN łączyło się z serwerem amerykańskim, dzięki temu komputer otrzymywał adres IP zgodny z lokalizacją geograficzną a otrzymanie takiego adresu IP gwarantowało dostęp do usług serwisu video (serwery Netflixa odnotowywały rejestrację z obszaru USA).</p> <p>&nbsp;</p> <p>Aby rozwiać jeszcze wątpliwości co do sposobu działania mechanizmu VPN przeanalizujmy przykład, kt&oacute;ry został zaprezentowany na rysunku poniżej.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image1.png" alt="image1" width="700" height="323" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Z połączenia z Internetem korzysta dw&oacute;ch użytkownik&oacute;w: Beata i Jan.</p> <p>&nbsp;</p> <p>Beata dostęp do sieci realizuje w spos&oacute;b tradycyjny tj. ma wykupione łącze u lokalnego dostawcy ISP (dostawca usług internetowych) i dzięki połączeniu z nim może przeglądać zasoby sieci. Nie wykorzystuje mechanizmu VPN. Oznacz to, że cały ruch sieciowy dla dostawcy jest przezroczysty tak więc indeks odwiedzanych miejsc, pobranych plik&oacute;w znajduje swoje odzwierciedlenie w logach ISP. Dodatkowo informacja ta jest odnotowana na serwerach docelowych z kt&oacute;rymi użytkownik Beata nawiązała połączenie.</p> <p>&nbsp;</p> <p>Drugi użytkownik Jan pomimo wykupienia łącza u swojego provaidera dodatkowo zdecydował się na realizację połączenia z siecią za pośrednictwem bramy VPN. Dzięki wykorzystaniu tunelu VPN, ISP Jana wie jedynie, że Jan uzyskał połączenie z bramą VPN lecz nie widzi jaki konkretnie ruch sieciowy jest prowadzony. Komunikacja pomiędzy Janem a serwerem VPN jest zaszyfrowana.</p> <p>&nbsp;</p> <p>Dodatkowo serwery docelowe odnotowują aktywność w postaci przeglądanych stron i pobranych plik&oacute;w lecz administrator serwera nie jest w stanie określić iż to właśnie Robert dane treści przegląda, gdyż wszystkie działania w imieniu Roberta podejmuje serwer VPN i to informacje o jego adresie IP znajdą się w logach serwer&oacute;w końcowych.</p> <p>&nbsp;</p> <p>Tak więc myślę, że ten praktyczny przykład w spos&oacute;b dość obrazowy ilustruje mechanizm działania połączeń VPN oraz sens ich stosowania.</p> <p>&nbsp;</p> <p>Rozr&oacute;żniamy dwa podstawowe rodzaje sieci VPN:</p> <p>&nbsp;</p> <p><strong>Site - to - Site</strong> - połączenie VPN jest tworzone pomiędzy dwiema odległymi sieciami LAN. Urządzeniami realizującymi połączenie może być router z obsługą połączeń VPN bądź firmowy serwer. Przykładem połączenia Site - to - Site jest połączenie oddział&oacute;w firmy z centralą.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image2.png" alt="image2" width="700" height="281" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p><strong>Client - Site </strong>- tunel VPN zestawiany jest np. pomiędzy komputerem zdalnego użytkownika a siecią LAN. Przykładem takiego połączenia jest sytuacja w kt&oacute;rej pracownik firmy będąc poza jej siedzibą musi mieć dostęp do zasob&oacute;w znajdujących się w sieci firmowej (pliki, oprogramowanie, bazy danych itp.).</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image3.png" alt="image3" width="700" height="366" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>W artykule w gł&oacute;wnej mierze będziemy zajmować się połączeniami typu Client - Site lecz na samym końcu pokarzę przykład połączenia Site - to - Site.</p> <p>&nbsp;</p> <p>Przy konfiguracji połączenia VPN będziemy mieli do czynienia z r&oacute;żnymi protokołami odpowiedzialnymi za zestawienie łącza więc poniżej kr&oacute;tka ich charakterystyka.</p> <p>&nbsp;</p> <p><strong>Protok&oacute;ł SSTP</strong> (ang. Secure Socket Tunneling Protocol) Protok&oacute;ł SSTP został wprowadzony wraz z systemem Windows Vista SP1 oraz Windows Server 2008 umożliwiając przekazywanie ruchu poprzez zapory blokujące ruch PPTP i L2TP/IPsec. Protok&oacute;ł ten umieszcza ramki protokołu PPP w ramkach protokołu HTTP umożliwiając realizowanie połączeń VPN w sytuacjach gdy klient znajduje się poza firewallem, urządzeniem z obsługą translacji adres&oacute;w sieciowych (NAT) lub serwerem proxy. Użycie protokołu umożliwia obsługę metod silnego uwierzytelniania, takich jak EAP-TLS. Korzystanie z HTTPS oznacza, że ruch przekazywany jest przez port 443 protokołu TCP, czyli powszechnie używany port dostępu do sieci Web. Protok&oacute;ł SSL (Secure Sockets Layer) zapewnia bezpieczeństwo na poziomie transportu wraz z rozszerzonymi metodami negocjacji klucza, szyfrowania i sprawdzania integralności.</p> <p>&nbsp;</p> <p>Zalety:</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">- bardzo bezpieczny,</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">- pełna integracja z środowiskiem Windows (Windows Vista z dodatkiem SP1, Windows 7, Windows 8, Windows 10),</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">- ruch sieciowy protokoł&oacute;w odpowiedzialnych za działanie kanału VPN nie jest blokowany przez zapory sieciowe.</p> <p>Wady:</p> <p style="margin-left: 30px;">- brak wsparcia dla innych system&oacute;w.</p> <p><strong>&nbsp;</strong></p> <p>&nbsp;</p> <p><strong>OpenVPN </strong>jest pakietem oprogramowania, kt&oacute;re umożliwia nam utworzenie połączeń VPN. Biblioteki odpowiedzialne za działanie programu umożliwiają utworzenie zaszyfrowanych połączeń z wykorzystaniem protokoł&oacute;w SSLv3/TLSv1. Co ważne oprogramowania tego możemy użyć w trybie serwera umożliwiając klientom podłączenie się i korzystanie z tunelu VPN bądź trybie klienta. Jak to fajnie opisano (źr&oacute;dło: <a href="http://sekurak.pl/praktyczna-implementacja-sieci-vpn-na-przykladzie-openvpn/">http://sekurak.pl/praktyczna-implementacja-sieci-vpn-na-przykladzie-openvpn/</a>) &bdquo;OpenVPN zapewnia nam komplet mechanizm&oacute;w, kt&oacute;ry pozwala nam zbudować bezpieczną sieć VPN &ndash; autoryzuje, uwierzytelnia, szyfruje i zapewnia integralność przesłanych danych. Ponadto chroni serwer (koncentrator) przed atakami DoS oraz sieć wirtualną przed wstrzykiwaniem obcych danych. Wszystkie te rzeczy powodują, że OpenVPN jest doskonałym wyborem do większości zastosowań.&rdquo;</p> <p>&nbsp;</p> <p>Oprogramowanie OpenVPN to tak naprawdę temat sam w sobie i zasługuje na osobny wpis (jest w planach) co warto zaznaczyć, że warto korzystać z tego rozwiązania gdy tylko mamy taką możliwość. W wpisie tym o technologię tą ocierać się będziemy często lecz wykorzystamy tylko jedną funkcjonalność oprogramowania a mianowicie tworzenie połączenia VPN od strony klienta (serwerowymi aspektami w tym artykule zajmować się nie będziemy).</p> <p>&nbsp;</p> <p>Zalety:</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">- wysoka elastyczność konfiguracji,</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">- bardzo bezpieczny,</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">- brak problem&oacute;w z konfiguracją reguł firewalla,</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">- szeroki wyb&oacute;r algorytm&oacute;w szyfrowania,</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">- Open Source - łatwość weryfikacji kodu i działania narzędzia,</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">- oprogramowanie jest dostępne dla system&oacute;w mobilnych co do nie dawna stanowiło problem.</p> <p>Wady:</p> <p style="margin-left: 30px;">- Do poprawnego działania wymagana jest instalacja oprogramowania firm trzecich, brak wsparcia od strony system&oacute;w,</p> <p>&nbsp;</p> <p><strong>Protok&oacute;ł L2TP</strong> (ang. Layer Two Tunneling Protocol) Protok&oacute;ł ten jest powszechnym standardem pozwalającym na ustanowienie kanału VPN. Protok&oacute;ł L2TP jest połączeniem protokoł&oacute;w PPTP oraz L2F (ang. Layer 2 Forwarding), powstał w wyniku wsp&oacute;łpracy firm Cisco i Microsoft. Z protokołem L2TP bardzo często skojarzany jest protok&oacute;ł IPSec, taki połączenie znane jest jako L2TP over IPSec. Połączenie protokoł&oacute;w przyniosło same zalety gdyż sam protok&oacute;ł L2PT zyskał możliwość uwierzytelnienia zaś protok&oacute;ł IPSec rozszerzył swoją funkcjonalność o obsługę nie tylko pakiet&oacute;w IP. Protok&oacute;ł L2TP/IPsec został opisany w dokumencie RFC 2661.</p> <p>&nbsp;</p> <p>Zalety:</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">- bezpieczniejszy niż PPTP,</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">- łatwa konfiguracja,</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">- klient dostępny na wszystkich nowoczesnych platformach,</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">- szybszy niż OpenVPN.</p> <p style="margin-bottom: 0.0001pt;">Wady:</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">- może być zagrożony przez NSA (niesprawdzone).</p> <p>&nbsp;</p> <p><strong>Protok&oacute;ł PPTP</strong> (ang. Point-to-Point Tunneling Protocol) jest jednym z najstarszych sposob&oacute;w pozwalających nam na tworzenie wirtualnych sieci prywatnych. Protok&oacute;ł został opracowany przez firmę Microsoft.</p> <p>&nbsp;</p> <p>Zalety:</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">- klient obecny na wszystkich platformach systemowych,</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">- bardzo łatwa konfiguracja połączenia,</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">- szybkość działania.</p> <p style="margin-bottom: 0.0001pt;">Wady:</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">- nie gwarantuje odpowiedniego stopnia zabezpieczeń.</p> <p>&nbsp;</p> <p>I jeszcze jako podsumowanie wstępu, kr&oacute;tkie zebranie najważniejszych cech protokoł&oacute;w (źr&oacute;dło: <a href="http://vpnonline.pl/protokoly-vpn-porownanie">http://vpnonline.pl/protokoly-vpn-porownanie</a> oraz <a href="http://b1s.eu/pl/bez-kategorii/945-porownanie-protokolow-vpn.html">http://b1s.eu/pl/bez-kategorii/945-porownanie-protokolow-vpn.html</a>).</p> <p>&nbsp;</p> <table border="1" class="Tabela-Siatka1" style="border-collapse: collapse;" cellspacing="0" cellpadding="0"> <tbody> <tr> <td style="border: 1pt solid windowtext; padding: 0cm 5.4pt;" valign="top">&nbsp;</td> <td style="border-width: 1pt 1pt 1pt medium; border-style: solid solid solid none; border-color: windowtext windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top"><strong><span style="font-size: 8pt; line-height: 115%;">STANDARD VPN<br /> PPTP</span></strong></td> <td style="border-width: 1pt 1pt 1pt medium; border-style: solid solid solid none; border-color: windowtext windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top"><strong><span style="font-size: 8pt; line-height: 115%;">STANDARD VPN<br /> IPsec</span></strong></td> <td style="border-width: 1pt 1pt 1pt medium; border-style: solid solid solid none; border-color: windowtext windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top"><strong><span style="font-size: 8pt; line-height: 115%;">STANDARD VPN<br /> L2TP</span></strong></td> <td style="border-width: 1pt 1pt 1pt medium; border-style: solid solid solid none; border-color: windowtext windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top"><strong><span style="font-size: 8pt; line-height: 115%;">SECURE VPN<br /> OpenVPN</span></strong></td> <td style="border-width: 1pt 1pt 1pt medium; border-style: solid solid solid none; border-color: windowtext windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top"><strong><span style="font-size: 8pt; line-height: 115%;">SECURE VPN<br /> SSTP</span></strong></td> </tr> <tr> <td style="border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt;" valign="top"><strong><span style="font-size: 8pt; line-height: 115%;">Poziom szyfrowania</span></strong></td> <td style="border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top"><span style="font-size: 8pt; line-height: 115%;">128 BIT</span></td> <td style="border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top"><span style="font-size: 8pt; line-height: 115%;">128 BIT</span></td> <td style="border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top"><span style="font-size: 8pt; line-height: 115%;">128 BIT</span></td> <td style="border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top"><span style="font-size: 8pt; line-height: 115%;">256 BIT</span></td> <td style="border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top"><span style="font-size: 8pt; line-height: 115%;">256 BIT</span></td> </tr> <tr> <td style="border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt;" valign="top"><strong><span style="font-size: 8pt; line-height: 115%;">Wspierany system</span></strong></td> <td style="border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top"> <p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0.0001pt; line-height: 115%;"><span style="font-size: 8pt; line-height: 115%;">WindowsLinux</span></p> <p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0.0001pt; line-height: 115%;"><span style="font-size: 8pt; line-height: 115%;">iOS</span></p> <p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0.0001pt; line-height: 115%;"><span style="font-size: 8pt; line-height: 115%;">Android</span></p> <p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0.0001pt; line-height: 115%;"><span style="font-size: 8pt; line-height: 115%;">Windows Phone</span></p> <p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0.0001pt; line-height: 115%;"><span style="font-size: 8pt; line-height: 115%;">Mac OS X</span></p> </td> <td style="border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top"> <p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0.0001pt; line-height: 115%;"><span style="font-size: 8pt; line-height: 115%;">Windows</span></p> <p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0.0001pt; line-height: 115%;"><span style="font-size: 8pt; line-height: 115%;">Linux</span></p> <p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0.0001pt; line-height: 115%;"><span style="font-size: 8pt; line-height: 115%;">iOS</span></p> <p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0.0001pt; line-height: 115%;"><span style="font-size: 8pt; line-height: 115%;">Android</span></p> <p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0.0001pt; line-height: 115%;"><span style="font-size: 8pt; line-height: 115%;">Windows Phone</span></p> <p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0.0001pt; line-height: 115%;"><span style="font-size: 8pt; line-height: 115%;">Mac OS X</span></p> </td> <td style="border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top"> <p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0.0001pt; line-height: 115%;"><span style="font-size: 8pt; line-height: 115%;">Windows</span></p> <p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0.0001pt; line-height: 115%;"><span style="font-size: 8pt; line-height: 115%;">Linux</span></p> <p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0.0001pt; line-height: 115%;"><span style="font-size: 8pt; line-height: 115%;">iOS</span></p> <p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0.0001pt; line-height: 115%;"><span style="font-size: 8pt; line-height: 115%;">Android</span></p> <p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0.0001pt; line-height: 115%;"><span style="font-size: 8pt; line-height: 115%;">Windows Phone</span></p> <p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0.0001pt; line-height: 115%;"><span style="font-size: 8pt; line-height: 115%;">Mac OS X</span></p> </td> <td style="border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top"> <p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0.0001pt; line-height: 115%;"><span style="font-size: 8pt; line-height: 115%;">Windows</span></p> <p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0.0001pt; line-height: 115%;"><span style="font-size: 8pt; line-height: 115%;">Linux</span></p> <p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0.0001pt; line-height: 115%;"><span style="font-size: 8pt; line-height: 115%;">iOS</span></p> <p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0.0001pt; line-height: 115%;"><span style="font-size: 8pt; line-height: 115%;">Android</span></p> <p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0.0001pt; line-height: 115%;"><span style="font-size: 8pt; line-height: 115%;">Mac OS X</span></p> </td> <td style="border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top"> <p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0.0001pt; line-height: 115%;"><span style="font-size: 8pt; line-height: 115%;">Windows</span></p> <p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0.0001pt; line-height: 115%;"><span style="font-size: 8pt; line-height: 115%;">Linux</span></p> <p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0.0001pt; line-height: 115%;"><span style="font-size: 8pt; line-height: 115%;">BSD</span></p> </td> </tr> <tr> <td style="border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt;" valign="top"><strong><span style="font-size: 8pt; line-height: 115%;">Kompatybilność</span></strong></td> <td style="border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top"><span style="font-size: 8pt; line-height: 115%;">Komputery, smartfony, tablety</span></td> <td style="border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top"><span style="font-size: 8pt; line-height: 115%;">Komputery, smartfony, tablety</span></td> <td style="border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top"><span style="font-size: 8pt; line-height: 115%;">Komputery, smartfony, tablety</span></td> <td style="border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top"><span style="font-size: 8pt; line-height: 115%;">Komputery, smartfony, tablety</span></td> <td style="border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top"><span style="font-size: 8pt; line-height: 115%;">Komputery</span></td> </tr> <tr> <td style="border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt;" valign="top"><strong><span style="font-size: 8pt; line-height: 115%;">Bezpieczeństwo</span></strong></td> <td style="border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top"><span style="font-size: 8pt; line-height: 115%;">Podstawowe szyfrowanie do 128bit.</span></td> <td style="border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top"><span style="font-size: 8pt; line-height: 115%;">Mocne szyfrowanie. Dodatkowo opakowuje dane przez protok&oacute;ł IPsec do 128bit.</span></td> <td style="border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top"><span style="font-size: 8pt; line-height: 115%;">Mocne szyfrowanie. Dodatkowo opakowuje dane przez protok&oacute;ł IPsec do 128bit.</span></td> <td style="border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top"><span style="font-size: 8pt; line-height: 115%;">Bardzo mocne szyfrowanie za pomocą certyfikat&oacute;w do 256bit</span></td> <td style="border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top"><span style="font-size: 8pt; line-height: 115%;">Bardzo mocne szyfrowanie za pomocą certyfikat&oacute;w do 256bit</span></td> </tr> <tr> <td style="border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt;" valign="top"><strong><span style="font-size: 8pt; line-height: 115%;">Szybkość</span></strong></td> <td style="border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top"><span style="font-size: 8pt; line-height: 115%;">Bardzo szybki ze względu na podstawowe szyfrowanie</span></td> <td style="border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top"><span style="font-size: 8pt; line-height: 115%;">Wymaga więcej procesora do szyfrowania danych</span></td> <td style="border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top"><span style="font-size: 8pt; line-height: 115%;">Wymaga więcej procesora do szyfrowania danych</span></td> <td style="border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top"><span style="font-size: 8pt; line-height: 115%;">Najlepsza wydajność. Bardzo szybki nawet na połączeniach z dużym op&oacute;źnieniem</span></td> <td style="border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top"><span style="font-size: 8pt; line-height: 115%;">Najlepsza wydajność. Bardzo szybki nawet na połączeniach z dużym op&oacute;źnieniem</span></td> </tr> <tr> <td style="border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt;" valign="top"><strong><span style="font-size: 8pt; line-height: 115%;">Konfiguracja</span></strong></td> <td style="border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top"><span style="font-size: 8pt; line-height: 115%;">Bardzo prosta. Nie wymaga dodatkowego oprogramowania.</span></td> <td style="border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top"><span style="font-size: 8pt; line-height: 115%;">Prosta, wymaga dodatkowych ustawień. Nie wymaga dodatkowego oprogramowania</span></td> <td style="border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top"><span style="font-size: 8pt; line-height: 115%;">Prosta, wymaga dodatkowych ustawień. Nie wymaga dodatkowego oprogramowania</span></td> <td style="border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top"><span style="font-size: 8pt; line-height: 115%;">Wymagane dodatkowe oprogramowanie. Wymagana instalacja certyfikat&oacute;w</span></td> <td style="border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top"><span style="font-size: 8pt; line-height: 115%;">Protok&oacute;ł wbudowany w Windows Vista, Windows 7. Wymagana instalacja certyfikat&oacute;w</span></td> </tr> <tr> <td style="border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt;" valign="top"><strong><span style="font-size: 8pt; line-height: 115%;">Używane porty</span></strong></td> <td style="border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top"> <p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0.0001pt; line-height: 115%;"><span style="font-size: 8pt; line-height: 115%;">TCP 1723 - inicjalizacja</span></p> <p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0.0001pt; line-height: 115%;"><span style="font-size: 8pt; line-height: 115%;">GRE</span></p> </td> <td style="border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top"> <p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0.0001pt; line-height: 115%;"><span style="font-size: 8pt; line-height: 115%;">UDP 1701</span></p> <p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0.0001pt; line-height: 115%;"><span style="font-size: 8pt; line-height: 115%;">UDP 500 - kanał wymiany klucza</span></p> <p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0.0001pt; line-height: 115%;"><span style="font-size: 8pt; line-height: 115%;">UDP 4500</span></p> <p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0.0001pt; line-height: 115%;"><span style="font-size: 8pt; line-height: 115%;">ESP (protok&oacute;ł numer 50) dokument RFC 2406</span></p> </td> <td style="border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top"> <p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0.0001pt; line-height: 115%;"><span style="font-size: 8pt; line-height: 115%;">UDP 1701</span></p> <p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0.0001pt; line-height: 115%;"><span style="font-size: 8pt; line-height: 115%;">UDP 500 - kanał wymiany klucza</span></p> <p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0.0001pt; line-height: 115%;"><span style="font-size: 8pt; line-height: 115%;">UDP 4500</span></p> <p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0.0001pt; line-height: 115%;"><span style="font-size: 8pt; line-height: 115%;">ESP (protok&oacute;ł numer 50) dokument RFC 2406</span></p> </td> <td style="border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top"> <p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0.0001pt; line-height: 115%;"><span style="font-size: 8pt; line-height: 115%;">TCP 993</span></p> <p style="margin-top: 0cm; margin-right: 0cm; margin-bottom: 0.0001pt; line-height: 115%;"><span style="font-size: 8pt; line-height: 115%;">TCP 443</span></p> </td> <td style="border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top"><span style="font-size: 8pt; line-height: 115%;">TCP 443</span></td> </tr> <tr> <td style="border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt;" valign="top"><strong><span style="font-size: 8pt; line-height: 115%;">Podsumowanie</span></strong></td> <td style="border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top"><span style="font-size: 8pt; line-height: 115%;">PPTP - Point to Point Tunneling Protocol. Najbardziej rozpowszechniony protok&oacute;ł najbardziej podatny na błędy. PPTP jest szybki i bardzo prosty w konfiguracji. Jest to dobry wyb&oacute;r jeżeli twoje urządzenie nie wspiera OpenVPN lub SSTP VPN. Rekomendowany dla urządzeń mobilnych.</span></td> <td style="border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top"><span style="font-size: 8pt; line-height: 115%;">IPsec&nbsp;IP Security. Istotną cechą tego protokołu jest jednokierunkowość. Pełna łączność wykorzystuje dwa kanały jeden od A do B drugi od B do A. L2TP/IPsec jest to dobry wyb&oacute;r jeżeli twoje urządzenie nie wspiera OpenVPN lub SSTP VPN i zależy ci na dużym bezpieczeństwie. Rekomendowany dla urządzeń mobilnych.</span></td> <td style="border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top"><span style="font-size: 8pt; line-height: 115%;">IPsec IP Security. Istotną cechą tego protokołu jest jednokierunkowość. Pełna łączność wykorzystuje dwa kanały jeden od A do B drugi od B do A. L2TP/IPsec jest to dobry wyb&oacute;r jeżeli twoje urządzenie nie wspiera OpenVPN lub SSTP VPN i zależy ci na dużym bezpieczeństwie. Rekomendowany dla urządzeń mobilnych.</span></td> <td style="border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top"><span style="font-size: 8pt; line-height: 115%;">OpenVPN jest bardzo szybkim,&nbsp; bezpieczny, bardzo stabilnym i rekomendowanym protokołem dla system&oacute;w Windows , Linux i Android. Zapewnia najwyższa wydajność, bezpieczeństwo i niezawodność. Używanie OpenVPN przez UDP jest szybsze niż przez TCP.</span></td> <td style="border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top"><span style="font-size: 8pt; line-height: 115%;">SSTP (Secure Socket Tunneling Protocol) VPN jest rekomendowanym protokołem dla system&oacute;w Windows. Najwyższa wydajność, bezpieczeństwo i niezawodność. Korzysta z protokołu SSL na porcie TCP 443 pozwala SSTP przejść przez praktycznie wszystkie firewalle i serwery proxy. PPTP nie wymaga użycia infrastruktury klucza publicznego (PKI).</span></td> </tr> </tbody> </table> <p>&nbsp;</p> <p>Wprowadzenie uważam za zakończone przejdźmy zatem dalej i już na konkretnych przykładach om&oacute;wmy spos&oacute;b konfiguracji i zestawiania połączenia VPN. Rozpoczniemy od systemu Windows 10 by w kolejnych krokach om&oacute;wić i opisać systemy: Windows Phone, IOS oraz Android. System Linux został przeze mnie celowo pominięty gdyż chciałbym temat opisać w osobnym wpisie i skupić się na OpenVPN z naciskiem na funkcję bramy (komputer realizuje połączenia w imieniu klienta).</p> <p>&nbsp;</p> <p>Przedstawione w tym wpisie przykłady konfiguracji połączeń VPN opierać się będą o usługi oferowane przez Private Internet Access (nie jest to żadna reklama lecz akurat z usług tej firm korzystam).</p> <p>&nbsp;</p> <p><strong><span style="font-size: 12pt; line-height: 115%;">System Windows 10</span></strong></p> <p>&nbsp;</p> <p>Aby w systemie Windows 10 skonfigurować połączenie VPN należy kliknąć na ikonę <strong>Centrum Akcji</strong> i z dostępnych ikon wybrać <strong>VPN</strong>.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image4.png" alt="image4" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Opcjonalnie do opcji odpowiedzialnych za zestawienie kanału VPN możemy dostać się po wybraniu ikony <strong>Sieć i Internet</strong> dostępnej w oknie <strong>Ustawienia</strong> (skr&oacute;t Win+I)</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image5.png" alt="image5" width="700" height="414" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po otwarciu nowego okna z dostępnych zakładek odszukujemy kartę <strong>VPN</strong> i z dostępnych opcji wybieramy <strong>Dodaj połączenie VPN</strong>.</p> <p>&nbsp;</p> <p>Dodatkowo na karcie tej możemy zdefiniować opcje użycia połączenia VPN:</p> <p style="margin-left: 30px;"><strong>Zezwalaj na połączenia VPN w sieciach taryfowych</strong> &ndash; dostęp do Internetu może być świadczony przez ISP, kt&oacute;ry nalicza opłaty za ilość wykorzystanych danych (tj. za ilość danych wysłanych i odebranych). Takie połączenie jest w&oacute;wczas traktowane jako połączenie <span class="newterm">taryfowe (najczęściej tego typu połączenie jest realizowane dzięki wykorzystaniu sieci kom&oacute;rkowych). Łącza tego typu po przekroczeniu ustalonego limitu bardzo często są ograniczane tj. nadal można cieszyć się z połączenia z Internetem lecz już nie z pełną prędkością bądź zostanie nam naliczona dodatkowa opłata za ilość danych wykorzystanych poza ustalonym limitem. </span>Opcja ta pozwala nam ustawić czy połączenie VPN może być zestawione w przypadku wykrycia korzystania z tego typu sieci.</p> <p style="margin-left: 30px;"><strong>Zezwalaj na połączenia VPN podczas korzystania z</strong> <strong>roamingu</strong> &ndash; wyłączenie opcji spowoduje zabronienie ustanowienie połączenia VPN w sieciach kom&oacute;rkowych innych niż sieć macierzysta.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image6.png" alt="image6" width="700" height="373" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po wyborze opcji dodania połączenia VPN w nowym oknie <strong>Dodawanie połączenia sieci VPN</strong> przechodzimy do konfiguracji parametr&oacute;w połączenia.</p> <p>&nbsp;</p> <p>Co należy zaznaczyć opcje definiowane w tym oknie zależne są od naszego operatora. Dokładny spos&oacute;b konfiguracji znajdziemy na stronach usługodawcy. W przypadku PIA konfiguracja sprowadza się do wybrania w polu <strong>Dostawca sieci VPN</strong> opcji <strong>Windows (wbudowane)</strong> Kolejny krokiem jest ustalenie nazwy połączenia. By m&oacute;c zestawić działające połączenie niezbędne opcje jakie musimy zdefiniować to <strong>Nazwa lub adres IP serwera</strong> oraz <strong>Typ sieci VPN</strong>. PIA umożliwia między innymi utworzenie łącza VPN z wykorzystaniem protokoł&oacute;w L2TP/IPsec z kluczem wstępnym, dlatego też opcje takowe zostały wybrane.</p> <p>&nbsp;</p> <p><strong>Nazwę użytkownika</strong> oraz <strong>hasło</strong> uzyskamy od operatora (jeśli jest taka potrzeba).</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image7.png" alt="image7" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po zdefiniowaniu wszystkich opcji wybieramy <strong>Zapisz</strong>. Połączenie pojawi się na liście dostępnych. Aby ustanowić połączenie wybieramy <strong>Połącz</strong>.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image8.png" alt="image8" width="700" height="639" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Jeśli wszystkie opcje zostały poprawnie zdefiniowane połączenie powinno zostać zestawione. Jak widać poniżej połączenie zostało ustanowione - status połączenia: <strong>Połączono</strong></p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image9.png" alt="image9" width="700" height="289" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Status połączenia VPN można r&oacute;wnież sprawdzić klikając w tray-u na ikonę połączenia sieciowego.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image10.png" alt="image10" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Na rysunku poniżej zaprezentowano wpływ wykorzystania skonfigurowanego i działającego połączenia VPN na przyznany adres IP (widoczność hosta od strony Internetu). Po lewej połączenie tradycyjne jak można zauważyć lokalizacja adresu IP wskazuje na Krak&oacute;w. Po prawej zaś adres IP po ustanowieniu połączenia z serwerem VPN, tym razem lokalizacja została ustalona na Frankfurt.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image11.png" alt="image11" width="700" height="359" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Przyjrzyjmy się jeszcze jak wygląda przechwycony ruch sieciowy bez połączenia VPN i przy aktywnym połączeniu z serwerem VPN.</p> <p>&nbsp;</p> <p>Na rysunku poniżej przedstawiono zrzut z okna programu Wireshark, kt&oacute;rego zadaniem jest przechwytywanie ruch sieciowego tj. danych wysyłanych i odbieranych przez kartę sieciową. Na rysunku poniżej możemy wyodrębnić szereg odrębnych transmisji prowadzonych r&oacute;wnolegle z r&oacute;żnymi hostami - np. 185.42.204.114 czy 62.179.1 62 Ruch ten w żaden spos&oacute;b nie jest chroniony tj. możemy ustalić cel i źr&oacute;dło wysłanej/odebranej informacji oraz najczęściej określić jej zawartość (najczęściej choć nie zawsze gdyż szyfrowanie może być prowadzone na warstwach wyższych). Przechwycony ruch sieciowy obrazuje normalne działanie karty sieciowej.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image12.png" alt="image12" width="700" height="471" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Zaś ilustracja poniżej przedstawia ten sam ruch sieciowy lecz przy aktywnym połączeniu VPN. W tym przypadku nie możemy już wyodrębnić pojedynczych transmisji/sesji, cały ruch sieciowy odbywa się pomiędzy komputerem na kt&oacute;rym zainicjowano połączenie VPN (adres IP 192.168.1.10) a bramą VPN (adres IP 178.162.199.91) Całość ruchu jest zaszyfrowana z wykorzystaniem protokołu ESP.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image13.png" alt="image13" width="700" height="471" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Tak więc myślę, że teraz jak na dłoni widać w jaki spos&oacute;b dzięki połączeniu VPN jest chroniona nasza komunikacja.</p> <p>&nbsp;</p> <p>Definicję połączenia VPN możemy r&oacute;wnież przeprowadzić za pomocą opcji dostępnych w oknie <strong>Centrum sieci i udostępniania</strong> Po wywołaniu okna (możesz skorzystać z pola <strong>Szukaj</strong> dostępnego w <strong>Panelu Sterowania</strong>) klikamy na <strong>Skonfiguruj nowe połączenie lub nową sieć</strong>. Przedstawiona konfiguracja jest analogiczna z tą kt&oacute;rą należy przeprowadzić w systemie Windows 7.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image14.png" alt="image14" width="700" height="523" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>W nowo otwartym oknie z typ&oacute;w dostępnych połączeń wybieramy <strong>Połącz z miejscem pracy</strong>.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image15.png" alt="image15" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>W kolejnym kroku należy wybrać typ połączenia. Do dyspozycji mamy opcję pozwalającą na wykorzystaniu połączenia internetowego (połączenie przewodowe, sieć WiFi) bądź metody opartej na bezpośrednim wybraniu numeru (tzw. wdzwanianie) - do ustanowienia połączenia niezbędny jest modem. Decydujemy się na pierwszą opcję: <strong>Użyj mojego połączenia internetowego</strong></p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image16.png" alt="image16" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po wybraniu sposobu łączenia należy określić adres serwera za pomocą, kt&oacute;rego będzie realizowane połączenie VPN oraz należy określić nazwę profilu. Tym razem decydujemy się na serwer VPN umiejscowiony w Rumuni &ndash; adres: ro.privateinternetaccess.com. Jeśli chcesz zezwolić innym użytkownikom komputera na korzystanie z tego połączenia zaznacz: <strong>Zezwalaj innym osobom na korzystanie z tego połączenia</strong>.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image17.png" alt="image17" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po określeniu wszystkich opcji wybieramy <strong>Utw&oacute;rz</strong>.</p> <p>&nbsp;</p> <p>Dostęp do połączenia będzie możliwy poprzez okno: <strong>Połączenia sieciowe</strong></p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image18.png" alt="image18" width="700" height="528" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Utworzone połączenie można spr&oacute;bować użyć lecz po wydaniu opcji <strong>Połącz</strong> łączność z serwerem nie zostanie ustanowiona gdyż nie wszystkie opcje zostały jeszcze zdefiniowane.</p> <p>&nbsp;</p> <p>Aby przejść do edycji ustawień połączenia VPN należy z menu kontekstowego połączenia wybrać <strong>Właściwości</strong>.</p> <p>&nbsp;</p> <p>Aby połączenie doszło do skutku należy na karcie <strong>Zaawansowane</strong> w sekcji <strong>Typ wirtualnej sieci prywatnej (VPN)</strong> wybrać: <strong>Protok&oacute;ł L2TP/IPSec</strong> oraz w sekcji <strong>Uwierzytelnienie</strong> po zaznaczeniu <strong>Zezwalaj na użycie tych protokoł&oacute;w</strong> wybrać <strong>Microsoft CHAP wersja 2 (MS-CHAP v2)</strong></p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image19.png" alt="image19" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Serwery PIA wymagają zdefiniowania klucza wstępnego tak więc by określić klucz należy po wybraniu protokołu <strong>L2TP/IPSec </strong>kliknąć na <strong>Ustawienia zaawansowane</strong></p> <p>&nbsp;</p> <p>W nowo otwartym oknie po wybraniu opcji: <strong>Użyj klucza wstępnego do uwierzytelnienia</strong> zdefiniować klucz &ndash; wartość klucza: <strong>mysafety</strong>.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image20.png" alt="image20" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Wprowadzone ustawienia należy zatwierdzić przyciskiem <strong>OK</strong>.</p> <p>&nbsp;</p> <p>Podczas wykonania pierwszego połączenia zostaniemy poproszeni o podanie danych umożliwiających przeprowadzenie procesu logowania.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image21.png" alt="image21" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po weryfikacji danych (login i hasło) połączenie VPN zostaje ustanowione.</p> <p>&nbsp;</p> <p>Sprawdzenie adresu IP przekonuje nas o poprawności wykonania czynności konfiguracyjnych &ndash; uzyskany adres IP wskazuje, że łączymy się z obszaru Rumuni.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image22.png" alt="image22" width="700" height="623" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Połączenie VPN wykorzystujące zestaw protokoł&oacute;w L2PT/IPsec jak już wież Czytelniku nie jest jedynym sposobem na ustalenie bezpiecznego kanału komunikacyjnego. Do zestawienia połączenia VPN może zostać wykorzystany pakiet oprogramowania <strong>OpenVPN</strong>. OpenVPN jest projektem zapoczątkowanym przez Jamesa Yonana a obecnie rozwijanym przez grupę ludzi z całego świata. Oprogramowanie to jest multiplatformowe, co oznacza dostępność narzędzia w systemach takich jak Solaris, Linux, OpenBSD, FreeBSD, NetBSD, QNX, Mac OS X, Android czy Windows XP/Vista/7/8/10. Pakiet jest publikowany na licencji GNU GPL. Dzięki tak dużej popularności oprogramowania wiele firm oferujących usługi połączeń VPN umożliwia zestawienie połączenia właśnie przy wykorzystaniu OpenVPN.</p> <p>&nbsp;</p> <p>Oprogramowanie pobierzemy ze strony projektu: <a href="https://openvpn.net/index.php/open-source/downloads.html">https://openvpn.net/index.php/open-source/downloads.html</a></p> <p>&nbsp;</p> <p>Po pobraniu pakietu zależnego od wersji posiadanego systemu przystępujemy do jego instalacji.</p> <p>&nbsp;</p> <p>Na pierwszym ekranie tradycyjnie należy zaakceptować licencję. Klikamy <strong>I Agree</strong>.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image23.png" alt="image23" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Drugi krok to wyb&oacute;r komponent&oacute;w. Możemy pozostawić te zaproponowane domyślnie. Klikamy <strong>Next</strong>.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image24.png" alt="image24" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Następuje instalacja oprogramowania. Aby OpenVPN m&oacute;gł poprawnie działać należy wyrazić zgodę na instalację sterownik&oacute;w dodatkowego interfejsu TAP-Win32 Adapter V9 Wybieramy: <strong>Zainstaluj</strong></p> <p>&nbsp;</p> <p>Po poprawnej instalacji by m&oacute;c korzystać z aplikacji należy pobrać pliki konfiguracyjne przygotowane przez usługodawcę - każda z firm, kt&oacute;ra wspiera te rozwiązanie ma przygotowane potrzebne pliki. Informacji szukaj na stronach operatora.</p> <p>&nbsp;</p> <p>Po pobraniu paczki konfiguracyjnej pliki należy wypakować do katalogu C<strong>:\Program Files\OpenVPN\config</strong> bądź <strong>C:\Program Files (x86)\OpenVPN\config</strong> (w zależności od wersji posiadanego systemu).</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image25.png" alt="image25" width="700" height="492" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po wykonaniu wszystkich czynności instalacyjnych na <strong>Pulpicie</strong> zostanie utworzony nowy skr&oacute;t <strong>OpenVPN GUI</strong>. Uruchamiamy narzędzie (domyślnie warto, ustawić uruchamianie narzędzia z uprawnieniami administratora). Dla niewtajemniczonych zmianę uprawnień dokonamy po wyborze z menu kontekstowego opcji <strong>Właściwości</strong> i zaznaczeniu na karcie <strong>Zgodność</strong> opcji <strong>Uruchom ten program jako administrator</strong></p> <p>&nbsp;</p> <p>Po uruchomieniu narzędzia w prawym dolnym rogu obok zegarka (patrz tray) powinniśmy zobaczyć ikonkę programu. Aby uzyskać połączenie klikamy na ikonę PPM i z rozwijanej listy wybieramy interesujący nas serwer VPN. Aby zestawić połączenie z serwerem wybieramy przycisk <strong>Połącz</strong></p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image26.png" alt="image26" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>W trakcie ustanawiania połączenia z serwerem VPN, zostaniemy poproszeni o wpisanie loginu i hasła. Wprowadzone dane zatwierdzamy <strong>OK</strong></p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image27.png" alt="image27" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po podaniu danych uwierzytelniających połączenie powinno zostać ustalone.</p> <p>&nbsp;</p> <p>Dodatkowo po nawiązaniu połączenia został przechwycony ruch sieciowy. Jak widać cała komunikacja przebiega pomiędzy hostem lokalnym (IP - 192.168.1.155) a bramą VPN (IP - 185.3.135.34), przesyłane informacje są zaszyfrowane</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image28.png" alt="image28" width="700" height="373" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>W dzisiejszym świecie komputer już dawno przestał być jedynym urządzeniem przez, kt&oacute;re realizujemy dostęp do sieci Internet. Zasoby sieci bardzo często przeglądamy na smartfonach czy tabletach i r&oacute;wnież na tych urządzeniach możemy zestawić połączenie z serwerem VPN.</p> <p>&nbsp;</p> <p><strong><span style="font-size: 12pt; line-height: 115%;">Windows Phone 8 oraz 10</span></strong></p> <p>&nbsp;</p> <p>Konfigurację połączenia VPN rozpoczniemy od systemu <strong>Windows Phone</strong>. Środowisko te oferuje nam możliwość skonfigurowania połączenia VPN m.in. z wykorzystaniem protokoł&oacute;w L2TP/IPSec</p> <p>&nbsp;</p> <p>Rozpoczynamy od wybrania <strong>Ustawienia</strong> by następnie przejść do sekcji <strong>VPN </strong>(w systemie Windows Phone 8 - rysunek z lewej) w przypadku systemu Windows Phone 10 opcję <strong>VPN</strong> odnajdziemy po wybraniu <strong>Sieć i połączenia bezprzewodowe</strong>.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image29.png" alt="image29" width="700" height="614" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>W przypadku gdy usługa jest nieaktywna należy ją włączyć. W kolejnym kroku poprzez wybranie przycisku <strong>Opcje</strong> możemy określić zasady ustalania połączenia z serwerem VPN (Windows Phone 8).</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image30.png" alt="image30" width="533" height="947" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Do dyspozycji mamy dwie opcje:</p> <p style="margin-left: 30px;"><strong>Zezwalaj na VPN przez sieć kom&oacute;rkową</strong> - połączenie z serwerem VPN zostanie ustanowione za pośrednictwem sieci kom&oacute;rkowej,</p> <p style="margin-left: 30px;"><strong>Zezwalaj na VPN w roamingu przez sieć kom&oacute;rkową</strong> - roaming czyli zmiana operatora sieci kom&oacute;rkowej najczęściej realizowana w przypadku gdy abonent znajduje się poza zasięgiem sieci operatora lub dostawcy Internetu, z kt&oacute;rym podpisał umowę o świadczenie usług telekomunikacyjnych. Zaznaczenie tej opcji spowoduje zestawienie połączenia VPN w sieciach nie będących naszą siecią macierzystą czyli np. gdy przebywamy za granicą.</p> <p>&nbsp;</p> <p>W przypadku Windows Phone 10 opcje te są dostępne od razu po otwarciu okna<strong> VPN</strong>.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image31.png" alt="image31" width="700" height="618" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Aby dodać profil VPN klikamy na znak plusa. W nowym oknie musimy określić następujące opcje:</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">1 - nazwa lub adres IP serwera VPN,</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">2 - typ połączenia VPN - wybieramy protok&oacute;ł L2TP/IPSec,</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">3 - określamy typ uwierzytelnienia - login + hasło + klucz wstępny,</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">4 - definiujemy nazwę użytkownika,</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">5 - wpisujemy hasło,</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">6 - określamy klucz wstępny,</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">7 - opcjonalnie zezwalamy na automatyczne tworzenie tunelu VPN,</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">8 - opcjonalnie określamy włączenie przesyłania całego ruchu,</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">9 - określamy nazwę profilu.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image32.png" alt="image32" width="700" height="1097" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Włączenie opcji <strong>Wysyłaj cały ruch spowoduje</strong>, że cała komunikacja opierająca się o transmisję danych będzie przekazywana poprzez serwer VPN. Po wyłączeniu opcji będziemy mogli zdecydować kiedy tunel VPN ma być stosowany a kiedy nie. Spos&oacute;b kształtowaniu ruchu definiujemy poprzez określenie adres&oacute;w IP bądź domen. Ruch sieciowy z tymi adresami będzie przesyłany przez bramę VPN.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image33.png" alt="image33" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po wyborze przycisku <strong>zaawansowane</strong> uzyskujemy dostęp do dodatkowych ustawień. Ustawienia te dotyczą serwera proxy a także wyłączenia sieci VPN dla sieci firmowej i domowej czyli tych sieci co do kt&oacute;rych mamy pewność, że są bezpieczne.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image34.png" alt="image34" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>W przypadku systemu Windows Phone 10 ustawienia zaawansowane odnajdziemy po kliknięciu na <strong>Właściwości</strong> utworzonego profilu.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image35.png" alt="image35" width="700" height="2546" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po zdefiniowaniu wszystkich opcji nie pozostaje nam nic innego jak pr&oacute;ba nawiązania połączenia. Jak widać poniżej pr&oacute;ba ta kończy się sukcesem. O fakcie ustanowienia poprawnego połączenia VPN dodatkowo jesteśmy informowani ikoną kł&oacute;dki &ndash; ikona ta pojawia się przy ikonie mocy nawiązanego połączenia.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image36.png" alt="image36" width="700" height="671" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Tak więc po przeprowadzonej konfiguracji możemy na swoim smartfonie z zasob&oacute;w Internetu korzystać w spos&oacute;b całkowicie bezpieczy.</p> <p>&nbsp;</p> <p><strong><span style="font-size: 12pt; line-height: 115%;">Apple - iOS</span></strong></p> <p>&nbsp;</p> <p>W środowisku urządzeń Apple czyli tych pracujących pod kontrolą systemu iOS ustanowienie połączenia VPN możemy zrealizować m.in. za pomocą protokołu L2TP oraz oprogramowania OpenVPN i na wykorzystaniu tych protokoł&oacute;w skupimy naszą uwagę.</p> <p>&nbsp;</p> <p>Zacznijmy od skonfigurowania łącza wykorzystując do tego protok&oacute;ł L2TP. Opis konfiguracji został przedstawiony na urządzeniu IPAD.</p> <p>&nbsp;</p> <p>Konfigurację rozpoczynamy od przejścia do <strong>Ustawień</strong> po czym odszukujemy opcję <strong>VPN</strong>.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image37.PNG" alt="image37" width="700" height="933" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po przejściu do ustawień karty <strong>VPN</strong> wybieramy <strong>Dodaj konfigurację VPN</strong></p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image38.PNG" alt="image38" width="700" height="933" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po otwarciu okna <strong>Typ</strong> wybieramy <strong>L2PT</strong></p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image39.PNG" alt="image39" width="700" height="933" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Aby skonfigurować połączenie VPN musimy określić następujące opcje:</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">1 - <strong>Opis</strong> &ndash; nazwa połączenia,</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">2 - <strong>Serwer</strong> &ndash; nazwa serwera VPN,</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">3 - <strong>Konto</strong> - login VPN,</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">4 - <strong>Hasło</strong> - hasło VPN,</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">5 - <strong>Hasło wsp&oacute;lne</strong> - klucz wsp&oacute;łdzielony,</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">6 - Opcja <strong>Wysyłaj wszystko</strong> &ndash; cały ruch sieciowy jest przesyłany przez bramę VPN.</p> <p>&nbsp;</p> <p style="margin-bottom: 0.0001pt;">Zapisanie zdefiniowanych ustawień odbywa się klikając na <strong>Gotowe</strong></p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image40.PNG" alt="image40" width="700" height="933" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po skonfigurowaniu wszystkich opcji połączenie jest gotowe do użycia. W przypadku zdefiniowania większej ilości połączeń VPN przed połączeniem wybieramy te z kt&oacute;rego chcemy skorzystać. Nawiązanie połączenia odbywa się za pomocą przełącznika <strong>Status</strong>. Jak widać poniżej udało się zestawić działający kanał VPN.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image41.PNG" alt="image41" width="700" height="933" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Łącze VPN zostało utworzone.</p> <p>&nbsp;</p> <p>System iOS domyślnie nie ma zainstalowanego klienta sieci OpenVPN ale nic nie stoi na przeszkodzie aby stosowane oprogramowanie samemu zainstalować.</p> <p>&nbsp;</p> <p>Instalacja odbywa się poprzez sklep AppStore. Po uruchomieniu sklepu odszukujemy aplikację <strong>OpenVPN Connect</strong> i instalujemy ją. Warto przy okazji nadmienić, że wiele firm oferujących usługę połączeń VPN dostarcza dedykowane aplikacje do łączności z swoją infrastrukturą. Tak więc gdy chcemy skorzystać z takiej aplikacji należy się upewnić czy nasz usługodawca przewidział taką możliwość.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image42.png" alt="image42" width="700" height="934" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Aby dokonać konfiguracji połączenia z wykorzystaniem aplikacji OpenVPN Connect, w pierwszej kolejności musisz zaimportować profil czyli plik z rozszerzeniem .ovpn. Import pliku można dokonać ręcznie podłączając iPhone lub iPad do komputera i za pośrednictwem iTunes w sekcji <strong>Aplikacje</strong>, będzie można skopiować plik .ovpn wraz z ewentualnymi certyfikatami. Pliki .ovpn należy pobrać ze strony usługodawcy. Pliki te stanowią profil w kt&oacute;rym są zapisane informacje pozwalające nam skorzystać z danego serwera VPN (najczęściej nazwa pliku określa umiejscowienie geograficzne serwera).</p> <p>&nbsp;</p> <p>Alternatywnym sposobem jest skopiowanie pliku .ovpn za pośrednictwem strony internetowej przygotowanej przez usługodawcę.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image43.PNG" alt="image43" width="700" height="933" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po wyborze interesującej nas lokalizacji pobrany plik otwieramy za pomocą programu OpenVPN Connect (po instalacji oprogramowania pliki z rozszerzeniem .ovpn będą skojarzone z aplikacją).</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image44.png" alt="image44" width="700" height="441" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po otwarciu aplikacji powinniśmy ujrzeć zaimportowany profil.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image45.PNG" alt="image45" width="700" height="933" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Aby można było skorzystać z profilu jego dane należy uzupełnić o dane uwierzytelniające. Dane te uzupełnimy klikając na ikonę plusa.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image46.PNG" alt="image46" width="700" height="933" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po wprowadzeniu danych, celem ich zapisania przesuwamy przełącznik <strong>Save</strong> i dokonujemy pr&oacute;by połączenia z bramą VPN. Jeśli wszystko skonfigurowaliśmy poprawnie status połączenia powinien przełączyć się do stanu <strong>Connected</strong></p> <p>&nbsp;</p> <p>Po uzyskaniu połączenia dodatkowo będziemy mogli przeglądać statystyki zestawionego połączenia.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image47.PNG" alt="image47" width="700" height="933" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Otwarcie okna przeglądarki i sprawdzenie przypisanego adresu IP informuje nas, że połączenie jest wykonywane z terenu Niemiec.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image48.png" alt="image48" width="700" height="860" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p><strong><span style="font-size: 12pt; line-height: 115%;">Android</span></strong></p> <p>&nbsp;</p> <p>Om&oacute;wiliśmy już Windowsa, IOSa tak więc przyszła pora na Androida. I tu tak samo jak w przypadku pozostałych system&oacute;w bardzo często zdarza się że nasz usługodawca umożliwia nam połączenie się ze swoją infrastrukturą z wykorzystaniem specjalnie do tego celu przygotowanej aplikacji (dostępność sprawdź na strona usługodawcy). My jednak zdecydujemy się na samodzielne skonfigurowanie połączenia VPN. Połączenie skonfigurujemy z wykorzystaniem protokołu L2PT/IPSec kt&oacute;ry jest wspierany przez system Android oraz z wykorzystaniem narzędzia OpenVPN.</p> <p>&nbsp;</p> <p>Aby rozpocząć konfigurację połączenia VPN w systemie Android przechodzimy do sekcji <strong>Połączenia</strong> a następnie z dostępnych opcji wybieramy <strong>Więcej sieci</strong> i dalej <strong>VPN</strong>.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image49.png" alt="image49" width="700" height="1120" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Połączenie VPN uda nam się skonfigurować tylko w przypadku ustawienia blokady ekranu na poświadczenie typu kod PIN bądź hasło. Jak widać poniżej opcje odpowiedzialne za konfigurację połączenia VPN są nie aktywne gdyż blokada ekranu jest realizowana za pomocą symbolu.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/vpn/image50.png" alt="image50" width="700" height="1120" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po kliknięciu na <strong>OK</strong> zostaniemy przekierowani do ekranu opcji <strong>Ustawienia odblokowania ekranu</strong>. Na ekranie tym ustalamy jeden ze sposob&oacute;w ochrony urządzenia.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image51.png" alt="image51" width="700" height="672" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>Decydujemy się na ustawienie kodu PIN.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image52.png" alt="image52" width="700" height="1121" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po ustaleniu PINu bądź hasła dostęp do opcji tworzenia kanału VPN będzie możliwy.</p> <p>&nbsp;</p> <p>Konfiguracja połączenia VPN sprowadza się do określenia:</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">1 &ndash; nazwy połączenia,</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">2 &ndash; typu użytych protokoł&oacute;w,</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">3 &ndash; adresu bramy VPN,</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">4 &ndash; klucza wsp&oacute;łdzielonego.</p> <p>&nbsp;</p> <p>Po zdefiniowaniu wszystkich opcji wybieramy <strong>Zapisz</strong>.</p> <p>&nbsp;</p> <p>Na uwadze należy mieć fakt, że u r&oacute;żnych dostawc&oacute;w konfiguracja połączenia może się nieznacznie r&oacute;żnić od tej przedstawionej. Wszystkie niezbędne informacje znajdziemy na pewno na stronach usługodawcy.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image53.png" alt="image53" width="700" height="1121" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po zapisaniu konfiguracji tunelu VPN możemy wykonać pr&oacute;bę połączenia. Po wybraniu połączenia określamy nazwę użytkownika oraz hasło.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image54.png" alt="image54" width="700" height="1120" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Jeśli wszystko wykonaliśmy poprawnie powinno nam udać się ustanowić połączenie VPN. O stanie połączenia zostaniemy poinformowani osobnym powiadomieniem, na belce opcji powinna pojawić się ikona <strong>klucza</strong>.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image55.png" alt="image55" width="700" height="1120" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>W systemie Android możemy r&oacute;wnież skorzystać z połączeń typu OpenVPN. Aby wykorzystać ten typ połączenia musimy zainstalować aplikację <strong>OpenVPN Connect</strong>, kt&oacute;rą znajdziemy w sklepie. Po odnalezieniu aplikacji wybieramy <strong>Zainstaluj</strong>.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image56.png" alt="image56" width="700" height="1121" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po instalacji oprogramowania należy tak jak w przypadku systemu IOS zaimportować odpowiedni profil połączenia. Przechodzimy na stronę udostępnioną przez operatora i wybieramy serwer przez kt&oacute;ry chcemy realizować połączenie. Po pobraniu pliku wybieramy <strong>Otw&oacute;rz</strong>.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image57.png" alt="image57" width="700" height="1120" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Akceptujemy ustawienia profilu wybierając <strong>Accept</strong>.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image58.png" alt="image58" width="700" height="552" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po zaimportowaniu profilu aby ukończyć konfigurację tunelu VPN zostaniemy poproszeni o podanie nazwy użytkownika i hasła. Po poprawnym zdefiniowaniu danych wybieramy <strong>Connect</strong>.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image59.png" alt="image59" width="700" height="1120" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Przed utworzeniem połączenia z serwerem VPN zostaniemy ostrzeżeni o przechwyceniu wszystkich aktywnych połączeń sieciowych przez aplikację OpenVPN Connect aby sfinalizować połączenie należy zaznaczyć <strong>Ufam tej aplikacji</strong> i całą operację potwierdzić klawiszem <strong>OK</strong></p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image60.png" alt="image60" width="700" height="1120" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po wykonaniu tych wszystkich operacji powinno Nam udać się zestawić połączenie VPN. Aktywne połączenie VPN jest sygnalizowane ikoną klucza na belce zadań.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image61.png" alt="image61" width="700" height="1120" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Trochę wcześniej obiecałem zaprezentować połączenie VPN typu site - to - site a więc aby nie rzucać sł&oacute;w na wiatr, jeszcze kilka sł&oacute;w na ten temat. Do tej pory zajmowaliśmy się konfigurowaniem połączeń VPN na każdym z urządzeń z osobna. Do problemu można podejść trochę z innej strony. A mianowicie w domu bądź firmie wszystkie urządzenia tworzące sieć lokalną aby uzyskać dostęp do Internetu muszą mieć łączność z bramą czyli routerem. Tak więc można zlecić routerowi utworzenie połączenia VPN w ten spos&oacute;b naszą sieć lokalną połączymy z siecią usługodawcy VPN. W ten o to prosty spos&oacute;b każde urządzenie pracujące w naszej sieci uzyska bezpieczny dostęp do Internetu poprzez bramę VPN. Niestety router&oacute;w, kt&oacute;re mają wbudowaną obsługę protokoł&oacute;w VPN na rynku tak wiele nie znajdziemy. Prym w tym temacie wiedzie firma Asus, kt&oacute;ra np. w routerach Asus RT-N16, Asus RT-N18U, Asus RT-N66U, Asus RT-AC66U, Asus RT-AC68U, Asus RT-AC87U, Asus RT-AC3200 czy Asus RT-AC5300 zaimplementowała obsługę protokołu OpenVPN (w niekt&oacute;rych routerach opcja utworzenia kanału VPN będzie dostępna po wgraniu najnowszego softu). Poniżej przykład dostępnych opcji odpowiedzialnych za zestawienie połączenia VPN na routerze Asus RT-AC5300.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image62.png" alt="image62" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Jeśli domyślny firmware routera nie ma opcji zaimplementowania połączeń VPN można zdecydować się na zainstalowanie oprogramowania typu DD-WRT czy Tomato będącego alternatywą dla oryginalnego oprogramowania. Lecz tu na stronach projekt&oacute;w musimy sprawdzić kompatybilność oprogramowania z posiadanym sprzętem. Poniżej na zrzucie panel opcji VPN dostępnych po instalacji DD-WRT.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/vpn/image63.png" alt="image63" width="700" height="911" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Szczeg&oacute;łowy przebieg konfiguracji nie został przeze mnie przedstawiony gdyż konfiguracja r&oacute;żni się w zależności od dostawcy (tu odsyłam do stron internetowych już konkretnych usług). Bardziej zależało mi na wskazaniu &bdquo;drogi&rdquo; niż przedstawieniu opisu dla tego konkretnego dostawcy.</p> <p>&nbsp;</p> <p>Jeśli nie czujemy się na siłach w przeprowadzeniu flashowania routera i całej konfiguracji możemy zdecydować się na zakup już wstępnie przygotowanego routera - niekt&oacute;rzy dostawcy VPN w swojej ofercie mają przygotowaną taką opcję.</p> <p>&nbsp;</p> <p>I dobrnęliśmy do końca mam nadzieję Czytelniku, że utworzenie połączenia VPN po lekturze tego wpisu nie będzie stanowić żadnego problemu.</p> <p>&nbsp;</p> <hr /> <p>BIBLIOGRAFIA:</p> <p>&nbsp;</p> <p><a href="https://msdn.microsoft.com/en-us/library/cc247338.aspx">https://msdn.microsoft.com/en-us/library/cc247338.aspx</a></p> <p><a href="https://technet.microsoft.com/pl-pl/library/poradnik-krok-po-kroku-instalowanie-i-konfiguracja-sstp-cz-i.aspx#1">https://technet.microsoft.com/pl-pl/library/poradnik-krok-po-kroku-instalowanie-i-konfiguracja-sstp-cz-i.aspx#1</a></p> <p><a>https://www.bestvpn.com/blog/4147/pptp-vs-l2tp-vs-openvpn-vs-sstp-vs-ikev2/</a></p> <p><a href="https://thebestvpn.com/pptp-l2tp-openvpn-sstp-ikev2/" class="moz-txt-link-freetext">https://thebestvpn.com/pptp-l2tp-openvpn-sstp-ikev2/</a></p> <p><a href="https://vpntips.com/vpn-router-install/">https://vpntips.com/vpn-router-install/</a></p></div> Co w sieci siedzi. Agregacja interfejsów przełącznika. 2016-01-23T11:21:30+00:00 2016-01-23T11:21:30+00:00 http://slow7.pl/sieci-komputerowe/item/112-co-w-sieci-siedzi-agregacja-laczy-przelacznika pikolo [email protected] <div class="K2FeedImage"><img src="http://slow7.pl/media/k2/items/cache/e7c0584255fa6f2981e510285a9e9e4f_S.jpg" alt="Co w sieci siedzi. Agregacja interfejsów przełącznika." /></div><div class="K2FeedIntroText"><p><strong>Agregacja łączy</strong> (ang. link aggregation) polega na połączeniu ze sobą wielu port&oacute;w fizycznych przełącznika w jedną logiczną całość. Dzięki takiemu połączeniu otrzymujemy grupę port&oacute;w przez, kt&oacute;re będą przesyłane dane przy czym od strony systemu IOS tak utworzona grupa będzie widoczna jako jeden port. Maksymalna liczba jednocześnie wykorzystywanych połączeń fizycznych, kt&oacute;re mogą uczestniczyć w agregacji wynosi 8.</p> </div><div class="K2FeedFullText"> <p>Dzięki połączeniu ze sobą port&oacute;w uzyskujemy:</p> <p>&nbsp;</p> <p style="padding-left: 60px;"><strong>zwiększona przepustowość łącza</strong> - wiele fizycznych łączy zagregowane w ramach jednej grupy poszerza dostępne pasmo. Oznacza to, że tworząc kanał EtherChannel prędkość utworzonego łącza jest sumą prędkości interfejs&oacute;w fizycznych tworzących ten kanał. Jeśli do konfiguracji kanału zostało użytych 6 interfejs&oacute;w FastEthernet łączna prędkość wyniesie 600 Mb/s. Założenie w swej koncepcji słuszne choć jak dowiesz się za chwilę nie oznacza to, że uzyskana rzeczywista prędkość przesyłu danych odpowiada zawsze przepustowość łącza.</p> <p style="padding-left: 60px;"><strong>rozłożenie obciążenia</strong> - prowadzona komunikacja jest rozkładana na szereg łączy. Przy czym na uwadze należy mieć fakt iż pojedyncza sesja jest prowadzona z wykorzystaniem tylko jednego łącza. Rozłożenie obciążenia w przypadku agregacji łącza nie można traktować jako spos&oacute;b przesłania pakiet&oacute;w tworzących jedną sesje poprzez r&oacute;żne fizyczne zagregowane łącza przełącznika. Wyobraź sobie Czytelniku autostradę, droga ta posiada szereg pas&oacute;w prowadzących w jedną stronę. Autostrada pomieści większą liczbę samochod&oacute;w lecz każdy z pojazd&oacute;w porusza się jednym pasem. Wracając do przykładu z agregacją 6 interfejs&oacute;w FastEthernet oznacza to, że pojedyncza sesja pomimo wykorzystania łącza o przepustowości 600 Mb/s będzie ograniczona do prędkości 100 Mb/s</p> <p style="padding-left: 60px;"><strong>większa dostępność oraz redundancja</strong> - awaria łącza przypisanego do grupy nie powoduje wyłączenia grupy, ruch sieciowy nadal będzie przekazywany.</p> <p>&nbsp;</p> <p>Opis agregacji łącza przedstawię na urządzeniach firmy Cisco. Agregacja w terminologii Cisco jest określana jako <strong>EtherChannel</strong> i jest sposobem budowania grupy łączy pomiędzy przełącznikami Cisco.</p> <p>EtherChannel bazuje na standardzie 802.3ad, kt&oacute;ry p&oacute;źniej został przemianowany na standard 802.1ax opisujący agregację łączy. Według tego standardu agregacja łączy jest opisywana jako (źr&oacute;dło: <a href="https://standards.ieee.org/findstds/standard/802.1AX-2014.html">https://standards.ieee.org/findstds/standard/802.1AX-2014.html</a>):</p> <p>&bdquo;Agregacja łączy umożliwia zagregowanie jednego łącza lub większej liczby łączy w celu utworzenia grupy agregacji łączy LAG (ang. link aggregation group) w taki spos&oacute;b, że klient MAC może traktować tę grupę, jakby była pojedynczym łączem.&rdquo;</p> <p>W przypadku urządzeń CISCO grupę LAG możemy utworzyć jednym z trzech sposob&oacute;w:</p> <p>&nbsp;</p> <p style="padding-left: 60px;"><strong>statyczny EtherChannel</strong> zwany też r&oacute;wnież jako <strong>mode on </strong>Spos&oacute;b ten bazuje na ręcznej konfiguracji grupy LAG,</p> <p style="padding-left: 60px;"><strong>dynamiczny EtherChannel</strong> - spos&oacute;b ten polega na wykorzystaniu jednego z dw&oacute;ch dostępnych protokoł&oacute;w pozwalających w spos&oacute;b całkowicie automatyczny na utworzenie grupy LAG. Protokoły odpowiedzialne za konsolidację port&oacute;w to <strong>LACP</strong> (ang. Link Aggregation Control Protocol) i <strong>PAgP</strong> (ang. Port Aggregation Protocol). Protok&oacute;ł PAgP jest autorskim rozwiązaniem firmy Cisco.</p> <p>&nbsp;</p> <p>Stosując <strong>metodę statyczną</strong> wymuszamy utworzenie kanału EtherChannel bez negocjacji (administrator konfigurację wykonuje samodzielnie) oznacza to, że żaden z protokoł&oacute;w nie jest wykorzystywany tak więc żadne pakiety nie są pomiędzy przełącznikami wymieniane. Wybranie tej metody spowoduje natychmiastowe utworzenie kanału nawet gdy w sąsiednim przełączniku interfejsy są skonfigurowane nieprawidłowo.</p> <p>&nbsp;</p> <p>W przypadku drugiego rozwiązania czyli <strong>dynamicznego tworzenia kanału</strong> jak już zostało wspomniane można wykorzystać jeden z protokoł&oacute;w - PAgP bądź LACP. Protokoły te dbają o prawidłową konfigurację tworzonego łącza. Użycie protokoł&oacute;w definiujemy w trybie konfiguracji interfejsu a do dyspozycji mamy następujące opcje:</p> <p style="text-align: center;">&nbsp;</p> <table border="1" style="border-collapse: collapse; margin-left: auto; margin-right: auto;" cellspacing="0" cellpadding="0"> <tbody> <tr> <td colspan="2" style="width: 460.6pt; border: 1pt solid windowtext; padding: 0cm 5.4pt;" valign="top" width="614"><strong>Protok&oacute;ł PAgP</strong></td> </tr> <tr> <td style="width: 97.55pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt;" valign="top" width="130"><strong>auto</strong></td> <td style="width: 363.05pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top" width="484">Port pracujący w tym trybie samodzielnie nie inicjuje łącza, kanał zostaje utworzony pasywnie na zainicjowaną konfigurację.</td> </tr> <tr> <td style="width: 97.55pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt;" valign="top" width="130"><strong>desirable</strong></td> <td style="width: 363.05pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top" width="484">Port pracujący w trybie desirable aktywnie negocjuje utworzenie kanału.</td> </tr> <tr> <td colspan="2" style="width: 460.6pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt;" valign="top" width="614"><strong>Protok&oacute;ł LACP</strong></td> </tr> <tr> <td style="width: 97.55pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt;" valign="top" width="130"><strong>passive</strong></td> <td style="width: 363.05pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top" width="484">Port w spos&oacute;b pasywny uczestniczy w procesie tworzenia łącza, negocjacja w tym trybie nie jest inicjonowana.</td> </tr> <tr> <td style="width: 97.55pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt;" valign="top" width="130"><strong>active</strong></td> <td style="width: 363.05pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top" width="484">Port pracujący w trybie active aktywnie negocjuje utworzenie kanału.</td> </tr> </tbody> </table> <p style="text-align: center;">&nbsp;</p> <p>Dociekliwy Czytelnik za pewnie zapyta - Kt&oacute;ry protok&oacute;ł wybrać? Jeśli masz do dyspozycji urządzenia firmy CISCO możesz postawić na protok&oacute;ł PAgP choć warto mieć na uwadze, że co nowsze urządzenia sieciowe tej firmy wsparcia dla tego rozwiązania są już pozbawione a zaś te starsze protokołu LACP nie obsługują. Jeśli korzystasz z urządzeń r&oacute;żnych producent&oacute;w to wyboru nie masz i musisz zdecydować się na LACP.</p> <p>&nbsp;</p> <p>Na koniec jeszcze og&oacute;lna uwaga odnosząca się do konfiguracji interfejs&oacute;w fizycznych, kt&oacute;re będą wchodzić w skład łącza EtherChannel. Interfejsy mogą być skonfigurowane w trybie <strong>trunk</strong> lub jako <strong>access</strong>. Dodatkowo trzeba zadbać aby interfejsy fizyczne tworzące łącze miały konfigurację zgodną co do <strong>szybkości interfejsu</strong> oraz <strong>duplexu</strong>.</p> <p>&nbsp;</p> <p>Połączenie logiczne działa tak długo jak długo aktywne jest przynajmniej jedno połączenie fizyczne.</p> <p>&nbsp;</p> <p>W trakcie opisu często będą pojawiać się terminy <strong>EtherChannel </strong>oraz <strong>Port Channel</strong>. W niekt&oacute;rej literaturze zdarza się, że terminy te są używane zamiennie choć tak naprawdę określają dwa r&oacute;żne pojęcia. Tak więc mianem <strong>EtherChannel</strong> będziemy określać logiczny kanał utworzony pomiędzy przełącznikami zaś <strong>Port Chanel</strong> jest to <strong>interfejs</strong> powstały na obu końcach przełącznik&oacute;w tworzących kanał <strong>EtherChanel</strong> w skład kt&oacute;rego wchodzą interfejsy fizyczne wykorzystane do utworzenia skonsolidowanego łącza.</p> <p>&nbsp;</p> <p>Nasze rozważania na temat konfiguracji EtherChannel przeprowadzimy z wykorzystaniem topologii zaprezentowanej na rysunku poniżej. Jak widać om&oacute;wimy każdą z metod utworzenia kanału EtherChannel.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/etherchannel/image1.png" alt="image1" width="700" height="348" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Lecz zanim przejdziemy dalej jeszcze taka kr&oacute;tka dygresja na temat całego mechanizmu.</p> <p>&nbsp;</p> <p>Wykonanie połączeń pomiędzy przełącznikami jak w zaprezentowanej topologii powyżej nie pozostanie bez konsekwencji gdyż takie połączenie może doprowadzić do powstania pętli czego skutkiem będzie przesyłanie ramek w nieskończoność. Ramki te skutecznie spowodują zablokowanie normalnego ruchu sieciowego (należy pamiętać, że w przypadku warstwy drugiej nie ma zabezpieczeń takich jak występują w warstwie trzeciej - pole TTL). Brak zabezpieczeń wymusiło wprowadzenie innych mechanizm&oacute;w, kt&oacute;rych zadaniem jest dbanie o prawidłowość funkcjonowania sieci. Takim mechanizmem jest m.in. protok&oacute;ł STP. Aby nie wchodzić zbytnio w szczeg&oacute;ły i spos&oacute;b działania (protok&oacute;ł ten opisze wkr&oacute;tce) to dodam tylko, iż zadaniem protokołu jest takie zarządzanie łączami poprzez ich włączanie i wyłączanie aby nie doprowadzić do powstania pętli. Oczywiście topologie podobne do tej zaprezentowanej powyżej stosuje się aby zapewnić redundancję tak by zabezpieczyć się przed ewentualną awarią łącza a wspomniany protok&oacute;ł STP dba o prawidłowe działanie sieci.</p> <p>&nbsp;</p> <p>Aby sprawdzić konfigurację sieci z punktu widzenia protokołu STP należy wydać polecenie: <strong>show spanning-tree </strong>Po wydaniu polecenia na switchu SW2 i analizie uzyskanych wynik&oacute;w dochodzimy do wniosku iż przełącznik ten pełni funkcję <strong>root bridge</strong> (zarządza działaniem mechanizmu STP) i dlatego wszystkie interfejsy przełącznika mogą przekazywać dane.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/etherchannel/image2.png" alt="image2" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Wydanie tego samego polecenia np. na przełączniku SW1 dostarcza nam już inne informacje. Między innymi dowiadujemy się, że interfejs Fa0/2 jest w stanie blokowania. Interfejs ten tworzy połączenie z przełącznikiem SW2. Z przełącznikiem tym komunikacja odbywa się z wykorzystaniem interfejsu Fa0/1. Interfejs Fa0/2 przejdzie w stan przekazywania pakiet&oacute;w w momencie awarii łącza korzystającego z interfejsu Fa0/1</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/etherchannel/image3.png" alt="image3" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Całe te odejście od tematu wpisu doprowadza nas do następującego wniosku - a mianowicie - pomimo zastosowania dodatkowych połączeń pomiędzy przełącznikami to i tak na wskutek działania protokołu STP do komunikacji jest wykorzystywane pojedyncze łącze. Drugie łącze wchodzi do gry tylko w przypadku awarii łącza podstawowego. Stwierdzenie te pozwala nam wysnuć drugi wniosek: czemu by nie wykorzystać zestawione połączenie w bardziej efektywny spos&oacute;b skoro i tak jest nie użytkowane. I w tym momencie do gry wchodzi mechanizm Etherchannel - skoro mamy zapewniona komunikację z danym przełącznikiem poprzez r&oacute;żne interfejsy połączmy je w wsp&oacute;lny kanał transmisji. Fakt poszerzenia dostępnego pasma na pewno lepiej wpłynie na działanie naszej sieci niż utrzymywanie nieczynnego łącza.</p> <p>&nbsp;</p> <p>Dygresje tą pozostawiam do przemyśleń własnych a tym czasem przejdźmy dalej.</p> <p>&nbsp;</p> <p><strong>Przełącznik SW1-SW3 &ndash; EtherChannel &ndash; protok&oacute;ł PAgP</strong></p> <p>&nbsp;</p> <p>Rozpoczynamy od agregacji łącz pomiędzy przełącznikami <strong>SW1</strong> a <strong>SW3</strong>. Zestawienie połączenia będzie realizowane z wykorzystaniem interfejs&oacute;w f0/3 oraz f0/4 przełącznika SW1 oraz tych samych port&oacute;w f0/3 oraz f0/4 przełącznika SW3. Agregacje łączy wykonamy z wykorzystaniem protokołu PAgP.</p> <p>&nbsp;</p> <p>Aby utworzyć kanał EtherChannel w pierwszej kolejności przechodzimy do trybu konfiguracji port&oacute;w. Aby wydawane polecenia dotyczyły zar&oacute;wno portu f0/3 oraz f0/4 została wykorzystana opcja <strong>range</strong>. Aby utworzyć zagregowane łącze z wykorzystaniem protokołu PAgP należy wydać polecenie: <strong>channel-group &lt;numer_grupy&gt; mode desirable </strong>Numer grupy określamy indywidualnie ważne by numer ten był unikatowy w obrębie przełącznika. Oznacza to, że numer utworzonej grupy nie może zostać powt&oacute;rzony (wykorzystany dwukrotnie). Zakres wartości do wykorzystania od 1 do 64. Zgodność numeru grupy na przełącznikach tworzących skonsolidowane łącze nie jest wymagane, choć oczywiście zaleca się aby wartość przyznana grupie była taka sama na obu przełącznikach &ndash; takie podejście sprzyja przejrzystości konfiguracji. Wybranie trybu <strong>desirable</strong> spowoduje aktywne negocjowanie utworzenia kanału.</p> <p>&nbsp;</p> <p>Po wydaniu polecenia łącza wchodzą w skład nowego interfejsu logicznego: <strong>Port-channel 1</strong> (<strong>Po1</strong>)</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/etherchannel/image4.png" alt="image4" width="700" height="171" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Fakt utworzenia kanału EtherChannel możemy sprawdzić za pomocą komendy: <strong>show etherchannel</strong> Jak widać poniżej kanał LAG o identyfikatorze 1 korzystający z protokołu PAgP został utworzony.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/etherchannel/image5.png" alt="image5" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Fakt utworzenia kanału nie gwarantuje nam, że zbudowane w ten spos&oacute;b łącze jest w stanie przekazywać ruch sieciowy. Aby sprawdzić w jakim stanie jest łącze EtherChannel można wykorzystać polecenie: <strong>show etherchannel summary</strong> Po wydaniu komendy w formie tabeli zostaną wyświetlone wszystkie interfejsy Port-Channel wraz z informacją o stanie interfejsu, sposobie utworzenia oraz interfejsach fizycznych tworzących grupę LAG.</p> <p>&nbsp;</p> <p>Analiza uzyskanych danych wskazuje, że interfejs <strong>Po1</strong> jest wyłączony (symbol D &ndash; down).</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/etherchannel/image6.png" alt="image6" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Jeszcze więcej informacji na temat utworzonego kanału oraz port&oacute;w wchodzących w jego skład poznamy dzięki poleceniu: <strong>show etherchannel detail</strong> (polecenie om&oacute;wimy trochę szerzej za chwilę, gdy uda nam się utworzyć działający kanał EtherChannel).</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/etherchannel/image7.png" alt="image7" width="700" height="751" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Status interfejsu <strong>Po1</strong> możemy r&oacute;wnież sprawdzić za pomocą polecenia: <strong>show ip interfeces brief</strong> Jak można stwierdzić interfejs jest w stanie <strong>down</strong> (kanał nie został jeszcze skonfigurowany po drugiej stronie &ndash; switch SW3).</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/etherchannel/image8.png" alt="image8" width="700" height="548" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Aby łącze EtherChannel mogło przekazywać ruch sieciowy należy je r&oacute;wnież skonfigurować na przełączniku SW3. Podobnie jak to było w przypadku switcha SW1 do konfiguracji łącza wykorzystamy przełącznik <strong>range</strong>. Po określeniu interfejs&oacute;w, kt&oacute;re wejdą w skład grupy LAG (interfejs f0/3 oraz f0/4) wydajemy polecenie: <strong>channel-group 1 mode auto</strong> Po wydaniu komendy interfejs łącza <strong>Port-channel 1</strong> osiągnął status <strong>up</strong>. Oznacza to, że łącze LAG zostało włączone.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/etherchannel/image9.png" alt="image9" width="700" height="180" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Aby sprawdzić status kanału skorzystamy z znanego nam już polecenia: <strong>show etherchannel summary</strong> Po analizie uzyskanych wynik&oacute;w stwierdzamy, że interfejs <strong>Po1</strong> działa (flaga U &ndash; łącze w użyciu).</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/etherchannel/image10.png" alt="image10" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Jak już wiesz czytelniku jeszcze dokładniejsze wyniki stanu łącza oraz interfejs&oacute;w fizycznych uzyskamy po wydaniu komendy: <strong>show etherchannel detail </strong>Gdy łącze działa prawidłowo i interfejs jest aktywny w wynikach polecenia pojawi się informacja o interfejsie sąsiada. Jak widać poniżej lokalny port f0/3 przełącznika SW1 (sekcja Local information) jest połączony z portem f0/3 sąsiada czyli przełącznika SW3 (sekcja Partner&rsquo;s information).</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/etherchannel/image11.png" alt="image11" width="700" height="672" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Dodatkowo fakt włączenia interfejsu <strong>Po1</strong> można zweryfikować po wydaniu polecenia: <strong>show ip interface brief</strong></p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/etherchannel/image12.png" alt="image12" width="700" height="556" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Interfejs <strong>Po1</strong> będzie r&oacute;wnież uwzględniany przez protok&oacute;ł STP. Po sprawdzeniu stanu działania protokołu widać, że interfejsy fizyczne Fa0/3 oraz Fa0/4 zostały zastąpione interfejsem logicznym <strong>Po1</strong>.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/etherchannel/image13.png" alt="image13" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Konfigurację interfejsu fizycznego możemy dodatkowo zweryfikować za pomocą polecenia: <strong>show running-config interface &lt;nazwa_interfejsu&gt;</strong> - interfejs do utworzenia zagregowanego łącza wykorzystał protok&oacute;ł <strong>PAgP</strong>, tryb pracy portu <strong>desirable</strong></p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/etherchannel/image14.png" alt="image14" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>a także za pomocą komendy: <strong>show interfaces f0/3 switchport</strong> &ndash; interfejs f0/3 pracuje w trybie <strong>access</strong> i jest częścią puli interfejs&oacute;w fizycznych przynależnych do grupy LAG &ndash; <strong>Port-Channel Po1.</strong></p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/etherchannel/image15.png" alt="image15" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Opr&oacute;cz sprawdzenia informacji na temat interfejs&oacute;w przypisanych do kanału Etherchannel możemy dokonać r&oacute;wnież sprawdzenia ustawień utworzonego interfejsu logicznego Port-Channel 1. Sprawdzenia dokonujemy za pomocą polecenia: <strong>show interfaces port-channel &lt;numer_interfejsu&gt;</strong></p> <p>&nbsp;</p> <p>Przeglądając konfigurację portu warto zwr&oacute;cić uwagę na parametr <strong>BW</strong> (bandwidth &ndash; pasmo) &ndash; wartość ta odpowiada: <strong>ilość połączonych interfejs&oacute;w x pasmo każdego z nich</strong>. W przykładzie zostały użyte dwa łącza FastEthernet tak więc maksymalne pasmo dostępne dla interfejsu Po1 wynosi 200000 kb/s (2 interfejsy x 100000 kb/s) Dodatkowo w sekcji <strong>Members in this channel</strong> poznamy interfejsy tworzące dany kanał LAG.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/etherchannel/image16.png" alt="image16" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Łącze EtherChannel z wykorzystaniem protokołu PAgP pomiędzy przełącznikami zostało zestawione, tak więc do weryfikacji stanu łącza możemy r&oacute;wnież wykorzystać polecenia systemu IOS, kt&oacute;re są przynależne temu protokołowi.</p> <p>&nbsp;</p> <p>Jednym z poleceń jest: <strong>show pagp neighbor</strong> Po wydaniu komendy poznamy informacje o interfejsach sąsiada. Jak widać poniżej łącze LAG jest zestawione z interfejsami f0/3 oraz f0/4 przełącznika SW3 a interfejsy te pracują w trybie auto. Dodatkowo poznamy czas pracy interfejs&oacute;w.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/etherchannel/image17.png" alt="image17" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Aby poznać interfejsy lokalne przełącznika wykorzystujące protok&oacute;ł PAgP należy wykorzystać polecenie: <strong>show pagp internal</strong></p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/etherchannel/image18.png" alt="image18" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Informacje o stanie wymienianych informacji PAGP poznamy po wydaniu polecenia: <strong>show pagp counters</strong></p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/etherchannel/image19.png" alt="image19" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Ewentualne problemy z kanałem EtherChannel, kt&oacute;ry jest budowany za pomocą protokołu PAGP możemy rozwiązać włączając proces debugowania tego protokołu. Debugowanie uruchomimy za pomocą komendy: <strong>debug pagp &lt;opcja&gt;</strong> Poniżej na zrzucie włączony proces debugowania zdarzeń (przełącznik SW1) protokołu PAGP oraz wynik informacji uzyskanych na skutek wyłączenia interfejs&oacute;w sąsiada tworzących łącze LAG.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/etherchannel/image20.png" alt="image20" width="700" height="200" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p><strong>Przełącznik SW1-SW2 &ndash; EtherChannel &ndash; protok&oacute;ł LACP</strong></p> <p>&nbsp;</p> <p>Po ustaleniu łącza EtherChannel pomiędzy przełącznikiem SW1 a SW3 przechodzimy do zestawienia kanału pomiędzy <strong>switchem SW1 </strong>a <strong>SW2.</strong> Lecz tym razem skorzystamy z <strong>protokołu LACP</strong>.</p> <p>&nbsp;</p> <p>Konfigurację rozpoczynamy od konfiguracji przełącznika SW1. Kanał zostanie utworzony z wykorzystaniem interfejs&oacute;w f0/1 oraz f0/2 (interfejsy są tożsame z tymi użytymi na przełączniku SW2). Tak samo jak w przypadku PAgP konfigurację przeprowadzamy w trybie konfiguracji interfejsu. Interfejsy przełącznika SW1 ustawiamy do pracy w trybie <strong>active</strong> (aktywne negocjowanie utworzenia kanału). Numerowi tworzonej grupy została przypisana wartość 2.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/etherchannel/image21.png" alt="image21" width="700" height="189" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po wydaniu polecenia: <strong>channel-group 2 mode active</strong> został utworzony interfejs <strong>Port Channel Po2</strong>, w skład kt&oacute;rego weszły interfejsy fizyczne f0/1 oraz f0/2. Stan interfejsu Po2 możemy sprawdzić wydając komendę: <strong>show etherchannel summary</strong>. Interfejs jest w stanie <strong>down </strong>(flaga D).</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/etherchannel/image22.png" alt="image22" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Dokładniejsze informacje o stanie łącza uzyskamy wydając polecenie: <strong>show etherchannel detail</strong></p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/etherchannel/image23.png" alt="image23" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Aby kanał EtherChannel został utworzony musimy skonfigurować przełącznik SW2. Na przełączniku tym w trybie konfiguracji interfejs&oacute;w wydajemy polecenie: <strong>channel-group 2 mode passive</strong>. Wydanie komendy powoduje ustawienie port&oacute;w fizycznych w tryb pasywnej negocjacji. Oznacz to, że zagregowane łącze powstanie gdy poprosi o to sąsiad. Porty przełącznika SW1 zostały skonfigurowane tak aby inicjować utworzenie kanału tak więc łącze EtherChannel pomiędzy przełącznikami zostaje utworzone &ndash; <strong>interfejs Port-channel 2</strong> zmienia stan na <strong>up</strong>.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/etherchannel/image24.png" alt="image24" width="700" height="201" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Łącze LAG zostało skonfigurowane za pomocą protokołu LACP a og&oacute;lny proces tworzenia łącza przebiegał następująco:</p> <p>&nbsp;</p> <ul> <li style="padding-left: 60px;">interfejsy skonfigurowane za pomocą flagi <strong>active</strong> wygenerowały na swoich łączach <strong>ramki LACPDU</strong> (ang. LACP Data Unit) - przełącznik SW1</li> <li style="padding-left: 60px;">sąsiad po odebraniu <strong>ramki LACPDU</strong> (gdy jest skonfigurowany do korzystania z protokołu LACP) odpowiedział na zapytanie wysyłając odpowiedź &ndash; przełącznik SW2,</li> <li style="padding-left: 60px;">przełączniki utworzyły <strong>dynamiczną grupę LAG</strong> &ndash; interfejs Port-Channel Po2</li> </ul> <p>&nbsp;</p> <p>Stan łącza możemy sprawdzić za pomocą znanego nam polecenia: <strong>show etherchannel summary</strong>. Interfejs Po2 działa prawidłowo (flaga U).</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/etherchannel/image25.png" alt="image25" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Dokładny stan port&oacute;w możemy skontrolować za pomocą już r&oacute;wnież wykorzystywanego polecenia: <strong>show etherchannel detail</strong></p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/etherchannel/image26.png" alt="image26" width="700" height="571" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>Dokładniejszy opis uzyskanych informacji</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">1 - informacja o grupie LAG,</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">2 - użyty protok&oacute;ł,</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">3 - stan portu,</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">4 - numer grupy, oraz identyfikator interfejsu Port-channel,</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">5 - informacja o interfejsie lokalnym tworzącym kanał EtherChannel m.in. stan portu, priorytet</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">6 - informacja o interfejsie sąsiada tworzącym kanał EtherChannel m.in. stan portu, priorytet, czas przyłączenia oraz ID.</p> <p>&nbsp;</p> <p>Na przełączniku SW2 wydano dodatkowo dwa polecenia tak aby doprecyzować konfigurację związaną z protokołem LACP.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/etherchannel/image27.png" alt="image27" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Polecenie: <strong>lacp system-priority &lt;priorytet&gt;</strong> (punkt 1) jest odpowiedzialne za zdefiniowanie numeru priorytetu systemu LACP. Polecenie wydane w trybie konfiguracji globalnej odpowiada za ustalenie, kt&oacute;ry z przełącznik&oacute;w ma pierwszeństwo w podjęciu decyzji o utworzeniu kanału EtherChannel. Zasada jaka obowiązuje - <strong>niższy priorytet ma pierwszeństwo</strong>. W przypadku pozostawienia domyślnych wartości, decyduje adres MAC - <strong>niższy adres ma pierwszeństwo</strong>. Wartość priorytetu może być ustalona od 1 do 65535 (domyślnie 32768).</p> <p>&nbsp;</p> <p>Komenda: <strong>lacp port-priority &lt;priorytet&gt;</strong> (punkt 2) jest wydawana w trybie konfiguracji interfejsu a odpowiada za przydzielenie priorytetu interfejsom. Kanał LAG może maksymalnie wykorzystywać 8 interfejs&oacute;w fizycznych lecz przydzielonych łączy do kanału może być więcej. Poprzez manipulację parametrem <strong>lacp port-priority</strong> definiujemy, kt&oacute;re interfejsy mają być aktywne a kt&oacute;re mają być użyte w przypadku awarii. Wartość priorytetu może być ustalona od 1 do 65535 (domyślnie 32768).</p> <p>&nbsp;</p> <p>Wartości ustalonych priorytet&oacute;w możemy odnaleźć w wynikach już zaprezentowanych poleceń (lub tych, kt&oacute;re będą przedstawione za chwilę). Na przykład wartość <strong>lacp port-priority </strong>poznamy po wydaniu komendy: <strong>show etherchannel detail </strong>zaś wartość <strong>lacp system-priority </strong>po wydaniu komendy: <strong>show lacp sys-id</strong></p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/etherchannel/image28.png" alt="image28" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Aby poznać protokoły, kt&oacute;re zostały wykorzystane do utworzenia zagregowanych łączy wraz z informacją o grupie wydaj polecenie: <strong>show etherchannel protocol</strong> (na switchu SW1 są uruchomione dwa protokoły PAgP oraz LACP przy czym pierwszy z nich obsługuje grupę 1 a drugi grupę 2).</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/etherchannel/image29.png" alt="image29" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Tak jak to miało miejsce w przypadku protokołu PAgP tak i w przypadku korzystania z protokołu LACP stan utworzonego łącza można skontrolować za pomocą poleceń przynależnych temu protokołowi.</p> <p>&nbsp;</p> <p>Pierwsze polecenie: <strong>show lacp neighbor</strong> pokarze status port&oacute;w sąsiada. Jak widać poniżej porty f0/1 oraz f0/2 przełącznika SW2 (sąsiad przełącznika SW1) działają prawidłowo. Porty te zostały skonfigurowane do pracy w trybie <strong>pasive</strong> (flaga P).</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/etherchannel/image30.png" alt="image30" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Stan interfejs&oacute;w lokalnych poznasz za pomocą komendy: <strong>show lacp internal</strong> (grupę LAG o identyfikatorze 2 tworzą łącza f0/1 oraz f0/2, interfejsy są skonfigurowane do pracy w trybie <strong>active</strong> - flaga A)</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/etherchannel/image31.png" alt="image31" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Stan wymiany ramek pomiędzy przełącznikami poznasz wydając komendę: <strong>show lacp counters</strong></p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/etherchannel/image32.png" alt="image32" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>I tak jak w przypadku protokołu PAgP problemy z działaniem kanału LAG zestawionego za pomocą LACP można pr&oacute;bować rozwiązać włączając proces debugowania protokołu. Poniżej na listeningu za pomocą polecenia: <strong>debug lacp event</strong> zostało włączone monitorowanie zdarzeń, kt&oacute;re dotyczą działania protokołu LACP - interfejs Port-Channel2 przestał działać (pow&oacute;d - wyłączenie interfejs&oacute;w sąsiada) by ponownie wr&oacute;ć do normalnego stanu pracy.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/etherchannel/image33.png" alt="image33" width="700" height="199" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Oczywiście tak jak w przypadku protokołu PAgP stan konfiguracji protokołu LACP w kontekście działania mechanizmu STP poznamy wydając polecenie: <strong>show spanning-tree</strong> Interfejsy F0/1 i F0/2 zostały zastąpione interfejsem logicznym Po2</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/etherchannel/image34.png" alt="image34" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p><strong>Przełącznik SW2-SW3 &ndash; EtherChannel &ndash; &bdquo;mode on&rdquo;</strong></p> <p>&nbsp;</p> <p>Kanały EtherChannel na łączach pomiędzy przełącznikami SW1-SW3 oraz SW1-SW2 zostały utworzone dynamicznie z wykorzystaniem protokoł&oacute;w PAgP oraz LACP. Do om&oacute;wienia został nam spos&oacute;b trzeci a mianowicie utworzenie łącza LAG w spos&oacute;b całkowicie statyczny. Zagregowane łącze utworzymy pomiędzy przełącznikami SW2 (interfejs f0/3 oraz f0/4) oraz SW3 (interfejs f0/1 oraz f0/2).</p> <p>&nbsp;</p> <p>Rozpoczynamy od konfiguracji switcha SW2.</p> <p>&nbsp;</p> <p>Aby zestawić kanał za pomocą flagi <strong>range</strong> określamy grupę interfejs&oacute;w co do kt&oacute;rych będzie przeprowadzana konfiguracja a następnie za pomocą komendy: <strong>channel-group 3 mode on </strong>zostaje utworzone zagregowane łącze. Jak widać poniżej w przeciwieństwie do dw&oacute;ch poprzednich metod interfejs logiczny <strong>Port-channel 3</strong> od razu jest w stanie <strong>up</strong>.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/etherchannel/image35.png" alt="image35" width="700" height="146" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Informację o działającym kanale EtherChannel potwierdzimy po wydaniu polecenia: <strong>show etherchannel summary</strong> (interfejs Po3 działa &ndash; flaga U, został utworzony ręcznie &ndash; brak informacji o użyciu protokołu).</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/etherchannel/image36.png" alt="image36" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Dodatkowo potwierdzenie utworzenia kanału LAG w trybie <strong>mode on</strong> możemy zweryfikować za pomocą polecenia: <strong>show etherchannel &lt;nr_interfejsu&gt; protocol</strong> Jak można stwierdzić po poniższym zrzucie interfejs został skonfigurowany z wykorzystaniem trybu ręcznego &ndash; <strong>mode on</strong>.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/etherchannel/image37.png" alt="image37" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Jeszcze jednym poleceniem, kt&oacute;re r&oacute;wnież pomoże nam w zebraniu informacji o utworzonych łączach EtherChannel jest komenda: <strong>show etherchannel &lt;id_portu&gt; port-channel</strong> Opr&oacute;cz podstawowych danych o interfejsie uzyskamy r&oacute;wnież informację o interfejsach fizycznych budujących dany kanał.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/etherchannel/image38.png" alt="image38" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Oczywiście polecenia te r&oacute;wnież można używać w kontekście łączy zestawionych w spos&oacute;b dynamiczny.</p> <p>&nbsp;</p> <p>Interfejs Po3 pomimo tego, że jest w stanie up (przełącznik SW2) nie działa jeszcze prawidłowo gdyż nie został skonfigurowany jego sąsiad. Aby kanał EtherChannel m&oacute;gł zacząć przekazywać ruch sieciowy należy przeprowadzić konfigurację na przełączniku SW3. Konfiguracja przebiega analogicznie jak w przypadku switcha SW2.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/etherchannel/image39.png" alt="image39" width="700" height="147" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Łącze EtherChannel w trybie ręcznym zostało utworzone.</p> <p>&nbsp;</p> <p>O dodatkowych sposobach weryfikacji utworzonych kanał&oacute;w jeszcze parę sł&oacute;w za chwilkę.</p> <p>&nbsp;</p> <p>Użycie agregacji łączy może dać wrażenie, że jest to dobry spos&oacute;b na zwiększenie og&oacute;lnej przepustowości łącza w sytuacjach w kt&oacute;rych jest to konieczne. W pewnych sytuacjach rozumowanie takie będzie jak najbardziej prawidłowe i rzeczywiście uzyskamy zwiększenie dostępnego pasma łącza lecz może r&oacute;wnież zdarzyć się tak, że pomimo prawidłowej konfiguracji kanału EtherChannel i zwiększenia dostępnego pasma łącza nadal będziemy mieć problem z uzyskaniem pożądanej prędkości przesyłania pakiet&oacute;w gwarantującej prawidłowe funkcjonowanie naszej sieci.</p> <p>&nbsp;</p> <p>Więc rodzi się pytanie &ndash; Od czego stan taki zależy? I dlaczego tak się dzieje, że w jednym przypadku decyzja o konfiguracji kanału LAG będzie strzałem w dziesiątke zaś w drugim strzałem w płot? Odpowiedź na to pytanie nie jest sprawą prostą a już na pewno pomimo poznania odpowiedzi nie rozwiążemy problem&oacute;w we wszystkich sytuacjach.</p> <p>&nbsp;</p> <p>Aby m&oacute;c w spos&oacute;b efektywny wykorzystać mechanizm agregacji kanał&oacute;w trzeba uzmysłowić sobie w jaki spos&oacute;b jest realizowana funkcja rozłożenia obciążenia w kanale EtherChannel na poszczeg&oacute;lne interfejsy fizyczne.</p> <p>&nbsp;</p> <p>Działanie algorytmu, kt&oacute;ry podejmuje decyzję o przesłaniu danych poprzez poszczeg&oacute;lny interfejs fizyczny polega na przyporządkowaniu interfejsowi liczby z zakresu od 0 do 7. Oznacza to, że w zależności od liczby łączy fizycznych budujących kanał LAG, interfejsowi będzie przyporządkowana jedna wartość bądź więcej. Poniżej na rysunku zaprezentowano rozłożenie przydzielania liczby wartości w zależności od liczby interfejs&oacute;w w kanale EtherChannel.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/etherchannel/image40.png" alt="image40" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>lub może w bardziej obrazowy spos&oacute;b w przeliczeniu na procenty</p> <p><img src="http://slow7.pl/images/stories/siec/etherchannel/image41.png" alt="image41" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Jak widać najkorzystniej r&oacute;wnoważenie obciążenia przebiega w przypadku wyboru kanału EtherChannel składającego się z 8, 4 i 2 łączy fizycznych gdyż w tych przypadkach łącza są obciążone r&oacute;wnomiernie. W pozostałych zaś przypadkach ruch sieciowy nie rozkłada się w r&oacute;wny spos&oacute;b na wszystkie interfejsy fizyczne. Jak już wspomniano jest to spowodowane tym, że niekt&oacute;rym interfejsom zostaje przypisana większa liczba wartości niż pozostałym a co za tym idzie jest wyższe prawdopodobieństwo, że na skutek działania algorytmu decydującego o trasie przesyłu danych, łącze te zostanie wybrane chętniej. Na przykład w sytuacji w kt&oacute;rej kanał EtherChannel tworzy pięć łączy, trzem zostaną przypisane dwie wartości zaś dw&oacute;m pozostałym tylko jedna wartość. Oznacza to, że trzy interfejsy będą wykorzystywane w większym stopniu niż dwa pozostałe.</p> <p>&nbsp;</p> <p>Domyślna metoda wyboru ścieżki transmisji dla pakiet&oacute;w opiera się przeważnie na docelowym adresie MAC choć w zależności od modelu przełącznika i wersji oprogramowania IOS będzie można zdecydować się na:</p> <ul> <li style="padding-left: 60px;">źr&oacute;dłowy adres IP (src_ip_addr),</li> <li style="padding-left: 60px;">docelowy adres IP (dest_ip_addr)</li> <li style="padding-left: 60px;">źr&oacute;dłowy i docelowy adres IP (src-dst-ip)</li> <li style="padding-left: 60px;">źr&oacute;dłowy adres MAC (src_mac_addr)</li> <li style="padding-left: 60px;">docelowy adres MAC (dest_mac_addr)</li> <li style="padding-left: 60px;">źr&oacute;dłowy i docelowy adres MAC (src-dst-mac)</li> <li style="padding-left: 60px;">port źr&oacute;dłowy (src_port)</li> <li style="padding-left: 60px;">port docelowy (dest_port)</li> <li style="padding-left: 60px;">port źr&oacute;dłowy i docelowy (src-dst-port)</li> </ul> <p>&nbsp;</p> <p>Aby bardziej zrozumieć mechanizm rozłożenia obciążenia w kanale EtherChannel przeanalizujmy sytuacje zaprezentowaną na rysunku poniżej. Grupa użytkownik&oacute;w (po lewej) aby uzyskać dostęp do usług musi skontaktować się z grupą serwer&oacute;w (po prawej). Zał&oacute;żmy w naszym przykładzie, że najbardziej obciążonym serwerem jest serwer plik&oacute;w, kt&oacute;ry pochłania 60% przepustowości łącza. Ruch sieciowy jest przekazywany poprzez dwa przełączniki pomiędzy, kt&oacute;rymi zestawiono łącze EtherChannel zbudowane z 4 interfejs&oacute;w FastEthernet. Mogłoby by się wydawać, że nie powinno być problemu z przepustowością łącza gdyż zestawiony kanał pozwala nam w jedną stronę wysłać dane z prędkością 400 Mb/s co w przeliczeniu na serwer plik&oacute;w daje nam 240 Mb/s. Niestety zastosowanie domyślnej konfiguracji (algorytm oparty na docelowym adresie MAC) spowoduje, że pomimo zestawienia łącza LAG wymagana przepustowość łącza nie zostanie osiągnięta. Stanie się tak ponieważ w kanale EtherChannel ruch do serwera plik&oacute;w w przypadku wyboru metody opartej na docelowym adresie MAC będzie przekazywany tylko poprzez jedno wybrane łącze. Zaś ruch sieciowy do innych serwer&oacute;w będzie przekazywany przez odrębne łącza w skonfigurowanej wiązce EtherChannel. Tak więc na przełączniku SW1 bardziej trafioną metodą wyboru ścieżki przesyłu danych będzie metoda bazująca np. na źr&oacute;dłowym adresie MAC &ndash; ruch od host&oacute;w będzie rozkładany na poszczeg&oacute;lne interfejsy. Na switchu SW2 pozostawienie domyślnej konfiguracji da pożądany efekt rozłożenia ruchu sieciowego na wszystkie łącza fizyczne gdyż przełącznik SW2 ruch pakiet&oacute;w od strony serwer&oacute;w w kierunku host&oacute;w będzie rozkładał na poszczeg&oacute;lne interfejsy wchodzące w skład zbudowanego łącza LAG. Zmiana na metodę bazującą na źr&oacute;dłowym adresie MAC spowoduje, że pakiety od serwera plik&oacute;w zostaną przesłane jednym i tym samym łączem czyli nasz problem nie zostaje rozwiązany.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/etherchannel/image42.png" alt="image42" width="700" height="291" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Aby na przełączniku sprawdzić dostępne metody działania algorytmu wyboru ścieżki należy wydać polecenie: <strong>port-channel load-balance ?</strong></p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/etherchannel/image43.png" alt="image43" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Zmiany dokonujemy poprzez wybranie odpowiedniej flagi z dostępnych. Np. zmiana ustawień na metodę bazującą na źr&oacute;dłowych adresach MAC dokonamy za pomocą polecenia:<strong> port-channel load-balance src-mac </strong> Polecenie wydajemy w trybie konfiguracji globalnej co oznacza, że wybrana metoda będzie stosowana do wszystkich port&oacute;w przełącznika skonfigurowanych w ramach kanału EtherChannel.</p> <p>&nbsp;</p> <p>Weryfikację ustawień dokonamy za pomocą komendy: <strong>show etherchannel load-balance</strong></p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/etherchannel/image44.png" alt="image44" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Podczas pracy skonfigurowanego łącza EtherChannel warto kontrolować, kt&oacute;re z łączy są wykorzystywane najintensywniej. Og&oacute;lne pojęcie o użyciu łącza poznamy odszukując w wynikach wydawanych poleceń wartości Load. Parametr ten jest uwzględniany np. w poleceniach: <strong>show etherchannel &lt;interfejs&gt; port-channel</strong> czy <strong>show etherchannel detail</strong></p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/etherchannel/image45.png" alt="image45" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Aby poznać jaką decyzję podejmie przełącznik w wyborze interfejsu przez, kt&oacute;ry zostanie przekazany ruch sieciowy można posiłkować się poleceniem: <strong>test etherchannel load-balance interface port-channel &lt;numer_interfejsu&gt; mac &lt;adres_MAC_źr&oacute;dłowy&gt; &lt;adres_MAC_docelowy&gt; </strong></p> <p>&nbsp;</p> <p>Wydanie przykładowego polecenia na przełączniku SW2: <strong>test etherchannel load-balance interface port-channel 2 mac 00d0.c0d7.2dd4 0002.fc26.2494</strong> spowoduje wykonie testu, kt&oacute;rego efektem będzie informacja o wyborze danego interfejsu - ramka zostanie wysłana z wykorzystaniem interfejsu Fa0/1</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/etherchannel/image46.png" alt="image46" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>I tak już na zakończenie jeszcze jedna uwaga na konfigurację kanału EtherChannel w środowiskach w kt&oacute;rych korzysta się z sieci VLAN.</p> <p>&nbsp;</p> <p>Aby pokazać problem na przykładzie przyjęto następującą topologię sieciową. Pomiędzy dwoma przełącznikami SW1 oraz SW3 skonfigurowano kanał EtherChannel za pomocą protokołu LACP. Kanałowi LAG został przypisany identyfikator 2 (interfejs Port-Channel 2) Do każdego z przełącznik&oacute;w został podłączony host, kt&oacute;ry należy do sieci VLAN 10.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/etherchannel/image47.png" alt="image47" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>W tak zbudowanej sieci sprawdźmy czy <strong>Host1</strong> potrafi nawiązać poprawną komunikację z <strong>Hostem2</strong>. Jak widać poniżej test ping kończy się <strong>niepowodzeniem</strong>.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/etherchannel/image48.png" alt="image48" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Tak więc rodzi się pytanie - Co jest powodem braku komunikacji pomiędzy komputerami? Aby odpowiedzieć na postawione pytanie należy sprawdzić ustawienia interfejsu logicznego Po2. Ustawienia zweryfikujemy za pomocą komendy: <strong>show interfaces Po2 switchport</strong> Czytelnik mający styczność z sieciami VLAN pewnie już wie w kt&oacute;rym kierunku należy p&oacute;jść by problem rozwiązać dla tych zaś kt&oacute;rzy z tematyką nie do końca są obeznani już śpieszę z odpowiedzią. Winą braku łączności pomiędzy hostami jest spos&oacute;b konfiguracji interfejs&oacute;w wchodzących w skład kanału LAG. Interfejsy te pracują w trybie <strong>access</strong> co oznacza, że ruch sieciowy będzie przekazywany tylko pomiędzy urządzeniami przypisanymi do domyślnej sieci VLAN1. Skoro interfejsy fizyczne pracują w trybie <strong>access</strong> interfejs logiczny <strong>Po2</strong> odziedziczy to ustawienie i r&oacute;wnież w tym trybie będzie pracował.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/etherchannel/image49.png" alt="image49" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Aby m&oacute;c przesłać ruch sieciowy należący do r&oacute;żnych VLAN-&oacute;w kanał EtherChannel pomiędzy przełącznikami musi pracować w <strong>trybie magistrali</strong> bądź m&oacute;wiąc inaczej w <strong>trybie trunk</strong>.</p> <p>&nbsp;</p> <p>Aby poprawić konfigurację musimy zmienić tryb pracy interfejs&oacute;w fizycznych. Konfigurację rozpoczniemy od przełącznika SW1. W tym celu wydajmy polecenie: <strong>interface range f0/3-4</strong> (punkt 1) tak by przeprowadzić za jednym zamachem konfigurację wszystkich interfejs&oacute;w fizycznych budujących łącze LAG. Aby zmienić tryb pracy interfejsu na trunk należy wydać polecenie: <strong>switchport mode trunk</strong> (punkt 2) Niestety wydanie polecenia kończy się <strong>niepowodzeniem</strong> gdyż domyślnie jest ustawiona opcja <strong>Auto</strong> - przełącznik ma możliwość prowadzenia komunikacji poprzez łącze trunk z wykorzystaniem enkapsulacji bazującej na protokole <strong>802.1Q</strong> bądź <strong>ISL</strong>. Tak wiec by wydanie komendy zakończyło się sukcesem należy zdecydować się na jeden z protokoł&oacute;w. Protok&oacute;ł ISL jest rozwiązaniem starszym więc nie pozostaje nam nic innego jak zdecydowanie się na protok&oacute;ł <strong>802.1Q.</strong> Aby łącze trunk mogło prowadzić enkapsulację pakiet&oacute;w z wykorzystaniem protokołu 802.1Q należy wydać polecenie: <strong>switchport trunk encapsulation dot1q </strong>(punkt 3). Po wydaniu polecenia, ponowna pr&oacute;ba ustawienia pracy łącza na trunk kończy się <strong>sukcesem</strong> (punkt 4). Wydanie wszystkich tych poleceń spowoduje wyłączenie i ponowne włączenie interfejs&oacute;w fizycznych oraz powiązanego z tymi interfejsami łącza Po2.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/etherchannel/image50.png" alt="image50" width="700" height="210" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Proces konfiguracji możemy r&oacute;wnież obserwować na switchu SW3.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/etherchannel/image51.png" alt="image51" width="700" height="140" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Uważnego czytelnika analizującego powyższe listeningi może zastanowić komunikat:<strong> Interface Port-channel2, changed state to up</strong> Bo czemu interfejs pracuje skoro zmiana trybu pracy interfejs&oacute;w została przeprowadzona tylko na przełączniku SW1? Odpowiedź jest dość prosta - O zmianę konfiguracji pozostałych interfejs&oacute;w (r&oacute;wnież przełącznika sąsiedniego) zadbał protok&oacute;ł LACP.</p> <p>&nbsp;</p> <p>Przeglądając stan konfiguracji portu Po2 na przełączniku SW1 dochodzimy do wniosku, iż pracuje on w trybie magistrali tak więc kanał ma możliwość przenoszenia ramek należących do r&oacute;żnych sieci VLAN.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/etherchannel/image52.png" alt="image52" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Podobne spostrzeżenia poczynimy po stronie przełącznika SW3. R&oacute;żnica w konfiguracji pomiędzy przełącznikami jest taka iż na przełączniku SW1 ustawienia zostały zdefiniowane przez administratora a na switchu SW3 na wskutek negocjacji.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/etherchannel/image53.png" alt="image53" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Ostatnim etapem jest sprawdzenie efekt&oacute;w przeprowadzonej konfiguracji. Tak więc sprawdźmy ponownie czy <strong>Host1</strong> uzyskał możliwość komunikacji z <strong>Hostem2</strong>. Przeprowadzona pr&oacute;ba ping kończy się sukcesem.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/etherchannel/image54.png" alt="image54" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>I to by było na tyle. Mam nadzieję, że po tej dawce informacji samodzielna konfiguracja kanału EtherChannel nie będzie żadnym problemem.</p> <p>&nbsp;</p> <hr /> <p><strong>BIBLOGRAFIA:</strong></p> <p>&nbsp;</p> <p><a href="https://www.freeccnaworkbook.com/workbooks/ccna/configuring-a-port-channel-interface">https://www.freeccnaworkbook.com/workbooks/ccna/configuring-a-port-channel-interface</a></p> <p><a href="http://ciscoiseasy.blogspot.com/2010/11/lesson-24-layer-2-etherchannel.html">http://ciscoiseasy.blogspot.com/2010/11/lesson-24-layer-2-etherchannel.html</a></p> <p><a href="http://www.dummies.com/how-to/content/etherchannel-configuration.html">http://www.dummies.com/how-to/content/etherchannel-configuration.html</a></p> <p><a href="http://www.cisco.com/c/en/us/support/docs/lan-switching/etherchannel/12023-4.html">http://www.cisco.com/c/en/us/support/docs/lan-switching/etherchannel/12023-4.html</a></p> <p><a href="http://packetpushers.net/understand-etherchannel-load-balancing-catalyst-switches/">http://packetpushers.net/understand-etherchannel-load-balancing-catalyst-switches/</a></p> <p><a href="http://www.firstdigest.com/2010/08/cisco-port-channel-load-balancing-explanation/">http://www.firstdigest.com/2010/08/cisco-port-channel-load-balancing-explanation/</a></p> <p><a href="http://www.cisco.com/c/en/us/support/docs/lan-switching/etherchannel/12023-4.html">http://www.cisco.com/c/en/us/support/docs/lan-switching/etherchannel/12023-4.html</a></p></div> <div class="K2FeedImage"><img src="http://slow7.pl/media/k2/items/cache/e7c0584255fa6f2981e510285a9e9e4f_S.jpg" alt="Co w sieci siedzi. Agregacja interfejsów przełącznika." /></div><div class="K2FeedIntroText"><p><strong>Agregacja łączy</strong> (ang. link aggregation) polega na połączeniu ze sobą wielu port&oacute;w fizycznych przełącznika w jedną logiczną całość. Dzięki takiemu połączeniu otrzymujemy grupę port&oacute;w przez, kt&oacute;re będą przesyłane dane przy czym od strony systemu IOS tak utworzona grupa będzie widoczna jako jeden port. Maksymalna liczba jednocześnie wykorzystywanych połączeń fizycznych, kt&oacute;re mogą uczestniczyć w agregacji wynosi 8.</p> </div><div class="K2FeedFullText"> <p>Dzięki połączeniu ze sobą port&oacute;w uzyskujemy:</p> <p>&nbsp;</p> <p style="padding-left: 60px;"><strong>zwiększona przepustowość łącza</strong> - wiele fizycznych łączy zagregowane w ramach jednej grupy poszerza dostępne pasmo. Oznacza to, że tworząc kanał EtherChannel prędkość utworzonego łącza jest sumą prędkości interfejs&oacute;w fizycznych tworzących ten kanał. Jeśli do konfiguracji kanału zostało użytych 6 interfejs&oacute;w FastEthernet łączna prędkość wyniesie 600 Mb/s. Założenie w swej koncepcji słuszne choć jak dowiesz się za chwilę nie oznacza to, że uzyskana rzeczywista prędkość przesyłu danych odpowiada zawsze przepustowość łącza.</p> <p style="padding-left: 60px;"><strong>rozłożenie obciążenia</strong> - prowadzona komunikacja jest rozkładana na szereg łączy. Przy czym na uwadze należy mieć fakt iż pojedyncza sesja jest prowadzona z wykorzystaniem tylko jednego łącza. Rozłożenie obciążenia w przypadku agregacji łącza nie można traktować jako spos&oacute;b przesłania pakiet&oacute;w tworzących jedną sesje poprzez r&oacute;żne fizyczne zagregowane łącza przełącznika. Wyobraź sobie Czytelniku autostradę, droga ta posiada szereg pas&oacute;w prowadzących w jedną stronę. Autostrada pomieści większą liczbę samochod&oacute;w lecz każdy z pojazd&oacute;w porusza się jednym pasem. Wracając do przykładu z agregacją 6 interfejs&oacute;w FastEthernet oznacza to, że pojedyncza sesja pomimo wykorzystania łącza o przepustowości 600 Mb/s będzie ograniczona do prędkości 100 Mb/s</p> <p style="padding-left: 60px;"><strong>większa dostępność oraz redundancja</strong> - awaria łącza przypisanego do grupy nie powoduje wyłączenia grupy, ruch sieciowy nadal będzie przekazywany.</p> <p>&nbsp;</p> <p>Opis agregacji łącza przedstawię na urządzeniach firmy Cisco. Agregacja w terminologii Cisco jest określana jako <strong>EtherChannel</strong> i jest sposobem budowania grupy łączy pomiędzy przełącznikami Cisco.</p> <p>EtherChannel bazuje na standardzie 802.3ad, kt&oacute;ry p&oacute;źniej został przemianowany na standard 802.1ax opisujący agregację łączy. Według tego standardu agregacja łączy jest opisywana jako (źr&oacute;dło: <a href="https://standards.ieee.org/findstds/standard/802.1AX-2014.html">https://standards.ieee.org/findstds/standard/802.1AX-2014.html</a>):</p> <p>&bdquo;Agregacja łączy umożliwia zagregowanie jednego łącza lub większej liczby łączy w celu utworzenia grupy agregacji łączy LAG (ang. link aggregation group) w taki spos&oacute;b, że klient MAC może traktować tę grupę, jakby była pojedynczym łączem.&rdquo;</p> <p>W przypadku urządzeń CISCO grupę LAG możemy utworzyć jednym z trzech sposob&oacute;w:</p> <p>&nbsp;</p> <p style="padding-left: 60px;"><strong>statyczny EtherChannel</strong> zwany też r&oacute;wnież jako <strong>mode on </strong>Spos&oacute;b ten bazuje na ręcznej konfiguracji grupy LAG,</p> <p style="padding-left: 60px;"><strong>dynamiczny EtherChannel</strong> - spos&oacute;b ten polega na wykorzystaniu jednego z dw&oacute;ch dostępnych protokoł&oacute;w pozwalających w spos&oacute;b całkowicie automatyczny na utworzenie grupy LAG. Protokoły odpowiedzialne za konsolidację port&oacute;w to <strong>LACP</strong> (ang. Link Aggregation Control Protocol) i <strong>PAgP</strong> (ang. Port Aggregation Protocol). Protok&oacute;ł PAgP jest autorskim rozwiązaniem firmy Cisco.</p> <p>&nbsp;</p> <p>Stosując <strong>metodę statyczną</strong> wymuszamy utworzenie kanału EtherChannel bez negocjacji (administrator konfigurację wykonuje samodzielnie) oznacza to, że żaden z protokoł&oacute;w nie jest wykorzystywany tak więc żadne pakiety nie są pomiędzy przełącznikami wymieniane. Wybranie tej metody spowoduje natychmiastowe utworzenie kanału nawet gdy w sąsiednim przełączniku interfejsy są skonfigurowane nieprawidłowo.</p> <p>&nbsp;</p> <p>W przypadku drugiego rozwiązania czyli <strong>dynamicznego tworzenia kanału</strong> jak już zostało wspomniane można wykorzystać jeden z protokoł&oacute;w - PAgP bądź LACP. Protokoły te dbają o prawidłową konfigurację tworzonego łącza. Użycie protokoł&oacute;w definiujemy w trybie konfiguracji interfejsu a do dyspozycji mamy następujące opcje:</p> <p style="text-align: center;">&nbsp;</p> <table border="1" style="border-collapse: collapse; margin-left: auto; margin-right: auto;" cellspacing="0" cellpadding="0"> <tbody> <tr> <td colspan="2" style="width: 460.6pt; border: 1pt solid windowtext; padding: 0cm 5.4pt;" valign="top" width="614"><strong>Protok&oacute;ł PAgP</strong></td> </tr> <tr> <td style="width: 97.55pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt;" valign="top" width="130"><strong>auto</strong></td> <td style="width: 363.05pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top" width="484">Port pracujący w tym trybie samodzielnie nie inicjuje łącza, kanał zostaje utworzony pasywnie na zainicjowaną konfigurację.</td> </tr> <tr> <td style="width: 97.55pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt;" valign="top" width="130"><strong>desirable</strong></td> <td style="width: 363.05pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top" width="484">Port pracujący w trybie desirable aktywnie negocjuje utworzenie kanału.</td> </tr> <tr> <td colspan="2" style="width: 460.6pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt;" valign="top" width="614"><strong>Protok&oacute;ł LACP</strong></td> </tr> <tr> <td style="width: 97.55pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt;" valign="top" width="130"><strong>passive</strong></td> <td style="width: 363.05pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top" width="484">Port w spos&oacute;b pasywny uczestniczy w procesie tworzenia łącza, negocjacja w tym trybie nie jest inicjonowana.</td> </tr> <tr> <td style="width: 97.55pt; border-width: medium 1pt 1pt; border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; padding: 0cm 5.4pt;" valign="top" width="130"><strong>active</strong></td> <td style="width: 363.05pt; border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; padding: 0cm 5.4pt;" valign="top" width="484">Port pracujący w trybie active aktywnie negocjuje utworzenie kanału.</td> </tr> </tbody> </table> <p style="text-align: center;">&nbsp;</p> <p>Dociekliwy Czytelnik za pewnie zapyta - Kt&oacute;ry protok&oacute;ł wybrać? Jeśli masz do dyspozycji urządzenia firmy CISCO możesz postawić na protok&oacute;ł PAgP choć warto mieć na uwadze, że co nowsze urządzenia sieciowe tej firmy wsparcia dla tego rozwiązania są już pozbawione a zaś te starsze protokołu LACP nie obsługują. Jeśli korzystasz z urządzeń r&oacute;żnych producent&oacute;w to wyboru nie masz i musisz zdecydować się na LACP.</p> <p>&nbsp;</p> <p>Na koniec jeszcze og&oacute;lna uwaga odnosząca się do konfiguracji interfejs&oacute;w fizycznych, kt&oacute;re będą wchodzić w skład łącza EtherChannel. Interfejsy mogą być skonfigurowane w trybie <strong>trunk</strong> lub jako <strong>access</strong>. Dodatkowo trzeba zadbać aby interfejsy fizyczne tworzące łącze miały konfigurację zgodną co do <strong>szybkości interfejsu</strong> oraz <strong>duplexu</strong>.</p> <p>&nbsp;</p> <p>Połączenie logiczne działa tak długo jak długo aktywne jest przynajmniej jedno połączenie fizyczne.</p> <p>&nbsp;</p> <p>W trakcie opisu często będą pojawiać się terminy <strong>EtherChannel </strong>oraz <strong>Port Channel</strong>. W niekt&oacute;rej literaturze zdarza się, że terminy te są używane zamiennie choć tak naprawdę określają dwa r&oacute;żne pojęcia. Tak więc mianem <strong>EtherChannel</strong> będziemy określać logiczny kanał utworzony pomiędzy przełącznikami zaś <strong>Port Chanel</strong> jest to <strong>interfejs</strong> powstały na obu końcach przełącznik&oacute;w tworzących kanał <strong>EtherChanel</strong> w skład kt&oacute;rego wchodzą interfejsy fizyczne wykorzystane do utworzenia skonsolidowanego łącza.</p> <p>&nbsp;</p> <p>Nasze rozważania na temat konfiguracji EtherChannel przeprowadzimy z wykorzystaniem topologii zaprezentowanej na rysunku poniżej. Jak widać om&oacute;wimy każdą z metod utworzenia kanału EtherChannel.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/etherchannel/image1.png" alt="image1" width="700" height="348" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Lecz zanim przejdziemy dalej jeszcze taka kr&oacute;tka dygresja na temat całego mechanizmu.</p> <p>&nbsp;</p> <p>Wykonanie połączeń pomiędzy przełącznikami jak w zaprezentowanej topologii powyżej nie pozostanie bez konsekwencji gdyż takie połączenie może doprowadzić do powstania pętli czego skutkiem będzie przesyłanie ramek w nieskończoność. Ramki te skutecznie spowodują zablokowanie normalnego ruchu sieciowego (należy pamiętać, że w przypadku warstwy drugiej nie ma zabezpieczeń takich jak występują w warstwie trzeciej - pole TTL). Brak zabezpieczeń wymusiło wprowadzenie innych mechanizm&oacute;w, kt&oacute;rych zadaniem jest dbanie o prawidłowość funkcjonowania sieci. Takim mechanizmem jest m.in. protok&oacute;ł STP. Aby nie wchodzić zbytnio w szczeg&oacute;ły i spos&oacute;b działania (protok&oacute;ł ten opisze wkr&oacute;tce) to dodam tylko, iż zadaniem protokołu jest takie zarządzanie łączami poprzez ich włączanie i wyłączanie aby nie doprowadzić do powstania pętli. Oczywiście topologie podobne do tej zaprezentowanej powyżej stosuje się aby zapewnić redundancję tak by zabezpieczyć się przed ewentualną awarią łącza a wspomniany protok&oacute;ł STP dba o prawidłowe działanie sieci.</p> <p>&nbsp;</p> <p>Aby sprawdzić konfigurację sieci z punktu widzenia protokołu STP należy wydać polecenie: <strong>show spanning-tree </strong>Po wydaniu polecenia na switchu SW2 i analizie uzyskanych wynik&oacute;w dochodzimy do wniosku iż przełącznik ten pełni funkcję <strong>root bridge</strong> (zarządza działaniem mechanizmu STP) i dlatego wszystkie interfejsy przełącznika mogą przekazywać dane.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/etherchannel/image2.png" alt="image2" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Wydanie tego samego polecenia np. na przełączniku SW1 dostarcza nam już inne informacje. Między innymi dowiadujemy się, że interfejs Fa0/2 jest w stanie blokowania. Interfejs ten tworzy połączenie z przełącznikiem SW2. Z przełącznikiem tym komunikacja odbywa się z wykorzystaniem interfejsu Fa0/1. Interfejs Fa0/2 przejdzie w stan przekazywania pakiet&oacute;w w momencie awarii łącza korzystającego z interfejsu Fa0/1</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/etherchannel/image3.png" alt="image3" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Całe te odejście od tematu wpisu doprowadza nas do następującego wniosku - a mianowicie - pomimo zastosowania dodatkowych połączeń pomiędzy przełącznikami to i tak na wskutek działania protokołu STP do komunikacji jest wykorzystywane pojedyncze łącze. Drugie łącze wchodzi do gry tylko w przypadku awarii łącza podstawowego. Stwierdzenie te pozwala nam wysnuć drugi wniosek: czemu by nie wykorzystać zestawione połączenie w bardziej efektywny spos&oacute;b skoro i tak jest nie użytkowane. I w tym momencie do gry wchodzi mechanizm Etherchannel - skoro mamy zapewniona komunikację z danym przełącznikiem poprzez r&oacute;żne interfejsy połączmy je w wsp&oacute;lny kanał transmisji. Fakt poszerzenia dostępnego pasma na pewno lepiej wpłynie na działanie naszej sieci niż utrzymywanie nieczynnego łącza.</p> <p>&nbsp;</p> <p>Dygresje tą pozostawiam do przemyśleń własnych a tym czasem przejdźmy dalej.</p> <p>&nbsp;</p> <p><strong>Przełącznik SW1-SW3 &ndash; EtherChannel &ndash; protok&oacute;ł PAgP</strong></p> <p>&nbsp;</p> <p>Rozpoczynamy od agregacji łącz pomiędzy przełącznikami <strong>SW1</strong> a <strong>SW3</strong>. Zestawienie połączenia będzie realizowane z wykorzystaniem interfejs&oacute;w f0/3 oraz f0/4 przełącznika SW1 oraz tych samych port&oacute;w f0/3 oraz f0/4 przełącznika SW3. Agregacje łączy wykonamy z wykorzystaniem protokołu PAgP.</p> <p>&nbsp;</p> <p>Aby utworzyć kanał EtherChannel w pierwszej kolejności przechodzimy do trybu konfiguracji port&oacute;w. Aby wydawane polecenia dotyczyły zar&oacute;wno portu f0/3 oraz f0/4 została wykorzystana opcja <strong>range</strong>. Aby utworzyć zagregowane łącze z wykorzystaniem protokołu PAgP należy wydać polecenie: <strong>channel-group &lt;numer_grupy&gt; mode desirable </strong>Numer grupy określamy indywidualnie ważne by numer ten był unikatowy w obrębie przełącznika. Oznacza to, że numer utworzonej grupy nie może zostać powt&oacute;rzony (wykorzystany dwukrotnie). Zakres wartości do wykorzystania od 1 do 64. Zgodność numeru grupy na przełącznikach tworzących skonsolidowane łącze nie jest wymagane, choć oczywiście zaleca się aby wartość przyznana grupie była taka sama na obu przełącznikach &ndash; takie podejście sprzyja przejrzystości konfiguracji. Wybranie trybu <strong>desirable</strong> spowoduje aktywne negocjowanie utworzenia kanału.</p> <p>&nbsp;</p> <p>Po wydaniu polecenia łącza wchodzą w skład nowego interfejsu logicznego: <strong>Port-channel 1</strong> (<strong>Po1</strong>)</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/etherchannel/image4.png" alt="image4" width="700" height="171" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Fakt utworzenia kanału EtherChannel możemy sprawdzić za pomocą komendy: <strong>show etherchannel</strong> Jak widać poniżej kanał LAG o identyfikatorze 1 korzystający z protokołu PAgP został utworzony.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/etherchannel/image5.png" alt="image5" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Fakt utworzenia kanału nie gwarantuje nam, że zbudowane w ten spos&oacute;b łącze jest w stanie przekazywać ruch sieciowy. Aby sprawdzić w jakim stanie jest łącze EtherChannel można wykorzystać polecenie: <strong>show etherchannel summary</strong> Po wydaniu komendy w formie tabeli zostaną wyświetlone wszystkie interfejsy Port-Channel wraz z informacją o stanie interfejsu, sposobie utworzenia oraz interfejsach fizycznych tworzących grupę LAG.</p> <p>&nbsp;</p> <p>Analiza uzyskanych danych wskazuje, że interfejs <strong>Po1</strong> jest wyłączony (symbol D &ndash; down).</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/etherchannel/image6.png" alt="image6" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Jeszcze więcej informacji na temat utworzonego kanału oraz port&oacute;w wchodzących w jego skład poznamy dzięki poleceniu: <strong>show etherchannel detail</strong> (polecenie om&oacute;wimy trochę szerzej za chwilę, gdy uda nam się utworzyć działający kanał EtherChannel).</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/etherchannel/image7.png" alt="image7" width="700" height="751" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Status interfejsu <strong>Po1</strong> możemy r&oacute;wnież sprawdzić za pomocą polecenia: <strong>show ip interfeces brief</strong> Jak można stwierdzić interfejs jest w stanie <strong>down</strong> (kanał nie został jeszcze skonfigurowany po drugiej stronie &ndash; switch SW3).</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/etherchannel/image8.png" alt="image8" width="700" height="548" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Aby łącze EtherChannel mogło przekazywać ruch sieciowy należy je r&oacute;wnież skonfigurować na przełączniku SW3. Podobnie jak to było w przypadku switcha SW1 do konfiguracji łącza wykorzystamy przełącznik <strong>range</strong>. Po określeniu interfejs&oacute;w, kt&oacute;re wejdą w skład grupy LAG (interfejs f0/3 oraz f0/4) wydajemy polecenie: <strong>channel-group 1 mode auto</strong> Po wydaniu komendy interfejs łącza <strong>Port-channel 1</strong> osiągnął status <strong>up</strong>. Oznacza to, że łącze LAG zostało włączone.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/etherchannel/image9.png" alt="image9" width="700" height="180" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Aby sprawdzić status kanału skorzystamy z znanego nam już polecenia: <strong>show etherchannel summary</strong> Po analizie uzyskanych wynik&oacute;w stwierdzamy, że interfejs <strong>Po1</strong> działa (flaga U &ndash; łącze w użyciu).</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/etherchannel/image10.png" alt="image10" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Jak już wiesz czytelniku jeszcze dokładniejsze wyniki stanu łącza oraz interfejs&oacute;w fizycznych uzyskamy po wydaniu komendy: <strong>show etherchannel detail </strong>Gdy łącze działa prawidłowo i interfejs jest aktywny w wynikach polecenia pojawi się informacja o interfejsie sąsiada. Jak widać poniżej lokalny port f0/3 przełącznika SW1 (sekcja Local information) jest połączony z portem f0/3 sąsiada czyli przełącznika SW3 (sekcja Partner&rsquo;s information).</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/etherchannel/image11.png" alt="image11" width="700" height="672" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Dodatkowo fakt włączenia interfejsu <strong>Po1</strong> można zweryfikować po wydaniu polecenia: <strong>show ip interface brief</strong></p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/etherchannel/image12.png" alt="image12" width="700" height="556" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Interfejs <strong>Po1</strong> będzie r&oacute;wnież uwzględniany przez protok&oacute;ł STP. Po sprawdzeniu stanu działania protokołu widać, że interfejsy fizyczne Fa0/3 oraz Fa0/4 zostały zastąpione interfejsem logicznym <strong>Po1</strong>.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/etherchannel/image13.png" alt="image13" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Konfigurację interfejsu fizycznego możemy dodatkowo zweryfikować za pomocą polecenia: <strong>show running-config interface &lt;nazwa_interfejsu&gt;</strong> - interfejs do utworzenia zagregowanego łącza wykorzystał protok&oacute;ł <strong>PAgP</strong>, tryb pracy portu <strong>desirable</strong></p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/etherchannel/image14.png" alt="image14" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>a także za pomocą komendy: <strong>show interfaces f0/3 switchport</strong> &ndash; interfejs f0/3 pracuje w trybie <strong>access</strong> i jest częścią puli interfejs&oacute;w fizycznych przynależnych do grupy LAG &ndash; <strong>Port-Channel Po1.</strong></p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/etherchannel/image15.png" alt="image15" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Opr&oacute;cz sprawdzenia informacji na temat interfejs&oacute;w przypisanych do kanału Etherchannel możemy dokonać r&oacute;wnież sprawdzenia ustawień utworzonego interfejsu logicznego Port-Channel 1. Sprawdzenia dokonujemy za pomocą polecenia: <strong>show interfaces port-channel &lt;numer_interfejsu&gt;</strong></p> <p>&nbsp;</p> <p>Przeglądając konfigurację portu warto zwr&oacute;cić uwagę na parametr <strong>BW</strong> (bandwidth &ndash; pasmo) &ndash; wartość ta odpowiada: <strong>ilość połączonych interfejs&oacute;w x pasmo każdego z nich</strong>. W przykładzie zostały użyte dwa łącza FastEthernet tak więc maksymalne pasmo dostępne dla interfejsu Po1 wynosi 200000 kb/s (2 interfejsy x 100000 kb/s) Dodatkowo w sekcji <strong>Members in this channel</strong> poznamy interfejsy tworzące dany kanał LAG.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/etherchannel/image16.png" alt="image16" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Łącze EtherChannel z wykorzystaniem protokołu PAgP pomiędzy przełącznikami zostało zestawione, tak więc do weryfikacji stanu łącza możemy r&oacute;wnież wykorzystać polecenia systemu IOS, kt&oacute;re są przynależne temu protokołowi.</p> <p>&nbsp;</p> <p>Jednym z poleceń jest: <strong>show pagp neighbor</strong> Po wydaniu komendy poznamy informacje o interfejsach sąsiada. Jak widać poniżej łącze LAG jest zestawione z interfejsami f0/3 oraz f0/4 przełącznika SW3 a interfejsy te pracują w trybie auto. Dodatkowo poznamy czas pracy interfejs&oacute;w.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/etherchannel/image17.png" alt="image17" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Aby poznać interfejsy lokalne przełącznika wykorzystujące protok&oacute;ł PAgP należy wykorzystać polecenie: <strong>show pagp internal</strong></p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/etherchannel/image18.png" alt="image18" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Informacje o stanie wymienianych informacji PAGP poznamy po wydaniu polecenia: <strong>show pagp counters</strong></p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/etherchannel/image19.png" alt="image19" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Ewentualne problemy z kanałem EtherChannel, kt&oacute;ry jest budowany za pomocą protokołu PAGP możemy rozwiązać włączając proces debugowania tego protokołu. Debugowanie uruchomimy za pomocą komendy: <strong>debug pagp &lt;opcja&gt;</strong> Poniżej na zrzucie włączony proces debugowania zdarzeń (przełącznik SW1) protokołu PAGP oraz wynik informacji uzyskanych na skutek wyłączenia interfejs&oacute;w sąsiada tworzących łącze LAG.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/etherchannel/image20.png" alt="image20" width="700" height="200" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p><strong>Przełącznik SW1-SW2 &ndash; EtherChannel &ndash; protok&oacute;ł LACP</strong></p> <p>&nbsp;</p> <p>Po ustaleniu łącza EtherChannel pomiędzy przełącznikiem SW1 a SW3 przechodzimy do zestawienia kanału pomiędzy <strong>switchem SW1 </strong>a <strong>SW2.</strong> Lecz tym razem skorzystamy z <strong>protokołu LACP</strong>.</p> <p>&nbsp;</p> <p>Konfigurację rozpoczynamy od konfiguracji przełącznika SW1. Kanał zostanie utworzony z wykorzystaniem interfejs&oacute;w f0/1 oraz f0/2 (interfejsy są tożsame z tymi użytymi na przełączniku SW2). Tak samo jak w przypadku PAgP konfigurację przeprowadzamy w trybie konfiguracji interfejsu. Interfejsy przełącznika SW1 ustawiamy do pracy w trybie <strong>active</strong> (aktywne negocjowanie utworzenia kanału). Numerowi tworzonej grupy została przypisana wartość 2.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/etherchannel/image21.png" alt="image21" width="700" height="189" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Po wydaniu polecenia: <strong>channel-group 2 mode active</strong> został utworzony interfejs <strong>Port Channel Po2</strong>, w skład kt&oacute;rego weszły interfejsy fizyczne f0/1 oraz f0/2. Stan interfejsu Po2 możemy sprawdzić wydając komendę: <strong>show etherchannel summary</strong>. Interfejs jest w stanie <strong>down </strong>(flaga D).</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/etherchannel/image22.png" alt="image22" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Dokładniejsze informacje o stanie łącza uzyskamy wydając polecenie: <strong>show etherchannel detail</strong></p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/etherchannel/image23.png" alt="image23" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Aby kanał EtherChannel został utworzony musimy skonfigurować przełącznik SW2. Na przełączniku tym w trybie konfiguracji interfejs&oacute;w wydajemy polecenie: <strong>channel-group 2 mode passive</strong>. Wydanie komendy powoduje ustawienie port&oacute;w fizycznych w tryb pasywnej negocjacji. Oznacz to, że zagregowane łącze powstanie gdy poprosi o to sąsiad. Porty przełącznika SW1 zostały skonfigurowane tak aby inicjować utworzenie kanału tak więc łącze EtherChannel pomiędzy przełącznikami zostaje utworzone &ndash; <strong>interfejs Port-channel 2</strong> zmienia stan na <strong>up</strong>.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/etherchannel/image24.png" alt="image24" width="700" height="201" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Łącze LAG zostało skonfigurowane za pomocą protokołu LACP a og&oacute;lny proces tworzenia łącza przebiegał następująco:</p> <p>&nbsp;</p> <ul> <li style="padding-left: 60px;">interfejsy skonfigurowane za pomocą flagi <strong>active</strong> wygenerowały na swoich łączach <strong>ramki LACPDU</strong> (ang. LACP Data Unit) - przełącznik SW1</li> <li style="padding-left: 60px;">sąsiad po odebraniu <strong>ramki LACPDU</strong> (gdy jest skonfigurowany do korzystania z protokołu LACP) odpowiedział na zapytanie wysyłając odpowiedź &ndash; przełącznik SW2,</li> <li style="padding-left: 60px;">przełączniki utworzyły <strong>dynamiczną grupę LAG</strong> &ndash; interfejs Port-Channel Po2</li> </ul> <p>&nbsp;</p> <p>Stan łącza możemy sprawdzić za pomocą znanego nam polecenia: <strong>show etherchannel summary</strong>. Interfejs Po2 działa prawidłowo (flaga U).</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/etherchannel/image25.png" alt="image25" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Dokładny stan port&oacute;w możemy skontrolować za pomocą już r&oacute;wnież wykorzystywanego polecenia: <strong>show etherchannel detail</strong></p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/etherchannel/image26.png" alt="image26" width="700" height="571" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>Dokładniejszy opis uzyskanych informacji</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">1 - informacja o grupie LAG,</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">2 - użyty protok&oacute;ł,</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">3 - stan portu,</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">4 - numer grupy, oraz identyfikator interfejsu Port-channel,</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">5 - informacja o interfejsie lokalnym tworzącym kanał EtherChannel m.in. stan portu, priorytet</p> <p style="margin: 0cm 0cm 0.0001pt 30px;">6 - informacja o interfejsie sąsiada tworzącym kanał EtherChannel m.in. stan portu, priorytet, czas przyłączenia oraz ID.</p> <p>&nbsp;</p> <p>Na przełączniku SW2 wydano dodatkowo dwa polecenia tak aby doprecyzować konfigurację związaną z protokołem LACP.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/etherchannel/image27.png" alt="image27" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Polecenie: <strong>lacp system-priority &lt;priorytet&gt;</strong> (punkt 1) jest odpowiedzialne za zdefiniowanie numeru priorytetu systemu LACP. Polecenie wydane w trybie konfiguracji globalnej odpowiada za ustalenie, kt&oacute;ry z przełącznik&oacute;w ma pierwszeństwo w podjęciu decyzji o utworzeniu kanału EtherChannel. Zasada jaka obowiązuje - <strong>niższy priorytet ma pierwszeństwo</strong>. W przypadku pozostawienia domyślnych wartości, decyduje adres MAC - <strong>niższy adres ma pierwszeństwo</strong>. Wartość priorytetu może być ustalona od 1 do 65535 (domyślnie 32768).</p> <p>&nbsp;</p> <p>Komenda: <strong>lacp port-priority &lt;priorytet&gt;</strong> (punkt 2) jest wydawana w trybie konfiguracji interfejsu a odpowiada za przydzielenie priorytetu interfejsom. Kanał LAG może maksymalnie wykorzystywać 8 interfejs&oacute;w fizycznych lecz przydzielonych łączy do kanału może być więcej. Poprzez manipulację parametrem <strong>lacp port-priority</strong> definiujemy, kt&oacute;re interfejsy mają być aktywne a kt&oacute;re mają być użyte w przypadku awarii. Wartość priorytetu może być ustalona od 1 do 65535 (domyślnie 32768).</p> <p>&nbsp;</p> <p>Wartości ustalonych priorytet&oacute;w możemy odnaleźć w wynikach już zaprezentowanych poleceń (lub tych, kt&oacute;re będą przedstawione za chwilę). Na przykład wartość <strong>lacp port-priority </strong>poznamy po wydaniu komendy: <strong>show etherchannel detail </strong>zaś wartość <strong>lacp system-priority </strong>po wydaniu komendy: <strong>show lacp sys-id</strong></p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/etherchannel/image28.png" alt="image28" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Aby poznać protokoły, kt&oacute;re zostały wykorzystane do utworzenia zagregowanych łączy wraz z informacją o grupie wydaj polecenie: <strong>show etherchannel protocol</strong> (na switchu SW1 są uruchomione dwa protokoły PAgP oraz LACP przy czym pierwszy z nich obsługuje grupę 1 a drugi grupę 2).</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/etherchannel/image29.png" alt="image29" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Tak jak to miało miejsce w przypadku protokołu PAgP tak i w przypadku korzystania z protokołu LACP stan utworzonego łącza można skontrolować za pomocą poleceń przynależnych temu protokołowi.</p> <p>&nbsp;</p> <p>Pierwsze polecenie: <strong>show lacp neighbor</strong> pokarze status port&oacute;w sąsiada. Jak widać poniżej porty f0/1 oraz f0/2 przełącznika SW2 (sąsiad przełącznika SW1) działają prawidłowo. Porty te zostały skonfigurowane do pracy w trybie <strong>pasive</strong> (flaga P).</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/etherchannel/image30.png" alt="image30" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Stan interfejs&oacute;w lokalnych poznasz za pomocą komendy: <strong>show lacp internal</strong> (grupę LAG o identyfikatorze 2 tworzą łącza f0/1 oraz f0/2, interfejsy są skonfigurowane do pracy w trybie <strong>active</strong> - flaga A)</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/etherchannel/image31.png" alt="image31" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Stan wymiany ramek pomiędzy przełącznikami poznasz wydając komendę: <strong>show lacp counters</strong></p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/etherchannel/image32.png" alt="image32" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>I tak jak w przypadku protokołu PAgP problemy z działaniem kanału LAG zestawionego za pomocą LACP można pr&oacute;bować rozwiązać włączając proces debugowania protokołu. Poniżej na listeningu za pomocą polecenia: <strong>debug lacp event</strong> zostało włączone monitorowanie zdarzeń, kt&oacute;re dotyczą działania protokołu LACP - interfejs Port-Channel2 przestał działać (pow&oacute;d - wyłączenie interfejs&oacute;w sąsiada) by ponownie wr&oacute;ć do normalnego stanu pracy.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/etherchannel/image33.png" alt="image33" width="700" height="199" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Oczywiście tak jak w przypadku protokołu PAgP stan konfiguracji protokołu LACP w kontekście działania mechanizmu STP poznamy wydając polecenie: <strong>show spanning-tree</strong> Interfejsy F0/1 i F0/2 zostały zastąpione interfejsem logicznym Po2</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/etherchannel/image34.png" alt="image34" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p><strong>Przełącznik SW2-SW3 &ndash; EtherChannel &ndash; &bdquo;mode on&rdquo;</strong></p> <p>&nbsp;</p> <p>Kanały EtherChannel na łączach pomiędzy przełącznikami SW1-SW3 oraz SW1-SW2 zostały utworzone dynamicznie z wykorzystaniem protokoł&oacute;w PAgP oraz LACP. Do om&oacute;wienia został nam spos&oacute;b trzeci a mianowicie utworzenie łącza LAG w spos&oacute;b całkowicie statyczny. Zagregowane łącze utworzymy pomiędzy przełącznikami SW2 (interfejs f0/3 oraz f0/4) oraz SW3 (interfejs f0/1 oraz f0/2).</p> <p>&nbsp;</p> <p>Rozpoczynamy od konfiguracji switcha SW2.</p> <p>&nbsp;</p> <p>Aby zestawić kanał za pomocą flagi <strong>range</strong> określamy grupę interfejs&oacute;w co do kt&oacute;rych będzie przeprowadzana konfiguracja a następnie za pomocą komendy: <strong>channel-group 3 mode on </strong>zostaje utworzone zagregowane łącze. Jak widać poniżej w przeciwieństwie do dw&oacute;ch poprzednich metod interfejs logiczny <strong>Port-channel 3</strong> od razu jest w stanie <strong>up</strong>.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/etherchannel/image35.png" alt="image35" width="700" height="146" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Informację o działającym kanale EtherChannel potwierdzimy po wydaniu polecenia: <strong>show etherchannel summary</strong> (interfejs Po3 działa &ndash; flaga U, został utworzony ręcznie &ndash; brak informacji o użyciu protokołu).</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/etherchannel/image36.png" alt="image36" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Dodatkowo potwierdzenie utworzenia kanału LAG w trybie <strong>mode on</strong> możemy zweryfikować za pomocą polecenia: <strong>show etherchannel &lt;nr_interfejsu&gt; protocol</strong> Jak można stwierdzić po poniższym zrzucie interfejs został skonfigurowany z wykorzystaniem trybu ręcznego &ndash; <strong>mode on</strong>.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/etherchannel/image37.png" alt="image37" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Jeszcze jednym poleceniem, kt&oacute;re r&oacute;wnież pomoże nam w zebraniu informacji o utworzonych łączach EtherChannel jest komenda: <strong>show etherchannel &lt;id_portu&gt; port-channel</strong> Opr&oacute;cz podstawowych danych o interfejsie uzyskamy r&oacute;wnież informację o interfejsach fizycznych budujących dany kanał.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/etherchannel/image38.png" alt="image38" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Oczywiście polecenia te r&oacute;wnież można używać w kontekście łączy zestawionych w spos&oacute;b dynamiczny.</p> <p>&nbsp;</p> <p>Interfejs Po3 pomimo tego, że jest w stanie up (przełącznik SW2) nie działa jeszcze prawidłowo gdyż nie został skonfigurowany jego sąsiad. Aby kanał EtherChannel m&oacute;gł zacząć przekazywać ruch sieciowy należy przeprowadzić konfigurację na przełączniku SW3. Konfiguracja przebiega analogicznie jak w przypadku switcha SW2.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/etherchannel/image39.png" alt="image39" width="700" height="147" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Łącze EtherChannel w trybie ręcznym zostało utworzone.</p> <p>&nbsp;</p> <p>O dodatkowych sposobach weryfikacji utworzonych kanał&oacute;w jeszcze parę sł&oacute;w za chwilkę.</p> <p>&nbsp;</p> <p>Użycie agregacji łączy może dać wrażenie, że jest to dobry spos&oacute;b na zwiększenie og&oacute;lnej przepustowości łącza w sytuacjach w kt&oacute;rych jest to konieczne. W pewnych sytuacjach rozumowanie takie będzie jak najbardziej prawidłowe i rzeczywiście uzyskamy zwiększenie dostępnego pasma łącza lecz może r&oacute;wnież zdarzyć się tak, że pomimo prawidłowej konfiguracji kanału EtherChannel i zwiększenia dostępnego pasma łącza nadal będziemy mieć problem z uzyskaniem pożądanej prędkości przesyłania pakiet&oacute;w gwarantującej prawidłowe funkcjonowanie naszej sieci.</p> <p>&nbsp;</p> <p>Więc rodzi się pytanie &ndash; Od czego stan taki zależy? I dlaczego tak się dzieje, że w jednym przypadku decyzja o konfiguracji kanału LAG będzie strzałem w dziesiątke zaś w drugim strzałem w płot? Odpowiedź na to pytanie nie jest sprawą prostą a już na pewno pomimo poznania odpowiedzi nie rozwiążemy problem&oacute;w we wszystkich sytuacjach.</p> <p>&nbsp;</p> <p>Aby m&oacute;c w spos&oacute;b efektywny wykorzystać mechanizm agregacji kanał&oacute;w trzeba uzmysłowić sobie w jaki spos&oacute;b jest realizowana funkcja rozłożenia obciążenia w kanale EtherChannel na poszczeg&oacute;lne interfejsy fizyczne.</p> <p>&nbsp;</p> <p>Działanie algorytmu, kt&oacute;ry podejmuje decyzję o przesłaniu danych poprzez poszczeg&oacute;lny interfejs fizyczny polega na przyporządkowaniu interfejsowi liczby z zakresu od 0 do 7. Oznacza to, że w zależności od liczby łączy fizycznych budujących kanał LAG, interfejsowi będzie przyporządkowana jedna wartość bądź więcej. Poniżej na rysunku zaprezentowano rozłożenie przydzielania liczby wartości w zależności od liczby interfejs&oacute;w w kanale EtherChannel.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/etherchannel/image40.png" alt="image40" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>lub może w bardziej obrazowy spos&oacute;b w przeliczeniu na procenty</p> <p><img src="http://slow7.pl/images/stories/siec/etherchannel/image41.png" alt="image41" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Jak widać najkorzystniej r&oacute;wnoważenie obciążenia przebiega w przypadku wyboru kanału EtherChannel składającego się z 8, 4 i 2 łączy fizycznych gdyż w tych przypadkach łącza są obciążone r&oacute;wnomiernie. W pozostałych zaś przypadkach ruch sieciowy nie rozkłada się w r&oacute;wny spos&oacute;b na wszystkie interfejsy fizyczne. Jak już wspomniano jest to spowodowane tym, że niekt&oacute;rym interfejsom zostaje przypisana większa liczba wartości niż pozostałym a co za tym idzie jest wyższe prawdopodobieństwo, że na skutek działania algorytmu decydującego o trasie przesyłu danych, łącze te zostanie wybrane chętniej. Na przykład w sytuacji w kt&oacute;rej kanał EtherChannel tworzy pięć łączy, trzem zostaną przypisane dwie wartości zaś dw&oacute;m pozostałym tylko jedna wartość. Oznacza to, że trzy interfejsy będą wykorzystywane w większym stopniu niż dwa pozostałe.</p> <p>&nbsp;</p> <p>Domyślna metoda wyboru ścieżki transmisji dla pakiet&oacute;w opiera się przeważnie na docelowym adresie MAC choć w zależności od modelu przełącznika i wersji oprogramowania IOS będzie można zdecydować się na:</p> <ul> <li style="padding-left: 60px;">źr&oacute;dłowy adres IP (src_ip_addr),</li> <li style="padding-left: 60px;">docelowy adres IP (dest_ip_addr)</li> <li style="padding-left: 60px;">źr&oacute;dłowy i docelowy adres IP (src-dst-ip)</li> <li style="padding-left: 60px;">źr&oacute;dłowy adres MAC (src_mac_addr)</li> <li style="padding-left: 60px;">docelowy adres MAC (dest_mac_addr)</li> <li style="padding-left: 60px;">źr&oacute;dłowy i docelowy adres MAC (src-dst-mac)</li> <li style="padding-left: 60px;">port źr&oacute;dłowy (src_port)</li> <li style="padding-left: 60px;">port docelowy (dest_port)</li> <li style="padding-left: 60px;">port źr&oacute;dłowy i docelowy (src-dst-port)</li> </ul> <p>&nbsp;</p> <p>Aby bardziej zrozumieć mechanizm rozłożenia obciążenia w kanale EtherChannel przeanalizujmy sytuacje zaprezentowaną na rysunku poniżej. Grupa użytkownik&oacute;w (po lewej) aby uzyskać dostęp do usług musi skontaktować się z grupą serwer&oacute;w (po prawej). Zał&oacute;żmy w naszym przykładzie, że najbardziej obciążonym serwerem jest serwer plik&oacute;w, kt&oacute;ry pochłania 60% przepustowości łącza. Ruch sieciowy jest przekazywany poprzez dwa przełączniki pomiędzy, kt&oacute;rymi zestawiono łącze EtherChannel zbudowane z 4 interfejs&oacute;w FastEthernet. Mogłoby by się wydawać, że nie powinno być problemu z przepustowością łącza gdyż zestawiony kanał pozwala nam w jedną stronę wysłać dane z prędkością 400 Mb/s co w przeliczeniu na serwer plik&oacute;w daje nam 240 Mb/s. Niestety zastosowanie domyślnej konfiguracji (algorytm oparty na docelowym adresie MAC) spowoduje, że pomimo zestawienia łącza LAG wymagana przepustowość łącza nie zostanie osiągnięta. Stanie się tak ponieważ w kanale EtherChannel ruch do serwera plik&oacute;w w przypadku wyboru metody opartej na docelowym adresie MAC będzie przekazywany tylko poprzez jedno wybrane łącze. Zaś ruch sieciowy do innych serwer&oacute;w będzie przekazywany przez odrębne łącza w skonfigurowanej wiązce EtherChannel. Tak więc na przełączniku SW1 bardziej trafioną metodą wyboru ścieżki przesyłu danych będzie metoda bazująca np. na źr&oacute;dłowym adresie MAC &ndash; ruch od host&oacute;w będzie rozkładany na poszczeg&oacute;lne interfejsy. Na switchu SW2 pozostawienie domyślnej konfiguracji da pożądany efekt rozłożenia ruchu sieciowego na wszystkie łącza fizyczne gdyż przełącznik SW2 ruch pakiet&oacute;w od strony serwer&oacute;w w kierunku host&oacute;w będzie rozkładał na poszczeg&oacute;lne interfejsy wchodzące w skład zbudowanego łącza LAG. Zmiana na metodę bazującą na źr&oacute;dłowym adresie MAC spowoduje, że pakiety od serwera plik&oacute;w zostaną przesłane jednym i tym samym łączem czyli nasz problem nie zostaje rozwiązany.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/etherchannel/image42.png" alt="image42" width="700" height="291" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Aby na przełączniku sprawdzić dostępne metody działania algorytmu wyboru ścieżki należy wydać polecenie: <strong>port-channel load-balance ?</strong></p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/etherchannel/image43.png" alt="image43" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Zmiany dokonujemy poprzez wybranie odpowiedniej flagi z dostępnych. Np. zmiana ustawień na metodę bazującą na źr&oacute;dłowych adresach MAC dokonamy za pomocą polecenia:<strong> port-channel load-balance src-mac </strong> Polecenie wydajemy w trybie konfiguracji globalnej co oznacza, że wybrana metoda będzie stosowana do wszystkich port&oacute;w przełącznika skonfigurowanych w ramach kanału EtherChannel.</p> <p>&nbsp;</p> <p>Weryfikację ustawień dokonamy za pomocą komendy: <strong>show etherchannel load-balance</strong></p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/etherchannel/image44.png" alt="image44" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Podczas pracy skonfigurowanego łącza EtherChannel warto kontrolować, kt&oacute;re z łączy są wykorzystywane najintensywniej. Og&oacute;lne pojęcie o użyciu łącza poznamy odszukując w wynikach wydawanych poleceń wartości Load. Parametr ten jest uwzględniany np. w poleceniach: <strong>show etherchannel &lt;interfejs&gt; port-channel</strong> czy <strong>show etherchannel detail</strong></p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/etherchannel/image45.png" alt="image45" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Aby poznać jaką decyzję podejmie przełącznik w wyborze interfejsu przez, kt&oacute;ry zostanie przekazany ruch sieciowy można posiłkować się poleceniem: <strong>test etherchannel load-balance interface port-channel &lt;numer_interfejsu&gt; mac &lt;adres_MAC_źr&oacute;dłowy&gt; &lt;adres_MAC_docelowy&gt; </strong></p> <p>&nbsp;</p> <p>Wydanie przykładowego polecenia na przełączniku SW2: <strong>test etherchannel load-balance interface port-channel 2 mac 00d0.c0d7.2dd4 0002.fc26.2494</strong> spowoduje wykonie testu, kt&oacute;rego efektem będzie informacja o wyborze danego interfejsu - ramka zostanie wysłana z wykorzystaniem interfejsu Fa0/1</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/etherchannel/image46.png" alt="image46" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>I tak już na zakończenie jeszcze jedna uwaga na konfigurację kanału EtherChannel w środowiskach w kt&oacute;rych korzysta się z sieci VLAN.</p> <p>&nbsp;</p> <p>Aby pokazać problem na przykładzie przyjęto następującą topologię sieciową. Pomiędzy dwoma przełącznikami SW1 oraz SW3 skonfigurowano kanał EtherChannel za pomocą protokołu LACP. Kanałowi LAG został przypisany identyfikator 2 (interfejs Port-Channel 2) Do każdego z przełącznik&oacute;w został podłączony host, kt&oacute;ry należy do sieci VLAN 10.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/etherchannel/image47.png" alt="image47" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>W tak zbudowanej sieci sprawdźmy czy <strong>Host1</strong> potrafi nawiązać poprawną komunikację z <strong>Hostem2</strong>. Jak widać poniżej test ping kończy się <strong>niepowodzeniem</strong>.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/etherchannel/image48.png" alt="image48" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Tak więc rodzi się pytanie - Co jest powodem braku komunikacji pomiędzy komputerami? Aby odpowiedzieć na postawione pytanie należy sprawdzić ustawienia interfejsu logicznego Po2. Ustawienia zweryfikujemy za pomocą komendy: <strong>show interfaces Po2 switchport</strong> Czytelnik mający styczność z sieciami VLAN pewnie już wie w kt&oacute;rym kierunku należy p&oacute;jść by problem rozwiązać dla tych zaś kt&oacute;rzy z tematyką nie do końca są obeznani już śpieszę z odpowiedzią. Winą braku łączności pomiędzy hostami jest spos&oacute;b konfiguracji interfejs&oacute;w wchodzących w skład kanału LAG. Interfejsy te pracują w trybie <strong>access</strong> co oznacza, że ruch sieciowy będzie przekazywany tylko pomiędzy urządzeniami przypisanymi do domyślnej sieci VLAN1. Skoro interfejsy fizyczne pracują w trybie <strong>access</strong> interfejs logiczny <strong>Po2</strong> odziedziczy to ustawienie i r&oacute;wnież w tym trybie będzie pracował.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/etherchannel/image49.png" alt="image49" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Aby m&oacute;c przesłać ruch sieciowy należący do r&oacute;żnych VLAN-&oacute;w kanał EtherChannel pomiędzy przełącznikami musi pracować w <strong>trybie magistrali</strong> bądź m&oacute;wiąc inaczej w <strong>trybie trunk</strong>.</p> <p>&nbsp;</p> <p>Aby poprawić konfigurację musimy zmienić tryb pracy interfejs&oacute;w fizycznych. Konfigurację rozpoczniemy od przełącznika SW1. W tym celu wydajmy polecenie: <strong>interface range f0/3-4</strong> (punkt 1) tak by przeprowadzić za jednym zamachem konfigurację wszystkich interfejs&oacute;w fizycznych budujących łącze LAG. Aby zmienić tryb pracy interfejsu na trunk należy wydać polecenie: <strong>switchport mode trunk</strong> (punkt 2) Niestety wydanie polecenia kończy się <strong>niepowodzeniem</strong> gdyż domyślnie jest ustawiona opcja <strong>Auto</strong> - przełącznik ma możliwość prowadzenia komunikacji poprzez łącze trunk z wykorzystaniem enkapsulacji bazującej na protokole <strong>802.1Q</strong> bądź <strong>ISL</strong>. Tak wiec by wydanie komendy zakończyło się sukcesem należy zdecydować się na jeden z protokoł&oacute;w. Protok&oacute;ł ISL jest rozwiązaniem starszym więc nie pozostaje nam nic innego jak zdecydowanie się na protok&oacute;ł <strong>802.1Q.</strong> Aby łącze trunk mogło prowadzić enkapsulację pakiet&oacute;w z wykorzystaniem protokołu 802.1Q należy wydać polecenie: <strong>switchport trunk encapsulation dot1q </strong>(punkt 3). Po wydaniu polecenia, ponowna pr&oacute;ba ustawienia pracy łącza na trunk kończy się <strong>sukcesem</strong> (punkt 4). Wydanie wszystkich tych poleceń spowoduje wyłączenie i ponowne włączenie interfejs&oacute;w fizycznych oraz powiązanego z tymi interfejsami łącza Po2.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/etherchannel/image50.png" alt="image50" width="700" height="210" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Proces konfiguracji możemy r&oacute;wnież obserwować na switchu SW3.</p> <p>&nbsp;</p> <p><img src="http://slow7.pl/images/stories/siec/etherchannel/image51.png" alt="image51" width="700" height="140" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Uważnego czytelnika analizującego powyższe listeningi może zastanowić komunikat:<strong> Interface Port-channel2, changed state to up</strong> Bo czemu interfejs pracuje skoro zmiana trybu pracy interfejs&oacute;w została przeprowadzona tylko na przełączniku SW1? Odpowiedź jest dość prosta - O zmianę konfiguracji pozostałych interfejs&oacute;w (r&oacute;wnież przełącznika sąsiedniego) zadbał protok&oacute;ł LACP.</p> <p>&nbsp;</p> <p>Przeglądając stan konfiguracji portu Po2 na przełączniku SW1 dochodzimy do wniosku, iż pracuje on w trybie magistrali tak więc kanał ma możliwość przenoszenia ramek należących do r&oacute;żnych sieci VLAN.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/etherchannel/image52.png" alt="image52" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Podobne spostrzeżenia poczynimy po stronie przełącznika SW3. R&oacute;żnica w konfiguracji pomiędzy przełącznikami jest taka iż na przełączniku SW1 ustawienia zostały zdefiniowane przez administratora a na switchu SW3 na wskutek negocjacji.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/etherchannel/image53.png" alt="image53" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>Ostatnim etapem jest sprawdzenie efekt&oacute;w przeprowadzonej konfiguracji. Tak więc sprawdźmy ponownie czy <strong>Host1</strong> uzyskał możliwość komunikacji z <strong>Hostem2</strong>. Przeprowadzona pr&oacute;ba ping kończy się sukcesem.</p> <p>&nbsp;<img src="http://slow7.pl/images/stories/siec/etherchannel/image54.png" alt="image54" style="display: block; margin-left: auto; margin-right: auto;" /></p> <p>&nbsp;</p> <p>I to by było na tyle. Mam nadzieję, że po tej dawce informacji samodzielna konfiguracja kanału EtherChannel nie będzie żadnym problemem.</p> <p>&nbsp;</p> <hr /> <p><strong>BIBLOGRAFIA:</strong></p> <p>&nbsp;</p> <p><a href="https://www.freeccnaworkbook.com/workbooks/ccna/configuring-a-port-channel-interface">https://www.freeccnaworkbook.com/workbooks/ccna/configuring-a-port-channel-interface</a></p> <p><a href="http://ciscoiseasy.blogspot.com/2010/11/lesson-24-layer-2-etherchannel.html">http://ciscoiseasy.blogspot.com/2010/11/lesson-24-layer-2-etherchannel.html</a></p> <p><a href="http://www.dummies.com/how-to/content/etherchannel-configuration.html">http://www.dummies.com/how-to/content/etherchannel-configuration.html</a></p> <p><a href="http://www.cisco.com/c/en/us/support/docs/lan-switching/etherchannel/12023-4.html">http://www.cisco.com/c/en/us/support/docs/lan-switching/etherchannel/12023-4.html</a></p> <p><a href="http://packetpushers.net/understand-etherchannel-load-balancing-catalyst-switches/">http://packetpushers.net/understand-etherchannel-load-balancing-catalyst-switches/</a></p> <p><a href="http://www.firstdigest.com/2010/08/cisco-port-channel-load-balancing-explanation/">http://www.firstdigest.com/2010/08/cisco-port-channel-load-balancing-explanation/</a></p> <p><a href="http://www.cisco.com/c/en/us/support/docs/lan-switching/etherchannel/12023-4.html">http://www.cisco.com/c/en/us/support/docs/lan-switching/etherchannel/12023-4.html</a></p></div>