Обмеження користувача SSH / SCP / SFTP до каталогу


36

Чи є простий спосіб обмежити користувача SCP / SFTP до каталогу? Усі методи, які я натрапив, вимагають від мене встановити в'язницю Chroot шляхом копіювання бінарних файлів, але я не думаю, що це повинно бути необхідним.

Відповіді:


29

SSH Підтримує власне хротування користувача SFTP. Вам просто потрібно поставити

ChrootDirectory

У своєму конфігураційному файлі sshd та перезапустіть sshd.

Якщо ви просто робите sftp, то більше нічого не потрібно робити. На жаль, це не працює для scp. Для інтерактивної оболонки вам потрібно буде скопіювати бінарні файли та / dev вузли в chroot.

Приклад конфігурації для одного користувача, тестового користувача:

Match User testuser
    ChrootDirectory /home/testuser
    ForceCommand internal-sftp

Деякі речі, про які слід пам’ятати, зі сторінки «sshd_config»:

    Усі компоненти імені шляху повинні бути кореневими каталогами, які це не так
    підписаний будь-яким іншим користувачем або групою. Після chroot sshd (8) змінює
    робочий каталог в домашній каталог користувача.

Шукайте ChrootDirectory в людині sshd_config для отримання додаткової інформації.


2
Зауважте, що частина, що починається з "Match User testuser", повинна знаходитися в кінці файлу, оскільки вона буде містити рядки конфігурації, лише якщо користувач є "testuser" з цього моменту.
Магнус

1
Чи можливо також Chroot лише для протоколу SFTP, але все ж дозволяти звичайні SCP-з'єднання?
lanoxx

1
На моїй машині Ubuntu 14.04 також потрібно було змінити Subsystem sftp /usr/lib/openssh/sftp-serverлінію наSubsystem sftp internal-sftp -f AUTH -l VERBOSE
partofthething

@Magnus або до іншого Matchрозділу.
roaima

12

Chroot - досить простий метод. Оскільки в операційній системі вже є ця функція захисту, демони-письменники, як правило, не намагаються її повторно застосувати.

Rssh поставляється з керівництвом щодо встановлення Chroot тюрми. Це у CHROOTфайлі дистрибутива. Коротше кажучи, вам потрібно мати:

  • Кілька бінарних файлів, скопійованих з кореня: /usr/bin/scp, /usr/libexec/openssh/sftp-server,/usr/bin/rssh_chroot_helper
  • Бібліотеки ( {/usr,}/lib/lib*.so.[0-9]), якими вони користуються, також копіюються
  • A /etc/passwd(цілком можливо, не копія, але отримана від майстра)
  • Кілька пристроїв: /dev/null, /dev/tty, а також /dev/logроз'єм для реєстрації (і вам потрібно повідомити ваш демон системного журналу , щоб слухати сокет)

Додатковий підказок, який відсутній у документації на rssh: Якщо вам потрібні деякі файли, щоб бути доступними у в'язниці chroot, ви можете використовувати bindfs або Linux mount --bindдля створення додаткових ієрархій каталогів поза межами в'язниці. bindfsдозволяє реконструйованому каталогу мати більш обмежувальні дозволи, наприклад, лише для читання. ( mount --bindЧи не , якщо не застосувати патч ядра, Debian включив цей патч , так як на східному Ленні , але більшість інших дистрибутивів не через стан на 2011 року)


7

Ви можете поглянути на scponly (або останнім часом rssh ); це, по суті, оболонка для входу, яку можна використовувати лише для запуску scp або sftpd підсистеми. У scponlycваріанті він виконує chroot перед активацією відповідної підсистеми.


scponly здається застарілим, принаймні, в Ubuntu
tobixen
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.