Поиск по сайту:

10 полезных конфигураций Sudoers для настройки sudo в Linux


В Linux и других Unix-подобных операционных системах только пользователь root может запускать все команды и выполнять определенные критические операции в системе, такие как установка и обновление, удаление пакетов, создание пользователей и групп, изменение важных системных данных. файлы конфигурации и так далее.

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

Альтернативно, системный администратор может поделиться паролем пользователя root (что не рекомендуется), чтобы обычные пользователи системы имели доступ к учетной записи пользователя root с помощью команды su.

sudo позволяет разрешенному пользователю выполнять команду от имени пользователя root (или другого пользователя), как указано в политике безопасности:

  1. Он читает и анализирует /etc/sudoers, ищет вызвавшего пользователя и его разрешения,
  2. затем запрашивает у вызывающего пользователя пароль (обычно это пароль пользователя, но он также может быть паролем целевого пользователя. Или его можно пропустить с помощью тега NOPASSWD),
  3. после этого sudo создает дочерний процесс, в котором вызывает setuid() для переключения на целевого пользователя.
  4. затем он выполняет оболочку или команду, указанную в качестве аргументов в дочернем процессе выше.

Ниже приведены десять конфигураций файла /etc/sudoers для изменения поведения команды sudo с использованием записей Defaults.

sudo cat /etc/sudoers
#
This file MUST be edited with the 'visudo' command as root.
#
Please consider adding local content in /etc/sudoers.d/ instead of
directly modifying this file.
#
See the man page for details on how to write a sudoers file.
#
Defaults	env_reset
Defaults	mail_badpass
Defaults	secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
Defaults	logfile="/var/log/sudo.log"
Defaults	lecture="always"
Defaults	badpass_message="Password is wrong, please try again"
Defaults	passwd_tries=5
Defaults	insults
Defaults	log_input,log_output

Типы записей по умолчанию

Defaults                parameter,   parameter_list     #affect all users on any host
Defaults@Host_List      parameter,   parameter_list     #affects all users on a specific host
Defaults:User_List      parameter,   parameter_list     #affects a specific user
Defaults!Cmnd_List      parameter,   parameter_list     #affects  a specific command 
Defaults>Runas_List     parameter,   parameter_list     #affects commands being run as a specific user

В рамках данного руководства мы ограничимся первым типом Значения по умолчанию в формах ниже. Параметрами могут быть флаги, целочисленные значения, строки или списки.

Следует отметить, что флаги являются неявно логическими и могут быть отключены с помощью оператора '!', а списки имеют два дополнительных оператора присваивания: += (добавить в список) и -= (удалить из списка).

Defaults     parameter
OR
Defaults     parameter=value
OR
Defaults     parameter -=value   
Defaults     parameter +=value  
OR
Defaults     !parameter       

1. Установите безопасный ПУТЬ

Этот путь используется для каждой команды, запускаемой с помощью sudo. Он имеет два значения:

  1. Используется, когда системный администратор не доверяет пользователям sudo иметь безопасную переменную среды PATH.
  2. Чтобы разделить «корневой путь» и «путь пользователя», этот параметр не затрагивает только пользователей, определенных с помощью exempt_group.

Чтобы установить его, добавьте строку:

Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"

2. Включите sudo для сеанса входа в систему пользователя TTY.

Чтобы разрешить вызов sudo из реального tty, а не с помощью таких методов, как сценарии cron или cgi-bin, добавьте строку:

Defaults  requiretty   

3. Запустите команду Sudo, используя pty.

Несколько раз злоумышленники могут запустить вредоносную программу (например, вирус или вредоносное ПО) с помощью sudo, что снова вызовет фоновый процесс, который останется на конечном устройстве пользователя даже после завершения выполнения основной программы.

Чтобы избежать такого сценария, вы можете настроить sudo для запуска других команд только из psuedo-pty, используя параметр use_pty, независимо от того, включено ли ведение журнала ввода-вывода или нет. следует:

Defaults  use_pty

4. Создайте файл журнала Sudo.

По умолчанию sudo регистрируется через syslog(3). Однако, чтобы указать собственный файл журнала, используйте параметр logfile следующим образом:

Defaults  logfile="/var/log/sudo.log"

Чтобы зарегистрировать имя хоста и четырехзначный год в пользовательском файле журнала, используйте параметры log_host и log_year соответственно следующим образом:

Defaults  log_host, log_year, logfile="/var/log/sudo.log"

Ниже приведен пример пользовательского файла журнала sudo:

5. Зарегистрируйте ввод/вывод команды Sudo

Параметры log_input и log_output позволяют sudo запускать команду в псевдо-терминале и регистрировать весь пользовательский ввод и весь вывод, отправленный на экран.

Каталогом журнала ввода-вывода по умолчанию является /var/log/sudo-io, и если существует порядковый номер сеанса, он сохраняется в этом каталоге. Вы можете указать собственный каталог с помощью параметра iolog_dir.

Defaults   log_input, log_output

Поддерживаются некоторые escape-последовательности, такие как %{seq}, которые расширяются до монотонно увеличивающегося порядкового номера в базе 36, например 000001, где каждые две цифры используются для формирования нового каталога, например 00/00/01, как показано в примере ниже:

cd /var/log/sudo-io/
ls
cd  00/00/01
ls
cat log

Остальные файлы в этом каталоге можно просмотреть с помощью команды cat.

6. Проведите лекцию пользователям Sudo

Чтобы прочитать пользователям sudo информацию об использовании паролей в системе, используйте параметр lection, как показано ниже.

Имеет 3 возможных значения:

  1. всегда – всегда читать пользователю лекции.
  2. один раз — читать пользователю только чтение при первом выполнении команды sudo (это используется, когда значение не указано)
  3. никогда – никогда не учите пользователя.
 
Defaults  lecture="always"

Кроме того, вы можете настроить собственный файл лекции с помощью параметра lecture_file, введя в файл соответствующее сообщение:

Defaults  lecture_file="/path/to/file"

7. Показывать собственное сообщение при вводе неправильного пароля sudo

Когда пользователь вводит неправильный пароль, в командной строке отображается определенное сообщение. По умолчанию используется сообщение «извините, попробуйте еще раз». Вы можете изменить сообщение с помощью параметра badpass_message следующим образом:

Defaults  badpass_message="Password is wrong, please try again"

8. Увеличьте лимит попыток ввода пароля sudo

Параметр passwd_tries используется для указания количества попыток ввода пароля пользователем.

Значение по умолчанию — 3:

Defaults   passwd_tries=5 

Чтобы установить таймаут пароля (по умолчанию 5 минут) с помощью параметра passwd_timeout, добавьте строку ниже:

Defaults   passwd_timeout=2

9. Пусть Sudo оскорбляет вас, когда вы вводите неправильный пароль

Если пользователь вводит неправильный пароль, sudo будет отображать оскорбления на терминале с помощью параметра оскорбления. Параметр badpass_message автоматически отключится.

Defaults  insults 

Подробнее: пусть Sudo оскорбляет вас, когда вы вводите неправильный пароль

10. Узнайте больше о конфигурациях Sudo

Кроме того, вы можете узнать больше о конфигурациях команды sudo, прочитав: Разница между su и sudo и Как настроить sudo в Linux.

Вот и все! Вы можете поделиться другими полезными конфигурациями команд sudo, а также приемами и советами с пользователями Linux через раздел комментариев ниже.