Security

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

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

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

Ответ 1

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

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

Ответ 2

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

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

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

Ответ 3

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

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

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

Ответ 4

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

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

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

Ответ 5

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

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

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

Схожие статьи

Security

Насколько сложно настроить почтовый сервер?

Security

Как защитить общедоступный сервер удаленного рабочего стола?

Security

Советы по оптимальному переходу на производственный сервер (UNIX)

Security

Может ли виртуальная машина (ВМ) «взломать» другую ВМ, работающую на той же физической машине?

×