Список следящего ПО (безопасная установка Debian)
Давайте соберём список проприетарных и открытых программ, которые без ведома пользователя по умолчанию отправляют статистику и подобные вещи? Если эта функция в программе не отключается, то можно выделять заголовок страницы с программой жирным.
Ещё можно читать соглашения конфиденциальности и брать только интересные части, отсеивая всё лишнее, упоминая о продаже пользовательской информации.
Прим. модер.: поскольку тема ожидаемо превратилась в местный филиал ЛОР, то следящие программы в следящих ОС можно обсудить где-то отдельно. В разделе оффтопик, например ;)
После очередной перезагрузки ОС проблема самопофиксилась, так что более никаких хаки ненужны. Что это было — так и не понял. До этого никакие рестарты иксов не помогали. Вообще, странно, когда для чего-то в системе (помимо смены ядра) нужна именно перезагрузка.
Ты не понял, анон. Это, в т.ч., и мой сайт. Не будь таким толстым.
Не помогает.
Во время загрузки как и прежде предупреждение, что нет драйверов для Radeon, с предложением установить проприетарные.
Загрузка окна ввода пользователь/пароль. После ввода продолжительное подвисание.
Затем сообщение что прозошла ошибка. Решил сбросить его Alt+F4. Появляется рабочий стол (!).
Но недолго радовался. Идет подтормаживание системы и через минут 5 на любом окне происходит зависание.
Если бы возможно было при загрузке выбирать драйвер адптера, то можно установить проприетарный с amd.com.
А так не вариант (.
Причем вот еще что интересно, вспоминаеться что 7.0.0 запускался нормально, но с понятно плохим разрешением. И все работало. Впервые столкнулся с этой проблемой в версии 7.0.4.
Наверно, запускать всё только в иксах — наименьшее зло, особенно с учётом включенного и тормозного framebuffer'а, который непонятно, как отключить, чтобы вместе с ним не легла поддержка иксов в графическом режиме и всё остальное, что на ладан дышит.
Другой вопрос — как сделать одновременное блокирование на все экранах из-под любого юзера, если sudo недоверяем. В голову приходит только костыль а-ля «IPC своими руками»: при запуске иксов запускаем автоматически скрипт, который время от времени будет проверять наличие каких-то файлов в /tmp. Как только файл появляется, юзер блокирует экран и удаляет его. Но если юзеров несколько, а права на блокировку нужно дать всем, всё это может несколько конфликтовать... Есть более простое решение? Даже требовать возможность блокировать все дисплеи только из тех иксов, где залогинен рут, априори неочеивидно, заработает ли это...
Если под рутом выполнить
Тоже интересно с точки зрения безопасности:
Ещё интересней:
Кстати, нигде в мануалах не нашёл полного описания resources для xscreensaver'а. Есть краткое объяснение по некоторым опциям в /etc/X11/app-defaults/XScreenSaver-nogl и всё. Опции друг друга перекрывают, странно друг с другом взаимодействуют, победить удаётся далеко не всегда. Например, переопределить xscreensaver*passwd.passwd.label так и не удалось. Если опции прописать в ~/.xscreensaver, то они вообще перестают им приниматься (писал, начиная и просто и со звёздочкой, ориентируясь на примеры типа этих). В лоб проверяешь по 10 раз одно и то же, протираешь хрустальные шары, воешь на Луну, а всё бесполезно. В документации написано, что должно работать, а не работает. Если включить логи, пишет unknown option. Unknown option — она не просто unknown, она вкомпилена в бинарь, если проверить по ldd, но всё равно unknown...
Кстати, в xdm с исправлением приглашения тоже проблемы. В какой-то момент удалось поменять «Password: » на что-то иное, но комп завис. После перезагрузки как ни колдовал, не получилось, не принимает опцию и всё. Уже не говорю про всякие мелкие неприятности, типа «/etc/init.d/xdm restart не перезапускает иксы: один-два сервера остаются неубитыми, их приходится убивать вручную, а потом делать /etc/init.d/xdm start; с одними-двумя X-серверами работает нормально, с большим числом лезут такие проблемы; видимо, дело в поддержке видеокарты».
Если не хочется открывать дырки с su, можно завести отдельного юзера с иксами и из-под него получить рута по SSH. Заодно решится вопрос запуска xscreensaver'а, он теперь не от рута будет. Не очень, наверно, хорошо, но можно из-под этого же юзера так же по SSH (или непосредственно) контролировать tor-arm.
Итак, решение (почти) всех проблем в одном флаконе:
В $HOME каждого юзера (иксов) создаём файлы:
Редактируем файлы (под каждым юзером, работающим с иксами):
Как это работает
При старте из ~/.xsession выполняется скрипт mktmp.sh, который проверяет наличие ранее созданной директории /tmp/$USER и её принадлежность юзеру. Если её нет, директория создаётся, переменные среды экспортируются. Потом эти же переменные для гарантии экспортируются ещё и в конфиге шелла. Уязвимость: посторонний юзер может создать в /tmp директорию с чужим $USER, тогда файлы туда поидее писаться будут не должны, но это может привести к глюкам [можно пофиксить, выбирая рандомное имя для директории (кстати, man mktemp), но тогда в конфиге шелла придётся дополнительно выяснять, есть ли ранее созданная директория, и кому она принадлежит, чтобы в случае уже имеющейся не создавать новую].
При старте иксов запускается демон lock.sh, который отслеживает появление файла /tmp/.lock_dir/lock_file, сигнализирующего о блокировке кем-то под другими иксами (посольку файлы в /tmp создаются со sticky-битом, в самом /tmp такой файл было бы не создать — посторонние не смогли бы его удалить никак, поэтому пришлось создавать промежуточную директорию .lock_dir). Если сигнал получен, демону xscreensaver передаётся команда на блокировку, а перед удалением файла-сигнала делается 5-секундный таймаут (этого должно хватить, чтобы демоны под остальными иксами успели узнать, что файл появился, и успели заблокировать свои иксы). Теоретически, если слишком часто и быстро блокировать и разблокировать разные иксы, могут быть глюки, но пока их замечено не было. Блокировка происходит практически мгновенно, а пока пароль наберёшь, 5 секунд уже проходит, так что файл успевает удалиться до разблокировки, даже если делать разблокировку сразу же после блокировки. Понятно, что злонамеренный юзер может блокировать экран дргих юзеров. Может быть, могут быть ещё какие-то шелл-специфические уязвимости (возможность у одного юзера принудить другого к выполнению каких-то команд со своими правами), но я их так сходу не вижу. Если что, «глобальная блокировка» абсолютно эквивалентна следующим действиям: вручную поочерёдно переключиться в каждые из иксов и локально выполнить xscreensaver-command -lock, никаких сайд-эффектов нет. Чтобы это давало ожидаемую безопасность, никто не должен быть залогинен в текстовых консолях (рута можно получать по SSH из-под специально выделенного пользователя, тоже логинящегося через иксы).
С раскладкой всё аналогично: при старте иксов запускается демон xkbd.sh, который отслеживает состояние демона xscreensaver'а. Если зафиксировано блокирование экрана, раскладка меняется на английскую, если разблокирование — то делается возврат к русско-английской (переключатель раскладки уже задан в ~/.xsession, поэтому его менять не требуется). Демон xscreensaver'а генерирует строку об изменении состояния, только когда оно реально произошло, поэтому висящий в памяти в бесконечном цикле процесс ничего лишнего не ест и реагирует только тогда, когда надо.
Конфигом xscreensaver'а убирается всё лишнее, остаётся только логотип и имя пользователя, при наборе пароль не отображается. Логотип прибит гвоздями к коду и так просто (без перекомпиляции xsreensaver'а) его, возможно, ни заменить, ни убрать (автор сильно возражает против таких действий, считая его своего эквивалентом упомиании авторства и лицении продукта). Многие поля глючат и не удаляются, это решается стандартным хаком: делаем чёрный фон и на нём чёрные буквы (xscreensaver'у это иногда не нравится и он начинает умничать и глючить как консоль, включая принудительную инверсию цветов, но это обходится хаком «выставим цвет шрифта почти чёрным: #000001»). В принципе, имя пользователя этими хаками тоже можно убрать (помня, на каком дисплее какой юзер залогинен, это не составляет большой проблемы, а по незначительному перемещению логотипа по экрану можно различать режим ввода пароля и режим его проверки). Все свистелки и рюшечки отключены, по умолчанию рисуется картинка (wallpaper) и всё (никаких анимаций). В идеале можно сделать так, что постороннему будет вообще непонятно, что происходит на экране, и работает ли компьютер вообще.
С настройкой xdm всё сделано аналогично: есть возможность набрать имя пользователя и нажать Enter, ничего более на экране не пишется, даже слов login и password (как и в случае xscreensaver'а). В xdm достаточно легко сделать полностью чёрный экран без каких-либо опознавательных знаков. Правда, большого смысла это не имеет, если аналогичным образом не «пофиксить» приглашение в консоли. С учётом того, что цвет шрифтов в тип курсора по умолчанию (до логина пользователя) в консоли в Linux никак, похоже, штатно не меняется, проблема пофикса консоли нетривиальная.
Что не работает
После переопределения $TMP в стандартный /tmp перестают попадать: файлы истории шелла, less'а и vim'а, а также директория pulse-XXXXXX, создаваемая при проигрывании музыки (она создаётся, даже если сам pulseaudio не установлен — видимо, наличия библиотек уже достаточно). Однако, файлы /tmp/ssh-XXXXXX и /tmp/gpg-XXXXX продолжаются писаться на конвенциональные места, и простого решения этим проблемам не видно. В этих директориях находятся так назыаемые сокеты, путь к ним — переменная $SSH_AUTH_SOCK (а какая в случае gpg-agent'а — даже не понял). Опции изменения /tmp для ssh и gpg не нашёл. Что ещё интересно, директория /tmp/ssh-XXXXX создаётся автоматичеки при логине юзера, даже если у него нет никаких SSH-специфических настроек, т.е. проблема сидит где-то выше на системном уровне (/etc/ssh/ssh_config?). В общем, было бы хорошо, если б кто-то подсказал, можно ли решить проблему с запихиванием временных файлов SSH и GnuPG в кастомный $TMP.
P.S. Источники вдохновения: первый и второй.
Поскольку команда неспецифична для методики, похожим образом можно пробрасывать и другую информацию в чужие иксы — к примеру, посылать туда нотификацию о получении новых сообщений в IM.
После убийства xscreensaver'а (и, следовательно, запущенных иксов) ранее запущенные демоны остаются (не убиваются), что плохо. Решается вешанием на хоткей выхода из иксов (разлогина) команды
Типа такого (пофикс вышеприведённого файла lock.sh):
Ещё один нюанс — какие глюки будет, если залогиниться в нескольких иксах под одним и тем же юзером. В принципе, должно работать, но при выходе из одних из иксов будут убиты и вторые, если выходить с помощью хоткеев.
комментариев: 11558 документов: 1036 редакций: 4118
Похоже на название какой-то хэви-митол-группы или огнестрела. :)
man gpg-agent ⟶ --use-standard-socket. Задать произвольный путь нельзя, но вообще странно, что gpg-agent не берёт путь к временной директории из $TEMP. Он точно у Вас не запускается до переопределения переменной?
Это так в определённых кругах прозвали WM, который был некогда популярен (window maker). Я в этом плане не блещу оригинальностью, у меня браузерный wm из той же серии, что у вас и unknown'а.
Во-первых, очень не хочется свои скрипты менять. После включения этой опции, я так понимаю, они не заработают правильно. Во-вторых, не хочется ничем лишним засорять $HOME (почти все связки и так были вынесены в нестандартные директории). В-третьих, непонятно, как включение этой опции скажется на безопасность. Наверно, не в лучшую сторону. Вы сами что по поводу этой опции думаете? Ну, и скрытие файлов в /tmp — это всё равно рюшечка, так или иначе, т.к. по-хорошему нужны виртуалки.
Проверка в лоб из консоли:
Агент (там, где он нужен) запускается вручную, причём тогда, когда уже всё, что можно, запущено, так что проблем с переменными быть не должно.
Где-то в гугле натыкался, что путь как-то связан с опциями (man ssh_config) ControlMaster, ControlPath и ControlPersist, но мне показалось, что через них /tmp всё равно не переопределить.
Недавно открыл для себя несколько альбомов Lacrimosa'ы, и пока занимался делом, всё это время её слушал и проникался, так что что-то в этом определённо есть. :)
комментариев: 11558 документов: 1036 редакций: 4118
Сама по себе, это просто convenience-опция, один из возможных юз-кейсов приведён там же в мане. Просто в определённых случаях её в принципе не удастся использовать, например, если gpg-agent запускается от отдельного юзера.