Задача атакующего всегда будет проще задачи обороняющегося - для… — Остальные 90% — TG.ME

Задача атакующего всегда будет проще задачи обороняющегося - для победы первым достаточно найти лишь один недочёт в работе вторых. Руководствуясь этой логикой, опытные администраторы советуют не трогать лишний раз стандартные, выверенные настройки безопасности без веских причин и чёткого понимания своих действий: современные системы сложные, многокомпонентные, и упустить какую-то деталь может быть слишком просто.

Внимательно рассматривая предыдущую заметку, можно задуматься, как именно polkit определил, что пользователю можно доверять. Для Ubuntu ответ находится в man pklocalauthority: polkit читает файлы конфигурации из директории /etc/polkit-1/, где описано, какие пользователи считаются администраторами:
$ cat /etc/polkit-1/localauthority.conf.d/*
[Configuration]
AdminIdentities=unix-user:0
[Configuration]
AdminIdentities=unix-group:sudo;unix-group:admin

Авторизовать как администраторов polkit будет пользователя с id 0, то есть root, и всех пользователей, помещённых в группы sudo или admin.

Для других дистрибутивов настройки могут немного отличаться, однако принцип сохраняется. Например, в RedOS 8 этих файлов не будет, зато одно из правил в директории /usr/share/polkit-1/rules.d/ будет гласить:
# cat 50-default.rules
polkit.addAdminRule(function(action, subject) {
return ["unix-group:wheel"];
});

Получается, любой пользователь из группы wheel будет считаться администратором.

Это наблюдение интересно тем, что sudo позволяет точечно выдавать пользователям права на исполнение определённых файлов. Например, строки
mint ALL =(ALL) !ALL
mint ALL = NOPASSWD: /usr/bin/ls

в конфиге sudo позволяет пользователю mint выполнять только команду ls от имени суперпользователя, даже если он находится в группе sudo:
$ id -nG
mint adm sudo docker
$ sudo touch file.txt
Sorry, user mint is not allowed to execute '/usr/bin/touch' as root on this-host.
$ sudo ls
Audio
Desktop
...

Однако pkexec об этих настройках не знает, поэтому трюк из предыдущей заметки работает. И это же заставляет задуматься о том, что одного членства в группе администратора достаточно для получения полных прав вне зависимости от настроек в файле /etc/sudoers. Нельзя добавлять пользователей в админские группы, желая выдать им лишь частичные права на исполнение файлов.

Дистрибутивы определяют самостоятельно, какие группы будут давать доступ к командам sudo и pkexec, и согласованно составляют файлы конфигурации для обеих систем. Менять их тоже нужно совместно и осторожно. Интересно, что даже CIS Bencmarks практически не касаются этой темы.

Можно заметить, кстати, что такие "топорные" политики polkit объясняют, почему документация и установщик говорят об "администраторе", а не просто о "доступе к sudo ". Разница всё же есть.

P.S. Вызывая pkexec в графическом интерфейсе Gnome, polkit не позволит выбрать пользователя, от чьего имени авторизоваться, доступен будет только первый созданный в системе пользователь. Этому багу уже больше 4 лет, и до сих пор его не починили. Да и ладно, зато pkttyagent этим не болеет.
Telegram
Остальные 90%
Для исполнения команд от имени других пользователей в Linux, не секрет, используется команда sudo, и чаще всего она нужна для выполнения команд от имени суперпользователя. Здесь всё ясно - сложности наступают, когда sudo ломается. Традиционная причина поломки…
👍9🔥4❤2
February 17, 2025 613 10