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

Как настроить Chrooted SFTP в Linux

В этом руководстве объясняется, как настроить Chrooted SFTP в Linux, чтобы ограничить доступ пользователей SSH к домашнему каталогу или к любому конкретному каталогу. Другими словами, мы собираемся заставить пользователей перейти в определенный каталог и установить для их оболочки значение /bin/nologin или какую-либо другую оболочку, которая запрещает доступ к вход по ssh. После настройки chrooted SFTP пользователи могут получить доступ только к назначенному им домашнему каталогу, но не ко всей файловой системе.

Преимущества Chrooted SFTP

Включение chrooted-доступа по SFTP дает следующие преимущества:

  • Разрешите пользователям подключаться только через SFTP, но не разрешайте им подключаться через SSH.
  • Ограничьте сеанс пользователя SSH своим домашним каталогом или определенным каталогом по вашему выбору.
  • Ограничьте доступ SSH для определенных пользователей и по-прежнему разрешите им передавать файлы между локальными и удаленными системами.
  • Запретить пользователю доступ ко всей файловой системе.

Теперь давайте продолжим и настроим Chrooted SFTP, чтобы ограничить пользователей SSH домашним каталогом и/или любым другим каталогом с Chrooted Jail в Linux.

Это руководство официально протестировано на дистрибутивах Debian 11 Bullseye, Ubuntu 20.04 LTS и Ubuntu 18.04 LTS. Однако приведенные ниже шаги должны работать в любых дистрибутивах Linux, поддерживающих openSSH.

Настройка Chrooted SFTP в Linux

Начиная с версии 4.9, в openSSH есть функция подсистема внутреннего sftp , которая разрешает только доступ по SFTP, но не по SSH. Таким образом, пользователи могут иметь доступ только к данным с сервера, но не могут получить к ним доступ через SSH.

Создать каталог Chrooted

Сначала создайте chrooted-каталог с помощью команды:

sudo mkdir /sftp

Сделайте этот каталог полностью принадлежащим пользователю root с помощью команды:

sudo chown root:root /sftp/

В этом каталоге создайте отдельные каталоги для каждого пользователя, например /sftp/user1, /sftp/user2, и /sftp/user3 и т. д.

Для целей этого руководства я собираюсь создать каталог под названием ostechnix в каталоге /sftp.

sudo mkdir /sftp/ostechnix

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

Создайте группу sftp и назначьте пользователей в эту группу.

Теперь нам нужно создать пользователей, которые смогут получить доступ к chroot-каталогу SFTP.

Создайте группу под названием sftponly, как показано в следующей команде:

sudo groupadd sftponly

Затем создайте новых пользователей SFTP или назначьте существующих пользователей в группу "sftponly", как показано ниже.

Позвольте мне создать нового пользователя, например senthill, и назначить его в группу "sftponly". Затем настройте его домашний каталог как /sftp/ostechnix и оболочку по умолчанию как /sbin/nologin.

Мы можем сделать это, используя следующую онлайн-команду:

sudo useradd -g sftponly -d /ostechnix -s /sbin/nologin senthil

Установите пароль для вновь созданного пользователя с помощью команды:

sudo passwd senthil

Чтобы изменить существующего пользователя, используйте команду "usermod" вместо команды "useradd", как показано ниже:

sudo usermod -g sftponly -d /ostechnix -s /sbin/nologin senthil

Назначьте правильные разрешения для chrooted-каталога.

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

sudo chown senthil:sftponly /sftp/ostechnix
sudo chmod 700 /sftp/ostechnix/

Другие пользователи SFTP не могут получить доступ к этому каталогу.

Аналогичным образом назначьте соответствующие разрешения всем остальным пользователям SFTP.

Рекомендуемая загрузка - Бесплатная электронная книга: «Изучите Linux за 5 дней»

Настройка chrooted SFTP

Отредактируйте файл /etc/ssh/sshd_config:

sudo vi /etc/ssh/sshd_config

Найдите и закомментируйте следующие строки (т. е. добавьте перед ними звездочку #, чтобы закомментировать).

#Subsystem       sftp    /usr/libexec/openssh/sftp-server

В некоторых дистрибутивах, например Ubuntu 18.04 LTS, найдите и закомментируйте следующую строку:

#Subsystem sftp /usr/lib/openssh/sftp-server

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

Subsystem       sftp    internal-sftp
Match group sftponly
     ChrootDirectory /sftp/
     X11Forwarding no
     AllowTcpForwarding no
     ForceCommand internal-sftp

Настройка chrooted SFTP

Если вы хотите ограничить пользователей каталогом $HOME, просто замените /sftp на /home в приведенном выше коде. Убедитесь, что вы указали правильный путь к каталогу sftp. Нажмите ESC и введите :wq, чтобы сохранить файл и выйти.

Перезапустите службу ssh, чтобы обновить изменения.

sudo systemctl restart sshd

Теперь попробуйте подключиться к этой системе по SSH из любой другой системы в сети, используя пользователя sftp (т. е. в нашем случае Senthil).

ssh senthil@192.168.122.181

Вы получите следующее сообщение об ошибке.

senthil@192.168.122.181's password: 
This service allows sftp connections only.
Connection to 192.168.122.181 closed.

Здесь 192.168.122.181 — это IP-адрес моей удаленной системы Debian, где я настроил SFTP.

Доступ к удаленной системе можно получить только с помощью sftp, как показано ниже.

$ sftp senthil@192.168.122.181
senthil@192.168.43.2's password: 
Connected to 192.168.43.2.
sftp>

Видеть? Пользователь «sentil» может подключиться через sftp, но не через ssh.

Чтобы узнать текущий рабочий каталог, используйте команду 'pwd':

sftp> pwd
Remote working directory: /ostechnix
sftp>

Настройка chrooted SFTP в Linux

Основные команды SFTP

Мы можем подключиться, используя альтернативный порт, используя флаг -p.

sftp -P <port_number> remote_user@remote_host

Чтобы перенести удаленный файл в локальную систему, выполните:

sftp> get /path/remote_file

Мы можем передать локальный файл в удаленную систему с помощью команды:

sftp> put /path/local_file

Чтобы рекурсивно перенести удаленную папку в локальную систему:

sftp> get -R /path/remote_folder

Чтобы отобразить список файлов на локальном компьютере:

sftp> lls

Чтобы отобразить список файлов на удаленном компьютере:

sftp> ls

Более подробную информацию об использовании sftp можно найти на страницах руководства.

man sftp

Заключение

В этом руководстве мы обсудили, как настроить chrooted SFTP в операционных системах Linux, таких как Debian и Ubuntu.

Рекомендуем прочитать:

  • Как настроить SFTP-сервер с помощью SFTPGo в Linux
  • Как изменить порт FTP по умолчанию на собственный порт
  • Установить сервер VSFTPD в Ubuntu
  • Безопасный сервер VSFTPD с шифрованием TLS/SSL в Ubuntu
  • Пошаговая настройка FTP-сервера в CentOS
  • FTP_Manager: простой скрипт для установки и управления FTP-сервером в CentOS

Статьи по данной тематике