Опасно ли иметь сервер базы данных и веб-сервер на одной машине?

8

Кажется, что жизнь была бы простой, чтобы запустить сервер базы данных на той же машине, что и веб-сервер, но не рискуем ли мы этим рисковать?

Средой будет сервер Windows 2008, Postgresql (последняя версия, возможно, 9.0, когда она выйдет) и Apache 2.

CLJ
источник
Это зависит. Можете ли вы дать более подробную информацию о конкретном сценарии, который вы рассматриваете?
К. Брайан Келли

Ответы:

7

Не обязательно.

Предполагая, что ваш веб-сервер скомпрометирован, злоумышленник все равно получит учетные данные для доступа к тем же базам данных, независимо от того, на каком сервере они работают. В конце концов, сервер базы данных все равно должен быть настроен для разрешения легитимного запроса от веб-сервера.

(Принимая разумные меры безопасности, такие как mysqld, не принимающий root-пароль без пароля от localhost.)

Тем не менее, вы все равно можете запустить отдельный сервер базы данных. Это связано с производительностью, масштабируемостью и т. Д.

andol
источник
3
Я бы согласился с тем, что более серьезной проблемой было бы снижение производительности, которое вы выполняете на одной и той же машине.
ChrisF
5

Я не согласен с плакатами, заявляющими, что это не проблема безопасности, и вот почему:

  • Ваша фронтальная служба должна иметь как можно меньшую поверхность атаки . Это основная причина использования обратных прокси-серверов и брандмауэров, а также для хранения ненужных сервисов и программ вдали от серверов, которые не требуют их работы. Вот почему веб-серверы являются наиболее распространенными целями для повышения безопасности.
  • Ваш веб-сервер не должен иметь божьих прав на вашу систему баз данных. Поэтому компрометация веб-сервера также не ставит под угрозу сервер баз данных. Прежде всего, учетная запись, которую веб-сервер использует для доступа к базе данных, не должна иметь локальных административных прав на блок SQL, ее права должны быть ограничены исключительно разрешениями базы данных. Во-вторых, в рамках этих разрешений SQL он должен работать по принципу наименьших привилегий . Например, ваш веб-ящик не должен иметь возможности создавать новые базы данных в экземпляре. В идеале, ваш веб-ящик не будет иметь возможности удалять таблицы или удалять строки из любых таблиц, в которых он совершенно не обязан. Таким образом, в случае компрометации в правильно настроенной двухуровневой установке влияние злоумышленника, использующего учетные данные SQL, ограничено по объему.
Крис Торп
источник
1
Я не думаю, что кто-то говорит, что решение с двумя коробками не безопаснее. Однако вопрос заключался в том, был ли этот риск, чтобы процитировать вопрос, «большим». Ответ, очевидно, будет зависеть от обстоятельств - например, я бы не запустил интернет-сайт банковского обслуживания на одной машине. Но должным образом заблокированный веб-сервер после его взлома не должен иметь больше или меньше доступа к своему серверу базы данных, чем до взлома, и этот принцип не зависит от того, находится ли решение на двух компьютерах или на одном. Если это не так, пришло время перестроить систему.
BMDan
Я не следую вашей логике. Если вы скомпрометировали веб-сервер и получите права доступа к этой машине, у вас есть все, что находится на этой машине. Если это включает всю вашу базу данных со всеми ее данными, то все подвергается риску. Но если у вас есть 2 отдельных сервера, то полная компрометация веб-сервера в какой-то степени даст вам доступ на уровне данных только к тем данным, которые были доступны для самого веб-сервера.
Крис Торп
3

Это действительно будет зависеть от модели безопасности ваших веб-серверов и серверов БД (то есть программного обеспечения), а также от степени брандмауэра / контроля доступа / IDP, которую вы применяете на двух серверах, если они находятся на отдельных серверах.

При прочих равных условиях, вероятно , лучше разделить их. Однако на практике, по крайней мере, в среде LAMP, если вы используете privsep Apache (если вы не уверены, не волнуйтесь, вы это делаете) и не используете root-доступ к MySQL в своем веб-приложении, и у вас нет tcp / 3306, выставленного внешнему миру, вы на самом деле не получаете большую безопасность, перемещая один или другой на другой кусок кремния. Тем не менее, вы получаете преимущества в производительности и возможности отладки.

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

BMDan
источник
1
+1 Для большинства данных достаточно базовой безопасности и лучших практик.
Крис С
Мы собираемся запустить: Windows Server 2008 и Postgresql 8.4 (или 9.0, когда он выйдет), Apache 2
CLJ
0

Я не вижу большого дополнительного риска для безопасности при установке базы данных и веб-серверов на одном оборудовании. Если веб-сервер нарушен, данные все равно доступны. Безопасность не является типичной причиной разделения уровней.

В любом случае вы хотите убедиться, что сервер базы данных прослушивает нестандартные порты, будет отвечать только на запросы от веб-сервера, и что брандмауэр разрешает только запросы http / s к веб-серверу, а другие порты или адреса отсутствуют. ,

Тем не менее, их разделение - хорошая практика. Каждый сервер проще в управлении и настройке, и вы можете легче справляться со сбоями, проблемами, перестроениями, проблемами производительности и т. Д. Таким образом, вы можете рассмотреть два виртуальных сервера на одном оборудовании, которые затем могут быть разделены, когда этого требуют производительность или емкость.

tomjedrz
источник
0

Я бы не стал - но это я.

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

Если вы не ожидаете, что этой системе придется справляться со слишком большой нагрузкой, вы можете подумать о том, чтобы виртуализировать систему на две отдельные виртуальные машины; по одному на функцию - возможно, даже с третьей виртуальной брандмауэром только между ними. Это будет означать, что даже если кто-то взломает ваш веб-сервер, ему придется взломать сервер базы данных и, если он включен, промежуточную виртуальную машину межсетевого экрана. Конечно, это снизит общую производительность системы, но будет, по крайней мере, в некоторой степени более безопасным, а также может помочь, если ваша нагрузка когда-либо увеличится до потребности в конфигурации с двумя серверами, поскольку вы можете просто перенести одну ВМ на вторую машину. Бесплатный продукт ESWi от VMWare может сделать все это довольно легко, и уже есть бесплатные виртуальные машины с брандмауэром, предварительно упакованные и готовые к внедрению, если хотите.

Chopper3
источник