Как ограничить пользователей SFTP в домашних каталогах с помощью chroot Jail

В этом учебнике мы обсудим, как ограничить пользователей SFTP в их домашних каталогах или определенных каталогах. Это означает, что пользователь может получить доступ только к своему домашнему каталогу, а не ко всей файловой системе.

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

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

Рекомендуемое чтение: Ограничение доступа пользователя SSH к определенному каталогу с использованием Chrooted Jail

Самый простой способ сделать это – создать среду chrooted jail для доступа по SFTP. Этот метод одинаков для всех операционных систем Unix/Linux. Используя среду chrooted, мы можем ограничить пользователей либо к их домашнему каталогу, либо к определенному каталогу.

Ограничение пользователей к домашним каталогам

В этом разделе мы создадим новую группу с именем sftpgroup и назначим правильные владельца и разрешения для учетных записей пользователей. Есть два варианта ограничения пользователей к домашним или определенным каталогам, мы рассмотрим оба способа в этой статье.

Создание или изменение пользователей и групп

Ограничим существующего пользователя, например tecmint, в его/ее домашней директории с именем /home/tecmint. Для этого вам нужно создать новую группу sftpgroup с помощью команды groupadd, как показано:

# groupadd sftpgroup

Далее, добавьте пользователя ‘tecmint’ в группу sftpgroup .

# usermod -G sftpgroup tecmint

Также можно создать новый пользователь с помощью команды useradd, например senthil, и добавить пользователя в группу sftpusers .

# adduser senthil -g sftpgroup -s /sbin/nologin
# passwd tecmint

Измените файл конфигурации SSH

Откройте и добавьте следующие строки в файл конфигурации /etc/ssh/sshd_config .

Subsystem sftp internal-sftp
 
   Match Group sftpgroup
   ChrootDirectory /home
   ForceCommand internal-sftp
   X11Forwarding no
   AllowTcpForwarding no

Сохраните и выйдите из файла, затем restart sshd service, чтобы применить новые изменения.

# systemctl restart sshd
OR
# service sshd restart

Если вы хотите chroot multiple users to the same directory, вы должны изменить права доступа домашней директории каждого пользователя, чтобы предотвратить всем пользователям просматривать домашние директории других пользователей.

# chmod 700 /home/tecmint

Проверка входа пользователей SSH и SFTP

Теперь пришло время проверить вход с локального система. Попробуйте ssh вашего удаленной системы с вашего локального компьютера.

# ssh [email protected]

Вот,

  1. tecmint – имя пользователя удаленной системы.
  2. 192.168.1.150 – IP-адрес удаленной системы.
Пример вывода:
[email protected]'s password: 
Could not chdir to home directory /home/tecmint: No such file or directory
This service allows sftp connections only.
Connection to 192.168.1.150 closed.

После этого, используйте SFTP для доступа к удаленной системе.

# sftp [email protected]
Пример вывода:
[email protected]'s password: 
Connected to 192.168.1.150.
sftp>

Проверьте текущий рабочий каталог:

sftp&gt pwd
Remote working directory: /

sftp&gt ls
tecmint  

Здесь tecmint – это домашний каталог. Перейдите в каталог tecmint и создайте файлы или папки по вашему выбору.

sftp&gt cd tecmint
Remote working directory: /

sftp&gt mkdir test
tecmint  

Ограничение пользователей для конкретного каталога

В предыдущем примере мы ограничили существующих пользователей для домашнего каталога. Теперь мы рассмотрим, как ограничить нового пользователя для пользовательского каталога.

Создание группы и новых пользователей

Создайте новую группу sftpgroup.

# groupadd sftpgroup

Затем создайте каталог для группы SFTP и назначьте разрешения для root-пользователя.

# mkdir -p /sftpusers/chroot
# chown root:root /sftpusers/chroot/

Затем создайте новые каталоги для каждого пользователя, к которым у них будет полный доступ. Например, мы создадим пользователя tecmint и его новый домашний каталог с правильным разрешением группы с помощью следующей последовательности команд.

# adduser tecmint -g sftpgroup -s /sbin/nologin
# passwd tecmint
# mkdir /sftpusers/chroot/tecmint
# chown tecmint:sftpgroup /sftpusers/chroot/tecmint/
# chmod 700 /sftpusers/chroot/tecmint/

Настройка SSH для доступа по SFTP

Измените или добавьте следующие строки в конец файла:

#Subsystem  	sftp	/usr/libexec/openssh/sftp-server
Subsystem sftp  internal-sftp
 
Match Group sftpgroup
   ChrootDirectory /sftpusers/chroot/
   ForceCommand internal-sftp
   X11Forwarding no
   AllowTcpForwarding no

Сохраните и выйдите из файла. Перезапустите службу sshd, чтобы вступили в силу сохраненные изменения.

# systemctl restart sshd
OR
# service sshd restart

Вот и всё, вы можете проверить, войдя на ваш удаленный SSH и SFTP сервер, используя указанные выше шаги в Проверка входа по SSH и SFTP.

Имейте в виду, что этот метод отключит доступ к оболочке, то есть вы не сможете получить доступ к оболочке удаленной системы с помощью SSH. Вы сможете получить доступ к удаленным системам только через SFTP и выполнять передачу файлов между локальной и удаленной системами.

Заключение

Теперь вы знаете, как ограничить домашние каталоги пользователей, используя среду Chroot в Linux. Если вы считаете это полезной информацией, поделитесь этой статьей в своих социальных сетях и дайте нам знать в разделе комментариев, если есть другие способы ограничения домашних каталогов пользователей.

Source:
https://www.tecmint.com/restrict-sftp-user-home-directories-using-chroot/