Тестирование файрвола
C чего начать
Данная статья может помочь вам в двух ситуациях. Первая: вы хотите получить точное представление о возможностях файрвола с соответствующими пояснениями. Вторая: вам необходимо оценить степень безопасности вашей сети.
Мы не рассматриваем конечную цель аудита как проникновение в подсеть, которую прикрывает файрвол. Это тема для другого разговора. Также мы не собираемся обсуждать, какие firewall`ы лучше или хуже. У каждого из них есть свои приемущества и недостатки. Наша задача — не выбрать по каким-то критериям лучший firewall, а правильно настроить уже имеющийся.
Оправдание ожиданий
Первый шагом по аудиту файрволла будет получение ясного представления для самих себя, что мы ожидаем от его работы. Ответ на этот вопрос можно оформить в виде security policy (политики безопасности). Убедитесь, что вы четко понимаете, какого результата хотите добиться.
В будущем это даст возможность сравнить результаты тестирования и имевшиеся до этого ожидания и таким бразом оценить величину имевшейся ошибки. Возможна такая ситуация, когда вы не знаете, как для себя определить это ожидание: вы новичок в компании и только еще разбираетесь в ситуации или в результате слияния под вашу ответственность попали еще несколько сетей. Вне зависимоти от подобных условий попытайтесь перед началом четко определить свои цели.
Методика
Процесс аудита настроек файрвола можно разделить на две части. Первая: вы хотите протестировать firewall сам по себе, как критичную часть в системе безопасности.Второе: вы хотите проверить настройки системы правил, определяющую проходящий через него трафик.
Файрволл
Первое, убедитесь в безопасности файрвола в плане физического доступа к нему посторонних лиц. Если с этим проблемы, то все остальной труд напрасен. Следущее, используемая ОС, сама по себе, должна быть достаточно грамотно настроена в плане безопасности.
Чтобы проверить это, надо обратиться к armoring checklist. Следующий шаг — сканирование портов файрвола, как со стороны внутренней сети, так и со стороны Internet (icmp,udp, tcp) для определения открытых портов. Большинство правильно сконфигурированных файрволов не иемют открытых портов. Более того, они игнорируют ICMP-пакеты, приходящие из внешней сети.
Работать должно всего несколько служб. Без крайней необходимости порты не должны открываться. Возможно, многие из пользователей CheckPoint FireWall-1 будут неприятно удивлены, когда обнаружат в результате сканирования несколько открытых портов — 256, 257, 258.
Эти порты открыты по умолчанию для администрирования (control properties) Я настоятельно рекомендую их закрыть вместе с ICMP, который также открыт по умолчанию. Если оставить ICMP открытым, то ваша сеть может быть легко просканирована из Internet. Если вам все же небходимы эти службы, то задайте соответствующее правило для ограничения диапазона IP-адресов, с которых к ним можно подсоединяться. Основная идея обеспечения безопасности файрвола заключается в том, чтобы оставить доступными лишь самые необходимые службы.
Необходимо руководствоваться правилом: запрещено все, что не разрешено, а не правилом — разрешено все, что не запрещено. Поэтому база правил должна начинаться с правила, запрещающего любой трафик (lock down rule), входящий и исходящий. Остальные правила должны идти за этим основным. Многие ошибочно полагают, что это правило используется, чтобы скрыть присутствие файрвола. На самом деле его цель — обеспечение дополнительной защиты.
Например, если в демонстрационной базе правил первым поставить правило #3, то файрвол будет пропускать трафик, генерируемый любым пользователем из внутренней подсети. Правило lockdown, поставленное первым, защитит от этого. Основная цель проверки сканированием заключается в том, чтобы убедиться, что вы случайно не оставили файрвол открытым для неавторизованного доступа.
База правил
Основная цель при проверке базы правил — убедиться в том, что ее настройках нет неприятных сюрпризов: она работает так, как вы этого от нее ожидаете. Здесь необходимо просканировать каждый сегмент сети на предмет того, какие пакеты могут проходить через файрвол и какие — нет. В результате вы должны убедиться, что файрвол действительно пропускает только тот трафик, который вы разрешаете.
Многие файрволы настроены для работы с несколькими сетевыми сегментами. Поэтому убедитесь в правильности настройки имеющейся базы правил, произведя сканирование из всех этих сегментов. Это смоделирует потенциальную ситуацию, когда в одном из сегментов произел несанкционированный доступ (например, через DNS или web). Будут ли в этом случае защищены файрволом остальные сегменты сети.
Такое сканирование может занять относительно много времени из-за большго time-out периода. Многие файрвлы сконфигурированы так, чтобы запрещать (отбрасывать пакеты) без соответствующего ответа (т.е. без посылки RST пакета или ошибки ICMP ).
Аутентификация и шифрование
Есть еще нкоторые вещи, которые необхдимо подвергнуть тестированию. Файрволы проводят аутентификацию пользователей прежде, чем открывают доступ к ресурсу.
В FW-1 для этого есть несколько различных опций, которые надо проверить . Например, проверка полномочий пользователя перед доступом к web-сайту. Попробуйте обратиться к web-ресурсу, не проходя аутентификацию, и посмотрите, что из этого получится. При разработке базы правил очень легко сделать ошибку. Далее, проверьте аналогичным образом шифрование. Если у вас есть ресурсы, доступ к которым должен осуществляться с использованием шифрования, проверьте, что оно применятся. Попробуйте обратиться к ним, не используя его. Получили вы доступ? В время выполнения тестов запустите снифер типа snoop или tcpdump и посмотрите, применялось ли к данным шифрование.
Дополнительные службы
В настоящее время функции файрволов типа FW-1 могут расширятся за счет интеграции их с ПО сторонних производителей. Например, для проверки e-mail на наличие вирусов и для фильтрации контента web. Соответственно, необходимо протестировать, как это ПО выполняет свои функции (к примеру, пошлите письмо, содержащее какой-либо из последних почтовых червей).
Более глубокий анализ
После идентификации доступных рксурсов, можно продолжить копать глубже. Определив, что файрвол не фильтрует какой-то тип трафика, вы, возможно, задумаетесь, какую угрозу безопасности это может потенциально представлять. На данном этапе дальнейшая стратегия (тактика) аудита становится несколько туманной. Границу между аудитом файрвола и всей сети можно провести только с некоторой точностью, поскольку все взаимосвязано. Тем не менее, некоторая информация по тестированию не только самого firewall, но и подсети , которую он прикрывает, будет небесполезна.
Нашей целью теперь является определение потенциальных уязвимостей в доступных ресурсах. Приведем для примера лишь некоторые службы, через которые нарушение безопасности происходит наиболее часто (потенциальный взломщик проверит их первыми): http сервера IIS, которые необходимо проверить,т.к. они дают большое число потенциальных уязвимостей, wu-ftp 2.4.2 VR17 и т.д. Наиболее надежную и обстоятельную проверку наличие уязвимостей в конкретной службе можно осуществить, используя соответствующую базу bugtraq.
Я настоятельно рекомендую сделать выборку в ней по каждому доступному сервису. Для более поверхностной, но более быстрой проверки можно использовать различные утилиты (рекомендуемый мной список приводится ниже).
Ведение логов
После проверки базы правил firewall проверьте его логи. Определил ли firewall проводившееся сканирование и давал ли он соответствующие сигналы (alerts).
Какой трафик и каким образом был записан в логи. Если файрвол не зафиксировал большую часть активности во время аудита его настроек, это свидетельствует о наличии серьезных проблем. Здесь, кстати, можно отметить, что после проверки базы правил можно получить более четкое представление, на что следует обращать внимание при проверке логов в первую очередь.
Утилиты аудита
В первую очередь, для тестирования базы правил и общих настроек файрвола, необходим сканер портов.
Наилучшим образом эту задачу решает, на мой взгляд, nmap от Fyodor'a. На данный момент в своем классе этот продукт вне конкуренции. Большое число опций дают возможность очень гибкой настройки процесса сканирования (идентификация ОС, rpc, "stealth"-сканирование и т.д.).
Второе, почему я обращаю ваше внимание на nmap: скорее всего именно этим сканером потенциальный хакер будет тестировать вашу сеть и совсем не лишним будет и вам знать, какие результаты он выдает для нее. В частности, в первую очередь необходимо проверить по логам, определяет ли файрвол steath-сканирование (опции "-sS" или "-sF"). FW-1 ver 4.x должен определят все виды "stealth"-сканирования nmap.
Замечание: предварительно проведите сканирование этим способом тестовой системы, так как некоторые системы реагируют на него сообщениямии типа "panic/crash".
С помощью опции "-g" можно установить значение порта-источника и определить ошибочные правила, разрешающие пакеты , где порт-источник равен 20, 53, 80 ,т.е соответственно трафик ftp, nslookup(dns) и http. В последних версиях появилась новая опция "-sA", специально предназначенная для тестирования правил файрвола. Пример:
mozart #nmap -v -sR -sA -P0 -T Aggressive -o nmap.out <system IP>
Однако для новых версии файрволов (Firewall-1 ver 4.1SP2, ) она уже не работает. Далее, некоторые из них не позволяют устанавливать соединения с использованием ACK(только SYN). Поэтому необходимо тестировать такой файрвол SYN-пакетами. Для тестирования новых версий файрволов я использую следующий набор опций:
mozart #nmap -v -sS -sR -P0 -O -p1-65000 -o nmap.out <system IP>
Обратите внимание, здесь я сканирую весь диапазон возможных портов 65000. В зависимости от скорости соединения это может занять до 60 минут. Изменение значения параметра '--max_rtt_timeout milliseconds' может дать некоторую прибавку в скорости, таже можно использовать диапазон портов по умолчанию (1500).
Не забудьте провести сканирование тех же портов, но по UDP(-sU). Возможно, после этого вы будете удивлены результатом (snmp, routed и т.д.). Для NT также вышла своя версия nmap. Для пользователей Win9x/NT могу также посоветовать WS Ping ProPack. В этот продукт включен не только сканер портов, но и аналоги многих unix утилит: whois, snmpwalk и т.п. К сожалению сканер портов менее гибок в настройке, чем соответствующий unix-аналог.
После идентификации доступных ресурсов с помощью сканера портов, более детальную проверку помогут провести следующие утилиты:
— Nessus (под Unix, клиент может работать под Win9x/NT). На мой взгляд один из лучших бесплатных сканеров
— Whisker (на Perl). Полагаю, в коментариях не нуждается.
— Hping2. Позволят создавать свои ICMP/TCP/UDP пакеты с требуемыми параметрами.
— Winfingerprint (под Win9x/NT). NetBIOS Shares, Users, Groups, Services.
— legion. SMB shares
— Sam Spade. Аналог WS Ping ProPack с некоторыми дополнительными возможностями.
Дополнительную информация: база по утилитам и уязвимостям на securityfocus.com и соотвествующая база по exploits на technotronic.com.
Заключение
Степень безопасности, которую дает применение файрвола прямо пропорциональна тщательности, с которой он был настроен. Слабо контролируемая динамичность развития Internet и возрастающая сложность устройств доступа приводят к появлению различных ошибок в настройках систем обеспечения безопасности. Поэтому их инсталляция должна в обязательном порядке включать соответствующее тестирование устойчивости к реальным атакам..
Lance Spitzner
Сетевые решения. Статья была опубликована в номере 01 за 2001 год в рубрике save ass…