Safe Hosting idea ultrabezpiecznego systemu hostingowego
Agenda Wprowadzenie do tematyki Problemy z bezpieczeństwem systemów hostingowych Platforma Safe hosting analiza części składowych: SELinux + Multi Category Security Apache = mpm_itk + mod_selinux PHPSuhosin ograniczenie interpretatora PHP Mechanizm Kontent RO/RW + Panel Admin by SSL Cert :> Firewall aplikacyjny mod_security Firewall bazodanowy GreenSQL Mechanizm bezpiecznego przesyłu danych SCP/SFTP
Agenda Platforma Safe hosting analiza części składowych c.d: Zdalne zarządzanie kontem za pomocą dedykowanego API poprzez protokół SSH Ochrona DOS/DDOS Replikacja bazy danych MySQL Live Migration w przypadku awarii (XEN, ESXi) Przeznaczenie Podsumowanie
Wprowadzenie do tematyki Bezpieczeństwo = proces
Problemy z bezpieczeństwem Typowe błędy implementacyjne wykorzystywane do przeprowadzania ataków na systemy i usługi prowadzące do eskalacji uprawnień: Buffer overflow Stack overflow Heap overflow Format string attack RFI,LFI,RCE,SQL Injection W efekcie w systemie zainstalowane oprogramowanie typu rootkit,backdoor,itd.
Problemy z bezpieczeństwem Has your site ever been hacked?
Problemy z bezpieczeństwem Has your site ever been hacked?
Problemy z bezpieczeństwem Has your site ever been hacked?
Problemy z bezpieczeństwem Has your site ever been hacked?
Problemy z bezpieczeństwem Analiza incydentów
DAC vs. MAC nierówna bitwa Przestarzały model polityki DAC: Ograniczanie dostępu na podstawie właściciela pliku(obiektu) oraz nadanych uprawnień Brak kontroli nad nadawanymi uprawnieniami (setuid, setgid) Brak kontroli nad procesami systemowymi Brak rozliczalności Użytkownik root, który może wszystko:>
DAC vs. MAC nierówna bitwa Niestety za DAC-iem przemawia: Popularność Wszechobecność Prostota zarządzania Rozszerzona funkcjonalność ACL
DAC vs. MAC nierówna bitwa Przykłady problemów z DAC:
DAC vs. MAC nierówna bitwa Przykłady problemów z DAC:
DAC vs. MAC nierówna bitwa Model DAC jest dzisiaj niewystarczającym rozwiązaniem. Nawet zabezpieczenia typu propolice,libsafe,grsecurity są dzisiaj omijane. Bezpieczna infrastruktura potrzebuje czegoś więcej...
DAC vs. MAC nierówna bitwa Bezpieczny model polityki MAC (Mandatory Access Control): Ograniczenie wywołań tylko do konkretnych funkcji systemowych dla danego procesu Pełna kontrola nad procesami systemowymi Ścisłe określenie uprawnień dla użytkowników i usług = przypisanie ról (root już nie jest root-em) Zachowanie rozliczalności, poufności I integralności Zaufana transmisja TCP/IP
Co to SELinux? SELinux projekt autorstwa agencji NSA (No Such Agency :D) implementujący model obowiązkowej kontroli dostępu dla systemu Linux: Domyślnie zaimplementowany w jądrach serii 2.6 (jako LSM) Aktualnie dostępny w dystrybucjach: RHEL, CentOS, Fedora, Gentoo Hardened, Debian Lenny, SLES
Co to SELinux? Koncepcją polityki bezpieczeństwa SELinuxa jest określenie jak najmniejszej ilości uprawnień dla danego obiektu (demona, programu, pliku) potrzebnych do jego prawidłowego funkcjonowania.jest to swego rodzaju firewall aplikacyjny (efekt jaila). Wykorzystywane idee: Flask, MAC, RBAC, MCS, MLS SELinux zapewnia ochronę przed: Błędami typu 0-day (błędami dnia zerowego) Nieautoryzowanym odczytem i modyfikacją danych Eskalacją uprawnień
Architektura SELinuxa
Zasada działania: Architektura SELinuxa
Mechanizm MLS/MCS MultiLevel Security/MultiCategory Security: Możliwość klasyfikacji danych z uwzględnieniem czułości (sensitivity) Nadawanie plikom kategorii przez zwykłych użytkowników Dostęp do danych dla użytkowników z różnymi poziomami dostępu do danych Niskie i wysokie komponenty wysoki zawsze dominuje nad niskim Przykład: kategoria Company_Confidential
mpm_itk Problem: użytkownik 'www-data' posiadający dostęp do kontentu serwowanego przez serwer www mpm_itk to eksperymentalny moduł zarządzający procesami Apache'a mpm_itk pozwala na uruchomienie każdego z vhostów z odseparowanymi uprawnieniami Współpracuje z Apachem 2
mpm_itk - przykład konfiguracji <VirtualHost 87.98.131.205:80> DocumentRoot /var/www/crony ServerName crony.develzone.pl AssignUserID crony crony </VirtualHost> <VirtualHost 87.98.131.205:80> DocumentRoot /var/www/crony2 ServerName crony2.develzone.pl AssignUserID crony2 crony2 </VirtualHost>
mod_selinux Moduł dostępny w Fedorze 11(aktualnie wersja beta) Pozwala na uruchomienie aplikacji webowej z indywidualnym kontekstem bezpieczeństwa Mapuje użytkowników webowych do security contextu mechanizmu SELinux
mod_selinux Analogiczny schemat działania:
mod_selinux <VirtualHost 87.98.131.205:80> DocumentRoot /var/www/crony ServerName crony.develzone.pl selinuxdomainval *:s0:c1 </VirtualHost> <VirtualHost 87.98.131.205:80> DocumentRoot /var/www/crony2 ServerName crony2.develzone.pl selinuxdomainval *:s0:c2 </VirtualHost>
PHPSuhosin Patch zwiększający poziom bezpieczeństwa instalacji PHP Zabezpiecza przed atakami typu: Buffer Overflow Format String Vulnerability Dostępny domyślnie w większości dystrybucji Linux oraz *BSD
PHPSuhosin Możliwości (nie wszystkie :>): Filtrowanie danych wejściowych Szyfrowanie plików sesyjnych cookies Ochrona przed RFI,LFI Ochrona pamięci Blokowanie lub kontrola niebezpiecznych funkcji Kontrola uploadu plików i ich weryfikacja (automatic banning ELF files) Support dla czarnych i białych list Tryb symulacyjny
Kontent RO/RW Mechanizm autorstwa Emerge Systems Zawartość strony www udostępniana przez serwer Apache zamontowana jako 'tylko do odczytu': /dev/loop3 /home/crony/domains/emerge.pl/public_html Uprawnienia do bazy danych również RO:> REVOKE ALL PRIVILEGES ON GRANT SELECT,REFERENCES,INDEX,CREATE TEMPORARY TABLES,LOCK TABLES,CREATE ROUTINE,ALTER ROUTINE,EXECUTE ON
Kontent RO/RW Kontent www jest plikiem lub zasobem iscsi przemontowywanym do trybu RW podczas logowania do panelu administracyjnego Bez uprawnień użytkownika root(uid=0) nie ma możliwości podmiany zawartości strony Bezpieczeństwo pliku binarnego zwiększone przez politykę SELinuxową
Autentykacja SSL Apache wraz z modułem mod_ssl pozwala na korzystanie z protokołu HTTPS Indywidualny certyfikat SSL dla każdego z użytkowników Bez zainstalowanego certyfikatu nie ma możliwości połączenia się z panelem administracyjnym, np. https://safehosting.pl/panel
Autentykacja SSL openssl req -config openssl.cnf -new -nodes -out democa/my-server.csr -keyout democa/my-server.key openssl x509 -in democa/my-server.csr -out democa/my-server.cert -req -signkey democa/my-server.key -days 365 -set_serial 1 openssl x509 -in democa/my-server.cert -out democa/my-server.der.crt -outform DER openssl x509 -req -in democa/clienta.csr -out democa/clienta.pem -CA democa/my-server.cert openssl x509 -req -in democa/clienta.csr -out democa/clienta.pem -CA democa/my-server.cert -CAkey democa/my-server.key -CAcreateserial -days 365 openssl pkcs12 -export -in democa/clienta.pem -out democa/clienta.p12 -inkey democa/clientakey.pem
mod_security Dodatek do serwera Apache zwiększający bezpieczeństwo aplikacji Funkcjonalność firewalla aplikacyjnego: Filtrowanie zapytań (GET, POST, cookies) Analiza zapytań na podstawie złożonych blacklist oraz wyrażeń regularnych i wykonanie akcji (np. Przekierowanie, error, wstrzymanie odpowiedzi na określony czas) Weryfikacja poprawności kodowania i ciasteczek
mod_security Ochrona przed atakami typu: SQL Injection XSS CSRF RFI, LFI, RCE i inne Przykład: SecFilterSelective THE_REQUEST "<[^>]*meta*\"?[^>]*>" "msg:'xss4'" SecFilterSelective THE_REQUEST "\/(etc bin sbin tmp var opt dev)\/" "msg:'latanie po katalogach systemowych' SecFilterSelective THE_REQUEST "insert[[:space:]]+into" "msg:'sql2'"
GreenSQL GreenSQL to firewall bazodanowy pracujący jako reverse proxy współpracujacy z MySQL Funkcjonalność: Filtrowanie zapytań jeszcze przed przekazaniem ich do docelowej bazy Heurystyczna analiza oraz kilka trybów pracy Black and white list support Interfejs www do zarządzania mechanizmem
GreenSQL Schemat działania:
GreenSQL Tryby pracy: Simulation Mode (database IDS) Blocking Suspicious Commands (database IPS) Learning mode
FTP vs SCP/SFTP Protokół FTP jest przestarzały i niebezpieczny! Transmisja odbywa się w formie czystego tekstu (plain text) sniffing:> Wykorzystywanie haseł również jest przestarzałe i niebezpieczne! Najwyższy czas na bezpieczną alternatywę!
FTP vs SCP/SFTP SCP Secure copy SFTP Secure File Transmision Protocol Usługa pochodząca z pakietu Openssh gwarantująca bezpieczeństwo transmisji poprzez: Szyfrowanie wszelkich przesyłanych danych jak i informacji o użytkowniku i haśle Wykorzystanie kluczy: prywatnego i publicznego do logowania się do systemu
FTP vs SCP/SFTP SCP/SFTP gwarantuje ochronę przed: Botami próbującymi logować się na użytkownika root z wykorzystaniem słownika Atakami typu bruteforce Snifferami Dodatki: MySecureShell, scponly Dobrą praktyką jest uruchomienie usługi na niestandardowym porcie, np. 66266
Linux API Shell Projekt autorstwa Emerge Systems Konfigurowalny interfejs do zdalnego zarządzania systemem poprzez protokół SSH Ograniczenie możliwości wykonywania komend systemowych Plik konfiguracyjny zawierający dozwolone metody
Linux API Shell api.conf: [api_methods] get_ifacestatus123 = /sbin/ifconfig -a; /sbin/ifconfig -a get_id = /usr/bin/id get_ifacestatus = /sbin/ifconfig get_storagestatus = df -h [api_methods_args] get_memorystatus222 = 0 get_id = 1
Ochrona DOS/DDOS mod_dosevasive moduł do serwera Apache zapobiegający atakom DOS/DDOS
Ochrona DOS/DDOS Konfiguracja serwera DNS TTL ustawione na 1, aby w szybki sposób odeprzeć atak przeprowadzany na adres IP (jeszcze takowe istnieją ;p)
Przeznaczenie Dla kogo Safe Hosting Platform? Firmy świadczące usługi hostingowe Firmy, dla których strony wizytówkowe są podstawą wizerunkową Agencje rządowe i wojskowe (*.gov.*) Instytucje finansowe Systemy o podwyższonym poziomie ryzyka Ale także dla MSP chcących osiągnąć wysoki poziom bezpieczeństwa witryny www
Podsumowanie Innowacyjne podejście do aspektów bezpieczeństwa systemów hostingowych Należy dbać o bezpieczeństwo danych Klientów, lecz w większości firm hostingowych takowe stwierdzenie NIE ISTNIEJE!
Podsumowanie Dziękuję za uwagę ;)