Как заблокировать пользователя SFTP?

Как заблокировать пользователя SFTP?

Мне действительно нужна помощь, я пытаюсь посадить пользователя в тюрьму с помощью ubuntu.

На что следует обратить внимание:

  1. jamesявляется пользователем
  2. sshusersэто группа
  3. /home/james/upload/это каталог, в котором я хочу заблокировать пользователя

sshd_config:

AllowGroups sshusers 

Match Group sshusers
    ChrootDirectory /home/%u/upload/
    ForceCommand internal-sftp

япоследовал ответна askubuntu, вот мои команды

sudo chown root /home/james
sudo chmod go-w /home/james
sudo mkdir /home/james/upload
sudo chown james:sshusers /home/james/upload
sudo chmod ug+rwX /home/james/upload

Проблема:

Я получаю эту ошибку

Error:  Network error: Software caused connection abort
Error:  Could not connect to server

Я изучил логи и нашел следующее:

фатально: неверное владение или режимы для компонента каталога chroot "/home/james/upload/"

Но если я выполню следующие команды

sudo chown root /home/james/upload
sudo chmod go-w /home/james/upload

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

Status: Listing directory /
Status: Directory listing successful
Status: Starting upload of C:\Users\Program\AppData\Local\Temp\fz3temp-1\empty_file_yq744zm
Command:    put "C:\Users\Program\AppData\Local\Temp\fz3temp-1\empty_file_yq744zm" "test"
Error:  /test: open for write: permission denied
Error:  File transfer failed

Пожалуйста, посоветуйте, я так много искал в Google, что все ссылки теперь фиолетовые (посещенные :P)

Для тестирования я использую клиент Filezilla SFTP.

решение1

Директива ChrootDirectoryожидает, что директория chroot принадлежит пользователю rootи недоступна для записи никому другому. Таким образом, выне могуЗаключить пользователя в каталог и разрешить ему запись в этот каталог. Вы можете:

Chroot на домашний сервер, загрузить наupload/

Первый набор команд, который вы попробовали, верный для этого:

sudo chown root /home/james
sudo chmod go-w /home/james
sudo mkdir /home/james/upload
sudo chown james:sshusers /home/james/upload
sudo chmod ug+rwX /home/james/upload

Однако, вариант sshd_configбыл бы таким:

Match Group sshusers
    ChrootDirectory %h
    ForceCommand internal-sftp

( %hзаменяется на домашний каталог аутентифицируемого пользователя, что эквивалентно /home/%uв большинстве случаев.) Кроме того, чтобы ограничить видимость папок в /home/jamesи ограничить разрешение на запись в них, используйте рекурсивные параметры для chownи chmodв первой команде для /home/jamesи удалите readразрешения. Измененный набор будет выглядеть так:

sudo chown root /home/james -R 
sudo chmod go-rwx /home/james -R  # Disallow traversing any directory in home 
sudo chmod go+x /home/james       # Allow traversing this directory
sudo mkdir /home/james/upload
sudo chown james:sshusers /home/james/upload
sudo chmod ug+rwx /home/james/upload

Теперь пользователь должен иметь доступ только к /home/james/upload, или /upload.

Chroot для загрузки, загрузить вupload/some_directory

Почти то же самое, что и выше, заменяя /home/james/на /home/james/upload, и /home/james/uploadна /home/james/upload/some_directory. Особых преимуществ нет.

Измените домашний каталог jamesна/upload

Обычное поведение ChrootDirectory следующее: «После chroot sshd(8) изменяет рабочий каталог на домашний каталог пользователя». Итак, мы меняем jamesдомашний каталог:

usermod -d /upload  user

Затем установите ChrootDirectoryдля /home/%u. Используйте те же ограничения, что и в первом варианте.

решение2

Встроенный механизм sftp chroot в OpenSSH требует, чтобы каталог chroot принадлежал пользователю root (и не был доступен для записи пользователям). Это может быть неприятно, если каталог является общим ресурсом SMB/CIFS, например, где вам придется выполнять монтирование bind.

Одним из наиболее гибких решений было бы использование MySecureShell (http://mysecureshell.readthedocs.io/en/latest/)

apt install mysecureshell

Он работает без каких-либо изменений в настройках OpenSSH по умолчанию. Все, что вам нужно сделать, это сделать оболочку входа вашего пользователя SFTP mysecureshell, и он позаботится о ACL/virtual chroot для вас. Подробности смотрите в документации,

Например, после установки MySecureShell вы можете добавить пользователя SFTP (ограниченного его домашним каталогом), как показано ниже:

sudo useradd -m -d /home/sftpuser01 --shell /usr/bin/mysecureshell sftpuser01

Исходя из вышесказанного, пользователь «sftpuser01» получит виртуальный chroot в «/home/sftpuser01» в сеансе SFTP.

Он также предоставляет множество гибких опций для управления ACL, группой и т. д. путем настройки '/etc/ssh/sftp-config'. Пожалуйста, обратитесь кhttp://mysecureshell.readthedocs.io/en/latest/configuration.htmlдля получения подробной информации.

Связанный контент