Портабельный запуск браузеров
Форумчане, подскажите плиз, как сделать изолированный запуск браузеров под определенную анонимную сеть и связать их ярлыки. С ТОR все понятно – портабельную версию качаю, запускаю ярлык и одновременно запускается TBB, как такое-же сделать с I2P? чтобы запускался браузер и при этом соединения в обычные интернеты блокировалось на время работы I2P.
Спасибо
Ссылки
[link1] http://www.pgpru.com/biblioteka/rukovodstva/setevajaanonimnostj/prodvinutoeispoljzovanietorvunix/razdeljnoeispoljzovanietorbrowserssistemnymtoriprozrachnajatorifikacija
[link2] http://citforum.ck.ua/operating_systems/linux/HOWTO/mini/Remote-X-Apps/x272.shtml
[link3] https://trac.torproject.org/projects/tor/wiki/doc/TorInChroot
[link4] http://www.pgpru.com/comment34713
[link5] http://www.ibm.com/developerworks/ru/library/l-linuxappswindows/
[link6] http://www.pgpru.com/comment51610
[link7] http://www.pgpru.com/comment72380
[link8] http://www.pgpru.com/comment59307
[link9] http://www.pgpru.com/comment53307
[link10] http://www.pgpru.com/comment45273
[link11] http://www.pgpru.com/comment45321
[link12] http://www.pgpru.com/comment48280
[link13] http://www.pgpru.com/comment38599
[link14] http://www.pgpru.com/comment67622
[link15] http://www.pgpru.com/comment34704
[link16] http://www.pgpru.com/novosti/2004/0526postukivanieknopokklaviaturypomozhetshpionam
[link17] http://www.pgpru.com/novosti/2005/0914novyerezuljtatyvraspoznavaniizvukaklavish
[link18] http://www.pgpru.com/forum/kriptografija/akusticheskijjkriptoanaliztehnicheskijjkanalute
[link19] http://www.pgpru.com/novosti/2007/0429radioperehvatizobrazhenijanaekranenoutbuka
[link20] http://www.pgpru.com/comment9649
[link21] http://www.pgpru.com/comment59352
[link22] http://www.pgpru.com/comment61836
[link23] http://www.pgpru.com/comment73137
[link24] http://www.pgpru.com/comment73061
[link25] http://www.pgpru.com/comment73189
[link26] http://www.pgpru.com/comment73118
[link27] http://www.pgpru.com/comment25812
портабельный I2P вроде не запрещали. да и файервол тоже. система то какая?
Ubuntu.
Скажите мне последовательность действий или где что почитать.
Спасибо.
Здесь[link1] описано, как расчленить TBB на составляющие и как заставить их работать по отдельности. Не знаю, насколько актуален материал для последней версии TBB, т.к. разработчики ломали прозрачную торификацию (прозрачное проксирование) и функционал внешней прокси уже раз десять. Потенциально вам нужно вычленить из TBB браузер (TorBrowser, который форк FireFox) и прицепить его к портам I2P, а для страховки всё сверху ещё закрыть файерволлом (iptables). Ярлыками лучше не пользуйтесь, запускайте TBB и TorBrowser из консоли. Если будут какие-то ошибки или уязвимости, о них, вероятно, будут сообщения в консоли, и вы их увидете, а если запущено с ярлыка, вы ничего не заметите.
Не пользовался i2p, но думаю что работает аналогично Тору. Завести отдельных пользователей для Тора и i2p (если их ещё нет). Написать скрипт, который делает следующее:
1. Скрипту передаётся нужный режим работы например: Tor, i2p и plain (напрямую). Передать можно либо аргументом командной строки либо через xmessage (если скрипт вызывается через ярлык).
2. Создаются правила сетевого экрана – если режим работы Тор, то выход в сеть разрешён только для соответствующего пользователя. Для i2p аналогично.
3. Меняется конфигурация браузера (или прокси-сервера всё идёт через него) так чтобы задать нужный socks-прокси. Просто модифицируется нужная часть конфигурационного файла. Для Тор это localhost:9050, для i2p наверное что-то подобное.
Для большей безопасности можно для каждого сетевого приложения, участвующего в анонимных соединениях, создать свой chroot – Тор, i2p, прокси (если есть), браузер.
Гость, я очень Вас прошу – распишите пожалуйста подробнее о создании пользователей под TOR\I2P, т.е. я завожу в системе отдельную учетку с ограниченными правами? Например у меня в системе будут tor_user, i2p_user, root и соответственно я (к примеру my_user), и как мне из под моего my_user запускать браузеры, заточенные под tor или i2p в соответствующих учетках? Или типа – хочешь использовать Tor – логинься под tor_user, хочешь I2P – заходи под i2p_user, правильно?
И отдельно прошу Вас прокомментировать это:
Заранее Вам благодарен.
типа такого? http://bflinux.blogspot.ru/2012/04/gui.html
Запуск приложения от другого пользователя[link2]
Системный пользователь с ограниченными правами без учётной записи, от имени которого запускается сетевое приложение. Нужен чтобы защитить систему от этого приложения, на случай уязвимости в нём, т.к. через сеть многие таким способом могут получить доступ к системе. Если программа установлена, то обычно такой пользователь уже создан установочным скриптом. Для усиления защиты системы от приложения для него создаётся изолированное окружение, называемое песочницей, в котором оно запускается. Чтобы работало нужно в это окружение поместить все необходимые программные компоненты, в которых нуждается приложение при своей работе. Это динамические библиотеки, файлы устройств, конфигурационные файлы. Это выглядит как копирование нужных файлов в определённый каталог. После этого командой chroot запускается исполняемый файл приложения для смены корневого каталога на каталог песочницы. Пример того как это делается для Тора здесь
https://trac.torproject.org/pr.....wiki/doc/TorInChroot[link3]
Для других программ – по аналогии.
chroot[link4] не предназначен для безопасности. Он никогда не создавался для этой цели. Разработчики торпроджекта, судя по их комментам в рассылке, даже не в курсе этого.
Тогда отдельный профиль wine, обрезать контакты в обычный интернет фаерволом и запутить в нем.
Wine? Ну да, куда уж chroot с ним тягаться.
да вот интересный вопрос. в Винде запустить приложение от другого пользователя легко – Shift+ПКМ – вконтекстном меню выбрать Запустить от другого пользователя. а вот в Линукс нет такой реализации.
здесь наверно есть что полезное http://www.ibm.com/developerwo...../l-linuxappswindows/[link5]
man sudo
""-u"
это должно так выглядеть (?):
– пользователь А хочет запустить приложение от пользователя Б
– пишем в терминале: sudo -u Б/#uid mc, где Б – имя пользователя, #uid – где-то надо взять, mc – приложение.
это так выглядит?
Напомнинаю, что
Для каждого приложения желательно создать (man useradd) 2 пользователя: tor и toruser.** Для начала, пусть это будут обычные пользователи с шеллом. Tor запускаете из-под рута от имени, допустим, пользователя[link7] toruser. Если у вас автоматически создался нужный системный пользователь при установке Tor, можете попытаться использовать его. В иксах логинитесь от имени пользователя tor и настраиваете TBB на работу через тот Tor, который запущен от имени toruser. Потом сверху прикрываете всё файерволлом. Без знания iptables и специфики Linux вы это не настроите (разве что по готовому пошаговому мануалу, который никто вам писать здесь не будет, уж извините).
*Это правда, что su в Debian Linux работает искоробки для всех пользователей? Я по своей наивности думал, что если юзер не внесён в группу wheel (или какую-то другую, особую), то su не сработает. И, кстати, какие ограничения в Linux на запуск login?
**Имена взяты от балды. Можете назвать как-то по-другому.
Кстати, кому и зачем нужен su в системе? Его присутствие критично для запуска, дефолтных стартовых скриптов? Если нет, то как его удалить из системы? Вас не удивляет, что у su есть права на его запуск из-под любого пользователя, а оно ещё и суидное:
Повторил ваш пример из ссылки для sudo вместо ssh
Т.е. запуск через sudo от другого пользователя не позволяет ему получить информацию о событиях из моего окна. Если не согласны, то приведите рабочий пример. К тому же Тор, прокси и прочие фоновые сетевые приложения можно запускать на этапе загрузки, до запуска Х сервера. Отдельная учётная запись для таких приложений хуже чем chroot, т.к. в случае уязвимости атакующий получает доступ ко всем программам в системе, что облегчает проникновение. Для chroot это не так, доступно только то что необходимо для работы защищаемого приложения, т.е. почти ничего.
Наиболее концептуально правильным является наверное Qubes, где изоляция не на уровне ядра, а ниже – на уровне гипервизора. К тому же сделать безопасным тонкий "гипервизор" (вернее – его часть отвечающую за изоляцию) гораздо легче, чем "толстое" ядро.
А что особенно сложного?
Чем не устраивает rm /bin/su? Только непонятно, чем он мешает, может и правда что-нибудь перестать работать. su (как и sudo) хорош в скриптах, запущенных от рута, в которых например нужно что-нибудь скачать из сети. В сеть лучше выходить от другого пользователя.
Я так понял, что в вашем случае запуск через sudo от другого пользователя не позволил получить доступ к дисплею, т.е. программа даже не сможет окно отобразить. Было бы интереснее это исправить уж тогда проверять.
У кого-то работает[link8], у кого-то нет. Здесь специалистов по X-серверам нет, которые бы понятно разложили по полочкам, из-за чего работает, из-за чего нет, насколько надёжно можно заблокировать, нет ли других подводных камней? Тогда лучше этим не пользоваться. Я исхожу из того, что всё, что набирается на клавиатуре после логина в конкретного пользователя, ему доступно.
По ссылке разъяснено предельно подробно, причём неоднократно. Если вы всё внимательно прочитали, досконально проверили (а, судя по вашим объяснениям, вы делаете не в лоб то, что написано в примерах) и не взлетело, то помочь ничем не могу.
Это уловки. Я считаю всё, что находится в /home/anonymous_user, заведомо скомпрометированным, включая стартовые скрипты, например. Я не могу доверять ни одному файлу из этой директории за исключением тех текстовых, содержимое которых проверяется вручную перед запуском чего бы то ни было от имени этого пользователя.
chroot не сделает хуже, не спорю, но методов выхода из chroot миллион, поэтому надеяться на него серьёзно не стоит. С учётом того, как много гемора требует его настройка, я лично считаю, что овчинка не стоит выделки.
В легитимном режиме, ага. Но мы же речь не о нём ведём? В легитимном режиме и браузер ничего в обход прокси не шлёт, но файерволл вы же зачем-то настраиваете.
Ваш пример красочно отвечает на этот вопрос. Знаю минимум 2 рабочих универсальных метода обхода файерволла, настройка которого ограничилась этими правилами. Предлагаю вам догадать об этом самому.
Помимо этого: если после старта системы её глюканёт и интерфейс определится, как ppp1, то ничего ведь, правда? Ну, или если DHCP-сервер решит вам намного помочь... лень анализировать всё сценарии, но на DHCP я не полагаюсь.
Грязно. Если su ассицооирован с каким-то пакетом, то лучше сделать apt-get remove этот_пакет.
чем больше читаю, тем меньше понимаю. )
и кто сказал что в Линукс проще запустить приложение от другого пользователя, чем в Винде..?
в Винде 2-мя кнопками, здесь же... ну даже нет единого мнения как это реализовать. другими словами, проще чем гипервизор не вижу реализаций изолировать пользователей по задачам.
Вопрос же не в том, что где-то проще или тяжелее, а в том, как это сделать безопасным образом. Думаете, в винде это сделать безопасным образом проще? Там файерволлы вообще не умеют фильтровать по юзерам, если что, так что стадия с разделением пользователей пропадает, настройку придётся сразу начинать с виртуалки.
man xhost не просветляет? echo $DISPLAY ничего странного не показывает?
Если вас просветило, то расскажите нам, почему в Tails это не работает, а на других системах работает. Как выключать эту опцию, что где прописать.
В ламерской убунте ваши команды тоже не работают. Могу подсказать. Если в третьей команде делать не sudo -u user, а просто sudo, т.е. запускать xev от рута, то дырка заработает в обе стороны. Выхлоп xhost вполне объясняет, почему у вас не работает, к дисплею $DISPLAY можно цепляться только одному пользователю. С такой конфигурацией вообще нельзя запустить оконное приложение от имени другого пользователя под тем же X (кроме рута, разумеется)
Я же написал, что xev -id 0xXXXXXXX у меня работает, а с sudo от другого пользователя – нет (sudo от моего пользователя тоже работает).
Тогда лучше не делать категорических утверждений.
Пример с sudo отсутствует.
Если один раз во всём разобраться и оформить в виде скрипта для создания песочницы, никаких сложностей в дальнейшем нет. Запуск init-скрипта ничем не отличается. А вот переход из одной учётной записи в другую заметно снижает удобство пользователя. Пробовал оба способа – смена логина и chroot, так есть с чем сравнивать. По "юзабилити" и безопасности преимущество за chroot.
Речь шла о том, что вломщик имеет доступ ко всем утилитам системы, что может использовать для облегчения своей работы. Из chroot это всё недоступно, поэтому приходится использовать низкоуровневые средства.
У меня несколько другие настройки и dhcp сервера нет. Это был просто пример, который работает почти всегда (если указать нужный сетевой интерфейс).
Несколько опрометчиво считать некоторую систему безопасной при отсутствии доказательств уязвимости, вы не находите?
А у вас вообще запускаются программы в иксах от имени другого пользователя?
Предлагаю не приписывать мне утверждений, которых не делал.
В этом вы правы, не запускаются. После команды xhost + стали запускаться, sudo с xev от другого пользователя тоже заработало. В общем выходит, что для реализации "угрозы" от sudo пользователь должен явно разрешить доступ к своей графической среде, понимая связанные с этим риски. По умолчанию sudo в этом плане безопасно, кейлогер и монитор экрана от другого пользователя так просто работать не будут. Для этого нужна уязвимость в Х сервере, т.к. он управляет контролем доступа к графическим средам.
Вывод неправильный. :-)
Небезопасно запускать программы от судо, если они имеют доступ к иксам – вот такой должен быть вывод. Собственно, это и говорилось ранее.
Хотя замечу, проблема тут в иксах, а не явно в судо.
Любая программа может обращаться к Х серверу, который доступен по-видимому через порт или unix-сокет. Другое дело что не в каждой программе реализован интерфейс для этого.
Резюмируя всё вышесказанное: если некоторая программа получила доступ к дисплею X, то она сможет прослушать события в любом открытом на том дисплее окне. К sudo это строго говоря непосредственного отношения не имеет, просто многие думают, что если процессы двух разных пользователей используют один и тот же дисплей, то один не сможет читать события другого, а это не так, сможет.
sentaus, спасибо за подробное объяснение.
Ради эксперимента завёл нового пользователя, параллельно залогинился под ним и запустил xev. При xhost + тоже происходит подключение к моему Х-серверу и выводится информация о каких-то событиях. Поэтому несущественно, каким образом выполняется команда от другого пользователя – через sudo или из учётной записи. Главное – наличие возможности подключиться к Х серверу, определяемой командой xhost. Создание учётной записи не даёт никаких преимуществ перед sudo, только лишние действия.
UPD. Вышесказанное верно для программ, работающих без помощи X сервера. Для gui смысл в логине состоит в том, что запускается свой X-сервер. Но его тоже можно запустить через sudo от имени другого пользователя, а потом при запуске gui указывать соответствующий дисплей.
Через xhost вы можете расшарить свои иксы на весь инет для беспарольного доступа. Это фича такая.
Экплойт в браузере + xhost = Х сервер выполняет роль трояна выдающего все действия с оборудованием.
Можете расшарить скорее теоретически. На практике во всех дистрах иксы запускаются по умолчанию с опцией --no-listentcp. Чтобы её поменять, понадобится доступ к конфигу с правами рута.
+ ещё фаирвол нужно обойти
В итоге выходит что нападки на sudo ничем не обоснованы, связаны с недостаточным пониманием работы X-сервера.
Пруф[link9]:
Сколько я видел мануалов в интернете по зачрутовыванию разных программ, и нигде не прослеживалась универсальность. В частности, мануал по зачрутовыванию Tor в, кажется, OpenBSD напоминал адский набор сотен грязных хаков.
Неизбежная плата за безопасность.
Ещё раз: ни chroot[link4], ни AppArmor[link13] не дают обоснованной безопасности. Единственный более-менее обоснованный способ защиты от всех видов атак — SELinux.
Эти допущения нарушают принцип Керхгоффса. Они из той же степи, что и «а давайте не будем монтировать системные разделы»[link14]. Вломщик весь необходимый ему софт может доставить самостоятельно, прав у него будет достаточно. Заведомо полагаться, что он откажется от этой затеи, глупо.
Вы видите выше написано Ваш файерволл обходится на раз, если заблочивание юзера ограничилось вами приведёнными (или им подобными) правилами. Подумайте, почему.
Не нужна. Пример с xev был не более, чем красочной демонстрацией. На самом деле, нет и не может быть доверия ни к чему, что запускается от потенциально скомпрометированного пользователя. Например, когда вы открываете терминал, зловред может вместо него вывести собственное окошко, внешне выглядящее также, и перехватить все ваши пароли на sudo. Всё, что вы вводите, он может на лету транслировать в настоящий терминал, а сдампленные пароли или текст потом выслать себе домой по сети.
sudo в текстовом терминале тоже небезопасно. Там есть свои методы, как подцепиться к уже открытой sudo сессии, как накормить жертву нужными переменными среды, которые подменят исполнимые файлы или подгружаемые библиотеки, и т.д. Если юзер считается потенциально скомпрометированным, то не важно, под иксами он или в текстовом терминале — зловред всегда может найти способ повысить свои привелегии до тех, до которых может дотянуться жертва.
+1
Даёт (см. объяснения выше). Для начала, условимся считать, что ничего графического из-под su/sudo/ssh мы не запускаем. Если запускаем консольные программы под su/sudo/ssh, то всю деятельность можно прологировать, а пароли на su/sudo/ssh украсть. В случае же отдельного X-сервера чтобы что-то украть или прологировать, нужно одновременное осуществление двух событий:
Архитектура X-сервера уязвима, протокол запутан, его мало кто понимает, в самом X-сервере дыр находили меряно-немеряно, и неизвестно, сколько ещё найдут. Это одна из причин, по которой X-сервер настоятельно рекомендуется не ставить на сервера.
sudo — идеологическое зло, потому что создаёт у пользователя иллюзию, что это средство безопасности. Но это не средство[link4] безопасности точно так же, как noexec или chroot!
Use case для sudo — это когда вы одинаково доверяете обоим пользователям (тому, из под которого запускаете sudo, и тому, чьи права желаете получить), и хотите получить права одного из-под другого удобным образом. Это относится к компиляциям, сборкам дистров и т.д. И chroot в этих случаях тоже по назначению используется. Но если хоть к одному из юзеров нет доверия, вся эта архитектура моментально рушится, эти средства никогда не предназначались для повышения безопасности, об этом даже в man написано[link15].
P.S.:
- Запуск программ под отдельным X-сервером со своим логином — тоже не панацея. Если уязвимый пользователь — член группы audio, то никто не запрещает ему включить микрофон и прослушивать по акустическому каналу[link16] все нажатия клавиш[link17], которые вы нажимаете, будучи в других иксах, текстовых терминалах и т.д. В частности, пароли на крипторазделы по такому side channel утекают только так.
- И виртуалки тоже не панацея, т.к. запуск зловреда в одной виртуальной ОС позволяет украсть ключи, использумые в другой виртуальной ОС.
- И отдельные компьютеры тоже не панацея, т.к. по акустическому[link18], электромагнитному[link19] и др. side channels всё равно утекает много чего[link20].
По-хорошему, для каждой задачи нужен свой отдельный компьютер, находящийся в своём отдельном бункере с полной изоляцией. И без сети, да. SATtva, я всё правильно сказал?Уже три. Третий не настолько универсален, но на очень многих конфигурациях сработает.
Кто назовёт все три, получит пирожок.Например? По умолчанию sudo не допускает передачу произвольных переменных в исполняемые приложения: man sudoers / Command environment.
В предельном случае — да.
Это про su[link21] было:
Из man su:
Т.е. если вы не указали «-», то environment берётся от текущего юзера, который, если скомпрометирован, может передать, к примеру, «правильные» PATH в новый шелл под рутом. Хотел ещё и man sudo посмотреть на этот счёт, но
Ещё варанты:
Как пример: был файл на файловой системе, но мы его удалили, а программа его ещё использует. Казалось бы, задача найти файл и посмотреть, что в нём, сохранить его куда-нибудь — нерешаемая, а реально lsof + /proc делают такую операцию штатной возможностью (находится дескриптор файла, инод его, потом делается несколько команд; детали не помню, но знаю, что делается). С tty могут быть извраты того же уровня.
Вариант 2 универсален. Он работает всегда. Этого достаточно, чтобы сказать, что под скомпрометированным пользователем доверять нельзя ничему.
Справедливо.
Для каждой программы нужен свой скрипт, универсального нет. Имелось в виду что создав скрипт, можно потом долго им пользоваться, как и конфигурационным файлом. Способы создания песочницы для однотипных программ, типа сетевых серверов, очень похожи.
Не знаю что за принцип Керхгоффса, но задачу взломщику это усложнит, потребует более высокой квалификации и большей затраты времени. Т.е. взлом будет дороже, значит система безопасней, т.к. уровень безопасности определяется уровнем затрат атакующего. Безопасность это прежде всего экономика. А если повышенной квалификации и времени нет, то этот барьер не будет пройден и взлом не состоится.
Подтвердите это примером, чтобы не было как с sudo, когда в результате выяснилось что заявленная угроза в действительности не работает при найстройках по умолчанию и требует явного разрешения.
Тоже хотелось бы увидеть пример. По умолчанию в sudo включена опция env_reset, интересно как вы с ней справитесь.
Журналы событий типа /var/log/messages /var/log/secure доступны для чтения только руту, а как украсть пароль из терминала другого пользователя вы пока не продемонстрировали.
Чтобы запустить ещё один Х-сервер не обязательно создавать учётную запись, выше об этом уже написано.
sudo это удобный и настраиваемый способ запуска программ от разных пользователей. Не средство безопасности, а инструмент для построения относительно безопасных систем. И неясно что вы предлагаете взамен sudo.
В sudo есть опция secure_path, которая по умолчанию включена, и эта угроза не работает.
Запись в каталоги $PATH доступна только для рута, а подменить $PATH у другого пользователя зловред тоже не может если он не рут. Если имеется в виду запуск sudo в учётной записи, от которой разоботает программа поражённая зловредом, то это ещё один минус создания учётной записи. Когда её нет, то такого не произойдёт, зловред получает переменную $PATH от других программ, но сам никому её не передаёт.
У людей сработало при настройках по умолчанию: раз[link6], два[link8], три[link22], четыре[link23]. По последней ссылке:
Изначально речь шла об использовании sudo для выполнения административных действий из-под якобы небезопасного обычного локального пользователя, под которым могут крутиться всякие браузеры и прочие опасные вещи. Вы хотите сказать, что если делать не sudo -u root или просто sudo, а sudo -u nonpriveleged_user, то способ с xev не будет работать?
Мы считаем, что зловред имеет все те же права, что и пользователь, от имени которого он запустился. Пусть для простоты это будет обычная учётная запись без особых привелегий. Чтобы переопределить $PATH, зловред меняет переменную $PATH в конфигах шелла (~/.bashrc), добавляя путь к какому-нибудь скрытому каталогу в той же директории. Была переменная
И, ещё раз повторяю, это просто демонстрационные примеры. Реальный хак может быть намного уменее и намного более скрытым, адаптированным к конкретным конфигам и программному окружению пользователя и т.д. Такое впечатление, что объясняю шарообразность Земли в детском саду.
А в su не включена. Ссылка на man su приведена в качестве пруфа.
Не обязательно, но процессы, запущенные от одного пользователя, имеют доступ к другим процессам, запущенным от этого же пользователя, их файлам и прочему, при этом не важно, под одними и теми же иксами всё это запущено или под десятью разными.
Для выполнения команд от рута — логиниться в консоли и выполнять их. Для выполнения команд от имени другого пользователя — логиниться в других иксах под именем этого пользователя и выполнять их там. Если иксы не нужны, можно воспользоваться текстовым терминалом.
В Linux можно надёжно выключить микрофон так, чтобы звук в наушниках работал, а микрофон нет? Если убрать юзера из audio, то пропадёт вообще всё.
Кстати, прослушивание по акустическому каналу вообще лёгкое, особенно на ноутбуках. Их корпус играет роль резонатора. Когда нажимаешь разные клавиши, это то же самое, как если стучишь по разным точкам резонатора — звук многих клавиш отличим обычным ухом, если прислушаться. Легко можно различать нажатия клавиш, принадлежащие разным рядам на клавиатуре, чётко слышны пробел и перевод строки. Зная заранее, какие команды может набирать пользователь, всё ещё сильней упрощается, даже тонкий анализ звука может не понадобиться.
Допустим, юзер переключился в текстовый терминал, чтобы зайти под рутом, вводит пароль, а в это время включен микрофон под другим пользователем — и всё, пароль прослушан. Вроде бы всеми ругаемое pulseaudio умело оперативно блокировать звуковой ввод/вывод, когда переключаешься в другого пользователя, но минусы pulseaduio с лихвой перевешивают всё остальное, поэтому нет ни малейшего желания его касаться.
Ещё один интересный вопрос — клавиши Ctrl+Alt+Fn для переключения. Если юзер скомпрометирован, может ли зловред, под ним запущенный, проинструктировать иксы иначе отреагировать на эту комбинацию? Например, вместо того, чтобы реально переключиться в другие иксы, вывести окошко на full screen, которое будет имитировать успешное переключение, а потом записать пароли, которые туда вводятся.
С группой wheel достаточно забавная история. Вроде это зависит от дистра, где-то по умолчанию wheel есть и работает, где-то нет. Конкретно в Debian wheel нет, потому что когда Столлман лезет из идеологии своими грязными лапами в софт, получается говно и только говно (достаточно вспомнить, сколько его гнобили за выбор диалекта LISP'а для emacs'а). Полюбуйтесь:
Переводя на русский язык: 30 лет назад кисо обиделось, что ему не дали административный доступ, хотя оно знало пароль. Кисо отомстило, выпилив «злостную фичу» из TRUE-свободного дистрибутива Debian полностью. Теперь миллионы людей по всему миру десятилетия будут испытывать возможные трудности, зато лично его это устраивает. Чисто идеологическое решение. Хочешь исправить у себя лично — исправь вообще у всех, во всём мире. Супер-подход, очень гнуто.
Итак, в Debian любой пользователь из группы audio может включить микрофон[link25], прослушать нажатия клавиш, узнать пароль root'а, повысить привелегии и потом узнать все пароли на крипторазделы (т.е. даже если пароли на крипторазделы не вводятся, когда что-то запущено с правами этих пользователей, это не поможет). Был бы wheel — он бы не дал пользователю воспользоваться этим паролем. Невольно вспоминается тот факт, что в OpenBSD по умолчанию пользователь не имеет никакого доступа к audio-системе.
На самом деле, есть GNU su и BSD su. Понятно, что в Debian ни о каком BSD su не может идти и речи. Правда, в какой-нибудь генте может быть и BSD su(?) [не проверял]. Кому сильно не хватает группы wheel, её можно вернуть на место, есть даже более гибкий механизм (см. /etc/pam.d/su):
Не получится. su — часть пакета login, который нужен. В свою очередь, login несуиден и не может быть запущен от обычного пользователя (от рута работает):
Наверно, сугубо теоретически, покрутив правила udev, можно добиться, чтобы соответствующие устройства в /dev создавались без прав audio на что-либо, включая микрофон. Не экспериментировал.
Не знаю, чей тут su, но группа wheel на него влияет: для пользователей не из группы пароль суперюзера не принимается.
Значит, не зря говорят, что у неё корни в BSD[link27].