Pobierz
najnowszy numer

Newsletter

Zapisz się do naszego Newslettera, aby otrzymywać informacje o nowościach z branży!

Jesteś tutaj

Bezpieczeństwo aplikacji biznesowych (cz. 1). Bezpieczeństwo sieci

Printer Friendly and PDF

lead.gifFirmy są dziś coraz bardziej zdane na informatykę i systemy informatyczne. Aplikacje kontrolują finanse, logistykę, wspomagają produkcję, jak również zarządzają skomplikowana aparaturą. Informatyka jest obecna na każdym kroku, jednak z jej używaniem wiąże się również bardzo dużo zagrożeń, o których czasami staramy się zapomnieć, mając na uwadze naglące terminy. Naciski zarządu i inne podobne sytuacje sprawiają, że szybko wdrażane systemy nie są w pełni szczelne. Dlatego, choć realia są czasami trudne, należy zawsze zwracać uwagę na aspekty związane z bezpieczeństwem systemów informatycznych. Czasem przeoczenie tylko jednego punktu bądź aspektu związanego z bezpieczeństwem może być opłakane w skutkach. Każda nowa technologia niesie również za sobą nowe luki bądź błędy i bieżące śledzenie informacji z odpowiednich źródeł (tych złych, jak strony hakerskie, jak również tych dobrych, jak na przykład CERT).

Artykuł ten ma na celu przedstawienie aspektów związanych z bezpieczeństwem aplikacji w następujących obszarach:

  • bezpieczeństwo sieci, w tym bramy aplikacyjne i zapory sieciowe, systemy wykrywania intruzów i metody kryptograficzne;
  • bezpieczeństwo infrastruktury, które dotyczy wysokiej dostępności, jak również wykonywania kopii bezpieczeństwa;
  • bezpieczeństwo systemu operacyjnego i bazy danych, na której działają aplikacje;
  • wewnętrzne mechanizmy zabezpieczające, osadzone już w samych aplikacjach.

Część pierwsza artykułu będzie dotyczyć bezpieczeństwa sieci.

Architektura obecnych aplikacji biznesowych składa się obecnie z warstwy prezentacyjnej (dedykowany klient bądź przeglądarka internetowa) i serwera aplikacyjnego, który jest podłączony do bazy danych. Całość uruchamiana jest na danym systemie operacyjnym i współdzieli swoje usługi poprzez sieć lokalną bądź rozległą. Obecnie wiele takich aplikacji jest również udostępnianych w Internecie. W tym ostatnim przypadku należy zwrócić szczególną uwagę, gdyż do takich systemów dostęp ma teoretycznie każdy.

W dzisiejszych czasach również biznes chciałby mieć kontrolę nad tym, co dzieje się w aplikacjach, a nie tylko działy IT, które ukrywały to dotychczas jako wiedzę „tajemną”. Jednak umożliwienie tego osobom, które nie są zaznajomione z technologiami informatycznymi, wiąże się także z dodatkowym ryzykiem. Z tego powodu zaczynają obecnie powstawać specjalne aplikacje, które, chroniąc zasoby IT, umożliwiają elastyczne zarządzanie nimi przez stronę biznesową. Dlatego też procesy związane z bezpieczeństwem zaczynają być coraz bardziej automatyzowane.

Bezpieczeństwo sieci

Pierwszym zagadnieniem związanym z bezpieczeństwem aplikacji biznesowych jest otoczenie sieciowe, w którym pracują. Bez sieci takie aplikacje byłyby bezużyteczne, gdyż nie mogłyby trafić do użytkownika. Obecnie duża większość sieci oparta jest na protokole TCP/IP (tym samym, na którym pracuje sieć Internet). Dlatego też wszystkie zagrożenia, jak również mechanizmy przechwycenia danych stosowane w Internecie, atakujący może z powodzeniem użyć do ataków wewnątrz sieci firmowej. Jest to o tyle groźne, że większość naruszeń bezpieczeństwa występuje z wnętrza firmy. Dlatego ochrona sieci jest jednym z istotnych zagadnień bezpieczeństwa całej infrastruktury.

Typowe zagrożenia sieciowe i stosowane przeciwko nim zabezpieczenia przedstawiono na rys. 1.

rys1.gif
Rys. 1. Zabezpieczenia kontra luki
 

W bezpieczeństwie sieciowym można rozgraniczyć następujące obszary:

  • separację sieci poprzez odpowiednie firewalle, czyli zapory ogniowe, które filtrują ruch z i do sieci;
  • systemy IDS (Intrusion Detection Systems), czyli systemy, które monitorują cały ruch i wykrywają próby włamania bądź próby zaburzenia działania usług (tzw. DoS – Denial of Service);
  • kryptografię, czyli wykorzystanie kryptologii do zapewnienia integralności danych, poufności w kanałach transmisyjnych, niezaprzeczalności, jak również umożliwienie stosowania podpisu cyfrowego;
  • czynnik ludzki, czyli zapewnienie odpowiedniej edukacji pracownikom, w tym także szkoleń przeciwdziałających skutkom zastosowania tak zwanych technik socjalnych, czyli wyłudzania hasła, uzyskiwania nieuprawnionego, chociaż chronionego dostępu itd.
tab1.gif
Tab. 1. Jak wygląda praca włamywacza
 

Zapora ogniowa (firewall)

Pierwszym elementem, o który należy zadbać we właściwie zabezpieczonej sieci, jest zapora ogniowa, czyli firewall. Można ją stosować do łączenia różnych typów sieci, ich separacji czy tworzenia sieci zdemilitaryzowanych (takich, które łączą zasoby internetowe z zasobami intranetowymi). Firewall może być użyty jako filtr IP, filtrująca brama Proxy albo kombinacja obu tych mechanizmów.

Firewall jako filtr pakietów jest najprostszym mechanizmem i można go traktować jako bramę sieciową, sprawdzającą tylko nagłówek IP. Jest on efektywny kosztowo, bardzo szybki, łatwo konfigurowalny i całkowicie przeźroczysty dla aplikacji. Natomiast z drugiej strony narażony jest na ataki typu IP spoofing (podszywanie się). Trudne może być również utrzymanie reguł filtrowania.

Następny typ firewalla to tak zwany stateful packet filter, czyli zaawansowany filtr pakietów (rys. 2).

rys2.gif
Rys. 2. Działanie filtru pakietów
 

Jest to typowe rozwiązanie firewall. Sprawdza adresy IP, jak również porty i sesje TCP, może także sprawdzać wzorce w przesyłanych danych. Może tworzyć dynamicznie reguły na podstawie wykrytego protokołu (np. DNS, NFS). Zapewnia bardzo dobry i ogólny poziom bezpieczeństwa. Z wad należy wymienić to, że może nie wykryć ataku na aplikację, może sam posiadać błędy, przez które atakujący może przełamać zabezpieczenia.

Najbardziej zaawansowanym typem firewalla jest brama aplikacyjna. Chroni ona już nie tylko poziom sieci, ale również to, co z sieci dociera do aplikacji. Często pakiety są przebudowywane w takiej bramie, a później trafiają do aplikacji. Zapora ogniowa oferuje bardzo wysoki poziom bezpieczeństwa, jednak nie jest przeźroczysta dla aplikacji, a jej konfiguracja jest często skomplikowana. Firewall może zawierać przy tym własne błędy. Jednak, działając jako pośrednik, jest w stanie autoryzować i przeprowadzać wstępną kontrolę tego, „co ktoś może i skąd”, waliduje (zatwierdza) zapytania o usługę (np. sprawdza, czy w zapytaniu nie są użyte frazy, które powodują włamanie do aplikacji), zapewnia integralność i poprawność wiadomości (np. SOAP), możliwe jest także włączenie funkcji audytowych.

System wykrywania intruzów (IDS)

Systemy zapór ogniowych to jednak nie wszystko, dlatego następnym krokiem do zapewnienia bezpieczeństwa sieci jest zastosowanie systemu wykrywania intruzów (IDS), którego celem jest badanie ruchu sieciowego oraz monitorowanie i informowanie o niepożądanych akcjach (rys. 3).

rys3.gif
Rys. 3. System wykrywania intruzów (IDS)
 

System IDS składa się z jednego bądź wielu sieciowych i serwerowych sensorów, jak również z jednego bądź wielu systemów monitorowania i raportowania.

Sensor IDS instalowany na komputerze/serwerze

Sensor IDS instalowany na komputerze monitoruje lokalne zasoby systemu w zakresie zmian bądź nietypowych zachowań, obserwując logi systemowe, procesy systemowe i wykorzystanie zasobów. Uruchamiany w tle wysyła zawiadomienia do konsoli, na przykład wtedy, kiedy pojawiają się niepomyślne logowania.

Zalety:

  • możliwość sprawdzania integralności systemu i danych,
  • możliwość monitorowania szyfrowanej łączności,
  • brak ograniczeń na topologię sieci (przełączalna sieć itp.),
  • interpretacja danych w zależności od platformy.

Wady:

  • możliwość tylko częściowego monitorowania stosu sieciowego,
  • możliwość skompromitowania przez atak na sam system operacyjny bądź na IDS.

Sensory sieciowe IDS

Sensory sieciowe IDS monitorują cały ruch w sieci pomiędzy różnymi systemami, wyszukując specyficzne wzorce, identyfikując znane ataki albo poszukując niestandardowych zachowań. Są uruchamiane na specjalnym sprzęcie (network sniffer) albo integrowane z przełącznikami bądź ruterami – wysyłają komunikaty do konsoli na przykład w przypadku detekcji skanowania portów.
Zalety:

  • są w stanie wykryć ataki na sieć,
  • analizują „czyste” dane przepływające przez sieć,
  • trudno jest je zaatakować bądź wykryć.

Wady:

  • wymagają ciągłego zarządzania sygnaturami,
  • generują dużo zgłoszeń podejrzeń o atak,
  • nie ma możliwości analizowania szyfrowanego ruchu.

Powiązanie działania systemu IDS z firewallem może umożliwić blokadę ruchu atakującego, zanim przejmie on dane bądź wyrządzi szkody.

Kryptografia

Następną metodą zwiększającą bezpieczeństwo sieci jest stosowanie kryptografii. Kryptografia zapewnia bezpieczeństwo w paru obszarach, w zależności od sposobu jej użycia (tab. 2).

tab2.gif
Tab. 2. Sposoby zapewniania bezpieczeństwa sieciowego przez kryptografię
 

Bezpieczeństwo oferowane przez kryptografię może również zostać wykorzystane do ataku – używając połączeń szyfrowanych (np. SSL), atakujący aplikację może ukryć się przed IDS bądź firewallem.

SSL (Secure Socket Layer) jest obecnie najbardziej popularnym protokołem, który służy do szyfrowania kanałów transmisyjnych (nagłówek protokołu i przeznaczenie poszczególnych jego części przedstawiono w tab. 3).

tab3.gif
Tab. 3. Nagłówek protokołu SSL
 

Nawiązanie połączenia w SSL ilustruje rys. 4.

rys4.gif
Rys. 4. Etapy nawiązywania połączenia w SSL
 

Podczas uzgadniania połączenia klient i serwer negocjują, jakiej metody szyfrowania użyją, i wymieniają informację identyfikacyjną.

W komunikacji SSL używane są certyfikaty X.509, które mogą wyglądać tak, jak na rys. 5.

rys4.gif
Rys. 5. Przykładowy certyfikat X.509
 

Certyfikaty X.509 są standardem internetowym dla bezpiecznych połączeń http. Umożliwiają autoryzację i szyfrowanie od strony serwera, jak również klienta. Używają dla ochrony metody symetrycznej, a także asymetrycznej.

Certyfikaty X.509 (zwane też certyfikatami elektronicznymi) mogą być użyte do pojedynczej autoryzacji, jak również w systemach jednokrotnego logowania (ang. Single Sign-On – SSO).

Każdy certyfikat zawiera:

  • nazwę certyfikatu,
  • nazwę centrum autoryzacyjnego (CA),
  • okres ważności,
  • klucz publiczny.

Zastosowanie szyfrowania przez SSL zwiększa jednak obciążenie systemów, gdyż SSL zwiększa standardowy czas odpowiedzi serwera o dwa dodatkowe cykle, wymagane w celu ustanowienia połączenia. Następuje także zwiększenie ilości przesyłanych danych o:

  • SSL handshake,
  • dodatkowy nagłówek używany przez SSL,
  • zaszyfrowane dane.

Obciążenie CPU może być o wiele większe i jest trudne do wstępnego oszacowania (z góry). Mocno zależy ono od scenariusza użycia – krótkie zapytania z różnych źródeł skutkują większym obciążeniem CPU niż określona liczba ustalonych połączeń SSL.

Podsumowując – bezpieczną architekturę sieciową można przedstawić tak, jak na rys. 6.

rys6.gif
Rys. 6. Bezpieczna architektura sieciowa
 

 Aby zwiększyć bezpieczeństwo sieciowe, należy przestrzegać poniższych reguł:

  • używać szyfrowanej komunikacji (np. SSL), kontrolować jakość haseł, reguł i czasu trwania sesji użytkownika, chronić użytkowników systemu operacyjnego, w którym pracuje aplikacja, jak również użytkowników bazy danych, ograniczyć uprawnienia technicznych użytkowników i administratorów do niezbędnego minimum,
  • włączyć audyt i logowanie zdarzeń,
  • uruchomić tylko niezbędne usługi i aplikacje,
  • wgrywać regularnie poprawki i łaty, nie instalować wersji testowych ani demonstracyjnych na systemach produktywnych.

W drugiej części artykułu zostaną poruszone pozostałe zagadnienia związane z bezpieczeństwem aplikacji biznesowych, dotyczące infrastruktury oraz oprogramowania.

Jacek Bugajski
SID Group

Zabezpieczenia 6/2008

Wszelkie prawa zastrzeżone. Kopiowanie tekstów bez zgody redakcji zabronione / Zasady użytkowania strony