Подтвердите логин SSH и файл журнала

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

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

Точно так же, есть ли файл журнала, который я могу использовать, чтобы я знал, имеет ли кто-нибудь доступ к моему компьютеру?

3
задан 15 October 2011 в 01:06

2 ответа

SSH не был разработан для такого доступа по требованию. Однако, если вам нужно беспокоиться только о доступе к оболочке (или передаче файла), вы должны ограничить возможности SSH и добавить сценарий, который не запускает оболочку без вашего разрешения.

Что касается ограничения SSH, я принял участие в Как создать ограниченного пользователя SSH для переадресации портов? . Отредактируйте /etc/ssh/sshd_config и добавьте:

Match user your-username
    AllowAgentForwarding no
    ForceCommand ~/bin/ssh-confirm

Создайте исполняемый файл ~/bin/ssh-confirm (режим 755) и создайте скрипт / программу на языке по вашему выбору, который необходимо подтвердить перед удалением оболочки SSH, Например:

#!/bin/bash
confirmfile="$HOME/allow-ssh-for-pid-$"
if [ -f "$confirmfile" ]; then
    echo "Old confirmation file found for the SSH session, exiting!"
    exit 1
fi
# wait for a grant for 30 seconds before giving up
for ((i=0; i<30; i++)); do
    if [ -f "$confirmfile" ]; then
        rm "$confirmfile"
        exec "$SHELL"
    fi
    sleep 1
done
echo "SSH access timed out."
exit 1

Для этого потребуется создать файл «allow-ssh-for-pid - $$», где $ - это pid скрипта, выполняемого из SSH. Вы можете использовать ps, pidof и т. Д. Для определения PID. Конечно, это может быть более изощренным, например, предупредить вас через notify, но я предполагаю, что люди будут звонить вам, если попытаются связаться с вами.

Кроме того, я полагаю, что вы доверяете людям, которым вы предоставляете доступ по SSH. Если нет, создайте отдельного пользователя (без sudo разрешений, конечно;)) и сохраните ssh-confirm в таком месте, как /usr/local/bin, и сохраните жетоны доступа в другом месте.

Попытки входа в систему SSH (и выхода из системы) регистрируются в /var/log/auth.log. Запустите w, чтобы получить список зарегистрированных пользователей (обратите внимание: вы получите несколько записей для терминалов, которые вы открываете на своем компьютере, обратите внимание на столбец FROM).

0
ответ дан 15 October 2011 в 01:06
/var/log/auth.log

Здесь вы можете просмотреть историю входа. Однако я не уверен, что есть элегантное решение того, о чем вы думаете, с помощью контроля доступа, так как все, что я могу придумать, это какая-то сумасшедшая схема, в которой вы используете rsync или что-то подобное для отмены и восстановления SSH ключи по мере необходимости.

0
ответ дан 15 October 2011 в 01:06

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

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