После установки сервера VMware ESX 4 из состава vSphere 4
многие пользователи сталкиваются с первой проблемой: невозможно удаленно
войти пользователем root в Service Console по протоколу SSH. Решив эту
проблему, пользователи задумываются о том, достаточно ли безопасно
всегда входить в сервисную консоль пользователем root и какие права
необходимо назначать пользователям в Service Console для работы с
сервером VMware ESX. Сегодня мы рассмотрим обе этих проблемы в контексте
безопасности и покажем некоторые практические приемы работы с командами
su и sudo.
Итак, вы установили сервер VMware ESX 4 и начинаете им управлять с
помощью VMware vSphere Client. Но его функционала для выполнения
каких-либо операций вам недостаточно, и вы хотите исполнять команды в
консольной ОС (Service Console), чтобы контролировать все аспекты
администрирования платформы виртуализации и виртуальных машин. Вы
устанавливаете SSH Client (например, Putty - но я рекомендую Putty Connection Manager) и пробуете войти в Service Console пользователем root. Не получается - пишут access denied.
Причина проста - по протоколу SSH по умолчанию логин пользователя root в
сервисную консоль отключен. Чтобы включить его - надо отредактировать
файл sshd_config пользователем root. Как это сделать?
Очень просто: открываете VMware vSphere Client и соединяетесь с сервером VMware ESX 4. Переходите на вкладку Users & Groups, нажимаете правой кнопкой в любом месте списка пользователей и выбираете пункт Add... Далее вводите параметры новой учетной записи и обязательно отмечаете галку Grant shell access to this user.
Далее открываете Putty и соединяетесь созданным пользователем VMware ESX с сервером по SSH.
Теперь нужно повысить привилегии пользователя до root. Это делается командой su (Substitute user, а не Switch User, как полагают многие). В качестве аргумента команды необходимо указать - (тире), чтобы переменные окружения остались не от старого пользователя, а взялись от root. Мы получим вот такую картину в Putty:
Теперь мы в системе как root и можем редактировать настройки SSH. Открываем файл sshd_config с помощью удобного редактора Nano (можно использовать также редактор vi) командой:
nano /etc/ssh/sshd_config
Затем исправляем строчку:
PermitRootLogin no
на строчку:
PermitRootLogin yes
После этого сохраняем файл sshd_config (Ctrl+X) и перезапускаем сервис SSH командой:
service sshd restart
Теперь мы можем полноценно залогиниться в Service Console
пользователем root. Но безопасно ли так делать? Ведь работа под
пользователем root несет в себе потенциальные угрозы безопасности всей
виртуальной инфраструктуре в случае работы пользователя даже лишь на
одном сервере ESX. Все хранилища VMFS видны одним сервером ESX кластера,
и, соответственно, пользователь, обладающий неограниченными
полномочиями может всю виртуальную инфраструктуру поломать,
скомпрометировав все виртуальные машины.
Чтобы этого не происходило, можно отключить возможность использования команды su (повышение привилегий) и заставить пользователей (администраторов) применять команду sudo для выполнения действий административного характера с сервером VMware ESX 4.
Команда sudo была разработана специально для делегирования полномочий
адмнистратора пользователям, при этом можно указывать список
разрешенных к использованию администратором команд, редактируемых файлов
и многое другое. Аналог этой команды в Microsoft Windows - это "run as", но у sudo - более широкий спектр настроек.
Все права пользователей, использующих sudo, настраиваются в файле:
/etc/sudoers
Для отключения возможности выполнять команду su пользователям сервисной консоли, нужно внести изменения в файл /etc/pam.d/su.
В файле /etc/pam.d/su должна быть раскомментирована запись:
auth required /lib/security/$ISA/pam_wheel.so use_uid
Теперь, когда повышение привилегий с помощью su отключено, необходимо добавить пользователя в файл sudoers для использования им команды sudo. Открываем пользователем root файл /etc/sudoers командой:
nano /etc/sudoers
И добавляем туда строчку такую строчку, если мы хотим дать пользователю возможность выполнить команду esxcfg-vswif:
<имя пользователя> ALL=/usr/sbin/esxcfg-vswif
чтобы выполнить команду от имени root, пользователю нужно будет напечатать следующее в Service Console:
sudo <команда, разрешенная в sudoers>
Например:
sudo /usr/sbin/esxcfg-vswif -l
После ввода пароля пользователя команда будет выполнена и мы увидим результат работы команды esxcfg-vswif -l , при этом, если попытаться выполнить другую команду (например, esxcfg-vmknic -l ), консоль сообщит нам, что это не разрешено:
Таким образом, с помощью команды sudo и файла
sudoers можно разграничивать права пользователей на выполнение
административных команд на VMware ESX. Практику повышения привилегий
командой su лучше не использовать - зачем давать
отдельному пользователю полный контроль над всей виртуальной
инфраструктурой VMware vSphere?
http://www.vmgu.ru/articles/vmware-esx-security-ssh-sudo
|