Почему аутентификация ОС считается плохой безопасностью для баз данных Oracle?

29

Oracle осуждает аутентификацию ОС в соответствии с Руководством по безопасности баз данных Oracle , в котором говорится

Учтите, что параметр REMOTE_OS_AUTHENT устарел в Oracle Database 11g Release 1 (11.1) и сохраняется только для обратной совместимости.

Кроме того, большинство информации и инструментов безопасности считают, что проверка подлинности ОС (внешней) является проблемой безопасности. Я пытаюсь понять, почему это так. Вот некоторые преимущества аутентификации ОС:

  1. Без аутентификации ОС приложения должны хранить пароли в различных приложениях, каждое со своей моделью безопасности и уязвимостями.
  2. Аутентификация домена уже должна быть безопасной, потому что если это не так, безопасность базы данных просто замедляет доступ к базе данных, но не может предотвратить ее.
  3. Пользователи, которым нужно запомнить только один пароль домена, могут создавать более безопасные пароли домена проще, чем они могут создавать еще менее надежные пароли баз данных, так как увеличивается число различных баз данных, к которым они должны подключаться.
Ли Риффель
источник
Где вы увидели, что Oracle не поддерживает внешнюю аутентификацию?
Джастин Кейв
1
@Justin Cave Я обновлю вопрос этой информацией.
Ли Риффель
2
Спасибо за обновление. Просто для ясности, однако, Oracle не осуждает внешнюю аутентификацию, она осуждает удаленную внешнюю аутентификацию, которая, как правило, гораздо менее безопасна (как Гай обсуждает ниже)
Джастин Кейв,

Ответы:

16

Рассмотрим следующий сценарий:

  1. Существует пользователь Unix, названный gaiusна сервере Oracle с внешней аутентификацией, поэтому в Oracle есть соответствующий пользователь с именем ops$gaius. При входе в оболочку я также могу напрямую войти в свою схему Oracle, и мои задания cron также не нуждаются в пароле, встроенном в скрипт.
  2. Удаленная аутентификация ОС разрешена при условии, что локальная сеть безопасна на 100%, и клиентам можно доверять (то же самое, что обычно используется rlogin/ rshразрешено)
  3. Злоумышленник подключает свой ноутбук к локальной сети любыми способами, знает, что я там работаю, и создает на своем ноутбуке локального пользователя с именем « gaiusSQL * Plus» и запускает его под этим пользователем.
  4. Oracle видит (то есть OSUSERв V$SESSION) is gaiusи регистрирует этого удаленного пользователя какops$gaius

Это не только нелепо легко подделать, но и надеть шляпу моего циника. Oracle больше не сможет зарабатывать, продавая свой модный продукт с единой регистрацией ... К слову, он отвечает всем тем вопросам, которые вы поднимаете как преимущества ОС. Уровень аутентификации Два пароля лучше, чем один, полностью ложный; большинство людей в любом случае установят их одинаковыми (в Oracle нет механизма, предотвращающего это).

Общий принцип заключается в том, что в программном обеспечении крайне сложно защищаться, когда злоумышленник имеет физический доступ. И никогда не доверяй клиенту.

Gaius
источник
2
Это даже хуже, чем это. См. Orafaq «Почему учетные записи OPS $ представляют угрозу безопасности в среде клиент / сервер?» (они обвиняют Windows, но вы правы, это что-то в сети)
Джо
3
Как сервер в домене Windows влияет на это? т.е. должен ли злоумышленник присоединить свой компьютер к домену, чтобы иметь учетную запись, которая включает домен, или же злоумышленник может имитировать присутствие домена без фактического присоединения к своему компьютеру?
Ли Риффель
Я предполагаю, что это было написано изначально в то время, когда все серверы были Unix, а все рабочие столы были Windows
Gaius
3
@Leigh - Вы можете сделать удаленную проверку подлинности ОС более безопасной с помощью клиентов Windows, установив OS_AUTHENT_PREFIX в качестве доверенного домена Windows. Для этого необходимо, чтобы удаленный клиент находился (или, по-видимому, находился) в этом доверенном домене. Это существенно поднимает планку по сравнению с тривиальным «подключением компьютера к свободному порту, добавлением локального пользователя, и вы в атаке», но это все еще вполне возможно.
Джастин Кейв
1
сравнивайте и сравнивайте с тем, выполняла ли она настоящую аутентификацию AD / Kerberos, брала билет у пользователя и проверяла его с помощью KDC. Я полагаю, что делает SqlServer при использовании аутентификации Windows?
аракнид
8

Это увеличивает отдельные точки отказа и увеличивает поверхность риска ваших данных.

Злоумышленник, получивший доступ к системе, при аутентификации ОС получит доступ к базе данных. Требуя более безопасного доступа к базе данных, потенциальный злоумышленник должен повысить свои привилегии в скомпрометированной системе, чтобы получить доступ с правами root или oracle, а не какой-либо пользователь.

Эта проблема является функцией внешнего доступа к базе данных. Если нет внешнего доступа и машина полностью защищена, вопрос о разрешениях является спорным. Однако, если у разработчиков есть доступ, пользовательские разрешения на уровне операционной системы увеличивают масштаб потенциальных нарушений безопасности.

Рассмотрите возможность использования многоуровневого доступа, чтобы ограничить объем нарушений безопасности и дать любому пользователю, приложению или клиенту доступ, который им необходим, без необходимости создавать учетные записи уровня ОС для каждого экземпляра.

Брайан Баллсун-Стэнтон
источник
Понятно, что для упрощения - два требования имени пользователя / пароля более безопасны, чем одно. Ваши очки звучат разумно.
Ли Риффель
Это слегка неверный ответ - проблема не в внешней аутентификации, а в удаленной внешней аутентификации. Я объясню ниже.
Гай
@Gaius Разве внешняя проверка подлинности ОС не будет чрезвычайно ограничена почти до такой степени, что она будет бесполезной, если она не будет удаленной? Вы хотите сказать, что Oracle не отменяет аутентификацию с использованием ОС, а только отменяет аутентификацию ОС с удаленного компьютера?
Ли Риффель
@Leigh. Основной вариант использования для проверки подлинности локальных учетных записей в ОС - для задач типа DBA, где на сервере базы данных работает несколько сценариев оболочки, которым требуется доступ к очень мощным учетным записям на сервере базы данных. Аутентификация ОС позволяет избежать использования незашифрованных паролей уровня DBA в этих сценариях оболочки.
Джастин Кейв
Пакетные задания @Justin в целом, реализованные в виде сценариев оболочки или чего-то подобного, в отдельных кронах
Гай
4

Gaius уже указал, почему аутентификация удаленной операционной системы (в отличие от аутентификации операционной системы vanilla, когда вы разрешаете пользователям локальных компьютеров получать доступ к базе данных без указания отдельного пароля) является относительно небезопасной.

Я ожидаю, что Oracle движется в этом направлении, потому что хочет побудить людей использовать корпоративных пользователей (или полноценный пакет управления идентификацией), а не пользователей, прошедших аутентификацию в удаленной операционной системе. Корпоративные пользователи имеют те же преимущества, что и пользователи, прошедшие проверку подлинности в удаленной операционной системе, но Oracle фактически пытается подключиться к серверу Active Directory для проверки подлинности пользователя. Вы получаете тот же единый знак преимуществ, не оставляя проверку безопасности клиентскому компьютеру.

Джастин Кейв
источник
Аутентификация LDAP может открыть другую банку с червями ... Я отправлю более длинный ответ.
Джо
+1 Спасибо за указание Enterprise User Security. Мы уже рассматривали Advanced Security, и это делает его еще более привлекательным.
Ли Риффель
4

Вы конкретно указываете на аутентификацию в стиле идентификаторов, но я также хотел бы отметить, что другие методы привязки базы данных или любых других входов в систему для входа в ОС такие же плохие. (будь то локальные файлы паролей, LDAP или что-то еще для фактического хранения учетных данных)

Если вы разрешите удаленные подключения к базе данных (или веб-серверу, или тому, кто выполняет аутентификацию), некоторые операционные системы будут игнорировать правила, которые могут быть установлены, чтобы затруднить взлом учетных записей (например, блокирование IP-адресов, с которых происходят неудачные попытки; блокировка; пользователей в течение определенного периода после определенного количества ошибок и т. д.). Обычно эти правила связаны sshd, а не система аутентификации в целом.

Таким образом, если кто-то сможет подключиться к базе данных / веб-серверу / чему-либо удаленному, он может перебрать пароль, так как базы данных не склонны использовать одни и те же механизмы для замедления попыток, а затем использовать ssh, как только найдет необходимые учетные данные.

Джо
источник
2
Я не уверен, что следую рассуждениям здесь. Если у вас есть Oracle для аутентификации по LDAP, вам нужно было бы взломать LDAP, чтобы получить пароль - не было бы локальной копии хэша паролей для перебора, как это было бы для обычного пользователя Oracle. Если вы беспокоитесь о том, что злоумышленники бьют вашу аутентификацию LDAP, у вас, вероятно, больше проблем, чем при аутентификации пользователей Oracle. И достаточно легко настроить Oracle для блокировки учетных записей после ряда неудачных попыток, ограничения разрешенных IP-адресов и т. Д. По сути, это большая часть поведения по умолчанию в 11g.
Джастин Кейв
@Justin: проблема заключается только в том, чтобы связать ее, чтобы учетные данные для входа в ОС совпадали с учетными данными для входа в базу данных (или веб-сервер и т. Д.). И похоже, что Oracle стала лучше в отношении аутентификации, чем когда я в последний раз ее использовала, но большинство других баз данных этого не сделали. (и Apache тоже нет, поэтому пользователи MacOS X Servers должны поменяться местами mod_auth_appleи mod_auth_digest_appleиспользовать версии по умолчанию, хотя я не проверял, существует ли проблема в 10.6)
Joe