4.16. Повышение привилегий
В заключение рассмотрения темы безопасности необходимо подробно познакомиться с командой sudo, которая позволяет выполнять программы от имени другого пользователя.
Мы уже говорили в разд. 2.7 о том, что нельзя работать в системе под учетной записью администратора. Это опасно по следующим причинам:
□ программы, запущенные вами таким образом, работают с правами администратора. При наличии уязвимости хакер сможет ею воспользоваться для получения полных прав;
□ ошибки ввода какой-либо команды могут нарушить работу всей системы. А оплошности бывают часто, потому что в ОС Linux поддерживаются достаточно мощные возможности по использованию регулярных выражений.
Если у вас в системе нет пользователя, не обладающего правами администратора, то добавьте его сейчас. Теперь войдите в систему под его учетной записью и попробуйте просмотреть файл /etc/shadow, например, с помощью следующей команды:
cat /etc/shadow
В ответ на это вы должны получить сообщение о недостатке прав доступа. Теперь выполните ту же команду через sudo:
sudo cat /etc/shadow
Вы увидите сообщение о том, что ваша учетная запись отсутствует в файле /etc/sudoers, в котором прописываются разрешения на использование команды sudo. Пример содержимого этого конфигурационного файла приведен в листинге 4.2.
Листинг 4.2. Содержимое конфигурационного файла /etc/sudoers
# sudoers file.
# Файл sudoers
# This file MUST be edited with the 'visudo' command as root.
# Этот файл должен редактироваться с помощью команды 'visudo'
# от имени root
# See the sudoers man page for the details on how to write a sudoers file.
# Смотрите страницу sudoers руководства, где имеется подробная информация по использованию sudoers-файла.
# Host alias specification
# User alias specification
# Cmnd alias specification
# Defaults specification
# User privilege specification
root ALL=(ALL) ALL
# Uncomment to allow people in group wheel to run all commands
# %wheel ALL=(ALL) ALL
# Same thing without a password
# %wheel ALL=(ALL) NOPASSWD: ALL
# Samples
# %users ALL=/sb.in/mount /cdrom,/sbin/umount /cdrom
# %users localhost=/sbin/shutdown -h now
В этом файле только одна строка без комментария:
root ALL=(ALL) ALL
Она состоит из трех параметров:
□ имя — пользователь (или группа), которому разрешено выполнять определенную команду. Я рекомендую указывать конкретных пользователей. Хакер может стать участником группы и, не обладая при этом частными привилегиями, получит доступ к выполнению опасных команд;
□ компьютер — имя машины, на которой можно выполнять команду от лица администратора;
□ команды, которые разрешено выполнять указанному пользователю (перечисляются после знака равно).
Итак, чтобы пользователь смог просмотреть файл /etc/shadow, необходимо прописать соответствующее право. В моей системе есть простой пользователь с именем robert. Для него я добавляю в файл /etc/sudoersследующую запись:
robert ALL=ALL
Теперь пользователь robert сможет выполнять с помощью sudoлюбые администраторские задачи. Проверьте это, повторив выполнение команды:
sudo cat /etc/shadow
На этот раз все должно пройти успешно. На экране появится приглашение ввести пароль администратора для выполнения команды.
Но разрешение выполнения абсолютно всех команд не соответствует принципам построения безопасной системы. Необходимо вводить определенные ограничения.
Обслуживать сервер, который обрабатывает ежедневно множество подключений пользователей и на котором работают разные сервисы, в одиночку очень сложно. Чаще в этом участвуют множество людей. Один отвечает за саму систему, другой занимается поддержкой Web-сервера, третий настраивает базу данных MySQL. Давать трем администраторам полные права не имеет смысла, необходимо разрешить каждому выполнять только те команды, которые необходимы для реализации поставленных задач. Таким образом, нужно четко прописывать права для конкретного пользователя.
robert ALL=/bin/cat /etc/shadow
Обратите внимание, что я указываю полный путь к программе cat(напоминаю, его можно узнать с помощью команды which), это необходимо, иначе вместо результата, полученного по разрешенной команде, пользователь robert увидит сообщение об ошибке в конфигурации.
Читать дальше
Конец ознакомительного отрывка
Купить книгу