Linux глазами хакера
Шрифт:
□ компьютер — имя машины, на которой можно выполнять команду от лица администратора;
□ команды, которые разрешено выполнять указанному пользователю (перечисляются после знака равно).
Итак, чтобы пользователь смог просмотреть файл /etc/shadow, необходимо прописать соответствующее право. В моей системе есть простой пользователь с именем robert. Для него я добавляю в файл /etc/sudoers следующую запись:
Теперь пользователь robert сможет выполнять с помощью
На
Но разрешение выполнения абсолютно всех команд не соответствует принципам построения безопасной системы. Необходимо вводить определенные ограничения.
Обслуживать сервер, который обрабатывает ежедневно множество подключений пользователей и на котором работают разные сервисы, в одиночку очень сложно. Чаще в этом участвуют множество людей. Один отвечает за саму систему, другой занимается поддержкой Web-сервера, третий настраивает базу данных MySQL. Давать трем администраторам полные права не имеет смысла, необходимо разрешить каждому выполнять только те команды, которые необходимы для реализации поставленных задач. Таким образом, нужно четко прописывать права для конкретного пользователя.
Обратите внимание, что я указываю полный путь к программе
Допустим, вы хотите расширить права пользователя и позволить ему не только просматривать файл паролей, но и монтировать CD-ROM-диск. Для этого изменяем строку, добавляя разрешение на выполнение команды
Обратите внимание, что в случае с доступом к файлу /etc/shadow мы дали добро только на его просмотр, явно указав утилиту cat с параметром в виде пути к файлу с паролями. Это логично, ведь нет смысла изменять его, когда для этого существует команда
Но в этом случае хакер сможет от имени root просматривать любые файлы в системе и даже те, которые не должны быть ему видны.
Для команды
В рассмотренных примерах вместо имени компьютера я всегда применял ключевое слово
С помощью утилиты sudo можно выполнять команды от лица различных пользователей. Для этого используется ключ
Если
пользователь не указан, то программа sudo по умолчанию запрашивает пароль root. Это не очень удобно, т.к. придется отдавать пароль администратора учетной записи robert. В этом случае теряется смысл в построении такой сложной системы безопасности, ведь зная пароль root, пользователь сможет зарегистрироваться в системе как администратор и сделать все, что угодно.Никогда не передавайте пароль администратора. Используйте пароли других учетных записей, которым разрешена работа с необходимыми файлами и программами. В этом случае придется указывать конкретное имя пользователя, которое назначил администратор для выполнения команды.
Еще один способ сохранить пароль администратора — разрешить пользователю выполнять команды без аутентификации. Для этого необходимо между знаком равенства и списком разрешенных команд добавить ключевое слово
Теперь при выполнении команды
Если хакер получит доступ к учетной записи robert, то сможет с помощью утилиты sudo выполнять в системе любые команды. Если вы перечисляете возможные директивы, то серьезность взлома системы уменьшается в зависимости от того, насколько опасные команды вы разрешаете выполнять пользователю robert и в какой мере защищена эта учетная запись (длина и сложность пароля, прилежность владельца и т.д.).
С помощью утилиты sudo можно предоставить доступ для корректировки файлов. Никогда не делайте этого. Если текстовый редактор запустится для правки даже безобидного файла, хакер получит слишком большие возможности:
□ выполнять системные команды. Так как редактор открывается с правами root, команды также будут выполняться от имени этого пользователя, а значит, хакер получит в свое распоряжение всю систему;
□ открыть любой другой файл, пользуясь правами администратора.
Я никогда не делегирую возможность корректировки конфигурационных файлов с помощью редакторов. Если без этого не обойтись, то никогда не использую в этом случае права root. Конфигурационному файлу назначается другой владелец, и пользователь для исправлений будет запускать программу sudo только от его имени, а это значит, что редактор будет работать не с правами root.
К потенциально опасным командам, которые нежелательно предоставлять для выполнения с правами root другим пользователям, относятся:
□ редактирование файлов — позволяет злоумышленнику изменить любой конфигурационный файл, а не тот, что вы задали;
□
□
□