Повышение привилегий предотвращает получение root-доступа напрямую

Повышение привилегий предотвращает получение root-доступа напрямую

Я думаю, что это будет мой первый пост на стороне 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

Концептуально ядуматьчто вам следует хотеть и чего вам необходимо достичь:

У всех администраторов есть две личные учетные записи:

  1. «обычная» учетная запись пользователя
  2. учетная запись администратора

Чтобы получить полные права администратора на сервере Linux:

  1. администратору сначала необходимо войти в систему, используя свою обычную учетную запись пользователя.<user>

  2. после входа на сервер они повышают свои привилегии, входя в свою личную учетную запись администратора.<user>.adm

    • sudo su - <user>.adm запрашивает пароль для <user>учетной записи, а затем, имея права root, заменяет пользователя на <user>.adm.
    • ^^^ Это неправильный подход ИМХО.
      Вы должны захотеть, чтобы ваши администраторы использовали su - <user>.adm
      Это означает, что вашему администратору потребуется ввести свой пароль для учетной <user>.admзаписи (а не пароль учетной <user>записи) для входа в систему как <user>.adm.
      • Затем, если у ваших администраторов нет того же пароля для учетной записи adm, что и для их обычной учетной записи, взломанный пароль не будет достаточным для получения прав root на всех ваших серверах. ПОБЕДА!
      • sudoКроме того, для их учетной записи обычного пользователя не требуется никакой политики <user>. ПОБЕДА!
  3. После входа в систему с использованием личной учетной записи администратора им будет разрешено выполнять все действия, требующие 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для настройки групповой политики.

Связанный контент