Pull to refresh

rssh, или Как разрешить SCP, но запретить SSH

Reading time 2 min
Views 18K
Вполне адекватная ситуация: у вас есть удалённая Linux-машина с доступом по SSH, и вам срочно нужно дать кому-то из знакомых возможность загрузить на эту машину файл. Разумеется, нам абсолютно лениво разворачивать ради этого FTP-сервер. Да и зачем, когда есть SCP?

Вот только незадача: нам не хочется, чтобы этот знакомый имел возможность что-то делать на этой машине. Ну мало ли что. Поэтому для начала мы заводим отдельного пользователя, ставим для него домашней директорией место, куда надо залить файл, ограничиваем доступ этого пользователя к окружающим директориям. Но всё-таки этот пользователь пока имеет доступ к Shell, а нам — опытным паранойикам — это вообще не нравится.

Выход вроде как всплывает: надо заменить пользователю shell по умолчанию (/bin/sh) на что-нибудь другое. Вот только что? /bin/false, /bin/true не дадут ничего делать по ssh, но и scp не отработает. Есть магический git-shell, но он немного для другого.

Недолгий поиск по просторам Интернета показывает, что проблему уже давно решили — есть rssh (Restricted SSH). Его задача как раз сводится к тому, чтобы разрешить пользователю некоторые сервисы вроде scp, sftp, rsync и т.п., но запретить выполнять другие команды.

На Debian/Ubuntu устанавливается из репозитория:

$ sudo apt-get install rssh

После установки нужно залезть в /etc/rssh.conf и расскомментировать строчки с нужными нам сервисами (allowscp, allowrsync, например). После чего свежесозданному пользователю в /etc/passwd прописать в качестве shell файл /usr/bin/rssh. Теперь можно проверять доступ:


$ ssh rsshuser@remote
This account is restricted by rssh.
Allowed commands: scp rsync
If you believe this is in error, please contact your system administrator.

Connection to remote closed.
$ scp ./file.txt rsshuser@remote:file.txt
file.txt                                           100% 51KB   1.2MB/s   00:03
$

Для паранойиков в тяжёлой стадии особо чувствительных систем там же можно настроить индивидуальные списки разрешённых сервисов для разных пользователей, и даже выделить отдельный chroot для максимальной изоляции.

P.S. Знаю, что утилита далеко не новая, но всё-таки я не видел её описания на Хабре, хотя кому-то она может оказаться очень полезной.
Tags:
Hubs:
+22
Comments 22
Comments Comments 22

Articles