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

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

Содержание


Защита от сетевых атак
Что такое горшок с медом?
Подобный материал:
1   ...   39   40   41   42   43   44   45   46   ...   101

Защита от сетевых атак


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


СОВЕТ

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

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

Что является объектом атаки? Многие взломщики, действующие на просторах Интернета, являются дилетантами с низким уровнем подготовки и поверхностными знаниями. Как правило, это — достаточно молодые люди с амбициями, иногда настроенные против общества, приступающие к взлому для того, чтобы просто попробовать, получится ли у них это или нет. Однако вы должны учитывать, что в настоящее время это только часть всех злоумышленников Интернета. Во Всемирной сети действует также немалое количество значительно более подготовленных и обученных взломщиков, обладающих более продвинутыми знаниями и навыками. Цели, которые они ставят перед собой, более значительны. Подчас их не интересует конкретно ваша система, однако совершая свои неблаговидные дела, они стараются тщательнее замести следы. Для этой цели они стараются использовать несколько посторонних систем и создать впечатление, что атака на более крупную цель была произведена кем угодно, но не ими. Именно с этой точки зрения они могут заинтересоваться конкретно вашей системой.

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

Вся сеть работает благодаря тому, что на определенном уровне существует доверие. Кредит доверия может быть предоставлен пользователю и/или системе. Система доверяет пользователю root. Вы доверяете своим исполняемым файлам. Именно поэтому взломщик почти всегда заменяет ключевой, наиболее важный исполняемый файл, которому вы доверяете. Именно поэтому взломщик почти всегда пытается получить доступ к вашей системе в качестве пользователя root. Если взломщик желает устранить абсолютно все следы своего проникновения и деятельности внутри вашей системы, он должен обладать полномочиями root. Если взломщик желает обладать доступом к системе в течение достаточно продолжительного времени, он должен установить в системе один или несколько модифицированных исполняемых файлов или отредактировать файлы /etc/passwd и /etc/shadow.


СОВЕТ

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

Так что же следует делать? Каким образом вы можете узнать об опасности? Как я сказал ранее, время — это ваш друг. Прежде чем произойдет попытка взлома вашей системы, в большинстве случаев (но все же не всегда) вы можете получить что-то вроде предупреждения. Чтобы узнать об уязвимых местах вашей системы, взломщик должен более тщательно изучить саму вашу систему. Это можно cделать несколькими разными способами однако наиболее простым является способ сканирования систем. При помощи сканирования взломщик может определить, какие службы, работающие на вашем компьютере, являются доступными для внешнего мира (при этом взломщик получает информацию, которая сильно напоминает сведения, отображаемые на экране при помощи команды netstat -a). В большинстве случаев он с точностью до нескольких разрядов версии узнает, какая операционная система установлена на вашем компьютере. Обладая этими сведениями, он может более подробно определить возможные наиболее слабые места защиты вашей ОС и используемых вами служб. При этом злоумышленник может попробовать угадать интересующую его службу. Например, зачастую взломщик, желающий знать больше о некоторой службе, может просто подключиться к ней и попросить сервер предоставить информацию об этой службе (подобная информация может предоставляться по запросу, а может выдаваться в самом начале соединения без какого-либо запроса).

На каждом этапе перечень потенциальных уязвимых мест в защите сужается. Это очень важный момент: чем больше атакующий может узнать о вашей системе, тем более уязвимой она является. Например, в среде Linux можно использовать несколько разных FTP-серверов: wu-ftpd, ProFTP и т. д. Каждый из этих серверов обладает своим набором уязвимых мест. Уязвимые места одного сервера отличаются от уязвимых мест другого сервера. В большинстве случаев попытка получить доступ к системе на уровне привилегий root (для этого часто используется английский термин «to root a box») осуществляется с использованием ошибки переполнения буфера.


СОВЕТ

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

Переполнение буфера — это ситуация, когда в переменную записывается число большее, чем может хранить в себе эта переменная. Иными словами, в ячейку записывается количество информации большее, чем может хранить в себе эта ячейка. Например, представьте себе, что некоторая переменная может хранить в себе не более 8 байт. Теперь подумайте, что может произойти, если в нее попытаться записать 16 байт. Если программист забыл включить в программу соответствующую проверку, обработка записываемого в ячейку числа может быть выполнена некорректно. Например, в переменной могут оказаться только младшие 8 байт, остальные 8 байт могут попасть в другую область памяти, в результате чего обработка данных может быть выполнена не так, как это происходит в нормальных условиях.

Приведу небольшой пример. Некоторое время назад взломщики использовали ошибку, присутствующую в программе phf (которая в настоящее время не используется, однако до сих пор иногда встречается на некоторых старых системах) для получения привилегированного доступа к web-серверам. Ошибка была основана на переполнении буфера ввода этой программы. Чтобы взломать сервер, необходимо было послать службе www этого сервера определенную последовательность символов в составе URL-адреса:

erver.org/cgi-bi n/phf?Qname=x%Oa/bin/sh+-s%0a


Обратите внимание на последовательность /bin/sh. Атакующий пытается обмануть phf и запустить командную оболочку с выходом в коммуникационный порт. Сценарий phf может работать от имени пользователя root, поэтому в результате удачного выполнения подобного трюка взломщик получает доступ к системе на уровне привилегий суперпользователя.

Но всегда ли злоумышленник осуществляет сканирование, прежде чем атаковать систему? Нет. Если ваша система делает доступными для внешнего мира какие-либо общеизвестные сетевые службы, например www, будьте уверены, что любой атакующий будет знать об этом без всякого сканирования. Если злоумышленник хочет атаковать web-сервер, ему не надо сканировать систему для того, чтобы узнать о том, что на ней запущена служба www. Он может просто попробовать осуществить атаку, описанную в предыдущем параграфе, в надежде на то, что на атакуемом сервере описанная дыра в системе безопасности не закрыта. Я более чем уверен в том, что если этот злоумышленник не будет пойман и наказан его интернет-провайдером (что очень маловероятно) или одной из атакованных им систем, рано или поздно он получит доступ к какой-либо системе. В действительности данная атака выглядит так, как будто нападение осуществляется с другого подверженного нападению компьютера (складывается впечатление, что нападение осуществляется с двух разных учебных заведений в одно и то же время и почти наверняка в каждом из этих учреждений для атаки используется взломанная система).

Какими еще средствами может воспользоваться взломщик, чтобы получить доступ к вашей системе? Таких методов множество, однако наиболее популярным является метод, когда взломщик получает доступ к системе, а затем просто «прослушивает» весь трафик, который передается через локальный сетевой кабель, выделяя из него все попадающиеся ему пары «имя пользователя/пароль», передаваемые через сеть. Например, любой дилетант, работающий в сети Road Runner (служба кабельных модемов, доступная в некоторых регионах США), может свободно прослушивать любой трафик, передаваемый через локальный сегмент сети. Если в локальном сегменте насчитывается 200-500 пользователей, за несколько дней злоумышленник может раздобыть более 1000 пар «имя_пользователя/па-роль». Многие пользователи Road Runner используют каналы этой сети для подключения к корпоративной сети своей компании. При этом используются telnet, ftp или программы получения электронной почты. Во многих случаях пароли передаются через сеть в незашифрованном виде. В результате взломщик получает доступ к сотням систем и становится обладателем множества корректных паролей, благодаря чему он получает самые широкие возможности. Все, что ему для этого потребовалось, — это проникновение в систему и взгляд вокруг. Обладая зарегистрированным в системе именем и подходящим корректным паролем, злоумышленник может закачать в систему необходимые файлы и установить комплект доступа на уровне root (root kit). После этого взломщик завладевает системой и может похитить еще больше пользовательских паролей.

Многие операторы связи уже знакомы с таким трюком и используют более защищенные схемы доступа пользователей кабельных модемов к Интернету. Благодаря этому «стянуть» из сети чужие пароли становится не так просто. Как правило, для обеспечения должного уровня защиты каждое соединение превращается в туннель от пользователя к серверу, благодаря этому системы, подключенные к одному и тому же сетевому кабелю, не могут читать чужой трафик, передаваемый по этому кабелю. Однако на данный момент времени такой подход используется далеко не всеми.

Когда взломщик проникает в систему, он может воспользоваться приемами, основанными на переполнении буфера. Находясь в системе, взломщик может попытаться реализовать подобный прием с любыми бинарными файлами, которые выполняются с использованием SUID root. Однако существуют и другие уязвимые места, например, те, которые связаны со скоростными условиями (race condition). Скоростные условия — это набор обстоятельств, которые пользователь может использовать для того, чтобы непривилегированное обращение к системе было выполнено на уровне привилегий root.

В системе Linux некоторые процедуры, такие как создание каталога, связаны с обращением к ядру ОС при помощи системного вызова. Процесс создания каталога состоит из двух этапов: на первом этапе благодаря выполнению высокопривилегированного кода создается каталог, на втором этапе владельцем этого каталога назначается пользователь, инициировавший процедуру создания каталога. Для выполнения каждого из этих этапов требуется некоторое время. Для смены владельца каталога требуется обращение к ядру, поэтому соответствующий процесс работает на уровне привилегий root.

К другим уязвимым местам относится возможность «обмана» ядра таким образом, чтобы оно по запросу обычного пользователя выполнило некоторый процесс на уровне привилегий root. Также злоумышленник может воспользоваться одним из «защищенных» каталогов, таких как /tmp. В этом каталоге процесс, работающий на уровне root, может разместить файл с известным именем. Взломщик, который заранее знает это имя, может заблаговременно разместить там такой файл, и тогда процесс root будет использовать созданный злоумышленником файл вместо своего собственного.

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

Что такое горшок с медом?

Горшок с медом (honey pot) — это система, предназначенная для приманивания «мух», то есть взломщиков, желающих проникнуть в вашу сеть. Данная система является «ловушкой для дураков» — любые попытки взлома документируются в журналах. Такая система не выполняет каких-либо важных функций, по крайней мере, она не содержит каких-либо важных данных. Единственное предназначение системы — отслеживать попытки доступа и записывать соответствующую информацию в журнал для дальнейшего анализа. Горшок с медом оснащается специальным программным обеспечением, например, на такой системе можно запустить утилиту tcpdump, которая будет записывать весь сетевой трафик, передаваемый через интерфейс, подключенный к Интернету.

Некоторые компании, занимающиеся разработками технологий в области безопасности, используют горшки с медом, чтобы лучше изучить анатомию взлома систем. Они занимаются этим, отлично зная, на что идут и чем они при этом рискуют. Использование горшка с медом, в особенности если взломщик знает, что это такое, может стать для вас причиной многих горестей и неприятностей. В наше время многие юные взломщики обладают ярко выраженной антиавторитарной направленностью, и если они обнаруживают расставленную вами ловушку, они будут пытаться всеми силами отомстить вам. Можно ожидать, что жестокие нападения будут совершаться на любой из компьютеров, идентифицируемый как часть вашей сети. Если же все эти попытки будут безуспешны, раздраженные до крайности злоумышленники наверняка организуют атаку типа Denial of Service (отказ обслуживания). Таким образом, если вы не являетесь профессиональным сетевым администратором с глубокими знаниями в области безопасности, использование горшков с медом — это не самая лучшая идея.