Использование веб-сервисов для предоставления безопасности .NET DAL повышает безопасность? - PullRequest
4 голосов
/ 13 июня 2010

В настоящее время мой работодатель развертывает веб-приложение на трех серверах.

  1. DB - нет общедоступного маршрута
  2. Веб-сервис DAL - нет общедоступного маршрута
  3. Веб-сервер - общедоступный маршрут

Причиной этого является теория, что, если веб-сервер скомпрометирован, они не попадают в БД напрямую, а вместо этого приходят в окно DAL.

На мой взгляд, поскольку DAL и Web Sever - оба запускают windows / IIS - если общедоступный ящик был взломан, тот же эксплойт, скорее всего, будет работать на DAL - поэтому я не вижу в этом реального пособие по безопасности.

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

Является ли эта средняя коробка действительно выгодой?

Ответы [ 3 ]

4 голосов
/ 13 июня 2010

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

Если он настроен следующим образом:

web app --> |  DAL layer   |  database

external    |  network     |  internal
                 DMZ  

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

Если вы еще больше запутываете вещи, используя только хранимые процедуры и т. Д. Из уровня DAL, то самое большее, что может сделать злоумышленник, если он попадет в ваш DAL, - это вызвать те же функции базы данных, которые веб-приложение все равно использовало. Получение контроля над уровнем DAL означает, что он может обойти любую проверку, которая была у вас на веб-сервере, но в идеале проверка должна также существовать на уровне DAL или в хранимых процессах базы данных (это безопасный способ создания ваших служб WCF, вы не Не всегда знаете, что ваши веб-службы будут скрыты от публичного просмотра, возможно, когда-нибудь требования изменится, и веб-службы будут представлены таким образом, что каждый сможет их вызвать).

3 голосов
/ 13 июня 2010

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

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

Одним из подходов к этому было бы использование некоторых методов, описанных людьми, говорящими о CQRS в архитектурном контексте. В частности, в этой презентации Уди Дахана он однозначно предлагает разместить вашу базу данных на веб-сервере, и только для хранения данных на ней вам необходимо поддерживать веб-сайт. Другие данные, бизнес-данные, хранятся в другом месте, в отдельной базе данных. Вы также можете использовать базы данных NoSQL, такие как MongoDB или RavenDB для представления данных и вообще отказаться от реляционной базы данных.

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

Удачи.

1 голос
/ 13 июня 2010

Это почти безопасность путем запутывания, но средний блок действительно обеспечивает дополнительный уровень безопасности, если он также поддерживается соответствующим брандмауэром.Если БД хранится в защищенной частной защищенной от огня области, компьютер веб-службы может быть помещен в блок DMZ среднего уровня, который будет доступен для публичного веб-сайта.Хотя эксплойт предположительно будет работать на всех 3-х блоках, злоумышленнику все равно придется взломать 2 уровня брандмауэра, чтобы развернуть эксплойт.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...