Bezpieczeństwo warstwy łącza danych w sieciach opartych o Ethernet

Komentarze

Transkrypt

Bezpieczeństwo warstwy łącza danych w sieciach opartych o Ethernet
Aspekty bezpieczeństwa
IT w systemach
komputerowych
Łukasz Czarniecki, Marcin Jerzak
Poznańskie Centrum Superkomputerowo – Sieciowe
Zespół Bezpieczeństwa
Poznań, 16.12.2009
1
Agenda
11:00 – 12:30 „Bezpieczeństwo warstwy łącza danych
w sieciach opartych o Ethernet”
12:30 – 12:45 Pytania i dyskusja
12:45 – 13:00 Przerwa
13:00 – 14:30 „Forensics & Anti-forensics - jak
przeprowadzić analizę powłamaniową, a jak to
utrudnić?”
14:30 – 14:45 Pytania i dyskusja
2
Informacje organizacyjne
• Ankieta
– krótka
– anonimowa
– bardzo pomocna w organizacji przyszłych szkoleń
• Lista obecności
– nie jest anonimowa ;-)
– proszę zaznaczyć, jeśli NIE życzycie sobie Państwo
otrzymywania informacji o kolejnych szkoleniach
• Prezentacja
– dostępna na stronach WWW:
• http://szkolenia.man.poznan.pl
• http://security.psnc.pl
3
PCSS





Poznańskie Centrum
SuperkomputerowoSieciowe
Operator sieci
PIONIER oraz POZMAN
Uczestnik projektów
naukowo-badawczych
Główne obszary
zainteresowań

Gridy, sieci nowej
generacji, portale

Bezpieczeństwo
sieci i systemów
http://www.pcss.pl
4
Zespół Bezpieczeństwa PCSS
 Dedykowany zespół istnieje od 1996r.
 Podstawowy zakres prac Zespołu
Zabezpieczanie infrastruktury PCSS
Zadania bezpieczeństwa w projektach R&D
Szkolenia i transfer wiedzy
Badania własne
Audyty i doradztwo w zakresie bezpieczeństwa IT
 Niektóre badania z ostatnich lat
Bezpieczeństwo
Bezpieczeństwo
Bezpieczeństwo
bankowości elektronicznej (2006)
serwerów WWW Apache i MS IIS (2007)
sklepów internetowych (2008)
 http://security.psnc.pl
5
Szkolenia ZB PCSS
• Szkolenia Działu KDM
– http://szkolenia.man.poznan.pl
• Szkolenia Centrum Innowacji
Microsoft
– http://mic.psnc.pl/szkolenia
• Możliwość zgłoszenia własnego
tematu szkolenia
6
Bezpieczeństwo warstwy
łącza danych w sieciach
opartych o Ethernet
Łukasz Czarniecki
Zespół Bezpieczeństwa PCSS
7
Model referencyjny OSI
FTP, SMTP, HTTP, TELNET
MIME, HTML, JPG
TCP, UDP
IPv4, IPv6, ICMP, IPSEC
Ethernet, Token Ring
UTP, STP
8
Bezpieczeństwo warstwy
fizycznej
• Bezpieczeństwo fizyczne
• Aktualna dokumentacja połączeń i topologii sieci
• Sieci bezprzewodowe (warchalking, wardriving,
stealth wallpaper)
• Światłowody zamiast miedzi
• ,,mrugająca dioda’’
• Kontrola ciągłości i niezawodności pracy
– zagrożenia środowiskowe
– odpowiednie zasilanie
9
Zaniedbywana warstwa łącza
danych
• Większość zabezpieczeń koncentruje się na
warstwie sieciowej: firewall, listy kontroli
dostępu
• Najpopularniejszy Ethernet nie był
projektowany z myślą o bezpieczeństwie
• Sieci (10) Gigabit Ethernet obejmują
swoim zasięgiem coraz większe obszary
(Metro Ethernet)
• Efekt domina
• Ataki z wewnątrz sieci
10
Efekt domina
•
Kompromitacja jednej z niższych warstw OSI
prowadzi do kompromitacji wszystkich
wyższych warstw
•
Możliwe ataki:
– podsłuchiwanie ruchu sieciowego
– DNS spoofing
– Man in the middle
– Możliwe są również ataki na technologie
uważane za bezpieczne (https):
• sslstrip
• TLS renegotiation attack
• NULL certificate prefix
11
Format ramki Ethernet
Length < 1501 oznacza długość ramki
Length > 1535 oznacza typ ramki (np. IP, ARP, 802.1Q)
Max długość 1518 + ewentualny tag
12
Podsłuchiwanie sieci
Ethernet
•
Ethernet 10Base5, 10Base2 – wspólne medium transmisyjne
– kabel koncentryczny
•
Ethernet 10BaseT, (Fast/Gigabit) Ethernet – w środowisku
nieprzełączanym – hub rozsyła ramki przez wszystkie porty
•
10Gigabit Ethernet - może działać już wyłącznie w środowisku
przełączanym
•
W środowisku nieprzełączanym każdy może bezkarnie
podsłuchiwać ruch, wystarczy uruchomić sniffer:
– tcpdump
– wireshark
lub gotowe narzędzia do przechwytywania haseł:
– dsniff
– sniffpass
13
Metody wykrywania
podsłuchujących
•
W normalnym trybie karta sieciowa odbiera wyłącznie ramki
zaadresowane na jej adres MAC ew. broadcast/multicast
•
Aby odebrać ramki zaadresowane na dowolny adres MAC,
należy przestawić kartę w tryb rozwiązły (ang. promiscuous),
•
Test stacji z MAC aa:aa:aa:aa:aa i IP 10.0.0.100:
– wysyłamy np. PING:
• docelowy MAC ustawiamy na adres nieistniejący
w sieci, np. aa:aa:aa:aa:xx
• docelowy adres IP: 10.0.0.100
– jeżeli karta sieciowa działa w trybie promiscuous, to
host odpowie na ping-a, (nie musi to być ping,
wystarczy dowolny otwarty port)
•
Narzędzie: AntiSniff
14
Jak podsłuchać ruch w
środowisku przełączanym?
15
Zasada działania ARP
Odwzorowanie 32-bitowych adresów IP na 48-bitowe adresy fizyczne.
Próba przesłania danych na adres IP 192.168.1.34:
•
Karta sieciowa w komputerze źródłowym wysyła zapytanie ARP
(do wszystkich): kto ma adres IP 192.168.1.34?
•
Karta sieciowa w komputerze docelowym o adresie MAC
00:07:95:03:1A:7E wysyła odpowiedź: Hej to ja!
•
W komputerze nadawcy zostaje do dynamicznej tablicy ARP
dodany wpis: IP 192.168.1.34 -> MAC 00:07:95:03:1A:7E.
•
Również przełącznik uczy się, adresów MAC (pamięć jest
ograniczona) i przyporządkowuje je do poszczególnych portów
•
Wszystkie pakiety z docelowym adresem IP 192.168.1.34 są
przez warstwę łącza danych tłumaczone na ramki z docelowym
adresem MAC 00:07:95:03:1A:7E.
16
ARP cache (host)
C:\>arp -a
Interfejs: 10.2.0.80 --- 0x10003
Adres internetowy
Adres fizyczny
10.2.0.1
00-04-76-11-89-91
10.2.0.3
00-04-75-c2-55-d7
10.2.0.16
00-0c-6e-23-2a-c5
10.2.0.19
00-30-4f-20-e1-d9
10.2.0.28
00-40-f4-31-53-a2
10.2.0.37
00-04-76-22-be-fe
10.2.0.62
00-c0-26-28-93-4a
Typ
dynamiczne
dynamiczne
dynamiczne
dynamiczne
dynamiczne
dynamiczne
dynamiczne
Host, który chce przesłać pakiet IP na adres 10.2.0.1,
enkapsuluje go w ramkę z adresem docelowym z
tablicy ARP
17
ARP cache (przełącznik)
Switch#sh mac-address-table dynamic
Mac Address Table
------------------------------------------Vlan
Mac Address
Type
Ports
------------------------1
0016.d32d.2828
DYNAMIC
Fa0/1
1
001c.c5d7.2c18
DYNAMIC
Fa0/3
1
001e.c21b.aacd
DYNAMIC
Fa0/3
Total Mac Addresses for this criterion: 3
Na podstawie wpisów w tabeli ARP przełącznik „wie”,
przez który port przesłać daną ramkę
18
MAC Flood
•
Atak polega na zalaniu sieci ramkami z losowo generowanymi
adresami MAC
•
Narzędzie: macof
•
Atak jest dość „głośny”, propaguje się na wszystkie switche
19
MAC Flood
• CAM i ARP cache to struktury o skończonej pojemności
• Rozmiar tabeli ARP cache pod Linuksem → 1024 wpisy (to ma tylko
znaczenie w przypadku nieprzełączanego Ethernetu)
• Rozmiar ARP cache w przełącznikach (4, 8, 16k)
• Na przepełnienie wystarczy kilkadziesiąt sekund
• W starszych przełącznikach switch → hub, crash, reboot
• Smart CAM Table:
– nie nadpisuje istniejących wpisów
– stare wpisy są usuwane tylko po upływie czasu time-out
– wpisy dotyczące aktywnych hostów nie zostaną napisane
– tylko ramki z nieznanymi adresami MAC zostaną przesłane przez
wszystkie porty
20
Port Security
• Pozwala ograniczyć liczbę adresów MAC/hostów podłączonych
do jednego portu przełącznika
• W przypadku pojawienia się kolejnych MAC-ów są one
blokowane lub port może zostać wyłączony
Switch#sh port-security
Secure Port
MaxSecureAddr
CurrentAddr
(Count)
(Count)
SecurityViolation
Security Action
(Count)
--------------------------------------------------------------------------Fa0/1
1
1
0
Shutdown
--------------------------------------------------------------------------Total Addresses in System (excluding one mac per port)
: 0
Max Addresses limit in System (excluding one mac per port) : 5120
Switch#
01:44:48: %PM-4-ERR_DISABLE: psecure-violation error detected on Fa0/1, puttinge
01:44:48: %PORT_SECURITY-2-PSECURE_VIOLATION: Security violation occurred, caus.
01:44:49: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/1, chann
01:44:50: %LINK-3-UPDOWN: Interface FastEthernet0/1, changed state to down
21
ARP spoofing (1)
•
Bardziej 'subtelny'
•
Protokół ARP nie zapewnia żadnych mechanizmów
bezpieczeństwa
•
Gratuitous ARP: przy pomocy odpowiedniej ramki możemy
zmienić tablice ARP bez pytania, nawet wszystkim hostom w
VLAN-ie
•
Umożliwia to nam podszywanie się pod dowolnego hosta, np.
bramę, atakujemy całą podsieć
•
Narzędzia: arpspoof, ettercap
22
ARP spoofing (2)
23
Arpspoof
• Jeden z programów pakietu dsniff
• Bardzo prosty w obsłudze
• Pozwala na arp poisoning całego segmentu sieci
24
ARP spoofing - ochrona
•
ARP spoofing można wykryć przy pomocy IDS warstwy 2:
arpwatch
– powiadomienie email/sms do administratora
•
•
Najprostszy sposób -> statyczne wpisy w tablicy MAC (żmudna
administracja, ma to sens w przypadku krytycznych systemów)
ArpON
– zapewnia ochronę przed ARP spoofingiem,
– przyjmuje tylko ARP reply z adresów o które sam pytał,
pamięta powiązania MAC->IP
– musi być zainstalowany na chronionym hoście, co nie
zawsze jest możliwe
•
Podział sieci na VLAN-y: separacja użytkowników i systemów
•
Mechanizmy bezpieczeństwa zaimplementowane w przełączniku
25
ArpWatch
From: [email protected] (Arpwatch localhost)
To: [email protected]
Subject: changed ethernet address (test345) eth1
hostname:
ip address:
interface:
ethernet address:
ethernet vendor:
old ethernet address:
old ethernet vendor:
timestamp:
previous timestamp:
delta:
test345
192.168.54.34
eth1
0:1e:35:c8:19:7b
<unknown>
0:18:f7:fd:e8:e2
<unknown>
Monday, December 7, 2009 15:44:20 +0100
Monday, December 7, 2009 14:11:15 +0100
1 hour
26
Dynamic ARP
Inspection/DHCP Snooping
•
Switch podsłuchuje ruch DHCP (ang. snooping)
•
Tworzy listę powiązań port → MAC → IP
S1# show ip dhcp snooping binding
MacAddress
Lease(sec)
Type
VLAN
Interface
----------------- ------------
----------
-------------
----
--------------
00:02:00:02:00:02 1.1.1.2
4993
dhcp-snooping
1
FastEthernet6/4
•
IpAddress
switch przechwytuje zapytania ARP
– limituje ich liczbę
– stosuje ew. ACL
– sprawdza powiązania w tabeli DHCP snooping
– w przypadku nieprawidłowości port jest wyłączany
– tylko port oznaczony jako „trust” może być podłączony do
27
serwera DHCP
Broadcast Storm
• Ramki z adresem docelowym FF:FF:FF:FF:FF:FF
• Przesyłane przez wszystkie porty przełącznika
• Przetwarzane przez wszystkie hosty w podsieci
• Klasyczny przykład DoS
• Działa w ramach VLAN-u
• Metoda ochrony → Storm Control
– możemy wyznaczyć pasmo dla ramek typu:
broadcast i multicast jako procent całości ruchu
przekazywanego przez port
– w przypadku przekroczenia limitu: SNMP trap lub
shutdown
• Uwaga: ARP również wykorzystuje ramki broadcast
28
Protected ports
•
Najbezpieczniejsze rozwiązanie
•
Uniemożliwia bezpośrednią komunikację pomiędzy
portami/hostami w danym VLAN'ie
•
Możliwa komunikacja wyłącznie przez urządzenie L3, np.
router, firewall
•
Wymagany co najmniej jeden port „unprotected”
•
Pełna kontrola nad ruchem w sieci
•
Nieefektywne wykorzystanie pasma
•
Dodatkowo należy uruchomić blokowanie flood-owania
ramek unicast i multicast z nieznanym przełącznikowi
adresem docelowym (Speak First)
29
Bezpieczeństwo
protokołów warstwy 2
wykorzystywanych
w inteligentnych
przełącznikach
30
Protokoły warstwy 2
wykorzystywane przez
inteligentne przełączniki
• STP → Spanning Tree Protocol
• Trunking (ISL, 802.1q)
• Protokoły Cisco:
–
–
–
–
CDP → Cisco Discovery Protocol
DTP → Dynamic Trunking Protocol
VTP → VLAN Trunking Protocol
HSRP → Hot Standby Router Protocol
31
Protokół STP
• Standard w złożonych sieciach
• Pozwala stworzyć sieć odporną na awarię
• Protokół drzewa rozpinającego, tworzy wolną od
pętli topologię łączącą wszystkie przełączniki
• Ochrona przed pętlami w warstwie 2 jest niezbędna,
ze względu na możliwość wystąpienia:
– Ethernet flood (brak TTL)
– kopii ramek (ramki nie są numerowane)
32
STP: Zasada działania
•
Przez (prawie) każdy z portów przełącznika wysyłane są
ramki BPDU, zawierające: priorytet przełącznika,
identyfikator VLAN-u, adres MAC i koszt łącza
(przepływność)
•
Przełączniki, wymieniając ramki BPDU, wybierają spośród
siebie korzeń (najniższy priorytet, ew. MAC)
•
Od korzenia powstaje drzewo najkrótszych
(najszybszych) ścieżek, redundantne łącza są
blokowane
•
W przypadku zmiany topologii (dodatkowe łącze,
uszkodzenie łącza) przełączniki informują się
wzajemnie przy pomocy bitu TCN o nowej topologii
•
Brak mechanizmów uwierzytelniania
33
STP: Zagrożenia
•
Gdy mamy dostęp do portu z aktywnym STP możemy:
– zostać korzeniem, doprowadzając do
nieefektywnej topologii sieci
– zmieniając swój priorytet/MAC lub wysyłając ramki
z bitem TCN, doprowadzić do ciągłej
rekonfiguracji topologii (pętle, DOS)
•
Gdy mamy dostęp do dwóch portów należących do
różnych przełączników z aktywnym STP, możemy
podsłuchiwać ruch pomiędzy przełącznikami
•
Narzędzia:
– Yersinia
34
STP: podsłuchiwanie ruchu
35
STP: Nieefektywna
topologia sieci
1GB
100MB
1GB
100MB
100MB
100MB
36
STP: jak się bronić
•
Nie możemy wyłączyć STP, bo może to doprowadzić do
wystąpienia pętli
•
Za bezpieczeństwo STP odpowiadają wyłącznie
inteligentne przełączniki
•
Zabezpieczanie STP polega na odpowiedniej konfiguracji
interfejsów
•
Portfast (wszystkie porty klienckie)
•
BPDU guard (przypadku odebrania ramki BPDU port ten
jest wyłączany)
•
Root guard (w przypadku odebrania ramki BPDU z
priorytetem niższym niż obecny korzeń, ramka ta jest
ignorowana)
37
Trunking
•
Umożliwia przesyłanie ramek z różnych podsieci (kanałów
logicznych) w jednym łączu (kanale fizycznym)
•
Ramki są tagowane na połączeniach pomiędzy switchami
na podstawie przynależności do określonego VLAN-u
•
Łącza typu Trunk najczęściej są używane w połączeniach:
– switch ↔ switch
– switch ↔ router
•
Native VLAN → nietagowany
Tag Control Information: priorytet, CFI, VLAN id 38
DTP
• Dynamic Trunking Protocol
– tylko Cisco (na szczęście?:)
– domyślnie włączony
– brak zabezpieczeń
– pozwala na wynegocjowanie łącza typu trunk
(ISL lub 802.1q) na interfejsie
39
VLAN Hopping
• Negocjujemy ze switchem łącze typu trunk
– uzyskujemy dostęp do wszystkich VLAN-ów
skonfigurowanych na przełączniku
– narzędzia: Yersinia
• Double tagging
– podwójna enkapsulacja 802.1q
– umożliwia jednokierunkową komunikację z
VLAN-ami skonfigurowanymi na innym
przełączniku
• Narzędzia: Scappy
40
DTP, VLAN hopping
41
VTP
• Vlan Trunking Protocol
– tylko Cisco (na szczęście?:)
– domyślnie włączony
– działa w VLAN1
– DoS
• Zarządzanie VLAN:
– dodanie
– usunięcie
– zmiana
• Narzędzia
– Yersinia
42
VTP
43
Trunking: zalecenia
• Wyłączamy DTP
• VTP nie da się wyłączyć (!) → ustawiamy tryb
transparent
• Używamy silnych haseł w przypadku konieczności
wykorzystania VTP
• Tworzymy osobny natywny VLAN dla łączy typu
trunk
• Dlaczego separujemy VLAN1:
– służy do zarządzania: telnet, SNMP, SSH
– jest wykorzystywany przez: CDP, VTP, DTP
– jest to dobra praktyka bezpieczeństwa
44
CDP
• Cisco Discovery Protocol
• Tylko w urządzeniach Cisco (na szczęście?:)
• Kiedyś HP miał licencję, teraz używa otwartego LLDP
• Domyślnie aktywny
• Rozsyła informacje m.in. dotyczące:
– typu i modelu urządzenia
– wersji systemu operacyjnego IOS
– nazwy hosta
– domeny VTP, natywnego VLAN-u
– poboru mocy PoE
• Przy pomocy CDP można regulować moc portu PoE
45
CDP: Problemy
• Information disclosure
• DoS (CDP flood)
• Kolejny wektor ataku:
– CVE-2001-1071: Cisco IOS 12.2 and earlier running
Cisco Discovery Protocol (CDP) allows remote
attackers to cause a denial of service (memory
consumption) via a flood of CDP neighbor
announcements.
– CVE-2005-3921: Cross-site scripting (XSS)
vulnerability in Cisco IOS Web Server for IOS
12.0(2a) allows remote attackers to inject arbitrary
web script or HTML by sending the router Cisco
Discovery Protocol (CDP) packets with HTML
payload that an administrator views via the CDP
status pages.
46
Yersinia - DEMO
47
Podsumowanie
Attack within subnet
Broadcast storm
MAC Flooding
DHCP DoS
DHCP rogue
Spanning Tree hijack
ARP table poisoning
IP address spoofing
Private VLANs
Protected Ports,
Ports Speak First
Storm Control
Port Security
DHCP Snooping
BPDU Guard
Dynamic ARP Inspection
Anti-spoofing access lists
IP Source Guard/Snooping
48
Środki zaradcze
• Minimalizacja domen kolizji i rozgłoszeniowych
• Podział sieci na VLAN-y
• System IDS działający w warstwie 2 (arpwatch)
• Warstwa łącza nie została zaprojektowana jako
bezpieczna, dlatego o jej bezpieczeństwie decydują
inteligentne przełączniki wykorzystujące technologie:
– Port security
– Protected ports
– Storm control
– Dynamic ARP inspection
– DHCP/IP snooping
– BPDU (root) guard
– Silne hasła!!!
– Uwierzytelnianie 802.11x
49
Zalecenia
•
Zarządzanie przełącznikiem w bezpieczny sposób: konsola, ssh, listy
dostępu, osobny VLAN dla ruchu zarządzającego
•
Należy zrezygnować z wykorzystywania VLAN1, DTP, VTP
•
Utwórz osobny VLAN dla portów trunk
•
Port security, szczególnie na portach dostępnych dla użytkowników
•
Wyłącz niewykorzystywane porty i przydziel je do nieużywanego
VLAN-u
•
Wyłącz CDP
•
Zaimplementuj mechanizm bezpieczeństwa 802.1X
•
TESTUJ SWOJĄ SIEĆ !!!
•
MONITORUJ SWOJĄ SIEĆ !!!
50
Przykład bezpiecznej
konfiguracji
51
Cisco Catalyst 3550 IOS wersja
12.1(22)EA10b (najnowszy 11.2009)
no service password­encryption
spanning­tree mode pvst
spanning­tree extend system­id
interface FastEthernet0/1
switchport mode dynamic desirable
...
interface Vlan1 no ip address shutdown ! ip classless ip http server
line con 0
line vty 5 15
52
Hardening konfiguracji (1)
Switch(config)#service password encryption
Switch(config)#crypto key generate rsa
Switch(config)#enable secret <haslo>
Switch(config)#line console 0
Switch(config­line)#password <haslo>
Switch(config­line)#login
Switch(config)#line vty 0 15
Switch(config­line)#password <haslo>
Switch(config­line)#login
Switch(config­line)#transport input ssh
Switch(config­line)#transport output ssh
53
Hardening konfiguracji (2)
Switch(config)#no ip http server
Switch(config)#no cdp run
Switch(config)#vtp mode transparent
Swicth(config)#interface range FastEthernet 0/1 ­ 24
Switch(config­if­range)#switchport mode access
Switch(config­if­range)#switchport nonegotiate
Switch(config­if­range)#switchport access vlan 100
Switch(config­if­range)#storm­control broadcast level pps 100 20 (poniżej 20 port przestanie być blokowany)
Switch(config­if­range)#storm­control multicast level pps 100 20
54
Hardening konfiguracji (3)
Switch(config­if­range)#switchport protected
Switch(config­if­range)#switchport block multicast
Switch(config­if­range)#switchport block unicast
Switch(config­if­range)#switchport port­security maximum 1
Switch(config­if­range)#switchport port­security violation shutdown
55
Problemy wyższych
warstw...
56
Problemy warstwy sieci /
transportowej
• Brak możliwości weryfikacji autentyczności
oraz integralności przesyłanych danych
• Transmisja jest narażona na podsłuch
• Atak typu „Man In The Middle”
• Podszywanie się (IP spoofing)
• SYN flood
• Skanowanie portów i adresów
• Ataki na protokoły routingu
• Bezpieczeństwo DNS
57
Środki zaradcze
IPSec/IPv6, VPN
Firewall
Filtrowanie ingress, egress
Transport Layer Security
Technika SYNcookie
Mechanizmy uwierzytelniania w
protokołach routingu
• Port knocking
• Systemy IDS
• IP source guard
•
•
•
•
•
•
58
Źródła wiedzy
•
http://www.yersinia.net/
•
http://www.monkey.org/~dugsong/dsniff/
•
http://ettercap.sourceforge.net/
•
Cisco Security Advisories
•
Hacking Layer 2: Fun with Ethernet Switches by Sean Convery
•
Guide To Harden Cisco IOS Devices
•
Layer 2 Security In-depth by Ido Dubrawsky - zawiera tabelę
funkcjonalności bezpieczeństwa zawartych w różnych przełącznikach
59
Informacje kontaktowe
• PCSS
– WWW: http://www.pcss.pl
– E-mail: [email protected]
• Zespół Bezpieczeństwa PCSS
– WWW: http://security.psnc.pl
– E-mail: [email protected]
– Autor prezentacji: Łukasz Czarniecki
– E-mail: [email protected]
60
Pytania i dyskusja
Dziękuję za uwagę!
61

Podobne dokumenty