24
1 Bezpieczeństwo Bezpieczeństwo 1. Zagrożenia w sieci WWW. przykłady ataków na serwisy internetowe. 2. Bezpieczeństwo przesyłanych informacji przez sieć TCP protokół SSL, protokół S-HTTP, protokoły SSH.

Bezpieczeństwo - Jagiellonian Universityth-€¦ · potrzebny jest ten sam klucz. Potrzebny jest bezpieczny “kanał” w celu wymiany klucza pomiędzy nadawcą i odbiorcą. klucz

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Bezpieczeństwo - Jagiellonian Universityth-€¦ · potrzebny jest ten sam klucz. Potrzebny jest bezpieczny “kanał” w celu wymiany klucza pomiędzy nadawcą i odbiorcą. klucz

1

BezpieczeństwoBezpieczeństwo

1. Zagrożenia w sieci WWW.

● przykłady ataków na serwisy internetowe.

2. Bezpieczeństwo przesyłanych informacji przez sieć TCP

● protokół SSL,

● protokół S-HTTP,

● protokoły SSH.

Page 2: Bezpieczeństwo - Jagiellonian Universityth-€¦ · potrzebny jest ten sam klucz. Potrzebny jest bezpieczny “kanał” w celu wymiany klucza pomiędzy nadawcą i odbiorcą. klucz

2

Przykłady atakówPrzykłady ataków

Istnieje wiele możliwości ataków na serwis internetowy. Począwszy od

prób podsłuchu, poprzez włamania wykorzystujące luki w systemie

operacyjnym i oprogramowaniu serwera, kończąc na preparowaniu

odpowiednich danych przesyłanych przez protokół HTTP w celu

oszukania skryptów generujących dynamiczną zawartość stron.

W dalszej części zaprezentowano podstawowe techniki z ostatniej

grupy.

Page 3: Bezpieczeństwo - Jagiellonian Universityth-€¦ · potrzebny jest ten sam klucz. Potrzebny jest bezpieczny “kanał” w celu wymiany klucza pomiędzy nadawcą i odbiorcą. klucz

3

Przykłady atakówPrzykłady ataków

Cross-site request forgery (CSRF):

Błąd dotyczy np. forów dyskusyjnych z możliwością umieszczania

plików grafcznych. Pozwala to na wykonanie dowolnego żądania

HTTP.

Przykład: BBCode

[img]http://www.jakies-forum.pl/admin/delete_user.php?uid=1[/img]

Jeśli administrator/moderator uruchomi stronę z takim „obrazkiem”

to skasuje konto użytkownika.

Ochrona: istotne funkcje dostępne wyłącznie przez POST.

Page 4: Bezpieczeństwo - Jagiellonian Universityth-€¦ · potrzebny jest ten sam klucz. Potrzebny jest bezpieczny “kanał” w celu wymiany klucza pomiędzy nadawcą i odbiorcą. klucz

4

Przykłady atakówPrzykłady ataków

Session fxation:

Przejęcie kontroli nad kontem (zalogowanego) użytkownika.

Użytkownikowi należy wysłać link, który zostanie przez niego użyty:

http://www.jakis-adres.pl?SID=123456

Użytkownik po zalogowaniu będzie identyfkowany przez przekazany

mu numer sesji.

Ochrona: regeneracja identyfkatora sesji, powiązanie sesji z IP.

Page 5: Bezpieczeństwo - Jagiellonian Universityth-€¦ · potrzebny jest ten sam klucz. Potrzebny jest bezpieczny “kanał” w celu wymiany klucza pomiędzy nadawcą i odbiorcą. klucz

5

Przykłady atakówPrzykłady ataków

Iniekcje (SQL Injection, Code Injection, ...):

Używamy adresu:

http://jakis-serwis.pl/login.php?id=1%20OR%201=1

co odpowiada ( $_GET['id'] = "1 OR 1=1" )

Jeśli w kodzie kod autoryzujący jest realizowany np. poprzez zapytanie

mysql_query('SELECT name FROM admins WHERE id = '.$_GET['id']);

to zyskamy prawa administratora

Ochrona: analiza wprowadzanych wartości.

Page 6: Bezpieczeństwo - Jagiellonian Universityth-€¦ · potrzebny jest ten sam klucz. Potrzebny jest bezpieczny “kanał” w celu wymiany klucza pomiędzy nadawcą i odbiorcą. klucz

6

Przykłady atakówPrzykłady ataków

Directory traversal:

Atak typu Cookie injection. Umożliwia przeglądanie systemu plików

poprzez wysłanie odpowiedniego cookie.

// GET /index.php HTTP/1.0// Cookie: skin=../../../../../../../../etc/passwd

$skin = isset($_COOKIE['skin']) ? $_COOKIE['skin'] : 'default.skin';

readfile('gfx/skins/'.$skin);

Ochrona: analiza zawartości cookies.

Inne: http://anakin.us/blog/php-bezpieczne-programowanie/.

Page 7: Bezpieczeństwo - Jagiellonian Universityth-€¦ · potrzebny jest ten sam klucz. Potrzebny jest bezpieczny “kanał” w celu wymiany klucza pomiędzy nadawcą i odbiorcą. klucz

7

Prywatność i bezpieczeństwoPrywatność 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

wymianadanych

Page 8: Bezpieczeństwo - Jagiellonian Universityth-€¦ · potrzebny jest ten sam klucz. Potrzebny jest bezpieczny “kanał” w celu wymiany klucza pomiędzy nadawcą i odbiorcą. klucz

8

Podstawy kryptografiPodstawy kryptografi

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 się innego klucza niż

do rozkodowania. Jeden z nich to klucz prywatny, drugi – klucz

publiczny. Znajomość klucza publicznego nie ułatwia znalezienia

klucza prywatnego.

Page 9: Bezpieczeństwo - Jagiellonian Universityth-€¦ · potrzebny jest ten sam klucz. Potrzebny jest bezpieczny “kanał” w celu wymiany klucza pomiędzy nadawcą i odbiorcą. klucz

9

Podstawy kryptografiPodstawy kryptografi

Schematy działania:

● klucz symetryczny

wiadomość wiadomość zakodowana wiadomośćA(K) A-1(K)

● klucz asymetryczny

wiadomość wiadomość zakodowana wiadomośćA(Publ) B(Pryw)

wiadomość wiadomość zakodowana wiadomość

● klucz asymetryczny umożliwia podpisywanie wiadomości:

C(Pryw) D(Publ)

Page 10: Bezpieczeństwo - Jagiellonian Universityth-€¦ · potrzebny jest ten sam klucz. Potrzebny jest bezpieczny “kanał” w celu wymiany klucza pomiędzy nadawcą i odbiorcą. klucz

10

Protokół SSLProtokół SSL

1. 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 kryptografczne 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.

Page 11: Bezpieczeństwo - Jagiellonian Universityth-€¦ · potrzebny jest ten sam klucz. Potrzebny jest bezpieczny “kanał” w celu wymiany klucza pomiędzy nadawcą i odbiorcą. klucz

11

Protokół SSLProtokół SSL

Nawiązanie połączenia (SSL Handshake Protocol).

Client HelloServer HelloCertyfkatKlucz publicznyProśba o certyfkatServer Hello DoneCertyfkat

Klucz publicznySprawdzenie certyfkatu serwera[Zmiana algorytmu szyfrującego]Finished [Zmiana algorytmu szyfrującego]

Finished

W przypadku odnowienia sesji szare komunikaty nie są przesyłane.

Page 12: Bezpieczeństwo - Jagiellonian Universityth-€¦ · potrzebny jest ten sam klucz. Potrzebny jest bezpieczny “kanał” w celu wymiany klucza pomiędzy nadawcą i odbiorcą. klucz

12

Protokół SSLProtokół SSL

Client Hello – przykład:

80 67 01 03 01 00 4e 00 00 00 10 01 00 80 03 0080 07 00 c0 06 00 40 02 00 80 04 00 80 00 00 3900 00 38 00 00 35 00 00 33 00 00 32 00 00 04 0000 05 00 00 2f 00 00 16 00 00 13 00 fe ff 00 000a 00 00 15 00 00 12 00 fe fe 00 00 09 00 00 6400 00 62 00 00 03 00 00 06 ca ce 92 2d 83 bd 808f 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),

identyfkator sesji, długość bloku identyfkatora (16), obsługiwane

algorytmy szyfrujące (3 bajty – jeden algorytm), identyfkator.

Page 13: Bezpieczeństwo - Jagiellonian Universityth-€¦ · potrzebny jest ten sam klucz. Potrzebny jest bezpieczny “kanał” w celu wymiany klucza pomiędzy nadawcą i odbiorcą. klucz

13

Certyfkat SSLCertyfkat SSL

Certyfkat pozwala potwierdzić autentyczność strony WWW. Aby

certyfkat był ważny musi być podpisany, przez “zaufaną” osobę lub

organizację.

Podpisywanie wiadomości (certyfkatu):

● 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.

Page 14: Bezpieczeństwo - Jagiellonian Universityth-€¦ · potrzebny jest ten sam klucz. Potrzebny jest bezpieczny “kanał” w celu wymiany klucza pomiędzy nadawcą i odbiorcą. klucz

14

Biblioteka OpenSSLBiblioteka 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); // przygotowanieobiektu 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.

Page 15: Bezpieczeństwo - Jagiellonian Universityth-€¦ · potrzebny jest ten sam klucz. Potrzebny jest bezpieczny “kanał” w celu wymiany klucza pomiędzy nadawcą i odbiorcą. klucz

15

Biblioteka OpenSSLBiblioteka OpenSSL

int SSL_read(SSL *ssl, void *buf, int num); // czytaniez SSL.

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

kryptografi:

● algorytmy obliczające sumy kontrolne np. SHA, MD5, HMAC

● algorytmy szyfrujące np. AES, DES, RSA,

● generowanie dużych liczb losowych, generowanie kluczy.

Page 16: Bezpieczeństwo - Jagiellonian Universityth-€¦ · potrzebny jest ten sam klucz. Potrzebny jest bezpieczny “kanał” w celu wymiany klucza pomiędzy nadawcą i odbiorcą. klucz

16

SSL w JavieSSL w Javie

import java.io.*;import javax.net.ssl.*;

public class SSLSocketClient {

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())));

Page 17: Bezpieczeństwo - Jagiellonian Universityth-€¦ · potrzebny jest ten sam klucz. Potrzebny jest bezpieczny “kanał” w celu wymiany klucza pomiędzy nadawcą i odbiorcą. klucz

17

SSL w JavieSSL 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();

} }}

Page 18: Bezpieczeństwo - Jagiellonian Universityth-€¦ · potrzebny jest ten sam klucz. Potrzebny jest bezpieczny “kanał” w celu wymiany klucza pomiędzy nadawcą i odbiorcą. klucz

18

Protokół S-HTTPProtokół 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.

Page 19: Bezpieczeństwo - Jagiellonian Universityth-€¦ · potrzebny jest ten sam klucz. Potrzebny jest bezpieczny “kanał” w celu wymiany klucza pomiędzy nadawcą i odbiorcą. klucz

19

Uzgadnianie klucza Uzgadnianie klucza symetrycznegosymetrycznego

Protokół Difego-Hellmana:

Dwie strony komunikacji A i B używające prywatnych kluczy SK(A) i SK(B).

Klucze publiczne obliczamy ze wzorów:

PK(A) = LSK(A) mod M, PK(B) = LSK(B) mod M.

gdzie M to liczba pierwsza, a L liczba naturalna mniejsza niż M.

Klucz wspólny: CK(A, B) = PK(A)SK(B) mod M = PK(B)SK(A) mod M.

Page 20: Bezpieczeństwo - Jagiellonian Universityth-€¦ · potrzebny jest ten sam klucz. Potrzebny jest bezpieczny “kanał” w celu wymiany klucza pomiędzy nadawcą i odbiorcą. klucz

20

Protokół SSHProtokół 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 się 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).

Page 21: Bezpieczeństwo - Jagiellonian Universityth-€¦ · potrzebny jest ten sam klucz. Potrzebny jest bezpieczny “kanał” w celu wymiany klucza pomiędzy nadawcą i odbiorcą. klucz

21

SSH – protokół warstwy SSH – protokół warstwy transportowejtransportowej

[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.

Page 22: Bezpieczeństwo - Jagiellonian Universityth-€¦ · potrzebny jest ten sam klucz. Potrzebny jest bezpieczny “kanał” w celu wymiany klucza pomiędzy nadawcą i odbiorcą. klucz

22

Protokół SSHProtokół 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.

Page 23: Bezpieczeństwo - Jagiellonian Universityth-€¦ · potrzebny jest ten sam klucz. Potrzebny jest bezpieczny “kanał” w celu wymiany klucza pomiędzy nadawcą i odbiorcą. klucz

23

Firewall - iptablesFirewall - iptables

Aktualna konfguracja: 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 ACCEPTCOMMIT# Completed on Tue Oct 24 12:36:50 2006

Ustawianie konfguracji: iptables-restore konfiguracja.txt

Page 24: Bezpieczeństwo - Jagiellonian Universityth-€¦ · potrzebny jest ten sam klucz. Potrzebny jest bezpieczny “kanał” w celu wymiany klucza pomiędzy nadawcą i odbiorcą. klucz

24

PodsumowaniePodsumowanie

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ż

zidentyfkować drugą stronę komunikacji. Najczęściej

wykorzystuje się tutaj rozwiązania oparte o protokół SSL.