В моих конфигурациях для настройки IIS, SQL-Server и ASP.NET ниже есть ли ненужные настройки, приводящие к проблемам безопасности? - PullRequest
0 голосов
/ 08 декабря 2010

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

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


ШАГ 1: Включение IIS

alt text


ШАГ 2: Установка .NET 4

Нет изображения: -)


ШАГ 3: Установка SQL-Server 2008R2

Нет изображения: -)


ШАГ 4: Установка Visual Studio 2010

Нет изображения :-)


ШАГ 5: Создайте проект, например, NerdDinner

Я поместил свой файл проекта (включая NerdDinner.mdb) в C: \

NerdDinner.mdb уже заполнен фиктивными данными.

alt text


ШАГ 6: Настройка глобального пула приложений

alt text


ШАГ 7. Создание виртуального каталога с использованием Visual Studio 2010

alt text

Показанный в диспетчере IIS NerdDinner являетсяприложение под веб-сайтом по умолчанию.

alt text


ШАГ 8: Настройка пула приложений для веб-приложения NerdDinner

alt text


ШАГ 9: Присоединение и настройка NerdDinner.mdb с использованием Sql-Server ManagementStudio

alt text


ШАГ 10: Настройка строки подключения

 <add name="NerdDinnerEntities"   

  connectionString="metadata=res://*/Models.NerdDinner.csdl|res://*/Models.NerdDinner.ssdl|res://*/Models.NerdDinner.msl;provider=System.Data.SqlClient;provider connection string=&quot;
     Data Source=.\sqlexpress;
     Initial Catalog=NerdDinner;
     Integrated Security=True;
     MultipleActiveResultSets=True
     &quot;"
     providerName="System.Data.EntityClient" />

Тестирование

Все работает хорошо, но я не уверен, содержат ли эти шаги проблемы безопасности.

Ответы [ 2 ]

2 голосов
/ 11 декабря 2010

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

IIS7.x по умолчанию создаст отдельный пул приложений для вашего сайта, названный в честь имени, которое вы дадите сайту.

Вместо запуска пула приложений и сайта / приложения под NETWORK SERVICE, запустите и сайт и пул как ApplicationPoolIdentity.

На панели функций веб-сайта или приложения откройте функцию аутентификации, выберите Анонимная аутентификация и щелкните правой кнопкой мыши Редактировать:

alt text

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

alt text

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

ICACLS c:\dynamic\NerdDinner\NerdDinner /grant "IIS AppPool\site1":(CI)(OI)(M)

Или вы можете применить эти разрешения через проводник: alt text

Нажмите Check Names, затем OK: alt text

В SQL Server применяется то же самое, вместо предоставления разрешений на вашу базу данных для NETWORK SERVICE, вместо этого предоставьте разрешения для ApplicationPoolIdentity. Как и в случае NETWORK SERVICE, это будет работать только в том случае, если база данных SQL находится на том же компьютере, что и веб-сервер, если вы используете автономный сервер.

Например: alt text

В диалоговом окне, показанном выше, не выполняйте поиск и Check Names, поскольку это заменит часть IIS AppPool\ имени пользователя именем вашего компьютера. Когда вы нажимаете OK, SQL будет жаловаться, что не может найти [MACHINENAME]\NerdDinner.

Затем установите добавление в качестве логина для базы данных NerdDinner: alt text

Я устанавливаю здесь владельца БД, но вы можете выбрать ту роль, которая вам подходит для ваших нужд. Если это ваш компьютер для разработки, то с DBO все будет в порядке, потому что вы сможете создавать DDL из Visual Studio. Большинство рабочих сред с общими хостами в любом случае осуществляют первый вход в систему (обычно это все, что вы получаете), потому что многим приложениям, таким как DotNetNuke и т. Д., Требуется полный контроль над своими базами данных.

Строка подключения, указанная в вашем примере, должна работать без изменений.

Для получения дополнительной информации по этой теме:

Удостоверения пула приложений (IIS.NET)
Новое в IIS 7 - Изоляция пула приложений (Кен Шефер)

1 голос
/ 10 декабря 2010

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

  • Вам действительно нужна метабаза IIS 6 совместимость конфигурации здесь, если как это выглядит, вы строите сервер с нуля?
  • Скорее, чем ваш пользователь базы данных имеющий db_owner роль, ты мог бы сойти с рук только иметь db_datareader / db_datawriter? (Я не знаю базу данных NerdDinner, поэтому она может быть полностью правильной, это просто наблюдение)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...