make it fresh

Odkrywaj z nami nową rzeczywistość.

13.12.17

Bezpieczeństwo w cenie

Bezpieczeństwo w cenie

W dzisiejszych czasach ciężko wyobrazić sobie jakikolwiek biznes bez udziału technologii informacyjnych. Wybór dostawcy usług IT zwykle odbywa się na podstawie wieloetapowych konkursów, czy przetargów, lub solidnej weryfikacji oferenta. Z założenia słusznie. O ile największe firmy wyciągnęły przekładające się na ich działania wnioski, to średnie i małe przedsiębiorstwa wciąż zbyt często wybierają kryterium najniższej ceny. „Przecież firma x zrobi to samo za mniej pieniędzy”… ale czy zrobi to tak samo? Rzadko kiedy pada pytanie „Dlaczego tak tanio?”.

Od cze­go za­le­ży bez­pie­czeń­stwo apli­ka­cji?

Naprawa błędów lub negatywnych skutków działania nierzetelnie wdrożonej aplikacji często kosztuje o wiele więcej, niż różnica wynikająca z konkurujących ofert. W ciągu 15 lat działania na rynku IT przebrnęliśmy przez setki zapytań ofertowych i tylko w nielicznych padło wymaganie dotyczące zabezpieczenia tzw. podatności na ataki. Ciężko stwierdzić, czy klienci nie są świadomi zagrożeń, czy uważają zabezpieczenia za sprawę oczywistą. Wydaje się, że najpierw występuje to pierwsze, a po ataku to drugie. Jako firma chętnie podejmujemy rolę przewodnika i angażujemy się w edukację klienta. Rzetelne zabezpieczenie aplikacji przed wszelkimi atakami wymaga szeregu działań, które mogą wygenerować odczuwalny koszt. Tym bardziej, nawet w mniejszej skali, warto przy wyborze oferenta kierować się doświadczeniem programistów pracujących nad projektem, by koszt ten był optymalny i w pełni uzasadniony.

Doświadczenie jako wartość dodana

Doświadczony programista ma dobre nawyki, które z punktu widzenia klienta stanowią wartość dodaną. Przemyśli sposób implementacji, zlokalizuje potencjalne „dziury”, zaplanuje strategię zabezpieczenia. Generalnie wie, na co zwrócić uwagę. W każdej aplikacji występują newralgiczne punkty narażone na atak, a klient nie musi wiedzieć jak je zabezpieczyć. Dobrze jednak, aby był świadomy ich istnienia. W przypadku aplikacji webowych często spotykamy się z funkcjonalnością pozwalającą użytkownikom wgrywać pliki na serwer (tzw. upload), czego przykładem może być załącznik dodawany do formularza lub choćby możliwość wyboru zdjęcia profilowego z dysku użytkownika. Jeżeli procedura nie zostanie odpowiednio przemyślana i zabezpieczona, może zostać wykorzystana do ataku RCE (Remote Code Execution). Przy wystąpieniu kilku sprzyjających warunków atakujący może sprawić, by aplikacja realizowała cele drastycznie różne od zamierzonych.  Przykładowo, można w ten sposób zamieniać serwer klienta w maszynę do wysyłania spamu, pozwolić na bezpośredni dostęp do plików aplikacji lub informacji pozwalających na innego typu ataki. Wszystko to może wydarzyć się w sposób niewidoczny dla właściciela rozwiązania.

Jeśli aplikacja zakłada, że dane podawane przez użytkownika w formularzu są wykorzystywane do dynamicznego konstruowania zapytań SQL do bazy danych, to może istnieć możliwość, że osoba przeprowadzająca atak w świadomy sposób zmodyfikuje zamierzoną logikę zapytania i zmieni sposób działania aplikacji. Mamy wtedy do czynienia z typowym atakiem SQL Injection. Pozwala to, na przykład w przypadku sklepu internetowego, pobrać z bazy danych informacje o klientach, usunąć informacje o zamówieniach lub zalogować się do panelu administracyjnego bez znajomości hasła. Często jeden typ ataku jest przeprowadzony w celu umożliwienia innego, zasadniczego z punktu widzenia atakującego. Jeśli atakujący uzyskałby dostęp do naszej bazy danych dzięki atakowi SQL Injection, to sposób przechowywania haseł klientów zaimplementowany przez programistę może uchronić biznes przed ich wyciekiem.

Dobrze jest zapamiętać hasła poprzez wykorzystanie funkcji jednokierunkowych. Jest to tzw. haszowanie haseł – proces, który na podstawie podanego łańcucha znaków generuje inny łańcuch - tzw. hasz. Z założenia powinien być to proces nieodwracalny, tzn. poznanie hasza nie powinno pozwalać na odtworzenie łańcucha, na podstawie którego został stworzony (czyli w naszym przypadku hasła). Przy logowaniu użytkownika wylicza się hasz z podanego hasła i porównuje go z haszem zapamiętanym w aplikacji. Jeśli użytkownik nie pamięta hasła, nie ma sposobu na jego odtworzenie, można jedynie utworzyć nowe.

Mimo, że nie da się tego zrobić algorytmicznie, w internecie dostępne są bazy danych, które oprócz haszy mają zapisane oryginalne łańcuchy - są to tzw. tablice tęczowe. Wykorzystanie tego typu tablic może znacząco skrócić czas potrzebny na „złamanie” hasza. Zatem coś, co metodą ataku siłowego byłoby bardzo czasochłonne, osiągamy prawie natychmiast (oczywiście pod warunkiem, że szukany hasz znajduje się w tablicy tęczowej). Z pomocą w tej sytuacji przychodzi tzw. „solenie” hasza. Sól to kolejny łańcuch znaków zwykle generowany losowo, który jest dołączany do hasła przed wygenerowaniem hasza. Sól może być zapamiętana w tym samym miejscu co hasz w sposób jawny, a jej kradzież wraz z haszem nie pomoże atakującemu w ataku. Dzięki tej metodzie szansa na użycie tablic tęczowych znacząco maleje.

Jest to przykład postępowania, które mimo pozornej złożoności, jest po prostu skuteczne. Czy dostaniemy tego typu zabezpieczenia „w cenie”? To już często jest kwestia przypadku.

Hosting (czyli administrator) też ma znaczenie

Z biznesem dobrze rozmawia się o projektach graficznych, o funkcjonalnościach lub UX. Te tematy ciekawią i są przyjemniejsze, kwestia hostingu budzi konsternację i zwykle klientowi jest „wszystko jedno”. Z jego punktu widzenia ważne jest, żeby dana aplikacja po prostu pojawiła się w internecie.

Jakiś czas temu zgłosiła się do nas firma, której witryna padła ofiarą ataku. W efekcie wyświetlała treści pornograficzne. Było to spowodowane brakiem odpowiednich zabezpieczeń hostingu. Ostatecznie strona musiała powstać zupełnie od nowa, co kosztowało dodatkowe pieniądze, ale co gorsze, również czas. Klient był tuż przed dużymi targami i niestety nie zdążył przygotować przed nimi nowej strony internetowej. Te problemy były i tak niczym w porównaniu z nadszarpniętym wizerunkiem i niemożnością korzystania z ważnego kanału sprzedażowego przez dłuższy czas.

Ciężko zabezpieczyć się przed każdym rodzajem ataku, ale warto wiedzieć jak zmniejszyć prawdopodobieństwo jego wystąpienia. O hostingu, w kontekście bezpieczeństwa, można napisać wiele. Takie czynniki jak fizyczna lokalizacja serwerów, izolacja usług klientów, doświadczenie i praktyki stosowane przez administratorów, mają bezpośrednie przełożenie na bezpieczeństwo danych. Istotne są fizyczne zabezpieczenia infrastruktury serwerowej i sieciowej. Ważne jest również, w jakim kraju serwery są zlokalizowane i – co z tego wynika – jakie są aspekty prawne ochrony danych w tym regionie. Ze względu na szybkość ładowania aplikacji, jak i kwestie prawne, najlepszą lokalizacją dla przedsiębiorców z Polski jest właśnie Polska. Niemniej istotnym aspektem jest wybór rodzaju usługi hostingowej.

O tym, jak to zrobić, pisaliśmy w naszej serii artykułów:

Kolejnym czynnikiem, który wpływa na bezpieczeństwo danych i stabilne działanie aplikacji jest zarządzanie infrastrukturą przez doświadczonych administratorów. Jednym z ich zadań jest przeciwdziałanie różnego rodzaju zagrożeniom, które mogą zdestabilizować działanie aplikacji klienta, bądź doprowadzić do uszkodzenia danych. Podstawowym zagrożeniem z zewnątrz dla działania aplikacji są wszelkiego typu ataki hakerskie. Najczęściej spotykanym jest atak DoS/DDoS, tj. wygenerowanie bardzo dużego ruchu sieciowego, którego obsłużenie przez serwer docelowy uniemożliwi obsługę połączeń od właściwych użytkowników. Dzięki szybkiej reakcji administratorów udało nam się w przeszłości skutecznie walczyć z podobnymi atakami.

Podstawowym narzędziem do walki z niepożądanym ruchem jest na przykład firewall. Umiejętne jego skonfigurowanie jest w stanie znacznie utrudnić ataki na aplikację.

Równie istotne jak przeciwdziałanie atakom jest bieżące i aktywne zabezpieczanie serwerów. Oprogramowanie serwerowe zmienia się bardzo szybko, dlatego istotne jest, aby infrastruktura była zarządzana przez doświadczonych administratorów, którzy równie szybko będą w stanie zareagować i wdrożyć niezbędne poprawki czy łaty na dziury bezpieczeństwa. Zwlekanie w tym zakresie może doprowadzić do wykorzystania nowo odkrytej dziury do przechwycenia danych klientów. Śledzenie prasy branżowej w poszukiwaniu podobnych zagrożeń wymaga czasu i odpowiedniego doświadczenia, które pomaga odróżnić poważne problemy od mniej istotnych.

Niejednokrotnie byliśmy zderzani z sytuacjami, w których hasło do konta pocztowego klienta zostało przejęte. Z reguły takie konta są później wykorzystywane do wysyłania spamu. Natomiast jeśli atak jest skierowany pod konkretną aplikację, skutki takiego działania mogą być znacznie poważniejsze. Po wykryciu wycieku z reguły wystarczy zmienić hasła dostępowe do wszystkich systemów, jednak przy większych aplikacjach tych miejsc może być na tyle dużo, że zmiana w krótkim czasie nie będzie możliwa. Aby temu zapobiec, możliwe jest wykorzystanie mechanizmu centralnego zarządzania autoryzacją. W naszej firmie wdrożyliśmy taki mechanizm za pomocą serwera LDAP. Dzięki temu zmiana w jednym miejscu powoduje natychmiastową aktualizację haseł we wszystkich powiązanych systemach i odcina możliwość dostępu do danych przez osoby do tego nieuprawnione.

W aplikacjach internetowych dostęp do danych wrażliwych może być również chroniony poprzez zestawienie tuneli VPN między serwerem, a klientem. W ten sposób dane poufne można przesyłać przez publiczne łącza w postaci zaszyfrowanej, co znacznie utrudni ich przechwycenie. Proponujemy takie rozwiązanie klientom, którzy wymagają ciągłego przysyłania danych wrażliwych między serwerem a np. biurem i jednocześnie chcą zachować odpowiednie bezpieczeństwo ich przetwarzania. Na bezpieczeństwo danych wpływa również monitoring usług. Poprzez dobrą konfigurację systemu monitoringu można wykryć problemy z działaniem aplikacji, a także niektóre próby ataków. Gdy wszelkie powyższe metody zawiodą, ostatnią deską ratunku jest system backupowy. Dzięki wykonywaniu regularnych backupów można odzyskać dane utracone w wyniku ataku, czy też błędu użytkownika aplikacji. Dobrze zaprojektowany system backupowy może zoptymalizować przestrzeń dyskową przeznaczoną do przechowania jak największej liczby kopii zapasowych serwisu www lub innej aplikacji. Jednym z parametrów wykonywania backupów, równie istotnym co ilość, jest miejsce ich przechowywania. Posiadanie dedykowanego systemu backupowego pozwala przeznaczyć osobny serwer lub macierz na przechowywanie takich danych. Dzięki dedykowanej infrastrukturze na backup, można zabezpieczyć się na okoliczność awarii dysków w serwerach aplikacji.

Świadomość klienta w kwestii ilości aspektów, z którymi zmierzy się wybrana przez niego do współpracy firma IT, na pewno pomoże w dokonaniu najlepszego wyboru. Ułatwi także komunikację na temat realnego zakresu prac i rozmowy dotyczące wzajemnych oczekiwań. Tak w przypadku biznesu, jak i dostawcy usług, kluczem do sukcesu jest doświadczenie. Skorzystaj z pomocy naszych specjalistów.