Настройка защиты gnome-терминала от ведения журнала

14

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

xinput test-xi2

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

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

    
задан yanychar 24.03.2012 в 17:08
источник

3 ответа

12

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

    
ответ дан Ramchandra Apte 23.09.2013 в 15:40
источник
-1

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

ответ дан January 18.09.2012 в 08:27
-3

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

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

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

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

sudo chmod go-x /usr/bin/xinput

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

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

  • Получить привилегии root:

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

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

    gedit /usr/bin/xinput
    

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

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

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

  • Сделайте новую оболочку исполняемой:

    chmod +x /usr/bin/xinput
    

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

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

Вы можете остановить или приостановить процесс xinput до ввода пароля или чего-либо еще, что вы не хотите регистрировать. Для этого добавьте следующую функцию bash в конец файла ~/.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]

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

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

    
ответ дан Radu Rădeanu 24.09.2013 в 06:27