Удаленный доступ

Как уже говорилось выше, для удаленного доступа используется локальная сеть или какой-либо другой коммуникационный канал, такой как модемная связь с системой UNIX, выступающей в роли сервера удаленного доступа. Исходя из нашего опыта, мы можем сказать, что большинство организаций заботит именно безопасность удаленного доступа, осуществляемого по каналам аналоговой связи или ISDN. Однако мы ограничим наше исследование лишь методами получения доступа к системе UNIX по сети через протокол TCP/IP. В конце концов, протокол TCP/IP является краеугольным камнем Internet, поэтому именно эта тема заслуживает первоочередного внимания при обсужле-нии вопросов обеспечения безопасности UNIX.
Средства массовой информации создали некий миф вокруг темы нарушена-: системы защиты системы UNIX, согласно которому для этого нужно проявить сг-реиг-ленное искусство, граничащее с мистикой. На самом деле существует три впо.:-;е реальных основных метода для удаленного проникновения через систему зашиты UNIX
1. Проникновение через службу, находящуюся в состоянии ожидания запросов (TCP/UDP).
2. Использование в качестве плацдарма системы UNIX, обеспечивающей безопасность двух или более сетей.
3. Применение методов удаленного взлома, подразумевающих скрытое вовлечение пользователей (созданный с преступным умыслом специальный Web-узел, электронная почта с вложенным "троянским конем" и т.д.).
Давайте рассмотрим несколько примеров, которые помогут нам лучше разобраться в различных типах атак, относящихся к одной из этих категорий.

  •  Проникновение через службу, находящуюся в состоянии ожидания запросов. Кто-то дает вам идентификатор пользователя и пароль и говорит: "Взломай мою систему". Именно так обстоит дело с проникновением через службу, находящуюся в режиме ожидания. Действительно, как можно зарегистрироваться в системе, если в ней не запущены службы, позволяющие интерактивную регистрацию (telr.et. ftp. rlogin или ssh)? А как насчет обнаруженных лишь на этой неделе очередных изъянах службы wu-ftpd? В вашей системе они имеются? Вполне возможно. сдна:<о взломщики, скорее всего, будут использовать для получения доступа служб) -.-.-_-f tpd только в том случае, если она запущена и находится в состоянии ожидания. Таким образом, можно жестко сформулировать правило — доступ через службу можно получить тогда и только тогда, когда она находится в состоянии ожидания запросов. В противном случае удаленный доступ через нее получить невозможно.
  • Использование брандмауэра в качестве маршрутизатора. Через ваш брандмауэр, на котором установлена система UNIX, в сеть проник взломщик. "Этого не может быть, — скажете вы, — ведь мы не поддерживаем никаких входящих служб!" Во многих случаях взломщики обходят брандмауэры UNIX путем маршрутизации своих пакетов через брандмауэры под видом пакетов, исходящих от внутренних систем. Эта уловка срабатывает, поскольку в ядре UNIX по умолчанию включен режим пересылки IP-пакетов для тех приложений, которым такой режим нужен. Поэтому очень часто взломщику и не нужно взламывать сам брандмауэр — достаточно использовать его в качестве маршрутизатора.
  •  Удаленный взлом с вовлечением пользователей. Вы отключили все опасные для системы защиты UNIX службы и полагаете, что обеспечили безопасность? Не спешите с выводами! А что, если кто-то из пользователей попробует открыть страницу по адресу вроде http://www.evilhacker.org и броузер выполнит вредоносный код, в результате чего будет установлено обратное соединение с этим узлом? Тогда компьютер, находящийся по адресу evilhacker.org, сможет получить доступ к пользовательскому компьютеру. Трудно даже представить, какие последствия может повлечь за собой работа в Web под именем суперпользователя root! Что произойдет, если ваша программа сетевых пакетов окажется восприимчивой для атак, приводящих к переполнению буфера (http: //www.w00w00.org/advisories/snoop.html)?
В этом разделе мы рассмотрим типичные методы удаленных атак, которые подпадает под одну из приведенных выше категорий. Если вы хотите понять, как взломщику далось проникнуть в систему, попробуйте найти ответы на три следующих вопроса.
1. Используются ли службы, находящиеся в состоянии ожидания запросов?
2. Поддерживает ли система маршрутизацию?
3. Выполнял ли пользователь или пользовательская программа команду, которая могла стать причиной нарушения системы защиты?
Мы уверены, что вы дадите положительный ответ по крайней мере на какой-то адин из этих вопросов.

Подбор паролей


Обсуждение возможных методов взлома системы UNIX мы начнем с одного из самых популярных — подбора пароля путем простого перебора всех возможных вариантов, т.е. атаки "в лоб" (brute force attack). Такой подход может претить эстету хакинга, но, так или иначе, он был и остается одним из самых эффективных способов получения доступа к системе UNIX. Взлом путем перебора представляет собой не что иное, как подбор комбинации "идентификатор UID/пароль" для получения доступа к службе, которая до предоставления определенных привилегий выполняет аутентификацию пользователя. Среди самых популярных типов служб, которые чаще всего подвергаются подобным атакам можно выделить следующие.

  •  telnet
  •  FTP (File Transfer Protocol)
  •  r-утилиты (rlogin, rsh и т.д.)
  •  Secure Shell (ssh)
  •  Имена доступа SNMP
  •  POP (Post Office Protocol)
  •  HTTP/HTTPS (Hyper Text Transport Protocol)
Как вы помните из предыдущих глав, посвященных исследованию сети и инвентаризации сетевых ресурсов, одной из самых главных задач, которые необходимо решить взломщику на этом этапе, — это установить реальные идентификаторы пользователей системы. С этой целью могут использоваться такие службы, как finger, rusers и sendmail. Получив список пользовательских учетных записей, взломщик может попытаться получить доступ к интересующей его системе путем подбора пароля к одной из этих учетных записей. К сожалению, многие пользовательские учетные записи защищаются либо с помощью легко угадываемого пароля, либо вовсе не имеют пароля. Самым лучшим примером этого правила является учетная запись рядового пользователя, в которой, как правило, пользовательское имя и пароль идентичны. Чем больше пользователей имеют доступ к системе, тем больше вероятность, что в ней найдется по крайней мере один такой пользователь. Можете поверить нам на слово, на своем веку мы встречали тысячи подобных случаев, занимаясь проверкой безопасности разных компаний. Почему же это явление столь распространено? Все очень просто: во-первых, люди не задумываются о том, как нужно выбирать пароли, а во-вторых, от них никто этого не требует.
Хотя пароль можно подобрать вручную, зачастую для этого применяются утилиты, автоматизирующие этот процесс. Среди многочисленных общедоступных утилит такого рода можно выделить следующие.
  •  Brutus (http://www.hoobie.net/brutus/)
  •  brute_web.c (http: //packetstorm.securify.com/
    Exploit_Code_Archive/brute_web.с)
  •  pop.с (http://packetstorm.securify.com/
    groups/ADM/ADM-pop.c)
  •  middlefinger (http://www.njh.com/latest/9709/970916-05.html) 
  •  TeeNet (http://www.phenoelit.de/tn/)

Защита от подбора паролей "в лоб"


Наилучшим способом защиты от подбора пароля является использование трудно угадываемых паролей. В идеальном случае желательно использовать механизм одноразовых паролей. Существует ряд бесплатных утилит (табл. 8.1), с помощью которых решение задачи подбора пароля можно значительно затруднить.

Таблица 8.1.Бесплатные утилиты, которые позволяют защититься от подбора паролей "в лоб"

Инструмент
Описание
Адрес
S/Key
Система генерации одноразовых паролей
http: //www.yak.net/skey/
One Time Passwords In Everything (OPIE)
Система генерации одноразовых паролей
ftp .nrl . navy .mil /pub/ security/opie
Cracklib
Средство генерации паролей
ftp: //ftp. cert . or g/ pub/ tools/cracklib/
Npasswd
Утилита, которую можно использовать вместо команды passwd
http: //www.utexas .edu/ cc/unix/software/npasswd/
Secure Remote Password
Новый механизм для выполнения безопасной аутентификации с помощью пароля и обмена ключами в сети любого типа
http: //srp. stanford, edu/srp/
SSH
Замещает r-команды и позволяет выполнять те же функции с поддержкой шифрования и аутентификации RSA
http: //www.cs .hut . fi/ssh
Помимо этих средств, необходимо реализовать хорошие процедуры управления паролями, соответствующие следующим основным требованиям.
  •  Обеспечение того, чтобы все пользователи применяли пароли.
  •  Принудительная смена паролей один раз в 30 дней для привилегированных пользователей и один раз в 60 дней для обычных пользователей.
  •  Минимальная длина пароля должна составлять шесть символов, а еще лучше — восемь.
  •  Регистрация неудачных попыток аутентификации.
  •  Настройка служб таким образом, чтобы после трех неудачных попыток регистрации выполнялся разрыв соединения.
  •  Реализация режима блокировки учетных записей везде, где это возможно (не забывайте при этом о возможных проблемах, связанных с отказом в обслуживании, специально вызываемых действиями взломщика).
  •  Отключение неиспользуемых служб.
  •  Использование средств генерации паролей, не позволяющих пользователям выбирать легко угадываемые пароли.
  •  Не использовать один и тот же пароль для доступа к разным системам.
  •  Не допускать, чтобы пользователи записывали свои пароли.
  •  Не допускать разглашения паролей посторонним.
  •  Использовать при возможности одноразовые пароли.
  •  Обеспечение того, чтобы встроенными учетными записями вида setup и admin не использовались пароли, установленные для них по умолчанию.
Дополнительную информацию по выбору паролей можно найти в документе AusCERT SA-93:04.