Założenia, technologie, tips and tricks do codziennego zastosowania przy zabezpieczaniu aplikacji webowych od strony serwerowej. Analiza ruchu sieciowego w oparciu o narzędzia systemowe celem ułatwienia rozpoznania ewentualnych zagrożeń, monitorowanie usług.
2. Założenia
W każdym sprzęcie, oprogramowaniu czy
postępowaniu ludzkim istnieje
prawdopodobieństwo wystąpienia zagrożenia
Planowanie polityki bezpieczeństwa należy
rozpocząć od czynnika ludzkiego, wyżej jest
sprzęt, oprogramowanie serwerowe,
oprogramowanie środowiskowe – ograniczamy
zaufanie
W zespole powinno się posiadać osobę, która
jest odpowiedzialna za bezpieczeństwo
3. Cele
Dbanie o bezpieczeństwo klienta, jak i firmy
(naszej) :-)
Zapewnienie odpowiedniej jakości usług dla
klienta
Poprawa stosunków biznesowych z klientem –
bezpieczny klient – spokojny klient
Poszerzanie wiedzy na temat zabezpieczeń
oraz rozwiązywanie problemów jeszcze w
zarodku poprzez specjalistyczne szkolenia
4. Identyfikacja
Identyfikacja środowiska pracy – sprzęt,
oprogramowanie serwerowe, oprogramowanie
środowiskowe, dostarczane rozwiązania firm
trzecich
Weryfikacja CVE – Common Vulnerabilities And
Exposures – ogólnodostępna baza zagrożeń
dla w/w środowisk
Aplikowanie aktualizacji bezpieczeństwa
zgodnie z ich przeznaczeniem
Sprawdzanie w miarę na bieżąco czy dany
produkt nie jest w statusie EOL, czy planowane
5. Identyfikacja – sprzęt oraz
oprogramowanie serwerowe
Sprzęt – weryfikacja pod kątem zgłoszonych
problemów bezpieczeństwa – tak… Intel i
zgłoszone luki Meltdown oraz Spectre,
aktualizacje systemowe jak i microcode’u CPU
w BIOS, ostatnie zalecenia odnośnie
wyłączenia SMT na procesorach Xeon jak i
jednostkach konsumenckich np. Core i7
Oprogramowanie serwerowe bazowe –
włączenie powiadamiania o aktualizacjach
krytycznych, wykonywanie aktualizacji
automatycznie, w przypadku systemów z
6. Identyfikacja – sprzęt oraz
oprogramowanie serwerowe
Sprzęt – weryfikacja pod kątem zgłoszonych
problemów bezpieczeństwa – tak… Intel i
zgłoszone luki Meltdown oraz Spectre,
aktualizacje systemowe jak i microcode’u CPU
w BIOS, ostatnie zalecenia odnośnie
wyłączenia SMT na procesorach Xeon jak i
jednostkach konsumenckich np. Core i7
Oprogramowanie serwerowe bazowe –
włączenie powiadamiania o aktualizacjach
krytycznych, wykonywanie aktualizacji
automatycznie, w przypadku systemów z
7.
8. Identyfikacja – Oprogramowanie
firm trzecich, tzw gotowce
Sprawdzanie na bieżąco luk w systemie
bezpieczeństwa oraz ich łatanie
Ocena pod kątem ewentualnych podatności na
atak – SQL Injection
Używanie skanerów do sprawdzenia
frontpage’u pod kątem możliwych ataków
9.
10. Aktualizacje w związku z lukami
bezpieczeństwa
Firmy posiadające ISO/IEC 27001
Administratorów Bezpieczeństwa Informacji
(ABI) narzucają wręcz konieczność
aktualizowania oprogramowania, które jest
podatne na ataki
Na chwilę obecną operatorzy usług
hostingowych nie wymuszali restartów maszyn
wobec sprzętowych luk systemowych
Aktualizacje należy poprzedzać po uprzednim
kontakcie z klientem, jeżeli tylko tyczy się to
aktualizacji krytycznych nie zmieniających nic w
11. Aktualizacje serwerowych systemów
operacyjnych
Należy dostarczać jak najnowsze wersje
oprogramowania, trzymając się dystrybucji o jak
najdłuższym wsparciu technicznym bądź
społeczności np. Ubuntu LTS oraz Debian
Aktualizacje kernela (jądra systemowego)
należy poprzedzać po uprzednim kontakcie z
klientem – wymagany jest restart systemu
operacyjnego
12. HTTPS/SSL/TLS
Jeżeli jest to możliwe – używajmy SSL, z racji
tego iż od dłuższego czasu dostępne są
narzędzia do zarządzania certyfikatami SSL
OpenSource Let’s Encrypt SSL
Unikajmy zawartości nieszyfrowanej w postaci
luźnych odnośników http:// - Mixed Content
Warning
W związku z wygaszanym wsparciem od 2020r
wskazane jest używanie TLS w wersji >= 1.2 –
producenci przeglądarek rezygnują ze wsparcia
dla TLS <= 1.1.
13. Zabezpieczenia serwerowe #1
SSH na innym porcie niż standardowy oraz
wyłączenie logowania poprzez hasła
Jeżeli istnieje możliwość serwery należałoby
spiąć serwisowym VPN
W przypadku użycia IPTABLES – wyłączamy
ruch przychodzący na porty usług innych niż
HTTP/HTTPS/FTP/SMTP, jeżeli jest
konieczność dodania wyjątków – dodajemy
Włączenie TCPFILTER via iptables
Używanie load balancerów – np. Haproxy – w
14. Zabezpieczenia serwerów WWW #1
SSL, jeżeli jest konieczność użycia protokołu
http z konieczności prowadzenia integracji
poprzez wystawione endpointy np. soap via
serwer http, robimy reguły via adres ip z którego
się komunikuje z użyciem wąskiej maski */32
Redirect z HTTP na HTTPS – zawsze włączony
W przypadku ograniczeń hostingowych – warto
użyć zewnętrznego DNS z możliwością SSL out
of the box np. Cloudflare – także możliwość
zabezpieczenia przed DoS
Używanie load balancerów – np. Haproxy –
15. Zabezpieczenia serwerowe #2
Zaprzestać lub wyciąć dostęp do aplikacji typu
WHM, phpMyAdmin z zewnątrz, na zasadzie
weryfikacji ssl klucza prywatnego w
przeglądarce klienta
W przypadku mySQL jak i PGSQL ustawiajmy
nasłuch na localhost bądź w przypadku użycia
serwerów wirtualizacji adres wewnętrznej sieci
serwisowej
16. Zabezpieczenia serwerów WWW i
aplikacji webowych
Rezygnacja z apache2 (http2 wprowadzono
zbyt późno bo z 10.2018r) – tutaj wygrywa
nginx.
W przypadku ataków brute-force warto włączyć
captcha
Przezorny zawsze ubezpieczony – dbajmy o
backupy baz danych oraz konfiguracji
serwerowych, im dalej od głównego serwera
tym lepiej
Tworzenie backupów transakcyjnych bazy
danych – mySQL, pgSQL – w przypadku zmian