Зачем вам вводить пароль в sudo?

в 2:38, , рубрики: Без рубрики

Если

  • Речь идёт о личном рабочем окружении. 1
  • Вы недостаточно параноик, чтобы довести дело до конца:
    • Все программы работают от вашего пользователя. 2
    • /home монтируется без noexec. Хотя это почти не помогает и очень не удобно в большинстве случаев, но если у вас так — у вас, как у неплохого параноика, есть перспектива далеко зайти этим путём.
  • Вы регулярно администрируете систему из-под своего пользователя (с помощью того же sudo). 3

Рабочее окружение

Рабочее окружение — это тот потенциальный источник заразы, который мы хотим изолировать от остальной системы. Помимо защиты от целенаправленного злодейства, понижение привилегий в нём (то что называется «не работайте от root») спасает от жестоких ошибок и плохо написанных программ, которых может не простить root.

Собственно, не спрашивающий пароля sudo не мешает защите от опечаток (если, конечно, вы не имеете неприятного рефлекса сразу перепечатать эту несработавшую конструкцию с sudo), софт также обычно не приучен самостоятельно использовать sudo, так что единственное, от чего «уточнение» пароля помогает — злостные вирусы и злоумышленники, ставящие своей целью установить всю вашу систему на колени.

Ещё раз об изоляции

Изолировать пользовательский шелл (то место, где вы вводите sudo, а потом в него свой пароль) от самого пользователя — места, где обитает зараза, — задача нетривиальная и, более того, не самая простая в том виде, в котором она поставлена. Гораздо более простой путь — это запуск потенциально ненадёжных программ, таких как браузер, а для особо параноиков — торрент клиента и даже офисного пакета — любых программ, работающих с внешними данными — в отдельном окружении (под отдельным пользователем и/или даже в chroot). Но большинство из читателей, наверное, не интересовалось такими довольно затратными конструкциями.

Если идти трудным путём

Можно отделить конфигурацию и запуск шелла от пользователя: выставить запретительные права на .bashrc и на конфиг того приложения, из которого вы запускаете bash и далее линейно рекурсивно до оконного менеджера (невключительно).

Собственно, сложная, но неисчерпывающая система. Хотя, пожалуй, и оттолкнёт не очень настойчивого злоумышленника :)

А что, без изоляции нельзя?

Достаточно злоумышленнику написать в .bashrc alias на sudo и вы будете слепо вводить свой ht7Qxfc8 чуть ли не прямо в irc некоторого недружественного товарища, хотя о случаях автоматизированного использования подобных средств я не слышал, но автоматизация такого подхода имеет даже бо́льшие перспективы, чем попытки использования sudo без пароля, так как она подойдёт под пользователя самого популярного дистрибутива.

Пора перестать вводить пароль

В общем, пора либо перейти на новый уровень паранойи (за рамками данной статьи), либо перестать бояться рабочего окружения и согласиться с тем, что получение привилегий в нём равносильно получению root привилегий в системе. И поменять конфиг.

что поменять

где-то в глубине конфига

Напомню, что sudo проверяет только лишь аутентичность исходного пользователя, т.е., вне зависимости от наличия NOPASSWD:, пользователи из спецификации имеют безусловное право на описываемое повышение привилегий.

было
%wheel ALL=(ALL) ALL

стало
%wheel ALL=(ALL) NOPASSWD: ALL

%wheel — группа пользователей, которым даровано настоящее право.

Вид записи может сильно различаться, самое главное — место для NOPASSWD: находится перед последним ALL на интересующей нас строке. (либо так, либо вы и так скорее всего уже знаете, где оно находится :)

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

Важное исключение из правил

  • У вас за спиной стоит человек, который хочет проверить вот этот скрипт на perl.
  • Этот человек знает шутку про sudo make sandwich.
  • Не смотря на предыдущие два пункта, вы покидаете рабочее место не оставляя лок-скрина.

Автор: TheRipper

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js