
Настройка сервера для защиты от DDoS
После перенастройки домена все запросы
от легальных клиентов устремятся на защитный сервер. Однако, как было замечено
в статье о методах защиты, это принесет
немедленный эффект только в том случае, если ботнет обращается к атакуемому
серверу используя его доменное имя. В случае же, когда ботнет "нацелен"
непосредственно на IP-адрес сайта, запросы от атакующих компьютеров будут
продолжать поступать на сервер не взирая на изменения настроек доменного имени
и атака по прежнему будет достигать своей цели.
Однако несмотря на кажущуюся бесполезность перенаправления легального
трафика на защитный сервер в случае атаки на IP-адрес, появляется однозначный
критерий для разделения всего потока запросов на полезные и паразитные. По той
причине, что посетители сайта почти никогда не использует IP-адрес для обращения
к сайту, все их запросы будут поступать сначала на защитный сервер и приходить
на сайт уже с его адреса. Другими словами, все "нормальные" посетители будут
ходить как бы с одного заранее известного адреса, а атакующие хосты - с разных.
А по той причине, что адрес, с которого будут поступать запросы обычных
посетителей известен, то можно смело запрещать обращение к сайту со всех
остальных адресов. В этом случае атака уже не будет достигать своей цели в
прямом смысле этого слова - все запросы с хостов ботнета будут просто
игнорироваться сервером и практически не смогут влиять на его работоспособность.
Следует повторить, что большинство описываемых в этой статье методов
применимы только для сайтов, находящихся на выделенном сервере (реальном или
виртуальном). Если сайт находится на разделяемом хостинге, то большинство
способов блокировки паразитного трафика реализовать нельзя.
Способ, которым можно запретить обращения к серверу с неизвестных адресов на
уровне операционной системы зависит от типа операционной системы. Сегодня на
web-серверах чаще всего используются UNIX-подобные окружения. Обычно это Linux,
реже - FreeBSD. Некоторые большие проекты работают на серверах под управлением
Microsoft Windows.
Настройка Linux-сервера
Для настройки защиты на Linux-сервере, нужно иметь доступ к его командной
строке. На интернет-серверах как правило устанавливается минималистичная
сборка операционной системы, не оснащенная графическим интерфейсом. Поэтому
все настройки как правило производятся в текстовой консоли при помощи
протокола SSH. Чтобы получить доступ к консоли сервера, нужно сначала узнать у
хостинг-провайдера логин и пароль для SSH-входа на сервер. Важно, чтобы
используемый логин давал право изменения настроек системы.
Выбор программы для доступа к командной строке сервера зависит от
операционной системы на вашем рабочем компьютере. В случае Windows, нужно
скачать программу PuTTY (прямая ссылка для
закачки:
http://the.earth.li/~sgtatham/putty/latest/x86/putty.exe). После запуска
скачанного файла на экране появится окно основных реквизитов для подключения.
В поле Host Name (or IP address) необходимо ввести IP-адрес сервера
(имя типа www.site.com вводить тоже можно, но только если доменное имя
еще не было перенастроено на адрес защитного сервера). После этого нужно
только нажать кнопку Open.
Если это первое подключение к данному серверу, то на экране появится окно
предупреждения безопасности, в котором нужно нажать кнопку Да.
Если связь с сервером установлена успешно, то будет отображено черное окно
и через несколько секунд в нем появится текстовый запрос имени пользователя.
Тут нужно ввести логин администратора сервера и нажать ENTER на
клавиатуре. После этого появится строчка с запросом пароля, в которую нужно
ввести выданный администратором хостинг-провайдера пароль и снова нажать
ENTER на клавиатуре (при вводе пароля, нажимаемые на клавиатуре символы
в окне не отображаются). Если логин и пароль введены правильно, в окне появится
текст приветствия и приглашение для ввода команд.
Именно в этом окне и нужно вводить выданные при регистрации сайта команды.
Необходимо помнить, что эти команды требуют посимвольного соответствия с учетом
регистра символов. Поэтому, чтобы не ошибиться при вводе, команды нужно просто
скопировать из окна подсказки к адресу защитного сервера в
панели управления защитой и вставить в командную строку при помощи
комбинации клавиш Shift+Insert (комбинация Ctrl+v в этом окне не
работает). После выполнения команд, консоль должна иметь такой вид.
То есть ни между командами ни после них не должно быть никаких сообщений
от операционной системы. Только в этом случае можно считать что настройки были
изменены успешно. Для завершения работы с командной строкой нужно ввести
команду exit и нажать клавишу ENTER на клавиатуре.
Если ваш рабочий компьютер работает под управлением операционной системы
Linux, то для доступа к командной строке сервера можно использовать стандартную
программу ssh, вызвав ее с параметром -l имя_пользователя и
адресом сервера в командной строке вашего компьютера.
При первом подключении также будет выведено предупреждение системы
безопасности, на запрос которого нужно с клавиатуры ввести слово yes и
и нажать клавишу ENTER на клавиатуре. Все дальнейшие действия в
полученной таким образом консоли ничем не отличаются от действий в программе
PuTTY.
Также следует помнить, что все изменения, внесенные выполнением этих команд,
чаще всего не сохраняются при перезагрузке сервера. Поэтому если сервер был
перезагружен, ввод команд необходимо повторить снова. Однако возможен и
вариант, когда системный администратор настроил автоматическое сохранение
настроек, в этом случае перезагрузка не будет требовать повторного их ввода.
Настройка FreeBSD-сервера
Настройка сервера под управлением FreeBSD подобна настройке Linux-сервера.
Для этого также нужно подключиться к консоли при помощи программы PuTTY
или ssh, только команды нужно вводить иные.
Тексты команд можно узнать на странице пояснений к адресу защитного сервера
на панели управления защитой. После
выполнения каждой команды на экран выводится строка, более подробно описывающая
созданное правило межсетевого экрана. Если вместо такой строки выводится
какое-нибудь иное сообщение, то значит что произошла ошибка. На рисунке красным
прямоугольником выделены три выполненные команды и результаты их выполнения.
После ввода всех команд можно проверить созданные правила при помощи команды
ipfw show. Вот пример выполнения этой команды сразу после добавления
необходимых правил. Красным цветом обведен весь вывод команды, желтым цветом
показаны строки, отвечающие за добавленные правила.
Так же, как и в Linux, чаще всего сервер настроен так, чтобы внесенные
данными командами изменения сбрасывались при перезагрузке сервера, поэтому
если после изменения настроек была произведена перезагрузка, необходимо
проверить наличие созданных правил командой ipfw show и при
необходимости ввести все команды повторно.
Настройка Windows-сервера
Все больше серверов в интернете работают под управление Microsoft Windows,
и если защиты требует именно такой сервер, но для его настройки нужно
подключиться к нему при помощи любого RDP-клиента. В комплект всех современных
версий Windows входит такая программа и для ее запуска нужно сначала открыть
меню Пуск, затем, если используется Windows XP или ниже, то выбрать пункт
Выполнить..., ввести в поле вводе строку mstsc и нажать OK.
Если используется Windows Vista или выше, то строку mstsc нужно ввести
в поле найти программы и файлы и нажать ENTER на клавиатуре.
Если на вашем компьютере установлена операционная система Windows 2000 или
более ранняя, но программу удаленного доступа нужно сначала установить на
компьютер. Для этого с сайта
Microsoft нужно скачать установочный файл, запустить его и следовать
инструкциям на экране.
Если на вашем компьютере установлена операционная система Linux, то
клиент удаленного доступа к рабочему столу должен быть скачан и установлен
согласно правилам установки программ в вашем дистрибутиве. Примером такой
программы является Remote Desktop Protocol
Client, однако существуют и другие продукты аналогичного назначения.
После запуска программы удаленного доступа на экране появится окно
подключения с одним полем ввода Компьютер. В это поле нужно ввести
адрес сервера и нажать Подключить.
Если связь с сервером установлена успешно, то появится окно с запросом
имени пользователя и пароля для входа. Как и в случае Linux-сервера, имя
пользователя с администраторскими полномочиями нужно заранее узнать у
хостинг-провайдера.
После входа на сервер будет отображен его рабочий стол. Далее, действия по
настройке зависят от версии Windows.
Windows NT и Windows 2000 не имеют встроенного firewall,
поэтому настройка должна производится согласно инструкции к установленному
программному обеспечению. Правила настройки сводятся к трем пунктам:
- Разрешение доступа к TCP-порту номер 80 (http) с адреса защитного сервера.
- Запрет доступа к TCP-порту номер 80 (http) со всех остальных адресов.
- Запрет получения ICMP-пакета номер 8 (echo request) со всех адресов.
Windows 2003 может использовать как сторонний firewall, так и
встроенный. Тип этого ПО нужно уточнить в службе поддержки хостинг-провайдера.
В случае использования стороннего ПО, за инструкцией по настройке нужно
обращаться к его документации. Втроенный firewall предоставляет до ступ к
настройкам при помощи апплета Windows Firewall в панели управления.
При запуске этого апплета откроется окно настроек межсетевого экрана.
Если в этом окне выбран пункт Off, то нужно еще раз уточнить в технической
поддержке хостинг-провайдера о типе используемого межсетевого экрана. Если
используется межсетевой экран стороннего производителя, то можно дать только
общие рекомендации по его настроке, пречисленные выше для операционных систем
Windows NT и Windows 2000. Если же никаких сторонних программ не
используется, то в этом окне нужно выбрать пункт On, а затем перейти на
вкладку Exceptions для настройки правил.
На этой вкладке нужно найти строку, отвечающую за доступ к web-серверу. В
зависимости от типа использемого ПО, настроек и фантазии системного
администратора, эта строка может содержать слова HTTP, WEB,
WWW, IIS, Apache, nginx.
Найдя нужную строку, необходимо выделить ее и нажать кнопку Edit...,
после чего откроется окно базовых настроек правила.
Если найти нужную строку не удалось, то нужно попробовать создать новое
правило при помощи кнопки Add Port..., в этом случае все поля отрывшегося
окна нужно заполнить теми же значениями, что показаны на рискнуке.
Вид этого окна зависит от типа правила и может быть не таким как на рисунке,
но в нижней его части обязательно будет кнопка Change scope..., которую
нужно нажать и в появившемся окне переключатель доступа поставить в положение
Custom list, а в текстовое поле под переключателем ввести выданный адрес
защитного сервера.
Если в этом поле ввода уже присутствуют какие-то адреса, их нужно где-нибудь
сохранить, а адрес защитного сервера вписать вместо них. После окончания атаки
эти адреса нужно будет вернуть на место.
Теперь нужно нажать OK в двух верхних открытых окнах, чтобы сохранить
внесенные изменения. Другие правила изменять обычно не требуется, но перед
сохранением общих настроек нужно обязательно убедиться что в списке присутствует
правило Remote Desktop и что оно отмечено флажком. Если нажать OK
при отстуствующем или выключенном правиле Remote Desktop, то связь с
сервером будет мгновенно потеряна и снова подключиться к нему будет невозможно!
Из этой ситуации будет только один выход - обращаться к службе технической
поддержки хостинг-провайдера для ручного восстановления настроек.
Далее, на вкладке Advanced, нужно найти в списке подключений то
подключение, которое используется для соединения с интернетом. Чаще всего оно
там единственное (как на картинке), но если это не так, то нужно уточнить у
службы поддержки хостинг-провайдера имя интернет-подключения.
Рабочее интернет-подключение должно быть отмечено флажком и выделено. После
этого нужно перейти в режим тонких настроек при помощи кнопки Settings.
На первой вкладке Services, ничего менять не следует, а на второй
вкладке ICMP снять флажок со строки Allow incoming echo request
(если он был установлен).
После этого нужно закрыть все открытые окна нажатием кнопок OK и
настройку сервера под управлением Microsoft Windows 2003 можно считать
законченной. В отличии от операционных систем Linux и FreeBSD, все внесенные
изменения сохраняются при перезагрузке сервера, поэтому повторная настройка
больше не потребуется.
Настройка WEB-сервера
После внесения всех необходимых изменений в настройки межсетевого экрана,
вероятно также потребуется модификация настроек WEB-сервера.
Дело в том, что для балансирования нагрузки, часто ограничивается максимальное
количество одновременных подключений с одного IP-адреса. В случае обычной работы
это ограничение полезно и имеет смысл. Но когда начинается фильтрация трафика
защитным сервером, все полезные подключения будут осуществляться с одного
адреса - адреса защитного сервера. Поэтому перед началом фильтрации необходимо
изменить конфигурацию WEB-сервера таким облазом, чтобы он мог принимать
максимально возможное количество подключений с одного адреса.
Если используется WEB-сервер nginx, то за этот параметр отвечает
строка limit_conn конфигурационного файла. Этих строк может
быть несколько в разных местах главного конфигурационного файла, а так же
в подключаемых вспомогательных файлах. Рекомендуемое значение этого
параметра на время защиты равно произведению параметров worker_connections
и worker_processes. То есть если в конфигурационном файле есть
строки:
worker_processes = 2
worker_connections = 1024
то число напротив строки limit_conn должно быть 2048.
Если используется WEB-сервер Apache, то ограничение количества
подключений возможно только при наличии загруженного модуля mod_limitipconn.
Если этот модуль установлен, то строка, задающая ограничение называется
MaxConnPerIP. Этих строк может быть несколько в разных местах
главного конфигурационного файла, а так же в подключаемых вспомогательных
файлах. Рекомендуемое значение этого параметра на время защиты равно
значению параметра MaxClients.
В случае использования иного WEB-сервера, за инструкцией по настройке нужно
обращаться к его документации.
|