Настройка для защиты gnome-терминала от регистрации ключей

Похоже, что легко регистрировать нажатия клавиш всех процессов одного и того же пользователя. Основной кейлоггер - «xinput».

xinput test-xi2

Команда генерирует журнал всех нажатий клавиш. К сожалению, сюда входят пароли в gnome-терминале. Гугл предположил, что захват клавиатуры может помешать другим окнам захватывать нажатия клавиш.

Есть ли способ предотвратить вход XI2 в gnome-терминал? Или есть X-терминал, который имеет эту функцию?

15
задан 24 March 2012 в 21:08

3 ответа

Не совсем. Даже если вам как-то удастся захватить клавиатуру в X (я не знаю, возможно ли это вообще, я сомневаюсь в этом), утилита кейлоггера, работающая от имени пользователя root, всегда будет иметь доступ к клавиатуре.

0
ответ дан 24 March 2012 в 21:08

Это невозможно, поскольку любые нажатия клавиш, передаваемые на X-сервер, будут доступны для xinput / любой произвольной программы. (На самом деле это часть дизайна). Новые серверы отображения, такие как Wayland и Mir, исправляют такие проблемы безопасности в X. Единственным реальным решением было бы использовать Wayland или Mir вместо X. В этом сообщении в блоге подробно описана эта проблема.

0
ответ дан 24 March 2012 в 21:08

Как другие сказали здесь, не возможно защитить только программу как терминал гнома или другой терминал от ключевого входа, только если Вы ограничиваете типичных пользователей для выполнения любого клавиатурного перехватчика или если Вы останавливаетесь/приостанавливаете какой-либо процесс клавиатурного перехватчика.

Затем я покажу Вам, как можно сделать их в случае xinput команда, но те же методы может использоваться для любого другого клавиатурного перехватчика. Если клавиатурный перехватчик использует xinput команда, не необходимо применить метод на него, пока Вы применяете его на xinput.

1. Ограничьте типичных пользователей для использования xinput команда

Можно ограничить типичных пользователей для использования xinput команда с помощью следующей команды:

sudo chmod go-x /usr/bin/xinput

2. Ограничьте типичных пользователей для использования xinput команда с test-xi2 аргумент

Можно ограничить типичных пользователей для использования xinput команда с test-xi2 аргумент путем записи обертки для этой команды. Чтобы сделать это, войдите в терминал и следуйте инструкциям ниже:

  • Получите права пользователя root:

    sudo -i
    
  • Переместиться xinput файл в другом каталоге, который не находится в ПУТИ никакого пользователя (например, /opt):

    mv /usr/bin/xinput /new/path/to/xinput
    
  • Создайте свою обертку для xinput команда в /usr/bin:

    gedit /usr/bin/xinput
    

    Добавьте следующий сценарий внутри:

    #!/bin/bash
    if [ "$@" != "${@/test-xi2/}" -a "$(whoami)" != "root" ]; then
        echo "`basename $0` $@: Permission denied"
    else
        /new/path/to/xinput $@
    fi
    

    Сохраните файл и закройте его.

  • Сделайте новый исполняемый файл обертки:

    chmod +x /usr/bin/xinput
    

В то время как первый метод является безопасностью, с помощью второго метода, пользователь может все еще обойти его путем вызова оригинала xinput непосредственно, если он знает его новое местоположение.

3. Остановитесь/приостановите любого xinput процесс

Можно остановиться или пауза любой xinput процесс прежде для ввода пароля или чего-либо еще, что Вы не хотите быть зарегистрированными. Чтобы сделать это, добавьте следующую функцию удара в конце Вашего ~/.bashrc файл:

processof () {
    xinput_pids=" $(pidof $1) "
    if [ "$xinput_pids" = "  " ]; then
        echo "Nothing to stop/pause/continue. $1: no such process!"
        return
    fi
    for pid in $xinput_pids; do
        case $2 in
        "stop") 
            kill $pid
            echo "$1: stopped"
            ;;
        "pause")
            kill -stop $pid
            echo "$1: paused"   
            ;;
        "continue")
            kill -cont $pid
            echo "$1: continue"
            ;;
        *)
            echo "$1 is runnig"
            ;;
        esac
    done
}

Теперь после повторного открытия терминала каждый раз, когда Вы хотите, с помощью этой функции, Вы можете:

  • остановитесь/уничтожьте все xinput процессы:

    processof xinput stop
    
  • пауза все xinput процессы:

    processof xinput pause
    
  • возобновите все xinput процессы:

    processof xinput continue
    

На самом деле с этой функцией можно остановиться/приостановить, любой процесс делают Вы хотите прежде сделать что-то (такие как ввод пароля):

processof [process_name] [stop|pause|continue]

Если Вы не знаете, как обнаружить, как обнаружить активный клавиатурный перехватчик в Вашей системе, см.:

Эти методы, возможно, не являются лучшими решениями, но я надеюсь дать Вам общее представление о том, что можно сделать...

-3
ответ дан 24 March 2012 в 21:08

Другие вопросы по тегам:

Похожие вопросы: