OpenSSH щось на кшталт "Internal-sftp", але для SCP?


16

Я запускаю Debian стабільний і я хочу створити наступне середовище для користувачів моєї групи "sftponly":

  • у в'язницю
  • може передавати з SFTP
  • може передавати з SCP
  • не можна інтерактивно входити в систему з SSH

З моїх експериментів та досліджень, здається, що наступна строфа в sshd_config отримує мене на 90% там:

Match group sftponly
ChrootDirectory /sftp/%u
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp

Це дає мені ув'язнений SFTP і не SSH, що добре. Але це також відключає SCP, що є менш ніж ідеальним, оскільки досить багато клієнтів є застарілими, сценаріями, які використовують SCP, а не SFTP (сервер, який ми замінюємо, підтримує обидва протоколи), і оскільки ці клієнти не під нашим контролем і легко модифіковано, ймовірно, не можна повністю відключити SCP.

Має сенс, що ця конфігурація відключить SCP, оскільки вхідні з'єднання SCP викликають виникнення sshd 'scp' процесу через оболонку входу користувача, як цього користувача. Здається, що це було б звичайно і з SFTP, якби не спеціальний обробник 'Internal-sftp'.

Отже, я вважаю, що моє запитання таке: чи є спосіб досягти такого ж ефекту, що і "Internal-sftp", але для SCP, не вдаючись до використання сторонніх інструментів, таких як scponly та rssh? Насправді приємна річ про "Internal-sftp" полягає в тому, що вона не потребує встановлення в'язниці з файлами підтримки або роботи з потенційно експлуатованими сторонніми встановленими бінарними файлами (зокрема, rssh має історію подвигів).


1
Клієнти підключаються за допомогою файлу ключа ssh, або вони використовують паролі? Якщо це ключ файлів, можна обмежити, що вони можуть робити.
Дженні Д

Вони підключаються паролями.
brianjcohen

Відповіді:


3

Погляньте на rssh, який є альтернативною оболонкою, що дозволяє обмежувати доступ до системи.

rssh - обмежена оболонка для забезпечення обмеженого доступу до хоста через ssh (1), що дозволяє користувачеві, оболонка якого настроєна на rssh, використовувати одну або декілька команд (и) scp (1), sftp (1) cvs (1 ), rdist (1) і rsync (1), і лише ці команди.

За допомогою файлу rssh.conf можна налаштувати, які команди можна використовувати для користувача або на всій системі

Крім того, ви можете використовувати scponly, щоб робити те, що ви хочете. Він виконує функцію обгортки для пакету ssh і дозволяє передавати файли, але не отримувати доступ до оболонки.


2

Чи потрібно це робити через ssh?

ЯКЩО ви можете спробувати встановити їх оболонку на:

/usr/libexec/openssh/sftp-server

І переконайтеся, що ви додали вище в / etc / shell

Якщо ви хочете від'єднатись від використання вбудованих облікових записів, ви можете налаштувати proftpd

Я встановлюю захищений SFTP за допомогою proftpd. складений proftpd так:

./configure --prefix = / usr --sysconfdir = / і т.д. - з модулями = mod_sftp

Можна використати цю статтю нижче та деякі інші відомості про Google про те, як її налаштувати:

http://tutorialgenius.blogspot.com/2012/02/linux-installing-and-configuring.html


2

Боюся, що з OpenSSH немає нічого подібного просто та надійно, оскільки, як ви зауважили, є вбудований SFTP-сервер, але немає вбудованого сервера SCP.

Попередження: пропозиція Вінса Берка погана з кількох причин:

  1. На поведінку оболонки щодо файлів запуску можуть впливати змінні середовища, які SSH може віддалено встановлювати залежно від конфігурації сервера.
  2. Користувач може просто запустити ssh / bin / bash і отримати оболонку. У ньому не буде Tty, і тому буде незручно користуватися, але що ж ... не кажучи вже про всі інші програми, які він може запускати, які ви, мабуть, не хочете.
  3. Зміна дозволів .bash_profile мало користі, якщо користувач може просто зробити "ssh host rm -f .bash_profile"; нічого не було сказано про дозволи домашнього каталогу.

... і так далі. Такий підхід є надто крихким.


0

Це сторонній інструмент, який не стосується питання, але я вважав, що він все одно заслуговує на згадку.

Jailkit: https://olivier.sessink.nl/jailkit/

У ньому є колекція інструментів для полегшення налаштування в'язниць користувача - копіювання бінарних файлів і бібліотек до в'язниці та налаштування журналу зсередини в'язниці до ОС. Я використовував це для створення sftp / scp / rsync-хротонів.

Він також постачається з jk_lsh(обмеженою оболонкою jailkit), яку можна використовувати поза в'язниці для обмеження команд, які користувач може виконувати, якщо, наприклад, ви хочете дозволити scp / sftp / rsync тільки без chroot.


-1

Ось хитрість, як виконати цей сервер. Встановіть оболонку користувачів на, скажімо, баш:

usermod -S /bin/bash [username]

Тепер створіть у своєму homedir '.bash_profile' із таким рядком:

[ -n "$PS1" ] && exit

Це призводить до продовження неінтерактивних сеансів (наприклад, 'scp'). Однак, якщо вони спробують увійти до 'ssh', вхід 'викликається', а з'єднання закривається.

Переконайтесь, що вони не можуть 'sftp' новий '.bash_profile' у своїх домашніх каталогах!

chown root:root .bash_profile

Сподіваюся, що це допомагає!


Схоже, такий підхід не враховує вимоги до в'язниці.
brianjcohen

Так, на жаль, вам доведеться створити ручне середовище chroot для 'scp' сторони, перекриваючи каталог директора chroot, наведене в sshd_config, і виконати вищевказаний трюк для кожного користувача, якого ви хочете обмежити. 'Scp' не працює з внутрішнім sftp-сервером.
Вінс Берк
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.