Как создать изолированного пользователя SFTP?

Как уже говорили другие, переименование папки не представляет неотъемлемого риска для содержимого. Но есть другой вид риска, который вы, возможно, захотите рассмотреть.

Существующие процедуры, скрипты, пользовательские -ярлыки и конфигурации, которые ссылаются на исходное расположение, могут быть повреждены этим изменением, и если пути хранятся, например, в базе данных, их обновление может потребовать больших усилий.

Одна вещь, которую вы можете сделать, это создать символическую ссылку для нового имени каталога, но оставить старое имя на некоторое время. Это даст вам время оценить влияние этого изменения. Вы можете временно удалить старое имя, посмотреть, есть ли какие-либо проблемы, и если они есть, просто воссоздать старое имя, чтобы люди могли продолжить работу, пока вы выясняете, что нужно обновить.

Такая команда должна это сделать :ln -s /data /BD_FILES

0
11.01.2020, 01:58
2 ответа

Рабочий раствор

Это взято из руководства Как настроить sftp-сервер с ограниченными пользователями chroot с ключами ssh упоминается в ответе @HeysusEscobar.

Сделайте это изroot:

useradd friend   # NB: this doesn't create a home dir, see https://askubuntu.com/q/374870
passwd friend    # set the password 
groupadd sftpusers
mkdir /sftp
mkdir /sftp/friend        # this is where he'll be chrooted
mkdir /sftp/friend/home   # his home directory
mkdir /sftp/friend/www    # for websites
usermod -aG sftpusers friend   # aG for append group
chown friend:sftpusers /sftp/friend/home/
chown friend:sftpusers /sftp/friend/www/
usermod -d /sftp/friend/home friend   # set as his home directory

Добавьте это к/etc/ssh/sshd_config:

# Subsystem sftp /usr/lib/openssh/sftp-server   # you'll probably need to comment this line
Subsystem sftp internal-sftp -d /home
Match Group sftpusers
ChrootDirectory /sftp/%u

и выполните service sshd restart. Это все!

Обратите внимание, что:

  • другие пользователи по-прежнему могут ssh, поэтому ничего не изменилось для других пользователей
  • пользователь friendне можетssh
  • пользователь friendможет подключаться черезsftp

PS :если вы хотите сделать веб-сайт friendдоступным в Интернете,вы можете добавить это в конфигурацию Apache:

<VirtualHost *:80>
  ServerName friend.example.com
  DocumentRoot /sftp/friend/www
  php_admin_value "open_basedir" "/sftp/friend"
  <Directory />
    AllowOverride All
    Require all granted
  </Directory>
</VirtualHost>

Сайт -примечание :даже с open_basedirвыше, не может ли friendвыйти из своей chroot-среды -с помощью PHP или запустить вредоносный код, влияющий на всю файловую систему? Связанный вопрос:Пользователь с chroot/изолированным SFTP по-прежнему может посещать всю файловую систему с помощью PHP


Старая (половина -работает только )решение

Замена ChrootDirectory /home/friendна ChrootDirectory /homeпомогла, судя по документации:

ChrootDirectory: Specifies the pathname of a directory to chroot(2) to after authentication. All components of the pathname must be root- owned directories that are not writable by any other user or group.

При этом пользователь friendможет снова подключиться к SFTP; не может выйти из /home/; но все еще может посетить /home/anotheruser/..., что нежелательно!

3
28.01.2020, 02:57

Не уверен, какую ОС вы используете, но я использую приведенную ниже ссылку, когда мне нужно настроить пользователей SFTP, заключенных в тюрьму. Это действительно хороший учебник о том, как настроить пользователя SFTP, заключенного в тюрьму.

https://access.redhat.com/solutions/2399571

Затем я монтировал любой каталог bind в каталог chroot, к которому вы хотите предоставить доступ своему другу.

5
17.06.2020, 02:41

Теги

Похожие вопросы