
Я думаю, что это будет мой первый пост на стороне StackExchange. Однако я знаю, что это должно быть настраиваемым, потому что я видел, как это было реализовано ранее, но я на самом деле не знаю, как это реализовано.
Я собираюсь сделать это на RedHat 7/8 или производных... Как сделать так, чтобы пользователю пришлось выполнять следующие повышения привилегий:
<user> -> <user>.adm -> root
- Пользователи IdM в группе ssh_users могут подключаться к серверам по SSH из любой точки сети(ей).
- Администраторы домена в IdM не могут использоваться для SSH-подключения к серверам и не входят в группу.
- Пользователи, являющиеся администраторами домена, должны подключиться по SSH к своему стандартному пользователю
sudo su - <user>.adm
. Они не могут напрямую получить доступ к root. - Пользователи, являющиеся администраторами домена, которые также имеют права root, должны
sudo su - <user>.adm
сначалаsudo su - root
- Не все администраторы домена имеют разрешение на получение root-прав.
В конечном счете, администраторы домена — это системные администраторы с разрешениями, соответствующими обслуживанию, устранению неполадок и исправлению системы. Системные инженеры имеют разрешение на получение root, что дает им полные разрешения в системе. Это также относится к делегированию обязанностей, когда только учетные записи аудита <user>.isso
имеют разрешения на удаление журналов за пределами пользователя root. Что в конечном итоге и является причиной этого требования.
Что я действительно ищу, так это документацию, которая (потому что я рисую пробелы) могла бы указать мне правильное направление или роли/игровые книги Ansible, которые функционально реализуют этот тип подхода с наименьшими привилегиями. Любая помощь будет высоко оценена!
решение1
Пользователи, являющиеся администраторами домена, которые также имеют права root, должны
sudo su - <user>.adm
сначалаsudo su - root
Концептуально ядуматьчто вам следует хотеть и чего вам необходимо достичь:
У всех администраторов есть две личные учетные записи:
- «обычная» учетная запись пользователя
- учетная запись администратора
Чтобы получить полные права администратора на сервере Linux:
администратору сначала необходимо войти в систему, используя свою обычную учетную запись пользователя.
<user>
после входа на сервер они повышают свои привилегии, входя в свою личную учетную запись администратора.
<user>.adm
sudo su - <user>.adm
запрашивает пароль для<user>
учетной записи, а затем, имея права root, заменяет пользователя на<user>.adm
.- ^^^ Это неправильный подход ИМХО.
Вы должны захотеть, чтобы ваши администраторы использовалиsu - <user>.adm
Это означает, что вашему администратору потребуется ввести свой пароль для учетной<user>.adm
записи (а не пароль учетной<user>
записи) для входа в систему как<user>.adm
.- Затем, если у ваших администраторов нет того же пароля для учетной записи adm, что и для их обычной учетной записи, взломанный пароль не будет достаточным для получения прав root на всех ваших серверах. ПОБЕДА!
sudo
Кроме того, для их учетной записи обычного пользователя не требуется никакой политики<user>
. ПОБЕДА!
После входа в систему с использованием личной учетной записи администратора им будет разрешено выполнять все действия, требующие
root
привилегий.Это требует создания
sudo
политики. Информации об этом более чем достаточно.Я предпочитаю использовать
#includedir /etc/sudoers.d
механизм, включенный в большинство современных/etc/sudoers
политик (там#
нет комментария!), перетаскивать файл (в имени которого нет.
) и настраивать политики таким образом.Одним из вариантов является наличие одного полиса для
hbruijn.adm
каждого человека, а именно/etc/sudoers.d/hbruijn_adm
:# /etc/sudoers.d/hbruijn_adm # sudo policy that allow HBruijn's admin account to perform all # as any user, without prompting for a password hbruijn.adm ALL = NOPASSWD: ALL
В качестве альтернативы, если все учетные записи adm, которым разрешено получать полные привилегии root в системах Linux, принадлежат определенной группе, настройте групповую политику.
Подразумевается, что вы дополнительно запрещаете администраторам входить в систему напрямую в свою учетную запись adm.
Например, для удаленного доступа по SSH это можно сделать, используя DenyUsers
директиву на серверах /etc/ssh/sshd_config
, запрещающую вход в систему определенному пользователю или пользователям, соответствующим шаблону:
# /etc/ssh/sshd_config
#here go defaults for all connections/users
PasswordAuthentication no
PubkeyAuthentication no
...
DenyUsers *.adm
В качестве альтернативы используйте аналогичный метод DenyGroups
для настройки групповой политики.