Назад | Перейти на главную страницу

Определение хостов в файле sudoers

Я хочу отредактировать свой файл sudoers, чтобы у пользователей были разные привилегии в зависимости от того, откуда они входят в систему. Я хочу иметь 3 разных места: внешняя сеть (Интернет), внутренняя (локальная сеть) и консоль (пользователь сидит перед компьютером). определение внешнего и внутреннего будет примерно таким:

Host_Alias       PRIVNET         = 10.6.66.0/25, 10.6.67.128/28

Но как мне определить консоль?

Я не хочу, чтобы пользователь мог вносить изменения в брандмауэр или sudoers, например, если его нет на месте, если что-то пойдет не так или, возможно, даже если его учетная запись будет взломана.

Я просто хочу убедиться, что пользователь находится рядом, когда вносит критические изменения.

Определение хоста sudoers (и, следовательно, Host_Alias) предназначено для определения, к каким хостам применяется эта запись файла sudoers. Другими словами, он определяет, какие права есть у пользователей. на этот хозяин, а не из какие хосты имеют эти права. (IIRC)

Итак, короче говоря, то, что вы хотите сделать, нельзя сделать с помощью записи sudoers.

Если вы можете это сделать, я бы подумал, что это будет где-то с PAM (подключаемые модули аутентификации). Или, может быть, директива requiretty файла suoders (man sudoers).

Однако я думаю, что вы можете упомянуть свою цель. Мне это кажется неправильным с точки зрения безопасности. Я думаю, было бы разумнее иметь разные учетные записи с разными уровнями доступа, а затем разрешать этим учетным записям входить только с определенного IP-адреса. Тогда у вас есть два уровня безопасности макросов, аутентификация по паролю и на основе IP. Первичный уровень - это учетная запись - я думаю, что учетная запись должна иметь возможность делать одни и те же вещи независимо от того, откуда они вошли в систему.

Использование файла sudoers для ограничения команд кажется мне немного сложным, поэтому я бы использовал его только как дополнительный уровень безопасности к тому, что я упомянул выше.

Итак, в конце концов, моя рекомендация:

  • Создайте разные учетные записи / группы с нужным вам доступом и предоставьте им доступ к этим командам в файле suoders. Идея состоит в том, что существуют «внешние (не LAN)» аккаунты, которые могут никогда запускать определенные команды и привилегированные учетные записи, которые могут.
  • Используйте PAM, чтобы контролировать, где этим привилегированным учетным записям разрешено входить, Вот это пример использования ssh.