Попытка настроить SFTP только в chroot тюрьме для одного пользователя

Это было обсуждено на нашем родственном сайте, superuser.com прежде - смотрит ЗДЕСЬ.

6
задан 12 February 2013 в 12:54
1 ответ

1. Создание новой группы

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

# groupadd sftpusers

2. Создание пользователей (или изменение существующего пользователя)

Допустим, вы хотите создать пользователя-гостя, которому должно быть разрешено только выполнение SFTP в среде chroot, и не должно быть разрешено выполнять SSH.

Следующая команда создает guestuser, назначает этого пользователя группе sftpusers, make / incoming в качестве домашнего каталога, устанавливает / sbin / nologin в качестве оболочки (что не позволяет пользователю использовать ssh и получить доступ к оболочке).

# useradd -g sftpusers -d /incoming -s /sbin/nologin guestuser
# passwd guestuser

Убедитесь, что пользователь был создан правильно.

# grep guestuser /etc/passwd
guestuser:x:500:500::/incoming:/sbin/nologin

Если вы хотите изменить существующего пользователя и сделать его только пользователем sftp и поместить его в тюрьму chroot sftp, сделайте следующее:

# usermod -g sftpusers -d /incoming -s /sbin/nologin john

В соответствующем примечании, если вам нужно перенести файлы из Windows в Linux, используйте любой из клиентов sftp, упомянутых в этом списке лучших 7 клиентов sftp.

3. Настройте подсистему sftp-server в sshd_config

Вы должны указать sshd на использование внутреннего sftp для sftp (вместо sftp-сервера по умолчанию).

Измените файл / etc / ssh / sshd_config и закомментируйте следующее строка:

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

Затем добавьте следующую строку в файл / etc / ssh / sshd_config

Subsystem       sftp    internal-sftp

. Она должна выглядеть так:

# grep sftp /etc/ssh/sshd_config
#Subsystem      sftp    /usr/libexec/openssh/sftp-server
Subsystem       sftp    internal-sftp

4. Указание каталога Chroot для группы

Вы хотите поместить только определенных пользователей (т.е. пользователей, которые принадлежат к группе sftpusers) в среду chroot jail. Добавьте следующие строки в конец / etc / ssh / sshd_config

Match Group sftpusers
        ChrootDirectory /sftp/%u
        ForceCommand internal-sftp

В приведенном выше примере:

  • Match Group sftpusers - это означает, что следующие строки будут

    3. Настройте подсистему sftp-server в sshd_config

    Вы должны указать sshd на использование внутреннего sftp для sftp (вместо sftp-сервера по умолчанию).

    Измените файл / etc / ssh / sshd_config и закомментируйте следующее строка:

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

    Затем добавьте следующую строку в файл / etc / ssh / sshd_config

    Subsystem       sftp    internal-sftp
    

    . Она должна выглядеть так:

    # grep sftp /etc/ssh/sshd_config
    #Subsystem      sftp    /usr/libexec/openssh/sftp-server
    Subsystem       sftp    internal-sftp
    

    4. Указание каталога Chroot для группы

    Вы хотите поместить только определенных пользователей (т.е. пользователей, которые принадлежат к группе sftpusers) в среду chroot jail. Добавьте следующие строки в конец / etc / ssh / sshd_config

    Match Group sftpusers
            ChrootDirectory /sftp/%u
            ForceCommand internal-sftp
    

    В приведенном выше примере:

    • Match Group sftpusers - это означает, что следующие строки будут

      3. Настройте подсистему sftp-server в sshd_config

      Вы должны указать sshd на использование внутреннего sftp для sftp (вместо sftp-сервера по умолчанию).

      Измените файл / etc / ssh / sshd_config и закомментируйте следующее строка:

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

      Затем добавьте следующую строку в файл / etc / ssh / sshd_config

      Subsystem       sftp    internal-sftp
      

      . Она должна выглядеть так:

      # grep sftp /etc/ssh/sshd_config
      #Subsystem      sftp    /usr/libexec/openssh/sftp-server
      Subsystem       sftp    internal-sftp
      

      4. Указание каталога Chroot для группы

      Вы хотите поместить только определенных пользователей (т.е. пользователей, которые принадлежат к группе sftpusers) в среду chroot jail. Добавьте следующие строки в конец / etc / ssh / sshd_config

      Match Group sftpusers
              ChrootDirectory /sftp/%u
              ForceCommand internal-sftp
      

      В приведенном выше примере:

      • Match Group sftpusers - это означает, что следующие строки будут

        Измените файл / etc / ssh / sshd_config и закомментируйте следующую строку:

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

        Затем добавьте следующую строку в файл / etc / ssh / sshd_config

        Subsystem       sftp    internal-sftp
        

        Он должен выглядеть следующим образом:

        # grep sftp /etc/ssh/sshd_config
        #Subsystem      sftp    /usr/libexec/openssh/sftp-server
        Subsystem       sftp    internal-sftp
        

        4. Указание каталога Chroot для группы

        Вы хотите поместить только определенных пользователей (т.е. пользователей, которые принадлежат к группе sftpusers) в среду chroot jail. Добавьте следующие строки в конец / etc / ssh / sshd_config

        Match Group sftpusers
                ChrootDirectory /sftp/%u
                ForceCommand internal-sftp
        

        В приведенном выше примере:

        • Match Group sftpusers - это означает, что следующие строки будут

          Измените файл / etc / ssh / sshd_config и закомментируйте следующую строку:

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

          Затем добавьте следующую строку в файл / etc / ssh / sshd_config

          Subsystem       sftp    internal-sftp
          

          Он должен выглядеть следующим образом:

          # grep sftp /etc/ssh/sshd_config
          #Subsystem      sftp    /usr/libexec/openssh/sftp-server
          Subsystem       sftp    internal-sftp
          

          4. Указание каталога Chroot для группы

          Вы хотите поместить только определенных пользователей (т.е. пользователей, которые принадлежат к группе sftpusers) в среду chroot jail. Добавьте следующие строки в конец / etc / ssh / sshd_config

          Match Group sftpusers
                  ChrootDirectory /sftp/%u
                  ForceCommand internal-sftp
          

          В приведенном выше примере:

          • Match Group sftpusers - это означает, что следующие строки будут совпадать только с пользователями, которые принадлежат к группе sftpusers
          • ChrootDirectory / sftp /% u - это путь, который будет использоваться для chroot после аутентификации пользователя. % u указывает пользователя. Так, для Джона это будет /sftp/john.
          • ForceCommand internal-sftp - это заставляет выполнение internal-sftp и игнорирует все команды, упомянутые в ~ / .ssh / rc файл.

          5. Создание домашнего каталога sftp

          Поскольку мы указали / sftp как ChrootDirectory выше, создайте этот каталог (который является эквивалентом вашего обычного каталога / home).

          # mkdir /sftp
          

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

          # mkdir /sftp/guestuser
          

          Итак, / sftp / guestuser эквивалентен / для гостевого пользователя. Когда guestuser sftp входит в систему и выполняет «cd /», они будут видеть только содержимое каталогов в «/ sftp / guestuser» (а не реальный / системы). В этом сила chroot.

          Итак, в этом каталоге / sftp / guestuser создайте любой подкаталог, который вы хотите, чтобы пользователь видел. Например, создайте входящий каталог, в котором пользователи могут sftp свои файлы.

          # mkdir /sftp/guestuser/incoming
          

          6. Настройка соответствующих разрешений

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

          Установите принадлежность пользователю и сгруппируйте его в группу sftpusers, как показано ниже.

          # chown guestuser:sftpusers /sftp/guestuser/incoming
          

          Разрешение для входящего каталога будет выглядеть следующим образом.

          # ls -ld /sftp/guestuser/incoming
          drwxr-xr-x 2 guestuser sftpusers 4096 Dec 28 23:49 /sftp/guestuser/incoming
          

          Разрешение будет выглядеть следующим образом для каталога / sftp / guestuser

          # ls -ld /sftp/guestuser
          drwxr-xr-x 3 root root 4096 Dec 28 23:49 /sftp/guestuser
          
          # ls -ld /sftp
          drwxr-xr-x 3 root root 4096 Dec 28 23:49 /sftp
          

          7. Перезапустите sshd и проверьте chroot SFTP

          Перезапустите sshd:

          # service sshd restart
          

          Тестируйте среду chroot sftp. Как вы видите ниже, когда gusetuser выполняет sftp и выполняет «cd /», они будут видеть только входящий каталог.

          # sftp guestuser@thegeekstuff.com
          guestuser@thegeekstuff's password:
          
          sftp> pwd
          Remote working directory: /incoming
          
          sftp> cd /
          sftp> ls
          incoming
          

          Когда guestuser передает любые файлы в каталог / incoming из sftp, они действительно будут находиться в / sftp / guestuser / incoming в системе.

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

          Установите принадлежность пользователю и сгруппируйте его в группу sftpusers, как показано ниже.

          # chown guestuser:sftpusers /sftp/guestuser/incoming
          

          Разрешение будет выглядеть следующим образом для входящий каталог.

          # ls -ld /sftp/guestuser/incoming
          drwxr-xr-x 2 guestuser sftpusers 4096 Dec 28 23:49 /sftp/guestuser/incoming
          

          Разрешение будет выглядеть следующим образом для каталога / sftp / guestuser

          # ls -ld /sftp/guestuser
          drwxr-xr-x 3 root root 4096 Dec 28 23:49 /sftp/guestuser
          
          # ls -ld /sftp
          drwxr-xr-x 3 root root 4096 Dec 28 23:49 /sftp
          

          7. Перезапустите sshd и проверьте Chroot SFTP

          Перезапустите sshd:

          # service sshd restart
          

          Тестируйте среду chroot sftp. Как вы видите ниже, когда gusetuser выполняет sftp и выполняет «cd /», они будут видеть только входящий каталог.

          # sftp guestuser@thegeekstuff.com
          guestuser@thegeekstuff's password:
          
          sftp> pwd
          Remote working directory: /incoming
          
          sftp> cd /
          sftp> ls
          incoming
          

          Когда guestuser передает любые файлы в каталог / incoming из sftp, они действительно будут находиться в / sftp / guestuser / incoming в системе.

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

          Установите принадлежность пользователю и сгруппируйте его в группу sftpusers, как показано ниже.

          # chown guestuser:sftpusers /sftp/guestuser/incoming
          

          Разрешение будет выглядеть следующим образом для входящий каталог.

          # ls -ld /sftp/guestuser/incoming
          drwxr-xr-x 2 guestuser sftpusers 4096 Dec 28 23:49 /sftp/guestuser/incoming
          

          Разрешение будет выглядеть следующим образом для каталога / sftp / guestuser

          # ls -ld /sftp/guestuser
          drwxr-xr-x 3 root root 4096 Dec 28 23:49 /sftp/guestuser
          
          # ls -ld /sftp
          drwxr-xr-x 3 root root 4096 Dec 28 23:49 /sftp
          

          7. Перезапустите sshd и проверьте Chroot SFTP

          Перезапустите sshd:

          # service sshd restart
          

          Тестируйте среду chroot sftp. Как вы видите ниже, когда gusetuser выполняет sftp и выполняет «cd /», они будут видеть только входящий каталог.

          # sftp guestuser@thegeekstuff.com
          guestuser@thegeekstuff's password:
          
          sftp> pwd
          Remote working directory: /incoming
          
          sftp> cd /
          sftp> ls
          incoming
          

          Когда guestuser передает любые файлы в каталог / incoming из sftp, они действительно будут находиться в / sftp / guestuser / incoming в системе.

          и сгруппируйте его в группу sftpusers, как показано ниже.

          # chown guestuser:sftpusers /sftp/guestuser/incoming
          

          Разрешение будет выглядеть следующим образом для входящего каталога.

          # ls -ld /sftp/guestuser/incoming
          drwxr-xr-x 2 guestuser sftpusers 4096 Dec 28 23:49 /sftp/guestuser/incoming
          

          Разрешение будет выглядеть следующим образом для каталога / sftp / guestuser

          # ls -ld /sftp/guestuser
          drwxr-xr-x 3 root root 4096 Dec 28 23:49 /sftp/guestuser
          
          # ls -ld /sftp
          drwxr-xr-x 3 root root 4096 Dec 28 23:49 /sftp
          

          7. Перезапустите sshd и проверьте chroot SFTP

          Перезапустите sshd:

          # service sshd restart
          

          Тестируйте среду chroot sftp. Как вы видите ниже, когда gusetuser выполняет sftp и выполняет «cd /», они будут видеть только входящий каталог.

          # sftp guestuser@thegeekstuff.com
          guestuser@thegeekstuff's password:
          
          sftp> pwd
          Remote working directory: /incoming
          
          sftp> cd /
          sftp> ls
          incoming
          

          Когда guestuser передает любые файлы в каталог / incoming из sftp, они действительно будут находиться в / sftp / guestuser / incoming в системе.

          и сгруппируйте его в группу sftpusers, как показано ниже.

          # chown guestuser:sftpusers /sftp/guestuser/incoming
          

          Разрешение будет выглядеть следующим образом для входящего каталога.

          # ls -ld /sftp/guestuser/incoming
          drwxr-xr-x 2 guestuser sftpusers 4096 Dec 28 23:49 /sftp/guestuser/incoming
          

          Разрешение будет выглядеть следующим образом для каталога / sftp / guestuser

          # ls -ld /sftp/guestuser
          drwxr-xr-x 3 root root 4096 Dec 28 23:49 /sftp/guestuser
          
          # ls -ld /sftp
          drwxr-xr-x 3 root root 4096 Dec 28 23:49 /sftp
          

          7. Перезапустите sshd и проверьте Chroot SFTP

          Перезапустите sshd:

          # service sshd restart
          

          Тестируйте среду chroot sftp. Как вы видите ниже, когда gusetuser выполняет sftp и выполняет «cd /», они будут видеть только входящий каталог.

          # sftp guestuser@thegeekstuff.com
          guestuser@thegeekstuff's password:
          
          sftp> pwd
          Remote working directory: /incoming
          
          sftp> cd /
          sftp> ls
          incoming
          

          Когда guestuser передает любые файлы в каталог / incoming из sftp, они действительно будут находиться в / sftp / guestuser / incoming в системе.

7
ответ дан 3 December 2019 в 00:25

Теги

Похожие вопросы