Доступная производственная архитектура программного обеспечения как услуги на базе ASP.NET и SQL Server - Веб-уровень

ОГЛАВЛЕНИЕ

Веб-уровень

Общедоступный брандмауэр

Сделать: Использовать соединения брандмауэра, подключенного к интернету (общедоступный маршрутизатор поставщиков услуг хостинга или что-нибудь в этом роде) и подключенного к маршрутизатору или коммутатору, называемому внешним маршрутизатором. Этот брандмауэр называется общедоступным брандмауэром (ОБ)

Почему: Без ОБ серверы беззащитно открыты перед интернетом. Можно возразить, что достаточно брандмауэра Windows, но это не так. Брандмауэр Windows не в состоянии столь же успешно, как аппаратные брандмауэры, справляться с распределенными атаками на отказ в обслуживании, TCP-флудом, неправильно сформированными пакетами. В аппаратном брандмауэре есть специализированный процессор, управляющий всей фильтрацией. Если поступит слишком много неправильно сформированных запросов, процессоры веб-серверов будут перегружены защитой от атаки и не смогут выполнять код ASP.NET.
Сделать: На ОБ должны быть открыты только порты 80 и 443. Если не используется SSL, то должен быть открыт только порт 80. Не оставляйте открытым порт удаленного рабочего стола на общедоступном брандмауэре.

Почему: Нельзя открывать серверы перед интернетом для удаленного рабочего стола. Если кто-то перехватит сеанс удаленного рабочего стола, пока вы управляете сервером из кафе через незащищенный Wi-fi – вы обречены. Доступ к удаленному рабочему столу должен осуществляться только через VPN(virtual private network - виртуальная частная сеть).

Сделать: Никогда не открывать порт FTP.

Почему: FTP незащищен, он передает имя пользователя и пароль открытым текстом. Любой с базовыми знаниями о взломе может перехватить имя пользователя и пароль, когда вы входите на рабочий сервер через FTP. Если это обязательно нужно, используйте FTP, не требующий имени пользователя и пароля и позволяющий только писать файлы в конкретную папку и не дающий ничего читать и видеть список файлов на сервере FTP. Таким образом вы никому не раскроете учетные данные сервера и сможете хотя бы передавать файлы на веб-серверы при необходимости. Также убедитесь, что принудительно задана дисковая квота на томе, куда вы загружаете файлы, и что пропускная способность жестко ограничена. В противном случае некто может использовать всю пропускную способность для загрузки огромных файлов и истощить ваше дисковое пространство.

Сделать: Никогда не открывать порты совместного использования файлов

Почему: Служба совместного использования файлов – один из самых уязвимых портов. Он оставляет незащищенными критические службы Windows, которые могут быть взломаны с целью выполнения произвольного кода на сервере и его уничтожения.

Внешний коммутатор с балансировщиком нагрузки

Сделать: Внешний коммутатор имеет функцию балансировки нагрузки, равномерно распределяющую трафик по веб-серверам. То есть каждый веб-сервер, помещенный за балансировщик нагрузки, получает равную долю суммарного трафика. Каждый веб-сервер имеет сетевую карту, подключенную к этому коммутатору. Это общедоступное соединение. Если трафик не превышает 10 миллионов обращений в день, достаточно коммутатора 100Мбит и сетевой карты с такой же скоростью. Можно выбрать брандмауэр с балансировщиком нагрузки, имеющий достаточно портов для подключения всех веб-серверов.
Почему: Отдельная сетевая карта используется для передачи исключительно трафика веб-сайта по специальному сетевому соединению, так что ему не мешает никакой другой локальный трафик.

Коммутатор производит балансировку нагрузки. Не используйте балансировку сетевой нагрузки Windows. Цель – заставить веб-серверы выполнять только свою работу – исполнять код ASP.NET, обращаться к базе данных, возвращать страницы html и статические файлы, и всё тут. Оставьте все остальное другим компонентам. Аппаратные балансировщики нагрузки очень эффективны и более отказоустойчивы. При выборе программной балансировки нагрузки придется периодически перезагружать серверы для решения загадочных проблем типа «сервер не взаимодействует с другими» или «сервер получает слишком много трафика», и так далее.

Сделать: Оставить балансировщик нагрузки простым, производить только базовое циклическое распределение трафика, без причудливого сходства, без разбора заголовка запроса.

Почему: Сходство и фильтрация URL для обслуживания определенных URL от определенного сервера плохо работали. Тратились несчетные часы на общение по телефону со службой поддержки Cisco для диагностирования странного поведения. Служба поддержки предоставляла нескончаемые исправления, исправлявшие одну ошибку, но привносившие другую. Сходство вело себя странно, убирая сервер из балансировщика нагрузки, по-прежнему доставлявшего ему трафик, и так далее. Применялась фильтрация URL, когда некоторый определенный шаблон URL типа www.pageflakes.com/company обслуживается определенным веб-сервером. Но для этого требовалось, чтобы балансировщик нагрузки открывал каждый запрос, разбирал его, находил URL, сравнивал его с длинным список шаблонов URL и решал, куда отправить трафик. Это было плохое решение. Оно заставляло балансировщики нагрузки задыхаться при большом трафике, переполнять свой буфер внутренних ошибок, часто перезагружаться для устранения неполадок, и так далее. Это дало очень ценный урок – “оставляйте балансировщик нагрузки простым – используйте базовый циклический алгоритм”.

Сделать: У каждого маршрутизатора и брандмауэра должен быть резервный.

Почему: При отказе любого устройства активизируется резервное. Если нет резервного общедоступного брандмауэра, то при отказе брандмауэра веб-сайт выходит из строя, пока не заменят брандмауэр. Аналогично при отказе внешнего маршрутизатора/коммутатора веб-сайт выходит из строя. Поэтому следует иметь резервный брандмауэр и коммутатор/маршрутизатор. Тяжело потратиться на устройство, бездействующее 99% времени, но когда оно спасает положение и предотвращает отключение сайта на час, расходы оправдываются. Более того, иногда придется обновлять прошивку брандмауэра или маршрутизатора, и при этом придется перезагрузить устройство. При перезагрузке устройства трафик не может проходить через него. В таком случае подключается к сети резервное устройство, обновляется и перезагружается основное устройство, затем основное устройство подключается к сети и обновляется и перезагружается резервное устройство.

Сделать: Каждый веб-сервер имеет вторую сетевую карту, подключающую веб-сервер к частной сети, где находятся базы данных. На схеме это внутренний маршрутизатор или внутренний коммутатор.
Почему: Не используйте одну и ту же сетевую карту для подключения к частной и к общедоступной сети. Трафик общедоступной сети не должен перегружать трафик локальной сети. Характер трафика в общедоступной сети и в частной сети абсолютно противоположный – общедоступная сеть передает трафик менее частыми длинными очередями (доставка большого HTML- ответа браузерам), а частная сеть передает трафик высокочастотными короткими очередями (осуществление коротких и частых обращений к базе данных).

Сделать: Приобрести относительно мощные веб-серверы с достаточной емкостью запоминающего устройства. В качестве веб-серверов были выбраны серверы Dell 1950, имеющие 2 четырехъядерных процессоры с оперативной памятью 8 ГБ и 3-мя сетевыми картами. Имеется 4 накопителя SATA 500 ГБ в двух RAID 1.

Почему: Том C: расположен на одном RAID 1, содержащем операционную систему, а том D: расположен на другом RAID 1, содержащем код веб-приложения и огромные журналы IIS. Можно подумать, зачем нужно 500 Гб на раздел операционной системы? Очень большая очередь сообщений Майкрософт находится на диске C:. Зачем так много места на диске D:? При включении длинных кук IIS, из-за того что огромные куки аутентификации форм ASP.NET отправляются в каждом запросе и записываются в журнал, журналы IIS сильно разрастаются. Может генерироваться 3 Гб журналов IIS на каждый сервер для сайта со средним трафиком. Следует оставить достаточно места на веб-сервере для хранения журналов IIS за несколько недель, на тот случай, если внутренние системы переместят эти журналы куда-нибудь в другое место при нарушении передачи отчетов.

Сделать: Установить 64битную версию Windows.

Почему: Без 64битной ОС нельзя полностью использовать 4 ГБ ОЗУ или более. Фактически, в 32битной Windows используется около 3.2 GB даже при наличии 4 Гб ОЗУ. У 32битного процессора есть ряд проблем с адресацией, особенно с контроллерами PCI, использующими часть адресного пространства над 3.2 Гб для сопоставления с устройствами. Итак, для Windows доступно меньше 3.2 Гб ОЗУ. Но 64битная ОС позволяет использовать терабайты ОЗУ. 64битная версия каркаса .NET достаточно устойчива, чтобы выполнять мощные приложения. 64битная Windows может плохо работать на персональных компьютерах, но 64битные серверы сейчас весьма надежные. За два года работы вообще не было сбоев.

Сделать: Внутренняя сеть полностью 1Гбит. Все сетевые кабели гигабитные, маршрутизатор/коммутатор поддерживает гигабит. Сетевые карты на веб-серверах, подключенных к внутреннему коммутатору, тоже гигабитные. Потратьте как можно больше средств на эту конфигурацию, чтобы она была самой быстрой.
Почему: Здесь проходят все соединения от веб-сервера к серверам баз данных. По этим соединениям очень часто передается много данных. Каждая страница веб-сайта может делать от 10 до 100 обращений к базе данных. На каждой странице производятся частые и короткие передачи. Следовательно, все соединения локальной частной сети должны быть очень быстрыми и с малой задержкой.

Маршрутизатор для объемных операций будет рассматрен позже.

Возможность подключения VPN

В правой части схемы показана возможность подключения VPN. Брандмауэр с поддержкой VPN подключает офис и перемещающихся пользователей к внутреннему маршрутизатору. Из внутреннего маршрутизатора пользователи попадают в веб-серверы и в серверы базы данных. Подключение должно быть быстрым, если передается много файлов между офисом и производственной средой. Например, если ежедневно сбрасываются гигабайты журналов IIS из рабочих серверов в офис, то для этого требуется очень хорошее подключение, хотя интернет-соединение в офисе всегда будет узким местом. Если имеется подключение T1 от офиса к производственной среде, то 10битные брандмауэр, коммутатор и кабели нормальны, поскольку T1 равен 1.544Мбит/с.

Почему: Зачем нужна VPN? Потому что крайне важно разрешить подключение к производственной среде только через зашифрованный канал. VPN – единственный способ обеспечить полностью защищенное подключение от компьютера к производственной среде и предотвратить перехват или кражу сессии. К тому же, VPN создает дополнительный уровень защиты на базе имени пользователя и пароля, требуемых для входа в производственную среду. То есть, даже при краже учетных данных сервера, если они хранились в USB-брелоке, никто все же не сможет подключиться к рабочим серверам, если они не подключены к VPN.

Сделать: Поднять VPN типа сеть-сеть от офисной сети к производственной среде. Использовать маршрутизатор с поддержкой VPN типа сеть-сеть.

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

Сделать: Иметь в офисе маршрутизатор, отделяющий рабочие станции разработчиков и айтишников от остальных рабочих станций.

Почему: Если на маршрутизаторе настроена VPN типа сеть-сеть, все, кто подключен к этому маршрутизатору, имеют доступ к производственной среде. Но ноутбуки менеджеров по продажам не должны иметь доступ к производственной среде. Следовательно, надо изолировать доверенные компьютеры типа рабочих станций разработчиков и айтишников и изолировать остальные компьютеры в сети в разных подсетях. Далее доступ к производственной среде дается только доверенной подсети. В хорошем маршрутизаторе можно установить правила, позволяющие только конкретной подсети слать трафик на IP рабочих серверов. Если в офисе есть локальные промежуточные сервера, надо принять такую же меру предосторожности. Их должна видеть лишь доверенная подсеть. Такая дополнительная мера предосторожности предотвращает нежелательное распространение новых вирусов и червей, которые менеджеры по продажам приносят в офис в ноутбуках.