4.4. Административные средства

Управляя домашним компьютером, пользователь должен выполнять некоторые действия под именем root или получить привилегии root, с помощью программ setuid, например sudo или su. Программы setuid — это программы, работающие с кодом пользователя (UID) владельца программы, а не запускающего их пользователя. В подробном списке файлов эти программы выделяются маленькой буквой s в разделе владельца, как показано ниже:

-rwsr-xr-x    1 root     root        47324 May  1 08:09 /bin/su

Однако системные администраторы организации должны определить, какие административные права должны иметь пользователи на своих компьютерах. С помощью PAM-модуля pam_console.so некоторые действия, обычно разрешённые только пользователю root, например, перезагрузку и извлечение съёмных устройств, можно разрешить первому вошедшему на физическую консоль пользователю (обратитесь к главе Подключаемые модули проверки подлинности (PAM) Справочного руководства Red Hat Enterprise Linux за дополнительными сведениями о модуле pam_console.so). Однако выполнение других важных административных задач, таких как изменение параметров сети, настройка новой мыши или подключение сетевых устройств невозможно без прав администратора. В результате системные администраторы должны решить, какие административные полномочия должны получить пользователи их сети.

4.4.1. Разрешение доступа root

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

С другой стороны, назначение отдельным пользователям прав root может создать проблемы, например, следующие:

4.4.2. Запрещение доступа root

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

В таблице 4-1 перечислены способы дальнейшей защиты от входа под именем root:

СпособОписаниеДействиеНе затрагивает
Изменение оболочки root.Отредактируйте файл /etc/passwd и смените оболочку с /bin/bash на /sbin/nologin.

Предотвращает вход в оболочку root и регистрирует попытки входа.
Следующие программы не смогут работать с учётной записью root:
· login
· gdm
· kdm
· xdm
· su
· ssh
· scp
· sftp

Программы, не использующие оболочку, например, клиенты FTP, почтовые клиенты и многие программы setuid.
Следующие программы смогут работать с учётной записью root:
· sudo
· клиентов FTP
· почтовых клиентов

Запрет доступа root с любых консольных устройств (tty).Пустой файл /etc/securetty не позволит root войти в систему с любых устройств, подключенных к компьютеру.

Предотвращает вход под именем root с консоли или по сети. Следующие программы не смогут работать с учётной записью root:
· login
· gdm
· kdm
· xdm
· другие сетевые службы, открывающие tty

Программы, которые не регистрируются под именем root, но выполняют административные задачи посредством setuid или других механизмов.
Следующие программы смогут работать с учётной записью root:
· su
· sudo
· ssh
· scp
· sftp

Запрет входа root через SSH.Отредактируйте файл /etc/ssh/sshd_config и задайте параметр PermitRootLogin равным no.

Предотвращает доступ root с помощью набора инструментов OpenSSH. Следующие программы не смогут работать с учётной записью root:
· ssh
· scp
· sftp

Доступ root ограничен только для набора инструментов OpenSSH.

Используйте PAM для ограничения доступа root к службам.Отредактируйте файл нужной службы в каталоге /etc/pam.d/. Убедитесь в том, что для проверки подлинности требуется pam_listfile.so. За подробностями обратитесь к разделу 4.4.2.4 Отключение root с помощью PAM.

Запрещает доступ root к сетевым службам, поддерживающим PAM.
С учётной записью root не будут работать следующие службы:
· клиенты FTP
· почтовые клиенты
· login
· gdm
· kdm
· xdm
· ssh
· scp
· sftp
· любые службы, поддерживающие PAM

Программы и службы, не поддерживающие PAM.

Таблица 4-1. Способы отключения учётной записи root

4.4.2.1. Отключение оболочки root

Чтобы запретить пользователям непосредственный вход под именем root, системный администратор может задать для root оболочку /sbin/nologin в файле /etc/passwd. Это предотвратит доступ к учётной записи root с помощью команд, использующих оболочку, например su и ssh.

ВажноВажно
 

Программы, не нуждающиеся в оболочке, например, почтовые клиенты или команда sudo, по-прежнему могут работать под именем root.

4.4.2.2. Запрет входа root

Чтобы ещё больше ограничить доступ к учётной записи root, администраторы могут запретить вход под именем root с консоли, отредактировав файл /etc/securetty. В этом файле перечислены все устройства, с которых может регистрироваться root. Если файл не существует, пользователь root сможет войти в систему с любого устройства, будь то консоль или сетевой интерфейс. Это опасно, так как пользователь может входить в систему, используя Telnet, а при этом его пароль передаётся по сети в открытом виде. По умолчанию, в Red Hat Enterprise Linux файл /etc/securetty разрешает root подключаться только с физически подключенной к компьютеру консоли. Чтобы запретить вход root, очистите содержимое этого файла, выполнив следующую команду:

echo > /etc/securetty

ПредупреждениеПредупреждение
 

Пустой файл /etc/securetty не предотвращает удалённый доступ root с помощью набора инструментов OpenSSH, так как консоль открывается после проверки подлинности.

4.4.2.3. Запрет входа root через SSH

Чтобы запретить регистрацию root с использованием протокола SSH, отредактируйте файл настроек демона SSH (/etc/ssh/sshd_config). Измените строку, в которой написано:

# PermitRootLogin yes

на следующую:

 
PermitRootLogin no

4.4.2.4. Отключение root с помощью PAM

PAM-модуль /lib/security/pam_listfile.so даёт большие возможности по отключению учётных записей. Администратор может указать для этого модуля список пользователей, не имеющих разрешения на вход. Ниже приведён пример использования модуля для демона FTP-сервера vsftpd в файле конфигурации PAM /etc/pam.d/vsftpd (символ \ в конце первой строке не нужен, если всё помещается в одной строке):

auth   required   /lib/security/pam_listfile.so   item=user \
sense=deny file=/etc/vsftpd.ftpusers onerr=succeed

Это указание PAM прочитать файл /etc/vsftpd.ftpusers и закрыть доступ к службе перечисленным в нём пользователям. Администратор волен выбирать имя этого файла и вести отдельные списки для разных служб или использовать один список для запрета доступа к нескольким службам сразу.

Если администратор желает запретить доступ к нескольким службам, подобную строку можно добавить в конфигурацию PAM для этих служб, например, в /etc/pam.d/pop и /etc/pam.d/imap для почтовых клиентов или /etc/pam.d/ssh для клиентов SSH.

За дополнительной информацией о PAM, обратитесь к главе Подключаемые модули проверки подлинности (PAM) в Справочном руководстве Red Hat Enterprise Linux.

4.4.3. Ограничение доступа root

Вместо того, чтобы полностью закрывать доступ пользователю root, администратор может разрешить доступ только к программам setuid, например, к su или sudo.

4.4.3.1. Команда su

Когда пользователь выполняет команду su, ему предлагается ввести пароль root, и после проверки он попадает в приглашение оболочки root.

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

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

Проще всего это можно сделать, добавив пользователей в специальную административную группу wheel. Для этого выполните от имени root следующую команду:

usermod -G wheel <username>

В этой команде замените <username> именем пользователя, которого следует добавить в группу wheel.

Чтобы проделать то же самое с помощью Менеджера пользователей, выберите в Главное меню (на панели) => Системные параметры => Пользователи и группы или введите в приглашении оболочки команду redhat-config-users. Перейдите на вкладку Пользователи, выберите пользователя из списка и щёлкните в контекстном меню Свойства (или выберите в главном меню Файл => Свойства).

Затем перейдите на вкладку Группы и отметьте группу wheel, как показано на рисунке 4-2.

Рисунок 4-2. Вкладка Группы

Затем откройте файл настройки PAM для команды su (/etc/pam.d/su) в текстовом редакторе и уберите комментарий [#] в следующей строке:

auth  required /lib/security/pam_wheel.so use_uid

Сделав, это вы откроете доступ к этой программе только пользователям группы администраторов wheel.

ЗамечаниеЗамечание
 

Пользователь root по умолчанию включён в группу wheel.

4.4.3.2. Команда sudo

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

Общий формат команды sudo показан ниже:

sudo <command>

В этом примере <command> нужно заменить командой, обычно выполняемой пользователем root user, например, mount.

ВажноВажно
 

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

Команда sudo даёт большую гибкость. Например, только пользователи, перечисленные в файле /etc/sudoers, могут выполнить команду sudo, и эта команда будет выполнена в оболочке пользователя, а не root. Это значит, что оболочка root может быть полностью отключена, как описано в разделе 4.4.2.1 Отключение оболочки root.

Команда sudo также ведёт исчерпывающий аудит. Каждая успешная попытка входа регистрируется в файле /var/log/messages, а выполненная команда, вместе с именем выполняющего её пользователя в файле /var/log/secure.

Другим преимуществом команды sudo является то, что администратор может открыть пользователям доступ только к нужным им командам.

Администраторы, желающие отредактировать файл конфигурации sudo, /etc/sudoers, должны использовать команду visudo.

Чтобы дать кому-то все привилегии администратора, введите visudo и добавьте в раздел привилегий пользователя примерно такую строку:

juan ALL=(ALL) ALL

В этом примере пользователь juan может использовать sudo с любого компьютера и выполнить любую команду.

В приведённом ниже примере показано, как можно очень тонко настраивать sudo:

%users  localhost=/sbin/shutdown -h now

В данном примере любой пользователь, работающий на консоли, может выполнить команду /sbin/shutdown -h now.

Подробное описание параметров этого файла можно найти на странице man sudoers.