5

Для меня не имеет смысла, что после авторизации через вход в систему мне придется отдельно авторизоваться для sudo, потенциально вводя пароль дважды. Все это пришло в голову недавно, когда я входил в систему с моего телефона Android, где для ввода пароля на сенсорном экране требуется 10 или 15 секунд вместо 2 секунд на клавиатуре!

Поэтому в идеале я хотел бы настроить sudo таким образом, чтобы после авторизации (будь то с помощью входа в консоль, входа с помощью пароля ssh или входа с помощью ключа ssh) sudo разблокировался на 15 минут, как если бы я набрал пароль для команды sudo.

Так что это обеспечит преимущества безопасности автоматической блокировки sudo, если я оставлю консоль открытой, но обеспечит некоторое удобство.

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

Но все же это было бы довольно удобно!

2 ответа2

4

Это можно сделать, выполнив pam_exec которая создаст необходимые временные метки в /var/lib/sudo .

Добавьте следующее в /etc/pam.d/sshd и / или /etc/pam.d/login (но не в common-session или что-то подобное):

session optional pam_exec.so /usr/lib/sudo-auth

Сценарий может быть:

#!/bin/sh

# Depends on your distro. May be /var/db/sudo, /var/spool/sudo, etc.
root="/var/lib/sudo"

if [ "$PAM_USER" ]; then
    dir="$root/$PAM_USER/"
    if [ "$PAM_TYPE" = open_session ]; then
        mkdir -p "$dir" && touch "$dir"
    fi
else
    echo "Must be run from PAM." >&2
fi

Требует, чтобы опция tty_tickets была отключена в sudoers, из-за способа работы SSH (и opensshd в частности) с ttys.

Это можно изменить, чтобы аутентифицировать только указанные удаленные хосты, либо поместив pam_access над pam_exec в стеке PAM, либо просто сравнив $PAM_RHOST в сценарии. (Однако такие проверки не будут работать с мобильными клиентами.)

1

ref: ubuntuforums.org

timestamp_timeout

Number of minutes that can elapse before sudo will ask for a passwd
again. The default is 5. Set this to 0 to always prompt for a
password. If set to a value less than 0 the user's timestamp will
never expire. This can be used to allow users to create or delete
their own timestamps via sudo -v and sudo -k respectively.

Отредактируйте файл:

sudo visudo

К строке по умолчанию добавьте:

timestamp_timeout=15

Таким образом, это выглядит аналогично этому:

# /etc/sudoers
#
# This file MUST be edited with the 'visudo' command as root.
#
# See the man page for details on how to write a sudoers file.
#

Defaults env_reset,timestamp_timeout=15 

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .