Защита SUDO.
Метки: SUDO
Вторник, 12 мая 2009 г.
Просмотров: 2144
Параметры по умолчанию.
Полный список установок команды sudo можно вывести с помощь опции -V (запускать программу нужно от имени пользователя root):
LANGUAGE
LANG
LC_*
Environment variables to remove:
PERL5OPT
PERL5LIB
PERLLIB
JAVA_TOOL_OPTIONS
SHELLOPTS
PS4
BASH_ENV
ENV
TERMCAP
TERMPATH
TERMINFO_DIRS
TERMINFO
_RLD*
LD_*
PATH_LOCALE
NLSPATH
HOSTALIASES
RES_OPTIONS
LOCALDOMAIN
CDPATH
IFS
Local IP address and netmask pairs:
Это — установки по умолчанию. Они могут быть изменены с помощью директивы Defaults. Более подробно описано в справочной системе.
Отрицание.
SUDO дает возможность использования символа отрицания (!) для команд:
Это правило означает, что пользователю pete разрешено выполнять на машине potato команду su для любого пользователя, кроме root.
Ограничение аргументов команд.
Нужно убедиться, что данные пользователям команды не могут быть неправильно использованы с целью получения полных полномочий пользователя root. К примеру, если какому-то пользователю разрешить запускать программу adduser (useradd), то что ему может помешать создать новую учетную запись с правами root? После того, как такая учетная запись будет создана, он войдет под ней в систему и сможет сделать все, что захочет - даже стереть SUDO-записи в файле /var/log/messages .
Таким же образом пользователь, который отвечает за DNS и которому было разрешено от имени root редактировать файл конфигурации DNS и файлы зоны с помощью редактора vi, сможет изменить свои полномочия в файле /etc/sudoers или непосредственно отредактировать файлы /etc/passwd и /etc/shadow.
Перед тем, как будет предоставлен SUDO-доступ к определенной команде, нужно убедиться, что эту команду нельзя использовать против системы. Нужно помнить, что даже more или less можно использовать против системы, к примеру, для просмотра файла /etc/shadow. Казалось бы - это простые программы. А они, оказывается, дают возможность выполнять любую команду оболочки, если при просмотре файла ввести команду !command, к примеру, !cat /etc/shadow.
SUDO дает возможность контролировать не только программы, которые разрешено использовать пользователю, но и передаваемые им аргументы. Рассмотрим это на примере команды kill. Типичное ее использование - это отправка процессу сигнала SIGHUP (kill -1 или kill -HUP) для того, чтобы он снова прочитал файл конфигурации, или сигнала SIGKILL (kill -9 или kill - KILL) для завершения процесса. Следовательно, нужно разрешить использование данной программы только с этими параметрами, а все остальные - запретить:
Протоколирование.
SUDO записывает все свои действия, а также действия использующих sudo пользователей в файл /etc/log/messages. Для просмотра SUDO-действий нужно ввести команду:
May 28 22:34:19 dhsilabs sudo: pete : TTY=pts/4; PWD=/home/pete; USER=root; COMMAND=list
May 28 22:34:36 dhsilabs sudo: pete : TTY=pts/4; PWD=/home/pete; USER=root; COMMAND=/bin/kill -9 2989
Разобраться с записями протокола несложно: каждая запись содержит название пользователя, команду, которую он выполнял, и временную метку (время выполнения команды). Если пользователь попытается ввести недопустимую для него команду, SUDO все запишет в протокол.
Можно настроить SUDO так, чтобы он отправлял сообщение на е-mail адрес в случае, если кто-то попытается нелегально использовать команду sudo. Возможны следующие опции:
- mail_always — сообщение будет отправлено при каждой попытке пользователя выполнить команду;
- mail_badpass — сообщение будет отправлено, если пользователь ввел неправильный пароль при использовании sudo;
- mail_no_user — сообщение будет отправлено, если пользователь, который ввел команду sudo, не указан в файле /etc/sudoers;
- mail_no_host — сообщение будет отправлено, если пользователь прописан в /etc/sudoers, но выполняет команду с неразрешенного узла (который не прописан в /etc/sudoers);
- mail_no_perms — когда пользователь ввел неразрешенную для него команду.
Пример:
Для организации самого процесса отправки сообщения нужно использовать следующие опции:
- mailerpath — полный путь к MTA. По умолчанию используется sendmail.
- mailerflags — параметры программы отправки сообщения, по умолчанию -t.
- mailto — получатель сообщения, по умолчанию root.
- mailsub — тема сообщения. По умолчанию *** SECURITY INFORMATION for %h ***, где %h - это имя узла.
Например: