Podnoszenie poziomu bezpieczeństwa instalacji i baz danych Oracle Krzysztof Mikołajczyk Bull Polska email: krzysztof.mikolajczyk@bull.com.pl
Page 2 Agenda System operacyjny Środowisko bazy danych Alerty i uaktualnienia Instalacja Użytkownicy i profile bazy danych Przywileje Proces nasłuchu LISTENER Źródła informacji
Page 3 Dostęp do serwera Dostęp do serwera Dostęp do nośników danych kopie bezpieczeństwa eksporty z bazy danych raporty z bazy danych dane typu off-line
Page 4 System operacyjny Zabezpieczenie dostępu do systemu operacyjnego konta dostępowe bezpieczeństwo haseł Konta administracyjne podział zadań współdzielenie kont Uaktualnianie systemu wykonanie kopii bezpieczeństwa wgrywanie poprawek - test
Page 5 Konta administratorów Administrator systemu konto administracyjne konto własne Administrator baz danych administrator systemu i baz danych różni administratorzy administratorzy różnych baz danych
Page 6 Porty TCP i UDP Lista usług TCP nieużywane usługi nieuruchomione nieużywane porty zamknięte Lista usług UDP nieużywane usługi nieuruchomione nieużywane porty zamknięte Weryfikacja procesów i usług w systemie
Page 7 Weryfikacja procesów i usług w systemie netstat ps lista (Windows)
Page 8 Pliki z rozszerzonymi uprawnieniami Lista plików z rozszerzonymi uprawnieniami (ustawiony bit suid) # find / -perm -4000 -exec ls -l {} \; Okresowa weryfikacja powyższej listy Weryfikacja plików, których właścicielem jest root # find / -perm -4000 -user root -exec ls -l {} \;
Page 9 Uaktualnianie systemu Ponowne sprawdzenie listy plików po: uaktualnieniu systemu doinstalowaniu elementów systemu zainstalowaniu dodatkowych aplikacji Weryfikacja konieczności rozszerzonych uprawnień
Page 10 Katalogi Oracle - dump Domyślna maska - umask - 022 Katalogi dump Oracla SQL> show parameter dump_dest NAME TYPE VALUE -------------------------- -------- ----------------------------- background_dump_dest string oracle/9/admin/ora9/bdump core_dump_dest string oracle/9/admin/ora9/cdump user_dump_dest string oracle/9/admin/ora9/udump
Page 11 Dostęp z sieci Zastosowanie zapory ogniowej Sieci prywatne VPN Odseparowanie ruchu Szyfrowanie Oracle Advanced Security Option Single Sign-On
Page 12 Środowisko bazy danych Typy bazy danych produkcyjna bieżąca produkcja testowa do testów nowych wersji oprogramowania, weryfikacji różnych procedur, testów wydajnościowych do developmentu do tworzenia nowych wersji oprogramowania
Page 13 Środowisko bazy danych Odrębne serwery Odrębne instalacje (różne ORACLE_HOME) Odrębne bazy - grupy administratorów (różne ORACLE_SID) Odrębne schematy (różne USER1)
Page 14 Odrębne serwery Produkcyjny Testowy Development
Page 15 Odrębne instalacje (różne ORACLE_HOME) ORACLE_HOME_1 inny katalog ORACLE_SID_1 właściciel grupy administratorów ORACLE_HOME_2 inny katalog ORACLE_SID_2 właściciel grupy administratorów
Page 16 Odrębne bazy - grupy administratorów (różne ORACLE_SID) Wspólny ORACLE_HOME Wspólni administratorzy Różne ORACLE_SID
Page 17 Odrębne schematy (różne USER1) - uwaga na PUBLIC Wspólna instalacja Wspólny ORACLE_HOME Wspólni administratorzy Wspólny ORACLE_SID Odrębne schematy UWAGA: użytkownik PUBLIC
Page 18 Przygotowanie instalacji właściciel instalacji (oracle), grupy administracyjne - o podwyższonych uprawnieniach (OSDBA, OSOPER), inne grupy użytkowników (oinstall, orainventory), katalog domowy, ORACLE_BASE, ORACLE_HOME, orainventory, oui, jre i inne katalogi OEM - gdzie zostanie umieszczone repozytorium jakie produkty są niezbędne do instalacji wybór protokołów sieciowych
Page 19 Instalacja
Page 20 Uaktualnienia systemu i bazy danych Lista wspieranych wersji (Metalink) Decyzja o wgraniu poprawki błędy w działaniu bezpieczeństwo Wgranie poprawki w systemie testowym Wykonanie kopii bezpieczeństwa Wgranie poprawki w systemie produkcyjnym Ponowne wykonanie kopii bezpieczeństwa
Page 21 Alerty bezpieczeństwa
Page 22 Użytkownicy bazy danych
Page 23 Lista użytkowników Listę użytkowników i status konta można uzyskać z tabeli dba_users: SQL> select username, password, account_status, profile from dba_users; USERNAME PASSWORD ACCOUNT_STATUS PROFILE -------- ---------------- ---------------- ------------ U1 3E81B724A296E296 OPEN PASS_LOG U2 F1B3E20A8E59BF2F OPEN PASS_LOG...
Page 24 Zarządzanie hasłami Polecenie SQL password SQL> password Changing password for U1 Old password: New password: Retype new password: profile użytkowników
Page 25 Profile bazy danych Tworzenie profilu SQL> create profile pass_log limit FAILED_LOGIN_ATTEMPTS 3 PASSWORD_REUSE_MAX 1; Profile created.
Page 26 Profile bazy danych SQL> select * from dba_profiles where profile='pass_log'; PROFILE RESOURCE_NAME RESOURCE LIMIT ------------ -------------------------------- -------- ------------ PASS_LOG COMPOSITE_LIMIT KERNEL DEFAULT PASS_LOG SESSIONS_PER_USER KERNEL DEFAULT PASS_LOG CPU_PER_SESSION KERNEL DEFAULT PASS_LOG CPU_PER_CALL KERNEL DEFAULT PASS_LOG LOGICAL_READS_PER_SESSION KERNEL DEFAULT PASS_LOG LOGICAL_READS_PER_CALL KERNEL DEFAULT PASS_LOG IDLE_TIME KERNEL DEFAULT PASS_LOG CONNECT_TIME KERNEL DEFAULT PASS_LOG PRIVATE_SGA KERNEL DEFAULT PASS_LOG FAILED_LOGIN_ATTEMPTS PASSWORD 3 PASS_LOG PASSWORD_LIFE_TIME PASSWORD DEFAULT PASS_LOG PASSWORD_REUSE_TIME PASSWORD DEFAULT PASS_LOG PASSWORD_REUSE_MAX PASSWORD 1 PASS_LOG PASSWORD_VERIFY_FUNCTION PASSWORD DEFAULT PASS_LOG PASSWORD_LOCK_TIME PASSWORD DEFAULT PASS_LOG PASSWORD_GRACE_TIME PASSWORD DEFAULT
Page 27 Przywileje użytkowników bazy danych Jak najmniejszy zestaw Wykorzystanie ról Uwaga na przywileje nadawane wielokrotnie przez różnych użytkowników poprzez role
Page 28 Przywileje - WITH ADMIN OPTION Możliwość przekazywania przywileju innym użytkownikom Przywilej pozostaje u użytkownika, nawet jeśli zostanie odebrany użytkownikowi pośredniemu SQL> select * from dba_sys_privs 2 where grantee= nazwa ; UWAGA: Powyższe zapytanie nie uwzględnia ról.
Page 29 Przywileje - WITH GRANT OPTION Możliwość przekazywania przywileju innym użytkownikom Przywilej odebrany użytkownikowi, jeśli zostanie odebrany użytkownikowi pośredniemu SQL> select grantee, owner, table_name, 2 grantor, privilege, grantable 3 from dba_tab_privs 4 where owner= nazwa ; UWAGA: Powyższe zapytanie nie uwzględnia przywilejów nadanych na kolumnach i ról.
Page 30 Przywileje - ANY Przywilej bardzo szeroki - dotyczy wszystkich obiektów danego typu Trudno zapanować nad rzeczywistymi przywilejami SQL> select grantee, privilege 2 from dba_sys_privs 3 where privilege like %ANY% ;
Page 31 Przywileje - PUBLIC Obiekt dostępny dla każdego użytkownika bazy danych Brak gradacji dostępu do obiektu
Page 32 Proces nasłuchu LISTENER Proces udostępniający zasoby bazy danych poprzez sieć Powinien być uruchomiony z bezpiecznego konta (prawa dostępu) Powinien być zabezpieczony hasłem Administrowanie powinno być ograniczone do minimum Zmiany ustawień sieciowych (numer portu, filtrowanie dostępu, dostęp poprzez IPC)
Page 33 Listener - uruchomienie Tradycyjnie uruchomiony proces LISTENER: oracle9@linux:~> ps -ef grep LIST oracle9 3082 1 0 23:02 pts/2 00:00:00 /oracle/9/product/bin/tnslsnr LISTENER -inherit Bezpiecznie uruchomiony proces LISTENER: oracle9@linux:~> ps -ef grep LIST daemon 3356 1 0 23:08 pts/3 00:00:00 /oracle/9/product/bin/tnslsnr LISTENER -inherit
Page 34 Listener - zabezpieczenie administracji Założenie hasła LSNRCTL> change_password Old password: New passwors: Reenter new password: Wprowadzenie hasła LSNRCTL> set password Password: The command completed successfully
Page 35 Listener - zabezpieczenie dostępu Włączenie parametru ADMIN_RESTRICTIONS Polecenie SET jest zablokowane ADMIN_RESTRICTIONS_nazwa_procesu=ON LSNRCTL> set log_directory /tmp Connecting to (ADDRESS=(PROTOCOL=tcp) (PORT=1521)) TNS-12508: TNS:listener could not resolve the command given
Page 36 LISTENER - filtrowanie dostępu W pliku sqlnet.ora (protocol.ora) można wprowadzić dodatkowe filtrowanie dostępu TCP.VALIDNODE_CHECKING=YES TCP.EXCLUDED_NODES={adresy_IP} TCP.INVITED_NODES={adresy_IP}
Page 37 Źródła informacji dokumentacja (głównie Administration Guide) Metalink (http://metalink.oracle.com) - strona wymaga wykupienia asysty technicznej Oracle Technology Network (http://otn.oracle.com, http://technet.oracle.com) - strona wymaga rejestracji, ale nie jest płatna Strona z alertami dotyczącymi bezpieczeństwa - (http://otn.oracle.com/deploy/security/alerts.htm) CERT (http://www.cert.org) subskrypcja list dotyczących tematu bezpieczeństwa wyszukiwarki internetowe inne publikacje (np. materiały z konferencji, itp.)