Red Hat Enterprise Linux 3: Руководство по безопасности | ||
---|---|---|
Назад | Глава 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). Однако выполнение других важных административных задач, таких как изменение параметров сети, настройка новой мыши или подключение сетевых устройств невозможно без прав администратора. В результате системные администраторы должны решить, какие административные полномочия должны получить пользователи их сети.
Если пользователи организации доверяют друг другу и разбираются в компьютерах, может быть неплохо дать им всем права root. Наделение их правами root будет означать, что мелкие вопросы, такие как добавление устройств или настройка сетевых интерфейсов, будут решать сами пользователи, освобождая администраторов для решения важных проблем, например, сетевой безопасности.
С другой стороны, назначение отдельным пользователям прав root может создать проблемы, например, следующие:
Неверная настройка компьютера — Пользователи с правами root, могут неправильно настроить свои компьютеры, после чего им потребуется помощь, или, что ещё хуже, могут создать дыры в безопасности, не догадываясь об этом.
Запуск небезопасных служб — Пользователи с правами root могут запускать на своих компьютерах небезопасные службы, например FTP или Telnet, что ставит под угрозу их имена и пароли, передаваемые по сети открытым текстом.
Запуск почтовых вложений под именем root — Хотя вирусы для Linux — редкость, но всё же они есть. И они представляют собой угрозу, только если их запускает пользователь root.
Если по этим или другим причинам администратору не хочется, чтобы пользователи имели права root, пароль root следует хранить в секрете и запретить доступ к первому уровню выполнения или монопольному режиму, защитив загрузчик паролем (подробнее эта тема рассматривается в разделе 4.2.2 Пароли загрузчика системы).
В таблице 4-1 перечислены способы дальнейшей защиты от входа под именем root:
Способ | Описание | Действие | Не затрагивает | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Изменение оболочки root. | Отредактируйте файл /etc/passwd и смените оболочку с /bin/bash на /sbin/nologin. |
|
| |||||||||||||||
Запрет доступа root с любых консольных устройств (tty). | Пустой файл /etc/securetty не позволит root войти в систему с любых устройств, подключенных к компьютеру. |
|
| |||||||||||||||
Запрет входа root через SSH. | Отредактируйте файл /etc/ssh/sshd_config и задайте параметр PermitRootLogin равным no. |
|
| |||||||||||||||
Используйте PAM для ограничения доступа root к службам. | Отредактируйте файл нужной службы в каталоге /etc/pam.d/. Убедитесь в том, что для проверки подлинности требуется pam_listfile.so. За подробностями обратитесь к разделу 4.4.2.4 Отключение root с помощью PAM. |
|
|
Таблица 4-1. Способы отключения учётной записи root
Чтобы запретить пользователям непосредственный вход под именем root, системный администратор может задать для root оболочку /sbin/nologin в файле /etc/passwd. Это предотвратит доступ к учётной записи root с помощью команд, использующих оболочку, например su и ssh.
Важно | |
---|---|
Программы, не нуждающиеся в оболочке, например, почтовые клиенты или команда sudo, по-прежнему могут работать под именем root. |
Чтобы ещё больше ограничить доступ к учётной записи root, администраторы могут запретить вход под именем root с консоли, отредактировав файл /etc/securetty. В этом файле перечислены все устройства, с которых может регистрироваться root. Если файл не существует, пользователь root сможет войти в систему с любого устройства, будь то консоль или сетевой интерфейс. Это опасно, так как пользователь может входить в систему, используя Telnet, а при этом его пароль передаётся по сети в открытом виде. По умолчанию, в Red Hat Enterprise Linux файл /etc/securetty разрешает root подключаться только с физически подключенной к компьютеру консоли. Чтобы запретить вход root, очистите содержимое этого файла, выполнив следующую команду:
echo > /etc/securetty |
Предупреждение | |
---|---|
Пустой файл /etc/securetty не предотвращает удалённый доступ root с помощью набора инструментов OpenSSH, так как консоль открывается после проверки подлинности. |
Чтобы запретить регистрацию root с использованием протокола SSH, отредактируйте файл настроек демона SSH (/etc/ssh/sshd_config). Измените строку, в которой написано:
# PermitRootLogin yes |
на следующую:
PermitRootLogin no |
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.
Вместо того, чтобы полностью закрывать доступ пользователю root, администратор может разрешить доступ только к программам setuid, например, к su или sudo.
Когда пользователь выполняет команду su, ему предлагается ввести пароль root, и после проверки он попадает в приглашение оболочки root.
Зарегистрировавшись с помощью команды su, пользователь является пользователем root и имеет все права администратора системы. Кроме этого, если пользователь стал root, с помощью команды su он может стать любым другим пользователем системы, не зная его пароля.
Учитывая мощь этой программы, администраторам в организациях, возможно, захочется ограничить круг лиц, имеющих к ней доступ.
Проще всего это можно сделать, добавив пользователей в специальную административную группу wheel. Для этого выполните от имени root следующую команду:
usermod -G wheel <username> |
В этой команде замените <username> именем пользователя, которого следует добавить в группу wheel.
Чтобы проделать то же самое с помощью Менеджера пользователей, выберите в Главное меню (на панели) => Системные параметры => Пользователи и группы или введите в приглашении оболочки команду redhat-config-users. Перейдите на вкладку Пользователи, выберите пользователя из списка и щёлкните в контекстном меню Свойства (или выберите в главном меню Файл => Свойства).
Затем перейдите на вкладку Группы и отметьте группу wheel, как показано на рисунке 4-2.
Затем откройте файл настройки PAM для команды su (/etc/pam.d/su) в текстовом редакторе и уберите комментарий
auth required /lib/security/pam_wheel.so use_uid |
Сделав, это вы откроете доступ к этой программе только пользователям группы администраторов wheel.
Замечание | |
---|---|
Пользователь root по умолчанию включён в группу wheel. |
Команда 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.