Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
3 DoS.docx
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
754.06 Кб
Скачать

2.5 Решение на основе front-end/back-end

Front-end (фронт-энд) и back-end (бэк-энд) — это обобщенные термины, которые отражают начальное и конечное состояния процесса. Front-end отвечает за получение ввода (входной информации) в любых формах от пользователя и обработку полученной информации в ту форму, которую back-end способен использовать. Front-end — это интерфейс между пользователем и back-end’ом.

В архитектуре программного обеспечения и проектировании программного обеспечения front-end — это часть программной системы, которая непосредственно взаимодействует с пользователем, а back-end инкапсулирует компоненты, обрабатывающие выходную информацию от front-end. Разделение программной системы на «фронт-энды» и «бек-энды» — это один из вариантов абстракции, применимой к программной системе.

Многие программы концептуально разделены на фронт и бек-энды, при этом в большинстве случаев «бек-енд» скрыт от пользователя. Также, некоторые программы служат просто front-end’ом к другим, уже существующими программам. Примером является графический пользовательский интерфейс (ГИП или GUI) построенный взамен интерфейса командной строки.

Многие общепринятые способы взаимодействия с компьютерами могут рассматриваться с точки зрения концепции, основанной на «front-end» и «back-end». Например, графический файловый менеджер, такой как Windows Explorer, может рассматриваться как front-end к файловой системе компьютера. Для операционной системы командный интерпретатор может рассматриваться как front-end к системе (для обыкновенных пользователей).

В компиляторах front-end транслирует исходный текст на языке программирования в промежуточное представление, а back-end создает из внутреннего представления машинный код. Обычно back-end оптимизирован для создания кода, который выполняется максимально быстро. Разделение на front-end/back-end distinction может отделить парсер, который имеет дело с исходным кодом, и back-end, который выполняет кодо-генерацию и оптимизацию; некоторые реализации компиляторов (такие как GCC) предоставляют выбор из множества front-ends (транслирующих исходный код с разных языков программирования) и/или множества back-ends (генерация кода под различные целевые процессоры).

Далее рассмотрим серверную архитектуру, которая позволяет разделить сервера на Front-End и Back-End. При таком разделении Front-End сервер принимает запросы пользователей и передает их на Back-End сервер [7].

Рисунок 2.2 – Простой вариант организации Front-End/Back-End топологии

На рисунке 2.2 показан простой вариант организации Front-End/Back-End топологии. Сервер Front-End находится в сети DMZ. Запросы из Internet попадают на этот сервер, а потом перенаправляются во внутреннюю сеть.

Рисунок 2.3 – Вариант с выделенным ISA сервером

На рисунке 2.3 представлен вариант с выделенным ISA сервером, который находится между интернет и Front-End сервером и перенаправляет запросы. Данный вариант является наиболее предпочтительным и рекомендован производителем.

3 Разработка программно-аппаратного комплекса

3.1 Выбор концепции для проектирования пак

Нетрудно заметить, что большая часть решений, представленных в анализе, является узконаправленными, и дают защиту от одного вида DDoS-атак. Программные решения, основанные на изменении стандартной для TCP/IP процедуры установления соединения с клиентом (например, SYN-cookies) предполагают наличие у всех клиентов соответствующего программного обеспечения. Этого нельзя гарантировать в случае сколь-нибудь массового доступа к ресурсу, поскольку множество клиентов нельзя определить заранее.

Аппаратные решения, как правило, реализуются на стороне провайдера и, помимо всё той же узкой специализации, обладают весьма высокой стоимостью.

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

Таким образом, наиболее актуальным методом решения поставленной задачи мне кажется технология внедрения промежуточных web- и cache-серверов, то есть Front-End/Back-End.

Необходимо отметить, что главная причина использования схемы Front-End/Back-End - эффективное использование ресурсов. Актуально это прежде всего для веб-порталов с большим количеством посетителей, от 10 http-запросов в секунду. Однако такая схема также повышает безопасность всей системы. Кроме того, для небольших компаний будет немаловажен тот факт, что если пускать клиентов напрямую к Back-End (например apache+mod_perl) без Front-End, то серверов под Back-End потребуется в несколько раз больше.

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