Как ограничить пользователей 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
Здесь,
- tecmint – имя пользователя удаленной системы.
- 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> pwd
Remote working directory: /
sftp> ls
tecmint
Здесь tecmint
— домашний каталог. Перейдите в каталог tecmint и создайте файлы или папки по вашему выбору.
sftp> cd tecmint
Remote working directory: /
sftp> 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. Если вы считаете это полезным, поделитесь этой статьей в своих социальных сетях и сообщите нам в разделе комментариев ниже, есть ли какие-либо другие способы ограничения домашних каталогов пользователей.