id: Гость   вход   регистрация
текущее время 00:49 19/06/2024
Автор темы: Гость, тема открыта 23/07/2013 01:13 Печать
Категории: софт, сайт проекта, свободный софт, закрытый софт
https://www.pgpru.com/Форум/UnixLike/СписокСледящегоПОбезопаснаяУстановкаDebian
создать
просмотр
ссылки

Список следящего ПО (безопасная установка Debian)


Давайте соберём список проприетарных и открытых программ, которые без ведома пользователя по умолчанию отправляют статистику и подобные вещи? Если эта функция в программе не отключается, то можно выделять заголовок страницы с программой жирным.


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


Прим. модер.: поскольку тема ожидаемо превратилась в местный филиал ЛОР, то следящие программы в следящих ОС можно обсудить где-то отдельно. В разделе оффтопик, например ;)


 
На страницу: 1, 2, 3, 4, 5, ... , 18, 19, 20, 21, 22 След.
Комментарии
— Гость (09/02/2015 05:21)   <#>

После очередной перезагрузки ОС проблема самопофиксилась, так что более никаких хаки ненужны. Что это было — так и не понял. До этого никакие рестарты иксов не помогали. Вообще, странно, когда для чего-то в системе (помимо смены ядра) нужна именно перезагрузка.


Ты не понял, анон. Это, в т.ч., и мой сайт. Не будь таким толстым.
— Гость (10/02/2015 03:14)   <#>

Не помогает.
Во время загрузки как и прежде предупреждение, что нет драйверов для Radeon, с предложением установить проприетарные.
Загрузка окна ввода пользователь/пароль. После ввода продолжительное подвисание.
Затем сообщение что прозошла ошибка. Решил сбросить его Alt+F4. Появляется рабочий стол (!).
Но недолго радовался. Идет подтормаживание системы и через минут 5 на любом окне происходит зависание.

Если бы возможно было при загрузке выбирать драйвер адптера, то можно установить проприетарный с amd.com.
А так не вариант (.

Причем вот еще что интересно, вспоминаеться что 7.0.0 запускался нормально, но с понятно плохим разрешением. И все работало. Впервые столкнулся с этой проблемой в версии 7.0.4.
— Гость (08/03/2015 16:02)   <#>
Впродолжение тем про xscreensaver [1], [2] и локинг:


Наверно, запускать всё только в иксах — наименьшее зло, особенно с учётом включенного и тормозного framebuffer'а, который непонятно, как отключить, чтобы вместе с ним не легла поддержка иксов в графическом режиме и всё остальное, что на ладан дышит.

Другой вопрос — как сделать одновременное блокирование на все экранах из-под любого юзера, если sudo недоверяем. В голову приходит только костыль а-ля «IPC своими руками»: при запуске иксов запускаем автоматически скрипт, который время от времени будет проверять наличие каких-то файлов в /tmp. Как только файл появляется, юзер блокирует экран и удаляет его. Но если юзеров несколько, а права на блокировку нужно дать всем, всё это может несколько конфликтовать... Есть более простое решение? Даже требовать возможность блокировать все дисплеи только из тех иксов, где залогинен рут, априори неочеивидно, заработает ли это...
— Гость (08/03/2015 16:17)   <#>
Вроде бы есть такие локеры, которые блокируют переключение на другие дисплеи или в консоль. С их помощью можно получить нечто похожее на «блокирование всего», но вот насколько этому можно серьёзно доверять — вопрос тонкий...
— Гость (08/03/2015 16:20)   <#>

Если под рутом выполнить
# DISPLAY=:0.0 xscreensaver-command -lock
или
# xscreensaver-command -lock -display :0.0
то это не заработает. Он считает, что доступа к иным иксам у него нет, и пишет, что не определён протокол.
— Гость (15/03/2015 21:04)   <#>

FAQ:
  1. When I'm logged in as root, xscreensaver won't lock my screen!
  2. When I'm logged in as root, xscreensaver won't launch at all!

Тоже интересно с точки зрения безопасности:

FAQ:
  1. Programs sometimes pop up dialog boxes over the screen saver while my display is locked, and I wish they didn't.

Ещё интересней:

FAQ:
  1. Shouldn't xscreensaver disable Ctrl-Alt-Backspace while the screen is locked?

Yes, it should. Unfortunately, that's not possible with current versions of XFree86 or XOrg. It's as if the developers of X11 and the Linux kernel want to make it as hard as possible for you to lock your screen.

Backdoor #1: Ctrl-Alt-Backspace.

Backdoor #2: Ctrl-Alt-F1, Ctrl-Alt-F2, etc.

Backdoor #3: Alt-SysRq-F.

Backdoor #4: Ctrl-Alt-KP_Multiply.

This keystroke kills any X11 app that holds a lock, so typing this will kill xscreensaver and unlock the screen. This "feature" showed up in the X server in 2008, and as of 2011, some vendors are shipping it turned on by default. How nice. You can disable it by turning off AllowClosedownGrabs in xorg.conf.

...

There's little that I can do to make the screen locker secure so long as the kernel and X11 developers are actively working against security. The strength of the lock on your front door doesn't matter much so long as someone else in the house insists on leaving a key under the welcome mat.

In an ideal world, there would be a single X11 request named something like XGrabMagicKeys() that would, analagously to XGrabKeyboard(), disable all of these magic keystrokes until the grab was released or the program exited. It should be an X11 call, not an ioctl(), and especially not a root-only ioctl(). Needless to say, no such interface exists.

Кстати, нигде в мануалах не нашёл полного описания 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.
— Гость (19/03/2015 02:59)   <#>
Посвящается ressa'е и unknown'у

Скриптомесево №2



Итак, решение (почти) всех проблем в одном флаконе:
  1. Автофикс раскладки.
  2. Поддержка блокировки всех X-дисплеев из-под любого из них.
  3. Per user $TMP: пусть все временные файлы конкретного юзера хранятся в /tmp/$USER вместо /tmp, чтобы не давать посторонним юзерам на этой же машине видеть их список.

В $HOME каждого юзера (иксов) создаём файлы:


  1. $HOME/bin/lock.sh:
    #!/bin/sh
     
    LOCK_DIR=/tmp/.lock_dir
    LOCK_FILE=$LOCK_DIR/lock_file
     
    if ! [ -d $LOCK_DIR ] ; then
        mkdir $LOCK_DIR
        chmod go+rwx $LOCK_DIR
    fi
     
    while true ; do
        if [ -f $LOCK_FILE ] ; then
            xscreensaver-command -lock
            # Wait while other X servers will catch the signal too:
            sleep 5
            rm $LOCK_FILE
        fi
        sleep 1
    done
  2. $HOME/bin/xkbd.sh:
    #!/bin/sh
     
    process(){
        while read line; do 
            case "$line" in
                UNBLANK*)
                    setxkbmap -layout us,ru
                ;;
                LOCK*)
                    setxkbmap -layout us
                ;;
            esac
        done
    }
     
    # Ждём, пока запустится сам xscreensaver следующей 
    # команадой в ~/.xsession (exec xscreensaver):
    sleep 1.5
    /usr/bin/xscreensaver-command -watch | process
  3. $HOME/bin/mktmp.sh:
    #!/bin/sh
     
    USERTMPDIR=/tmp/$USER
     
    FLAG=false
    if ! [ -d $USERTMPDIR ] ; then
        mkdir -p $USERTMPDIR
        chmod go-rwx $USERTMPDIR
        FLAG=true
    elif [ -O $USERTMPDIR ] ; then
        FLAG=true
    fi
     
    if $FLAG ; then
        TMPDIR=$USERTMPDIR
        TMP=$TMPDIR
        TEMP=$TMPDIR
        export TMPDIR TMP TEMP
    fi

Редактируем файлы (под каждым юзером, работающим с иксами):


  1. ~/.xsession:
. $HOME/bin/mktmp.sh
sh -c "setxkbmap -layout 'us,ru(winkeys)' -option 'grp:caps_toggle,grp_led:scroll'"
xrdb $HOME/.Xresources
xset b off
YOUR_WIDOW_MAKER &
$HOME/bin/lock.sh &
$HOME/bin/xkbd.sh &
exec xscreensaver

  1. В оконном менеджере YOUR_WIDOW_MAKER хоткей локальной блокировки (только текущих иксов) вешаем на команду xscreensaver-command -lock, а хоткей глобальной блокировки — на команду touch /tmp/.lock_dir/lock_file.

  1. Редактируем ~/.zshrc, чтобы в его начале было
    . ~/bin/mktmp.sh
    а также добавляем (место неважно) строки
    export LESSHISTFILE=$TMP/.lesshist.$USER
    HISTFILE=$TMP/.zhistory.$USER
  2. Редактируем ~/.vimrc, добавляя туда строку
    set viminfo+=n$TMP/.viminfo.$USER
  3. (Опционально) Убираем всю ненужную информацию из окна приглашения xscreensaver'а, добавляя в ~/.Xresources:
xscreensaver.cycle:                 0
xscreensaver.lock:                  True
xscreensaver.lockTimeout:           0
xscreensaver.pointerPollTime:       1
xscreensaver.splash:                False
xscreensaver.splashDuration:        0
xscreensaver.overlayTextBackground: #ffffff
xscreensaver.fade:                  True
xscreensaver.fadeSeconds:           0
xscreensaver.timeout:               20
xscreensaver.timestamp:             False
xscreensaver*dateFormat:            
xscreensaver*Dialog.headingFont:            YOUR_FONT
xscreensaver*Dialog.bodyFont:               YOUR_FONT
xscreensaver*Dialog.labelFont:              YOUR_FONT
xscreensaver*Dialog.buttonFont:             YOUR_FONT
xscreensaver*Dialog.dateFont:               YOUR_FONT
xscreensaver*passwd.passwdFont:             YOUR_FONT
xscreensaver*passwd.body.label:             
xscreensaver*passwd.user.label:             
xscreensaver*passwd.uname:                  False
xscreensaver*newLoginCommand:               cat > /dev/null
xscreensaver*passwd.heading.label:          
xscreensaver*passwd.login.label:            
xscreensaver*passwd.passwd.label:           test
xscreensaver*passwd.asterisks:              False
xscreensaver*Dialog.foreground:             #010101
xscreensaver*Dialog.background:             #000000
xscreensaver*Dialog.Button.foreground:      #000000
xscreensaver*Dialog.Button.background:      #000000
xscreensaver*Dialog.Button.pointBackground: #000000
xscreensaver*Dialog.Button.clickBackground: #000000
xscreensaver*Dialog.text.foreground:        YOUR_COLOR
xscreensaver*Dialog.text.background:        #000000
xscreensaver*passwd.thermometer.foreground: #000000
xscreensaver*passwd.thermometer.background: #000000
xscreensaver*Dialog.topShadowColor:         #000000
xscreensaver*Dialog.bottomShadowColor:      #000000
xscreensaver*Dialog.logo.width:             200
xscreensaver*Dialog.logo.height:            300
xscreensaver*Dialog.internalBorderWidth:    0
xscreensaver*Dialog.borderWidth:            0
xscreensaver*Dialog.shadowThickness:        0
xscreensaver*programs: \
    feh -F /path/to/file/wallpaper.jpg \n

  1. (Опционально) С xdm'ов тоже зачищаем всю ненужную информацию:
    xlogin*greeting:
    xlogin*passwdPrompt:
    xlogin*namePrompt:
    xlogin*promptColor: black
    xlogin*fail:
     
    #ifdef COLOR
    xlogin*geometry: WIDTHxHEIGHT+0+0
    xlogin*borderWidth: 0
    xlogin*frameWidth: 0
    xlogin*innerFramesWidth: 0
    xlogin*shdColor: black
    xlogin*hiColor: black
    xlogin*background: black
    xlogin*greetColor: YOUR_COLOR
    xlogin*failColor: YOUR_COLOR
    *Foreground: YOUR_COLOR
    *Background: black
    #else
    ...
    #endif

Как это работает


  1. Переопределение /tmp:

    При старте из ~/.xsession выполняется скрипт mktmp.sh, который проверяет наличие ранее созданной директории /tmp/$USER и её принадлежность юзеру. Если её нет, директория создаётся, переменные среды экспортируются. Потом эти же переменные для гарантии экспортируются ещё и в конфиге шелла. Уязвимость: посторонний юзер может создать в /tmp директорию с чужим $USER, тогда файлы туда поидее писаться будут не должны, но это может привести к глюкам [можно пофиксить, выбирая рандомное имя для директории (кстати, man mktemp), но тогда в конфиге шелла придётся дополнительно выяснять, есть ли ранее созданная директория, и кому она принадлежит, чтобы в случае уже имеющейся не создавать новую].

  1. Блокировка всех дисплеев:

    При старте иксов запускается демон lock.sh, который отслеживает появление файла /tmp/.lock_dir/lock_file, сигнализирующего о блокировке кем-то под другими иксами (посольку файлы в /tmp создаются со sticky-битом, в самом /tmp такой файл было бы не создать — посторонние не смогли бы его удалить никак, поэтому пришлось создавать промежуточную директорию .lock_dir). Если сигнал получен, демону xscreensaver передаётся команда на блокировку, а перед удалением файла-сигнала делается 5-секундный таймаут (этого должно хватить, чтобы демоны под остальными иксами успели узнать, что файл появился, и успели заблокировать свои иксы). Теоретически, если слишком часто и быстро блокировать и разблокировать разные иксы, могут быть глюки, но пока их замечено не было. Блокировка происходит практически мгновенно, а пока пароль наберёшь, 5 секунд уже проходит, так что файл успевает удалиться до разблокировки, даже если делать разблокировку сразу же после блокировки. Понятно, что злонамеренный юзер может блокировать экран дргих юзеров. Может быть, могут быть ещё какие-то шелл-специфические уязвимости (возможность у одного юзера принудить другого к выполнению каких-то команд со своими правами), но я их так сходу не вижу. Если что, «глобальная блокировка» абсолютно эквивалентна следующим действиям: вручную поочерёдно переключиться в каждые из иксов и локально выполнить xscreensaver-command -lock, никаких сайд-эффектов нет. Чтобы это давало ожидаемую безопасность, никто не должен быть залогинен в текстовых консолях (рута можно получать по SSH из-под специально выделенного пользователя, тоже логинящегося через иксы).

  1. Пофикс раскладки:

    С раскладкой всё аналогично: при старте иксов запускается демон xkbd.sh, который отслеживает состояние демона xscreensaver'а. Если зафиксировано блокирование экрана, раскладка меняется на английскую, если разблокирование — то делается возврат к русско-английской (переключатель раскладки уже задан в ~/.xsession, поэтому его менять не требуется). Демон xscreensaver'а генерирует строку об изменении состояния, только когда оно реально произошло, поэтому висящий в памяти в бесконечном цикле процесс ничего лишнего не ест и реагирует только тогда, когда надо.

  1. XScreenSaver:

    Конфигом xscreensaver'а убирается всё лишнее, остаётся только логотип и имя пользователя, при наборе пароль не отображается. Логотип прибит гвоздями к коду и так просто (без перекомпиляции xsreensaver'а) его, возможно, ни заменить, ни убрать (автор сильно возражает против таких действий, считая его своего эквивалентом упомиании авторства и лицении продукта). Многие поля глючат и не удаляются, это решается стандартным хаком: делаем чёрный фон и на нём чёрные буквы (xscreensaver'у это иногда не нравится и он начинает умничать и глючить как консоль, включая принудительную инверсию цветов, но это обходится хаком «выставим цвет шрифта почти чёрным: #000001»). В принципе, имя пользователя этими хаками тоже можно убрать (помня, на каком дисплее какой юзер залогинен, это не составляет большой проблемы, а по незначительному перемещению логотипа по экрану можно различать режим ввода пароля и режим его проверки). Все свистелки и рюшечки отключены, по умолчанию рисуется картинка (wallpaper) и всё (никаких анимаций). В идеале можно сделать так, что постороннему будет вообще непонятно, что происходит на экране, и работает ли компьютер вообще.

  1. XDM:

    С настройкой 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. Источники вдохновения: первый и второй.
— Гость (19/03/2015 03:13)   <#>

Поскольку команда неспецифична для методики, похожим образом можно пробрасывать и другую информацию в чужие иксы — к примеру, посылать туда нотификацию о получении новых сообщений в IM.
— Гость (19/03/2015 06:53)   <#>

После убийства xscreensaver'а (и, следовательно, запущенных иксов) ранее запущенные демоны остаются (не убиваются), что плохо. Решается вешанием на хоткей выхода из иксов (разлогина) команды
sh -c 'pkill -9 -U $USER xkbd.sh; pkill -9 -U $USER lock.sh; pkill -2 xscreensaver'


Типа такого (пофикс вышеприведённого файла lock.sh):
#!/bin/sh
 
LOCK_DIR=/tmp/.lock_dir
LOCK_FILE=$LOCK_DIR/lock_file
 
FONT="YOUR_FONT"
NOTIFY_FILE=$LOCK_DIR/notify
SIGNAL_FILE=$LOCK_DIR/signal
COMMAND_NOTIFY="osd_cat -l 70 -d 2 -c cyan -o 100 -i 80 -a -s 0 -f $FONT" 
COMMAND_SIGNAL="osd_cat -l 70 -d 2 -c green -o 100 -i 80 -a -s 0 -f $FONT" 
 
if ! [ -d $LOCK_DIR ] ; then
    mkdir $LOCK_DIR
    chmod go+rwx $LOCK_DIR
fi
 
while true ; do
    if [ -f $LOCK_FILE ] ; then
        xscreensaver-command -lock
        sleep 5
        rm $LOCK_FILE
    fi
    if [ -f $NOTIFY_FILE ] ; then
        echo "notification" | $COMMAND_NOTIFY &
    fi
    if [ -f $SIGNAL_FILE ] ; then
        echo "signal" | $COMMAND_SIGNAL &
    fi
    sleep .7
done
А скрипты под другим юзером (под другими иксами) создают файлы notify и signal при срабатывании каких-то событий. Это лишнее связывание юзеров, оно ведёт к утечке, но в каких-то случаях приемлемо ради удобства.

Ещё один нюанс — какие глюки будет, если залогиниться в нескольких иксах под одним и тем же юзером. В принципе, должно работать, но при выходе из одних из иксов будут убиты и вторые, если выходить с помощью хоткеев.
— SATtva (19/03/2015 07:39)   профиль/связь   <#>
комментариев: 11558   документов: 1036   редакций: 4118

Похоже на название какой-то хэви-митол-группы или огнестрела. :)


man gpg-agent ⟶ --use-standard-socket. Задать произвольный путь нельзя, но вообще странно, что gpg-agent не берёт путь к временной директории из $TEMP. Он точно у Вас не запускается до переопределения переменной?
— Гость (19/03/2015 08:09)   <#>

Это так в определённых кругах прозвали WM, который был некогда популярен (window maker). Я в этом плане не блещу оригинальностью, у меня браузерный wm из той же серии, что у вас и unknown'а.


Во-первых, очень не хочется свои скрипты менять. После включения этой опции, я так понимаю, они не заработают правильно. Во-вторых, не хочется ничем лишним засорять $HOME (почти все связки и так были вынесены в нестандартные директории). В-третьих, непонятно, как включение этой опции скажется на безопасность. Наверно, не в лучшую сторону. Вы сами что по поводу этой опции думаете? Ну, и скрытие файлов в /tmp — это всё равно рюшечка, так или иначе, т.к. по-хорошему нужны виртуалки.


Проверка в лоб из консоли:
$ echo $TEMP
/tmp/USER
$ echo $TMP
/tmp/USER
$ gpg-agent
gpg-agent[XXXXX]: directory `/home/USER/.gnupg/private-keys-v1.d' created
gpg-agent: no gpg-agent running in this session
$ gpg-agent --daemon
GPG_AGENT_INFO=/tmp/gpg-XXXXXX/S.gpg-agent:XXXXX:X; export GPG_AGENT_INFO;
Новая директория после этого создаётся как /tmp/gpg-XXXXXX.

Агент (там, где он нужен) запускается вручную, причём тогда, когда уже всё, что можно, запущено, так что проблем с переменными быть не должно.
— Гость (19/03/2015 08:12)   <#>

Где-то в гугле натыкался, что путь как-то связан с опциями (man ssh_config) ControlMaster, ControlPath и ControlPersist, но мне показалось, что через них /tmp всё равно не переопределить.
— Гость (19/03/2015 08:28)   <#>

Недавно открыл для себя несколько альбомов Lacrimosa'ы, и пока занимался делом, всё это время её слушал и проникался, так что что-то в этом определённо есть. :)
— SATtva (19/03/2015 08:38)   профиль/связь   <#>
комментариев: 11558   документов: 1036   редакций: 4118

Сама по себе, это просто convenience-опция, один из возможных юз-кейсов приведён там же в мане. Просто в определённых случаях её в принципе не удастся использовать, например, если gpg-agent запускается от отдельного юзера.
— Гость (19/03/2015 09:03)   <#>
Я правильно понимаю, что при использовании этой опции никакие TMP для gpg-agent'а не будут нужны вообще, и файлов gpg-XXXXXX попросту не будет — вместо этого он будет создавать специальные файлы-сокеты в $HOME?
На страницу: 1, 2, 3, 4, 5, ... , 18, 19, 20, 21, 22 След.
Ваша оценка документа [показать результаты]
-3-2-1 0+1+2+3