Dlaczego uwierzytelnianie systemu operacyjnego jest uważane za słabe bezpieczeństwo baz danych Oracle?

29

Oracle wycofuje uwierzytelnianie systemu operacyjnego zgodnie z Oracle Database Security Guide , który mówi

Należy pamiętać, że parametr REMOTE_OS_AUTHENT został uznany za przestarzały w Oracle Database 11g Release 1 (11.1) i jest zachowany tylko dla kompatybilności wstecznej.

Ponadto większość informacji i narzędzi bezpieczeństwa uważa uwierzytelnianie systemu operacyjnego (zewnętrznego) za problem z bezpieczeństwem. Próbuję zrozumieć, dlaczego tak jest. Oto niektóre zalety uwierzytelniania systemu operacyjnego:

  1. Bez uwierzytelniania systemu operacyjnego aplikacje muszą przechowywać hasła w różnych aplikacjach, z których każda ma własny model zabezpieczeń i luki w zabezpieczeniach.
  2. Uwierzytelnianie domeny musi już być bezpieczne, ponieważ jeśli tak nie jest, zabezpieczenia bazy danych spowalniają dostęp do bazy danych, ale nie można temu zapobiec.
  3. Użytkownicy, którzy muszą zapamiętać tylko jedno hasło do domeny, mogą łatwiej tworzyć bezpieczniejsze hasła do domen niż do tworzenia jeszcze mniej bezpiecznych haseł do baz danych, ponieważ liczba różnych baz danych, z którymi muszą się łączyć, wzrasta.
Leigh Riffel
źródło
Gdzie widziałeś, że Oracle wycofuje zewnętrzne uwierzytelnianie?
Justin Cave
1
@Justin Cave Zaktualizuję pytanie o te informacje.
Leigh Riffel
2
Dziękuję za aktualizację. Jednak dla jasności Oracle nie zastępuje zewnętrznego uwierzytelnienia, ale zdalne zewnętrzne uwierzytelnianie, które jest ogólnie znacznie mniej bezpieczne (jak Gaius omawia poniżej)
Justin Cave

Odpowiedzi:

16

Rozważ następujący scenariusz:

  1. Istnieje użytkownik Unix o nazwie gaiusna serwerze Oracle z zewnętrznym uwierzytelnieniem, więc w Oracle istnieje odpowiedni użytkownik o nazwie ops$gaius. Po zalogowaniu do powłoki mogę również zalogować się bezpośrednio do mojego schematu Oracle, a moje zadania cron również nie potrzebują hasła osadzonego w skrypcie.
  2. Zdalne uwierzytelnianie OS jest dozwolone, przy założeniu, że sieć LAN jest w 100% bezpieczne i klienci mogą być zaufany (tak samo jak rlogin/ rshkiedyś normalnie dozwolone)
  3. Osoba atakująca przenosi swój laptop do sieci LAN w jakikolwiek sposób, wie, że tam pracuję, i tworzy lokalnego użytkownika na swoim laptopie o nazwie gaiusi uruchamia SQL * Plus jako ten użytkownik
  4. Oracle widzi (czyli OSUSERw V$SESSION) jest gaiusi że zdalny użytkownik loguje się jakoops$gaius

To nie tylko śmiesznie łatwe do sfałszowania, ale zakładając czapkę mojego cynika, Oracle nie może zarobić więcej pieniędzy, sprzedając ci swój wymyślny produkt jednokrotnego logowania ... Który, nawiasem mówiąc , spełnia wszystkie punkty, które podniosłeś jako zalety systemu operacyjnego -poziom autoryzacji Dwa hasła lepsze od jednego są całkowicie fałszywe; większość ludzi i tak ustawi je tak samo (nie ma w Oracle mechanizmu, który mógłby temu zapobiec).

Ogólna zasada jest taka, że ​​niezwykle trudno jest bronić się w oprogramowaniu, gdy osoba atakująca ma fizyczny dostęp. I nigdy nie ufaj klientowi.

Gajusz
źródło
2
Jest jeszcze gorzej. Zobacz : „Dlaczego konta OPS $ stanowią zagrożenie bezpieczeństwa w środowisku klient / serwer?” (obwiniają okna, ale masz rację, to wszystko w sieci)
Joe
3
Jak wpływa na to serwer znajdujący się w domenie Windows? tj. czy atakujący musiałby dołączyć swój komputer do domeny, aby mieć konto, które zawiera domenę, czy może atakujący mógł symulować obecność domeny bez konieczności dołączania do swojego komputera?
Leigh Riffel
Domyślam się, że został napisany pierwotnie w czasie, gdy wszystkie serwery były Unixowe, a wszystkie komputery stacjonarne były Windowsami
Gaius
3
@Leigh - Możesz zwiększyć bezpieczeństwo zdalnego uwierzytelniania systemu operacyjnego za pomocą klientów Windows, ustawiając OS_AUTHENT_PREFIX na zaufaną domenę Windows. Wymaga to, aby klient zdalny znajdował się (lub wydaje się, że jest) w tej zaufanej domenie. To znacznie podnosi poprzeczkę nad trywialnym „podłączaniem komputera do zapasowego portu, dodawaniem lokalnego użytkownika i jesteś w” ataku, ale wciąż jest całkiem do pokonania.
Justin Cave
1
porównać i skontrastować z tym, czy przeprowadzał on autentyczne uwierzytelnianie AD / Kerberos, a także biorąc bilet od użytkownika i weryfikując go za pomocą KDC, co, jak sądzę, jest tym, co robi SqlServer, gdy jest skonfigurowany do używania uwierzytelniania Windows?
araqnid
8

Zwiększa pojedyncze punkty awarii i powiększa powierzchnię ryzyka danych.

Osoba atakująca, która uzyska dostęp do systemu, dzięki uwierzytelnieniu systemu operacyjnego będzie miała dostęp do bazy danych. Wymagając bardziej bezpiecznego dostępu do bazy danych, potencjalny atakujący musi zwiększyć swoje uprawnienia w zaatakowanym systemie, aby uzyskać dostęp do konta root lub Oracle, a nie żadnego użytkownika.

Ten problem jest funkcją zewnętrznego dostępu do bazy danych. Jeśli nie ma dostępu zewnętrznego, a maszyna jest w pełni zabezpieczona, wówczas kwestia uprawnień jest dyskusyjna. Jeśli jednak programiści mają dostęp, uprawnienia użytkownika na poziomie systemu operacyjnego zwiększają zakres potencjalnych katastrof bezpieczeństwa.

Rozważ użycie dostępu wielopoziomowego w celu ograniczenia zakresu naruszeń bezpieczeństwa i zapewnienia każdemu użytkownikowi, aplikacji lub klientowi dostępu, którego potrzebują, bez potrzeby tworzenia kont na poziomie systemu operacyjnego dla każdej instancji.

Brian Ballsun-Stanton
źródło
Rozumiem, więc dla uproszczenia - dwa wymagania dotyczące nazwy użytkownika i hasła są bezpieczniejsze niż jeden -. Twoje punkty brzmią rozsądnie.
Leigh Riffel
To jest subtelnie niepoprawna odpowiedź - problemem nie jest uwierzytelnianie zewnętrzne, ale zdalne uwierzytelnianie zewnętrzne. Wyjaśnię poniżej.
Gajusz
@Gaius Czy zewnętrzne uwierzytelnianie systemu operacyjnego nie byłoby ekstremalnie ograniczone do tego stopnia, że ​​byłoby bezwartościowe, gdyby nie było zdalne? Czy mówisz, że Oracle nie zastępuje uwierzytelniania przy użyciu systemu operacyjnego, ale jedynie przestaje uwierzytelniać system operacyjny z komputera zdalnego?
Leigh Riffel
@Leigh - Głównym przypadkiem użycia do uwierzytelniania systemu operacyjnego kont lokalnych są zadania typu DBA, w których na serwerze bazy danych działa kilka skryptów powłoki, które potrzebują dostępu do bardzo potężnych kont na serwerze bazy danych. Uwierzytelnianie systemu operacyjnego pozwala uniknąć niezaszyfrowanych haseł poziomu DBA w tych skryptach powłoki.
Justin Cave
@Justin zadania wsadowe ogólnie, implementowane jako skrypty powłoki lub cokolwiek innego, w poszczególnych cronach
Gaius
4

Gaius wskazał już, dlaczego zdalne uwierzytelnianie systemu operacyjnego (w przeciwieństwie do uwierzytelniania waniliowego systemu operacyjnego, w którym zezwalasz użytkownikom komputerów lokalnych na dostęp do bazy danych bez podawania osobnego hasła) jest stosunkowo niepewne.

Spodziewałbym się, że Oracle zmierza w tym kierunku, ponieważ chce zachęcić ludzi do korzystania z użytkowników korporacyjnych (lub pełnego pakietu zarządzania tożsamością), a nie ze zdalnych użytkowników uwierzytelnionych w systemie operacyjnym. Użytkownicy korporacyjni mają te same zalety, co użytkownicy uwierzytelnieni w zdalnym systemie operacyjnym, ale Oracle faktycznie wychodzi na serwer Active Directory w celu uwierzytelnienia użytkownika. Otrzymujesz ten sam pojedynczy znak na korzyści bez pozostawiania kontroli bezpieczeństwa na komputerze klienta.

Justin Cave
źródło
Uwierzytelnianie LDAP może otworzyć kolejną puszkę robaków ... Postaram się wysłać dłuższą odpowiedź.
Joe
+1 Dziękujemy za wskazanie Enterprise User Security. Zastanawialiśmy się już nad Advanced Security, co czyni je jeszcze bardziej atrakcyjnym.
Leigh Riffel
4

W szczególności wskazujesz na uwierzytelnianie w identycznym stylu, ale chciałbym również zauważyć, że inne metody wiązania bazy danych lub innych loginów z logowaniami systemu operacyjnego są równie złe. (czy to lokalne pliki haseł, LDAP, czy cokolwiek innego do faktycznego przechowywania poświadczeń)

Jeśli zezwalasz na zdalne połączenia z bazą danych (lub serwerem WWW lub czymkolwiek, co wykonuje uwierzytelnianie), niektóre systemy operacyjne będą ignorować reguły, które mogą być ustawione, aby utrudnić brute force force (np. Blokowanie adresów IP, z których pochodzą nieudane próby; blokowanie użytkowników przez określony czas po określonej liczbie awarii itp.). Zwykle reguły te są powiązane sshd, a nie cały system uwierzytelniania.

Tak więc, jeśli ktoś może połączyć się z bazą danych / serwerem WWW / cokolwiek zdalnie, może brutalnie wymusić hasło, ponieważ bazy danych nie mają zwykle takich samych mechanizmów powolnych prób, a następnie ssh po znalezieniu niezbędnych poświadczeń.

Joe
źródło
2
Nie jestem pewien, czy podążam tutaj za rozumowaniem. Jeśli masz uwierzytelnianie Oracle względem LDAP, musisz złamać LDAP, aby uzyskać hasło - nie byłoby lokalnej kopii skrótu hasła do brutalnej siły, tak jak w przypadku zwykłego użytkownika Oracle. Jeśli obawiasz się, że osoby atakujące pobiją Twoje uwierzytelnianie LDAP, prawdopodobnie masz większe problemy niż sposób uwierzytelniania użytkowników Oracle. I dość łatwo jest skonfigurować Oracle do blokowania kont po wielu nieudanych próbach, ograniczenia dozwolonych adresów IP itp. Wiele z nich to w rzeczywistości domyślne zachowanie 11g.
Justin Cave
@Justin: problem występuje tylko wtedy, gdy go powiążesz, aby dane logowania do systemu operacyjnego były takie same jak dane logowania do bazy danych (lub serwera WWW itp.). I wygląda na to, że Oracle ma lepszy dostęp do uwierzytelniania niż kiedy go ostatnio używałem, ale większość innych baz danych tego nie zrobiła. (i Apache nie robi albo, więc MacOS X Serwery użytkownicy powinni zamienić się mod_auth_applei mod_auth_digest_appledla wersji standardowych, chociaż nie testowałem, czy problem nadal istnieje w 10,6)
Joe