Поиск по сайту:

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


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

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

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

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

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

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

В этом разделе мы создадим новую группу под названием 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

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

systemctl restart sshd
OR
service sshd restart

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

chmod 700 /home/tecmint

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

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

ssh [email 

Здесь,

  1. tecmint – имя пользователя удаленной системы.
  2. 192.168.1.150 – IP-адрес удаленной системы.
Пример вывода:
[email '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 
Пример вывода:
[email '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. Если вы считаете это полезным, поделитесь этой статьей в своих социальных сетях и сообщите нам в разделе комментариев ниже, есть ли какие-либо другие способы ограничения домашних каталогов пользователей.