CAŁA PRACA MGR o kompach (2)


SPIS TREŚCI

Geneza powstania Internetu

Początki: 1962-1969

W obliczu wybuchu wojny atomowej, Siły Powietrzne Stanów Zjedno­czonych obarczyły niewielką grupę naukowców arcytrudnym zadaniem: stworzyć sieć transmisji danych odporną na atak nuklearny. Wysunięto rewolucyjną koncepcję sieci bez scentralizowanej kontroli. W wypadku zniszczenia jednego, dziesięciu czy stu węzłów system wciąż miał dzia­łać. Sieć taka, projektowana wyłącznie na potrzeby wojska, miała prze­trwać choćby i apokalipsę - nawet gdyby nie udało się to ludziom. Nazwisko Paula Barana już zawsze kojarzone będzie z początkami Internetu. W 1962 roku pracował on w Rand Corporation, firmie której zlecono opracowanie koncepcji niezniszczalnej sieci. Pomysłem Barana była sieć, w której każdy komputer mógł komunikować się z dowolnym innym. Wtedy stanowiło to ideę rewolucyjną, zdającą się przeczyć zdro­wemu rozsądkowi. Baran wiedział jednak dobrze, że sieci scentralizo­wane nie miały szans na przetrwanie ataku. W swojej słynnej publikacji „O komunikacji rozproszonej: I. Wprowadzenie do sieci rozproszonych” (tyt. org. On Distributed Communications: I. Introduction to Distributed Communications Network) pisze:

„Bez wątpienia sieci scentralizowane są podatne na ataki, ponieważ zniszczenie jednego, centralnego węzła oznacza koniec komunika­cji pomiędzy stacjami końcowymi”

Baran miał na myśli sposób, w jaki budowana była większość sieci w tamtych czasach. Opierały się one na potężnych maszynach zawierają­cych scentralizowane informacje, tzw. Mainframe. Z czasem komputery typu mainframe określa się mianem „duży komputer', „wielki system', „komputer” - w odróżnieniu od mikrokomputera - czy nawet „super­komputer'; obecne odpowiedniki tej nazwy to „serwery przedsię­biorstw”, „serwery korporacyjne', itp.) Użytkownicy mieli dostęp do informacji poprzez terminale (urządzenia z klawiaturą, monitorem i minimalnym oprogramowaniem) podłączone bezpośrednio do kom­putera głównego. Dane wędrowały kablem z terminala do komputera centralnego, który z kolei kierował je do innych terminali. Sieć scentralizowana działała wydajnie, ale bezpieczeństwo takiej konstrukcji było żałosne. Terminale nie mogły porozumiewać się bezpośrednio ze sobą, dlatego w przypadku uszkodzenia komputera centralnego przestawała pracować cała sieć.Baran miał na to proste rozwiązanie: zaprojektować taką sieć, w której każda jednostka będzie mogła porozumieć się z każdą inną. W założe­niach przypominała to pod wieloma względami sieć telefoniczną. Autor pomysłu tłumaczył:„W praktyce sieci telekomunikacyjne składają się z elementów sieci kratowej i sieci gwiaździstej. Twór taki nazywany jest czasem siecią zdecentralizowaną, ponieważ nie zawsze odpowiedzialność za działanie sieci oparta jest na jednym tylko punkcie”

Propozycja Barana była dobrze obmyślona - opracował on nawet sposób trasowania danych routingu - czyli funkcji odpowiedzialnej za dostar­czenie danych do adresata. Wynalazł system, w którym dane określały swoją własną trasę dynamicznie - w przypadku napotkania na prze­szkodę znajdowały inną drogę dotarcia do celu. System ten opierał się na określonych zasadach. Na przykład węzeł sieci (jeden z komputerów biorących udział w przesyłaniu danych) przyjmował porcję danych tylko wtedy, gdy miał wystarczająco dużo miejsca na ich przechowanie. Jeśli wszystkie możliwe połączenia były zajęte, dane oczekiwały na zwolnie­nie którejś z marszrut (path - ścieżek, po których poruszają się dane w sieci}. W ten sposób powstawał inteligentny system wymiany infor­macji. Baran szczegółowo opracował również inne aspekty sieci, a w tym:

Niestety, idee Barana wybiegały zbyt daleko w przyszłość. W Pentagonie nie ufano tak radykalnym koncepcjom i oficjale w Departamencie Obro­ny natychmiast odłożyli jedenastotomowy raport Barana na półkę. Do­piero jakiś czas później okazało się, że krótkowzroczność Pentagonu opóźniła narodziny Internetu. Do pomysłu powrócono w 1965 roku ­zorganizowano fundusze i w 1969 roku istnienie zdecentralizowanej sieci komputerowej stało się faktem. System nazwano ARPANET.

W rozumieniu współczesnych technologii sieciowych ARPANET był siecią o dość nieskomplikowanej konstrukcji. Składał się z połączonych komputerów czterech uniwersytetów (Instytut Badań w Stanford, Uni­wersytet w Utah Uniwersytet Kalifornijski w Los Angeles oraz Uniwer­sytet w Santa Barbara). Jedną z tych maszyn był DEC PDP-10. Niegdyś potęgi wśród maszyn liczących, dziś komputery te posłużyć mogą co najwyżej jako wątpliwe ozdoby.

W każdym razie ARPANET zaczynał skromnie: cztery komputery połą­czone dzierżawioną linią telefoniczną. W tamtym czasie wydawało się to niesamowitym osiągnięciem, jednakże euforia towarzysząca powstaniu ARPANET-u szybko ucichła gdy inżynierowie zdali sobie sprawę z kilku poważnych problemów. Jednym z nich był brak systemu operacyjnego odpowiedniego dla ogromnej sieci Barana.

Główną rolę miał teraz odegrać przypadek. W innej części Stanów Zjednoczonych naukowcy opracowywali właśnie tajemniczy system opera­cyjny. System ten - który ujrzał światło dzienne wraz z APRANET-em ­miał na zawsze zmienić świat. Nazywał się UNIX. W roku 1969, tym samym, w którym powstał ARPANET. Człowiek o naz­wisku Ken Thompson (wraz z Dennisem Ritchie i Josephem Ossanna) z firmy Bell Labs opracowują pierwszą wersję UNIX-a. Autorskie opro­gramowanie Thompsona instalowane jest na maszynie DEC (Digital Equipment Corporation) PDP-7.

UNIX Thompsona nie przypominał współczesnych UNIX-ów, które między innymi są systemami wielodostępnymi - jednocześnie na tym samym komputerze może pracować wielu użytkowników. Prototyp Thompsona był systemem jednostanowiskowym, w dodatku zupełnie „nagim”. Przybliżę może, co rozumiem pod pojęciem „nagi'.

System operacyjny kojarzymy z programem, który zawiera podstawowe narzędzia, edytory tekstów, pliki pomocy, interfejs okienkowy, narzę­dzia sieciowe i tak dalej. Przyzwyczajeni jesteśmy do środowiska rozbu­dowanego i przyjaznego użytkownikowi. Pierwszy, „nagi” UNIX zawie­rał wyłącznie te narzędzia, których istnienie konieczne było do popraw­nego funkcjonowania. Thompson w ogóle nie myślał o żadnych innych udogodnieniach. Miał na głowie nieco inny problem - jak w ogóle swój system uruchomić!

Gdy pierwszy UNIX wreszcie wystartował, narodziły się nowe proble­my. Po pierwsze, język programowania, w którym pracowali twórcy systemu nie bardzo nadawał się do takich zastosowań. I znów przypa­dek odegrał dużą rolę: mniej więcej w tym samym czasie inni naukowcy w Bell Labs (Dennis Ritchie i Brian Kernighan) opracowali nowy język programowania o nazwie C.

Język C

Z języka C często korzysta się do pisania kompilatorów i systemów ope­racyjnych.

„Dziś niemal wszystkie aplikacje wspomagające komunikację po­przez Internet napisane są w języku C. Zarówno system operacyj­ny UNIX, na którym oparta jest podstawowa struktura Internetu, jak i protokól TCP/IP sterujący wymianą danych zostaly napisane w języku C. Gdyby nie C, nie istniałby Internet w takiej postaci, w jakiej go teraz znamy”

Popularność języka C wynika z kilku faktów: · ma niewielkie wymagania i jest wydajny

Naukowcy Bell Labs byli świadomi tylko pierwszego z tych faktów, gdy podejmowali decyzję o przepisaniu kodu systemu w C. Wspólnie z Ritchiem, Thompson przeniósł UNIX-a na komputer DEC PDP-11/20. Od tamtego czasu rozpoczął się właściwy rozwój systemu. W latach 1970-1973 w języku C został przepisany cały kod. Pozwoliło to przy oka­zji na wyeliminowanie wielu błędów istniejących w oryginalnej wersji systemu.

Lata kształtowania się Internetu: 1972-1975

W latach 1972-1975 poczyniono postępy w innych dziedzinach. Ich analiza po­zwala zrozumieć, dlaczego to właśnie UNIX został wybrany jako system operacyjny Internetu.

W roku 1972 ARPANET składał się z około 40 hostów (tak potocznie nazywa się komputery, na których oparty jest Internet). Dzisiaj niejedna sieć lokalna ma ich więcej. Właśnie w tym roku Ray Tomlinson, członek Bolt, Beranek, and Newman, nc.zrewolucjonizował komunikację za pośrednictwem sieci. Stworzył pocztę elektroniczną.

Prawdopodobnie był to najważniejszy wynalazek dziesięciolecia. Poczta elektroniczna (e-mail) pozwoliła na prostą, wydają i niedrogą komunika­cję - co pozwoliło na wymianę idei i międzystanową współpracę osób pracujących nad różnymi technologiami. Można było określić wielu od­biorców jednej wiadomości, prace nad technologiami zaczęły posuwać się szybciej. Od tej pory już na zawsze sieć zakwitła życiem.

Kolejny kluczowy wynalazek powstał w roku 1974, gdy Vinton Cerf i Robert Khan opracowali protokół sterowania transmisją w sieci TCP (Transmission Control Protocol). Protokół wprowadzał nowy sposób przesyłu danych: wysyłane one były bit po bicie i dopiero na drugim końcu łączone w całość.

TCP jest głównym protokołem używanym w dzisiejszym Internecie. Został opracowany we wczesnych latach siedemdziesiątych i zintegrowany z dystry­bucją (dystrybucjami nazywamy różne wersje systemu UNIX) BSD ( Berkeley Software Distribution), stając się standardem internetowym. Dzisiaj niemal wszystkie komputery połączone z Internetem obsługują którąś z odmian TCP.W roku 1975 ARPANET był już w pełni funkcjonalną siecią. Najważniej­sze zostało zrobione - rząd amerykański mógł zacząć zbierać plony swo­ich inwestycji. Kontrolę nad ARPANET-em przekazano organizacji zna­nej dzisiaj pod nazwą Biura Systemów Informacji Obronnej (Defense Information Systems Agency).

Pozostało tylko zdecydować się na oficjalny system operacyjny dla ARPANET-u. Postawiono na UNIX. Powody tej decyzji były dość złożo­ne; poniżej postaramy się je przybliżyć:

UNIX osiąga pełnoletność

W latach 1974-1980, kod źródłowy systemu UNIX został rozesłany do uniwersytetów w całym kraju. To zaważyło na jego sukcesie. Środowiska akademickie i naukowe doceniły system i zaczął on być używany do ćwiczeń naukowych. To miało z kolei wpłynęło na jego zastosowanie w przedsiębiorstwach:„Uczelnie wychowywały ogromną liczbę doświadczonych użyt­kowników komputerowych i programistów systemowych, którzy wy chodząc z uczelni już znali system UNIX. Można więc było sobie „kupić” gotowych do pracy informatyków bez konieczności szko­lenia ich w jakimś nieznanym systemie”.

Dzięki temu, że źródła UNIX-a udostępniano darmowo - system rozwi­jany był przez studentów, co wkrótce doprowadziło do przeniesienia go na inne platformy i jeszcze powiększyło bazę użytkowników.

Ponieważ system operacyjny UNIX jest znany i szeroko dostępny, znanych jest także więcej błędów w strukturze zabezpieczeń. Stanowi to wyraźny kontrast z systemami firmowymi (opracowanymi na konkretną platformę lub do konkretnego zastosowania). Producenci takiego oprogramowania ujawniają kod źródłowy swoich produktów tylko wybranym osobom, co pozostawia wiele wątpliwości co do bezpieczeństwa takich systemów.

UNIX zyskiwał coraz większą popularność, a w 1978 roku firma AT&T postanowiła skomercjalizować system i zażądać opłat licencyjnych za swoją wersję systemu. Spowodowało to różne reakcje środowisk infor­matycznych. Najbardziej zaskakującym posunięciem, mającym na celu zachowanie twórczej niezależności było stworzenie przez Uniwersytet Kalifornijski w Berkeley własnej wersji UNIX-a. Dystrybucja Berkeley

okazała się bardzo popularna i wyznaczyła kierunki rozwoju stając się podstawą wielu dzisiejszych dystrybucji komercyjnych.

Tak więc wybór padł na system UNIX z kilku powodów, m.in: wytyczał kierunki rozwoju systemów operacyjnych

UNIX rozwija się wraz z Internetem

Kiedy już wybrano UNIX-a na system operacyjny sieci globalnej, kolejne etapy rozwoju systemu odbijały się na konstrukcji Internetu i od 1975 UNIX i Internet ewoluowały wspólnie. Skorzystało na tym wielu produ­centów oprogramowania i sprzętu wypuszczając własne wersje UNIX-a. Najpopularniejsze z nich wymienione są poniżej.

Wiele z powyższych odmian systemu UNIX przeznaczonych jest do in­stalacji na wysokowydajnych maszynach zwanych stacjami roboczymi (ang. workstations). Różnią się one od komputerów osobistych pod kil­koma względami. Przede wszystkim zbudowane są z najlepszych do­stępnych części, co czyni je dużo droższymi. Wpływ na cenę ma także fakt, iż stacji roboczych produkuje się niewiele, podczas gdy komputery osobiste wytwarzane są masowo, a firmy szukają każdego możliwego sposobu obniżenia kosztów. Dlatego też klient kupujący nową płytę główną do swojego PC ma dużo większą szansę natrafienia na produkt wadliwy. Ponadto stacje robocze są zazwyczaj bardziej zaawansowane technologicznie od komputerów domowych. Przykładowo, już w 1989 roku standardem w stacjach roboczych były: wbudowana karta dźwię­kowa, sieciowa oraz adapter SCSI (interfejs do podłączania urządzeń zewnętrznych oferujący dużą przepustowość). Obsługę ISDN dodano tuż po opracowaniu standardu tej usługi.

Jakie aplikacje można uruchomić w systemie UNIX?

W UNIX-ie można uruchomić wiele różnych programów. Są wśród nich wysokowydajne aplikacje do badań naukowych oraz prac nad sztuczną inteligencją, ale są też programy mniej wyspecjalizowane. Dla platformy tej zaadoptowano także znane, komercyjne programy w rodzaju Adobe Photoshop, Corel WordPerfect, czy . inne znane z platformy Windows (dla Linuxa - odmiany UNIX-a przeznaczonej dla komputerów osobi­stych - stworzono nawet pakiet bardzo przypominający Microsoft Office. Nazywa się StarOffice, jest bezpłatny dla użytkowników indywidual­nych i w wersji 5.0 zawiera edytor tekstów pozwalający na zapis w formacie edytora Word, arkusz kalkulacyjny, narzędzia graficzne, do obsługi poczty oraz tworzenia stron WWW).

UNIX to po prostu taka platforma, jak każda inna. Działające na nim systemy okienkowe dostarczane są zazwyczaj z całymi pakietami pro­gramów, zawierającymi m.in.: menedżery plików, edytory tekstowe, programy pocztowe, zegary, kalendarze, kalkulatory itd. Dostępny jest także bogaty wybór programów multimedialnych, jak: odgrywarki pli­ków filmowych, odtwarzacze płyt CD audio, programy do cyfrowej reje­stracji dźwięków i obrazów, aplikacje do korzystania z poczty multime­dialnej i wiele innych przydatnych i nieprzydatnych drobiazgów. W za­sadzie każdy program, o jakim jesteśmy w stanie pomyśleć napisano także dla UNIX-a.

UNIX a bezpieczeństwo internetowe

Zabezpieczenia UNIX-a to złożony temat. Mówi się, że system ten „kłóci się' sam ze sobą ponieważ cechy, które czynią go tak atrakcyjną platfor­mą dla serwerów, jednocześnie sprawiają, iż jest podatny na ataki. Został on zaprojektowany jako w pełni sieciowy system operacyjny, pozwalają­cy na wykonywanie niemal wszystkich poleceń zdalnie - na odległym o tysiące kilometrów komputerze można pracować tak, jakby znajdował się przed nami używając drugiego, połączonego z nim systemu. Dlatego też standardowo skonfigurowane usługi zdalne UNIX-a będą akcepto­wały połączenia z którejkolwiek części świata.

Ponadto UNIX jest systemem otwartym, jego kod źródłowy jest udo­stępniony publicznie. Stąd też luki w systemie znajdowane są nie tylko przez specjalizowanych programistów pracujących nad rozwojem UNIX­a, ale także przez komputerowych przestępców, krakerów i innych tego pokroju ludzi. Tym niemniej jest to także system bardzo dojrzały i przez lata dokonano wielu ulepszeń w jego zabezpieczeniach. Ulepszenia te,z których wiele wprowadzono już we wczesnych latach rozwoju syste­mu, to:

UNIX używany jest więc w zastosowaniach wymagających dużego bez­pieczeństwa. Dostępnych jest wiele narzędzi jeszcze bardziej wzmacnia­jących zabezpieczenia tego systemu; niejedno z nich można darmowo ściągnąć z Internetu. Narzędzia takie możemy podzielić na trzy podsta­wowe grupy:

Narzędzia do kontroli zabezpieczeń automatycznie wyszukują znane słabe miejsca systemu i błędy w konfiguracji mogące doprowadzić do naruszenia bezpieczeństwa. Są zaprojektowane do pracy w środowisku sieciowym, dlatego można ich używać do kontroli - jeśli zajdzie potrzeba - nawet tysięcy komputerów w sieci. Stanowią duże ułatwienie, ale sta­nowią też groźne narzędzie w rękach włamywaczy, którzy przecież tak samo łatwo mogą wejść w ich posiadanie.

Programy do obsługi plików dziennika (w których rejestrowane są po­szczególne zdarzenia w systemie) wspomagają kontrolę czynności wy­konywanych przez użytkowników oraz przeglądanie komunikatów systemowych. Wszystkie te zdarzenia rejestrowane są w plikach teksto­wych albo automatycznie przekształcane na format którejś z popu­larnych baz danych. Programy do obsługi plików dziennika to podsta­wowe narzędzie każdego administratora systemu UNIX, a generowane przez nie pliki mogą stanowić podstawę do wytoczenia sprawy przeciw­ko włamywaczowi. Należy jednak pamiętać, że zaawansowane funkcje rejestrujące powodują szybkie zmniejszanie się ilości miejsca na dyskach i mogą spowodować ogólny spadek wydajności.

Wreszcie, programy wykrywające ingerencję to w pewnym sensie inteli­gentny rodzaj opisanych powyżej programów do obsługi plików dzien­nika. Różnica polega na tym, że tym razem dzienniki są analizowane w czasie rzeczywistym i przeszukiwane pod względem ciągów wskazu­jących na pojawienie się intruza - po której to analizie może nastąpić określona reakcja programu.

Czym jest TCP/IP

Mianem TCP/IP określa się dwa protokoły sieciowe(inaczej mówiąc metody przesyłania danych) używane w internecie. Protokół kontroli transmisji TCP (ang. Transmission Control Protocol) i protokół internetowy IP (ang.Internet Protocol).

Protokoły TCP I IP należą do większej grupy tzw suite TCP/IP.W grupie tej znajdują się protokoły zapewniające przesyłanie danych w obrębie wszystkich usług dostępnych dla współczesnego internauty,wśród których najważniejsze to :

Istnieją dwa rodzaje protokołów TCP/IP:

PROTOKOŁY DZIAŁAJAĄCE NA POZIOMIE SIECI

Protokoły działające na poziomie sieci obsługują niejawny proces przesyłania danych. Użytkownik nie jest świadomy ich działania. Na przykład protokół IP służy do przesyłania danych między komputerem użytkownika, a komputerem zdalnym.

Dzięki protokołowi IP gwarantowane jest , że informacja dotrze do właściwego komputera.

PROTOKÓŁ DZIAŁAJĄCE NA POZIOMIE APLIKACJI.

Protokoły działające na poziomie aplikacji są natomiast widoczne dla użytkownika. Przykładowym protokołem działającym na poziomie aplikacji jest protokół FTP(ang. File Transfer Protocol) - jest on protokołem interaktywnym, czyli widziany jest efekt jego pracy(widzimy jakie pliki wysyłamy/odbieramy , widzimy komunikaty o błedach etc. )

HISTORIA TCP/IP

W 1969 roku jeden z organów rządowych do spraw ochrony, Defense Advanced Research Projects Agency (DARPA) zlecił swoim instytutom badawczym opracowanie sieci, która przetrwałaby atak nuklearny Związku Radzieckiego i mogła dalej funkcjonować nawet bez kontroli centrali głównej. Prototypem tego systemu został ARPANET, oparty w dużej mierze na badaniach prowadzonych w latach 1962-63.

Pierwotny ARPANET działał dość dobrze, lecz rozbudowa takiej sieci niosła ze sobą kosztowne metody. Rozpoczęto więc szukania bardziej niezawodnego standardu, które zakończyły się w połowie lat siedemdziesiątych opracowaniem protokołu TCP/IP.

TCP/IP miał znaczną przewagę nad innymi protokołami. Miał nieznaczne wymagania i stosunkowo niski koszt implementacji. W związku z tym szybko zyskał popularność. Do roku 1983 został zbudowany w dystrybucji UNIX. Wkrótce też stał się internetowym standardem i tak pozostało do dnia dzisiejszego.

Obecnie protokół TCP/IP stosowany jest nie tylko w internecie, ale również w sieciach lokalnych. Protokół TCP/IP ma wiele zalet i oferuje dużo więcej niż inne protokoły sieciowe. Jedną z takich zalet jest fakt, iż współpracuje z różnorakim sprzętem i oprogramowaniem i systemami operacyjnymi. Dzięki temu przy pomocy tego protokoły można stworzyć sieć łączącą różne komputery i systemy operacyjne (np. składające się Maców, Pc-tów, komputerów Sun etc. )Komunikowanie się tych komputerów będzie się odbywało dzięki protokołowi TCP/IP.

Protokół ten obsługiwany jest przez większość platform, lecz w różnym zakresie. Prawie wszystkie współczesne systemy operacyjne zawierają w sobie protokół TCP/IP. Poniżej przedstawię systemu operacyjne, które korzystają z protokołu TCP/IP:

Platforma

Obsługa TCP/IP

UNIX

Wbudowana(w większości dystrybucji)

DOS

Nie wbudowana. Potrzebny program Piper/IP

Windows 3. 11

Nie wbudowana. Potrzebny program TCPMAN

Windows 95

Wbudowana

Windows NT

Wbudowana

Macintosh

Nie wbudowana. Potrzebny program MacTCP

OS/2

Wbudowana

AS/400 OS/400

Wbudowana

Źródło: Opracowanie własne

Na platformach , które nie mają wbudowanego protokołu TCP/IP możliwa jest jego implementacjia dzięki specjalnym programom jak TCPMAN, czy Piper/IP.

JAK DZIAŁA TCP/IP

0x08 graphic
0x08 graphic
0x01 graphic

Działanie protokołu TCP/IP oparte jest na zasadzie stosu protokołów. Stos ten jest zbiorem wszystkich protokołów koniecznych do przesyłania danych pomiędzy dwoma komputerami. Stos ten składa się z pięciu warstw.

Po przejściu porcji danych przez proces pokazany na rysunku dane są wysyłane do odbiorcy- innego komputera lub sieci, gdzie odbywa się proces odwrotny do pokazanego na rysunku. Procesom tym towarzyszą złożone procecy kontroli błędów.

W skład protokołu TCP/IP wchodzą protokoły działające na poziomie sieci. Protokoły te zaangażowane są w niejawny proces przesyłania danych-pozostają niewidoczne dla użytkownika, chyba że skorzysta się z tak zwanych snifferów.

Najważniejsze protokoły działające na poziomie sieci to:

Protokół rozróżniania adresów (ARP)

Protokół rozróżniania adresów ARO (Address Resolution Protocol służy do zamiany adresów internetowych na adresy fizyczne, zaangażowany jest więc w kluczowy proces w trasowaniu (routingu) informacji przez łącza internetowe. Dane przed wysłaniem są dzielone na pakiety (bloki) sformatowane tak, by mogły zostać przesłane siecią. Pakiety te zawierają numeryczny adres internetowy IP (adres IP to cztery liczby z zakresu ­255 oddzielone kropkami, np. 192.204.1.34) zarówno komputera wysyła­jącego, jak i odbierającego. Pozostaje tylko określić adres sprzętowy komputera docelowego - i tu właśnie wkracza ARP.

Żądanie wysłane przez protokół ARP dostarczane jest do komputera docelowego, który odpowiada swoim adresem sprzętowym. Ten prze­chwytywany jest przez komputer wysyłający i od tej chwili może już się rozpocząć proces wymiany danych.

W konstrukcji ARP ciekawym elementem jest pamięć podręczna. Aby przybliżyć sobie to pojęcie, przyjrzyjmy się konstrukcji przeglądarek WWW (np. Netscape Nawigator, czy Microsoft Internet Explorer): wszystkie one używają pamięci podręcznej. Pamięć podręczna to (w przypadku przeglądarek) miejsce na dysku, gdzie przechowywane są elementy często odwiedzanych stron WWW (czyli same strony, przyci­ski, grafika, itd.) - dzięki temu podczas kolejnych odwiedzin na danej stronie ściągnięte będą jedynie fragmenty, które uległy zmianie od czasu ostatniej wizyty, a całkowity czas ładowania będzie dużo krótszy.

Podobnie w pamięci podręcznej protokołu ARP „zapamiętane" są adresy sprzętowe komputerów i nie ma konieczności ponownego wysyłania zapytania o ten sam adres, co stanowi oszczędność czasu i zasobów sie­ciowych.

Łatwo zgadnąć, jakie ryzyko związane jest z pamięcią podręczną w ARP. Buforowanie (czyli tymczasowe przechowywanie w pamięci podręcznej) adresów - nie tylko zresztą w ARP - stanowi unikalny rodzaj zagrożenia: korzystając z niego łatwiej jest włamywaczowi upozorować połączenie z innego komputera podając jako swój jeden z buforowanych adresów.

Protokół komunikacyjny sterowania siecią Internet (ICMP)

Protokół komunikacyjny sterowania siecią Internat - ICMP (Internet Control Message Protocol służy do obsługi informacji kontrolnych oraz komunikatów o błędach przekazywanych pomiędzy dwoma (lub więcej) komputerami w procesie przesyłania danych. Dzięki niemu o komu­nikatach tych „wiedzą" wszystkie hosty biorące udział w połączeniu. Dlatego też ICMP ma zasadnicze znaczenie przy diagnozowaniu pro­blemów sieciowych. Informacje diagnostyczne dostarczane przez ten protokół mówią nam:

Najbardziej znanym zastosowaniem protokołu ICMP jest narzędzie sieciowe ping. Program ten służy do sprawdzania czy zdalny komputer działa poprawnie, a także do pomiaru czasu przesyłania pakietów. Metoda jego działania jest prosta: kiedy użytkownik „pinguje° zdalny komputer, w kierunku badanego hosta wysyłana jest seria pakietów, które „odbijane' są do miejsca nadania. Jeśli komputer użytkownika nie otrzymuje odbitych pakietów, program powiadamia o błędzie, co zazwyczaj oznacza awarię zdalnego komputera.

Czytelnikom zainteresowanym szczegółowymi informacjami o protokole ICMP polecam przestudiowanie dokumentu RFC 792. (http://info.internet.isi.edu:80/in­

Protokół internatowy (IP)

Protokół internetowy - IP (Internet Protocol należy do warstwy siecio­wej i dostarcza bloki danych wszystkim protokołom w pakiecie TCP/IP. IP stanowi więc serce całego fascynującego procesu przemieszczania się danych po łączach internetowych. Aby ten proces zrozumieć, przyjrzyj­my się modelowi datagramu IP.

Jak widać na ilustracji, datagram IP składa się z kilku części. Pierwsza z nich, naglówek, zawiera rozmaite informacje, w tym adres z którego pakiet jest wysyłany oraz adres docelowy. Pozostała część datagramu zawiera właściwe dane przesyłane przez sieć.

Niezwykłą cechą protokołu internetowego jest fakt, że datagramy mogą ulec fragmentacji podczas podróży - po osiągnięciu miejsca przeznacze­nia są ponownie łączone, nawet jeśli nie przybyły w takiej kolejności, w jakiej zostały wysłane.

Różne informacje nagłówkowe

Adresy IP pochodzenia pakietu

Adresy IP przeznaczenia pakietu

Dane

0x08 graphic

Wiele rodzajów pakietów posiada określony tzw. „czas życia pakietu”. Czas życia pakietu jest wartością numeryczną, która nieustannie zmniejsza się i po osiągnięciu wartości zero powoduje wygaśnięcie pakietu.

Protokół IP polega na dostarczaniu pakietów poprzez Internet.

PROTOKÓŁ TRANSMISJI (tcp)

Protokół (TCP) jest jednym z głównych protokołów obsługujących wymianę danych w Internecie. Odpowiada on za istotne procesy jak transfer plików czy sesje zdalne. Poza tym protokół (TCP) posiada wbudowaną funkcję zwaną gwarantowanym przesłaniem danych, co umożliwia aby dane dotarły do odbiorcy w takim samym stanie w jakim zostały wysłane.

Działanie TCP polega na utworzeniu wirtualnego obwodu pomiędzy komputerem , który wysyła i odbiera informacje. Obwód ten ustalany jest poprzez trzyczęściowy proces zwanym procesem „potwierdzaniem trzyetapowym”.

0x08 graphic
0x01 graphic
0x01 graphic

0x08 graphic

0x01 graphic
0x01 graphic

0x08 graphic
0x01 graphic
0x01 graphic

Po ustaleniu obwodu dane mogą się przemieszczać w obu kierunkach co nazywa się transmisją pełnodupleksową(ang. Full-duplex). W razie wykrycia błędu dany pakiet wysyłany jest ponownie. Oznacza to , że TCP wyposażony jest w kontrolę błędów.

PORTY

Na zdalnym komputerze mogą być uruchomione różne programy korzystające z protokoły TCP/IP. Większość z nich oparta jest na strukturze działania client-serwer. Każda działająca aplikacja posiada unikalny adres zwany portem. Kiedy do tego portu zostaje wysłane żądanie połączenia, wtedy dana aplikacja zostaje uruchomiona. Na większości serwerów działa tysiące portów. Istnieją jednak tzw. Porty standardowe do których przypisane są dane już aplikacje- chociaż ustawienia te można zmieniać. Niektóre porty i odpowiadające im aplikacje przedstawiłem w tabeli.

Usługa lub aplikacja

Port

Protokół przesyłania plików (FTP)

Port 21 TCP

Telnet

Port 23 TCP

Protokół przesyłania poczty elektronicznej (SMTP)

Port 25 TCP

Gopher

Port 70 TCp

Finger

Port 79 TCP

Protokół HTTP obsługujący www

Port 80 TCP

Źródło: Opracowanie własne

Pokrótce postaram się pokrótce opisać najważniejsze z tych aplikacji i usługi.

TELNET

Najlepszy opis usługi TELNET znajduje się w specyfikacji RFC-854:

„Zadaniem protokołu Telnet jest zapewnienie komunikacji wielozadaniowej, dwukierunkowej, ośmiobitowej i zorientowanej bajtowo. Umożliwia połączenie ze sobą urządzenia terminalowego i procesu pozwalającego na jego obsługę”

Telnet pozwala nie tylko na logowanie się na zdalnym komputerze , ale również wykonywanie na nim operacji. Poprzez usługę telnet użytkownik może odczytywać pocztę elektroniczną, dlatego też jest wciąż bardzo popularną aplikacją.

Telnet uruchaminy jest poleceniem

# telnet nazwa hosta/numer IP

Po uruchomieniu polecenia uruchamiana jest sesja telnetowa.

FTP

FTP -protokół przesyłania danych (ang. File Transfer Protocol), jest standardowym protokołem służącym do przesyłania plików z jednego systemu na drugi. Jego zadania określono w specyfikacji RFC 0765:

  1. Udostępnienie plików(programów bądź danych)

  2. umożliwienie niebezpośredniego korzystania z komputerów zdalnych (przy użyciu programów)

  3. ujednolicenie sposobów korzystania z różnych nośników danych na komputerze zdalnym

  4. niezawodne przesyłanie plików

Prace nad metodą przesyłania plików trwały ponad 20 lat. W ciągu tego czasu protokół FTP zyskał wiele ulepszeń.

Przesyłanie plików przez FTP odbywa się w środowisku client-serwer. Użytkownik uruchamiając jednego z klientów FTP powoduje wysłanie żądania do serwera plików , zazwyczasj do portu 21.

FTPD

FTPD jest standardowym demonem serwera FTP. Jego zadaniem jest odpowiadanie na żądania połączenia clienta FTP. Demon ten znajduje się w większości dystrybucji systemów UNIX.

FTPD oczekuje na żądanie połączenia. Po jego otrzymaniu pyta się o login i hasło. Istnieje również możliwość zalogowania się anonimowo (anonymous login)-jeśli serwer dopuszcza taką możliwość.

Protokół przesyłania poczty elektronicznej (SMTP)

Zadania protokołu przesyłania poczty elektronicznej (SMTP-Simple Mail Transfer Protocol) najzwięźlej opisuje specyfikacja RFC 821::

„Protokół przesyłania poczty elektronicznej SMTP służy do wydajnego i niezawodnego przesyłania poczty elektronicznej (e-mail)”

Protokół SMTP w bardzo małym stopniu wykorzystuje zasoby systemo­we. Użytkownik, korzystając z dowolnego klienta SMTP, przekazuje żądanie do serwera SMTP. Następnie uruchamiane jest dwukierunkowe połączenie. Klient wysyła komendę MAIL oznaczającą, że chce wysłać wiadomość. Jeśli SMTP pozwala na wykonanie takiej operacji, wysyła potwierdzenie. Sesja zostaje rozpoczęta. Klient może już wysłać nazwę odbiorcy, jego adres IP oraz samą wiadomość (tekstową).

Pomimo tak prostej zasady działania protokołu, usługi pocztowe to źró­dło niezliczonych luk w bezpieczeństwie. Przyczyną tego może być m.in. duża liczba dostępnych opcji - częstym powodem powstawania luk jest zła konfiguracja SMTP.

Protokół przesyłania hipertekstu (HTTP)

Protokół przesyłania hipertekstu (H'TTP Hypertext TransferProtocol jest chyba najbardziej rozpowszechnionym z protokołów. To właśnie dzięki niemu możemy „surfować" po sieci WWW. Według dokumentu RFC 1945, HTTP to:

szybki i niewymagający protokół poziomu aplikacji obsługujący rozproszone systemy informacji połiczonych hiperłączami. jest zorientowany obiektowo i ma wiele zastosowań - m.in. w serwe­rach nazw, systemach rozproszonych - dzięki rozszerzonym funk­cjom wysyłanie żądań.

Nowsza specyfikacja protokołu HTTP, RFC 2068 dostępna jest pod adre­sem: http://finfo.internet.isi.edu:80/in-notes/rfc/files/rfc2068.txt.

Protokół ten na zawsze zmienił oblicze Internetu. Udostępnił go prze­ciętnemu człowiekowi. HTTP przypomina nieco usługę Gopher. Jego działanie także oparte jest na wymianie żądań i odpowiedzi. To istotna cecha: Gopher i HTTP nie wymagają, tak jak Telnet, logowania - po któ­rym w ciągu całej sesji wykorzystywane są zasoby systemowe. W HTTP klient korzysta z tych zasobów tylko wtedy, kiedy wysyła żądanie bądź otrzymuje dane.

Proces ten możemy zaobserwować podczas korzystania z którejś ze zna­nych przeglądarek WWW - Netscape Nawigator czy Internet Explorer. Przy ściąganiu każdego z elementów strony (tekstu, grafiki, dźwięku), przeglądarka jeden raz skontaktuje się z serwerem. Przyjrzyjmy się in­formacjom wyświetlanym na pasku stanu w lewym dolnym rogu. Widać tam dokładnie, kiedy przeglądarka łączy się z serwerem, otrzymuje od­powiedź, ściąga dane.

Nie ma specjalnego znaczenia, jakie dane ściągamy. Na stronach WWW autorzy umieszczają najrozmaitsze pliki multimedialne. W tabeli 4.7 wymienione zostały najpopularniejsze programy do obsługi HTTP.

Protokół przesyłania wiadomości w sieci USENET (NNTP)

Protokół przesyłania wiadomości w sieci USENET (NNTP - Network News Transfer Protocol to jeden z częściej używanych protokołów. Dzięki niemu uzyskujemy wygodny dostęp do grup dyskusyjnych, czyli ogólnie mówiąc USENET-u. Założenia protokołu określono w RFC 977:

NNTP słupy do dystrybucji, ścigania oraz wysyłania artykułów news transmisją strumieniową. Artykuły przechowywane są w centralnej bazie danych. NNTP pozwala wybierać tylko intere­sujące nas tematy. System pozwala na indeksowanie, budowę od­sylaczyorazkasowanie wygasłych wiadomości.

NNTP zawiera zarówno elementy protokołu SMTP jak i TCP. Z tym pierwszym wiąże go możliwość wydawania poleceń w trybie teksto­wym, zaś z drugim transmisja strumieniowa. Grupy dyskusyjne USENET-u - miejsca w Internecie poświęcone wymianie zdań na różne tematy - skupiają wokół siebie wiele osób, także w Polsce. Tematy obej­mują w zasadzie każdą dziedzinę życia: od typowo komputerowych, np. pl.comp.security czy też pl. comp.os. linux, aż po zupełnie nie związane z informatyką, jak np. pl. rec.zwierzaki, a nawet pl.hum.poezja.

Adresy IP

Cała komunikacja w Internecie opiera się na zestawie protokołu TCP/IP. Urządzenia pracujące w sieci TCP/IP rozróżnia się za pomocą unikalnego adresy, jaki zostaje im przyznany. Każde urządzenie w sieci internetwej ma swój unikalny adres (tzw.adres IP).

W całym internecie nie ma dwóch takich samych adresów IP.

Adres IP składa się z czterech liczb dziesiętnych z zakresuo od 0 do 255, każdy rozdzielony kropkami (.).Ponieważ adresy IP są używane do jednoznacznej identyfikacji każdego komputera w sieci nie można go używać dowolnie. Przy podłączeniu do internetu należy używać adresów IP przypisanych przez dostawców internetowych.

Do identyfikacji adresów IP służy adres sieci i maska sieci.Ponadto w obrębie danej sieci specjalne znaczenie ma adres rozgłoszeniowy( broadcast address).

Adres Sieci

Adres sieci nie powinien być przypisany żadnego urządzeniu w sieci. Jest to adres ,który identyfikuje daną sieć komputerową. Zazwyczaj ostatni oktet adresu IP ma koncówkę (0).

Maska Sieci

W połączeniu z adresem sieci stosuje się maskę sieci (net mask), która określa zakres kolejnych adresów IP przypisanych danej sieci.

Adres Rozgłoszeniowy

Adres rozgłoszeniowy ma zazwyczaj końcowy okter (255). Przesyłanie danych pod ten adres oznacza rezesłanie ich do wszystkich urządzeń urządzeń w danej sieci.

Oto przykładowy blok adresów IP stosowanych w sieci :

210.248.12.0 - Adres sieci

210.248.12.1

210.248.12.2 - Adresy IP przypisane do urządzeń

210.248.12.3

210.248.12.255 - Adres rozgłoszeniowy

Topologie Sieci Komputerowych

SIEĆ TYPU LAN (Lokalna)

Sieć jest zespołem komputerów , które mogą się wzajemnie komunikować, mogą wspólnie korzystać z zasobów(takich jak dyski twarde, drukarki) oraz mają dostęp do odległych komputerów głównych lub innych sieci.

0x01 graphic

Oto podstawowe składniki oprzyrządownia sieciowego:

0x01 graphic

Wszystkie stacje robocze i serwery muszą być wyposażone w karty sieciowe. Karty sieciowe łączą serwery ze stacjami roboczymi za pomocą okablowania. Urządzenia peryferyjne , jak np. drukarki mogą być przyłączane do stacji roboczyć, do serwerów lub do okablowania.

Elementy sieci:

Serwer - Serwer est komputerem, który zapewnia stacjom roboczym i innym klientom dostęp do zasobów i usług sieciowych.

Klient - Klient jest dowolnym urządzeniem, takim jak komputer osobisty, drukarka lub inny serwer, korzystający z usług lub zasobów serwera. Najpopularniejszym klentem jest stacja robocza.

Stacja robocza - Typowa stacja robocza jest oddzielnym komputerem, który może pracować niezależnie od sieci. Wykonuje ona swoje własne operacje i może zarządzać swoim własnym oprogramowaniem. Stacja robocza połączona jest z siecią w celu korzystania z szerszych zasobów.

Urządzenia peryferyjne - Urządzenia peryferyjne to urządzenia związane z zastosowaniem komputerów, jak np. drukarka lokalna, stacje dysków czy modemy.

Karta sieciowa - Karta sieciowa jest układem elektronicznym zainstalowanym w każdym komputerze w celu umożliwienia wzajemnej komunikacji serwerom i stacjom roboczym

Łącza komunikacyjne - Łącze komunikacyjne jest fizycznym połączeniem pomiędzy urządzeniami w sieci, które umożliwia komunikację między serwerami i stacjami roboczymi.

Topologia okablowania odnosi się do fizycznego układu systemu okablowania. Podczas , gdy wczesne systemu sieciowe ograniczone były do prostych topologii, wiele dzisiejszych systemów daje ich duży wybór.:

TOPOLOGIA LINIOWA(magistralowa)

Topologia liniowa oznacza, że wszystkie urządzenia sieciowe podłączone są szeregowo do systemy okablowania. Oznacza to , że wszystkie urządzenia podłączone są do wspólnego estawu kabli, gdzie wszystkie sygnały wysyłane są do wszystkich urządzeń.

TOPOLOGIA GWIAZDOWA

Przy topologii gwiazdowej , urządzenia sieciowe podłączone są do centralnych urządzeń rozdzielających sygnał. Urządzenia te zwane są gwiazdami, koncentratorami.

Pierścień gwiazdy

W sieci pierścieniowej każde urządzenie sieciowe ma połączenia z urządzeniem poprzedzającym go w pierścieniu, jak i urządzeniem, które po nim następuje.

0x01 graphic

Rozróznia się kilka rodzajów sieci pod względem jej rozmiarów. Są to sieci typu :

Sieci LAN to sieci lokalne. Mogą one obejmować kilka, kilkanaście lub kilkadziesiąt komputerów znajdującym się w jednej lokalizacji , jak ą jest np. budynek.

Sieci MAN to sieci obejmujące kilka jakiś region lub pod którą podlega kilka sieci lokalnych LAN.

Sieci WAN to sieci rozległe. Przykładem może tu być internet. Są to sieci międzynarodowe

0x01 graphic

Rys historyczny systemu Linux

W 1983 roku Richard Stallman porzucił pracę w Massachusetts Institute of Technology i ogłosił rozpoczęcie prac nad projektem GNU. Stallman postanowił stworzyć kompletny system operacyjny kompatybilny z Unix-em, który mógłby być używany za darmo, swobodnie modyfikowany i rozpowszechniany. Stopniowo gromadził on wokół siebie coraz więcej osób, współpracujących nad jednym z najważniejszych projektów w historii oprogramowania. Powstały podstawowe biblioteki, kompilatory, mnóstwo potężnych narzędzi programistycznych. W 1991 oku Linus Travis rozpoczął pracę nad jądrem systemu, które później zostało zintegrowane z resztą systemu GNU. Początkowo nowy system nie zyskał większej popularności wśród użytkowników pecetów. Jego instalacja była bardo skomplikowana, a obsługa nastręczała wiele trudności. Na niekorzyść Linuksa przemawiał również fakt, że jego pierwsza wersja była zbyt uboga, aby mogła znależć szersze zastosownie. Nawet późniejsze dołączanie kompilatora języka C oraz zaimplementowanie kilku podstawowych poleceń uniksowych nie przysporzyło systemowi zolenników. Linux wzbudził zainteresowanie dopiero wtedy, gdy Torvalds zapewnił możliwość przenoszenia oprogramowania między swoim systemem a produktami komercyjnymi. Udostępniony za pośrednictwem serwerów FTP bezpłatny kod źródłowy wkrótce rozprzestrzenił się na całym świecie. Uwagi i sugestie użytkowników przesyłane pocztą elektroniczną przyczyniły się do szybkiego udoskonalenia systemu.

Początkowo Linux charakteryzował się wieloma wadami, wynikającymi z braku doświadczenia jego twórcy. System miał problemy ze stabilnością i współpracą poszczególnych jego elementów. Na poplarnośc Linuxa złożyło się kilka czynników. Przede wszystkim system jest produktem całkowicie darmowym. Każdy kto ma dostęp do Internetu , może bezpłatnie zainstalować Linuxa, korzystając z jednego z wielu serwerów FTP. Dodatkowa zaleta takiego rozwiązania to zaoszczędzenie miejsca na dysku twardym, ponieważ nie trzeba przechowywać u siebie kopii wersji instalacyjnej. Ponadto na rynku dostępne są wersje na płytach CD-ROM sprzedawane po kosztach dystrybucji. Linux, ze względu na swą wielozadaniowość świetnie nadaje się do obsugi sieci komputerowych. Maszyny Linuxowe z powodzeniem pracują jako routery, serwery poczty elektronicznej, www, dns czy ftp. Zaletą Linuxa są jego małe wymagania sprzętowe. Jego zapotrzebowanie na pamięć i moc procesora jest znacznie mniejsze od innych komercyjnych systemów. Linux działa przy tym znacznie szynciej. Do sprawnego funkcjonowania systemu potrzebuje komputera klasy 386 wyposażonego w 8 MB pamięci RAM.

GNU/Linux tak dziś popularny w różnych odmianach (Red Hat Linux, Debian GNU/Linux itd. ) nie powstałby , gdyby nie ogromne zaangażowanie ludzi pracujących nad w/w projektem. W 1998 roku na konferencji Free Delevopers Forum zaakceptowano nazwę Open Source jako najbardziej przyjazną nazwę dla biznesu.

Co przemawia za wyborem Linuxa

Przede wszystkim jest to system zupełnie darmowy. Dostępna jest też ogromna ilość bezpłatnego oprogramowania dla niego. Programiści tworzący poszczególne komponenty systemu bardzo głęboko „wchodzą w sprzęt”. Dzieki temu systemy oparte na Linuksie potrafią maksymalnie wykorzystać możliwości komputera. Modułowa budowa systemu umożliwia indywidualne dopasowanie systemu do własnych potrzeb. Poszczególne elementy są ze sobą luźno połączone, dzięki czemu nie ma problemu wymiany np. sendmaila na inny program rozsyłający pocztę. W przypadku wykrycia błędu w funkcjonowaniu jednego z komponentów w ciągu kilku godzin w Internecie pojawia się szczegółowy opis oraz usuwające go uaktualnienie. Administratorzy w sposób świadomy mogą kontrolować wproadzane zmiany. Ważną cechą systemu jest jego wielozadaniowość. Linux potrafi bez uszczerbku dla systemu wykonywać kilka zadań jednocześnie.

Wady Linuxa

Na niekorzyść Linuxa przemawia bez wątpienia jego skomplikowana obsługa. System wymaga też nieustannej fachowej opieki. Serwer internetowy oparty na Linuksie pozostawiony samemu sobie szybko stanie się łakomym kąskiem dla „domorosłych piratów”.

Linux spotyka się często z kłopotami dotyczącymi najnowszych komponentów sprzętowych. Problem ten powli przechodzi do historii, ale wciąż się zdarza , że producenci sprzętu z opóźnieniem udostępniają specyfikację urządzeń. Dzięki temu użytkownicy Linuxa z pewnym opóźnieniem mogą korzystać np. z zalet karty dźwiękowej SB Live!, ponieważ nie powstał jeszcze odpowiedni sterownik.

0x01 graphic

W poniższej pracy postaram się przedstawić i dokładniej opisać metody konfiguracji i zabezpieczenia serwera Linuksowego uruchomionego na jednej z odmian Linuxa : Red Hat Linux. Autorzy tej dystrybucji położyli szczegóny nacisk na łatwość konfiguracji i obsługi systemu., co nie jest bez znaczenia dla użytkowników początkujących oraz tych, którzy dotąd korzystali głównie z produktów firmy Microsoft. Instalacja systemu następuje dzięki przyjemnemu setupowi , który przeprowadza użytkownika krok po kroku przez procem konfiguracji sprzętu i kopiowania plików na dysk twardy. Zarządzanie aplikacjami w systemie odbywa się za pomocą mechanizmu RPM (Red Hat Package Managment). Firma Red Hat Software wprowadziła do swojego produktu wiele pionierskich rozwiązań, które przejmują później inni producenci. Wersja Red Hat pracuje nie tylko na procesorach Intel, lecz również na SPARC i Alpha.

Zasady działania Linuxa jako systemu operacyjnego.

System operacyjny to środowisko konieczne do uruchomienia i używania komputera osobistego. Linux jest systemem operacyjnym ,podobnie jak Windows czy MacOs instalowanych na większości komputerów osobistych. Systemy te zostały zaprojektowane dla zwykłych użytkowników ,natomiast Linux może być używane przez zwykłych użytkowników , jak i przez użytkowników (firmy) chcące uruchamiać własne serwery podłączone do Internetu. Linux jako jeden z nielicznych systemów operacyjnych oferuje ze zalety, które inne sytemy operacyjne nie posiadają. Przedstawiam je poniżek :

0x08 graphic

0x08 graphic

0x08 graphic
0x01 graphic

Linux został opracowanay i dostarczony w ramach projektu GNU (www.gnu.org).

Red Ha Linux jest obecnie jedną z najbardziej popularnych dystrubycji Linuxa na świecie. Dlatego właśnie postanowiłem skoncentrować się na tej dystrybucji oraz opisać sposoby jego właściwej instalacji ,konfiguracji oraz zabezpieczenia.

Instalacja Red Hat Linux

Podział dysku na partycje

Filozofia systemu plików w DOS-ie i w Linuxie może być inna, lecz ostateczny cel tworzenia partycji jest taki sam.Partycja pozwalają na odseparować niekompatybilne dane i dzielą duże obszary dysku na mniejsze fragmenty, które są łatwiejsze w zarządzaniu i używaniu. Linux wymaga co najmniej dwóch partycji: partycji wymiany (swap partyction) i partycji głównej (root partyction). Przykładem dobrego zarządznia przestrzenią dysku jest podzielenie go na kilka partycji. Jedna z nich powinna być przeznaczona dla plików zapisywanych przez użytkowników a inne partycje do przechowywania oprogramowania systemowego. W razie awarii jednej z partycji inne partycje pozostają wciąż aktywne, dlatego jest to rozwiązanie zwiększające bezpieczeństwo sieci. Oto najczęściej używane partycje w systemie Linux Red Hat :

Nazwa partycji

Opis

Swap

Partycja wymiany. Zawiera przestrzeń wymiany dla systemu operacyjnego

Root(/)

Partycja główna.Jest to podstawa całego systemu plików. Przechowuje ona wszystkie pliki potrzebna do załadowania systemu.

/boot

Umieszczone są w niej pliki potrzebne do ładowania początkowego systemu.

/usr

Partycja usr zawiera większość oprogramowania systemowego. Ta partycja powinna mięc co najmniej 700MB.

/home

Partycja home zawiera wszystkie katalogi domowe i pliki użytkowników.

/var

Katalog var przechowuje wszystkie pliki buforowane drukarek, pliki poczty, pliki wiadomości i pliki dzienników systemowych.

/tmp

Partycja do przechowywania plików tymczasowych

Partycja wymiany

Partycja wymiany zawiera przestrzeń wymiany dla systemu operacyjnego Linux. Używa ona dysku twaredo jako rozszerzenia pamięci RAM. Nieaktywne procesu systemu są przesuwane z pamięci RAM i przechowywane na dysku twardym, gdy zajmowana przez nie pamięć RAM potrzebna jest przez aktywny proces.

Do partycjonowania dysku twardego służy program fdisk lub jego graficzny odpowiednich Disk Druid. Oto przykładowe partycje założone w systemie Red Hat:

Punkt montowania

Urządznie

Rozmiar

Typ partycji

/

hda5

256MB

Linux Native

/boot

hda6

5MB

Linux Native

/usr

hda7

512MB

Linux Native

/home

hda8

1146MB

Linux Native

/var

hda9

256MB

Linux Native

/tmp

hda10

256MB

Linux Native

<Swap>

hda11

128MB

Linux Swap

Wybór pakietów do instalacji

Na koniec instalacji powinniśmy rozważyć , jakie pakiety należy zainstalować na serwerze. Wiele serwerów jest systemami ogólnego przeznaczenia, w takim przypadku należałoby zainstalować całe oprogramowanie systemowe. Inne serwery maja bardziej szczegółowe funkcje ,które wymagają tylko tylko części oprogramowania systemowego. Nie należy instalować całego oprogramowania na dedykowanych serwerach. Należy wybrać tylko te oprogramowanie ,które jest nam potrzebne., gdyż dobrze zainstalowany Serwer Linuxa jest pierwszym krokiem do bezpiecznego i stabilnego systemu. Należy przy tym pamiętać ,iż w samej dystrybucji Linuxa istnieje wiele pakietów ,które są same w sobie zagrożeniem dla bezpieczeństwa systemu. Pakiety te powinny być na samym początku instalacji odinstalowane. Niektóre z tych pakietów to:

Procinfo

Pakiet pokazujący informacje o naszym serwerze

Rdist

Pakiet zarządzający kopiami zapasowymi na wielu serwerach

Nis

Pakiet umożliwiający podgląd systemowych informacji ,takich jak :login names ,passwords, home directories

Finger-server

Pakiet umożliwiający innym użytkownikom podgląd innych użytkowników na serwerze.

Nfs-server

Pakiet umożliwiający mapowanie dysków sieciowych innych serwerów jako dyski lokalne

Rsh-server

Pakiet umożliwiający zdalne logowanie się do systemu bez autoryzacji

Rusers

Pakiet umożliwiający dowiedzenia się kto w danym momencie zalogowany jest do sytemu

Podstawowy system zabezpieczeń

Zalecane jest ,aby wyłączona została możliwość uruchomienia systemu z dyskietki oraz wprowadzenie hasła do biosu ,które uniemozliwi nieupoważnionym osobom zmianę ustawień systemowych komputera (system date, system time, boot from floppy)i zwiększy jego bezpieczeństwo.

Wybór właściwych haseł

Większośc ludzi korzysta z komputera, zapisuje na nim cenne pliki i dane i nie zdaje sobie,że często jedyną metodą zabezpieczeń chroniącą ich pliki przed osobami nieupoważnionymi jest ich hasło. Hasła mogą być złamane przy pomocy wielu dostępnych na rynku programów ,które działają na zasadzie (brute force). Dlatego też uruchamiane przez administratora sieci łamaczy haseł jest dobrym pomysłem. Pozwoli to wyłapac z systemu hasła ,które są łatwe do odgadnięcia. Dlatego ,aby zmniejszyć do minimum możliwość złamania hasła przez w/w programy zalecane jest aby polityka bezpieczeństwa haseł była następująca:

Hasła powinny mieć co najmniej sześć znaków długości (preferowane jest osiem),oraz przynajmniej jedną cyfrę lub znak.

Hasła nie powinny być łatwe do zgadnięcia. Nie powinno się więc stosować imion własnych, zawodów itp.

Powinny być ograniczone czasowo, co oznacza konieczność zmiany hasła po upływie określonego czasu.

Konta na które wykryto atak słownikowy powinny być zablokowane na określony czas

Przy instalacji linuxa domyślna minimalna długość hasła wynosi 5. Co oznacza,że dowolny użytkownik może posiadać hasło o długości co najmniej 5 znaków. Wartość ta dla celów bezpieczeństwa powinna zostać zmieniona na 8. Zmianę tę dokonujemy w pliku :

/etc/login.def :

PASS_MIN_LEN 5 na PASS_MIN_LEN 8

Plik login.defs jest plikiem konfiguracyjnym dla programu login ,który umożliwia logowanie się do systemu.W pliku tym można ustawić też inne opcje jak : czas wygaśnięcia hasła itp.)

Konto „root”

Konto „root” jest najbardziej uprzywilejowanym kontem w systemie Linux. Żadne restrykcje związane z systemem nie dotyczą tego konta. Używając tego konta ,ważnym jest aby wiedzieć co się robi. Dla względów bezpieczeństwa nie powinno się używać konta „root” na co dzień ,chyba że jest to konieczne. Nie powinno się również zostawiać serwera z zalogowanym użytkownikiem „root”. Jest możliwośc ustawienia po jakim czasie bezczynności po jakim użytkownik „root” zostanie wylogowany z systemu. Należy w pliku /etc/profile dodać linijkę:

TMOUT=7200

Co oznacza ,ze po 7200 sekundach (2 godziny) użytkownik zostanie wylogowany z systemu gdy stwierdzona zostanie jego nieaktywność po tym czasie.

Wyłączenie programów konsoli dla zwykłych użytkowników

Istnieje pewne niebezpieczeństwo, iż dany użytkownik po zalogowaniu się do systemu będzie w stanie go wyłączyć lub zrestartować przy pomocy komeny (halt, poweroff, reboot, shutdown). W związku z tym dobrze jest wyłączyć taką możliwość. Skróty do w/w programów znajdują się w katalogu ogólnego dostępu /etc/security/console.app.

Należy je usunąc stosując komendę :

rm -f /etc/security/console.app/halt

rm -f /etc/security/console.app/poweroff

rm -f /etc/security/console.app/reboot

rm -f /etc/security/console.app/shutdown

W ten sposób użytkownicy zalogowani do systemu nie będą w stanie uruchomić w/w komend.

Plik konfiguracyjne /etc/inetd.conf

Plik inetd.conf jest często nazywany „super serwerem”. Program ten obsługuje żądania napływające z sieci dotyczące usług sieciowych uruchomionych na serwerze. Plik inetd.conf obługiwany jest przez deamona inetd.W ten sposób deamon inetd nasłuchuje na określonych w tym pliku portach i w razie potrzeby uruchamia odpowiednią usługę dla danego portu. Usługi ,które nie są porzebne lub z których rzadko korzystamy, powinny zostać wyłączone i odinstalowane dla poprawy bezpieczeństwa systemu.

Poniżej przedstawiam przykładowy plik /etc/inetd.conf.

ftp stream tcp nowait root /usr/sbin/tcpd in.ftpd -l -a

telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd

rlogin stream tcp nowait root /usr/sbin/tcpd in.rlogind

W/w konfiguracja umożliwia dostęp do naszego serwera usłudze ftp (file transfer protocol) ,usługi telnet (zdalne logowanie) oraz rlogin (zdalne logowanie bez uwierzytelniania).

Aby wyłączyć daną usługę należy zachaszowć „#” daną linijkę np.

#ftp stream tcp nowait root /usr/sbin/tcpd in.ftpd -l -a

#telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd

#rlogin stream tcp nowait root /usr/sbin/tcpd in.rlogind

Po każdej zmianie pliku inetd.d należy zrestartować serwer usługi inetd. Możn to zrobić wydając polecenie :

Killall -HUP inetd.

Komenda ta spowoduje odczytanie pliku konfiguracyjnego /etc/inetd.conf bez konieczności wyłączania komputera ,czy zatrzymania usługi.

Podczas logowania się do systemu zazwyczaj serwer podaje podstawowe informacje o zainstalowanym systemie np.(Red Hat 7.2). Ta informacja przekazywana jest do każdego użytkownika podczas wyświetlania powitania. Informacja ta powinna zostać skasowana ,gdyż umożlwia ona identyfikację oprogramowania jakie działa na serwerze. W tym celu należy w pliku /etc/inetd.conf zmodyfikować linijkę ,w której znajduje się wpis dotyczący usług telnet (jeżeli zdecydujemy się na jej uruchomienie.Bezpieczniejsze byłoby zastosowanie zamiast usługi telnet ,usługi ssh)

telnet: stream tcp nowait root /usr/sbin/tcpd in.telnetd -h

Opcja „-h” wyświetla podczas logowania informacje o systemie. Należy usunąć opcję „-h”.

Ważną rzeczą jaką należy zrobić jest zabezpieczenia odpowiednich plików przed osobami nieautoryzowanymi. Wydając polecenie :

chattr +i /etc/inetd.conf

Pliki ,które powinny zostać opatrzone tym atrybutem to :

/etc/passwd - plik z użytkownikami do systemu

/etc/shadow - plik z hasłami do systemu (zakodowanymi)

/etc/group - plik z grupami użytkowników

nadajemy pliku /etc/inetd.conf atrybut “i” - “immutable”.Oznacza on ,że dany plik nie może zostać zmodyfikowany ,skasowany nawet przez suerużytkownika „root”.Aby zdjąć atrybut „i” z danego pliku należy wydać polecenie :

chattr -i /etc/inetd.conf

TCP_WRAPPERS

Red Hat Linux pozwala wszystkim usługom I wszystkim klientom na dostęp do systemu. TCP_WRAPPERS zabezpiecza serwer przed zewnętrznymi metodami dostępu do serwera i odpowiednich usług. TCP_WRAPPERS składa się z dwóch plików : hosts.allow oraz hosts.deny. Pliki te określają kto będzie lub nie będzie w stanie mieć dostępu do całego serwera lub odpowiednich jego usług. Usługa ta działa następująco:

0x08 graphic

Przykładowy plik /etc/hosts.deny wygląda następująco :

#Dostęp jest zabroniony dla każdego,chyba że plik /etc/hosts.allow na to zezwala.

ALL:ALL@ALL, PARANOID

Przykładowy plik /etc/hosts.allow wygląda następująco:

# Dla klienta o adresie IP 208.108.186.1 i adresie gate.openna.com dostęp do usługi ssh jest zezwolony.

sshd: 208.108.186.1 gate.openna.com

Serwisy sieciowe.

Numery portów ,na których odpowiednie usługi sieciowe są uruchamiane zdefiniowane są w RFC 1700 “Assigned Numbers”. Porty te są ściśle powiązane z usługami sieciowymi. Przyjęło się ,iż dane usługi jak np. usługa telnet działa na porcie 22 a usługa ssh na porcie 23. Dostęp do tego pliku przez osoby nieupoważnione może spowodowa dodanie nowej usługi i nowego portu, który spowoduje założanie tzw.backdoor. Dostęp do pliku /etc/services powinie mieć tyko i wyłącznie użytkownik root.

Plik /etc/securetty

Plik ten umożliwia zdefiniowanie, na którym TTY urządzeniu użytkownik root ma możliwość logowania się. Plik /etc/securetty jest odczytywany przez program (/bin/login). Plik ten wygląda następująco :

tty1

#tty2

#tty3

#tty4

#tty5

#tty6

#tty7

#tty8

Oznacza to ,że root może logować sie tylko I wyłącznie na tty1. To ograniczenie umożliwia uytkownikowi root na logowanie się tylko przez jedno urządzenie tty1.

Grupy specjalne

Ważne jest ,aby wyłączyć wszystkie nazwy użytkowników i grup ,które są nieużywane w systemie. Niektóre konta istnieją w systemie ,lecz nie są używane, gdyż odpowiednie usługi do tych kont nie są zainstalowane. Konta ta i grupy powinny zostać w celu poprawy bezpieczeństwa wykasowane. Używając komendy userdel nazwa_użytkownika i groupdel nazwa_grupy jesteśmy w stanie skasować dane konto lub grupę. Użytkownicy, którzy powinni zostać skasowani :

adm

lp

sync

shutdown

halt

news

uucp

opeator

games

gopher

Grupy ,które powinny zostać skasowane:

adm

lp

news

uucp

games

dip

pppuser

popuser

slipuser

Blokowanie dostępu do konta root poprzez „su“

Komenda su umożliwia każdemu zalogowanemu w systemie użytkownikowi na stanie się superużytkownikiem „root”, pop warunkiem ,że dana osoba zna hasło root. Pomimo tego sama próba stania się superużytkownikiem przez niepowołane osoby jest dość niebezpieczna i pozwala na wielokrotne próby złamania hasła root`a metodą bruteforce. Należy ustawić tylko tych użytkowników lub grupy użytkowników ,które powinny mieć możliwość używania komeny „su” ,aby stać się użytkownikiem root. Należy wyedytować plik /etc/pam.d/su i dodać dwie linijki :

Auth sufficient /lib/security/pam_rootok.so.debug

Auth required /lib/security/pam_wheel.so group=wheel

Wpisy te pozwalają tylko I wyłącznie użytkownikom należącym do grupy “wheel” na stanie się superużytkownikiem poprzez wydanie komendy su root.

Kontrola nad systemem plików

Dzieląc dysk twardy na partycje definiujemy w jakim punkcie będzie ona zamontowana w systemie. Aby określić punkty montowania oraz opcje z jakimi partycje będą zamonowane należy wyedytować plik /etc/fstab.

#Partycja Punkt montowania system plików opcje

/dev/hda5 / ext2 defaults

/dev/hda6 swap

/dev/hda7 /home ext2 defaults

W pliku /etc/fstab można stosować następujące opcje ,oto niektóre z nich:

defaults - zezwala na wszystko

noquota - nie ustawia ograniczenia przestrzeni dyskowej dla użytkowników

noexec - uniemożliwia nadania atrybutu „x” plikom (nie da się ich uruchomić)

quota - zakłada ograniczenia przestrzeni dyskowej dla użytkowników

ro - zezwala tylko na odczytywanie plików z partycji

rw - zezwala na czytanie i zapisywanie na partycji

Dlatego dla partycji /tmp powinno zmienić się domyślne ustawinia na

/dev/hda11 /tmp ext2 defaults,rw,noexec

Oznacza to ,że zwykli użytkownicy systemu nie będą w stanie uruchamić programów znajdujących się na partycji tymczasowej ale będą mogli zapisywać na niej pliki,gdyż na partycji wymiany muszą znajdować się pliki tymczasowe użytkowników (niewysłane maile itp.). Często zdarza się ,że na partcji tymczasowej /tmp znajdują się zrzuty pamięci (core dump) dobrze znane z systemu Windows. Moż zdarzyć się ,że jeżeli core dump powstał podczas pracy superużytkownika w pliku tym mogą znajdować się cenne informacje jak : hasło root`a. Należy więc po każdej zakończonej sesji czyścić katalog /tmp.

Prawa dostępu do plików

Każdemu użytkownikowi systemu zostają nadane pewne prawa dostępu do plików i katalogów. Prawa dostępu definiują jakie prawa ma właściciel pliku ,jakie prawa ma grupa użytkowników oraz jakie prawa mają inni użytkownicy. Dlatego system prawa dostępu składa się w dziewięciu pół. Każde trzy pola reprezentują prawa dostępu dla danej grupy i tak:

_ _ _ _ _ _ _ _ _

0x08 graphic
0x08 graphic
0x08 graphic

0x08 graphic
Prawa dostępu dla właściciela

0x08 graphic
Prawa dostępu dla grupy użytkowników

0x08 graphic
Prawa dostępu dla innych użytkowników

Każde prawo ma określoną wartość.

Prawo odczytu Read r

Prawa zapisu Write w

Prawo uruchamiania Execute x

Tak więc prawo do danego pliku może mieć następujący charakter

Rwx-r—r

Co oznacza prawa odczytu ,zapisu i wykonywania programu dla właściciela pliku oraz prawo odczytu dla wszystkich innych użytkowników.

Wszystkie prawa reprezentowane są w spos ób numeryczny.

Tryb Liczna

Rwx 7

Rw- 6

r-x 5

r— 4

--wx 3

-w- 2
--x 1

--- 0

Chcąc zmienić lub nadać prawo do pliku należy użyć komendy chmod [tryb] [nazwa_pliku]

Chmod 777 /etc/passwd

Komenda ta nada pełna prawa odczytu ,zapisu i wykonywania dla wszystkich użytkowników do pliku passwd, który zawiera cenne informacje o kontach w systemie. Dlatego wszytkie prawa do ważniejszych plików powinny być często kontrolowane. Powinno się nienadawać zbyt dużo praw do nieodpowiednich plików ,takich jak :passwd ,shadow ,group. Pliki te przechowują nazwy użytkowników oraz odpowiadające im hasła do systemu. Dlatego powinny mieć prawo [rwx] tylko dla właściciela pliku (root) oraz zerowe prawa dla innych użytkowników . Wykonanie komendy

chmod 700 /etc/passwd /etc/shadow /etc/group

nada w/w prawa do tych plików.

W celu sprawdzenia jakie prawa w obcnej chwili posiada plik wystarczy wydać polecenie :

ls -l

-rwx------ root nobody 0 Jan 9 17:44 passwd

co oznacza ,że właścicielem pliku passwd jest użytkownik “root” ,posiadający pełne prawa do pliku. Użytkownicy znajdujący się w grupie nobody nie mają żadnych praw do pliku jak również inni użytkownicy. Plik został utworzony lub zmodyfikowany 9 stycznia o godzinie 17:44.

Aby zmienić właściciela pliku lub grupę do której należy plik należy użyć komendy chown

Chown [nazwa_użytkownika][nazwa_grupy] plik

Zwykły użytkownik często może uruchomić dany program jako użytkownik root ,jeżeli dany program posiada tzw. SUIT root. Wszystkie programy i pliki na linux`ie z literka „s” w prawach dostępu do danego pliku nadają specjalne prawa dostępu dla użytkownika, który go uruchamia. Bardzo ważną rzeczą jest ,aby usunąć z wszystkich programów znacznik „s”

Aby znaleźć programy na naszym dysku twardym z bitem „s” należy posłużyć się poleceniem

[root@linux]# find / -type f \(-perm -0400 -o -perm -0200 \) \-exec ls -lg {} \;

-rwsr-xr-x 1 root root 3545 Sep 22 22:34 /usr/bin/change

-rwsr-xr-x 1 root root 4353 Sep 22 23:08 /usr/bin/newgrp

-rwsr-xr-x 1 root root 3643 Sep 22 10:23 /usr/bin/gpasswd

Aby usunąć SUID root z w/w plików należy wydać polecenie

[root@linux]# chmod a-s /usr/change

[root@linux]# chmod a-s /usr/newgrp

[root@linux]# chmod a-s /usr/gpasswd

Parametry jądra systemu

Począwszy od wersji Red Hat 6.2 wszystkie parametry systemu znajdujące się w “/proc/sys” mogą być teraz modyfikowane i konfigurowane podczas uruchomienia systemu. Aby dokonać jakichkolwiek jakichkolwiek zmian należy posłużyć się pikiem „/etc/sysctl.conf” ,który odczytywany jest za każdym razem gdy system jest bootowany. Poniżej przedatwię kilka zmian ,jakie powinno się wprowadzić w celu poprawy bezpieczeństwa systemu.

Zablokowanie odpowiedzi dla pakietów „ping”

Zablokowanie odpowiedzi dla pakietów „ping” może być dużym udogodnieniem dla sieci, gdyż od tego momentu nikt nie jest w stanie użyć „pinga” do naszego serwera.

[root@linux]# ping www.serwer.com.pl

--> [Author:P]

Polecenie “ping” wysyła przykładowe pakiety danych oczekując odpowiedzi od serwera. W ten sposób w łatwy sposób można przy pomocy polecenia „ping” zlokalizować hosta o danym adresie IP lub hosta NS. Jeżeli na serwerze zmienimy konfigurację tak , aby serwer nie wysyłał potwierdzenia „pinga” , serwer ten stanie się niewidoczny w Internecie. Wystarczy na konsoli głównej wydać polecenie :

[root@liux]# echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all

lub przy pomocy pliku „/etc/sysctl. conf” dopisać linijkę :

# Włączenie ignorancji dla polecenia ping

net.ipv4.icmp_echo_ignore_all = 1

Wyłączenie odpowiedzi dla broadcast

Tak samo jak dla pinga ,ważnym jest aby wyłączyć odpowiedź serwera dla usługi broadcast. Usługa broadcast działa w ten sposób , iż wysyłając pakiet IP pod wskazany adres

(np. 192. 168. 1. 255) z sieci lokalnej, pakiet ten dostarczany jest do wszystkich komputerów w tej sieci lokalnej. Pakiet taki nazywany jest „ICMP echo request” i jest on w stanie spowodować tzw. „SYN Attack” ,nazywany inaczej (DOS) - „Denial od sernice”

Podobnie jak w „pingu” należy dokonać dodatkowego wpisu w pliku „/etc/sysctl.conf”

net.ipv4.icmp_echo_ignore_broadcast = 1

Włączenia ochrony dla TCP SYN Cookie Protection

„Denial of sernice” jest atakiem spowodowanym często usługą broadcast. Zbyt wielkie obciążenia sieci przy pomocy usługi broadcast zmusza serwer do ponownego uruchomienia ,gdy serwer nie ma dostatecznych zasobów. Dlatego ważnym jest zapobiec takim wydarzeniom. Wystarczy dokonać wpisu w „/etc/sysctl.conf”

net.ipv4.tcp_syncookie = 1

Po dokonaniu wszystkich wpisów należy restartować usługę „network”

[root@linux]# /etc/rc.d/init.d/network restart

Setting network parameters [OK]

w/w przykłady są tylko niektórymi ważniejszymi parametrami jądra systemu ,które powinny zostać ustawione przed podłączeniem serwera do Internetu.

Aspekty bezpieczeństwa i konfiguracji TCP/IP

Aby harmonijnie połączyć działanie sieci lokalnej z Internetem, nie wystarczy poprawne skonfigurowanie modemu i mechanizmu IP Masquaradingu, choć czynności te mają znaczenie podstawowe dla działania połączenia z siecią globalną. Trzeba się jeszcze zastanowić, jak ułatwić użytkownikowi naszego serwera wysyłanie i odbieranie poczty elektronicznej, korzystanie z WWW czy news. Ponadto dobrze jest uruchomić w naszej sieci serwery takich usług jak FTP, WWW. Zwiększy to wygodę osób korzystających korzystających sieci lokalnej i spowoduje udostępnienie im nowych możliwości.

Projektując sieć lokalną musimy pomyśleć o przydzieleniu jest adresów. Będzie to umożliwiało późniejsze połączenie naszej sieci lokalnej z Internetem. Przyjmuijmy, że nasza sieć będzie miała adres 192.168.10.0. Na serwerze linuksowym sieci ustawiamy jego adres IP, maskę sieci i adres rozgłoszeniowy. Możemy to zrobić poleceniem:

[root@linux]# ifconfig eth0 192.168.10.1 netmask 255.255.255.0 broadcast192.168.11.255

Ponieważ Ponieważ jądrach serii 2.2.x zautomatyzowano dodawanie adresu sieci do tablicy routingu Kornela, pozostało nam jeszcze dodać adres domyślnego „gateway`a” stanowiącego „wyjście na świat”.

[root@linux]# route add defauly gw 192.168.10.1

Wszystkie w/w ustawienia zostają zapisane w pliku „/etc/sysconfig/network

NETWORKING=yes ;pozwala na pracę w sieci naszego serwera

FORWARD_IPV4=true ;włącza przekazywanie pakietów

HOSTNAME=linux ;nazwa naszego serwera

DOMAINNAME= ;nazwa naszej domeny

GATEWAY=192.168.11.1 ;adres bramki sieciowej

GATEWAYDEV=eth0 ;interfejs przez który będzie ustawiony routing

W celach bezpieczeństwa powinniśmy również wyedytować plik „/etc/sysconfig/network/scripts/ifcfg-eth0. W pliku tym zapisane są ustawienia związane z adresami IP, netmask oraz broadcast. Należy jednak pamiętać ,że powinniśmy w tym pliku dopisać jedną opcję :

USERCTL=yes

Oznacza ona, że żaden użytkownik poza użytkownikiem „root” nie może kontrolować i konfigurować urządzenia sieciowego jakim jest karta sieciowa (eth0).

W pliku „/etc/host.conf” należałoby dopisać opcję :

nospoof on

Dzięki niej nasz host będzie sprawdzam, czy w danej chwili nie odbywa się „spoofing”

Po udanej konfiguracji naszej sieci należy restartować usługę sieciową

[root@linux]# /etc/rc.d/init.d/network restart

Setting network parameters [OK]

Bringing up interface lo [OK]

Bringing up interface eth0 [OK]

W tej chwili nasz host jest poprawnie skonfigurowany tak, żeby komputery w sieci lokalnej miały dostęp do Internetu (www) oraz w pewien sposób zabezpieczony przed atakami z zewnątrz oraz wewnątrz sieci. Należy jednek pamiętać, że na serwerach linuksowych chodzą również usługi sieciowe, z których korzystają klienci jak : ftp, www, e-mail. Usługi te po zainstalowaniu i skonfigurowaniu będą w pełni działać na serwerze linuksowym. Jednak bez odpowiednich zabezpieczeń usługi te podatne będą na ataki z sieci. Postaram się przedstawić moją koncepcję bezpieczeństwa w/w usług sieciowych, tak żeby stały się w miarę bezpiecznymi usługami na serwerze linuksowym.

Konfiguracja jądra systemu (Kornel configuration)

Podstawą Linux`a jest jego jądro (Kernel), które powinno być odpowiednio skompilowane ,tak aby zapewniało systemowi maksymalne bezpieczeństwo. Jądro systemu najlepiej pobrać w serwera ftp://ftp.kernel.org lub ftp://ftp.icm.edu.pl

Po instalacji systemu należy tak skompilować jądro, żeby odpowiadało naszym potrzebom i było jak najbardziej wydajne. Zasadą jest przy tym, że im więcej mechanizmów mechanizmów urządzeń jądro obsługuje ,tym jest większe i mniej wydajne. Jądro obecnie obsługuje wiele mechanizmów związanych z bezpieczeństwem protokołu TCP/IP, które warto zainstalować. Są to między innymi zapory sieciowe (firewall), mechanizm translacji adresów sieciowych (IP Masquerading), syn cookies protection - mechanizm zabezpieczający przed tak zwanym syn flooding ,czyli „zalewaniem” komputera dużą ilością pakietów, co prowadzi do zawieszenia lub spowolnienia systemu.

Najważniejszą , ale i wymagającą najwięcej nakładu pracy fazą kompilacji jądra jest jego konfiguracja. Przeprowadzając ją powinniśmy uwzględnić kilka czynników ,z których najważniejsze to :

Większość dystrybucji Linuksa dostarczana jest z jądrem przygotowanym do obsługi jak największej liczby podzespołów. W praktyce polega to na kompilacji dystrybucji pod kątem współpracy w procesorem typu i386 (czasem i586) oraz na dołączeniu do jądra systemu sterowników wielu urządzeń, na przykład starszych modeli napędów CD-ROM, czy szeregu usług, jak choćby pełnej obsługi sieci komputerowej. Takie rozwiązanie jest z pewnością uniwersalne i przygotowane w ten sposób dystrybucja Linka z dużym prawdopodobieństwem będzie działała na większości typowych, popularnych zestawach komputerowych. Tym niemniej nie możemy się, że osiągniemy maksymalną wydajność systemu i jego bezpieczeństwo. Jądro stanowi podstawową część systemu operacyjnego. Od niego zależy działanie i współpraca między sobą pozostałych komponentów. Pierwszym i podstawowym zadaniem jądra jest zarządzanie działającymi w danym momencie procesami oraz przydzielanie im z góry ustalonego czasu procesora. Kolejną funkcją jądra jest zarządzanie pamięcią operacyjną oraz obsługa urządzeń. Współczesne wersje jądra składają się ze stosunkowo niewielkiej części stałej oraz z modułów, czyli sterowników dołączonych do pracującego jądra w miarę pojawiania się takich potrzeb. Dzięki modularnej budowie jądro może potencjalnie obsłużyć setki różnych urządzeń zachowując jednocześnie niewielki rozmiar i nie tracąc dużo na wydajności. Najnowsze wersje Linuksa są standardowo wyposażone w narzędzie kerneld, służące do automatycznego zarządzania modułami. Moduły stosuje się do obsługi tych urządzeń, bądź systemu plików, których używa się sporadycznie. Do operacji na modułach służą komendy

insmod - dodanie modułu do jądra

rmmod - usunięcie modułu z jądra

depmod - tworzy bazę danych skompilowanych i dostępnych modułów

lsmod - lista zainstalowanych modułów

Aby skompilować pobrane wcześniej jądro należy zainstalować pakiety:

kernel-headers-wersja.i386.rpm - nagłówki jądra systemu

kernel-source-wersja.i386.rpm - jądro systemu

Sam process kompilacji wymaga jeszcze wcześniejszego zainstalowania pakietów

make-x.x-x.rpm - program make

bin86-x.x-x.rpm - asembler

egcs-x.x-x.rpm - kompilator języka C

Plik ze spakowanym jądrem systemu należy rozpakować do katalogu „/usr/src/linux”

[root@linux[# tar -xvf kernel-source-x.x-x.tar /usr/src/linux

Gdy już mamy zainstalowany pakiet ze źródłami jądra systemu, należy przystąpić do konfiguracji jego parametrów. Po wydaniu polecenia make menuconfig można przejrzeć informacje o fabrycznej konfiguracji jądra. Wszystkie opcje podczas konfiguracji jądra mogą zostać usuniętę z jądra systemu (puste pole), wkompilowane w jądro systemu (gwiazdka), oraz wkompilowane jako moduł (literka „M”). Aby jądro systemu było bezpieczne i wydajne należy odpowiednio skonfigurować opcje :

Procesor type and features

Symetric multi-processing suport(CONFIG_SMP) [Y/n] N

Loadable modules support

Enable loadable modules support (CONFIG_MODULES) [Y/n] N

General setup

Backward-compatible /proc/pci (CONFIG_PCI_OLD_PROC) [Y/n] N

Networking options

Network firewalls (CONFIG_FIREWALLS) [Y/n] Y

IP:firewalling (CONFIG_IP_FIREWALL) [Y/n] Y

IP: TCP syncookie support (CONFIG_SYN_COOKIES) [Y/n] Y

Filesystems

Quota support (CONFIG_QUOTA) [Y/n] Y

Kernel automounter support (CONFIG_AUTOFS_FS) [Y/n] N

Network File Systems

NFS filesystem support (CONFIG_NFS_FS) [Y/n] N

Wyjaśnienie do zaznaczonych opcji :

Symetric multi-processing support

wsparcie dla platform wieloprocesorowych. Jeżeli używamy jednego procesora należy wyłączyć tę opcję

Enable loadable module suport

Opcja ta pozwala na ładowanie dodatkowych modułów.W celach bezpieczeństwa wyłącza się tę opcję i kompiluje do jądra wszystkie potrzebne moduły na stałe. W ten sposób żaden użytkownik nie jest w stanie dodać nowego moduły do istniejącego już jądra.

Backward-compatible /proc/pci

Zachowanie wstecznej kompatybilności w katalogu /proc/pci

Network firewall

Włączenie firewalla (zapory sieciowej)

IP:Firewalling

Włączenie firewalla dla protokołu TCP/IP

IP:TCP syncookie support

Włączenie syncookie support

Quota support

Włączenie Quot systemowych pozwalających ograniczyć przestrzeń doskową dla użytkowników

Kernel automounter support

Wyłączenie automontowania plików systemowych przez jądro.

NFS filesystem support

Wyłączenie wsparcia dla systemu plików NFS (Network File System), powszechnie używanego w systemie Linux.

Inne opcje jądra należy skonfigurować według uznania.

Abu skompilować gotowe jądro należy wydać polecenia :

[root@linux]# make dep - sprawdzenie zależności modułów

[root@linux]# make clean - wyczyszczenie nieużytecznych modułów

[root@linux]# make bzImage - stworzenie pliku zawierającego nowe jądro systemu

[root@linux]# make module - kompilacja modułów do jądra (użyteczna tylko wtedy, gdy zaznaczyliśmy jakies opcje jako loadable module)

[root@linux]# make module_install - instalacja modułów

Po kompilacji jądra uzyskujemy plik “vmliuz-x.x-x” zawierający nasze nowe jądro. W celu zainstalowania nowego jądra należy skopiować go do katalogu /etc/boot i skonfigurować plik /etc/lilo.conf, który odpowiedzialny jest za wstępną inicjalizację systemu.

[root@linux]#vi /etc/lilo.conf

boot=/dev/hda5

Partycja z której system będzie bootowany

timeout=00

Czas po jakim zostanie zabootowany system. Dobrze jest ustawić tę opcję na 0. Wtedy system od razu się zabootuje i nie będzie można skorzystać z funkcji „single user”

restricted

password=jakies_haslo

Hasło, które przypisane będzie do danego jądra, nie znając tego hasła nie będzie można uruchomić systemu

image=/boot/vmlinuz-x.x-x

Lokalizacja z plikiem nowego jądra

label=nowe_jadro

Nazwa nowego jądra

root=/dev/hda5

Podstawowa partycja systemu linux

Read-only

System tylko do odczytu

Po dokonaniu odpowiednich zmian w pliku „/etc/lili.conf” wydjąc polecenie „lilo” instalujemy nowy bootloader z nowym jądrem systemu.

[root@linux]# lilo

LILO version 21, [Copyright 1992-1988 Werner Almesberger]

Reading boot sector from /dev/hda

Merging with /boot/boot.b

Boot image: /boot/vmlinuz-x.x-x

Added nowe_jadro *

Writing boot sector

W ten sposób po ponownym restarcie systemu, parametry pracy zostaną odczytane z nowego jądra systemu.

FIREWALL

Duża atrakcyjność Internetu wynika z faktu, że w odróżnieniu od telewizji nie jest to medium jednokierunkowe - każdy użytkownik jednocześnie dostarcza i odbiera informacje. Jeśli nawet wędrujemy tylko po sieci World Wide Web lub wymieniamy pocztę elektroniczną, możemy nieświadomie stać się dostarczycielem danych ze swojego twardego dysku oraz z lokalnej sieci.

Popularne systemy operacyjne - z Windows na czele - są bardziej przystosowane do wygodnej wymiany danych niż do ich ochrony. O ile wartość informacji zgromadzonych przez indywidualnego użytkownika jest niewielka, o tyle praktycznie żadna firma nie może sobie pozwolić na rozpowszechnienie poprzez Internet swoich baz danych. Równie duże straty może spowodować usunięcie lub zniekształcenie informacji zapisanych na twardych dyskach. Nawet tzw. ataki Denial of Service, których celem nie jest zdobycie jakichkolwiek informacji, lecz "tylko" unieruchomienie serwerów internetowych, mogą spowodować poważne straty finansowe. Ich konsekwencją są przestoje w działaniu zaatakowanych serwerów, a co za tym idzie, utrudnienia w pracy korzystających z nich pracowników.

Wprawdzie w Internecie nie znajdziemy wcale więcej nieuczciwych osób niż w życiu codziennym, jednak w Sieci mogą one znacznie łatwiej ukryć swoją tożsamość, w związku z czym za swe czyny zwykle nie ponoszą odpowiedzialności. Ulubionymi miejscami ataku hakerów są bezpłatne wejścia informacyjne serwisów sieciowych oraz słabo chronione serwisy sieciowe uniwersytetów.

Taka działalność nie wymaga bynajmniej użycia drogiego sprzętu, gdyż z powodzeniem wystarczy do tego zwykły domowy pecet. Wiele luk w mechanizmach zabezpieczających jest dobrze znanych, a informacje na ten temat są powszechnie dostępne w Internecie. Często wraz z takimi informacjami można od razu uzyskać odpowiednie oprogramowanie, służące do przeprowadzenia ataku, tak więc nie musimy dysponować umiejętnością programowania. Za pomocą automatycznych narzędzi (np. programu SATAN) można w krótkim czasie sprawdzić poziom bezpieczeństwa danych w tysiącach serwerów internetowych.

Podstawową zasadą działania wszelkich systemów ochronnych jest: "To co nie jest jawnie dozwolone - jest zakazane". Firewalle (zapory ogniowe) są instalowane między sieciami w celu wymuszenia kontroli dostępu między nimi. Generalnie rzecz ujmując, firewalle zabezpieczają przed nieautoryzowanym dostępem z zewnątrz do sieci lokalnej. Niektóre nawet mogą całkowicie blokować ruch pakietów z zewnątrz - dopuszczając ewentualnie pakiety poczty elektronicznej - zezwalając jednakże na swobodne komunikowanie się użytkowników sieci ze światem zewnętrznym. Inną pożyteczną cechą firewalli jest możliwość wykorzystania ich do rejestrowania i śledzenia wszelkich przychodzących pakietów (auditing). Stacje umieszczane w pierwszej linii obrony, określane również jako bastion host, są punktami przez które przechodzą wszystkie informacje do sieci lokalnej i na zewnątrz. Dzięki takiemu scentralizowaniu dróg dostępu do sieci w jednym komputerze można łatwo zarządzać systemem ochrony.

Dobrze skonstruowana zapora ogniowa zabezpiecza niemal całkowicie przed atakami z zewnątrz. Potrafi zapobiec podsłuchiwaniu i podszywaniu się pod uprawnionych, blokuje penetrację sieci wewnętrznej oraz potrafi ochronić przed znanymi wirusami i koniami trojańskimi.

Typy zapór ogniowych

Na rynku dostępnych jest wiele produktów sprzedawanych pod nazwą "Firewall", lecz różnią się one poziomem oferowanych zabezpieczeń. Wyróżniamy nastepujące typy zapór ogniowych:

Zapora ogniowa na poziomie sieci

Jest to router lub specjalny komputer, który kontroluje adresy pakietów i decyduje o tym, czy przepuścić pakiet do sieci lokalnej czy go zatrzymać. Zazwyczaj blokowania pakietów dokonuje się za pomocą pliku zawierającego adresy IP określonych ośrodków. Router będzie wtedy blokował wszystkie pakiety pochodzące z tych ośrodków lub zmierzające do nich. W momencie, gdy odnajduje on pakiet zawierający zastrzeżony adres IP, zatrzymuje go uniemożliwiając mu przedostanie się do sieci lokalnej. Blokowanie w ten sposób określonych ośrodków jest czasem nazywane czarną listą. Przeważnie oprogramowanie routera pozwala na zablokowanie całego ośrodka, a nie pojedynczego użytkownika.

Zapora ogniowa na poziomie aplikacji

Jest to zazwyczaj komputer główny z uruchomiony z programem zwanym oprogramowaniem serwera proxy. Serwery proxy kontrolują wymianę danych między dwiema sieciami komunikując się w imieniu użytkowników sieci z serwerami na zewnątrz tej sieci. Takiej zapory ogniowej używa się wtedy, gdy sieć lokalna nie jest fizycznie połączona z Internetem. Dane transmitowane z jednej sieci nigdy się nie stykają z danymi drugiej sieci, ponieważ okablowanie tych sieci nie jest połączone. Rolą serwera proxy jest transmitowanie odizolowanych kopii pakietów z jednaj sieci do drugiej. Ten typ zapory ogniowej skutecznie maskuje źródło połączenia i chroni sieć lokalną przed dostępem użytkowników Internetu, którzy mogą usiłować zdobyć o niej informacje. Zapory ogniowe na poziomie aplikacji fizycznie oddzielają sieć lokalną od Internetu, dzięki czemu dobrze pełnią funkcje ochronne. Ponieważ jednak program musi kontrolować pakiety i decydować o ich przepuszczaniu, takie zapory zmniejszają wydajność systemu. Ten typ zapory ogniowej działa wolniej niż zapora ogniowa na poziomie sieci. Jeśli więc jest planowane użycie tego typu zabezpieczenia, to należy je umieścić w najszybszym komputerze.

Zapora ogniowa na poziomie transmisji

Są one podobne do systemów na poziomie aplikacji (stosowanie serwerów proxy). Różnica między nimi jest taka, że systemy działające na poziomie transmisji nie wymagają specjalnych aplikacji typu klient obsługujących protokoły proxy. Zapory takie tworzą obwód łączący komputer-klient z serwerem i nie wymagają żadnej aplikacji do kontrolowania określonej usługi. Komputer-klient i serwer komunikują się ze sobą przez zaporę ogniową na poziomie transmisji. Zapory ogniowe tego typu rozpoczynają transmisję nie wpływając na wcześniej uruchomione procesy wymiany danych. Ich zaletą jest możliwość obsługiwania wielu protokołów, których stosowanie w systemach działających na poziomie aplikacji wymaga używania odpowiedniej aplikacji dla każdej usługi. Można wciąż używać dotychczasowego oprogramowania. Kolejną zaletą tych systemów jest to, że używa się w nich tylko jednego serwera proxy. Jest łatwiej zarządzać, logować się i kontrolować pojedynczy serwer niż wiele serwerów.

Techniki integracji systemów ochronnych

Technika konwencjonalna.

Klasyczny system firewall składa się z zewnętrznego routera z filtrem pakietowym, tak zwanej sieci granicznej (DMZ - demilitarized zone) i wewnętrznego routera, także z filtrem pakietowym. W strefie DMZ umieszcza się Bastion Hosta przeznaczonego do odparcia najcięższych ataków, na którym uruchamia się proxy servers dla poszczególnych aplikacji. Transmisja wszelkich danych musi odbywać się poprzez właśnie Bastion Hosta, co gwarantuje odpowiednia konfiguracja obu routerów.

Technika perspektywiczna.

Nowoczesne firewalle działają według zasady all-in-one, czyli są to pojedyncze urządzenia łączące w sobie funkcje obu routerów i Bastion Hosta, czasami dysponując dodatkowymi serwisami w rodzaju DNS bądź mail. W przypadku takiego systemu serwery typu WWW najlepiej lokalizować w osobnej sieci bezpośrednio podłączonej do firewalla. W ten sposób firewall chroni serwer przed intruzami z zewnątrz, a w razie jego przełamania - sieć wewnętrzna pozostaje w dalszym ciągu dobrze zabezpieczona. Jednak do prawidłowej pracy takiego systemu niezbędna jest współpraca firewalla z minimum trzema kartami sieciowymi, co może w wielu przypadkach być warunkiem trudnym do spełnienia.

Architektury zapór ogniowych

Zapora ogniowa z dwiema kartami

Zapora taka jest prostym, lecz bardzo bezpiecznym rozwiązaniem, w którym jeden komputer oddziela sieć lokalną od Internetu. W komputerze głównym są zainstalowane dwie karty sieciowe, do których są podłączone obie sieci. Oparta jest ona na kilku serwerach proxy poziomu aplikacji lub na serwerze proxy poziomu transmisji. Oprogramowanie serwerów proxy sprawuje kontrolę nad przepływem pakietów z jednej sieci do drugiej. Ponieważ komputer główny jest "podzielony" na dwie części (dołączony do dwóch sieci), zapora ogniowa umieszczona w tym komputerze ma dostęp do pakietów obydwu sieci, dzięki czemu może kontrolować przepływ danych między sieciami. Mogą to być dwie sieci lokalne lub sieć lokalna i Internet. Największą wadą tego zabezpieczenia jest konieczność wyłączenia wewnętrznych funkcji rozsyłania. Włączenie standardowych wewnętrznych funkcji rozsyłania w komputerze głównym sprawia, że zapora ogniowa staje się bezużyteczna.

0x01 graphic

Zapora ogniowa z routerem ekranującym

Według wielu osób zapora taka jest bezpieczniejsza od zapory z dwiema kartami. Wymaga ona dodania do sieci routera i umieszczeniu komputera głównego z dala od Internetu (przerwania bezpośredniego połączenia tego komputera z Internetem). Taka zapora ogniowa jest bardzo efektywna i prosta w eksploatacji. Router łączy sieć lokalną z Internetem i jednocześnie oddziela określone typy pakietów. Można tak skonfigurować router, aby widział on tylko jeden komputer główny w sieci lokalnej. Użytkownicy sieci, którzy mają dostęp do Internetu, muszą korzystać z pośrednictwa tego komputera. Mają oni więc bezpośredni dostęp do Internetu, natomiast dostęp do sieci lokalnej z zewnątrz jest ograniczany przez komputer główny.

Umieszczenie routera ekranującego i filtra pakietowego na komputerze z dwoma kartami sieciowymi jest najprostszym rozwiązaniem, w którym jeden komputer oddziela sieć lokalną od potencjalnych zagrożeń. Blokuje on ruch pomiędzy konkretnymi sieciami, hostami lub niektórymi portami.

0x01 graphic

Zapora ogniowa z dwoma routerami ekranującymi

Zapora taka wymaga zastosowania dwóch routerów i serwera proxy. Serwer proxy znajduje się w swojej własnej sieci, gdzie współpracuje tylko z dwoma routerami. Jeden router kontroluje przepływ danych w sieci lokalnej, a drugi kontroluje dane przychodzące z Internetu i wysyłane do niego. Taka architektura zapory zapewnia wyjątkowo skuteczną ochronę przed atakami. Dzięki temu, że komputer główny jest odizolowany w oddzielnej sieci, uderzenie jest ograniczone jedynie do niego, co dodatkowo minimalizuje możliwość wyrządzenia szkód w chronionej sieci. Ponadto router w sieci lokalnej uniemożliwia uzyskanie nieautoryzowanego dostępu do komputera głównego z wnętrza sieci.

0x01 graphic

Usługi dodatkowe

Systemy firewall oferują wiele dodatkowych usług, które pomagają zabezpieczyć sieć bądź przyspieszyć jej pracę. Wśród nich na szczególne wyróżnienie zasługują Proxy Cache Services. Usługa ta umożliwia zoptymalizowanie ruchu na łączu WAN poprzez przechowywanie informacji (stron WWW), do których często odwołują się użytkownicy sieci; zwykle jest to element zintegrowany z serwerami pośredniczącymi.

0x01 graphic

0x01 graphic



W przypadku bardzo dużych i intensywnie eksploatowanych serwisów WWW możemy użyć kilku połączonych równolegle Proxy Cache Server. Mogą one obsługiwać serwery WWW różnych producentów.

0x01 graphic

0x01 graphic

W pracy serwera bardzo istotne jest odpowiednie ustawienie parametrów. Przede wszystkim czasu przechowywania stron w pamięci podręcznej, czasu, po którym strona staje się nie aktualna, ilość miejsca przeznaczonego na cache.

Wiele firm, które potrzebują ciągłej wymiany informacji, staje przed dużym problemem - jak połączyć sieci lokalne wielu oddziałów oddalonych od siebie o setki, a nawet tysiące kilometrów. Wykupienie łącza dzierżawionego jest bardzo drogie, a czasem wręcz niemożliwe. Jedynym wyjściem staje się podłączenie wszystkich filii do sieci globalnej, takiej jak Internet. Virtual Private Network to usługa, która pozwala łączyć kilka sieci prywatnych „tunelami”, przez które przenoszone są tylko informacje zaszyfrowane. Szyfrowanie całych pakietów znacznie zwiększa bezpieczeństwo połączenia, ponieważ ukrywa numery połączeń i przesyłane dane.

0x01 graphic



Serwer z VPN zainstalowany na obrzeżu sieci umożliwia zarządzanie całą siecią wirtualną z dowolnego miejsca, co dodatkowo upraszcza administrację. Jedynym elementem, który powinien zostać przekazany tradycyjną metodą jest klucz (w BorderManager firmy Novell klucz jest 40- lub 128-bitowy; na eksport poza terytorium USA klucza 128-bitowego nałożone są spore restrykcje) umożliwiający nawiązanie zaszyfrowanego połączenia.

Narzędzia w rodzaju Novell IP Gateway umożliwiają sieciom pracującym z innymi protokołami, bądź z adresami IP, które nie są unikalne, korzystanie z sieci Internet. Dają możliwość całemu systemowi na korzystanie z jednego adresu IP, który również może być przydzielany dynamicznie. Umożliwia to firmie korzystającej np. z protokołu IPX na podłączenie do Internetu za pomocą modemu u dostawcy przydzielającego adresy dynamicznie (TP S.A.). Dodatkową zaletą zwiększającą bezpieczeństwo przy korzystaniu z takich usług jest ukrycie adresów lokalnych systemu.

Usługa Network Address Translation (NAT), podobnie jak IP Gateway, pozwala klientom, którzy nie posiadają unikalnych adresów, korzystać z Internetu. Dodatkowo może pracować jako filtr pozwalający tylko na niektóre połączenia z zewnątrz i gwarantujący, że wewnętrzne połączenia nie będą inicjowane z sieci publicznej.

Network Adress translation

Tłumaczenie adresów

Translacja adresów jest implementowana we większości firewalli i jest używana wtedy, gdy nie chcemy, aby zdalny system poznał prawdziwe adresy IP w wewnętrznej sieci. Są trzy sposoby translacji adresów:

Ukrywanie NAT polega ukryciu wszystkich wewnętrznych adresów IP za jednym adresem IP, który może być adresem IP firewalla lub zupełnie innym poprawnym adresem. Największym ograniczeniem tej metody jest brak możliwości połączenia się z zewnątrz. Poniważ wszystkie komputery schowane są za jednym adresem IP, firewall nie ma możliwości sprawdzenia, do którego z komputerów w wewnętrznej sieci kierowane jest połączenie.

Statyczne NAT jest podobne do ukrywania NAT, z wyjątkiem tego, że każdy lokalny adres IP jest ukryty za osobnym adresem. Pozwala to firewallowi na rozpoznanie do którego komputera skierować połączenie. Wiekszość urządzeń NAT pozwala na jednoczesne ukrywanie NAT i statyczne NAT. Pozwala to na przydzielenie osobnych adresów tylko tym systemom, które tego potrzebują, ukrywając inne.

Translacja PAT jest używana przez większość serwerów proxy. Cały ruch na zewnątrz jest tłumaczony w taki sam sposób, jak ukrywanie NAT, lecz adresy muszą być ukryte za adresem firewalla. Aby umożliwić ruch przychodzący z zewnątrz, mapuje się porty do konkretnego systemu.

W celu precyzyjnego określenia praw rządzących dostępem do sieci tworzy się tak zwane listy reguł. Listy takie opisują prawa poszczególnych obiektów do korzystania z określonych usług/protokołów sieciowych, zezwalają na pewne rodzaje połączeń z zewnątrz jednocześnie zabraniając innych, mogą limitować liczbę połączeń z jakiegoś adresu albo ograniczać liczbę jednoczesnych połączeń. Przykładowo, kierownictwo firmy może zabronić pracownikom w określonych godzinach korzystania z usługi http z konkretnych miejsc sieci (co, oczywiście, jest decyzją polityczną). Edytor reguł jest narzędziem, przy pomocy którego budujemy i modyfikujemy zbiory reguł oraz wiążemy aplikacje z protokołami, a tym z kolei przypisujemy interfejsy sieciowe. Na użytek zaawansowanych administratorów tworzone są specjalne języki skryptowe, ułatwiające automatyzowanie konfigurowania serwera.

Integralną częścią systemów firewall jest mechanizm o zbliżonej roli do "czarnej skrzynki" w samolotach, śledzący i rejestrujący wszelkie wydarzenia w sieci. Dzięki monitorowaniu uwadze administratora z pewnością nie umknie, na przykład, 30-krotna nieudana próba zdalnego logowania się do systemu. Innym zastosowaniem jest analiza adresów, z którymi najczęściej nawiązywane są połączenia przez lokalnych użytkowników, gdyż dane takie są istotne do efektywnego skonfigurowania serwera proxy. Jednocześnie zarządca ma wgląd w dziennik błędów, gdzie zachowywane są ostrzeżenia o występowaniu wszelkich problemów z poprawnością transmisji. W przypadkach, gdy zachodzi uzasadnione podejrzenie, iż nastąpiło włamanie do sieci, system monitorujący może samodzielnie podjąć akcję zdefiniowaną przez administratora, na przykład decyzję o zerwaniu połączenia albo uruchomieniu "alarmu".

Powszechne konfiguracje firewalli

Przykłady reguł dla IPChains

Aby blokować pakiety z określonym adresem IP należy wpisac:

# ipchains -A kierunek -j DENY -p all -l -s x.x.x.x/x -d 0.0.0.0/0

gdzie kierunek to: input, output lub forward. Input oznacza pakiety, które przychodzą do systemu. Output to pakiety wychodzące do sieci. Forward oznacza pakiety, które docierają do systemu, ale nie są kierowane do tej maszyny - pakiety te są rutowane przez Linuxa. Input i output dotyczny także pakietów typu forward.

Do specyfikacji adresu IP źródła pakietu służy opcja -s, po której podajemy adres IP. Można także podać grupę adresów przez podanie po znaku slash maski podsieci, lub liczby bitów maski. Adres 0.0.0.0/0 (lub 0/0) oznacza dowolny adres IP. Podobnie opcja -d oznacza docelowy adres IP pakietu.

Można także podać protokół, który chce się filtrować. Słyży do tego opcja -p. W przykładzie powyżej blokujemy wszystkie protokoły. Poprawnymi wartościami są tcp, udp, icmp lub all. Można także użyć protokołów z pliku /etc/protocols.

Powinno używać się opcji -l, aby umożliwić logowanie pakietów, które spełniają podane zasady. Każdy taki pakiet będzie wpisany do logu jądra systemu.

Aby włączyć filtrowanie określonego portu należy wpisać:

# ipchains -A input -j DENY -p tcp -l -s 0.0.0.0/0 -d y.y.y.y/32 port
# ipchains -A input -j ACCEPT -p tcp -s x.x.x.x/24 -d y.y.y.y/32 port

gdzie y.y.y.y jest adresem IP maszyny, którą chcemy chronić, a x.x.x.x jest maską podsieci, z której istnieje możliwość połącznia się na dany port. Zamiast numeru portu można użyć także nazwy usługi z pliku /etc/services.

Aby zdefiniować zamiast pojedyńczego portu zakres portów nalezy podać np.:

# ipchains -A input -j DENY -p tcp -l -s x.x.x.x/x -d y.y.y.y/32 10:100

Wyboru typu i kodu pakietu ICMP można dokonać w podobny sposób jak wybór numeru portu dla protokołów TCP lub UDP. Należy je podać jako dodatkowy argument na końcu komendy.

Filtrowanie interfejsu sieciowego:

Wybór interfejsu sieciowego, który chcemy filtrować odbywa się za pomocą opcji -i, np.:

# ipchains -A input -j DENY -p tcp -l -s 0.0.0.0/0 -i eth1 -d y.y.y.y/32 80

Aby Linux mógł być użyty jako router, należy umożliwić przekierowywanie IP przez system. Słyży do tego komenda:

# echo "1" > /proc/sys/net/ipv4/ip_forward

Po reboocie systemu, zostanie przywrócona wartość 0, należy więc wpisać tę komendę do skryptów inicjujących.

Wymagania sprzętowe

Każdy Firewall powinien posiadać co najmniej dwa adresy, więc wymagane będą dwie karty sieciowe lub inne interfejsy transmisyjne (np. porty szeregowe, modemy ISDN, karta sieciowa + modem). Jedno z urządzeń połączone jest ze strefą zdemilitaryzowaną (DMZ) a drugie z siecią prywatną. Interfejsy należy dobrać tak, aby nie zmniejszyć przepustowości łącza (np. w przypadku łącza FastEthernet dobieramy dwie karty 100Mb). Jeśli zdecydujemy się na darmowy Firewall działający pod Linuxem wystarczy komputer z 16MB RAM i 300MB partycją. Proste zapory ogniowe działające pod Windows 95 lub Windows NT mają wymaganie nie większe od systemu operacyjnego. Większe systemy komercyjne, jak Novell BorderManager potrzebują min. 48MB RAM (+500 KB RAM dla każdych 100 otwartych połączeń TCP przechodzących przez bamkę IP) i 250 MB miejsca na dysku. W celu zapewnienia poprawnego działania Proxy Cache należy zainstalować minimum 48 MB RAM i co najmniej dodatkowe 250 MB HDD w celu efektywnego wykorzystania pamięci podręcznej. Warto zwrócić uwagę, że przy dużej ilości połączeń obsługiwanych przez wszelkiego rodzaju Proxy Servers, dodatkowa pamięć RAM przyspieszy pracę.

Kryteria wyboru

Jeżeli w naszym systemie są przechowywane dane, których zniszczenie bądź ujawnienie wiązałoby się z poważnymi konsekwencjami, to taka podsieć powinna być izolowana i nie mieć fizycznego połączenia z siecią globalną. Gdy jednak jest to niemożliwe, należy zdecydować się na jeden z profesjonalnych systemów firewall. Zanim dokonamy takiego wyboru warto rozważyć następujące kwestie:

W trakcie instalacji należy rozwiązać kolejne problemy:

Wady i zalety firewalli


Zalety:

Wady:

SSH

Jedną z "fajniejszych" a przynajmniej wyrożniających rzeczy w UNIX-ie jest możliwość zdalnej administracji.
Niestety narzędzia takie jak telnet, rsh nie są na tyle bezpieczne aby przy ich pomocy móc administrowac swoim serwerem.

Telnet , usługa tak przydatna osobom potrzebującym zdalnego dostępu do własnych kont ma jedną podstawową wadę. Otóż cala transmisja komend i danych włączając w to wpisywane przez użytkownika login i haslo, przesyłana jest do celu otwartym tekstem. Ponieważ raczej rzadko zdarza się, by połaczenie do zdalnej maszyny było bezpośrednie, wszystko to idzie przez dzisiątki routerów i bramek co stwarza nie jedną okazję do przechwycenia naszej transmisji.

. Dlatego też kilka lat temu znany fiński hacker Tatu Ylönen stworzył mądre narzędzie powszechnie nazywane Bezpieczną Powłoką (Secure Shell) lub SSH. Dlaczego mądre ?? Bo oprócz tego co umożliwiały tradycyjne programy do zdalnej komunikacji, SSH pozostwiało użytkownikowi wybór czy chce kodowaną transmisje danych czy nie .
Drugą zaletą SSH jest automatyczne logowanie. Możemy się dostać na konto w sieci bez podawanie hasła.
Wygląda to jak rlogin ale mechanizm jest trochę inny. Identyfikacja odbywa się za pomocą dwóch kluczy - prywatnego oraz publicznego, który jest umieszczany na odległej maszynie. Kolejną zaletą jest to, że na życzenie użytkownika SSH potrafi kompresować dane (wystarczy podac opcję  
-C).  Dane wtedy są przesyłane przez tak zwany  tunel ssh.  Jest to szczególnie pożyteczne przy pobieraniu plików teskstowych (chodzi oczywiście o czas).

    Innym zastosowaniem tunelów transmisyjnych SSH jest możliwość łączenia się z serwerami irc-a. Dzięki temu możemy się pozbyć przykrych restrykcji takich jak +r.

SSH pozwala podobnie do telnetu, na zdalną pracę na konkretnej maszynie jednak w przeciwieństwie od telnetu treść transmisji przez port SSH (22) jest praktycznie niemożliwa do przechwycenia jakimkolwiek snifferem [-programem, który monitoruje i rejestruje hasła oraz identyfikatory używane w trakcie logowania się użytkowników.Często wykorzystywany jest przez snifferow tzw. koń trojański].
Wszystko dzięki temu, ze nasza sesja jest kodowana przy użyciu jednego ze znanych algorytmów kryptograficznych opartych na metodzie kluczy kodujących i dekodujących.
Te algorytmy to:
IDEA, DES, 3DES, Blowfish i Arcfour.
Z tych 5-ciu algorytmów DES jest możliwy do złamania przez osoby mające do dyspozycji maszyny o "niesamowitej" mocy obliczeniowej.
Pozostałe zwłaszcza IDEA oraz Blowfish [mój ulubiony ;)] są uważane za całkowicie bezpieczne.
    Jak to działa ? Każdy komputer w momencie instalacji musi wygenerować parę kluczy. Jeden z nich będzie dostępny dla wszystkich (tzw.
host key), drugi prywatny musi być starannie ukrywany. Oprócz tego serwer ssh (sshd) generuje co jakiś czas dodatkowe dwa klucze tak zwane server keys.
Szyfrowanie transmisji odbywa się z udziałem wymienionych kluczy a nasza tożsamość sprawdzana jest za pomocą podania hasla lub poprzez trzeci klucz, nasz prywatny, który możemy wygenerować przy pomocy polecenia
ssh-keygen.

    Ponadto pakietem SSH możemy zastąpic standardowe polecenia systemu takie jak: rlogin, rsh, rcp poprzez ssh i scp.

    Poza wymienionym juz sniffingiem SSH potrafi nas zabezpieczyć przed atakami takimi jak IP spoofing i DNS spoofing. O ile istotą sniffingu bylo podszywanie się pod innego uzytkownika o tyle spoofing polega na podszywaniu się pod inny komputer. Cel pozostaje ten sam - oszukanie systemu zabezpieczeń i dostęp do zasobów. Większość systemów umożliwia dostęp do sieci tylko komputerom o określonym adresie IP.
Przypomnijmy sobie plik .rhosts, z którego korzystał rlogin. Były w nim właśnie adresy naszych 'zaufanych' hostów.

Zasada działanie

Produkty z rodziny "F-Secure" wykorzystują protokół SSH, który zapewnia mechanizm kodowania danych w warstwie transportowej protokołu sieciowego. Protokół zapewnia autoryzację pomiędzy dwoma komputerami w sieci, autoryzację pomiędzy użytkownikami, wraz z ochroną prywatnoci i integralnosci ich danych.

Program F-Secure SSH UNIX Server może być używany wraz z programem dla Windows F-Secure SSH, dla Macintosh'a i Unix'a w celu zapewnienia ochrony dla zdalnych połączeń dokonywanymi pomiędzy komputerami. Oprogramowanie dla serwera pracującego pod Unix'em zawiera narzędzia do administracji systemu, które dostarczono do ochrony przesyłania plików i backup'ów wykorzystując kodowanie przy pomocy klucza publicznego.

Program F-Secure SSH Server pod Unix'a zapewnia bezpieczny proces logowania, transfer plików, pracę pod X11, połączenia w protokole TCP/IP poprzez niepewne sieci. Serwer czuwa nad autentycznoscią danych, automatycznie dokonuje kodowania sesji i integruje ochronę dla wszystkich przesyłanych danych.  Do tego celu wykorzystuje się protokół RSA, służący do wymiany kluczy i sprawdzania autentycznosci oraz symetryczne algorutmy, Blowfish lub 3DES do kodowania transferu danych.

Administratorzy systemów mogą użyć dostarczonych do pakietu narzędzi umożliwiających podmianę istniejących protokołów, takich jak RSH, RLOGIN, RCP, RDIST i TELNET. Dzięki temu administratorzy mogą wszystkie zadania kierować poprzez bezpieczne połączenia. Narzędzia pozwalają na wykonywanie chronionych backup'ów za pomocą RSA bazującego na kodowaniu kluczem publicznym.

Program F-Secure SSH client zapewnia bezpieczny proces logowania w niepewnej sieci. Program ssh w pełni zastępuje protokół TELNET dodatkowo realizując sprawdzanie autentycznosci, automatyczne kodowanie sesji i integrację metod ochrony zdefioniowanych w protokole SSH. F-Secure SSH client zapewnia pełną emulację terminala VT100 i ANSI colors.

F-Secure SSH client również dostarcza technologię " TCP/IP port forwarding technology" przekierowywania niechronionych połączeń poprzez chroniony kanał. Jest to realizowane poprzez utworzenie zastępczego serwera dla źródłowego portu pracującego pod protokołem TCP/IP. Serwer ten, utworzony na lokalnej maszynie, czeka na połączenie programu użytkownika do portu źródłowego. Następnie F-Secure SSH przesyła żądanie i dane przez chroniony kanał do zdalnego systemu. F-Secure SSH server na zdalnym systemie dokonuje finalnego połączenia do własciwego hosta i portu. Wiele zdalnych usług, które wykorzystują protokół TCP/IP może być chronionych, między innymi: aplikacje użytkowników client-server, systemy baz danych, i usługi takie jak HTTP, TELNET, POP, SMTP. F-Secure SSH zapewnia automatyczne przesyłanie danych w X11 Windowing System, głównie używanych na maszynach unix'owych.

Zasada działania

Każdy z komputerów na których jest zainstalowany pakiet SSH posiada parę kluczy - klucz prywatny, możliwy do odczytania jedynie przez administratora danego komputera oraz przez demona sshd, obsługującego usługę SSH i klucz publiczny dostępny dla wszystkich użytkowników sieci. Połączenie jest realizowane po stronie klienta przez program ssh (F-Secure SSH client) , a po stronie serwera przez demona sshd (F-Secure SSH Server). Kiedy klient łączy się z demonem (serwerem) jako pierwsze dane otrzymuje klucz publiczny serwera. Klient porównuje ten klucz z zachowanym w wewnętrznej bazie danych, z poprzednich połączeń (o ile wcześniej łączył się z tym serwerem, jeżeli nie to go tylko zapamiętuje w bazie danych). W przypadku stwierdzenia niezgodności kluczy połączenie jest zamykane. W przeciwnym przypadku klient generuje losową liczbę 256 bitową. Liczbę tę szyfruje przy pomocy swojego klucza prywatnego oraz klucz publicznego serwera i tak zakodowaną przesyła do serwera. Serwer przy pomocy swojego klucza prywatnego i klucz publicznego klienta rozkodowuje przesyłkę, czyli wygenerowaną przez klienta losowo liczbę. Liczba ta stanowi klucz używany do kodowania podczas dalszej komunikacji.

Po dokonaniu autoryzacji komputerów następuje autoryzacja użytkownika. Najpierw sprawdza się istnienie klucza publicznego klienta w globalnej bazie danych kluczy publicznych innych serwerów (plik /etc/ssh_known_hosts) lub w indywidualnej bazie danego użytkownika (plik ~/.ssh/known_hosts). W przypadku znalezienia tego klucza, demon zezwala na dokonanie autoryzacji na podstawie plików /etc/hosts.equiv, /etc/shosts.equiv, ~/.rhosts lub ~/.shosts. Pliki /etc/shosts.equiv i ~/.shosts stanowią odpowiedniki plików /etc/hosts.equiv oraz ~/.rhosts ale wyłącznie dla usługi ssh, a więc stanowią znacznie lepszą metodę autoryzacji. W przypadku niepowodzenia autoryzacji, sprawdzana jest obecność pliku ~/.ssh/authorized_keys zawierającego klucze publiczne danego użytkownika wygenerowane na innych stacjach. Plik ten może sobie stworzyć każdy użytkownik indywidualnie przy pomocy polecenia ssh-keygen na stacji klienta i poprzez przesłanie go na serwer. Następnie serwer próbuje dokonać autoryzacji użytkownika w sposób analogiczny do przeprowadzonej wcześniej autoryzacji komputerów, tzn. wymiany z klientem zakodowanej informacji przy pomocy pary kluczy: klucz publiczny użytkownika, klucz prywatny serwera i klucz prywatny użytkownika, klucz publiczny serwera. W przypadku niepowodzenia tej metody, demon pyta się użytkownika o jego hasło. Ponieważ transmisja jest kodowana, nie ma obawy o podsłuchanie go przez niepowołaną osobę.

Pakiet można skompilować na większość platform Unixowych. Zawiera on pełną dokumentację wraz z opisem działania, instalacji i konfiguracji. Dodatkową zaletą pakietu jest możliwość skompilowania go wraz z biblioteką powstałą podczas kompilacji pakietu TCP_WRAPPER i kontrolowania dostępu do usługi ssh, na zasadach identycznych, jak do innych usług sieciowych poprzez pakiet TCP_WRAPPER.

Instalacja i konfiguracja

Instalacja SSH pod Linuxem:

Do instalacji oprogramowania dostarczonego w formie źródłowej niezbędny jest kompilator C, oraz podstawowe narzędzia dostarczane z większością systemów unixowych.

  1. Należy rozpakować archiwum
    gzip -cd ssh-1.2.26.tar.gz | tar xvf -

  2. Następnie należy uruchomić skrypt konfiguracyjny, który sprawdzi środowisko kompilacji (dostępne narzędzia systemowe, ścieżki dostępu, wersje i zawartość bibliotek systemowych) i przygotuje odpowiednie pliki konfiguracyjne.
    cd ssh-1.2.26
    ./configure
    Wywołując skrypt configure z dodatkowymi opcjami można np. zmienić miejsce instalacji plików konfiguracyjnych lub binariów SSH, jednak w przeważającej większości przypadków ustawienia domyślne są poprawne, i takie będą stosowane w przykładach.

  3. Po skonfigurowaniu pakietu należy go skompilować i zainstalować.
    make
    a następnie, jako root
    make install

W trakcie instalacji utworzone zostają następujące pliki:

Dodatkowo do podkatalogów w hierarchii /usr/local/man zostaną zainstalowane strony dokumentacji do poszczególnych komend plików konfiguracyjnych.

Konfiguracja serwera SSH:

Głównym elementem serwera SSH jest demon sshd. Zastępuje on dwa programy, które znajdują się w większości dystrybucji: rlogin i rsh. Służy do prowadzenia bezpiecznej (kodowanej) komunikacji pomiędzy dwoma komputerami w sieci.

Sshd odczytuje konfigurację z /etc/ssh/sshd_config (lub z pliku określonego w linii poleceń, w opcji -t). Plik ten zawiera pary: klucz - wartość. Każda z nich jest zapisana w jednej linii. Linie puste i zaczynające się od znaku '#' są traktowane jako komentarz i są pomijane.

Opis pliku konfiguracyjnego serwera ssh1 - /etc/ssh/sshd_config:

# This is ssh server systemwide configuration file.
Port 22

domyślny port dla ssh to właśnie 22

ListenAddress 148.81.XXX.XXX

adres, gdzie jest zainstalowany serwer (demon) sshd obsługujący ssh1.Ustawienie jest istotne przy systemach o kilku kartach sieciowych (na przykład rutery lub bramki). Najwygodniej ustawić wtedy adres IP tej karty sieciowej, do której połączenia będą częstsze lub do karty od strony sieci zewnętrznej.

HostKey /etc/ssh_host_key  
RandomSeed /etc/ssh_random_seed

Położenie pliku z kluczem oraz parametrem losowym

KeyRegenerationInterval 3600

Co pewien czas następuje odnowienie klucza maszyny. Ten czas (w sekundach) ustawia się właśnie za pomocą tej opcji. Domyślnie - 1 godzina.

PermitRootLogin no

Czy root może się zalogować zdalnie za pomocą ssh. Patrz uwagi dalej.

IgnoreRhosts yes
IgnoreRootRhosts yes
RhostsAuthentication no
RhostsRSAAuthentication no

Ignorowanie plików .rhosts, które wskazują "zaufane" maszyny, skąd mógłby się zalogować użytkownik bez podawania hasła oraz zezwalanie na autentykację za pomocą mechanizmu rhosts.

PrintMotd yes

Czy wypisywać komunikat powitania (motd - najczęściej /etc/motd)

X11Forwarding yes
XAuthLocation /usr/bin/X11/xauth

Czy przekazywać dane połączenia X11 (graficznego) i za pomocą którego programu dokonywać autentykacji użytkownika w środowisku graficznym X-Windows

# {Allow,Deny}Users | Groups
DenyGroups student

Zezwolenie na logowanie się za pomocą ssh. Patrz dalej.

# najbezpieczniejsza jest autentykacja RSA (tylko) - a reszta no
RSAAuthentication yes

Wybór metody autentykacji. Włączyć TYLKO RSA.

PasswordAuthentication yes
PermitEmptyPasswords no
IdleTimeout 30m

Autentykacja za pomocą haseł - włączanie, zezwolenie na puste hasła oraz czas rozłączania podczas oczekiwania na podanie hasła (tutaj- 30 minut).

# AllowHosts *.our.com friend.other.com
DenyHosts  home.pl *.algonet.se krakow.tpnet.pl opole.tpnet.pl

Z których maszyn można się łączyć za pomocą ssh. Patrz dalej.

CheckMail no

Czy po zalogowaniu ma się odbywać sprawdzanie poczty.

AllowTcpForwarding no

Przy takim ustawieniu nie jest możliwe tunelowanie ftp, ale maszyna jest bezpieczniejsza.

AccountExpireWarningDays 30

Powiadamianie o kończeniu się ważności konta (dni)

PasswordExpireWarningDays 14

Powiadamianie o kończeniu się ważności hasła (dni)

ForcedPasswdChange yes

Wymuszanie zmiany już nieważnego hasła

Konfiguracja klienta SSH:

Ogólnosystemowa konfiguracja klienta ssh znajduje się w pliku /etc/ssh/ssh_config, zaś opcje konfiguracyjne sprawdzane są w następującej kolejności:

  1. opcje podane w linii komend

  2. plik konfiguracyjny użytkownika ($HOME.ssh/config)

  3. plik ogólnosystemowy

Opis pliku konfiguracyjnego klienta ssh1 - /etc/ssh/ssh_config:

Hosts *

Otwiera sekcję dotyczącą połączeń do danego hosta - * oznacza wszystkie hosty

ForwardAgent yes

Określa, czy agent autentykacyjny ma być przekazywany na kolejne systemy na które następuje logowanie

ForwardX11 yes

Zezwala na automatyczne przekazywanie połączeń X11 ponad szyfrowanym kanałem SSH

RhostsAuthentication no
RhostsRSAAuthentication no

Zezwalanie na autentykację za pomocą mechanizmu rhosts.

PasswordAuthentication yes

Autentykacja za pomocą haseł

RSAAuthentication yes
TISAuthentication no

Wybór metody autentykacji (wybrać tylko RSA)

PasswordPromptHost yes
PasswordPromptLogin yes

Czy program ma pytać o hasła. 

FallBackToRsh no
UseRsh no

Możliwość użycia rsh w przypadku niepowodzenia połączenia za pomocą ssh. Można włączać, ale administrator zdalnej maszyny prawie na pewno to wyłączył.

BatchMode no

Możliwość użycia ssh w trybie wsadowym. Wyłączyć gdy nie jest koniecznie potrzebne. Może się przydać tylko w kilku przypadkach.

EscapeChar ~

Jaki znak powoduje wyjście z połączenia (jak w telnecie ctrl+])

Cipher 3DES

Algorytm stosowany do szyfrowania przy połączeniu ze zdalną maszyną. 

Compression yes
CompressionLevel 9

Kompresja - domyślnie jest włączona, poziom - 6. Dziewięć jest najwyższym, 0 wyłącza.

IdentityFile ~/.ssh/identity

Położenie i nazwa pliku identyfikacji

LINUX I WIRUSY

Wirusy komputerowe do niedawna były wyłącznie utrapieniem użytkowników DOSa i wszelkich rodzajów MS Windows. W ciągu kilku lat od powstania koncepcji samopowielającego się kodu infekującego inne programy powstało ich kilka tysięcy.

Użytkownikom Unixów ten problem jest prawie całkowicie nieznany dzięki rozbudowanemu systemowi kontroli dostępu do plików i pamięci, będącemu jednym z podstawowych założeń tego systemu. Wirus napisany według tradycyjnej DOSowej filozofii może co najwyżej zainfekować pliki do których miałby prawa zapisu - czyli praktycznie tylko te należące do użytkownika, który go uruchomił. Kolejnym utrudnieniem dla potencjalnego autora wirusa jest ogromna różnorodność platform sprzętowych na których działają Unixy oraz to, że duża część oprogramowania jest rozpowszechniana w postaci kodu źródłowego.

WIRUSY CZY ROBAKI?

Nieprzyjazne środowisko stworzyło konieczność wyprodukowania wirusa działającego na zupełnie odmiennej zasadzie, niż jego DOSowi pobratymcy. Najsłynniejszym przejawem działania Unixowego mikroba był przypadek "robaka" (ang. worm) Roberta T. Morrisa, który w roku 1988 zainfekował kilka tysięcy Sunów i VAXów w Stanach Zjednoczonych. "Robak" wykorzystywał wszystkie możliwości, jakie daje połączenie komputerów w sieć. Przy użyciu dziur w implementacjach usług finger, rexec i protokołu SMTP wirus kopiował swój kod (część w języku C, część w pliku obiektowym) na kolejne maszyny, wykorzystując ich zasoby do zgadywania haseł na przyszłych ofiarach. Na temat jego działania napisano obszerne rozprawy, z których niektóre wymieniono na końcu artykułu. W późniejszym okresie pojawiło się jeszcze kilka "robaków", jednak epidemie miały znacznie mniejszy zakres.

BLISS

Na początku stycznia 1997 wydawało się, że historia znowu się powtórzyła. W grupach dyskusyjnych poświęconych bezpieczeństwu Linuxa pojawiły się alarmujące listy o nowym wirusie Bliss, napisanym specjalnie pod ten system.

Sprawa stała się na tyle głośna (a może dlatego stała się tak głośna?), że firma McAfee opublikowała informację o pojawieniu się nowego, groźnego wirusa pod Linuxa, który oczywiście jest usuwany przez oferowany przez nią program VirScan.

Tymczasem 7-go lutego na listę best-of-security napisał anonimowy autor wirusa rozwiewając większość plotek, które do tej pory zdążyły narosnąć wokół Blissa. List zaczynał się tak: "To jest wirus. Jeśli go uruchomisz, to masz sporą szansę na zniszczenie swojego systemu". Ale reszta była znacznie mniej sensacyjna.

Obecnie istnieją dwie wersje Blissa - stara i nowa, załączona do wzmiankowanego listu autora wirusa. Bliss jest programem napisanym w C, po skompilowaniu mającym 17892 (stara wersja) lub 18604 (nowa wersja) bajtów długości. Kod źródłowy nie został opublikowany. Wirus nie jest "robakiem" w sensie takim jak program Morrisa, jest nawet bardziej koniem trojańskim niż wirusem. Nie wykracza poza prawa dostępu do plików choć trzeba przyznać, że wykorzystuje je do końca. Wyszukuje wszystkie pliki do których może pisać i infekuje je swoją kopią. Potrafi także wykryć starszą wersję siebie i podmienić ją na aktualną. Próbuje także przywrócić datę modyfikacji zainfekowanego pliku. Przerywa działanie gdy zorientuje się, że jego działanie jest śledzone debuggerem lub programem strace.

Jedna z niewielu rzeczy, które upodabniają go do "robaków" to próba wykorzystania niewłaściwie zabezpieczonej usługi rsh (zapisywalne pliki .rhosts i /etc/hosts.equiv) do uzyskania cudzej tożsamości oraz być może przeniesienia się na inne maszyny. Według firmy McAfee Bliss jest wirusem nadpisującym - tzn. bezpowrotnie zastępuje początek infekowanego programu swoim kodem. W rzeczywistości zarówno stara (opisana przez McAfee) jak i nowa wersja zachowuje oryginał. Uruchomienie zainfekowanego programu nie może pozostać niezauważone, ponieważ Bliss wyświetla szczegółowe informacje co w danej chwili robi.

Bliss poza plikami binarnymi próbuje infekować skrypty shella, jednak tak zarażonych plików potrafi później poprawnie uruchomić. Potrafi je za to wyleczyć.

Charakterystyczną cechą Blissa jest zapisywanie ścieżek do wszystkich zarażonych programów w pliku /tmp/.bliss. Na tej podstawie Bliss uruchomiony z opcją "--bliss-uninfect-files-please" próbuje usunąć swoje kopie ze znajdujących się na liście plików.

Jak widać trafna jest uwaga jednego z czytelników listy linux-security, że "Bliss wygląda raczej na rezultat prac naukowych niż złośliwego wirusa". Nadal nie da się napisać wirusa infekującego system Unixowy w sposób podobny jak DOS lub MS Windows oczywiście pod warunkiem, że nie uruchomi go administrator.

Blissa nie należy jednak lekceważyć - jeśli w naszym systemie znajdują się jakieś zapisywalne przez wszystkich pliki wykonywalne to mogą one zostać zarażone przez zwykłego użytkownika. Późniejsze uruchomienie takiego pliku przez administratora zaowocuje epidemią, która może rozprzestrzenić się na cały system. Może to też być dodatkową motywacją do przestrzegania podstawowej zasady bezpiecznej pracy na Unixie - korzystania z uprawnień administratora tylko wtedy, gdy jest to naprawdę niezbędne.

PROFILAKTYKA

Warto od razu sprawdzić swój system pod kątem obecności infekowalnych plików. Administrator systemu może to zrobić za pomocą dwóch poleceń:

% find / -type f -perm -003 -exec ls -l {} \;;

% find /home -name ".[rs]hosts" -exe ls -l {} \; -exec grep "+" {} \;;

Pierwsze z nich znajdzie pliki wykonywalne zapisywalne przez wszystkich i wyświetli ich bliższe dane. Jeśli nie ma szczególnych powodów do zachowania określonych atrybutów pliku, to należy ustawić standardowe:

% chmod 755 plik (czyli "-rwxr-xr-x")

Trzeba też pamiętać, że podobne zagrożenie mogą stanowić pliki zapisywalne przez grupę (szukamy ich opcją "-perm -030"). Oczywiście, sprawa w tym wypadku jest znacznie mniej oczywista - zależy kto należy do grupy.

Drugie z wymienionych poleceń znajdzie wszystkie pliki .rhosts oraz .shosts zawierające znaki "+" i wyświetli ich zawartość. Stanowią one poważną dziurę w bezpieczeństwie usług rsh i ssh, wykorzystywaną m.in. przez Blissa. Pliki takie należy usunąć jeśli ich istnienie nie jest w jakiś sposób uzasadnione.

Można wreszcie skorzystać z któregoś z publicznie dostępnych skanerów - SATAN, ISS, COPS lub Tiger. Wszystkie z nich, poza szukaniem konkretnych dziur w konkretnych usługach, sprawdzają także atrybuty plików wykonywalnych.

LECZENIE

W razie infekcji najprostszym rozwiązaniem będzie skorzystanie z usług samego wirusa - uruchomienie go z opcją "--bliss-uninfect-files-please". Warunkiem jest istnienie pliku /tmp/.bliss, w którym znajdują się dane zarażonych plików. Może to wyglądać tak:

% bliss --bliss-uninfect-files-please

bliss type 1 version 0.4.0 (00010004)

Compiled on Feb 5 1997 at 18:35:33

Written by electric eel.

Debugging is ON

using infection log: /tmp/.bliss

/tmp/bliss/autoconf, ver 10002, at Wed Feb 19 23:25:11 1997

disinfecting: /tmp/bliss/autoconf

file.virus_size=18604, x=4513

read 4513 bytes

successfully (i hope) disinfected /tmp/bliss/autoconf

http://www.rand.org/publications/electronic

Autor nieznany: Pierwszy profesjonalny podręcznik hakera, Wydawnictwo Robomatic, Wrocław 1998, s. 28

Autor nieznany: Pierwszy . . . , op. cit. , s. 30

Autor nieznany: Pierwszy . . . op. cit. , s. 30

Autor nieznany: Pierwszy . . . , op. cit. , s. 34

Tadeusz Kifner :Polityka bezpieczeństwa i ochrony informcacji,Wydawnictwo Helion,Gliwice 1999, str.9

Serwery sieciowe Linuksa: Przekład z języka angielskiego Jacek Sokulski, Wydawnictwo MIKOM, Warszawa 2000, str.12

Novell Education: Novell Technologies, Wydawnictwo Novell Education, USA 2000, str.29

http://info.internet.isi.edu:80/in-notes/rfc/files/rfc826.txt

http://info.internet.isi.edu:80/in-notes/rfc/files/rfc792.txt

Novell Education: Network Technologies, Wydawnictwo Novell Education, USA 2000, str.58

http://info.internet.isi.edu:80/in-notes/rfc/files/rfc760.txt

Opracowanie własne

Opracowanie własne

Unix Administracja Systemu:Eleen Frisch, Wydawnictwo RM, str.151

Czasopismo komputerowe CHIP,Wydawnictwo CHIP,Warszawa 1999,s.3

Czasopismo komputerowe CHIP,Wydawnictwo CHIP,Warszawa 2001,s.36

Czasopismo komputerowe CHIP,Wydawnictwo CHIP,Warszawa 2001,s.5

Opracowanie własne

Tekst przetłumaczony na podstawie dokumenctacji systemu dołączonej do każdej dystrybucji

Security and Optimization Linux:Red Hat Edition -Exlusively from OpenDocs, czerwiec 2002, str.34

Budowanie zabezpieczeń sieci komputerowych: Mariusz Stawowski, Wydawnictwo Arskom, Warszawa 1999, s.121

Serwery sieciowe Linuksa:Jacek Sokulski, Wydanie MIKOM, Warszawa 2000, s.471

Unix Administracja Systemu: Eleen Frisch, s.640

Network Security:Krzysztof Kleszczyński, Wydawnictwo Informacji Zawodowej, Warszawa 2002, s.98

Security and Optimization Linux:Red Hat Edition- exclusively from OpenDocs, czerwiec 2000 ,s.284

Budowanie zabezpieczeń sieci komputerowych:Mariusz Stawowski, Wydawnictwo Warszawa 1999, s.134

Dokumentacja systemu Linux Red Hat Edition

Polityka bezpieczeństwa i ochrony informacji: Tadeusz Kifner,Wydawnictwo Helion,Gliwice 1999,s.78

Autor nieznany: Pierwszy profesjonalny podręcznik hakera, Wydawnictwo Robomatic, Wrocław 1998, s. 572

1

Polecenie ping

Warstwa fizyczna przyjmuje lub wysyła dane poprzez odpowiednie medium transmicyjne.

W tym miejscu przeprowadzana jest kontrola błędów

Tutaj dodawane są numery IP nadawcy i odbiorcy w celu poprawnego routingu

Po inicjacji transferu przez użytkownika warstwa ta przekazuje żądanie do warstwy transportu.

W warstwie tej dołączany jest nagłówek i całość przekazywana jest do warstwy sieciowej

Warstwa aplikacji

Warstwa transportowa

Warstwa sieciowa

Warstwa łącza danych

Warstwa fizyczna

Serwer

Kolor szary oznacza nagłówek protokołu IP. Są to informacje wymagane i powiązanie ze sobą adresów nadawcy i odbiorcy w sieci.

Kolor biały oznacza właściwe przesyłanie danych

Komputer wysyłający(klient) wysyła żądanie połączenia, podając port komputera zdalnego(serwera)

Serwer odpowiada potwierdzeniem odbioru oraz ustawia nasze żądanie w kolejce oczekujących na połączenie

Klient również potwierdza odbiór i wirtualny obwód zostaje ustalony

Jeśli nie ma odpowiedniego wpisu w pliku /etc/hosts.deny oraz /etc/hosts.allow dostęp zostanie przydzielony

Jeżeli (usługa,klient) będą zgdzały się z wpisem w pliku /etc/hosts.deny dostęp będzie abroniony.

Dostęp będzie zapewniony jeżeli (usługa,klient) będą zgadzały się z wpisem w pliku /etc/hosts.allow

Niskie Koszty

Zamiast drogich, specjalizowanych serwerów można użyć taniego Linuxa i przeznaczonego dla niego oprogramowania, a całość zainstalować na komputerze klasy PC.

Stabilność

Linux pozwala na zakończenie aplikacji, która sprawia kłopot, bez potrzeby restartu całego systemu

Niezawodność

Linux jest obecnie powszechnie używanym systemem dla serwerów internetowych. Wiele programów i serwerów działających pod kontrolą Linuxa cechuje doskonała bezawaryjność



Wyszukiwarka

Podobne podstrony:
CAŁA PRACA MGR o kompach
Powszechna Deklaracja Praw Czlowieka ma 59 lat, Dokumenty praca mgr
rola ojca w kształtowaniu charakteru córki, Dokumenty praca mgr
Ciało jako sposób bycia w świecie, Dokumenty praca mgr
dziecko alkohol praca mgr
FILOZOFIA PLATONA, Dokumenty praca mgr
BIBLIOGRAFIA3, Studia, PRACA MGR - TEOLOGIA, MAGISTERKA WSZYSTKO
bibliografia(1), praca mgr
Uwarunkowanie agresji w środowisku rodzinnym, Dokumenty praca mgr
Ściąga, do Szkoły, matura, praca mgr i podyplom., encyklopedie, ściągi, Odwodnienia
praca mgr 24.06, Studia, Prawo
licencjat (cała praca ?z mapek) ZFIFEYTSUTSFDWU77LUI2RXMPMXM3CEWYPTOORQ
Technologia sciekw Wyklady-sciaga, do Szkoły, matura, praca mgr i podyplom., encyklopedie, ściągi, T
praca mgr 02.07, Studia, Prawo
sciagi mag 1, do Szkoły, matura, praca mgr i podyplom., encyklopedie, ściągi, Budownictwo, Budownict
Ściąga odwodnienia, do Szkoły, matura, praca mgr i podyplom., encyklopedie, ściągi, Odwodnienia
cała praca magisterska 3N2UEF6MKTA2EGJNLX2PH55YV3F75DK4Y5MCN2I

więcej podobnych podstron