Назад | Перейти на главную страницу

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

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

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

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

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

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

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

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

  • Ваш фронтальный сервис должен иметь наименьшая возможная поверхность атаки. Это основная причина использования обратных прокси-серверов и брандмауэров, а также для хранения ненужных сервисов и программ на серверах, которые не требуют их работы. Вот почему веб-серверы являются наиболее частой целью для проходов по усилению безопасности.
  • Ваш веб-сервер не должен иметь прав на вашу систему баз данных. Таким образом, компрометация веб-сервера не ставит под угрозу и сервер базы данных. Во-первых, учетная запись, которую веб-сервер использует для доступа к базе данных, не должна иметь локальных административных прав на поле SQL, ее права должны ограничиваться исключительно разрешениями базы данных. Во-вторых, в рамках этих разрешений SQL он должен работать под принцип наименьших привилегий. Например, ваш веб-ящик не должен иметь возможность создавать экземпляры новых баз данных в экземпляре. В идеале у вашего веб-бокса не будет возможности отбрасывать таблицы или удалять строки из любых таблиц, которые ему не нужны. Таким образом, в случае компрометации правильно настроенной двухуровневой установки, влияние злоумышленника, использующего учетные данные SQL, ограничено по объему.

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

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

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

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

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

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

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

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

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