SPIS TREŚCI
Geneza powstania Internetu
Początki: 1962-1969
W obliczu wybuchu wojny atomowej, Siły Powietrzne Stanów Zjednoczonych 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 przetrwać 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ć zdrowemu rozsądkowi. Baran wiedział jednak dobrze, że sieci scentralizowane 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 komunikacji 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 „superkomputer'; 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 komputera 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żeniach 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 dostarczenie danych do adresata. Wynalazł system, w którym dane określały swoją własną trasę dynamicznie - w przypadku napotkania na przeszkodę 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 zwolnienie którejś z marszrut (path - ścieżek, po których poruszają się dane w sieci}. W ten sposób powstawał inteligentny system wymiany informacji. Baran szczegółowo opracował również inne aspekty sieci, a w tym:
system priorytetów (oraz sposoby na uniknięcie przeciążenia sieci)
sprzęt
Niestety, idee Barana wybiegały zbyt daleko w przyszłość. W Pentagonie nie ufano tak radykalnym koncepcjom i oficjale w Departamencie Obrony natychmiast odłożyli jedenastotomowy raport Barana na półkę. Dopiero 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, Uniwersytet w Utah Uniwersytet Kalifornijski w Los Angeles oraz Uniwersytet 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 operacyjny. 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 nazwisku Ken Thompson (wraz z Dennisem Ritchie i Josephem Ossanna) z firmy Bell Labs opracowują pierwszą wersję UNIX-a. Autorskie oprogramowanie 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 rozbudowanego i przyjaznego użytkownikowi. Pierwszy, „nagi” UNIX zawierał wyłącznie te narzędzia, których istnienie konieczne było do poprawnego 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 problemy. Po pierwsze, język programowania, w którym pracowali twórcy systemu nie bardzo nadawał się do takich zastosowań. I znów przypadek 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 operacyjnych.
„Dziś niemal wszystkie aplikacje wspomagające komunikację poprzez Internet napisane są w języku C. Zarówno system operacyjny 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
kod C może być bez trudu kompilowany na różnych systemach operacyjnych
można się go szybko i łatwo nauczyć
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 okazji 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 pozwala 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ą komunikację - 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 odbiorcó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 dystrybucją (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żniejsze zostało zrobione - rząd amerykański mógł zacząć zbierać plony swoich inwestycji. Kontrolę nad ARPANET-em przekazano organizacji znanej 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żone; 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żytkownikó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 szkolenia ich w jakimś nieznanym systemie”.
Dzięki temu, że źródła UNIX-a udostępniano darmowo - system rozwijany 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 informatycznych. 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
był systemem otwartym
każdy miał dostęp do kodu źródłowego
miał wbudowane potężne narzędzia sieciowe
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 producentów oprogramowania i sprzętu wypuszczając własne wersje UNIX-a. Najpopularniejsze z nich wymienione są poniżej.
Wersja systemu UNIX Produceet
SunOS i Solaris Sun Microsystems HP-UX Hewlett Packard
AIX IBM
IRIX Silicon Graphics (SGI)
Digital UNIX Digital Equipment Corporation (DEC)
Wiele z powyższych odmian systemu UNIX przeznaczonych jest do instalacji na wysokowydajnych maszynach zwanych stacjami roboczymi (ang. workstations). Różnią się one od komputerów osobistych pod kilkoma względami. Przede wszystkim zbudowane są z najlepszych dostę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 osobistych - stworzono nawet pakiet bardzo przypominający Microsoft Office. Nazywa się StarOffice, jest bezpłatny dla użytkowników indywidualnych 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 programó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 plików filmowych, odtwarzacze płyt CD audio, programy do cyfrowej rejestracji dźwięków i obrazów, aplikacje do korzystania z poczty multimedialnej i wiele innych przydatnych i nieprzydatnych drobiazgów. W zasadzie 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ą platformą 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ą akceptowały połączenia z którejkolwiek części świata.
Ponadto UNIX jest systemem otwartym, jego kod źródłowy jest udostępniony publicznie. Stąd też luki w systemie znajdowane są nie tylko przez specjalizowanych programistów pracujących nad rozwojem UNIXa, 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 systemu, to:
szyfrowane hasła
restrykcyjna kontrola dostępu do plików i katalogów · procedury uwierzytelniające
wyszukane funkcje prowadzenia pliku dziennika
UNIX używany jest więc w zastosowaniach wymagających dużego bezpieczeństwa. Dostępnych jest wiele narzędzi jeszcze bardziej wzmacniających zabezpieczenia tego systemu; niejedno z nich można darmowo ściągnąć z Internetu. Narzędzia takie możemy podzielić na trzy podstawowe grupy:
narzędzia do kontroli zabezpieczeń
systemowe programy do obsługi plików dziennika (logów)
programy wykrywające ingerencję z zewnątrz
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 stanowią 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ą poszczególne zdarzenia w systemie) wspomagają kontrolę czynności wykonywanych przez użytkowników oraz przeglądanie komunikatów systemowych. Wszystkie te zdarzenia rejestrowane są w plikach tekstowych albo automatycznie przekształcane na format którejś z popularnych baz danych. Programy do obsługi plików dziennika to podstawowe narzędzie każdego administratora systemu UNIX, a generowane przez nie pliki mogą stanowić podstawę do wytoczenia sprawy przeciwko 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 inteligentny rodzaj opisanych powyżej programów do obsługi plików dziennika. Różnica polega na tym, że tym razem dzienniki są analizowane w czasie rzeczywistym i przeszukiwane pod względem ciągów wskazują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 :
Poczta elektroniczna
Przesyłanie plików (FTP)
Grupy dyskusyjne(Usenet)
Word Wide Web (www)
Istnieją dwa rodzaje protokołów TCP/IP:
Protokoły działające na poziomie sieci
Protokoły działające na poziomie aplikacji
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
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ół komunikacji sterownia siecią Internet (ICMP)
Protokół internetowy (IP)
Protokół kontroli transmisji (TCP)
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łają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 przechwytywany 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, przyciski, 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 sieciowych.
Ł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 komunikatach tych „wiedzą" wszystkie hosty biorące udział w połączeniu. Dlatego też ICMP ma zasadnicze znaczenie przy diagnozowaniu problemów sieciowych. Informacje diagnostyczne dostarczane przez ten protokół mówią nam:
kiedy host jest nieczynny
przeciążeniu bądź awarii bramki
innych awariach sieci
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 sieciowej 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ć, przyjrzyjmy 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 przeznaczenia 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 |
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”.
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:
Udostępnienie plików(programów bądź danych)
umożliwienie niebezpośredniego korzystania z komputerów zdalnych (przy użyciu programów)
ujednolicenie sposobów korzystania z różnych nośników danych na komputerze zdalnym
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 systemowe. 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 serwerach nazw, systemach rozproszonych - dzięki rozszerzonym funkcjom wysyłanie żądań.
Nowsza specyfikacja protokołu HTTP, RFC 2068 dostępna jest pod adresem: http://finfo.internet.isi.edu:80/in-notes/rfc/files/rfc2068.txt.
Protokół ten na zawsze zmienił oblicze Internetu. Udostępnił go przecię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 znanych 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ę informacjom wyświetlanym na pasku stanu w lewym dolnym rogu. Widać tam dokładnie, kiedy przeglądarka łączy się z serwerem, otrzymuje odpowiedź, ś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 interesujące nas tematy. System pozwala na indeksowanie, budowę odsylaczyorazkasowanie 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 tekstowym, 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 obejmują 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.
Oto podstawowe składniki oprzyrządownia sieciowego:
Co najmniej jeden serwer
Stacje robocze
Urządzenia peryferyjne (drukarki)
Karty sieciowe
Łącza komunikacyjne
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.
Rozróznia się kilka rodzajów sieci pod względem jej rozmiarów. Są to sieci typu :
LAN
MAN
WAN
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
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.
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 :
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:
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:
_ _ _ _ _ _ _ _ _
Prawa dostępu dla właściciela
Prawa dostępu dla grupy użytkowników
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
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 :
przeznaczenia jądra (dla serwera sieciowego, stacji graficznej, komputera multimedialnego, itp.)
rodzaj podzespołów wchodzących w skład komputera
współpraca systemu z otoczeniem (innymi systemami operacyjnymi, urządzeniami sieciowymi)
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.
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.
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.
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.
W przypadku przyspieszania pracy klientów lokalnej sieci, Proxy Cache Server umieszczamy pomiędzy nimi a Internetem. Wówczas żądania o strony umieszczone w pamięci serwera są obsługiwane z prędkością LAN, a łącze WAN nie jest wcale obciążane.
W przypadku intensywnie eksploatowanych serwerów WWW, umieszczonych w głębi sieci lokalnej, również warto zastosować Proxy Cache Server. Odciąży on serwery i zmniejszy transmisję w sieci LAN.
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.
Gdy nasza sieć jest jednym z wielu rozrzuconych elementów sieci korporacyjnej, warto zastosować hierarchiczne połączenie wielu Proxy Cache Servers. Można również połączyć serwery na tym samym poziomie drzewa, uzyskując ten sposób wielopiętrowe przyśpieszenie pracy całej sieci. Taka budowa zwiększa szansę na znalezienie poszukiwanej strony w pamięci podręcznej. Dostęp do stron rzadko używanych jest wolniejszy, ale i tak przewyższa prędkość odnalezienia strony w Internecie.
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.
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 adresu sieciowego (ukrywanie NAT),
statyczna translacja adresów sieciowych (staticzne NAT),
translacja numerów portów (PAT).
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
Sieć prywatna z tradycyjnym proxy - w tym wypadku pakiety pochodzące z sieci prywatnej nie przechodzą do Internetu i na odwrót. Adres IP sieci prywatnej powinien być przydzielony z jednej z trzech puli adresów: 10.*.*.*, 172.16.*.* lub 192.168.*.*. Jedynym sposobem na połączenie się z Internetem jest połączenie się z firewallem, który jest jedyną maszyną podłączoną do obu sieci na raz. Na firewallu uruchamia się program zwany proxy (są proxy do FTP, usług WWW, telneta i wielu innych usług). Każda usługa, która ma być udostępniona przez Internet musi być uruchomiona na firewallu.
Aby umożliwić np. dostęp do stron WWW z sieci prywatnej należy uruchomić na firewallu proxy WWW (np. squid), które będzie pracowało na porcie np. 8080. Przeglądarka internetowa na komputerze użytkownika musi być skonfigurowana do połączenia z serwerem proxy na firewallu na porcie 8080. Nie potrzebna wtedy jest konfiguracja innych parametrów, np. domyślnej bramy sieci prywatnej.
Jeżeli użytkownik będzie chciał pobrać stronę z jakiegoś adresu, przeglądarka połączy się z proxy WWW na firewallu i poprosi o tę strone. Proxy łączy się wtedy na ten adres i pobiera stronę, a następnie przesyła ją do przeglądarki użytkownika. Z punktu widzenia serwera WWW gdzieś w Internecie, łączył się z nim firewall, a z punktu widzenia użytkownika, jego komputer łączył się z firewallem i stamtąd pobierał dane.
Sieć prywatna z przeźroczystym proxy - podobnie jak wyżej, pakiety z sieci prywatnej nie przechodzą do Internetu i na odwrót. Adres IP sieci prywatnej powinien być z puli 10.*.*.*, 172.16.*.* lub 192.168.*.*. Aby połączyć się z Internetem należy połączyć się z firewallem, który jest jedyną maszyną podłączoną do obu sieci. Na firewallu uruchamia się program zwany przeźroczystm proxy. Jądro wysyła wychodzące pakiety do przeźroczystego proxy zamiast wysyłać je do drugiej sieci (pomija routing). Używając przeźroczyste proxy nie musimy informować klientów, że takie proxy w ogóle działa. Każda usługa, która ma być udostępniona przez Internet musi być uruchomiona na firewallu.
Aby umożliwić np. dostęp do stron WWW z sieci prywatnej należy uruchomić na firewallu przeźroczyste proxy WWW, które będzie pracowało na porcie np. 8080. Jądro jest skonfigurowane, aby przekierowywać połączenia na port 80 do proxy. Przeglądarka nie musi mieć żadnych specjalnych ustawień. Na firewallu powinien stać serwer DNS jako proxy. Domyślną bramą dla sieci prywatnej powinien być firewall.
Jeżeli użytkownik będzie chciał pobrać stronę z jakiegoś adresu, przeglądarka otworzy połączenie z tym serwerem. W momencie, gdy pakiety z komputera użytkownika przechodzą przez firewall, są przekierowywane do przeźroczystego proxy. Proxy otwiera połączenie do serwera, z którego pobiera stronę, a następnie przekazuje te dane do połączenia z przeglądarką użytkownika. Z punktu widzenia serwera WWW łączył się z nim firewall. Z punktu widzenia użytkownika, jego komputer połączył się z serwerem WWW, ale tak naprawdę dane przesyłane były przez przeźroczyste proxy.
Sieć prywatna z maskaradą - w tym wypadku pakiety z sieci prywatnej nie przechodzą do Internetu i na odwrót bez specjalnego potraktowania. Adres IP sieci prywatnej powinien być taki, jak w poprzednich punktach. Zamiast używać proxy, używa się specjalnej własności jądra systemu nazywanej maskaradą. Maskarada przepisuje pakiety kiedy przechodzą przez firewall, dlatego wydają się zawsze pochodzić z samego firewalla. Następnie przepisuje także odpowiedzi tak, aby wyglądały że są wysyłane do oryginalnego adresata. Maskarada ma specjalne moduły, które służą do obsługi różnych protokołów, jak FTP, RealAudio, itp. Dla trudnych do obsłużenia protokołów możliwe jest włączenie "auto-forwarding", który może obsłużyć część z nich przez automatyczne ustawienie przekierowania dla określonych zestawów portów. Każda usługa, która ma być udostępniona przez Internet, musi być uruchomiona na firewallu.
Aby udostępnić np. dostęp do stron WWW z sieci prywatnej, firewall musi mieć skonfigurowaną maskaradę dla dowolnych pakietów , które wychodzą z sieci prywatnej i są kierowane na porty 80 serwerów internetowych. Przeglądarka nie musi być w żaden specjalny sposób skonfigurowana. Serwer DNS musi być skonfigurowany w sieci prywatnej. Domyślną bramą dla sieci prywatnej powinien być firewall.
Jeżeli użytkownik będzie chciał pobrać stronę z jakiegoś adresu, przeglądarka otworzy połączenie z tym serwerem. W momencie, gdy pakiety z komputera użytkownika przechodzą przez firewall, są przepisywane tak jakby nadchodziły z interfejsu PPP firewalla z określonego portu. Gdy serwer WWW przesyła do firewalla dane na wcześniej określony port, dane te są przepisywane i wysyłane do połączenia z przeglądarką użytkownika. Z punktu widzenia serwera WWW łączył się z nim firewall. Z punktu widzenia użytkownika, jego komputer połączył się z serwerem WWW (chociaż w rzeczywistości połączenia dokonał firewall).
Sieć publiczna - tutaj sieć lokalna jest częścią Internetu i pakiety przepływają bez zmian między sieciami. Pula adresów IP sieci prywatnej musi być przydzielona przez złożenie podania o blok adresów IP. W tym przypadku filtr pakietów jest używany do ograniczenia przekazywania pakietów między siecią a resztą Internetu, np. przez ograniczenie, że ze strony Internetu można połączyć sie tylko na serwery WWW w sieci lokalnej.
Aby udostępnić np. dostęp do stron WWW z sieci lokalnej, firewall musi być skonfigurowany do akceptacji całego ruchu. Przeglądarki internetowe nie wymagają specjalnych konfiguracji. Serwer DNS musi być skonfigurowany w sieci lokalnej. Domyślną bramą sieci lokalnej powinien być firewall.
Jeżeli użytkownik będzie chciał pobrać stronę z jakiegoś adresu, jego przeglądarka połączy się z serwerem WWW. Pakiety przechodzą przez firewall, tak jak przez inne routery. Połączenie jest tylko jedno - z komputera użytkownika do serwera WWW.
Przekierowywanie portów - jest to sposób aby udostępnić Internetowi usługi bez uruchamiania ich na firewallu. Będą one pracowały podobnie jak proxy lub maskarada dla połączeń zewnętrznych. Sposobem na to jest przekierowywanie (redirecting) portów. Firewall czeka na połączenie na danym porcie i jeżeli takie przyjdzie, otwiera połączenie do zdefiniowanego serwera w sieci lokalnej, który udostępnia daną usługę. Firewall kopiuje dane między tymi połączeniami.
Z punktu widzenia Internetu połączenie odbywa się z firewallem, a serwer w sieci lokalnej widzi to jako połączenie z firewallem.
Przekierowywanie portów może być może wykonywać specjalny program (np. redir) lub przez ustawienie forwardingu w jądrze systemu.
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:
czy koszt inwestycji nie przekroczy wartości chronionych danych,
tanie lub darmowe systemy charakteryzują się zwykle wysokim kosztem instalacji, konserwacji, obsługi i administracji (np. oprogramowanie dla Linuxa), więc być może opłaci się zainwestować na początku w droższy ale łatwiejszy w eksploatacji produkt,
jaki poziom zabezpieczeń, monitoringu, kontroli jest rzeczywiście potrzebny,
jaki poziom ryzyka jesteśmy w stanie zaakceptować, jaki jest najbardziej pesymistyczny scenariusz w przypadku wtargnięcia intruza,
możliwości zdalnej konfiguracji i zarządzania systemem,
jakie usługi dodatkowe są nam potrzebne (VPN, IPX/IP Gateway, NAT).
W trakcie instalacji należy rozwiązać kolejne problemy:
czy użytkownicy Internetu będą wysyłać/przysyłać pliki do/z serwera firmy,
czy firma będzie udostępniać stronę WWW i czy nie warto serwera WWW wydzielić z zabezpieczanej sieci,
odpowiedni podział pracowników na grupy o różnych prawach do poszczególnych usług,
optymalny podział sieci na podsieci i przyłączenie ich do odpowiednich interfejsów.
Wady i zalety firewalli
Zalety:
ochrona systemu,
umożliwiają całej sieci korzystanie z jednego wspólnego adresu IP,
dają możliwość na podłączenie do Internetu systemom z protokołami innymi niż TCP/IP,
pozwalają monitorować połączenia WAN i ruch w sieci,
przy intensywnej pracy z WWW Proxy Cache Server pozwala zoptymalizować obciążenie na łączu WAN, a co za tym idzie - przyspieszyć pracę wielu osób,
zamiast wynajmować drogie międzymiastowe lub międzynarodowe linie dzierżawione możemy używać VPN i tańszych linii z dostępem do najbliższych węzłów sieci publicznej.
Wady:
ograniczają dostęp do sieci z Internetu,
wymagają częstych uaktualnień, gdyż nowe typy klientów sieciowych i serwerów przybywają prawie codziennie,
uniemożliwiają bądź utrudniają zdalne zarządzanie siecią,
mało wydajne serwery pośredniczące zmniejszają wydajność sieci.
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.
Należy rozpakować archiwum
gzip -cd ssh-1.2.26.tar.gz | tar xvf -
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.
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:
W katalogu /etc/ssh :
ssh_host_key - klucz prywatny serwera SSH
ssh_host_key.pub - klucz publiczny serwera SSH
W katalogu /usr/local/bin :
make-ssh-known-hosts - skrypt perlowy do generacji plików /etc/ssh_known_hosts
ssh-askpass - prosty program dla X-Window służący do wczytywania haseł
ssh-keygen - generator kluczy prywatnych i publicznych
slogin - secure login - link do ssh
W katalogu /usr/local/sbin :
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. |
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 |
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 |
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 |
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 |
Zezwolenie na logowanie się za pomocą ssh. Patrz dalej. |
# najbezpieczniejsza jest autentykacja RSA (tylko) - a reszta no |
Wybór metody autentykacji. Włączyć TYLKO RSA. |
PasswordAuthentication yes |
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 |
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:
opcje podane w linii komend
plik konfiguracyjny użytkownika ($HOME.ssh/config)
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 |
Zezwalanie na autentykację za pomocą mechanizmu rhosts. |
PasswordAuthentication yes |
Autentykacja za pomocą haseł |
RSAAuthentication yes |
Wybór metody autentykacji (wybrać tylko RSA) |
PasswordPromptHost yes |
Czy program ma pytać o hasła. |
FallBackToRsh 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 |
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ść