Administracja systemami komputerowymi

Bezpieczeństwo systemów

























Opracowali:

Magdalena Fundament

Anna Nowak

Piotr Nyczyk



Prowadzący zajęcia:

mgr Bogusław Juza

SPIS TREŚCI



1.Wstęp 5

Podstawowe pojęcia z zakresu ochrony danych 5

Atak na bezpieczeństwo danych 5

Usługi ochrony danych - zapewniają uzyskanie pewnych gwarancji w zakresie wiarygodności systemu komputerowego 5

Mechanizmy zabezpieczające 5

Typy możliwych ataków 6

Sposoby włamywania się do systemów 6

3.1.Przechwytywanie hasła 6

3.1.1.Przechwytywanie hasła w nieszyfrowanych protokołach 6

3.1.2.Przechwytywanie hasła z wykorzystaniem "koni trojańskich" 7

3.2.Suid, sgid 7

3.3.Buffer overrun 8

Backdoor 9

3.5.IP spoofing 9

3.6.IP source routing 9

3.7.Przykład włamania do systemu 10

4.Potencjalne "dziury" w zabezpieczeniach systemu - przykładowa lista niebezpiecznych usług. 11

4.1.R-commands 11

4.2.Sendmail 12

Telnet 12

FTP 13

4.4.1.Przejęcie połączenia pasywnego (PASV) na porcie serwera 13

4.4.2.Przejęcie połączenia na porcie klienta (PORT) 14

Kontrolowanie połączeń: 14

4.5.Finger 14

5.Stosowane zabezpieczenia 15

5.1.IPSEC 15

5.2.Firewall 16

5.2.1.Zakres działalności 16

Własności 17

Typy firewall'i 17

Strategie konfiguracji 17

5.2.5.Dostępne rozwiązania firewall'i 18

Podsumowanie 18

5.3.Protokoły szyfrowane 18

5.3.1.SSH - Secure SHell (program do zdalnego logowania) 18

5.3.2.OpenSSH 21

SCP - Secure CoPy (program zdalnego kopiowania plików) 22

5.3.4.SSL - Secure Socket Layer (protokół bezpiecznej komunikacji) 22

5.4.Tunelowanie 24

5.4.1.Bezpieczeństwo 24

VPN - Virtual Private Network (wirtualna sieć prywatna) 24

5.4.3.Odbiór poczty 25

Monitorowanie (przeglądanie logów) 25

1.Wstęp

Pojęcie bezpieczeństwa systemów komputerowych dotyczy zarówno bezpieczeństwa pojedynczego systemu jak i całej sieci, czyli ochrony informacji krążących pomiędzy węzłami sieci, oraz danych zgromadzonych w bazach dostępnych za jej pośrednictwem. Szerokie zastosowanie technik internetowych wprowadza nie znane wcześniej zagrożenia bezpieczeństwa systemów informatycznych: włamania do systemów, wirusy, spamming, blokowanie działania itd. Wzrasta więc znaczenie ochrony danych i uwierzytelniania obiektów krążących w sieci. Włamania do systemów informatycznych przynoszą znaczne straty finansowe i utratę zaufania do instytucji, której powierzono poufne informacje. Środki ochrony, zmniejszające ryzyko uzyskania dostępu do danych przez osoby nieupoważnione, można ogólnie podzielić na dwie kategorie:

Istnieje wiele metod pozwalających potencjalnemu "hackerowi" na włamanie się do systemu. Bazują one zwykle na błędach w oprogramowaniu systemowym, złej konfiguracji systemu, używaniu niebezpiecznych protokołów oraz bardzo często na tak zwanym czynniku ludzkim, czyli naiwności użytkowników systemu. Poniższy rozdział prezentuje przegląd najbardziej typowych metod włamywania stosowanych przez "hackerów".

3.1.Przechwytywanie hasła

Najprostszą metodą włamania się do systemu jest przechwycenie hasła jego użytkowników lub nawet administratora. Istnieją dwie metody przechwytywania haseł: wykorzystanie nieszyfrowanych protokołów oraz używanie tak zwanych "koni trojańskich".

3.1.1.Przechwytywanie hasła w nieszyfrowanych protokołach

Nawet obecnie bardzo wiele protokołów komunikacji, szczególnie starych, nie wykorzystuje żadnych technik szyfrowania danych, a mechanizm autoryzacji dostępu do zasobów systemu opiera się głównie o hasło przesyłane w sposób jawny najczęściej na samym początku połączenia. Do takich protokołów należą między innymi bardzo popularne i szeroko stosowane protokoły takie jak:

We wszystkich wymienionych protokołach klient łączy się ze zdalnego komputera z serwerem używając do tego zwykłych socketów, a transmisja danych przebiega poprzez wiele routerów oraz segmentów sieci i ponieważ nie jest w żaden sposób szyfrowana (wyjątek stanowią odpowiednie modyfikacje tych protokołów wykorzystujące SSL - Secure Socket Layer) może zostać bardzo łatwo "podsłuchana". Wykorzystywane są w tym celu specjalne narzędzia, zwane potocznie "snifferami", które mogą zostać umieszczone bezpośrednio na routerze (routerem bywa czasem komputer, na przykład zwykły PC pracujący pod kontrolą systemu Linux, wyposażony w kilka interfejsów sieciowych), lub w segmencie sieci, przez który przechodzą pakiety interesującej włamywacza transmisji. Sniffer ma za zadanie śledzić połączenia na konkretny port serwera (np. telnet) wyłapując pakiety przeznaczone dla serwera (przykładowo w pojedynczym segmencie sieci ethernet pakiety docierają do wszystkich komputerów i dzięki odpowiedniej konfiguracji interfejsu sieciowego można odbierać pakiety o dowolnym adresie docelowym) i zapisywać te bajty z transmisji, które zawierają wpisywane przez użytkownika login oraz hasło. W przypadku protokołu telnet wystarczy zapisać kilkanaście pierwszych bajtów wysyłanych przez klienta, podczas gdy w protokole POP3 nazwa użytkownika przekazywana jest bezpośrednio po komendzie USER, a hasło po komendzie PASS. Dzięki sprytnie napisanemu snifferowi hacker może uzyskać tą metodą hasło konkretnego użytkownika. Metoda ta wymaga jednak umieszczenia sniffera (sniffer do poprawnego działania wymaga odpowiednio wysokich uprawnień) na drodze prowadzącej do serwera lub najlepiej bezpośrednio w segmencie sieci, w którym znajduje się serwer.

3.1.2.Przechwytywanie hasła z wykorzystaniem "koni trojańskich"

Najprostszą metodą przechwycenia czyjegoś hasła jest umieszczenie na komputerze, z którego ta osoba się loguje do systemu programu "udającego" standardowy program logowania (np. login). Może to wyglądać w sposób następujący: Załóżmy, że podczas logowania na komputerze baranek wyświetlany jest następujący komunikat:

Welcome to BARANEK.

Please enter your login and password.

login:


Hacker loguje się na komputerze i pisze program, który wykonuje następujące czynności:

Tego typu konie trojańskie mogą być oczywiście znacznie bardziej wyrafinowane - w skrajnym przypadku mogą to być odpowiednio zmodyfikowane programy klientów login, telnet, ftp lub ssh.

3.2.Suid, sgid

Częstą metodą wykorzystywaną do włamywania się do systemów komputerowych są programy typu suid lub sgid. Są to programy, które mają ustawiony w atrybutach odpowiedni bit, dzięki czemu wykonują się na uprawnieniach swojego właściciela lub grupy. Jest to bardzo szybka i łatwa droga do uzyskania uprawnień konkretnego użytkownika lub nawet administratora. Hackerzy wykorzystują w tym celu błędy w samych programach, które z racji spełnianych funkcji muszą być typu suid, lub błędy w konfiguracji systemu (np. demona ftp, nfs...) dzięki którym możliwe staje się utworzenie pliku wykonywalnego z ustawionym bitem suid, dla którego właścicielem jest ktoś inny (np. administrator).

Aby uchronić się przed włamaniami z wykorzystaniem suid'ów należy przede wszystkim kontrolować to, które programy mają ustawiony ten bit oraz czy jest to sensowne i konieczne. Należy unikać nadawania takich uprawnień programom pochodzącym z niepewnych źródeł, a także programom takim jak: skrypty shellowe (istnieje możliwość przerwania działania takiego skryptu i uzyskania shell'a wykonywanego na uprawnieniach administratora), skrypty cgi (możliwość ich wykonywania nawet bez posiadania konta na danym komputerze).

Dodatkowo należy zwrócić uwagę na to jakie programy lub polecenia wywoływane są przez program z ustawionym bitem suid - w szczególności czy program ten nie korzysta przy wywoływaniu poleceń ze zmiennych środowiskowych (mogą one zostać zmienione przez hackera) ani ścieżek względnych.

3.3.Buffer overrun

Podczas włamań do systemów bardzo często wykorzystywane są błędy w programach wykonywanych na uprawnieniach administratora polegające na braku odpowiedniej kontroli ilości danych wprowadzanych do buforów wejściowych. Przykładem może być tutaj program login, który jest odpowiedzialny za logowanie użytkowników. Celowe przepełnienie bufora wejściowego, na przykład w funkcji oczekującej na hasło użytkownika, może powodować nieprzewidziane (lub wręcz zamierzone ale zupełnie nieprawidłowe) zachowanie programu. Spowodowane jest to tym, że bufory wejściowe są najczęściej tablicami lokalnymi, które są alokowane na stosie podczas wykonywania konkretnej funkcji i ich przepełnienie powoduje nadpisanie innych zmiennych.

W typowych systemach struktura stosu podczas wywoływania funkcji jest następująca:

. . .

Bufor

inne zmienne lokalne

adres powrotu

. . .



Przepełnienie bufora może być wykorzystane przez hackera na kilka sposobów:

Aby ustrzec się przed tego typu atakami należy przede wszystkim:

Angielskim terminem backdoor określa się pozostawione przez hackera po włamaniu "tylne furtki", czyli programy suid'owe (najczęściej jest to kopia shell'a), które umożliwiają mu ponowne wejście do systemu nawet w przypadku zmiany hasła przez administratora i wprowadzeniu dodatkowych zabezpieczeń. Taki backdoor bardzo łatwo jest utworzyć wykonując, już po uzyskaniu uprawnień administratora, kilku prostych poleceń. Przykładowo może być to:

$ cp /bin/sh /tmp/cde.tmp
$ chmod 4755 /tmp/cde.tmp

W wyniku wykonania powyższych poleceń wykonanie polecenia "/tmp/cde.tmp" po ponownym zalogowaniu do systemu spowoduje natychmiastowe uzyskanie uprawnień administratora.

Oczywiście backdoor może być znacznie bardziej wyrafinowanym programem niż tylko kopia shell'a. Może to być na przykład odpowiednia modyfikacja któregoś z demonów systemowych umożliwiająca wejście do systemu przez określony port TCP.

W przypadku gdy administrator zauważy włamanie do systemu powinien poszukać pozostawionych przez włamywacza backdoor'ów. Należy w tym celu przeszukać cały system plików pod kątem programów suid. Można to zrobić poleceniem:

find / -perm +4000 -print

Dostaniemy w ten sposób listę wszystkich programów suid w systemie. Wszelkie podejrzane mogą być pozostawionymi przez hackera "tylnymi furtkami".

3.5.IP spoofing

Niektóre protokoły jako jednej z metod autoryzacji dostępu używają adresu źródłowego IP pakietów. Przykładem jest protokół RSH oraz wszystkie tak zwane R-polecenia. Użytkownik tworzy w swoim katalogu domowym plik o nazwie .rhosts, w którym umieszcza nazwy, bądź adresy IP komputerów, z których możliwy jest dostęp bez podawania hasła. Może to zostać wykorzystane przez włamywacza w ten sposób, że zmodyfikuje on wysyłane przez swój komputer pakiety tak, aby w polu adresu źródłowego zawierały adres IP "zaufanego" komputera. Takie "podszywanie" się pod adres IP innego komputera jest możliwe wtedy, gdy komputer hackera znajduje się w tej samej podsieci IP co "zaufany" komputer. Aby się przed tym ustrzec można kontrolować oprócz adresów IP również adresy MAC interfejsów sieciowych. Służą do tego narzędzia takie jak np. arpwatch. Niestety współczesne karty sieciowe umożliwiają, po przestawieniu ich w specjalny tryb pracy, wysyłanie pakietów właściwie z dowolnym adresem MAC. Jest to jednak zawsze pewnym utrudnieniem dla potencjalnego włamywacza. Ze względu jednak na łatwość włamania tą metodą nie należy stosować obecnie autoryzacji dostępu bazującej na numerze IP.

3.6.IP source routing

IP source routing to mechanizm wbudowany w protokół TCP/IP umożliwiający komputerowi wysyłającemu pakiety IP określenie trasy, którą musi dany pakiet przejść poprzez wyspecyfikowanie adresów IP kolejnych routerów na drodze do komputera docelowego.

Z drugiej strony w zabezpieczeniach systemu komputerowego często stosuje się techniki takie jak firewall albo podział na interfejsy zaufane (trusted) oraz publiczne. Tymczasem IP source routing daje hackerowi możliwość skierowania swoich pakietów taką trasą, aby dotarły one do serwera interfejsem zaufanym mimo, że domyślna trasa pakietów pochodzących "z zewnątrz" prowadzi przez interfejs zaufany. Czasami metoda taka pozwala nawet na ominięcie firewall'a.

3.7.Przykład włamania do systemu

Aby włamać się do systemu komputerowego hacker musi zazwyczaj wykorzystać kilka różnych metod. Poniższy przykład włamania dotyczy rzeczywistego włamania jakie miało miejsce w jednej z krakowskich amatorskich sieci osiedlowych.

Celem włamania był komputer o nazwie gruchot pełniący w sieci funkcję serwera IRC, serwera Quake oraz Quake2, DHCP, zapasowego DNS, oraz będący równocześnie bramką (bridge) pomiędzy segmentami sieci. Był to system o następujących parametrach:

Włamywacz zalogował się na komputer przez konto jednego z użytkowników, który wybrał sobie zbyt proste i łatwe do odgadnięcia hasło. Ponieważ nie znał on dokładnie konfiguracji systemu próbował początkowo różnych metod takich jak uruchamianie gotowych programów, tzw. Exploits, które są łatwo dostępne na stronach o tematyce hackerskiej. Ostatecznie włamał się do systemu za pomocą bardzo prostej metody.

W katalogu /tmp utworzył skrypt shell'owy o nazwie cool, którego zadaniem było tworzenie shell'a suid'owego wykonującego się na uprawnieniach administratora. Jednak aby skrypt zadziałał poprawnie hacker musiał wykonać na uprawnieniach administratora. Posłużył się w tym celu programem dump - narzędziem występującym w systemie RedHat Linux i służącym do tworzenia kopii systemu plików na inny nośnik, lub poprzez sieć. Program ten został zainstalowany w trakcie automatycznej instalacji wielu pakietów jaka ma miejsce podczas instalacji systemu Red Hat Linux i przez niedopatrzenie administratora nie został ani zablokowany ani odinstalowany. Program ten był tzw. suid'em i dodatkowo napisany był wyjątkowo nierozważnie. Miał on bowiem możliwość zdalnej komunikacji z innym komputerem poprzez protokół RSH, przy czym do uruchamiania komendy rsh wykorzystywał on zmienną środowiskową RSH_PATH. Hacker zmodyfikował więc zmienną RSH_PATH tak, aby wskazywała na skrypt /tmp/cool i uruchomił z program dump z odpowiednim parametrem, który z kolei wywołał na uprawnieniach administratora skrypt hackera, a ten utworzył w katalogu /tmp kopię interpretera poleceń bash z ustawionym bitem suid. Dzięki temu prostemu zabiegowi włamywacz uzyskał uprawnienia administratora.

Po tym włamaniu hacker uruchomił inny skrypt, który miał za zadanie wymazać z plików log informacji o jego działaniach, uniemożliwiając tym samym jego wyśledzenie. Na szczęście dzięki przezorności administratora sieci osiedlowej wszystkie połączenia przychodzące z zewnątrz były monitorowane na głównym serwerze sieci, a ten jako już znacznie lepiej zabezpieczony nie stał się ofiarą ataku. Administrator miał więc do dyspozycji pełny log z komunikacji pomiędzy komputerem hacker'a a komputerem gruchot, który został przesłany do administratora sieci, z której pochodził włamywacz i wobec hackera zostały wyciągnięte konsekwencje. Tymczasem dla komputera gruchot został zablokowany dostęp z zewnątrz i obecnie komputer ten udostępnia jedynie usługi lokalne.

4.Potencjalne "dziury" w zabezpieczeniach systemu - przykładowa lista niebezpiecznych usług.

4.1.R-commands

Do klasycznych unix'owych r-commands zaliczamy rsh, rlogin, rcp, rexec. Komendy te zostały stworzone, aby pozwolić użytkownikowi logować się na zdalnych maszynach bez transmisji hasła przez sieć w celu jego autentykacji. Zaprojektowano je w ten sposób, aby unikać przechwytywania haseł, tymczasem są one bardzo niebezpieczne właśnie ze względu na to, że autentykacja przy pomocy hasła nie dokonuje się wcale.

Komputery, z których można zalogować się bez podawania hasła nazywane są hostami zaufanymi. Aby móc zalogować się na zdalnym komputerze z zaufanego hosta należy spełnić 3 warunki autentykacji :



W momencie, gdy komputer stanie się hostem zaufanym, pojawia się niebezpieczeństwo, że napastnik "podszyje się" za niego lub za jakiegoś zaufanego użytkownika.

Jeżeli atakujący poda się za zaufanego użytkownika ma on stosunkowo małe możliwości, wcielając się w rolę superusera, będzie w stanie podać się za każdego zwykłego użytkownika. Najlepszym zabezpieczeniem przed podszywaniem się za zaufanych użytkowników jest dobry administrator systemu hosta zaufanego.

Wcielenie się w zaufanego hosta może nastąpić w przypadku, gdy dwa komputery będą posiadały 2 takie same adresy IP swoje i swojej podsieci, co jest łatwe do wykrycia - sama sieć zaczyna się dziwnie zachowywać.

Używanie r-commands jest niebezpieczne kiedy zaufany klient ma włączoną opcję "source routing". Wtedy wszystkie routery, aplikacje serwerów na drodze klienta mają możliwość przechwycenia informacji o drodze klienta, można go zatem łatwo wyśledzić i podszyć się za niego. Dlatego należy wyłączać zaufanym hostom tę opcję.

Łatwo jest dokonać wcielenia w hosta, który w danym momencie jest wyłączony (dotyczy to zwłaszcza komputerów osobistych, często wyłączanych na noc). Przejęcie przez napastnika adresu IP hosta wyłączonego jest trudne do wykrycia. Serwer r-commands powinien monitorować stan sieci i hostów zaufanych (w sposób bardziej skomplikowany niż zwykły ping) i w razie braku odpowiedzi od któregoś z nich, zablokować możliwość zdalnego logowania. Po powrocie zaufanego hosta do sieci, powinien on sam "zgłosić się" do serwera, zidentyfikować się i poddać autentykacji. Dopiero wtedy odblokowana zostałaby możliwość wykonywania r-commands.

R- commands nie powinny być wypuszczane na zewnątrz przez firewall, w sieciach lokalnych ich niedoskonałości nie stwarzają takiego zagrożenia i są możliwe do zaakceptowania.

Poniżej widnieją dwa błędy w r-commands, które stwarzają krytyczne zagrożenie dla bezpieczeństwa systemu:

R-commands to usługi niebezpieczne ponieważ mają słabą autentykację, komunikacja odbywa się w sposób jawny, założenia dotyczące klienta nie są weryfikowane.

4.2.Sendmail

Program Sendmail służy do rozsyłania automatycznie wiadomości do grupy użytkowników systemu. Za jego pomocą naruszono bezpieczeństwo wielu serwerów i sieci komputerowych. Program ten jest dosyć skomplikowany, działa z uprawnieniami roota, odpowiada na połączenia z dowolnego komputera z Internetu i ma rozbudowany język poleceń. Podczas instalacji sendmaila jesteśmy zmuszeni na ustawienie SUID'a na jego demonie, dlatego właśnie jest on chyba najczęstszym celem ataków i w sumie najbardziej podatną częścią systemu na wykorzystanie dziur i niedociągnięć. Jego rozbudowana forma i mnogość różnych konfiguracji sprawia, że oko czujnego administratora powinno nieustannie śledzić doniesienia o nowo wykrytych błędach.

Bardzo ciekawą alternatywą dla sendmaila jest qmail. Jest to system pocztowy, który zamiast jednego demona obsługującego wszystkie zadania mamy kilka niewielkich, wyspecjalizowanych, współpracujących ze sobą programów. Tylko jeden z nich - dostarczający przesyłki lokalne - wymaga uruchomienia z prawami roota. Pozostałe pracują z innych kont przewidzianych specjalnie dla nich. To znacznie podnosi bezpieczeństwo systemu ze strony systemu pocztowego. Autor programu zrezygnował ze standardowych funkcji bibliotecznych jezyka C, które niekiedy zbyt liberalnie traktują takie operacje jak alokacja buforów, co jest wykorzystywane w exploitach typu "overflow". Dodatkową zaletą Qmaila jest dowolność w miejscu gromadzenia poczty. Skrzynka pocztowa może być umieszczona w dowolnie wskazanym miejscu przez użytkownika. To powoduje decentralizację składowanej poczty, a co za tym idzie podnosi bezpieczeństwo przechowywanych w niej danych. Zalety Qmaila czyniące go bezpieczniejszym systemem pocztowym niż powszechnie używany Sendmail:

Jedną z najbardziej rozpowszechnionych usług sieciowych jest telnet. Został on zaprojektowany, aby umożliwić użytkownikom logowanie się i pracę na zdalnych maszynach. Kiedyś telnet był uważany za bezpieczną usługę. Dzisiaj największą jego wadą jest to, że komunikacja odbywa się w formie jawnej. Zatem ktoś zainteresowany nieautoryzowanym dostępem do konta użytkownika korzystającego z telnetu może przejąć jego hasło (np. przy pomocy sniffer'ów).

Z jawnością przesyłanych danych wiąże się następujący problem: w wielu rodzajach sieci, jak Ethernet, pakiety przesyłane między komputerami są dostarczane do każdego komputera, który jest do sieci podłączony; zazwyczaj komputery interesują się jedynie pakietami kierowanymi do nich, są jednak programy które akceptują wszystkie połączenia i pobierają z nich np. 100 pierwszych znaków (czyli hasło i login), co oczywiście może zostać wykorzystane przez hakerów.

Kolejnym problemem, na jaki możemy się natknąć korzystając z telnetu, jest możliwość porwania sesji (session hijacking). Wówczas napastnik przejmuje kontrolę nad połączeniem użytkownika który zalogował się poprawnie.

Przy pomocy telnetu możemy również przeprowadzać ataki na inne zdalne komputery. Warunkiem koniecznym do tego jest akceptowanie przez nie połączenia telnetu na port 6000. W ten prosty sposób można przeprowadzić atak typu DoS, w wyniku którego system graficzny maszyny docelowej zostanie zablokowany.

Rozwiązanie problemu niskiego bezpieczeństwa usługi telnet jest dwojakie:

Jednym z najpopularniejszych mechanizmów służących do przesyłania plików w sieci jest usługa FTP. Niestety nie jest ona zbyt bezpieczna, nawet jeżeli stosowana jest w połączeniu z mechanizmami bezpieczeństwa jakie oferuje TCP (IPSEC). Korzystając z FTP przesyłamy siecią informacje w formie jawnej (podobnie jak w przypadku usługi telnet), co grozi między innymi przejęciem hasła przez napastnika.

Inne niebezpieczeństwa usługi FTP to:

4.4.1.Przejęcie połączenia pasywnego (PASV) na porcie serwera

Połączeniem tym przesyłane są dane. Przejęcie polega na tym, iż atakujący podłącza się do portu TCP serwera dla połączenia dla danych zanim zdąży zrobić to klient. Zagrożenie zależy od tego co zrobi klient:

Serwer może w różny sposób bronić się przed przejęciem połączenia PASV:

Większość serwerów nie posiada jednak żadnej ochrony z opisanych powyżej.

4.4.2.Przejęcie połączenia na porcie klienta (PORT)

Polecenie PORT dotyczy utworzenia połączenia TCP przez serwer na porcie podanym przez klienta. Przejęcie polega na tym, iż napastnik podłącza się do portu klienta zanim zdąży zrobić to serwer. Podobnie jak w przypadku przejęcia połączenia PASV zagrożenie zależy od tego, jak zachowa się klient - jest to sytuacja odwrotna, czyli w przypadku wydania przez klienta komend RETR i LIST atakujący może zmienić dane przychodzące do klienta, a w przypadku komendy STORE atakujący przechwyci wysłany przez klienta plik.

Ochrona przed tym atakiem jest trudniejsza:

Napastnik może zażądać od serwera FTP stworzenia połączenia na jakimkolwiek numerze portu i adresie IP a także zmusić go do wysłania własnego pliku. To jest bardzo niebezpieczne ze względu na to, iż serwer może mieć autoryzację do łączenia się z pewnymi adresami. Atakujący może wykorzystać tę "dziurę", aby np. przedostać się za firewall, unikać sprawdzania jego adresu IP. Ponadto może również przejąć połączenia przechodzące przez wiele serwerów FTP, nawet jeśli żaden z nich nie ma specjalnych autoryzacji, wtedy bardzo trudno jest go wyśledzić. Aby uniknąć tego problemu wymaga się (RFC 959), aby serwery FTP tworzyły połączenia na lokalnym porcie 20 - połączenia na niskich numerach mają specjalne przywileje; jednak wiele serwerów umyślnie nie stosuje się do tego wymagania. Wszystkie serwery powinny odrzucać żądanie PORT z adresów innych niż IP klienta, oraz te które żądają połączenia na porcie wyższym od 1024.

4.5.Finger

Każdy system bezpieczeństwa opiera się na przechowywaniu informacji i ich ochronie. Za pomocą haseł, kluczy szyfrujących itp. utrudnia się dostęp osób nieupoważnionych do zgromadzonych danych. Usługa finger obniża bezpieczeństwo systemu poprzez umożliwienie przeglądania wielu cennych z punktu widzenia potencjalnego atakującego informacji (np. nazwy użytkowników).

Polecenie finger @host.com oznacza odwołanie się do wszystkich użytkowników zalogowanych w danej chwili na zdalnym komputerze. Po tym wywołaniu możemy zdobyć loginy wszystkich użytkowników, którzy będą zalogowani na zdalnej maszynie.

Użycie polecenia finger -l login@host.com wyświetli nam informacje o konkretnym użytkowniku (stanowisko, numer telefonu, adres e-mail itp.) zapisane w pliku passwd. Dysponując listą użytkowników, ich adresami e-mail oraz zajmowanymi przez nich stanowiskami zdecydowanie łatwiej atakującemu podszyć się pod osobę która stała się celem ataku. Jeśli napastnik zna e-mail użytkownika może korzystając z www.altavista.com lub www.worldpages.com dowiedzieć się na przykład jakie jest imię i nazwisko potencjalnej ofiary - w chwili obecnej jest to zagrożenie głównie dla mieszkańców USA. W ten sposób atakujący pozna praktycznie wszystkie dane anonimowej do niedawna osoby.

Innym sposobem zdobycia informacji o użytkowniku (o ile oczywiście są one zapisane w pliku passwd) jest posłużenie się jednym z poleceń : finger login lub grep login /etc/passwd.

Jeśli nie chcemy aby nasze dane zostały udostępnione innym możemy je zmienić za pomocą polecenia: chfn (jeżeli administrator go nie zablokował).

Jak widać usługa finger ma wpływ na bezpieczeństwo systemu. Powoduje ona w pewnych okolicznościach jego osłabienie, oraz naruszenie prywatności użytkowników. Prostym aczkolwiek skutecznym sposobem na zapobieganie wyżej wymienionym praktykom jest ograniczenie zdalnego dostępu do usługi finger.

5.Stosowane zabezpieczenia

Oto najbardziej znane i najczęściej stosowane metody podnoszące bezpieczeństwo danych przesyłanych siecią:

5.1.IPSEC

IPSEC jest częścią protokołu IPv6. Pracuje na poziomie IP i zabezpiecza wszystko, co korzysta z UDP lub TCP. Protokół IPSEC jest stosowany obecnie ponieważ:



IPSEC został zaprojektowany przez Internet Engineering Task Force (IETF) z myślą o zabezpieczaniu dowolnego systemu korzystającego z IP. Dokument RFC1825 opisuje mechanizmy bezpieczeństwa i usługi zapewniane przez ten protokół. Wewnątrz IPSEC używane są dwa nagłówki:

Para komunikujących się komputerów dzieli wspólne zasoby bezpieczeństwa np. klucze kryptograficzne, algorytmy i związane z tym informacje, do których odwołuje się indeks parametrów bezpieczeństwa (SPI - Security Parameter's Index). Dane autentyfikacyjne są obliczane przy użyciu bezpiecznego algorytmu skrótu (MD5 lub SHA-1). Dzięki tym właściwościom napastnik nie ma obliczeniowych możliwości sfałszowania datagramu IP.

5.2.Firewall

Jeżeli w 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.

Firewall (ang. "ściana ogniowa", ale właściwsze określenie to "zapora sieciowa") jest jednym ze sposobów na zabezpieczenie dostępu do jednej sieci z innej (niezaufanej). Firewall'e są instalowane między sieciami - na ogół na pomostach pomiędzy sieciami lokalnymi (LAN) i rozległymi (WAN) - w celu wymuszenia kontroli dostępu między nimi. 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ą firewall'i 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 kierowane 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.


Firewall to nie tylko oprogramowanie. Jest to dedykowany system komputerowy, którego architektura zależy od potrzeb i specyfiki chronionej sieci komputerowej. Nie musi to być odrębny komputer, lub router wyposażony w odpowiednie oprogramowanie, jednak rolę firewall'a pełni z reguły komputer przeznaczony wyłącznie do tego celu.

Rys. Sposób działania firewalla

5.2.1.Zakres działalności

Zadanie ochrony lokalnych sieci komputerowych wchodzących w skład rozległej sieci korporacyjnej spoczywa na grupie oprogramowania firewall. Służy ona do zabezpieczania lokalnej sieci prywatnej przed nielegalną działalnością użytkowników sieci publicznej oraz do ochrony przesyłanych w sieci publicznej informacji.

Podstawowy zakres działalności Firewall obejmuje:

Systemy firewall chronią naszą sieć na kilku poziomach, a także umożliwiają wdrożenie zupełnie nowych własności:

Ze względu na warstwową architekturę stosu protokołów TCP/IP wyróżnia się trzy główne typy firewall'i: aplikacyjne, połączeniowe i filtrujące.

Planując zastosowanie firewall'a do odseparowania swojej podsieci należy zdefiniować politykę działania zapory. Istnieją dwie zasadnicze strategie definiowania sposobu działania firewall'a:

Domyślne przepuszczanie jest strategią polegającą na takim zdefiniowaniu warunków, aby spowodować blokowanie danych. Jeśli przychodzący pakiet nie będzie spełniał tych warunków zostanie on przepuszczony. Zaletą takiego podejścia do konfiguracji jest łatwość jej utworzenia, wadą natomiast jest to, że sieć pozostaje otwarta na większość usług i hostów (na ruch sieciowy, którego nie zablokowano). Dokładnie odwrotnie działa druga z wymienionych strategii działania firewall'a. Każdy przychodzący pakiet będzie blokowany, dopóki nie spełni warunków, które pozwolą mu przejść przez zaporę. Jest to o wiele trudniejszy sposób konfiguracji, ponieważ wymaga dokładnej wiedzy o sposobie działania protokołu TCP/IP. Obie te strategie będą działały dokładnie w ten sam sposób jeśli przewidzimy i wprowadzimy reguły dotyczące wszystkich rodzajów pakietów spotykanych w sieci.

5.2.5.Dostępne rozwiązania firewall'i

Istnieje szereg zarówno komercyjnych, jak i darmowych rozwiązań firewall'i. Chyba najłatwiej dostępnym jest firewall standardowo dołączany do jądra Linuxa. Wiele firm produkujących oprzyrządowanie sieciowe umożliwia skonfigurowanie swoich routerów jako firewall. Najprostszym firewall'em będzie zwykły komputer klasy PC wyposażony w przynajmniej dwie karty sieciowe z zainstalowanym odpowiednim oprogramowaniem. Dwie karty sieciowe są niezbędne, aby móc fizycznie rozdzielić sieć zewnętrzną od wewnętrznej. Oznacza to że do jednej karty podłączamy sieć zewnętrzną (Internet) a do drugiej sieć wewnętrzną, którą chcemy chronić.

Z powszechnie dostępnych rozwiązań programowych firewall'i da się wyróżnić kilka popularniejszych rozwiązań:.

Bardzo często zdarza się, że zainstalowanie zapory sieciowej obniża poziom bezpieczeństwa w sieci. Przyczyną takiego zjawiska jest najczęściej źle skonfigurowany firewall. Świadomość jego posiadania "zwalnia" jego użytkowników od czujności i cała sieć staje się bardziej zagrożona niż przed jego zainstalowaniem. W takich sytuacjach najczęściej dochodzi do włamań i innych naruszeń bezpieczeństwa sieciowego.

Planując politykę zabezpieczeń w firmie, zapory sieciowej nie można traktować jako leku na wszystkie problemy związane z bezpieczeństwem. Zaporę sieciową należy traktować jedynie jako uzupełnienie prowadzonej polityki bezpieczeństwa.

5.3.Protokoły szyfrowane

5.3.1.SSH - Secure SHell (program do zdalnego logowania)

Pakiet SSH oferuje możliwość połączenia się z komputerami podłączonymi do sieci komputerowej, wykonania na nich zdalnie poleceń i kopiowania plików pomiędzy nimi. Co najważniejsze pakiet oferuje silną autoryzację komputerów i użytkowników dokonujących powyższych działań oraz zapewnia bezpieczną komunikację w sieci Internet, która ze swej definicji zbyt bezpieczna nie jest. Dodatkowo pakiet oferuje bezpieczne połączenia oparte na protokole X-Windows. Pakietem możemy zastąpić standardowe polecenia systemu operacyjnego: rlogin, rsh i rcp (poprzez polecenia ssh i scp).

SSH pozwala na kodowaną zdalną pracę na odległym hoście jak i kompresję przesyłanych danych co dodatkowo utrudnia ewentualną próbę rozkodowania np. hasła. Ponad to ssh pozwala na tunelowanie innych połączeń co pozwala na bezpieczną transmisję praktycznie dowolnych danych. Bardzo mocną stroną SSH jest autoryzacja, której podlega zarówno serwer jak i klient. SSH dostarcza nam trzy sposoby autoryzacji:



SSH kontra Telnet


Jedną z usług dostępnych głównie w systemach UNIX-owych jest telnet. Usługa ta umożliwia pracę na serwerze w trybie tekstowym za pośrednictwem połączenia sieciowego.

Rys. Transmisja typu telnet - wrażliwa na podsłuch.

Sposób realizacji tej usługi wyjaśnia powyższy rysunek. W przypadku połączenia tego typu każdy znak wpisywany z klawiatury terminala sieciowego przesyłany jest do serwera, serwer przyjmuje i przetwarza taki znak i wysyła go na ekran terminala sieciowego. W przypadku takiego połączenia znaki przesyłane są w sposób niekodowany, więc transmisja nie jest odporna na podsłuch.


Dużo bezpieczniejszą usługą jest SSH. Jest to usługa zbliżona do telnetu, z tym, że każdy znak wpisywany z klawiatury przed wysłaniem go do serwera jest kodowany. W serwerze jest maszyna dekodująca, znak jest odkodowywany, analizowany i wynik takiej operacji jest wysyłany na ekran terminala.

Rys. Przykład działania SSH

Połączenie to może być podsłuchane w takim samym stopniu, jak telnet, jednak w sieci transmisja jest kodowana, czyli osoba podsłuchująca nie będzie w stanie wykorzystać danych, które podsłucha.



F-Secure SSH

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ą prywatności i integralności ich danych.

Program F-Secure SSH UNIX Server zapewnia ochronę 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 autentycznością 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 autentyczności oraz symetryczne algorytmy, Blowfish lub 3DES do kodowania transferu danych.

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 autentyczności, automatyczne kodowanie sesji i integrację metod ochrony zdefiniowanych w protokole SSH. F-Secure SSH client dostarcza również technologię "TCP/IP port forwarding technology" przekierowywania niechronionych połączeń poprzez chroniony kanał. 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 klucza publicznego serwera i tak zakodowaną przesyła do serwera. Serwer przy pomocy swojego klucza prywatnego i klucza 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ę.



Opcje konfiguracji

SSH to program umożliwiający zdalny dostęp do serwera, jednak w przeciwieństwie do zwykłego telneta, wyposażony jest w mechanizmy silnego uwierzytelniania oraz szyfrowania sesji wykorzystując bezpieczny klucz. Istnieją dwie wersje protokołu ssh oznaczone jako ssh1 oraz ssh2.

Kilka wartych uwagi opcji:

Istnieje jeszcze wiele ciekawych opcji a sam program jest czymś znacznie większym, niż tylko "bezpiecznym telnetem". Umożliwia również korzystanie z bezpiecznego ftp (sftp) oraz kopiowania plików (scp).

Warto wspomnieć także, iż komunikacja przy pomocy ssh może odbywać się bez podawania hasła. W tym celu należy utworzyć klucze szyfrowania: publiczny i prywatny, korzystając z programów ssh-keygen lub ssh-keygen2 w zależności od wersji ssh. Klucz publiczny należy umieścić na serwerze, z którym chcemy się łączyć. Jednak nieco bezpieczniej jest używać hasła, szczególnie, gdy nie zapominamy o jego zmianie raz na jakiś czas.

5.3.2.OpenSSH

Pakiet OpenSSH realizuje szyfrowane połączenie pomiędzy dwoma komputerami, zapewniając bezpieczeństwo przesyłania danych, autoryzację połączeń i autentykacje. Jest napisany na następujące systemy operacyjne: Linux, Solaris, AIX, HPUX, NetBSD, Irix i jeżeli istnieją odpowiednie łaty (patches) na inne Unix'y.

Główna różnica pomiędzy pakietem SSH, a pakietem OpenSSH jest następująca: OpenSSH jest darmowy, jego używanie nie jest ograniczonone restrykcyjnymi prawami patentowymi i licencjami, przez co może z niego korzystać każdy.

OpenSSH jest rozwijany w oparciu o ostatnią nielicencjonowaną wersję SSH Tatu Ylonen'a. Wszystkie opatentowane algorytmy zawarte w pakiecie, zostały przeniesione do zewnętrznych bibliotek, wszystkie znane dziury w bezpieczeństwie zostały naprawione, rozbudowano pakiet o nowe cechy i dokonano wielu usprawnień oprogramowania.

OpenSSH zawiera w sobie między innymi następujące programy:

SCP kopiuje pliki pomiędzy hostami w sieci. Do transferu danych używa SSH i wykorzystuje tą samą autoryzację oraz daje taki sam stopień bezpieczeństwa jak F-Secure SSH. W odróżnieniu od RCP, SCP prosi w razie potrzeby o podanie hasła uwierzytelniającego. Wszelkie nazwy pliku mogą zawierać specyfikacje hosta i użytkownika, określające, że plik jest kopiowany do/z tego hosta.

Użycie scp jest najłatwiejszym sposobem na skopiowanie pliku na odległy host. Komenda pozwalająca na skopiowanie pliku "filename" z katalogu lokalnego do katalogu "remote_dir" umieszczonego na hoście "host1":

scp local_dir/filename myname@host1:remote_dir

Kopiowanie w drugą stronę (z "remote_dir" do katalogu lokalnego) umożliwi komenda:

scp myname@host1:remote_dir/filename

Dozwolone jest również kopiowanie między dwoma zdalnymi hostami:

scp myname@host1:remote_dir/filename myname@host2:another_dir

Używanie scp wymaga znajomości dokładnego drzewa katalogów na odległej maszynie. Jest to niewątpliwie niedogodność, która wpływa na to, że w praktyce częściej wykorzystuje się sftp. Sftp używa ssh2 aby zapewnić możliwie bezpieczny transport plików. Są dwie zasadnicze cechy, dla których warto używać sftp zamiast ftp. Po pierwsze, hasła nie są przekazywane czystym tekstem, a po drugie dane są kodowane na czas transferu.

5.3.4.SSL - Secure Socket Layer (protokół bezpiecznej komunikacji)

SSL jest protokołem sieciowym używanym do bezpiecznej komunikacji między klientem a serwerem, stworzonym przez Netscape. SSL w założeniu jest podkładką pod istniejące protokoły, takie jak http, ftp, smtp, nntp i telnet. SSL zapewnia bezpieczne połączenie, które ma trzy podstawowe właściwości:

Podstawowym celem protokołu SSL jest zapewnienie prywatności i wiarygodności pomiędzy dwoma aplikacjami komunikującymi się między sobą. Protokół składa się z dwóch warstw. Na najniższym poziomie, w górnej warstwie protokołu komunikacyjnego (np.: TCP), jest SSL Record Protocol. Służy on do upakowania (enkapsulacja) protokołów na wyższym poziomie. Dla przykładu jednym z upakowywujących protokołów jest SSL Handshake Protocol, pozwalający serwerowi i klientowi na wzajemną autentykację i negocjację algorytmu kodującego i kluczy kryptograficznych zanim protokół aplikacji wyśle lub odbierze pierwszy bajt lub daną. Ważną cechą protokołu SSL jest niezależność od protokołu aplikacji. Dla protokołów z wyższej warstwy SSL jest przeźroczysty.



Zastosowanie SSL w transakcjach finansowych

Protokół SSL jest jedną z metod zapewniających bezpieczeństwo w transakcjach finansowych.

Ważną sprawą dla bezpieczeństwa zaszyfrowanych informacji jest długość używanych kluczy (np. 128 bitów). Im klucze są dłuższe, tym trudniej jest informacje odszyfrować. Powszechnie się uważa, że dla kluczy asymetrycznych: 512 - zbyt mało, 768 - stosunkowo bezpiecznie, 1024 - silne bezpieczeństwo, natomiast dla kluczy symetrycznych: 40 - zbyt mało, 56 - stosunkowo bezpiecznie, 128 - silne bezpieczeństwo.

Łamanie kluczy metodą brute force to sprawdzanie po kolei możliwych kluczy. Złamanie klucza 40 bitowego zajęło 3 godziny sieci komputerów. Złamanie klucza 56 bitowego (w algorytmie RC5) zajęło 250 dni w ramach jednego z projektów distributed.net. Eksperyment został przeprowadzony przez sieć komputerów, których moc obliczeniowa była równoważna 26 tysiącom komputerów klasy Pentium 200. Złamanie klucza 128 bitowego zajęłoby 1 bilion x 1 bilion lat (za pomocą pojedynczego superkomputera).

Powszechnie używa się takich skrótów dla szyfrowanych transmisji danych:

- SSL 128 bitów - szyfrowanie z użyciem klucza symetrycznego o długości 128 bitów,

- SSL 40 bitów - szyfrowanie z użyciem klucza symetrycznego o długości 40 bitów.

W pierwszej fazie nawiązywania połączenia SSL serwer i przeglądarka wymieniają tzw. certyfikaty. Certyfikat jest odpowiednikiem dokumentu tożsamości dla serwera WWW oraz dla klienta banku. Certyfikat zawiera następujące składniki:

Certyfikaty są wydawane przez niezależne i zaufane urzędy - Certification Authorities (CA). Wydanie certyfikatu jest poprzedzone sprawdzeniem autentyczności danego wnioskodawcy. Certyfikaty SSL serwera zapewniają uwierzytelnienie serwera bankowego. Certfyfikaty SSL dla klientów zastosowano w Fortis Banku, certyfikaty te bank wydaje samodzielnie.

Polskie banki (np. Pekao, BPH, Fortis) w większości posiadają certyfikaty SSL/SGC 128 bitów, co oznacza że do korzystania z ich usług wystarczy standardowa zalecana przez bank przeglądarka. Certfyfikaty SSL 128 bitów posiada wiele sklepów poza Polską, jak również polski onet (np. adres https://ssl.onet.pl/login/login), co oznacza że do korzystania z tych serwisów bardzo zalecane jest posiadanie rozszerzonej przeglądarki z pełnym SSL 128.



Zastosowanie SSL do przesyłania poczty

Nowe możliwości gwarantują bezpieczeństwo i tajność korespondencji przesyłanej na nasz serwer i ściąganej z naszego serwera. Bezpieczne połączenie szyfrowane SSL, daje możliwość odbierania i wysyłania poczty w taki sposób, aby dane zawarte w poczcie nie mogły zostać przechwycone przez osoby niepowołane. Podczas wysyłania i odbierania poczty pomiędzy serwerem a komputerem użytkownika ustanawiane jest połączenie szyfrowane, którym dane są przesyłane.

5.4.Tunelowanie

5.4.1.Bezpieczeństwo

Protokoły TCP oraz IP nie posiadają żadnych mechanizmów ochrony danych ani autoryzacji połączeń. Ponieważ istnieją metody, aby podsłuchać transmisję realizowaną właśnie poprzez TCP/IP lub podszyć się pod dany serwer, należy zastosować takie rozwiązania, aby wyeliminować zagrożenia z tym związane lub chociaż w możliwie największym stopniu poprawić bezpieczeństwo i ochronę przesyłanych danych.

Jedną z ciekawych propozycji rozwiązania problemu zagrożenia podsłuchem (sniffing) jest zastosowanie tunelu (ang. tunelling) wykorzystując program SSH. Jest to dość proste, a zarazem skuteczne rozwiązanie. Cała operacja polega na utworzeniu szyfrowanego połączenia tam, gdzie sieć jest najbardziej narażona na atak, czyli wtedy, gdy dane są przesyłane poprzez sieć, której nie możemy kontrolować (Internet). Samo łączenie odbywa się pomiędzy portami. Każdej z usług odpowiada inny port tak więc wystarczy np. do portu serwera, odpowiadającego usłudze pop3 (port 110) podłączyć tunel, do własnego. Ten proces nazywa się z angielska "port forwarding".

Ściślej całą operację tunelowania można opisać tak:

Wirtualna sieć prywatna to sieć kanałów dwukierunkowej transmisji danych, tworzonych na bazie sieci publicznej, otwieranych na czas transferu danych pomiędzy stacjami sieci prywatnych, poprzez które odbywa się przesyłanie informacji w formie zaszyfrowanej.

Wiele systemów ma możliwość konstrukcji VPN, opartych na metodach szyfrowania transmisji danych. Oznacza to, że można utworzyć swoją sieć prywatną na bazie publicznych mediów takich jak Internet. Pozwala to łatwo połączyć odległe oddziały firmy w jedną bezpieczną sieć. Niekiedy istnieje możliwość kodowania tylko niektórych typów usług (jak np. telnet) pozostawiając inne w normalnej postaci, co pozwala utrzymać efektywność całego systemu. Sieci lokalne korzystają jednak często z innych protokołów sieciowych niż sieci rozległe. Pojawia się więc problem z połączeniem sieci lokalnych w sieć wirtualną. Wtedy to wykorzystuje się tunelowanie. Jest to kolejny sposób użycia tunelowania poza podstawowym zastosowaniem jakim jest zapewnienie bezpieczeństwa.

Tunelowanie polega na wykorzystaniu istniejącej publicznej infrastruktury sieciowej do przesyłania danych z jednej prywatnej sieci do drugiej. Na tunelowanie składa się kilka procesów. Są to: enkapsulacja, transmisja oraz proces odwrotny do enkapsulacji. Ogólnie mówiąc, proces enkapsulacji polega na dopisaniu odpowiednich nagłówków do oryginalnych pakietów. Logiczna droga, jaką pokonują enkapsulowane pakiety, zwana jest tunelem. Po dotarciu do punktu przeznaczenia oryginalne ramki są "oczyszczane" z dodatkowego nagłówka i przekazywane do miejsca przeznaczenia.

Generalnie można stwierdzić, iż tunelowanie umożliwia przesyłanie pewnych usług sieciowych za pośrednictwem innych, często odmiennych usług sieci, pracujących w różnych standardach.

5.4.3.Odbiór poczty

Standardowo klient POP3 łączy się z przydzielonym dla tej usługi portem 110 serwera. Tunelując utworzymy szyfrowane połączenie między portem TCP na lokalnej maszynie a portem serwera. W rezultacie zapis i odczyt z lokalnego portu będzie wykonywany na serwerze a wszystkie przesyłane dane zostaną zabezpieczone. W tym przypadku bezpieczne połączenie otrzymujemy tworząc tunel z portu lokalnego 110 do portu na serwerze:

# ssh -f -L 110:mailsvr:110 -C -c rc4 mailserv

a następnie wskazując klientowi POP3 nasz system jako serwer:

popmail localhost radzio

Argumenty podawane programowi ssh mają następujące znaczenie:

Czytanie logów systemowych nie należy do najprzyjemniejszych czynności, więc wygodnie jest utworzyć skrypty "wyłuskujące" interesujące informacje z konkretnych plików z katalogu /var/log/ lub korzystać z innych programów, które zajmują się analizą logów. Dzięki informacjom, które system zapisuje w /var/log/secure można się o dowiedzieć o tym, kto penetrował system lub zidentyfikować włamywacza. Oczywiste jest, że po skończeniu swojej roboty postara się on skasować zawartość wspomnianego pliku, dlatego też należy zadbać o to, by dane w nim zapisane były automatycznie przekazywane do innego pliku lub urządzenia.

Normalną aktywność systemu możemy sprawdzać korzystając z podstawowych poleceń systemu:

W sieci dostępnych jest kilka programów, które wspomagają monitorowanie, poprawiają bezpieczeństwo lub otaczają system opieką. Warto skorzystać z takich narzędzi, jak np. pakiet Tripwire, którego działanie polega na odwzorowaniu systemu plików i przypisaniu do nich cyfrowych sygnatur, których później można użyć do wykrycia, czy nie zostały zamienione jakieś ważne pliki.