Журнал LinuxFormat - перейти на главную

LXF86:Учебники:Безопасность

Материал из Linuxformat
(Различия между версиями)
Перейти к: навигация, поиск
(Бойтесь сканеров)
(Перенаправление на LXF86:Безопасность)
 
Строка 1: Строка 1:
== Безопасность: Зондируем систему ==
+
#REDIRECT [[LXF86:Безопасность]]
 
+
''ЧАСТЬ 3: Урок сканирования на уязвимости. '''Крис Браун''' покажет, как тестировать сеть на окна и черные ходы со всей серьезностью.''
+
 
+
На сей раз мы рассмотрим утилиты, помогающие в поиске уязвимостей вашей системы. Очевидно, что искать уязвимости можно как с честными, так и с дурными намерениями, посему повторю то, что сказал на первом нашем уроке: во-первых, я абсолютно не поощряю использование этих утилит для получения неавторизованного доступа. Во-вторых, перед запуском этих утилит на работе вы должны получить разрешение у вашего начальника [то же самое относится и к домашним сетям, принадлежащим интернет-провайдерам, – прим. ред.]. Утилиты для оценки уязвимостей делятся на две категории: одни действуют снаружи, а другие внутри системы. Наша первая утилита, Nmap, явно относится к первым. Nmap определяет, какие порты открыты (то есть ждут соединений), и может сканировать сразу несколько числа машин: посылает серию сетевых пакетов на указанные диапазоны портов и IP-адресов и смотрит, что происходит. Вот простой пример запуска Nmap. Моя домашняя сеть довольно мала – на маршрутизаторе осталось всего два целых порта, остальные погибли во время грозы – но этот вывод даст вам пищу для ума:
+
 
+
$ nmap -sT -p 20-100 192.168.0.1-50
+
Starting nmap 3.81 ( http://www.insecure.org/nmap/ ) at 2006-08-01 15:18 BST
+
Interesting ports on 192.168.0.1:
+
(The 78 ports scanned but not shown below are in state: closed)
+
PORT STATE SERVICE 23/tcp filtered telnet
+
53/tcp open domain
+
80/tcp open http
+
Interesting ports on 192.168.0.3:
+
(The 78 ports scanned but not shown beloware in state: closed)
+
PORT STATE SERVICE
+
22/tcp open ssh
+
25/tcp open smtp
+
80/tcp open http
+
All 81 scanned ports on 192.168.0.4 are: closed
+
Nmap finished: 50 IP addresses (3 hosts up) scanned in 12.269 seconds
+
 
+
Рис. 1 (ниже) показывает некоторые опции Nmap. Интереснее всего типы сканирования. Чтобы вполне оценить их, необходимо глубокое понимание работы TCP/IP; в частности, TCP-флагов и стандартной последовательности TCP-пакетов при создании TCP-соединения. Тип сканирования -sT, показанный на схеме, использует т.н. «трехстороннее рукопожатие» (three-way handshake) для установки соединения, как обычный клиент. Такое сканирование очень «заметно»: скорее всего, информация о нем попадет в файл журнала сканируемой системы. Зато его можно выполнить не от имени суперпользователя. Есть и другие, «менее заметные» типы сканирования, например, тот, что в Nmap называется стелс-FIN-сканированием [stealth FIN scan], когда посылается TCP-пакет с одним лишь установленным флагом FIN (это один из флагов заголовка пакета). При нормальных условиях такой пакет посылается только при закрытии соединения – и никогда не посылается до установления соединения с портом. Ответ операционной системы на такие попытки поможет определить, какие порты действительно открыты и ждут соединения. Спецификации TCP/IP не всегда четко определяют поведение ОС в нестандартных ситуациях, а если и определяют, реализации не всегда соответствуют спецификациям. По ответу на нестандартный TCP-пакет можно распознать ОС. Типы сканирования посредством заведомо неверных TCP-пакетов требуют открытия rawсокета для явного формирования заголовка, и сканирование при этом возможно только от имени суперпользователя.
+
 
+
=== Определяем ОС с помощью Nmap ===
+
 
+
Опция -А у Nmap включает функцию определения сервисов и версии ОС. Вот пример:
+
 
+
$nmap -A scanme.nmap.org
+
Starting nmap 3.81 ( http://www.insecure.org/nmap/ ) at 2006-0804 09:30 BST
+
Interesting ports on scanme.nmap.org (205.217.153.62):
+
(The 1657 ports scanned but not shown below are in state: filtered)
+
PORT STATE SERVICE VERSION
+
22/tcp open ssh OpenSSH 4.3 (protocol 2.0)
+
25/tcp closed smtp
+
53/tcp open domain
+
70/tcp closed gopher
+
80/tcp open http Apache httpd 2.2.2 ((Fedora))
+
113/tcp closed auth
+
Nmap finished: 1 IP address (1 host up) scanned in 94.760 seconds
+
 
+
 
+
Nmap – отличный инструмент для поиска доступных в данный момент портов и сервисов вашей сети. Вы можете удостовериться, что порты, которые должны быть открыты, действительно открыты, а те, что должны быть закрыты – закрыты, и что брандмауэр ведет себя как должно. А хотите – запустите Nmap снаружи и внутри системы, закрытой брандмауэром, и сравните результаты (о создании брандмауэров под Linux поговорим позже). Nmap содержит немало трюков кроме уже описанных, например, умеет разбивать IP-пакеты на мелкие кусочки. Смысл разбиения в том, чтобы затруднить работу межсетевых экранов и систем обнаружения вторжений. Для получения более подробной информации об Nmap прочтите man-страницу (она на редкость хороша) или посетите http://insecure.org/nmap.
+
 
+
=== Сканирование на уязвимости ===
+
 
+
Ну вот, мы дошли до сканеров уязвимостей. Они обычно используют какую-нибудь внешнюю базу уязвимостей. Следовательно, их эффективность зависит не только от качества самого сканера, но и от того, насколько активно обновляется база. Один из лучших и активно поддерживаемых сканеров – Nessus от Tenable Network Security (www. nessus.org).
+
 
+
Nessus имеет клиентский и серверный компоненты. Сервер по имени nessusd – это часть, выполняющая сами проверки; клиент, Nessus client, является графической утилитой, позволяющей вам соединяться с сервером, выбирать нужные тесты и смотреть результаты. Клиентсерверная архитектура позволяет размещать сервер в разных стратегических точках сети (например, до и после брандмауэра) и проводить тесты различного назначения.
+
+
Для этого урока я установил Nessus на мой компьютер с Fedora Core 5. На http://www.nessus.org/download вы найдете собранные пакеты Nessus для различных дистрибутивов Linux, включая Debian 3.1, Red Hat Enterprise Linux 3/4, Fedora Core 4/5, SUSE 9.3/10 (сканер бесплатен, но исходные тексты закрыты). Я установил пакеты nessus-3.0.3-fc5. i386.rpm и nessusClient-1.0.0.RC5-fc5.i386.rpm.
+
 
+
При соединении с сервером клиент должен указать верные имя пользователя и пароль, так что надо создать учетную запись Nessus на той машине, где планируется запуск сервера. Эти учетные записи используются в Nessus для контроля и не связаны с обычными учетными записями Linux. Утилита создания учетной записи Nessus довольно разговорчива, и использование ее самоочевидно. Вот пример диалога с ней:
+
#/opt/nessus/sbin/nessus-add-first-user
+
Using /var/tmp as a temporary file holder
+
Add a new nessusd user
+
---------------------
+
Login : joe
+
Authentication (pass/cert) [pass] : pass
+
Login password :
+
Login password (again)
+
: User rules
+
---------
+
nessusd has a rules system which allows you to restrict the
+
hosts that joe has the right to test. For instance, you may want
+
him to be able to scan his own host only.
+
Please see the nessus-adduser(8) man page for the rules syntax
+
Enter the rules for this user, and hit ctrl-D once you are done :
+
(the user can have an empty rules set)
+
accept 192.168.0.0/24
+
default deny
+
Login : joe
+
Password : ***********
+
DN :
+
Rules :
+
accept 192.168.0.0/24
+
default deny
+
Is that ok ? (y/n) [y]
+
user added.
+
 
+
Каждому пользователю приданы правила, ограничивающие набор систем, которые ему можно тестировать. Два простых правила, указанных выше, позволяют Joe сканировать системы подсети 192.168.0.0/24 и ничего более.
+
 
+
Серверу также нужен SSL-сертификат для аутентификации у клиента. Nessus поставляется с готовым сертификатом, однако если вы хотите создать свой собственный, используйте команду Nessus-mkcert.
+
 
+
Теперь вы готовы к запуску демона Nessus. На Fedora я могу запустить демон вручную так:
+
#service nessusd start
+
 
+
Чтобы выполнить проверку, запустите графический клиент:
+
$/usr/X11R6/bin/NessusClient
+
 
+
Для начала выберите File->Connect и подсоединитесь к серверу с ранее созданным именем пользователя. При первом подключении вам будет предложен SSL-сертификат сервера, его нужно проверить вручную и принять. Как только вы соединитесь, будут скачаны доступные модули (plugins), и вы можете выбрать, какие из них запускать. Пример показан на рис. 2 (слева); правда, там нет флажков для выбора теста (они скрыты под окном, детально описывающим конкретный тест).
+
 
+
Зачем модули? Nessus использует их для проведения проверок. Это скрипты, написанные на специальном языке NASL (Nessus Attack Scripting Language). На моей Fedora Core модули хранятся в /opt/Nessus/lib/nessus/plugins (там их больше 11 тысяч!). На рис. 2 они представлены в виде дерева. Под категорией SUSE Local Security Checks их, например, штук 200. Щелкните на строке модуля, чтобы увидеть описание соответствующего теста – это как раз и показано на рисунке. Используйте экран Выбор цели (Target Selection) для указания машины – объекта сканирования.
+
 
+
Есть и другие интересные вкладки: например, экран сертификатов позволяет выбрать сертификаты для SMB- и SSH-соединений. Короче, стоит потратить некоторое время для исследования этих вкладок, чтобы взять от Nessus все.
+
 
+
Настроив сканирование по вкусу, выберите Scope > Execute для его запуска. Nessus покажет вам индикаторы для каждой машины.
+
 
+
==== Скорая помощь ====
+
 
+
Если хотите сканировать скрытно, без ведома системыобъекта, запускайте Nmap от имени root.
+
 
+
=== Экран отчета Nessus ===
+
 
+
Завершив сканирование, можете просмотреть экран отчета, показанный на рис. 3 (внизу). Укажите подсеть, затем от
+
дельный хост – увидите список открытых портов, а напротив каждого из них – иконку критичности. Выберите порт и
+
просмотрите информацию об обнаруженных проблемах с безопасностью, их критичности и существующих способах устран
+
ения.
+
 
+
Nessus начинает со сканирования открытых портов на машине-объекте. Для каждого открытого порта модуль fin
+
d_service пытается распознать, что на нем запущено, сначала пробуя SSL-соединения, затем обычные, после чего по
+
сылая различные данные сервису и распознавая ответы.
+
 
+
Потом Nessus разными способами атакует каждый открытый пор
+
т. Например, если на открытом порту найден HTTP- или HTTPS-сервер, будут запущены все модули, содержащие цель «
+
web-сервер»: они проверят удаленные сервисы, пытаясь эксплуатировать известные уязвимости, типа неверной провер
+
ки ввода, переполнения буфера, неудачной конфигурации и так далее.
+
 
+
Цитирую фразу из одного шоу, которая звучит
+
примерно так: «Знаю, который час: вчера я его записал». Моментально устаревает не только значение точного време
+
ни. Новые уязвимости в программном обеспечении находят ежедневно, и Tenable Network Security дает возможность о
+
бновить модули. Еще когда вы регистрируетесь, чтобы скачать Nessus, на вашу электронную почту высылается код ак
+
тивации. Получив его, запустите
+
# nessus-fetch --register <ваш код активации>
+
 
+
Ваш код зарегистрируется, и будут скачаны самые свежие модули. В дальнейшем нужно будет регулярно запускать nessus-update-plugins (например, как ежедневную задачу Cron), чтобы поддерживать программы в актуальном состоянии.
+
 
+
Вопреки своей мощности и популярности, Nessus не слишком-то документирован, но одна книга есть: Nessus Network Auditing, автор – Рено Дерезон [Renaud Deraison], он же написал большую часть Nessus (издание Syngress Media).
+
 
+
=== Sussen: Nessus наоборот ===
+
 
+
Другая утилита для сканирования уязвимостей, на которую я недавно наткнулся – Sussen (да, это Nessus наоборот). Sussen запускает набор тестов уязвимостей, определенных в специальном файле, написанном на языке OVAL (Open Vu
+
lnerability and Assessment Language), и содержит три исполняемых файла: sussen-agent (утилита, выполняющая тест
+
ы и представляющая результаты в браузере), Sussen-applet (просто апплет для Gnome, запускающий Sussen без обращ
+
ения к командной строке) и Sussen-editor (графический редактор OVAL-файлов). Sussen – из серии новомодных прило
+
жений, написанных на C#/.NET, и требует, помимо прочего, последней версии Mono и glibc 2.4, что делает его «кре
+
пким орешком» для большинства современных дистрибутивов. При содействии создателя Sussen, Лорена Бандьера [Lore
+
n Bandiera], мне удалось заставить его работать на Fedora Core 5. На рис. 4 (вверху) показан пример вывода.
+
+
Sussen еще не завершен, особенно его редактор. Вы можете вводить новые определения и тесты, но не можете прочесть
+
их из файла и сохранить их в файле (пока). Подробно о Sussen – на http://dev. mmgsecurity.com/projects/sussen.
+
 
+
Согласно сайту OVAL (http://oval.mitre.org), он «создает возможность взаимодействия между продуктами по безопас
+
ности, предоставляя стандартный язык на базе XML для обмена информацией». Основная идея здесь – отделить информ
+
ацию об уязвимости системы от программ, в которых она используется. Обычно описание уязвимости выглядит как «Ес
+
ли у вас версия X программы Y, то вы подвержены уязвимости Z», однако на XML это простое определение требует не одной дюжины строк.
+
 
+
Фактически, Sussen – просто движок для запуска тестов уязвимостей, определенных в OVAL-файлах. Могу сказать, что он прилично выполняет эту работу, однако эффективность утилиты зависит в первую очередь от самих OVAL-файлов. В Red Hat, похоже, приняли идею; они публикуют обширные отчеты, используя OVAL (www.redhat.com/ oval), хотя не
+
похоже, чтобы в SUSE (например) делали то же самое. Я считаю OVAL хорошей идеей, но не уверен, что она привлече
+
т критическую массу пользователей для повсеместной реализации. Есть и другие сканеры уязвимостей, например, Sar
+
a (Security Auditor’s Research Assistant) и Saint (Security Administrator’s Integrated Network Tool). Кому нуже
+
н полный список, посетите страничку Fyodor’а (автора Nmap) – http://sectools.org/vuln-scanners.html
+
 
+
==== Скорая помощь ====
+
Не сканируйте системы на уязвимость у себя на работе без разрешения вашего начальника!
+
 
+
----
+
 
+
=== Наш эксперт ===
+
'''Д-р Крис Браун'''
+
независимый инструктор по Linux, имеет степень доктора наук по физике элементарных частиц, сертифицированный сп
+
ециалист Novell и Red Hat. Недавно написал книгу о SUSE для издательства O’Reilly.
+
 
+
=== Как Nmap говорит с вами ===
+
Nmap обычно различает одно из трех состояний порта: Open – открыт и ждет соединений; Closed – доступен, но не ждет соединений; Filtered – недоступен (возможно, запросы Nmap фильтруются брандмауэром), и Nmap не может определить, открыт порт или закрыт.
+
 
+
=== Бойтесь сканеров ===
+
 
+
Будьте осторожны при сканировании действующих серверов с помощью Nessus – некоторые типы сканирования (по умолчанию они отключены) выполняют атаки типа «отказ в обслуживании», способные вывести сервер из строя. Лучшее время выполнения подобных тестов – перед тем, как сервер будет подготовлен к реальной работе. Если вам потребуется
+
просканировать его позже, выберите время, когда временная недоступность сервера вызовет минимальные неудобства.
+

Текущая версия на 17:35, 24 марта 2008

  1. REDIRECT LXF86:Безопасность
Персональные инструменты
купить
подписаться
Яндекс.Метрика