Шрифт:
Закладка:
8.3.2. Обнаружение и предотвращение вторжений
Помимо брандмауэров и скрубберов, администраторы сетей могут развернуть ряд других средств защиты, включая системы обнаружения и предотвращения вторжений, которые мы сейчас кратко обсудим. Как можно понять из названия, системы обнаружения вторжений (Intrusion Detection System, IDS) служат для обнаружения атак, в идеале еще до того, как атаки успеют причинить какой-либо урон. Например, они могут генерировать предупреждения при выявлении ранних проявлений атаки, таких как сканирование портов, попытки войти в систему путем прямого перебора паролей от SSH (когда атакующий просто перебирает различные популярные пароли) или обнаружение сигнатуры новейшего и мощного эксплойта в TCP-соединении. В то же время иногда атаку удается выявить лишь на позднем ее этапе, когда система уже взломана и необычно себя ведет.
IDS можно классифицировать по тому, где и как они работают. Хостовые системы обнаружения вторжений (Host-based IDS, HIDS) работают непосредственно на конечной точке (ноутбуке или сервере) и отслеживают поведение программного обеспечения или входящий и исходящий трафик веб-сервера только в пределах данного компьютера. Сетевые системы обнаружения вторжений (Network IDS, NIDS), напротив, проверяют сетевой трафик некоторой группы компьютеров. Обе эти разновидности систем имеют свои преимущества и недостатки.
Сетевые IDS привлекательны тем, что защищают большое количество компьютеров (и благодаря этому могут находить корреляции между событиями на разных хостах) и не используют их ресурсы. Таким образом, IDS не влияют на производительность компьютеров в защищаемой ими области сети. С другой стороны, при этом трудно устранять проблемы, касающиеся отдельных компьютеров. Допустим, что в трафике TCP-соединения имеются TCP-сегменты, частично накладывающиеся друг на друга: пакет A содержит байты 1–200, а пакет B — байты 100–300. Очевидно, что в данном случае имеется наложение байтов пользовательских данных. Предположим, что байты в накладывающейся области несколько различаются. Что в таком случае должна сделать IDS?
На самом деле вопрос заключается в следующем: какие байты будет при этом использовать хост-получатель? Если ему нужны байты из пакета A, то IDS должна проверить их на отсутствие вредоносного контента и проигнорировать пакет B. Но что, если этот хост использует байты из пакета B? А если одна часть хостов в сети принимает байты из пакета A, а другая — из пакета B? Затруднения могут возникнуть, даже если все хосты ведут себя одинаково и IDS знает, как они производят повторную сборку данных из TCP-потока. Даже если все хосты обычно принимают байты из пакета A, IDS может обнаружить, что этот пакет все равно некорректен, поскольку до адресата он должен пройти еще два-три транзитных участка, а его значение TTL равно единице (то есть он не сможет достичь пункта назначения). Такие трюки со значением TTL и накладывающимися диапазонами байтов в IP-фрагментах или TCP-сегментах называют методами обхода IDS (IDS evasion).
Еще одной проблемой при использовании сетевых IDS является шифрование. Если сетевые байты уже невозможно дешифровать, то системе IDS очень сложно проверить, являются ли они вредоносными. Это еще один пример того, как одно средство защиты (шифрование) может снизить эффективность другого средства (IDS). В качестве обходного маневра администраторы отдельных систем могут предоставить IDS ключи шифрования для сетевой IDS. Хотя этот подход работает, все же он не идеален, ведь тогда придется дополнительно заботиться об управлении ключами. При этом IDS видит весь сетевой трафик и, как правило, сама содержит множество строк кода. Из-за этого она становится привлекательной мишенью для атаки. Взломав ее, злоумышленники получат доступ ко всему сетевому трафику!
Недостатком хостовых IDS является то, что они используют ресурсы тех отдельных компьютеров, на которых работают, и видят лишь незначительную часть происходящих в сети событий. С другой стороны, им гораздо легче бороться с методами обхода IDS, поскольку они могут проверять поступающие данные после их повторной сборки сетевым стеком защищаемого компьютера. Кроме того, при использовании, к примеру, IPsec (когда шифрование и дешифрование пакетов происходит на сетевом уровне) хостовая IDS может проверять данные после расшифровки.
Как уже упоминалось, IDS могут различаться не только по расположению, но и по тому, как они выявляют угрозы. Здесь выделяют две основные категории. Сигнатурные системы обнаружения вторжений (Signature-based IDS) используют паттерны байтов или последовательностей пакетов, представляющие собой признаки известных разновидностей атак. Если вы знаете, что поступление в порт 53 UDP-пакета, содержащего 10 определенных байтов в начале пользовательских данных, говорит о применении эксплойта E, то IDS может проверять сетевой трафик на отсутствие этого паттерна и выдавать оповещение при его обнаружении. Это оповещение будет носить конкретный характер («Я обнаружил E») и обладать высокой степенью уверенности («Я точно знаю, что это E»). В то же время IDS на основе сигнатур могут выявлять только известные разновидности угроз, для которых доступны сигнатуры. Еще один подход сводится к тому, чтобы IDS выдавала оповещение при обнаружении необычного поведения. Например, если компьютер, который обычно обменивается SMTP- и DNS-трафиком только с несколькими IP-адресами, вдруг начинает отправлять HTTP-трафик на множество совершенно незнакомых IP-адресов за пределами LAN, IDS может посчитать это подозрительным. Поскольку такие системы обнаружения вторжений на основе аномалий (Anomaly-based IDS), или просто системы обнаружения аномалий, реагируют на любое нетипичное поведение, они могут выявлять и старые, и новые разновидности атак. Их недостатком является малоинформативность оповещений. Так, сообщение «в сети произошло нечто необычное» гораздо менее конкретное и полезное, чем сообщение «камера видеонаблюдения на воротах атакована вредоносной программой Hajime».
Система предотвращения вторжений (Intrusion Prevention System, IPS) должна не только выявлять, но и останавливать атаки. С этой точки зрения она действует так же, как уже известный нам брандмауэр. Например, обнаружив пакет с сигнатурой Hajime, IPS может отбросить его, не позволив ему дойти до камеры видеонаблюдения. Чтобы это сделать, IPS должна находиться на пути к объекту атаки и принимать решение о приеме или отбрасывании трафика на лету. IDS, напротив, может располагаться в другой части сети, при условии, что мы зеркалируем весь трафик так, чтобы IDS могла его видеть. Вы спросите: к чему все эти лишние сложности? Почему нельзя просто развернуть IPS и полностью избавиться от возможных угроз? Отчасти потому, что при этом встает вопрос производительности: скорость передачи данных будет определяться скоростью обработки данных в IPS. Если на обработку отведено слишком мало времени, то данные будут проверяться не слишком тщательно. Что, если будет допущена ошибка? Точнее, что, если IPS посчитает трафик какого-нибудь соединения вредоносным и отбросит эти