Ограничения прав пользователя ssh туннеля

SSH туннели являются очень удобным средством для работы.
При использовании этой функциональности возникает естественное желание ограничить права пользователя, который может подключиться к серверу по ssh и создать туннель. Подразумевается использование файрвола для разрешения подключаться по ssh только с известных ip.
Для использования ssh туннелей создадим в системе пользователя tunuser без shell-a, без домашнего каталога.

pw useradd tunuser -s /usr/sbin/nologin -d /var/empty
# И зададим пользователю пароль
passwd tunuser

Авторизацию пользователя на сервере будем осуществлять по ключу и паролю. На компьютере, с которого будем выполнять команду на запуск ssh туннеля, генерируем пару ключей и копируем публичный ключ на сервер
ssh-keygen -b 4096
# Для большей безопасности зададим для ключей парольную фразу
scp id_rsa.pub user@myserver.com:tunuser_rsa.pub

Далее вносим изменения в файл сервера sshd_config для
# сюда помеcтим публичнй ключ клиента
AuthorizedKeysFile      .ssh/authorized_keys /etc/ssh/tunuser_authorized_keys
# запретим tcp форвардинг для всех
AllowTcpForwarding no
# разрешим новому пользователю логиниться
AllowUsers user tunuser
# для tunuser укажем специфические настройки
# Match User tunuser
        X11Forwarding no
        AllowAgentForwarding no
        AllowTcpForwarding yes
        GatewayPorts yes
#    Если не назначено глобально, то
        AuthenticationMethods publickey,keyboard-interactive

Далее скопируем публичный ключ клиента tunuser_rsa.pub, переданный ранее по scp, в /etc/ssh/tunuser_authorized_keys и назначим ему пермишены 400, а владельцем назначим tunuser.
Внесем изменения в /etc/ssh/tunuser_authorized_keys, добавив перед ssh-rsa, отделив пробелом
from="123.124.125.126"
что разрешит использование этого ключа только при авторизации tunuser с нашего клиентского компьютера ip=123.124.125.126
Проверим конфигурацию sshd_config на ошибки командой sshd -t
Командой sshd -T можно посмотреть эффективную, т.е. действующую конфигурацию с учетом конфигурационного файла.
Если сообщений об ошибках нет, то перезапустим sshd.
После этого можно запускать туннель. Например, способом, описанным тут:
Настройка обратного ssh туннеля - https://nixadmin.ru/ssh_tunneling
Использование ssh туннеля для доступа к удаленному рабочему столу - https://nixadmin.ru/rdp_connect_via_ssh_tunnels_with_intermediate_server

Отправить комментарий

CAPTCHA
Чтобы убедиться в том что Вы не робот, ответьте, пожалуйста, на вопрос
Fill in the blank