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

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

Содержание


Дополнительные замечания
Программа courtney
Подобный материал:
1   ...   93   94   95   96   97   98   99   100   101

Дополнительные замечания


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

Если сравнивать с серверными приложениями, между обнаружением уязвимого места в коде игры и исправлением этого зачастую проходит более длительное время. Уязвимые места в наиболее важных службах, как правило, обнаруживаются быстрее, чем аналогичные уязвимые места в играх. К сожалению, в некоторых играх определенные функции (такие как использование расширений DG для XFree) требуют, чтобы вы запустили игру на уровне привилегий root. Возможно, для вас это не будет проблемой (например, если вы не соединены с сетью или играете в игру, которая не является сетевой), поэтому вы вполне можете пойти на риск, однако этот риск должен быть для вас известным.

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

Заключение


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


25 Средства наблюдения за сетью


В данной главе рассматриваются следующие вопросы:

- использование courtney;

- как работает courtney;

- какими возможностями и недостатками обладает courtney;

- использование nmap;

- использование графической оболочки xnmap;

- возможности и особенности xnmap.

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

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


ПРИМЕЧАНИЕ

Для обеспечения безопасности можно воспользоваться множеством хороших программ. К ним относится, в частности, Port Sentry, Snort, IPPL и IPLogger. Однако помните, что протоколирование пакетов — это только часть работы. Вторая часть — это проверка журналов. Перечисленные программы, а также многие другие полезные программные средства можно обнаружить по адресу .net/.

Программа courtney


Программный пакет courtney — это средство наблюдения за сетью, написанное на Perl в лаборатории Lawrence Livermore Laboratory университета Калифорнии для Департамента энергетики Соединенных Штатов в 1995 году. Программа courtney появилась на свет почти сразу же после того, как авторы программного пакета SATAN решили предоставить свое творение для публичного использования. Программа SATAN (Systems Administrator's Tool to Assess Networks — инструмент системных администраторов для оценивания сетей) была первым программным средством, предназначенным для сканирования систем.

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


ПРИМЕЧАНИЕ

Многие администраторы, включая автора этой книги, считают, что сканирование портов — это атака. Единственной целью сканирования портов является обнаружение уязвимых мест системы, а единственной целью поиска уязвимых мест системы является намерение взломать эту систему. К узлам, с которых осуществляется сканирование портов, следует проявлять особенное внимание. Адреса этих узлов следует помечать или блокировать. Сканирование портов должно осуществляться только с разрешения администратора сканируемого узла.

Чтобы запустить пакет courtney, необходимо установить в системе библиотеку libpcap и программу tcpdump. Программа tcpdump входит в стандартный комплект OpenLinux, однако библиотека libpcap там отсутствует. Программа courtney запускает tcpdump и фильтрует вывод этой утилиты при помощи libpcap, сканируя поток в поисках определенных шаблонов. Подробнее о том, как работает courtney, будет рассказано далее.

Программа tcpdump переводит вашу сетевую карту Ethernet в смешанный режим (promiscuous mode), то есть режим прослушивания сети. Такой подход является палкой о двух концах — его можно использовать как во благо, так и для причинения вреда. Благодаря смешанному режиму вы можете читать содержимое всех пакетов, передаваемых через сетевой кабель, вне зависимости от того, адресованы ли эти пакеты вашей системе или нет. Таким образом, если за пределами вашей внутренней сети, в зоне, не защищенной брандмауэром, работают web-сервер, анонимный FTP-сервер, сервер DNS и почтовый сервер, вы можете запустить courtney на любом из них (или вообще на каком-нибудь другом сервере) и наблюдать за атаками, которые направлены против любого из этих серверов.

Однако режим прослушивания сети обладает и недостатками. Карта, работающая в этом режиме, не игнорирует ни одного пакета, передающегося через сеть. Именно так работают злоумышленники, пытающиеся получить доступ к информации, которая им не предназначена. Программа courtney, так как она написана на Perl, может быть легко модифицирована таким образом, чтобы ее можно было использовать для перехвата передаваемых через сеть пользовательских имен и паролей. Из главы 12 вы знаете, что клиент FTP ставит перед пользовательским именем метку USER, а перед паролем — метку PASS, courtney можно настроить на поиск таких пакетов и пересылку их по определенному почтовому адресу. Существуют и другие неприятные обстоятельства. Операционная система Linux больше не уязвима для атак типа big ping, однако эта атака может оказаться действенной в отношении других платформ, на которых можно запустить courtney. Для одной из таких платформ достаточно принять последний пакет big ping -и в результате ядро этой ОС подвисает. Таким образом, на любое программное обеспечение, переводящее сетевую карту в прослушивающий режим, следует смотреть с подозрением. Такое программное обеспечение следует использовать только на безопасных надежных системах. Безопасной является система, к которой обычные пользователи не подключаются ежедневно. Благодаря этому пользователи не могут воспользоваться той информацией, которую извлекает из сети работающая в прослушивающем режиме сетевая карта. Брандмауэр можно считать безопасной системой, однако переключение его сетевых карт в прослушивающий режим не рекомендуется.

Запустив courtney, обратите внимание на список процессов. То, что вы увидите, будет напоминать содержимое листинга 25.1.


Листинг 25.1. Фрагмент списка процессов (ps axww), в котором показаны courtney и tcpdump

pts/1 S 0:00 perl /usr/sbin/courtney

pts/1 S 0:03 tcpdump -1 ? (icmp[0] — 8 ) or ? (port sunrpc) or ?

((port (1 or 10 or 100 or 1000 or 5000 or 10000 or 20000 or 30000) or ? (port (6000

or 6001 or 6002 or 6010 or 6011 or 6012)) ) and ? (tcp[13] & 18 = 2) ) or ?

(port (tcpmux or ?? echo or ?? discard or ?? systat or ?? daytime or ?? netstat

or ?? charger, or ?? ftp or ?? telnet or ?? smtp or ?? time or ?? whois or ??

domain or?? 70 or ?? 80 or ?? finger or ?? tftp or ?? login or ?? uucp or ??

printer or ?? shell or ?? exec or ?? name or ?? biff or ?? syslog or ?? talk)

and ? (tcp[13] & 18 = 2) ) ?

Таким образом, видно, что courtney фильтрует все потоки данных, которые видит tcpdump, и сравнивает их со списками стандартных служб. Наименования этих служб видны в составе листинга 25.1. Этот аспект courtney при желании можно модифицировать. Весь код этой программы написан на Perl, поэтому его легко можно изменить. Программа занимает не так уж и много места, однако из соображений экономии я покажу вам лишь наиболее интересные места. Листинг 25.2 показывает часть кода courtney, которую при желании можно модифицировать.


Листинг 25.2. Фрагмент сценария Perl под названием courtney, в котором показаны отслеживаемые службы

@assoc_list =( 'sunrpc', 'icmp', 'ttime1, 'telnet', 'smtp',

'ftp', 'whois', 'domain', 'gopher', 'www',

'finger', 'exec', 'login', 'shell', 'printer',

'uucp', 'tcpmux', 'echo', 'di scard', 'systat'.

'daytime', 'netstat', 'chargen', 'tftp', 'name',

'biff', 'syslog', 'talk', 'portscan', 'xwindows' );

Если какая-либо из перечисленных здесь служб не упомянута в файле /etc/ services, сценарий courtney завершает работу, выведя на экран сообщение об ошибке. Если по какой-либо причине вы удаляете запись о службе из файла /etc/ services, вы либо должны удалить имя этой службы из массива assoc_list, либо вместо имени указать номер порта для данной службы.

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

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

Листинг 25.3. Параметры, при помощи которых courtney обнаруживает атаку

$UDATE_INTERVAL =5: # обновлять информацию о сетевой узле

#каждые X минут

$OLD_AGE =7; # стирать записи об узлах,

#если эти записи старше X минут.

$HIGH_THRESHOLD=15; # тяжелая атака "SATAN"

$LOW_THRESHOLD =9; # нормальная атака "SATAN"

По умолчанию courtney пытается обнаружить узел (адрес-источник), который подключается к более чем девяти службам в течение менее чем семи минут или к более чем 15-ти службам в течение менее чем семи минут. Эти узлы идентифицируются сценарием как узлы, осуществляющие нормальную или тяжелую атаку соответственно.

В системе Linux программа courtney распознает три различных типа сканирования: connect, SYN stealth и FIN stealth. Некоторые из операционных систем не реагируют на эти виды сканирования и даже не видят их (в этом случае courtney не будет их регистрировать). Это связано со способом, который используется ядром для обработки принимаемых пакетов. В системе Linux, в которой используется ядро версии 2.2.x, ядро реагирует на все эти виды сканирования, поэтому courtney будет регистрировать все подобные попытки. Более подробное описание этих типов сканирования содержится в разделе, посвященном программе nmap.

Теперь, когда вы знаете, по каким признакам программа courtney определяет факт нападения на вашу систему, вы можете представить себе, в каких ситуациях courtney не сможет обнаружить действия злоумышленников. Иными словами, вы можете представить себе уязвимые места courtney. Прежде всего, сценарий courtney чувствителен к скорости сканирования. Если сканирование осуществляется в течение нескольких часов (как это бывает при выполнении сканирования одним из способов stealth), более старые записи будут удаляться из таблицы соединений и таким образом, не будут вызывать «тревогу». Например, если атакующий будет проверять шесть портов каждые 15 минут, он сможет без труда избежать обнаружения. Программа courtney не сможет обнаружить злоумышленника также в случае, если он осуществит «сканирование» только одного порта.

Второй недостаток courtney связан с тем, что злоумышленник может изменить адрес-источник отправляемых им пакетов (или использовать для сканирования ftp proxy). В этом случае courtney сообщит вам о попытке сканирования, однако источник атаки будет указан неправильно. Иными словами, вы будете смотреть в одну сторону, в то время как атака будет исходить с другой стороны. Скорее всего, вы блокируете доступ из сети evil.net, в то время как на самом деле сканирование осуществляется из сети archevil.net.

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

Начнем с переменной времени. Наверное, это наиболее безобидная переменная, значение которой вы можете изменить. Как правило, при достаточно быстром сканировании для проверки всех хорошо известных служб достаточно всего нескольких секунд. Несмотря на это, сокращать семиминутный интервал не рекомендуется. Вы можете попробовать увеличить его, однако при этом следует быть осторожным — courtney хранит массивы записей «источник:порт», «прием-ник:порт» и время в оперативной памяти, поэтому при достаточно большой нагрузке на сеть память может быстро заполниться. Не стоит забывать о том, что courtney просматривает весь трафик, передаваемый через сеть, а не только трафик, адресованный локальному узлу. Если вы запускаете courtney в сети, через которую передается большой объем данных, даже если эти данные не адресованы подсети, в которой работает courtney, эта программа все равно будет осуществлять их анализ. Возможно, при помощи courtney вы сможете обнаружить атаки, исходящие из одной удаленной сети и направленные в другую удаленную сеть. Это может произойти в случае, если связанные с этим пакеты данных передаются через каналы вашей подсети (или переданы в вашу подсеть из-за неправильной настройки маршрутизатора Интернета, к которому вы подключены). Если вы увеличите продолжительность промежутка времени, возможно, это не даст вам ничего, за исключением излишнего расхода памяти.

Помимо переменной, определяющей промежуток времени, вы можете изменить значения переменных, определяющих количество служб, к которым пытается подключиться некоторый удаленный узел. Вы можете присвоить переменной LOW_THRESHOLD меньшее значение, однако в этом случае courtney может поднять ложную тревогу. Представьте, например, что некто, находящийся вдали от дома, подключается к локальному провайдеру и затем пытается соединиться с сервером, работающим в сети своего офиса. Этот пользователь может копировать файлы через FTP в обоих направлениях, использовать POP для получения почты, его web-браузер по умолчанию может сразу же после запуска подключиться к домашней страничке офисного web-сервера, возможно, пользователь воспользуется telnet или ssh для того, чтобы соединиться с офисной сетью. Таким образом происходит подключение к пяти различным сетевым службам. Скорее всего, все эти подключения будут выполнены в течение менее чем пяти минут. Если при этом вы уменьшите порог обнаружения попытки сканирования, программа courtney сообщит вам, что данный пользователь пытается сканировать вашу систему, в то время как на самом деле ничего подобного не происходит. Конечно же, вы можете помимо снижения порогов обнаружения сканирования также удалить некоторые из служб из массива @assoc_list. Если вы хотите наблюдать лишь за одним или двумя портами, к которым не должен подключаться ни один из внешних пользователей, для этой цели лучше использовать tripwire. Если внимательно изучить содержимое массива @assoc_list, можно заметить, что в этом массиве не упоминаются некоторые из стандартных служб, например, РОР2, РОРЗ, ШАР и SSH. Возможно, будет лучше, если вы добавите эти службы в массив, особенно с учетом того, что служба ШАР является чрезвычайно привлекательной целью для взломщиков. Если вы добавляете в массив службу SSH, вы должны добавить ее также и в файл /etc/services вашей системы.

При запуске courtney можно использовать параметры командной строки. Наиболее часто используемым параметром является команда, предписывающая Courtney пересылать оповещения об обнаруженных атаках на некоторый почтовый адрес (обычно root). Именно так по умолчанию настраивается сценарий init К этим параметрам относятся:

-i имя_интерфейса — интерфейс, через который осуществляется прослушивание (если не указан, прослушивание осуществляется через интерфейс по умолчанию);

- -d — включение отладочного режима, то есть режима с выводом дополнительной диагностической информации;

-l — отключение протоколирования syslog (протоколируемые данные пересылаются пользователю);

-s — включение вывода информации на экран; ) -с — отображение сведений о соединениях;

-m адрес — оповещения об обнаруженных атаках пересылаются по электронной почте на указанный адрес;

-h — электронная справка.

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