Реализация директории chroot для пользователей sftp

Вопрос или проблема

Я запускаю OpenSSH64 в среде Windows 2012. OpenSSH64 работает, и я могу получить доступ к серверу. Я изменил файл sshd_config без успеха.

Я внес следующие изменения:

Subsystem sftp C:\OpenSSH-Win64\sftp-server.exe 

Match User sftponly-user 
X11Forwarding no 
AllowTcpForwarding no 
ForceCommand internal-sftp 
ChrootDirectory %h 

Я также пробовал

ChrootDirectory C:\User_Specific_Directory\ 

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

3784 11:00:17 087 error: accept: Операция завершена успешно. 

У кого-нибудь есть рабочий пример chroot для пользователя в конкретной директории?

Эта функция не была реализована в OpenSSH для Windows (в основном потому, что это сложно): https://github.com/PowerShell/Win32-OpenSSH/issues/190

Расположение файла конфигурации OpenSSH по умолчанию: C:\ProgramData\ssh

Имя файла: ssh_config

Match User <windows_login_user_name>
    ChrootDirectory C:\0-Websites\myapp.com
    X11Forwarding no
    PermitTTY no
    AllowTcpForwarding no
    ForceCommand sftp-server.exe

ЗАМЕТКА: Все имена пользователей должны быть написаны с маленькой буквы.

Ответ или решение

Реализация chroot каталога для SFTP пользователей в OpenSSH64 на Windows 2012

Введение

Настройка ограничивающего каталога (chroot) для пользователей SFTP в OpenSSH64 может быть сложной задачей, особенно в средах Windows. На данный момент поддержка данной функции в OpenSSH для Windows не является полной. В этой статье мы рассмотрим, что такое chroot и как его настроить, а также возможные проблемы и их решения.

Что такое Chroot?

Chroot (изменение корневого каталога) — это метод, который позволяет изолировать процессы в отдельной файловой системе. Это означает, что пользователь, который подключается к серверу SFTP, будет ограничен доступом только к определенному каталогу и не сможет выйти за его пределы.

Настройка Chroot в OpenSSH64

Для реализации chroot для SFTP пользователей, необходимо внести изменения в файл конфигурации sshd_config. Предположим, вы хотите создать пользователя sftponly-user, который будет ограничен каталогом C:\User_Specific_Directory\.

Шаги настройки:

  1. Откройте файл конфигурации:

    Файл конфигурации OpenSSH на Windows обычно находится по пути:

    C:\ProgramData\ssh\sshd_config
  2. Измените настройки в sshd_config:

    В вашем файле sshd_config добавьте или измените следующие строки:

    Subsystem sftp C:\OpenSSH-Win64\sftp-server.exe
    
    Match User sftponly-user
       ChrootDirectory C:\User_Specific_Directory\
       X11Forwarding no
       AllowTcpForwarding no
       ForceCommand internal-sftp

    Обратите внимание, что для правильной работы chroot важно, чтобы указанный каталог (в данном случае C:\User_Specific_Directory\) имел корректные права доступа. Chroot каталог должен принадлежать пользователю, которому он предназначен, или быть доступным только для администратора.

  3. Права доступа:

    Убедитесь, что права доступа к каталогу настроены правильно. Chroot каталог не должен быть доступен для записи пользователю (sftponly-user), так как OpenSSH требует, чтобы родительский каталог не был записываемым. Для этого можно выполнить команду в командной строке от имени администратора:

    icacls "C:\User_Specific_Directory" /reset
    icacls "C:\User_Specific_Directory" /inheritance:r
    icacls "C:\User_Specific_Directory" /grant:r "<YOUR-USERNAME>:(OI)(CI)F"

    Убедитесь, что у вас есть соответствующие разрешения.

  4. Перезапустите службу SSH:

    После внесения всех изменений необходимо перезапустить службу OpenSSH, чтобы обновить настройки:

    net stop sshd
    net start sshd

Проверка логов

Для генерации логов, которые помогут вам отследить изменения и ошибки, откройте файл журнала /var/log/auth.log. Также убедитесь, что включена директива LogLevel в sshd_config, чтобы детализировать записи:

LogLevel VERBOSE

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

Возможные проблемы и их решения

  1. Ошибка в логах:
    Если вы видите ошибки, такие как:

    3784 11:00:17 087 error: accept: The operation completed successfully.

    Это означает, что функция chroot для SFTP на данный момент может быть не полностью поддерживаемой в используемой версии OpenSSH для Windows. Обратитесь к документации GitHub для получения дополнительной информации о текущих ограничениях.

  2. Пользователь не может подключиться:
    Убедитесь, что права доступа к chroot каталогу настроены корректно (как было описано выше).

Заключение

Настройка chroot для SFTP пользователей в OpenSSH64 на Windows 2012 может быть непростой задачей из-за ограничений текущей реализации. Следуйте всем шагам выше, чтобы минимизировать возможные проблемы. В случае возникновения ошибок используйте журналы для диагностики и обратитесь к документации и сообществу для получения дополнительной помощи.

Оцените материал
Добавить комментарий

Капча загружается...