Брандмауэры и специальное программное обеспечение 8 Часть 4

Вид материалаРеферат

Содержание


Более старые атаки
Смягчение последствий атак DoS
Подобный материал:
1   ...   48   49   50   51   52   53   54   55   ...   101

Более старые атаки


Еще одна достаточно старая атака, от которой до сих пор могут пострадать некоторые системы, называется big ping (большой ping) или ping of death (смертельный ping). Вспомним материал более ранних глав, где речь шла о битах и байтах. Байт, как правило7, состоит из 8 бит. Для хранения значения длины пакета отводится два байта, то есть 16 бит. Любое 16-битное число лежит в диапазоне от 0 до 65 535. Таким образом, размер пакета не может превышать 65 535 байт. Сообщения ICMP по определению не могут быть крупнее, поэтому многие системы не проверяют (до сих пор) размер ICMP-пакета. На практике единственным ICMP-пакетом, размер которого с легкостью можно изменить, является ping-пакет.

Злоумышленники обнаружили способ модифицировать код, создающий ping-пакеты, таким образом, чтобы стало возможным создание очень больших пакетов, размер которых превышает установленный предел. ICMP-заголовок ping-пакета в нормальных условиях состоит из 8 байт. Стандартный пакет добавляет к этому 56 байт дополнительно, чтобы размер пакета стал равным 64 байт.

В Linux размер пакета (который по умолчанию составляет 64 байт) можно изменить. Для того чтобы указать количество дополнительных байтов, можно воспользоваться ключом -s. Однако стандартная утилита ping не позволяет использовать сколь угодно большое значение. Допустимыми являются значения от 1 до 65 468. При использовании значений от 1 до 65 454 утилита ping работает в нормальном режиме. Если вы укажете одно из значений от 65 465 до 65 468, утилита ping может вообще никак не сообщить о ходе операции либо на экране появятся сведения о множестве пакетов. Если же совместно с ключом -s указать значение большее, чем 65 469, утилита ping отобразит на экране сообщение о том, что пакет слишком большой. Благодаря этому отправить в сеть ping-сообщение, размер которого превышает максимально допустимый предел, невозможно. Таким образом, у систем, беззащитных перед атакой big ping, никаких проблем не возникает. Однако в Linux исходный код утилиты ping доступен для всех желающих, благодаря чему кто угодно может модифицировать его таким образом, чтобы стало возможным сгенерировать и отослать в сеть пакет любого размера.

В сети до сих пор используются системы, работа которых нарушается в случае приема крупных пакетов ping. Очевидно, что такие системы требуют защиты. Если в сети работает брандмауэр Linux и в составе ядра версии 2.2.x скомпилирован параметр CONFIG_IP_ALWAYS_DEFRAG=y (в ядре версии 2.4.x от этого параметра решили отказаться — данные функции выполняет netfilter), в этом случае фрагменты не будут передаваться и системы будут защищены от внешнего нападения.

Смягчение последствий атак DoS


Прежде чем вы доведете себя до крайности и вам начнут мерещится атаки DoS там, где их на самом деле нет, вы должны почувствовать, каким образом и по каким законам изменяется ваш сетевой трафик. При этом вы должны принимать во внимание также другие системы, которые подключены к тому же самому сетевому кабелю, что и вы. Если вы подозреваете, что подверглись атаке типа DoS, прежде всего необходимо рассмотреть другие причины, по которым производительность вашей службы могла понизиться. Возможно, причиной этого является повышенный интерес к вашей системе или к системе, которая работает по соседству с вами и использует тот же самый канал связи (например, причиной может стать ссылка на популярный сайт). В прошлом многие предприятия уже не однократно убеждались в том, насколько эффективной может оказаться рекламная кампания. Достаточно вспомнить демонстрацию последних моделей женского нижнего белья Victoria's Secret Show через Интернет в 1999 году. Реклама этого шоу была настолько эффективной, что количество желающих посмотреть на шоу через Интернет в несколько раз превысило ожидания организаторов. При этом сам сервер был в состоянии обслужить необходимое количество запросов, однако емкости канала связи, по которому он обменивался данными с Интернетом, оказалось недостаточно. Соответственно пострадали также и другие системы, подключенные к этому же каналу. В некотором отношении это можно назвать отказом в обслуживании (Denial of Service), однако подобная ситуация возникла ненамеренно.


ПРИМЕЧАНИЕ

Чтобы получить представление о нормальном сетевом трафике, вы можете воспользоваться программным средством Multi-Router Traffic Grapher (MRTG). Если, используя данную программу, вы проследите за маршрутизатором, который связывает вас с Интернетом (а возможно, и за маршрутизатором, который стоит следующим по цепочке), вы сможете получить неплохое представление о том, как меняется трафик. Программа MRTG отображает сведения о нагрузке на каналы в наглядном графическом виде. Прежде чем приступать к наблюдению за маршрутизаторами, следует спросить разрешения у тех, кому эти маршрутизаторы принадлежат (если эти маршрутизаторы принадлежат не вам). Программу MRTG можно получить по адресу:

ethz.ch/~oetiker/webtools/mrtg/mrtg.phpl


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

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

Выбор варианта действий во многом определяется тем, как именно вы соединены с Интернетом. Те, кто использует для подключения к Интернету кабельный модем, скорее всего, вообще не столкнутся с подобными атаками. Компании, предоставляющие доступ к Интернету с использованием кабельных модемов, делают все от них зависящее, чтобы обеспечить своим клиентам достаточную пропускную способность канала связи. Если же возникает атака типа Denial of Service, ее можно будет решить на уровне вашего провайдера.

Если вы используете линию DSL, значит, вы используете соединение типа «точка-точка», которое соединяет ваш сервер с вашим провайдером. При помощи traceroute вы сможете определить, подвержена ли атаке сама линия DSL или нагрузка создается только на более дальний от вас канал связи (на который вы вряд ли сможете повлиять). Однако лучше всего продолжать функционирование так, как будто никакой атаки нет или она оказалась неэффективной. Почему? Во-первых, рано или поздно атака будет остановлена. Во-вторых, если нападающий подумает, что атака неэффективна, он откажется от нее и попробует заняться чем-нибудь другим.

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

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