Ограничение SSH/SCP/SFTP пользователя к каталогу

Еще одна реализация, которая не полагается на внешние программы, в bash, zsh, yash и некоторые реализации/версии ksh:

while IFS= read -r line; do 
  line="${line//[!\"]/}"
  echo "${#line}"
done <input-file

Использовать line="${line//[!(]}"для подсчета (.

36
05.10.2012, 15:38
3 ответа

Поддержки SSH chrooting пользователь SFTP исходно. Просто необходимо предоставить

ChrootDirectory

В Вашем sshd файле конфигурации и перезапуске sshd.

Если Вы просто делаете sftp, то Вы не должны делать ничего больше. К сожалению, это не работает на scp. Для интерактивной оболочки необходимо будет скопировать двоичные файлы и/dev узлы в chroot.

Конфигурация в качестве примера, для просто отдельного пользователя, testuser:

Match User testuser
    ChrootDirectory /home/testuser
    ForceCommand internal-sftp

Несколько вещей знать, из sshd_config страницы справочника:

    All components of the pathname must be root-owned directories that are not
    writable by any other user or group.  After the chroot, sshd(8) changes the
    working directory to the user's home directory.

Поиск ChrootDirectory в человеке sshd_config для получения дополнительной информации.

29
27.01.2020, 19:36
  • 1
    Обратите внимание, что часть, которая запускается с "Пользователя соответствия testuser", должна быть в конце файла, поскольку это будет включать строки конфигурации, только если пользователь является "testuser" от той точки на. –  Magnus 05.10.2012, 17:10
  • 2
    Это также возможно к Chroot только для Протокола SFTP, но все еще позволить нормальные соединения SCP? –  lanoxx 22.03.2013, 17:16
  • 3
    На моей машине Ubuntu 14.04 было также необходимо измениться Subsystem sftp /usr/lib/openssh/sftp-server строка к Subsystem sftp internal-sftp -f AUTH -l VERBOSE –  partofthething 23.09.2015, 04:41
  • 4
    @Magnus или до другого Match раздел. –  roaima 10.01.2016, 19:21

chroot является довольно простым методом. Так как операционная система уже имеет это средство защиты, писатели демона склонны не пытаться повторно реализовать его.

Rssh идет с руководством по установке chroot тюрьмы. Это находится в CHROOT файл в исходном распределении. Короче говоря Вы должны иметь:

  • Несколько двоичных файлов, скопированных с корня: /usr/bin/scp, /usr/libexec/openssh/sftp-server, /usr/bin/rssh_chroot_helper
  • Библиотеки ({/usr,}/lib/lib*.so.[0-9]) то, что они используют, аналогично скопированный
  • A /etc/passwd (вполне возможно не копия, но полученный от ведущего устройства)
  • Несколько устройств: /dev/null, /dev/tty, и также a /dev/log сокет для входа (и необходимо сказать демону системного журнала слушать на том сокете),

Дополнительная подсказка, которая не находится в rssh документации: при необходимости в некоторых файлах, чтобы быть доступными в chroot тюрьме, можно использовать bindfs или Linux mount --bind сделать дополнительные иерархии каталогов снаружи тюрьмы. bindfs позволяет повторно смонтированному каталогу иметь более строгие полномочия, например, только для чтения. (mount --bind не делает, если Вы не применяете патч ядра; Debian включал этот патч с тех пор на востоке lenny, но большинство других дистрибутивов не имеет по состоянию на 2011.)

12
27.01.2020, 19:36

Вы могли бы хотеть посмотреть на scponly (или позже, rssh); это - по существу оболочка входа в систему, которая может только использоваться для запуска scp или sftpd подсистемы. В scponlyc вариант это выполняет chroot прежде, чем активировать рассматриваемую подсистему.

7
27.01.2020, 19:36
  • 1
    scponly кажется устаревшим, по крайней мере, в Ubuntu –  tobixen 26.08.2016, 13:44

Теги

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