Protokół FTP Protokół FTP



Podobne dokumenty
Protokół HTTP. 1. Protokół HTTP, usługi www, model request-response (żądanie-odpowiedź), przekazywanie argumentów, AJAX.

Plan wykładu. 1. Protokół FTP. 2. Protokół HTTP, usługi www, model request-response (żądanie-odpowiedź), przekazywanie argumentów, AJAX.

Przykłady ataków. Błąd dotyczy np. forów dyskusyjnych z możliwością umieszczania plików grafcznych. Pozwala to na wykonanie dowolnego żądania HTTP.

Systemy internetowe. Wykład 5 Architektura WWW. West Pomeranian University of Technology, Szczecin; Faculty of Computer Science

SSL (Secure Socket Layer)

ZiMSK. Konsola, TELNET, SSH 1

Serwer SSH. Wprowadzenie do serwera SSH Instalacja i konfiguracja Zarządzanie kluczami

JAVA I SIECI. MATERIAŁY:

systemów intra- i internetowych Platformy softwarowe dla rozwoju Architektura Internetu (2) Plan prezentacji: Architektura Internetu (1)

Wykład 4. Metody uwierzytelniania - Bezpieczeństwo (3) wg The Java EE 5 Tutorial Autor: Zofia Kruczkiewicz

Sieci komputerowe. Wykład dr inż. Łukasz Graczykowski

Stos TCP/IP. Warstwa aplikacji cz.2

Usługi sieciowe systemu Linux

1. Model klient-serwer

Protokół HTTP 1.1 *) Wprowadzenie. Jarek Durak. rfc2616 źródło

Wykład 4. komputerowych Protokoły SSL i TLS główne slajdy. 26 października Igor T. Podolak Instytut Informatyki Uniwersytet Jagielloński

Programowanie w Internecie

Programowanie w Internecie

Języki programowania wysokiego poziomu WWW

ZABEZPIECZENIE KOMUNIKACJI Z SYSTEMEM E-PŁATNOŚCI

Hosting WWW Bezpieczeństwo hostingu WWW. Dr Michał Tanaś (

Programy typu klient serwer. Programowanie w środowisku rozproszonym. Wykład 5.

Programowanie Sieciowe 2 Protokoły komunikacyjne: HTTP

Technologie internetowe

Protokoły zdalnego logowania Telnet i SSH

Typy przetwarzania. Przetwarzanie zcentralizowane. Przetwarzanie rozproszone

Plan wykładu. 1. Poczta elektroniczna protokół SMTP, protokół POP, protokół IMAP. 2. Zdalna praca - Telnet. 3. Transfer plików usługa FTP.


Tworzenie witryn internetowych PHP/Java. (mgr inż. Marek Downar)

I.Wojnicki, Tech.Inter.

JĘZYK PYTHON - NARZĘDZIE DLA KAŻDEGO NAUKOWCA. Marcin Lewandowski [ mlew@ippt.gov.pl ]

Specyfikacja interfejsów usług Jednolitego Pliku Kontrolnego

Zarządzanie systemami informatycznymi. Bezpieczeństwo przesyłu danych

Zdalne logowanie do serwerów

Podstawy Secure Sockets Layer

I.Wojnicki, Tech.Inter.

Linux -- u mnie działa!

Łukasz Przywarty Wrocław, r. Grupa: WT/N 11:15-14:00. Sprawozdanie z zajęć laboratoryjnych: OpenSSL - API

Tworzenie witryn internetowych PHP/Java. (mgr inż. Marek Downar)

Projekt e-deklaracje 2

CGI i serwlety. Plan wykładu. Wykład prowadzi Mikołaj Morzy. Przykład: serwlety vs. szablony. Implementacja logiki prezentacji

Praktyczne aspekty wykorzystania nowoczesnej kryptografii. Wojciech A. Koszek

Programowanie Komponentowe WebAPI

Laboratorium nr 6 VPN i PKI

I.Wojnicki, Tech.Inter.

Ataki na aplikacje WWW. Łomem, czy wytrychem? Jak dobrać się do aplikacji WWW

Sieci komputerowe. Zajęcia 4 Bezpieczeństwo w sieciach komputerowych

Wybrane działy Informatyki Stosowanej

Bazy danych i usługi sieciowe

Protokoły internetowe

Bezpieczeństwo WWW. Plan prezentacji. WWW a protokoły TCP/IP; URL. Czym jest WWW?

Komunikacja z użyciem gniazd aplikacje klient-serwer

HTTP W 5-CIU PYTANIACH MICHAŁ KOPACZ

Kontrola sesji w PHP HTTP jest protokołem bezstanowym (ang. stateless) nie utrzymuje stanu między dwoma transakcjami. Kontrola sesji służy do

Wybrane działy Informatyki Stosowanej

Politechnika Gdańska Wydział Elektrotechniki i Automatyki Kierunek: Automatyka i Robotyka Studia stacjonarne I stopnia: rok I, semestr II

Jarosław Kuchta Administrowanie Systemami Komputerowymi. Dostęp zdalny

Specyfikacja techniczna. mprofi Interfejs API

MODEL WARSTWOWY PROTOKOŁY TCP/IP

SSL VPN Virtual Private Network with Secure Socket Layer. Wirtualne sieci prywatne z bezpieczną warstwą gniazd

SIP Studia Podyplomowe Ćwiczenie laboratoryjne Instrukcja

Wykład dla studentów Informatyki Stosowanej UJ 2012/2013

Java wybrane technologie

Bezpieczeństwo systemów informatycznych

Źródła. cript/1.5/reference/ Ruby on Rails: AJAX: ssays/archives/

Zaawansowany kurs języka Python

XML-RPC: Zdalne wykonywanie procedur

INTERNETOWE BAZY DANYCH materiały pomocnicze - wykład VII

Wykład 3 / Wykład 4. Na podstawie CCNA Exploration Moduł 3 streszczenie Dr inż. Robert Banasiak

TIN Techniki Internetowe zima

Wywoływanie metod zdalnych

Dostęp do komponentów EJB przez usługi Web Services

Bezpieczeństwo usług oraz informacje o certyfikatach

Gatesms.eu Mobilne Rozwiązania dla biznesu

INFORMATYKA Pytania ogólne na egzamin dyplomowy

Laboratorium nr 4 Sieci VPN

Protokół SSH. Patryk Czarnik

Ćwiczenie 9 - Zaawansowane metody programowania w sieci komputerowej

Sposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu.

Protokoły warstwy aplikacji i ich zastosowanie

Technologie sieciowe Sprawozdanie z labolatorium. Lista 5

Zastosowania informatyki w gospodarce Wykład 8

Programowanie w języku Java

Wykład 4 Bezpieczeństwo przesyłu informacji; Szyfrowanie

SSH - Secure Shell Omówienie protokołu na przykładzie OpenSSH

Wywoływanie metod zdalnych

Języki programowania wysokiego poziomu. PHP cz.3. Formularze

Sieci komputerowe. Wykład 8: Warstwa zastosowań: FTP i HTTP. Marcin Bieńkowski. Instytut Informatyki Uniwersytet Wrocławski

Bezpieczeństwo frameworków WEBowych Java na przykładzie ataku CSRF

Programowanie współbieżne i rozproszone

Plan wykładu. 1. Sieć komputerowa 2. Rodzaje sieci 3. Topologie sieci 4. Karta sieciowa 5. Protokoły używane w sieciach LAN 6.

WSIZ Copernicus we Wrocławiu

I.Wojnicki, JiTW. Języki i Technologie Webowe. Protokół HTTP, Przegladarki. Igor Wojnicki

Programowanie komponentowe. Przykład 1 Bezpieczeństwo wg The Java EE 5 Tutorial Autor: Zofia Kruczkiewicz

Bezpieczne protokoły Materiały pomocnicze do wykładu

Laboratorium nr 5 Sieci VPN

PHP. Tematyka wykładów: Język PHP PHP i bazy danych Rozszerzenia PHP

Instrukcja obsługi serwera FTP v

Czym jest AJAX. AJAX wprowadzenie. Obiekt XMLHttpRequest (XHR) Niezbędne narzędzia. Standardowy XHR. XHR z obsługą baz danych

Zamiana porcji informacji w taki sposób, iż jest ona niemożliwa do odczytania dla osoby postronnej. Tak zmienione dane nazywamy zaszyfrowanymi.

Transkrypt:

1 Plan wykładu 1. Popularne protokoły TCP protokół FTP, protokół HTTP. 2. Bezpieczeństwo przesyłanych informacji przez sieć TCP protokół SSL, protokół S-HTTP, protokoły SSH.

2 Protokół FTP Protokół FTP (File Transfer Protocol) [RFC 959] umożliwia przesyłanie plików tekstowych i binarnych. Serwer FTP działa na porcie 21. [serwer] 220 serwer.adres FTP server ready. [klient] USER użytkownik<crlf> [serwer] 331 Password required for użytkowinik. [klient] PASS hasło<crlf> [serwer] 230 User użytkownik logged in. [klient] SYST<CRLF> [serwer] 215 UNIX Type: L8 Version: Compaq Tru64 UNIX V5.0

3 Protokół FTP [klient] PASV<CRLF> [serwer] 227 Entering Passive Mode (ip1,ip2,ip3,ip4,port1,port2) [klient] LIST<CRLF> [serwer] 150 Opening ASCII mode for data connection for /bin/ls (0.0.0.0,0) dane są przesyłane na innym porcie. Port 21 będzie przeznaczony tylko dla komunikatów kontrolnych. W tym celu należy otworzyć nowe połączenie z adresem: ip1.ip2.ip3.ip4:port1*256+port2.

Protokół FTP [serwer] 226 Transfer complete. [klient] PASV<CRLF> [serwer] 227 Entering Passive Mode (ip1,ip2,ip3,ip4,port1,port2) [klient] RETR jakis.plik<crlf> [serwer] 150 Opening BINARY mode data connection for jakis.plik (0.0.0.0,0) [serwer] 226 Transfer complete. [klient] QUIT<CRLF> [serwer] Goodbye. [serwer] Zakończenie połączenia. 4

Serwery FTP proftpd (http://www.proftpd.org) vsftpd (http://vsftpd.beasts.org) Serwer ftp może korzystać z lokalnej bazy użytkowników (konta na serwerze) lub też autoryzować użytkownika poprzez inny niezależny mechanizm. Dostęp do ftp bez powłoki: modyfikacja /etc/passwd: ciesla:x:1002:21::/var/ftp/ciesla:/bin/false Autoryzacja lokalna przez PAM, plik /etc/pam.d/ftp #%PAM-1.0 auth required /lib/security/pam_listfile.so item=user sense=deny file=/etc/ftpusers onerr=succeed auth required /lib/security/pam_unix.so shadow nullok #auth required /lib/security/pam_shells.so account required /lib/security/pam_unix.so session required /lib/security/pam_unix.so 5

6 Aplikacje i protokoły WWW WWW (World Wide Web) jest najpopularniejszym sposobem udostępniania informacji w sieci. Umożliwia umieszczenie w jednym dokumencie między innymi tekstu, grafiki, animacji oraz dźwięku. Standard WWW został opracowany w 1991 roku. Dwa lata później powstała pierwsza graficzna przeglądarka stron WWW Mosaic. Strony są zapisane w języku HTML (HyperText Markup Language), a do ich przesyłania służy protokół HTTP (HyperText Transfer Protocol). WWW opiera się na modelu klient serwer. Strony są identyfikowane za pomocą adresów URL. Domyślny port dla usługi HTTP to 80.

Protokół HTTP Protokół HTTP [RFC 2616] przykładowe połączenie: [klient] HEAD / HTTP/1.1 <CRLF> Host: www.if.uj.edu.pl <CRLF> <CRLF> [serwer] HTTP/1.1 200 OK Date: Sun, 10 Oct 2004 19:54:37 GMT Server: Apache/1.3.27 (Unix) mod_jk/1.2.0 PHP/4.3.2 Last-Modified: Thu, 23 Sep 2004 07:02:33 GMT ETag: "1357a3-294c-41527509" Accept-Ranges: bytes Content-Length: 10572 Content-Type: text/html [serwer] zamknięcie połączenia Komenda HEAD zwraca ogólne informacje na temat wskazanego dokumentu. 7

8 Protokół HTTP W celu uzyskania treści wskazanego dokumentu należy użyć komendy GET lub POST. Za pomocą tych komend można również przekazać argumenty do serwera WWW. Schemat wywołania: [klient] lub [klient] GET /dokument?arg1=wart1&arg2=wart2 HTTP/1.1<CRLF> Host: www.if.uj.edu.pl<crlf><crlf> POST /dokument HTTP/1.1<CRLF> Host: www.if.uj.edu.pl<crlf> Content-Type: application/x-www-form-urlencoded<crlf> Content-Length: 21<CRLF><CRLF> arg1=wart1&arg2=wart2<crlf>

9 Protokół HTTP Pozostałe komendy: OPTIONS wykaz komend dostępnych dla wskazanego dokumentu (serwera), PUT wstawia dokument pod określony adres URL, DELETE kasuje dokument pod określonym adrese, TRACE zwraca informacje o poprawności zapytania. Nie zwraca, zawartości dokumentu, CONNECT zarezerwowana na potrzeby transmisji kodowanej (SSL).

Popularne serwery WWW Apache http://httpd.apache.org darmowy serwer z udostępnionym kodem źródłowym (licencja GPL). Posiada liczne moduły umożliwiające współpracę z innymi systemami (języki programowania, bazy danych). Może działać pod kontrolą różnych systemów operacyjnych, IIS (Internet Information Services) http://www.microsoft.com/iis komercyjny, wspiera technologię ASP (Active Server Pages). Współpracuje głównie z językami programowania firmy Microsoft. Działa w środowisku MS Windows, Tomcat http://jakarta.apache.org/tomcat darmowy serwer referencyjny dla technologii JSP (Java Server Pages), kontener servletów. Napisany w Javie. 10

11 Konfiguracja Apache'a Konfiguracja startowa programu serwera: /etc/conf.d/apache2: APACHE2_OPTS="-D DEFAULT_VHOST -D PHP5" Konfiguracja pracy serwera: /etc/apache2/httpd.conf: <VirtualHost *:80> ServerAdmin webmaster@adres.com DocumentRoot /var/www/docs/katalog.dla.adres.com ServerName adres.com ErrorLog /var/log/apache2/adres.com-error_log CustomLog /var/log/apache2/adres.com-access_log common </VirtualHost>

Działanie serwera WWW model request response przeglądarka WWW (JavaScript) żądanie danych Serwer WWW strona HTML Oprogramowanie serwera WWW Skrypty (CGI, PHP, Servlety, JSP, ASP, Perl, Python) System operacyjny Bazy danych 12

Dokumenty HTML <html> <body> Podaj proszę swoje imie: <form name="formularz" method="get" action="skrypt.php"> Imie: <input type="text" name="username" /> <input type="submit" /> </form> </body> </html> http://empetrum.if.uj.edu.pl/skrypt.php?username=ala 13

14 Skrypty PHP <?php $imie = $_GET['username']?> <html> <body> Witaj <?php echo $imie?> </body> <html>

Przekazywanie danych przez HTTP Przeglądarka i serwer mogą wymieniać się danymi: GET argumenty wywołania skryptu/strony. Dane z przeglądarki do serwera. Przykład: http://phpbb3.pl/viewtopic.php?f=5&t=1018 POST Analogiczne, z tym że argumenty nie są przesyłane poprzez adres URL. COOKIE argumenty przesłane od serwera do przeglądarki w celu późniejszej identyfikacji klienta. SESSION argumenty związane z klientem trzymane po stronie serwera oznaczone identyfikatorem sesji przekazywanym pomiędzy serwerem i klientem. 15

Przekazywanie danych przez HTTP - Cookies Serwer przeglądarka: HTTP/1.1 302 Found Date: Sat, 25 Oct 2008 07:48:15 GMT Server: Apache... Set-Cookie: imie=michal; expires=sat, 01 Nov 2008 07:48:15 GMT; path=/; domain=.uj.pl; HttpOnly Set-Cookie: nazwisko=ciesla; path=/; domain=.uj.pl; HttpOnly Location: http://www.uj.pl/index.php?st=0... Przeglądarka serwer: GET /index.php?st=0& HTTP/1.1... Cookie: imie=michal; nazwisko=ciesla; 16

17 Przekazywanie danych przez HTTP - Sesje Przekazywanie sesji jest możliwe na dwa sposoby: 1. Poprzez Cookie: HTTP/1.1 302 Found Date: Sat, 25 Oct 2008 07:48:15 GMT Server: Apache... Set-Cookie: s=94a576da1f8e5036a0c44fce6b1e1044; expires=sat, 01 Nov 2008 07:48:15 GMT; path=/; domain=.uj.pl; HttpOnly... 2. Poprzez dodatkowy argument GET dodanie do każdego możliwego linka wysyłanego przez przeglądarkę członu s=94a576da1f8e5036a0c44fce6b1e1044).

Sesje i Cookies w PHP Ustawianie cookies: bool setcookie (string $cookiename [, string $value [, int $expire [, string $path [, string $domain [, bool $secure [, bool $httponly ]]]]]] ) Odczyt cookies: $_COOKIE['cookiename'] lub $_REQUEST['cookiename']. Sesje: bool session_start() Przykład: session_start(); echo 'Witaj na stronie $_SESSION['strona']<br />'; $_SESSION['strona']; = 'inna strona' 18

JavaScript <SCRIPT TYPE="text/javascript"> <!-- function Test(){ var imie = document.formularz.username.value; alert("witaj " + imie + "!"); } // --> </SCRIPT> <html> <body> Podaj proszę swoje imie: <form name="formularz" onsubmit="test()"> Imie: <input type="text" name="username" /> <input type="submit"/> </form> </body> </html> 19

20 AJAX AJAX (Asynchronous JavaScript and XML) jest techniką pozwalającą zapewnić ciągłą (asynchroniczną) komunikację pomiędzy przeglądarką internetową a serwerem www. AJAX nie stanowi odrębnej technologii a jedynie wykorzystuje już istniejące: HTTP, JavaScript, CSS, XML

<script type="text/javascript"> function ajaxfunction(){ var xmlhttp; try{ // Firefox, Opera 8.0+, Safari xmlhttp=new XMLHttpRequest(); }catch (e){ // Internet Explorer try{ xmlhttp=new ActiveXObject("Msxml2.XMLHTTP"); }catch (e){ try{ xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); }catch (e){ alert("w Twojej przeglądarce nie można używać AJAXa!"); return false; } } } 21 AJAX - przykład <html> <body>

22 AJAX - przykład xmlhttp.onreadystatechange=function(){ if(xmlhttp.readystate==4){ document.formularz.time.value=xmlhttp.responsetext; } } xmlhttp.open("get","time.php",true); xmlhttp.send(null); } </script> <form name="formularz"> Imie: <input type="text" onkeyup="ajaxfunction();" name="username" /> Czas: <input type="text" name="time" disabled /> </form></body> </html>

23 AJAX użycie w kodzie html xmlhttp.onreadystatechange=function(){ if(xmlhttp.readystate==4){ document.myform.time.value=xmlhttp.responsetext; } } xmlhttp.open("get","time.php",true); xmlhttp.send(null); } </script>

AJAX skrypt time.php <?php header("expires: Sat, 1 Jan 2000 00:00:00 GMT"); header("last-modified: ".gmdate( "D, d M Y H:i:s")."GMT"); header("cache-control: no-cache, must-revalidate"); header("pragma: no-cache"); echo date("d M Y H:i:s");?> Czas będzie aktualizowany przy każdym wciśnięciu klawisza w polu Imie. Strona nie będzie przeładowywana. Przydatne linki: http://www.w3schools.com/ajax/default.asp http://www.php.net http://httpd.apache.org. 24

Prywatność i bezpieczeństwo 1. Protokół SSL/TLS (Secure Socket Layer / Transport Layer Security) służy do wymiany danych, spełnia trzy warunki ochrony informacji: integralność, uwierzytelnianie oraz poufność. Kodowaniem objęte są wszystkie dane wysyłane w ramach połączenia. SSL został opracowany w 1994 roku. 2. Protokół S-HTTP (Secure HTTP) stanowi rozszerzenie protokołu HTTP. Służy do bezpiecznego przesyłania pojedynczych danych. Opracowany w 1995 roku. autoryzacja, wymiana kluczy publicznych wymiana danych 25

26 Podstawy kryptografii 1. Kody podstawieniowe. 2. Kodowanie z wykorzystaniem klucza. klucz symetryczny do zakodowania i rozkodowania informacji potrzebny jest ten sam klucz. Potrzebny jest bezpieczny kanał w celu wymiany klucza pomiędzy nadawcą i odbiorcą. klucz asymetryczny do zakodowania używa sie innego klucza niż do rozkodowania. Jeden z nich to klucz prywatny, drugi klucz publiczny. Znajomość klucza publicznego nie ułatwia znalezienia klucza prywatnego.

Podstawy kryptografii Schematy działania klucz symetryczny wiadomość A(K) A wiadomość zakodowana -1 (K) wiadomość klucz asymetryczny A(Publ) B(Pryw) wiadomość wiadomość zakodowana wiadomość klucz asymetryczny umożliwia podpisywanie wiadomości: wiadomość C(Pryw) wiadomość zakodowana D(Publ) wiadomość 27

28 Protokół SSL Protokół SSL działa ponad warstwą transportową (TCP). Dzięki temu może być wykorzystywany przez wszystkie protokoły warstw wyższych. Jego główne cele: poufność dane są przekazywane w bezpiecznej postaci zaszyfrowanej, wszechstronność niezależni programiści mogą tworzyć programy mogące się wzajemnie komunikować i uzgadniać parametry transmisji, rozszerzalność nowe techniki kryptograficzne mogą być łatwo implementowane w ramach istniejącej technologii, efektywność wykorzystanie zasobów takich jak czas procesora, liczba połączeń sieciowych czy przepustowość sieci powinno być optymalne.

Protokół SSL Nawiązanie połączenia (SSL Handshake Protocol). Client Hello Certyfikat Klucz publiczny Sprawdzenie certyfikatu serwera [Zmiana algorytmu szyfrującego] Finished Server Hello Certyfikat Klucz publiczny Prośba o certyfikat Server Hello Done [Zmiana algorytmu szyfrującego] Finished W przypadku odnowienia sesji szare komunikaty nie są przesyłane. 29

30 Protokół SSL Client Hello przykład: 80 67 01 03 01 00 4e 00 00 00 10 01 00 80 03 00 80 07 00 c0 06 00 40 02 00 80 04 00 80 00 00 39 00 00 38 00 00 35 00 00 33 00 00 32 00 00 04 00 00 05 00 00 2f 00 00 16 00 00 13 00 fe ff 00 00 0a 00 00 15 00 00 12 00 fe fe 00 00 09 00 00 64 00 00 62 00 00 03 00 00 06 ca ce 92 2d 83 bd 80 8f 4a 34 06 aa 23 78 fb 44 kolejno: długość (103), kod komunikatu Client Hello, wersja, długość bloku obsługiwanych algorytmów szyfrujących (78), identyfikator sesji, długość bloku identyfikatora (16), obsługiwane algorytmy szyfrujące (3 bajty jeden algorytm), identyfikator.

31 Certyfikaty SSL Certyfikat pozwala potwierdzić autentyczność strony WWW. Aby certyfikat był ważny musi być podpisany, przez zaufaną osobę lub organizację. Podpisywanie wiadomości (certyfikatu): wygenerowanie skrótu wiadomości (MD5), zakodować go kluczem prywatnym, Wiadomość jest rozprowadzana wraz z zakodowanym skrótem i (znanym powszechnie) kluczem publicznym podpisującego. W celu sprawdzenia autentyczności należy: rozkodować skrót kluczem publicznym podpisującego porównanie go ze skrótem wyliczonym samodzielnie.

32 Biblioteka OpenSSL OpenSSL [http://www.openssl.org] funkcje wykorzystywane do nawiązania połączenia openssl/ssl.h int SSL_library_init(void); // inicjalizacja biblioteki SSL_CTX *SSL_CTX_new(SSL_METHOD *method); // przygotowanie obiektu obsługującego połączenie, jako argument można podać np. SSL_METHOD SSLv23_method(void). SSL *SSL_new(SSL_CTX *ctx); // obiekt zarządzający transmisją SSL. int SSL_set_fd(SSL *ssl, int fd); // powiązanie z deskryptorem int SSL_connect(SSL *ssl); // nawiązanie połączenia SSL.

33 Biblioteka OpenSSL int SSL_read(SSL *ssl, void *buf, int num); z SSL. // czytanie int SSL_write(SSL *ssl, const void *buf, int num); // pisanie z SSL. int SSL_shutdown(SSL *ssl); // zamknięcie połączenia SSL. Dodatkowo biblioteka udostępnia wiele funkcji przydatnych w kryptografii: algorytmy obliczające sumy kontrolne np. SHA, MD5, HMAC algorytmy szyfrujące np. AES, DES, RSA, generowanie dużych liczb losowych, generowanie kluczy.

public static void main(string[] args) throws Exception { try { SSLSocketFactory factory = (SSLSocketFactory)SSLSocketFactory.getDefault(); SSLSocket socket = (SSLSocket)factory.createSocket ("www.verisign.com", 443); socket.starthandshake(); PrintWriter out = new PrintWriter( new BufferedWriter( new OutputStreamWriter( socket.getoutputstream()))); 34 SSL w Javie import java.net.*; import java.io.*; import javax.net.ssl.*; public class SSLSocketClient {

SSL w Javie out.println("get / HTTP/1.0"); out.println(); out.flush(); BufferedReader in = new BufferedReader( new InputStreamReader(socket.getInputStream())); String inputline; while ((inputline = in.readline())!= null) System.out.println(inputLine); in.close(); out.close(); socket.close(); } catch (Exception e) { e.printstacktrace(); } } } 35

36 Protokół S-HTTP Podstawowe własności S-HTTP: nowa komenda Secure * Secure-HTTP/1.2. W odpowiedzi serwer przesyła informację o wykorzystywanych technologiach szyfrowania, używa szyfrów symetrycznych. Wymiana tajnych kluczy następuje z wykorzystaniem szyfrów asymetrycznych lub innych metod autoryzacji (np. Kerberos), nie wprowadza dodatkowych protokołów pośredniczących w transmisji danych działa na wyższym poziomie niż SSL.

37 Protokół SSH SSH (Secure Shell) jest następcą usługi Telnet. Umożliwia on wykonywanie poleceń na zdalnym komputerze. Przesyłane informacje są kodowane. Usługa jest dostępna przez port 22. Protokół SSH dzieli sie na kilka warstw: protokół warstwy transportowej (Transport Layer Protocol), protokół autoryzacji (User Authentication Protocol), protokół połączenia (Connection Protocol), protokoły użytkownika (Client Protocols).

SSH protokół warstwy transportowej [serwer] SSH-protokół-oprogramowanie komentarz [klient] SSH-protokół-oprogramowanie komentarz<crlf> przykład: SSH-2.0-OpenSSH_3.6.1p2 [serwer] <algorytmy obsługiwane przez serwer> [klient] <algorytmy używane przez klienta> [klient-serwer] <wymiana kluczy publicznych [klient-serwer] Po uzgodnieniu algorytmów transmisja jest kodowana. Cechy SSH (w porównaniu do SSL) różne algorytmy używane do transmisji w każdą ze stron, zwiększona uniwersalność kosztem bezpieczeństwa. 38

39 Protokół SSH Najważniejsze zastosowania SSH ssh następca telnet, rlogin, scp (Secure Copy) narzędzie do kopiowania plików, następca rcp, sftp (Secure FTP) protokół do transferu plików, następca FTP. Oprogramowanie OpenSSH (http://www.openssh.com) udostępnia implementacje klientów i serwerów wspomnianych usług.

Firewall - iptables Aktualna konfiguracja: iptables-save > konfiguracja.txt: # Generated by iptables-save v1.3.5 on Tue Oct 24 12:36:50 2006 *filter :INPUT DROP [5203:1000594] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [158054:29139188] -A INPUT -i lo -j ACCEPT -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT -A INPUT -s 192.168.0.0/255.255.255.192 -i eth0 -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT -A INPUT -s 143.232.11.26 -i eth0 -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 25 -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 995 -j ACCEPT -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT COMMIT # Completed on Tue Oct 24 12:36:50 2006 Ustawianie konfiguracji: iptables-restore konfiguracja.txt 40

41 Podsumowanie Protokół FTP służy do przesyłania plików a protokół HTTP przesyła dokumenty HTML i działa w modelu request-response. Ze względu na szybki rozwój tego segmentu rynku powstało wiele technologii umożliwiających tworzenie serwisów internetowych wprowadzających możliwości interakcji pomiędzy klientem a serwerem tj. JavaScript, PHP, AJAX. Bezpieczeństwo w sieciach jest najczęściej zapewniane przez algorytmy z kluczem asymetrycznym. Dzięki nim, możemy nie tylko skutecznie szyfrować przesyłaną treść, ale również zidentyfikować drugą stronę komunikacji. Najczęściej wykorzystuje się tutaj rozwiązania oparte o protokół SSL.