Чи можна надати користувачам sftp доступ без доступу до оболонки? Якщо так, то як це реалізується?


29

У мене є масив користувачів, яким потрібно просто завантажувати файли в їх набір homedirs. Я думаю, що sftp було б достатньо, але я не хочу, щоб вони входили через оболонку. Так це можливо? Моя платформа - centos 7, домашні користувачі зберігаються, щоб сказати / персонально / $ користувача

Я створив користувача з цими налаштуваннями

useradd -m -d /personal/user1 -s /sbin/nologin

призначений користувачеві passwd, то коли я використовую sftp для входу в машину, він каже, що не можу підключитися.


scponly github.com/scponly/scponly/wiki chroot необов'язково
user2497

Відповіді:


11

Відредагуйте свій /etc/ssh/sshd_configвміст:

Match User [SFTP user]
ForceCommand internal-sftp

Перезапустити sshd. Якщо у вас є кілька користувачів, розмістіть їх усіх у рядку користувача відповідності, розділеній комами так:

Match User User1,User2,User3

Ключ для налаштування sftpзаборони доступу до оболонки - обмеження користувачів за допомогою ForceCommand параметра.


Добре, я виконував усі кроки, але не
ввійшов

2
@Sollosa Спробуйте Match User [SFTP user] ForceCommand internal-sftpтільки, без хронізування матеріалів.
Мартін Прикрил

@MartinPrikryl це працювало Мартін, спасибі, я щойно видалив параметр chrootdirectory & viola
Sollosa

1
Крім того, ви можете chrootкористувачі, щоб вони не могли переходити до встановленої "в'язниці" та виходити з неї
ivanivan

37

Мені подобається наступна установка для управління доступом до SSH, яку я використовую на роботі для управління групою користувачів на невеликому парку серверів. Безпека та простота управління - це високий список моїх пріоритетів.

Основними його особливостями є легке управління правами на SSH через членство в групі Unix, чітко визначені дозволи та безпека за замовчуванням.

Налаштовуючи

Встановіть програмне забезпечення (необов’язкове, але корисне):

yum install members   # or apt install members

Додати групи:

addgroup --system allowssh
addgroup --system sftponly

Упевніться /etc/ssh/sshd_config, що наступні налаштування No:

PermitRootLogin no
PubkeyAuthentication no
PasswordAuthentication no

І наприкінці /etc/ssh/sshd_configдодайте ці дві строфи:

Match Group allowssh
    PubkeyAuthentication yes

Match Group sftponly
    ChrootDirectory %h
    X11Forwarding no
    AllowTcpForwarding no
    ForceCommand internal-sftp

(не забудьте перезапустити SSH після редагування файлу)

Пояснення

Отже, що все це робить?

  • Він завжди вимикає кореневі логіни, як додатковий захід безпеки.
  • Він завжди вимикає вхід на основі паролів (слабкі паролі - це великий ризик для серверів, на яких працює sshd).
  • Це дозволяє лише (pubkey) входити для користувачів у allowssh групі.
  • Користувачі sftponlyгрупи не можуть отримати оболонку через SSH, тільки SFTP.

Управління тим, хто має доступ, просто виконується шляхом керування членством у групі (ці зміни набирають чинності негайно, не потрібно перезавантаження SSH):

# adduser marcelm allowssh
# members allowssh
marcelm
# deluser marcelm allowssh
# members allowssh
#

Зауважте, що ваші sftp користувачі повинні бути членами обох sftponly(щоб переконатися, що вони не отримають оболонки), іallowssh (щоб в першу чергу дозволити вхід)

Додаткова інформація

  1. Зверніть увагу, що ця конфігурація не дозволяє вводити пароль ; всі рахунки потрібно використовувати аутентифікацію відкритих ключів. Це, мабуть, найбільший виграш у безпеці, який можна отримати за допомогою SSH, тому я вважаю, що варто докласти зусиль, навіть якщо вам доведеться починати зараз.

    Якщо ви справді не хочете цього, тоді також додайте PasswordAuthentication yesдо Match Group allowsshстрофи. Це дозволить користувачам як автентичного доступу, так і паролів allowssh.

  2. Ця конфігурація обмежує будь-якого sftponlyкористувача домашнім каталогом. Якщо ви цього не хочете, видаліть ChrootDirectory %hдирективу.

    Якщо ви дійсно хочете Chrooting до роботи, дуже важливо , щоб домашній каталог користувача (і будь-який каталог , над ним) належатьroot:root і не доступний для запису групи / інші. Добре, щоб підкаталоги домашнього каталогу були у власності та / або для запису.

    Так, домашній каталог користувача повинен бути власником root та непридатним для користувача. На жаль, для цього обмеження є вагомі причини . В залежності від вашої ситуації, ChrootDirectory /homeможе бути хорошою альтернативою.

  3. Налаштування оболонки sftponlyкористувачів не /sbin/nologinє необхідною та шкідливою для цього рішення, оскільки SSH ForceCommand internal-sftpпереосмислює оболонку користувача.

    Використання /sbin/nologinможе бути корисним, щоб зупинити їх вхід за допомогою інших способів (фізична консоль, самба тощо).

  4. Ця установка не дозволяє здійснювати прямі rootвходи через SSH; це формує додатковий рівень безпеки. Якщо ви дійсно дійсно потрібні прямі логіни кореня, змінити PermitRootLoginдирективу. Розгляньте його як forced-commands-only, prohibit-passwordі (як крайній варіант) yes.

  5. Щодо бонусних балів, погляньте на обмеження того, хто може suвиконувати корінь; додати системну групу , названу wheel, і додати / включити auth required pam_wheel.soв /etc/pam.d/su.


2
Це має бути прийнятою відповіддю. Він забезпечує рішення, а також розбиває міркування за кожним кроком.
kemotep

1
Це дійсно чудова відповідь із великими додатковими порадами щодо безпеки, але я хвилююся для тих користувачів, чиї системи покладаються на вхід паролів, кореневі логіни тощо. Звичайно, це не добре, але, можливо, перенесіть зміни, пов’язані із загальним покращенням безпеки, на свої власний розділ, щоб відповідь на запитання з мінімальними змінами була доступна?
Джош Румбут

1
@JoshRumbut Я не хотів переписувати відповідь на ваші (дуже правильні) зауваження, почасти тому, що це справді просто показ My Way ™, а частково сподіваючись, що це може бути свого роду канонічне безпечне налаштування SSH за замовчуванням. Наприклад, багато інших людей вважають корисними. В якості компромісу я намагався зробити це набагато зрозумілішим, що кореневі логіни та автентифікація паролів не працюватимуть, і я включив інструкції, як їх знову включити :)
marcelm

1
Хороша відповідь, бо найбільші недоліки інших відповідей не враховували аспекти безпеки, головним чином chroot. +1
Rui F Ribeiro

1
Chroot не працюватиме для загального% h. Дивно, але вас вимагають chown root:rootіchmod og-w
kubanczyk

1

просто змініть їх оболонку за замовчуванням на / sbin / nologin. Якщо припустити більшість різновидів Linux:

# usermod -s /sbin/nologin username

Я спробував це, але користувач не може увійти через sftp, я не знаю чому. Я використовую centos btw.
Соллоса

@Sollosa Можливо, або проблема з дозволом у вашому sftp chroot, або проблема sshd_config. Вам слід оновити своє запитання, щоб включити дозволи вашого каталогу chroot та свого sshd_config з будь-якою конфіденційною інформацією, відредагованою.
Кефка

Я вважаю (хоча зараз це не можу перевірити), що це дозволяє SFTP лише в тому випадку, якщо також є Subsystem sftp internal-sftp) (або можливо ForceCommand internal-sftp). Якщо є загальне Subsystem sftp /path/to/sftp-server, nologinзапобігає навіть SFTP.
Мартін Прикрил

@MartinPrikryl Я неправильно зрозумів їх первісне нередаговане запитання про те, як відключити доступ до оболонки для користувачів на іншому функціональному сервері sftp. Я прокинувся близько десяти хвилин у той час, тому я не був таким чітким, як я міг відчувати. Хоча я не знав, що sftp-сервер вимагає від користувача дійсної оболонки для роботи - це здається потенційно небезпечним. Я завжди коли-небудь використовую Internal-sftp просто за звичкою, тому що я завжди це робив.
Кефка

Дивіться мою відповідь на OpenSSH: Різниця між внутрішнім sftp та sftp-сервером (особливо розділом наприкінці)
Мартін Прикрил

0

ви можете використовувати tftp. що-небудь над ssh вимагатиме деякого auth (ключ | пропуск).

хоча tftp може бути захищено, можливо, варто переглянути рішення про надання доступу до чого-небудь без автентифікації.

http://manpages.ubuntu.com/manpages/bionic/man1/tftp.1.html


2
Я думаю, що OP хотів, щоб користувачі (які, мабуть, мають імена користувачів і паролі) не змогли використовувати звичайний клієнт SSH для підключення до сервера та виконання довільних команд, але ті самі користувачі зможуть завантажувати файли через SFTP.
John_ReinstateMonica
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.