Как стать суперпользователем
Категория: Сила привилегий | Автор: admin | 30-09-2009, 04:02 | Просмотров: 6954

Поскольку пользователь root является таким же членом системы, как и другие пользователи, можно войти в систему непосредственно под этим именем. Однако оказывается, что это достаточно неудачное решение. Во-первых, не будет сделано никаких записей о том, какие действия выполнял суперпользователь. Согласитесь, не слишком-то приятно выяснить, что вчера ночью в 3:00 вы сделали что-то не так, но никак не можете вспомнить, что именно. Еще хуже, если такой доступ был неавторизованным и необходимо понять, какой ущерб системе нанес нарушитель. Во-вторых, сценарий регистрации суперпользователя не предполагает сбора никакой другой идентифицирующей информации. Когда под именем root в систему могут входить несколько пользователей, не существует способа определить, кто из них и когда это сделал.

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

 

Команда su: замена идентификатора пользователя

 

Лучше воспользоваться командой su. Будучи вызванной без аргументов, она выдаст приглашение на ввод пароля суперпользователя, а затем запустит командный интерпретатор с правами пользователя root. Интерпретатор будет выполняться в привилегированном режиме, пока не завершит работу (по команде exit или при нажатии клавиш <Control-D>). Команда su не фиксирует действия, выполняемые в среде интерпретатора, но добавляет запись в журнальный файл, информирующую о том, кто и когда вошел в систему под паролем суперпользователя.

Команда su способна также подставлять вместо имени root имена других пользователей. Иногда единственный способ решить проблему пользователя — войти с помощью команды su в его среду.

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

Рекомендуем взять за правило при вводе команды использовать полное путевое имя, например /bin/su или /usr/bin/su, а не просто su. Это в какой-то мере защитит вас от тех программ с именем su, которые преднамеренно были прописаны в переменной PATH злоумышленником, намеревавшимся "собрать хороший урожай" паролей.

Во многих системах выполнять команду su имеют право только члены группы wheel.

 

Программа sudo: ограниченный вариант команды su

 

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

Предлагаемое нами решение заключается в использовании программы sudo, которая в настоящее время распространяется Тоддом Миллером (он является одним из соавторов настоящей книги). Программу можно получить на Web-узле www.courtesan.com.

Программа sudo в качестве аргумента принимает командную строку, которая подлежит выполнению с правами пользователя root (или другого уполномоченного пользователя). Программа обращается к файлу /etc/sudoers, содержащему список пользователей, имеющих разрешение на ее выполнение, и перечень команд, которые они могут использовать на конкретной машине. Если предлагаемая команда разрешена, программа sudo приглашает пользователя ввести его собственный пароль и выполняет команду от имени суперпользователя.

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

Программа sudo ведет файл регистрации выполненных команд и вызвавших их пользователей, а также каталогов, из которых запускались команды, и времени их вызова. Эта информация может регистрироваться с помощью системы syslog или размещаться в любом журнальном файле по усмотрению пользователя. Мы рекомендуем направить ее на "безопасную" центральную машину.

Строка файла регистрации, содержащая данные о пользователе randy, который выполнил команду /bin/cat etc/sudoers, может выглядеть следующим образом:

Dec 7 10:57:19 tigger sudo: randy: TTY=ttypO TTY=ttypO; PWD=/tigger/users/randy; USER=root; COMMAND=/bin/cat /etc/sudoers

Файл /etc/sudoers существует в единственном варианте и используется на всех компьютерах. Он выглядит примерно так:

 

#Определяем псевдонимы для компьютерного и физического факультетов Host_Alias CS = tigger, anchor, piper, raoet, sigi

Host_Alias PHYSICS = eprince, pprince, icarus

#Определяем набор команд

Cmnd_Alias DUMP = /usr/sbin/dump, /usr/sbin/restore Cmnd_Alias PRINTING = /usr/sbin/lpc, /usr/sbin/lprm Cmnd_Alias SHELLS - /bin/sh, /bin/tcsh, /bin/csh

#Права доступа

mark, ed PHYSICS = ALL

herb CS = /usr/local/bin/tcpdump : PHYSICS = (operator) DUMP

lynda ALL = (ALL) ALL, !SHELLS

%wheel ALL, !PHYSICS = NOPASSWD: PRINTING

 

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

В каждую спецификацию прав доступа включается следующая информация:

  • пользователи, к которым относится данная запись;

  • компьютеры, на которых пользователям разрешено выполнять какие-то действия;

  • команды, которые могут выполняться пользователями;

  • пользователи, от имени которых могут выполняться команды.

Первая строка спецификаций применяется к пользователям mark и ed, регистрирующимся в системе на компьютерах группы PHYSICS (eprince, pprince и icarus). Встроенный псевдоним ALL разрешает им выполнять любые команды. Поскольку дополнительный список пользователей в скобках не указан, программа sudo будет выполнять команды только от имени пользователя root.

Пользователь herb может выполнять команду tqdump на машинах группы CS, а также команды оперативного контроля на компьютерах группы PHYSICS. Заметьте, однако, что вторая группа команд в данном случае будет иметь привилегии не пользователя root, а пользователя operator. Реальная команда, которую пришлось бы ввести пользователю herb, выглядит примерно так:

% sudo -u operator /usr/sbin/dump 0u /dev/rsd0a

Пользователь lynda имеет право выполнять команды от имени любого пользователя на любой машине, но не может запускать некоторые распространенные командные интерпретаторы. Означает ли это, что она не может запустить интерпретатор, будучи суперпользователем? Конечно, нет:

% ср -р /bin/csh /tmp/csh

% sudo /tmp/csh

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

В последней строке пользователям UNIX-группы wheel разрешается выполнять команды печати 1рс и lprm от имени суперпользователя на всех компьютерах, за исключением машин группы PHYSICS. Более того, от них не требуется вводить пароль.

Обратите внимание на то, что команды в файле /etc/sudoers даются с полными путевыми именами, чтобы пользователи не могли выполнять свои собственные программы и сценарии от имени суперпользователя. Разрешается также указывать допустимые аргументы для каждой команды. Вообще, возможности файла sudoers очень велики, а показанный пример иллюстрирует лишь основные из них.

Для модификации файла /etc/sudoers предназначена специальная команда visudo. Она проверяет, не редактируется ли файл кем-то другим, затем открывает его в редакторе, а перед инсталляцией файла выполняет синтаксический контроль. Последнее действие особенно важно, поскольку ошибка в файле sudoers может не позволить повторно вызвать программу sudo для ее исправления.

Использование программы sudo имеет следующие преимущества:

  • благодаря регистрации команд значительно повышается степень контроля над системой;

  • операторы могут выполнять рутинные задачи, не имея неограниченных привилегий;

  • настоящий пароль суперпользователя знают всего один-два человека;

  • вызывать программу sudo быстрее, чем выполнять команду su или входить в систему под именем root;

  • у пользователя можно отобрать привилегии без изменения пароля суперпользователя;

  • ведется список всех пользователей с правами пользователя root;

  • меньше вероятность того, что интерпретатор команд, запущенный суперпользователем, приведет к непредсказуемым последствиям;

  • управлять доступом ко всей сети можно с помощью одного файла.

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

Другой недостаток — это возможность обмануть программу sudo с помощью таких уловок, как временный выход в командный интерпретатор из разрешенной программы или выполнение команд sudo csh или sudo su, если они допустимы.



 (голосов: 3)
Версия для печати | Комментариев: 0
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии в данной новости.


 
Логин
Пароль
 

 
Locations of visitors to this page