PRAKTYKA
Cisco ASA 5505. Podstawy konfiguracji
– część II. Konfiguracja translacji adresów w ścianach ogniowych Cisco ASA W poprzedniej części artykułu (Hakin9 12/2010) poznaliśmy specyfikę pracy ze sprzętem Cisco ASA. Poznaliśmy zasady licencjonowania, tryby konfiguracji administracyjnej i metody zarządzania plikami konfiguracyjnymi. Tym razem będziemy mogli już poznać bardziej przydatne informacje związane z konfiguracją ściany ogniowej. Zajmiemy się bardzo ważną z punktu widzenia bezpieczeństwa - translacją adresów NAT. Dowiesz się: • o wprowadzeniu do konfiguracji ściany ogniowej Cisco ASA • o umiejętności korzystania z poleceń IOS • o podstawach zabezpieczenia sieci lokalnych
Powinieneś wiedzieć: • podstawowa wiedza na temat urządzeń Cisco • posiadać umiejętność pracy z emulatorem terminala
J
ednak szczegóły przedstawię w dalszej części artykułu. W tej chwili zanim jeszcze zaczniemy poznawać NAT, chciałbym wymienić sześć podstawowych poleceń używanych w Cisco ASA. Polecenia te to:
Grzegorz Gałęzowski Kontakt z autorem: gsgalezowski@gmail.com
• nameif, • interface i ip address, które są niezbędne, by ASA zaczęło pracować, • nat, global i route służą do zapewnienia dostępu z zaufanej sieci (interfejsu o wyższym poziomie bezpieczeństwa) do sieci o mniejszym poziomie zaufania (interfejsu o niższym poziomie bezpieczeństwa).
• id_sprzętowy - określa interfejs i jego fizyczną lokalizację w obudowie ściany ogniowej, • nazwa_interfejsu - przydziela nazwę wskazanemu interfejsowi; nazwę tę nadaje użytkownik, • poziom_bezpieczeństwa - wskazuje poziom bezpieczeństwa interfejsu; dostępne poziomy bezpieczeństwa z zakresu od 1 do 99. Polecenie interface
Polecenie nameif
• interface id_sprzętowy prędkość_pracy
• nameif id_sprzętowy nazwa_interfejsu poziom_bezpieczeństwa
Polecenie interface ustala rodzaj sprzętu, ustala prędkość jego pracy i uaktywnia interfejs. Cisco ASA automatycznie wykrywa, nowe karty interfejsów.
Polecenie nameif przydziela nazwę każdemu interfejsowi i kojarzy z nim określony poziom bezpieczeństwa (z wyjątkiem interfejsu wewnętrznego i zewnętrznego, które są już nazwane domyślnie). W domyślnej konfiguracji, Ethernet 0 jest nazwany outside (zewnętrzny) i ma przypisany poziom bezpieczeństwa 0, a Ethernet
38
1 nazywany jest inside (wewnętrzny) i ma przypisany poziom bezpieczeństwa 100.
by HAKIN9
• id_sprzętowy - określa interfejs i jego fizyczną lokalizację w obudowie ściany ogniowej, • prędkość_pracy - ustala prędkość połączenia.
4/2011 (2)
Cisco ASA 5505. Podstawy konfiguracji
Polecenie ip address
Polecenie global
• ip address nazwa_interfejsu adres_IP [maska_IP]
• global (nazwa_interfejsu)nat_id interfejs | globalne_IP [-globalne_IP] [netmask maska_IP]
Każdy interfejs ściany ogniowej ASA musi mieć adres IP. Po skonfigurowaniu adresu i maski sieciowej, poleceniem show ip można sprawdzić przypisanie adresów do interfejsów. • nazwa_interfejsu - opisuje interfejs; nazwę przydziela się za pomocą polecenia nameif, • adres_IP - to adres IP przydzielony interfejsowi, • maska_IP - można wprowadzić samodzielnie maskę, jednak jeśli nie wskażemy sami maski sieciowej, firewall zakłada maskę klasową: Klasa A: 255.0.0.0 Klasa B: 255.255.0.0 Klasa C: 255.255.255.0 Polecenie nat • nat (nazwa_interfejsu)nat_id lokalne_IP [maska_IP] Translacja adresów sieciowych umożliwia utajnienie wewnętrznych adresów IP przed sieciami zewnętrznymi. Jeżeli przyłączamy sieć do Internetu, wtedy polecenie nat pozwala ukryć wewnętrzne adresy IP. Te wewnętrzne, niezarejestrowane adresy IP, które nie muszą być unikatowe poza swoją siecią są dynamicznie tłumaczone na zarejestrowane, globalnie akceptowane adresy IP. Translacja odbywa się w trakcie przechodzenia pakietów do sieci zewnętrznej. Polecenia nat, oprócz przypadku nat 0, zawsze używa się w połączeniu z poleceniem global. • nazwa_interfejsu - opisuje interfejs, który używać będzie adresów globalnych; dane będą wychodzić ze ściany ogniowej przez interfejs wskazany poleceniem global, • nat_id - definiuje globalną pulę adresów, kojarzoną z odpowiednim poleceniem global, • lokalne_IP to adresy IP przydzielone urządzeniom w sieci wewnętrznej. Zapis tego typu 0.0.0.0 umożliwi wszystkim wychodzącym połączeniom translację na adresy IP z puli globalnej. • maska_IP - określa maskę sieciową. Podczas pierwszej konfiguracji ściany ogniowej wszystkim wewnętrznym hostom można umożliwić nawiązywanie połączeń wychodzących przez wydanie polecenia nat 1 0.0.0.0 0.0.0.0. Polecenie to uaktywnia NAT i umożliwia dostęp wszystkim hostom wewnętrznym (0.0.0.0), powiązanym z określonym poleceniem global.
www.securitymag.pl
Podczas wysyłania danych z sieci zaufanej do niezaufanej, adres źródłowy IP jest zwykle tłumaczony. Firewall ASA może przeprowadzić ten proces za pomocą dwóch poleceń. Pierwszym jest nat. Definiuje ono źródłowe adresy, które podlegać będą tłumaczeniu. Natomiast polecenie global służy do określenia adresu/ adresów, na który będzie tłumaczony wskazany zakres adresów źródłowych. • nazwa_interfejsu - opisuje interfejs, który używać będzie adresów globalnych, • nat_id - określa pulę adresów, kojarzoną z odpowiednim poleceniem nat, • globalne_IP – to pojedynczy adres lub początek zakresu adresów globalnych, • -globalne_IP - wskazuje koniec zakresu adresów globalnyc,. • maska_globalna_IP – to maska sieciowa dla globalnego IP. ASA przydziela adresy z globalnej puli, zaczynając od dolnej granicy zakresu adresów wskazanego poleceniem global. Polecenie route Polecenie route określa statyczną trasę dla interfejsu. Może ono wskazywać konkretne przeznaczenie lub tworzyć trasę domyślną. • Route nazwa_interfejsu adres_IP maska_IP IP_bramy [metryka] nazwa_interfejsu - wskazuje nazwę interfejsu zewnętrznego lub wewnętrznego, przez który będą przechodziły pakiety, • adres_IP - określa wewnętrzny lub zewnętrzny adres IP; adres w postaci 0.0.0.0 (lub skrócony do 0) wskazuje trasę domyślną, • maska_IP - określa maską sieciową dla adresu IP; aby wskazać maskę dla trasy domyślnej, należy wpisać 0.0.0.0 lub 0, • IP_bramy - określa adres IP bramy (routera), czyli adres następnego kroku dla tej trasy. Metryka natomiast określa nam ilość kroków dla wskazanej bramy. Teraz po małym przypomnieniu możemy przejść do drugiego tematu, który zamierzam przybliżyć, czyli translacji adresów IP (ukrywanie adresów). Przedstawię różne by HAKIN9
39
PRAKTYKA
rodzaje translacji i jak urządzenie takie, jak ściana ogniowa obsługuje mechanizmy tłumaczenia. Network Address Translation (NAT) Od pewnego czasu jesteśmy straszeni o końcu Internetu spowodowanym kończącą się adresacją IPv4. Zubożenie przestrzeni adresowej zmusiła Internet Community, aby myśleć o sposobach rozwiązywania tego problemu. Zatem NAT, czyli Network Address Translation został stworzony w celu przezwyciężenia i rozwiązania tych problemów, które wystąpiły wraz z bardzo szybkim rozwojem Internetu. Niektóre z zalety stosowania NAT w sieciach: • NAT pomaga ograniczyć globalne zmniejszenie publicznych adresów IP, • sieci mogą korzystać z prywatnej przestrzeni (RFC 1918) adresowanej wewnętrznie, IANA (ang. Internet Assigned Numbers Authority) zarezerwowała następujące trzy bloki adresowe dla prywatnych sieci: 10.0.0.0 – 10.255.255.255 (prefiks 10/8) 172.160.0.0 – 172.31.255.255 (prefiks 172.16/12) 192.168.0.0 – 192.168.255.255 (prefiks 192.168/16) • NAT zwiększa bezpieczeństwo, ukrywając topologię sieci wewnętrznej i adresy hostów. Rysunek 1 przedstawia topologię sieci podzieloną na dwie strefy, wewnętrzną i zewnętrzną. Cisco ASA wykonuje tutaj zadanie tłumaczenia, adresacji sieci wewnętrznej na adres zewnętrzny, ukrywając w ten sposób wewnętrzny zakres adresów IP. Należy zauważyć, że tłumaczenie jest stosowane do "źródła" pakietu adresu IP.
NAT jest używany zawsze dla ruchu wchodzącego, czyli ruchu z sieci wewnętrznej (wyższy poziom bezpieczeństwa) w kierunku na zewnątrz sieci (niższy poziom zabezpieczeń). Na rysunku powyżej, ruch z hosta z adresem 192.168.1.1 przekłada się na publiczny adres routingu 100.1.1.2. Teraz pakiet odpowiedzi z Internetu trafi z powrotem do naszego hosta, i będzie miał docelowy adres IP 100.1.1.2, dla którego to firewall ma już ustanowione zasady tłumaczenia. Zapora przełoży następnie publiczny adres 100.1.1.2 z powrotem do 192.168.1.1 i dostarczy go do hosta w sieci wewnętrznej. Polecenia nat i global działają razem, aby stworzyć tłumaczenie zasad, które pozwolą wewnętrznej sieci do korzystania ze schematu adresowania IP i jednocześnie pozostają ukryte przed światem zewnętrznym. Cisco ASA posiada wsparcie dla dwóch głównych rodzajów translacji: • dynamiczny NAT: używa się go wtedy, gdy zakres adresów lokalnych ma być mapowany na zakres adresów globalnych lub na jeden adres globalny, • statyczny NAT: używa się wtedy, gdy dany host ma otrzymać zawsze ten sam globalny adres IP w sesjach wychodzących, a także wtedy, gdy należy umożliwić dostęp do adresów IP w sieci po stronie interfejsu o niższym poziomie bezpieczeństwa. Teraz nieco praktyki. Zaczynamy od dynamicznej translacji w kilku przykładach. Format poleceń użytych dla dynamicznego NAT znajdują się poniżej: • ciscoasa(config)#nat (nazwa_wewnętrznego_interface’u) “nat-id” “podsiec IP w sieci wewnetrznej” • ciscoasa(config)#global (nazwa_zewnętrznego_interface’u) “nat-id” “Pula zewnętrznego zakresu adresow IP”
Rysunek 1.
40
by HAKIN9
4/2011 (2)
Cisco ASA 5505. Podstawy konfiguracji
Przykład 1: Dynamiczna translacja NAT. • ciscoasa(config)# nat (inside) 1 192.168.1.0 255.255.255.0 – sieć wewnętrzna do translacji • ciscoasa(config)#global (outside) 1 100.1.1.2-100.1.1.50 netmask 255.255.255.0 – pula zewnętrzna. W powyższym przykładzie (Rys. 2) dynamiczny NAT będzie miał zastosowanie do wszystkich hostów z sieci 192.168.1.0/24. Adresy IP ruchu wychodzącego na zewnątrz będą tłumaczone na adresy z zewnętrznej puli
Global od 100.1.1.2 do 100.1.1.50. Proszę zwrócić uwagę na wartość nat-id (1). Element ten wiąże polecenie nat z poleceniem global. Znaczenie tego polecenia będzie wyjaśnione w następnym przykładzie. Należy także zwrócić uwagę na używane w poleceniach nat i global nazwy "inside" i "outside". Te nazwy są przypisane pod konfigurację poleceniem nameif. Przykład 2: Dynamiczny NAT - Translacja dwóch wewnętrznych sieci.
Rysunek 2.
Rysunek 3.
www.securitymag.pl
by HAKIN9
41
PRAKTYKA
• ciscoasa(config)# nat(inside) 1 192.168.1.0 255.255.255.0 – pierwsza wewnętrzna sieć • ciscoasa(config)# nat(inside) 2 192.168.2.0 255.255.255.0 – druga wewnętrzna sieć • ciscoasa(config)# global (outside) 1 100.1.1.2-100.1.1.50 netmask 255.255.255.0 • ciscoasa(config)# global (outside) 2 100.1.1.51100.1.1.100 netmask 255.255.255.0 W tym przykładzie (Rys. 3) możemy poznać znaczenie parametru nat-id i jak jest on wykorzystywany do łączenia poleceń nat i global. • nat-id(1) określa jak ma być przełożona wewnętrzna sieć z adresacją 192.168.1.0/24 do adresów z puli globalnego IP zawierających te same nat-id (np. od 100.1.1.2 do 100.1 .1.50). Podobnie, nat-id(2), tyle że dla adresacji 192.168.2.0/24 i dla puli adresowej zdefiniowanej dla nat-id (2) (tj. od 100.1.1.51 do 100.1.1.100). Przykład 3: Dynamiczny NAT z trzema interfejsami • ciscoasa(config)# nat (inside) 1 192.168.1.0 255.255.255.0 – wewnętrzna podsieć
• ciscoasa(config)# nat (DMZ) 1 172.16.1.0 255.255.255.0 – strefa DMZ • ciscoasa(config)# global (outside) 1 100.1.1.1.100.1.1.254 netmask 255.255.255.0 • ciscoasa(config)# global (DMZ) 1 172.16.1.100172.16.1.254 netmask 255.255.255.0 W tym przykładzie (Rys. 4) zakładamy, że strefa "inside" ma przypisany poziom zabezpieczeń 100. Strefa "DMZ" ma przypisany na interfejsie poziom bezpieczeństwa 50, natomiast "outside" poziom 0. Ponieważ obie mapowane pule (polecenie global) i nat (inside) korzystają z tego samego polecenia nat-id 1, adresy hostów w sieci wewnętrznej (192.168.1.0/24) mogą być tłumaczone w zależności od kierunku ruchu. Monitorowanie translacji NAT • ciscoasa# show xlate – polecenie wyświetla zawartość tabeli translacji NAT, xlate umożliwia obejrzenie i wyczyszczenie zawartości gniazd translacji (xlate); gniazdo translacji jest tworzone w momencie budowania sesji przez firewall i może istnieć, mimo wprowadzania zmian w konfiguracji.
Rysunek 4.
42
by HAKIN9
4/2011 (2)
Cisco ASA 5505. Podstawy konfiguracji
Port Address Translation (PAT) – Translacja portów (PAT) W translacji typu PAT wszystkie adresy lokalne są tłumaczone na jeden adres globalny. Konfiguracja PAT jest podobna do konfiguracji NAT; różnica polega tylko na tym, że polecenie global zawiera pojedynczy adres, zamiast zakresu adresów. Lista istotnych cech dotyczących PAT: • PAT umożliwia wielu różnym sesjom wychodzenie z tego samego adresu IP. W momencie włączenia tej translacji, ASA wybiera różne numery portów dla poszczególnych sesji w ramach xlate (gniazda translacji). Taka możliwość jest bardzo istotna, jeśli ISP nie może przydzielić większej liczby publicznych adresów IP. • Adres używany w PAT nie może należeć do globalnej puli adresów. • Jeśli adres PAT używany jest jednocześnie z pulą globalnych adresów, najpierw są wykorzystywane adresy globalne, a dopiero później adres PAT. Jeśli w międzyczasie zwolni się któryś adres globalny, ponownie wybierany jest najpierw on, a dopiero później adres PAT. Jednoczesne użycie adresów globalnych i PAT polega na przypisaniu poleceniem global tego samego nat_id dla dwóch definicji – puli adresów globalnych i PAT. • PAT nie działa z aplikacjami H.323 i serwerami buforującymi. • Nie należy używać PAT, w przypadku aplikacji multimedialnych, które będą przechodziły przez Cisco ASA – może dojść do konfliktów portów przydzielanych mechanizmem PAT. • PAT nie działa z usługami, takimi jak: DNS, FTP, HTTP, e-mail, RPC, rshell, Telnet, filtrowanie URL i wychodzące traceroute. W przypadku dynamicznego NAT zakładamy, że mamy wiele (puli) adresów publicznych, które stosujemy do tłumaczenia naszych wewnętrznych adresów sieciowych. Przedsiębiorstwa nie otrzymują dużej liczby adresów publicznych od ISP, a liczba wewnętrznych adresów prywatnych jest znacznie większa. Oznacza to, że je-
śli używamy dynamiczny NAT, zewnętrzna pula publicznych adresów będzie bardzo szybko zubożona, gdy wiele hostów z sieci wewnętrznych będzie miało jednoczesny dostęp do Internetu. Aby rozwiązać ten problem, możemy użyć translacji adresów "wiele do jednego", zwany również Port Address Translation (PAT). W przypadku korzystania z PAT, wiele połączeń z różnych hostów wewnętrznych, może być multipleksowane przez jeden globalny (publiczny) adres IP za pomocą różnych numerów portów źródłowych. Zobaczmy to na przykładzie poniżej (Rys. 5): • ciscoasa(config)# nat(inside) 1 192.168.1.0 255.255.255.0 – wewnętrzna podsieć do korzystania z PAT • ciscoasa(config)# global(outside) 1 100.1.1.2 netmask 255.255.255.255 – należy użyć jednego globalnego adresu IP dla PAT W tym przykładzie, wszystkie wewnętrzne adresy prywatne (192.168.1.0/24) będą korzystać z jednego publicznego adresu IP 100.1.1.2, przy różnych numerach portów źródłowych. Oznacza to, że kiedy host 192.168.1.1 łączy się na zewnątrz, firewall tłumaczy jego adres źródłowy i port na adres 100.1.1.2 i port 1024. Podobnie, host 192.168.1.2 zostanie przetłumaczony na adres 100.1.1.2, ale z innym portem źródłowym (1025). Porty są dynamicznie zmieniane na unikalne numery większe niż 1023. Jeden adres PAT obsługuje około 64.000 wewnętrznych komputerów. Monitorowanie translacji PAT • ciscoasa# show xlate - polecenie wyświetla zawartość tabeli translacji PAT PAT np. Global
100.1.1.2 (1024) Local 192.168.1.1 (4513)
Przykład powyżej pokazuje, że połączenie z prywatnym adresem 192.168.1.1 z lokalnych portów źródłowych
Rysunek 5.
www.securitymag.pl
by HAKIN9
43
PRAKTYKA
4513 przekłada się na adres 100.1.1.2 z portu źródłowego 1024. Zapora śledzi wszystkie sesje NAT, wykorzystując tabelę XLATE tak, że gdy pakiet odpowiedzi wraca z zewnątrz, firewall sprawdza swoją tabelę tłumaczeń, aby zobaczyć numer portu, który należy do pakietu odpowiedzi w celu dostarczenia jej do właściwego hosta wewnętrznego. Istnieje kilka różnych scenariuszy, w których PAT może być używany w sieci. Przykład 1 Poniższy przykład zakłada sytuację w której, nasz firewall uzyskuje dynamicznie publiczny adres IP od dostawcy usług internetowych (ISP), w tym przypadku nie znamy dokładnego adresu, aby skonfigurować go na polecenie global. Przykład konfiguracji. Strefa zewnętrzna wykorzystuje przydzielanie adresów przez serwer DHCP dla translacji PAT (Rys. 6). • ciscoasa(config)# interface G0/0 • ciscoasa(config-if)#ip address dhcp setroute – adres od dostawcy przydzielany dynamicznie przez serwer DHCP, • ciscoasa(config)# nat (inside) 1 192.168.1.0 255.255.255.0 – wewnętrzna podsieć do korzystania z PAT, • ciscoasa(config)# global(outside) 1 interface – wykorzystanie zewnętrznych adresów dla PAT.
Polecenie "ip address dhcp setroute" konfiguruje nam firewall jako klienta DHCP i pozwala uzyskać publiczny adres automatycznie od naszego ISP. Parametr "setroute" informuje urządzenie, o tym aby ustawić jego domyślną trasę, używając wartości domyślnej bramy, która przekazywane jest przez serwer DHCP. Należy pamiętać o tym by nie konfigurować trasy domyślnej podczas korzystania z opcji setroute. Przykład 2: Mapowanie różnych wewnętrznych podsieci dla różnych adresów PAT Korzystając z parametru z nat-id możemy powiązać dwie lub więcej par nat/global w celu skorzystania z różnych podsieci sieci wewnętrznych dla różnych adresów PAT. Tak, jak pokazano na rysunku 7: • ciscoasa(config)# nat(inside) 1 192.168.1.0 255.255.255.0 • ciscoasa(config)#global (outside) 1 100.1.1.1 netmask 255.255.255.255 • ciscoasa(config)# nat (inside) 2 192.168.2.0 255.255.255.0 • ciscoasa(config)# global (outside) 2 100.1.1.2 netmask 255.255.255.255 Połączenia wychodzące z podsieci 192.168.1.0/24 będą wyglądały tak, jakby pochodziły z adresu 100.1.1.1 i to samo w przypadku podsieci 192.168.2.0/24, która będzie wyglądała jakby pochodziła z adresu 100.1.1.2. Statyczny NAT (Static NAT) Poznaliśmy dwa rodzaje tłumaczenia, (dynamiczny NAT
Rysunek 6.
44
by HAKIN9
4/2011 (2)
Cisco ASA 5505. Podstawy konfiguracji
Tabela 1.
Parametr/opcja static
Opis
nazwa_interfejsu_wewnętrznego
Nazwa interfejsu wewnętrznego. Interfejs o wyższym poziomie bezpieczeństwa.
nazwa_interfejsu_zewnętrznego
Nazwa interfejsu zewnętrznego. Interfejs o niższym poziomie bezpieczeństwa.
globalny_IP
Globalny adres IP. Adres nie może być adresem translacji typu PAT (translacji portów). Adres IP po stronie interfejsu o niższym poziomie bezpieczeństwa.
lokalny_IP
Lokalny adres IP z sieci wewnętrznej. Adres IP w sieci po stronie interfejsu o wyższym poziomie bezpieczeństwa.
maska_połączeń
Maska odnosząca się zarówno do adresu globalny_IP, jak i do lokalny_IP. Dla adresów hostów zawsze należy stosować maskę 255.255.255.255, natomiast dla adresów sieciowych, odpowiedniej maski sieci lub podsieci. Na przykład, dla klasy A 255.0.0.0.
i PAT) służą one do komunikacji wychodzącej (z wyższego poziomu zabezpieczeń na niższy poziom). Jednakże, jeśli chcemy zainicjować połączenie z hostem znajdującym się w internecie i hostem w sieci lokalnej znajdującym się za ścianą ogniową, to musimy skorzystać z czegoś innego niż z dynamicznego NAT lub PAT. W tym celu musimy skorzystać ze statycznego NAT, a także skonfigurować odpowiednie listy kontroli dostępu (ACL). Najważniejsze powody dla których należy korzystać ze statycznego NAT: • gdy posiadamy wewnętrzny serwer (np. www lub poczty), który zawsze musi być dostępny ze stałym publicznym adresem IP na zewnętrznym interfejsie zapory, • chcemy, umożliwić hostom z zewnątrz (np. internetu) zainicjować połączenia do lokalnego serwera (np. naszej strony www lub serwera pocztowego), • chcemy skorzystać z przekierowywania portów.
Składnia polecenia dla statycznego NAT: ciscoasa(config)# static [(nazwa_interfejsu_wewnętrznego, nazwa interfejsu_zewnętrznego)] globalny_IP lokalny_IP [netmask maska_IP]
Przykład 1: Statyczny NAT dla serwera WWW i serwera poczty elektronicznej w strefie DMZ. Topologia sieci powyżej (Rys. 8) to klasyczny przykład występujący w wielu przedsiębiorstwach. W tym scenariuszu statyczny NAT musi być stosowany dla serwerów DMZ, aby ich prawdziwe prywatne adresy IP były zawsze przetłumaczone na stały publiczny adres IP (10.0.0.1 <> 100.1.1.1 i 100.0.0.2 <> 10.1.1.2). W naszym scenariuszu mamy następujące elementy: • nazwa interfejsu: DMZ, • mapowana nazwa interfejsu: Outside,
Rysunek 7.
www.securitymag.pl
by HAKIN9
45
PRAKTYKA
• adresy IP: 10.0.0.1 i 10.0.0.2, • mapowane adresy IP: 100.1.1.1 i 100.1.1.2. Zobaczmy zrzut konfiguracji poniżej: • ciscoasa(config)# static (DMZ, outside) 100.1.1.1 10.0.0.1 netmask 255.255.255.255 • ciscoasa(config)# static (DMZ, outside) 100.1.1.2 10.0.0.2 netmask 255.255.255.255 Powyższe stwierdzenia pozwalają na dwukierunkową komunikację dla sieci i serwerów poczty elektronicznej.
Wszyscy łączący się przez Internet mogą uzyskać dostęp do naszych stron internetowych i serwerów poczty elektronicznej za pośrednictwem publicznych adresów 100.1.1.1 i 100.1.1.2. Oczywiście ACL jest nadal potrzebna na zewnętrznym interfejsie by w ogóle umożliwić komunikację. Przykład 2: Statyczny NAT dla całego szeregu sieci (Net Static) Zamiast na stałe tłumaczyć pojedyncze adresy hostów, możemy utworzyć stałe mapowanie adresów do całej podsieci. Odnosząc się do poprzedniego sche-
Rysunek 8.
Rysunek 9.
46
by HAKIN9
4/2011 (2)
Cisco ASA 5505. Podstawy konfiguracji
matu, zakładamy, że mamy całą klasę C publicznych adresów100.1.1.0/24. Możemy przetłumaczyć strefę DMZ 10.0.0.0/24 do 100.1.1.0/24. • Ciscoasa(config)# static (DMZ, outside) 100.1.1.0 10.0.0.0 netmask 255.255.255.0 Wszystkie pakiety pochodzą z serwera na adres podsieci 10.0.0.0/24 w DMZ będą tłumaczone na adres hosta w podsieci 100.1.1.0/24 na zewnątrz interfejsu (np. host 10.0.0.20 będzie tłumaczony na 100.1.1.20). Przykład 3: Statyczna translacja adresów portów (przekierowanie portów). Załóżmy, że mamy tylko jeden dostępny publiczny adres IP np. 100.1.1.1, ale mamy dwa (lub więcej) serwerów, którym musimy zapewnić publiczny dostęp do Internetu. Wiemy, że nasze serwery nasłuchują na porcie 80 i 25. Cały ruch przychodzący na adres 100.1.1.1 na port 80 może zostać przekierowany przez zaporę na adres 10.0.0.1 i port 80 danego serwera. To samo tyczy się całego ruchu przychodzącego na adres 100.1.1.1 i port 25, który zostanie przekierowany na port 25 i adres 10.0.0.2 innego serwera. Polecenie do przekierowania portów:
• Ciscoasa(config)# static (DMZ, outside) tcp 100.1.1.1 80 10.0.0.1 80 netmask 255.255.255.255 • Ciscoasa(config)# static (DMZ, outside) tcp 100.1.1.1 25 10.0.0.2 25 netmask 255.255.255.255 Teraz zastanówmy się jak zrealizować sytuację, w której mamy dwa lub więcej serwerów www, nasłuchujących na porcie 80? W takiej sytuacji możemy skorzystać z funkcji przekierowania portów, aby przetłumaczyć dobrze znany port na jakiś port mniej znany lub vice-versa. Przyczyni się to do zwiększenia bezpieczeństwa. Na przykład, można nakazać, użytkownikom Internetu, aby połączyli się z jakimś mniej znanym portem, np. 5065, a następnie można przekierować to do właściwego portu 80 w sieci lokalnej.
• ciscoasa(config)# static (real_interface_name, mapped_interface_name) [tcp|udp] “mapped_IP” “mapped_ port” “real_IP” “real_port” netmask “subnet_mask”
Identity NAT (NAT 0) Warto wspomnieć o jeszcze jednym mechanizmie NAT o nazwie Identity NAT (lub nat 0). Jeśli mamy włączone na zaporze nat-control, obowiązkowe jest, aby wszystkie pakiety były zgodne z regułami tłumaczenia (nat/global lub statyczne reguły NAT). Jeśli chcemy mieć dostęp do danego miejsca i ruch ma przechodzić przez firewall, bez tłumaczenia, to musimy użyć polecenia nat 0 (Rys. 10). W naszej sieci DMZ jest przypisany publiczny zakres adresów IP 100.1.1.0/24. Serwery znajdują się w strefie DMZ, a nie na publicznych adresach IP. Nie ma tutaj potrzeby tłumaczenia dla DMZ prawdziwych adresów IP mapowanych do adresów globalnych.
Niezbędne polecenia do realizacji przykładu przedstawionego na rysunku 9:
• Ciscoasa(config)# nat (DMZ) 0 100.1.1.0 255.255.255.0 Grzegorz Gałęzowski
Rysunek 10.
www.securitymag.pl
by HAKIN9
47