Максимальная Безопасность:

Руководство Хакера по Защите Вашего Internet Сайта и Сети

Предыдущая главаСледующая главаСодержание


22

Кто или Что Такое Root?

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

Общая Идея

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

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


ПРИМЕЧАНИЕ: Бездисковый клиент это любая машина, которая не имеет локального жёсткого диска и должна, поэтому найти другой способ для загрузки. Один путь с помощью дискеты, который загружает минимальные драйверы, необходимые для работы платы Ethernet на машине. Затем эта плата посылает широковещательное сообщение, запрашивающее сессию входа в систему. Это общее, например для сетей, управляемых Novell NetWare. Эти сети используют дискету с драйвером Ethernet, программным обеспечением адаптера ЛВС и маленькой оболочкой. Другой метод, когда рабочая станция имеет в своём составе программируемое оборудование (или другое программное обеспечение, жестко заданное в некоторой части платы), которое может инициализировать сессию загрузки по сети через Ethernet или другие протоколы. Это чаще можно увидеть в основанных на UNIX сетях, использующих X терминалы или службу удалённой загрузки.

Однако большинство пользователей изучают компьютеры, используя свою домашнюю машину. Хотя машины на работе могут ограничивать пользователей единственной программой или устаревшей платформой, домашняя машина полностью под их контролем. Они могут перемещаться по ней, выполнять программы и удалять элементы, какие только захотят (увы, часто вредя себе). Так что средний пользователь, вероятно, имеет только очень поверхностное понимание работы сети. Действительно, средний пользователь не имеет никаких причин, чтобы понять организацию сети ... до сих пор.

В сети должно быть некоторое центральное управление не только для людей, но также и для машин. Рассмотрим использование серверов имён. Сервер имён обеспечивает метод получения адресов Internet из имён. Каждая реальная сеть в Internet имеет один такой сервер имён. Если любая машина в этой сети не знает адреса сервера имён, то эта машина не сможет преобразовать имена узлов Internet в физические адреса. Поэтому адрес сервера имён должен быть расположен, где ни будь на диске. В UNIX сетях эта информация обычно хранится в фале /ETC/RESOLV.CONF. На платформе Mac она сохраняется в настройках MacTCP (обычно доступных через меню Control Panels). На платформе Microsoft Windows она сохраняется (по крайней мере, для модемных учетных записей) в конфигурации модемной сети для каждого отдельного подключения. Она обычно указывается в TCP/IP установках подключения (смотрите Рисунок 22.1).

Настройки TCP/IP для подключения: сервер имён
Рисунок 22.1 Настройки TCP/IP для подключения: сервер имён.

Использование сервера имён это путь централизации информации, чтобы её было проще получить. Рассмотрим сеть Archie. Серверы Archie могут использоваться для поиска файлов по всему миру. Например, Вы можете искать файл, расположенный исключительно в Иране. Система Archie работает нет так, как Вы могли бы подумать. Она не развертывается веером по всему земному шару, ища каждую машину в Internet, пока не найдёт (или потерпит неудачу в поиске) требуемый файл. Вместо этого, администраторы сетей сообщают содержание своих дисков на централизованные серверы Archie. Это имеет смысл, потому что проще искать запись в базе данных на сервере Archie, чем использовать подключения по всему миру. Таким образом, серверы Archie и шлюзы используют простые методы для выполнения того, что кажется современным чудом.

Точно так же маленькая сеть имеет много централизованных ресурсов. Они могут включать библиотеки файлов, приложения или адресные базы данных. Централизация этих ресурсов гарантирует, что система будет работать гладко и эффективно. Например, вообразите, если бы кто ни будь в сети мог определить для своей рабочей станции любой Ethernet или IP адрес, какой он захочет. Как другие машины узнали бы этот адрес? Это вызвало бы в сети большой беспорядок. Конечно, информация не перемещалась бы надежно в таком климате.

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

Кто-то должен управлять тем где, когда и как такие ресурсы могут использоваться. Когда я ссылаюсь к этому кому-то, то использую термины корень, супервизор, администратор и оператор. Этот человек (или скорее, эта учетная запись) работает почти одинаково во всех сетевых операционных системах. Эта учетная запись имеет привилегии для чтения, записи, выполнения, удаления, создания, перечисления, или другого изменения любого файла на диске. Также, этот человек имеет огромную власть.

Хотя эта власть необходима для обслуживания системы, она может быть весьма опасна в неопытных руках. Этот урок быстро учит пользователей, которые решают перейти с платформы Microsoft Windows на UNIX. Для того, чтобы сделать это, многие пользователи покупают книгу по Linux, к которой прилагается CD-ROM. Они проходят через инсталляционный процесс и входят в систему как корень, и затем перемещаются по диску испытывая различные приложения. Неизбежно они удаляют или иначе изменяют некоторую критическую часть системы, делая систему непригодной. Еще не обладая навыками, необходимыми для нахождения и исправления проблемы, они просто повторно устанавливают систему. Средний новый пользователь Linux делает это два или три раза перед тем, как сделает все правильно. (Сделать все правильно означает не перемещаться по диску как корень без убедительной причины. Вместо перемещения как корень Вы должны создать учетную запись пользователя с ограниченными привилегиями непосредственно для Вас, пока не изучите систему более полно. Эта пользовательская учетная запись наследует привилегии, которые запрещают Вам разрушение критических, необходимых сетевых ресурсов.)

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

Об Управлении Доступом

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

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

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

В сети UNIX Вы можете легко идентифицировать все разрешения просто перечислив структуру каталогов файлов в таком каталоге. Чтобы понять, как выглядит распечатка, смотрите Рисунок 22.2.

Рисунок 22.2, типичный пример распечатки основного каталога UNIX машины, показывает ряд столбцов информации. Каждый столбец показывает существенные подробности относительно перечисленного файла или каталога. Рисунок 22.3 показывает столбцы, разобранные по категориям информации, названной атрибутами.

Я хочу кратко детализировать эти атрибуты. Они приведены в обратном порядке важности с точки зрения управление доступом:

Именно в Атрибуте #1 Мы наиболее заинтересованы. Атрибут #1 (или разрешения) установлен, чтобы отразить три отличных элемента доступа. Чтение Атрибута #1 производится слева направо, элементы

В каждом случае имеется символ или черточка. Черточка показывает, что некоторое разрешение доступа или привилегия отклонено. Оставшиеся символы (r, w и x) представляют привилегии доступа. Если более определенно, то они представляют доступ на чтение, запись и выполнение.


ПРИМЕЧАНИЕ: Если Вы исследуете распечатки, представленные на Рисунке 22.2, то также обратите внимание, что в первом поле d есть (Атрибут #1). Он показывает, что элемент является каталогом, а не файлом.

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

Сетевые операционные системы могут иметь управление доступом, работающие иначе. UNIX представляет разрешения этим путем много лет. Это быстрый и эффективный путь (из командной строки), чтобы выяснить, кто мог обращаться и к чему. Различные системы могут делать это различными способами. Старшая версия Novell NetWare, например, имеет оболочку, которая позволяет Вам использовать полу-графический интерфейс для установки и просмотра разрешений. Microsoft Windows NT является графической, но Вы можете также устанавливать удивительное число опций управления доступом из командной строки.

О Получении Корневых Привилегий

Если относительно того, как UNIX осуществляет управление доступом, очевидная задача взломщика состоит в том, чтобы получить корневые привилегии. Поскольку UNIX была (и вероятно все еще остается) преобладающей операционной системой для Internet серверов, взломщику для получения корневых привилегий понадобилось бы более 20 лет. Причина проста: Кто бы ни устанавливал корневые привилегии и разрешения, он имеет управление над всей системой. Если Вы скомпрометировали корень, то захватили управление машиной (и возможно всей сетью).

За и Против Системы Разрешений

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

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

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

Взлом Корня

Хотя у меня нет доказательства, но я скажу, что процент взломщиков, которые могут получить корневые привилегии на данной машине или архитектуре, довольно высоко. Процент тех, кто может сделать это в UNIX системе более или менее постоянное значение. О UNIX известно много, и списки отчетов весьма информативны (то же самое можно сказать о Novell NetWare). Тем не менее, это число относительно NT быстро изменяется в восходящем направлении. Я подозреваю, что в пределах года это число будет так же высоко или даже выше, чем проценты в других категориях.

Взлом корня (по крайней мере, в UNIX) происходит гораздо чаще через расширенные методы программирования, чем через взлом файла /etc/passwd. Корневые операторы кое-что знают о безопасности и обычно делают свои собственные пароли чрезвычайно трудными для взлома (они должны это делать). Опытные системные администраторы, вероятно, взламывали свой собственный файл passwd дюжину раз. Они, вероятно, создадут пароль, который займет для взлома недели или даже месяцы. Таким образом, использование взломщика паролей вероятно большая трата времени.

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


СОВЕТ: Вы можете получить лучшее представление о переполнении буфера и других ошибках и слабостях программирования в Главе 30, "Язык, Расширения и Безопасность".

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

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

Корень Может Остаться в Прошлом

Очень невероятно, как это может показаться, корень может скоро стать устаревшей концепцией. Многие проблемы безопасности, которые появляются в Internet, обязаны существованию этой привилегированной учетной записи. Исследования в стадии реализации, чтобы найти альтернативы. Люди из Bell Labs фактически реализовали такую систему под именем Plan 9 (смотрите Главу 21, "Plan 9 from Bell Labs"). Как объясняется в обще доступной документации по Plan 9:

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

Ссылка: Параграф выше это выдержка из "Plan 9 from Bell Labs", документа основных членов группы Plan 9. Эти члены Rob Pike, Dave Presotto, Sean Dorward, Bob Flandrena, Ken Thompson, Howard Trickey и Phil Winterbottom. Этот документ может быть найден в онлайне на
http://plan9.bell-labs.com/plan9/doc/9.html.

Plan 9 интересная идея, и конечно она устранит многие проблемы безопасности, связанные с корневой учетной записью. Тем не менее, имеются другие проблемы, которые эта новая система может создать. Одна вращается вокруг следующей инструкции (сделанной в "Plan 9 from Bell Labs"):

Если файл защищен от чтения пользователем, только этот пользователь может предоставить доступ другим.

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

Несмотря на это я полагаю, что модель Plan 9 гораздо более безопасна не только, потому что она устраняет корень, но и из-за уникального способа, которым она осуществляет распределенное вычисление. Как Вы могли бы помнить из Главы 21, Plan 9 использует и сервер ЦПУ и файловый сервер. Пользователь пользуется чем-то между X терминалом и ПК. Поскольку файловый сервер остается изолированным, и так как почти все ресурсы распределены, и набор разрешений на этом файловом сервере устанавливается автоматически динамическим способом (например, когда файлы и процессы изменяются или создаются), есть хороший шанс, что широкосистемная компрометация Plan 9 почти невозможна.

Тем не менее, есть другие значения безопасности Plan 9. Например, так как Вы можете подключать ресурс из любого типа файловой системы, удаленной или нет, и так как эти ресурсы могут быть присоединены к локальным каталогам, чтобы действовать и появляться, как если бы они локальны, есть возможность, что Plan 9 могла бы в конечном счете стать инструментом, способным к компрометации других операционных систем. Однако, об этом трудно судить, потому что существует не так много документации о тестах в этой области. Я не пробовал провести такой тест. Пока.


ПРИМЕЧАНИЕ: Разработчики Plan 9 думали больше. Этим я подразумеваю, что они думали с точки зрения операционная системы, которая могла поддерживать общее количество пользователей до десятка тысяч. Я могу видеть, где она будет, в конечном счете, использоваться в WAN.

Корневой Пользователь в Других Операционных Системах

UNIX это не единственная система, которая использует корневого пользователя. Microsoft Windows NT также использует версию корневого пользователя, названную administrator (администратор). Точно так же Novell реализует версию, названную supervisor (супервизор). Во всех случаях власть и обязательства корневого пользователя одинаковы: они включают сопровождение системы. Обе системы обеспечивают почти идентичное управление разрешениями доступа (однако, я полагаю, что NetWare немного более исчерпывающая).

Взломщик, Который Является Корневым Пользователем

Я должен объяснить здесь, что быть корневым пользователем это не редкость. Корневого пользователя можно получить за несколько долларов. Например, Вы можете установить Linux или FreeBSD на ПК и немедленно стать корневым пользователем на этой конкретной машине. Некоторые администраторы могут посмеяться над этим думая, что имеет мало значения, если взломщик настроит машину, на которой он будет корневым пользователем. Но это дает взломщику некоторые маленькие преимущества:

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

Остерегайтесь Корневого Пользователя

Если Вы взломщик, то будете остерегаться. Корневые операторы очень вспыльчивы. Если они подозревают Вас в проступке, у вас будут проблемы. Это выводит нас к важной проблеме: Корневой пользователь всегда человек. Как этот человек взаимодействует с Вами, отличается от случая к случаю.

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

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

Как сказано, остерегайтесь корневого пользователя. Немногие люди способны упорствовать как системный администратор, чья сеть была скомпрометирована. Они могут выследить Вас через континенты, или просто перелететь из Калифорнии в Северную Каролину, вооружившись некоторыми утилитами сканирования сотовых телефонов (как в случае с Shimomura). В этом случае, ошибка 75 центов запросила, теперь известного системного администратора (Clifford Stoll), проследить и выявить всю сеть шпионажа, базирующуюся в Германии. The Cuckoo's Egg (Яйцо Кукушки): Clifford Stoll, астроном, проводил исследования в Лаборатории Лоренса в Беркелей (LBL - Lawrence Berkeley Laboratory) в Калифорнии. В течение срока пребывания там, Stoll принял ответственность за управление сетью (Stoll фактически использовал Internet начиная с 1975) и ему поставили задачу обнаружить источник ошибки 75 центов. Его исследование, в конечном счете, показало, что кто-то получал неавторизованный доступ к локальной сети. Вместо того чтобы запретить доступ неавторизованного пользователя, он разрешил взломщику продолжать эти вторжения. Stoll в конечном счете решил, что взломщик использует сеть LBL как стартовую точку для взлома системы, расположенной в иерархии MILNET. (MILNET это связанная с безопасностью группа сетей, отделенных от остальной части Internet.) Stoll решил, что взломщик, находящийся в Германии, захватывает важную связанную с безопасностью информацию. Stoll наконец привлек Американские и Немецкие спецслужбы (которые первоначально не желали слушать его подозрения). Оказалось, что взломщик был частью сети, которая захватывала Американскую информацию безопасности и продавала ее Советам. История стала легендой Internet, второй после Internet Червя. Для получения дополнительной информации получите копию книги Stoll'а, The Cuckoo's Egg (Яйцо Кукушки) (Doubleday, 1989), которая описывает события в детальных подробностях.

Итог

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

Глава 23, "Введение Во Внутреннее Нарушение Сервера", обращается к некоторым проблемам относительно взломщиков и как они получают корневые привилегии доступа.


Предыдущая главаСледующая главаСодержание


Macmillan Computer Publishing USA

Macmillan Computer Publishing.



Все мессаги сюда:yanich@inbox.ru
Hosted by uCoz