У меня нечеткое представление о том, что означает термин «ftp jailing», но когда дело доходит до разрешений и безопасности, нечеткость неосмотрительна. Что это? Как это реализовано? Это в основном возможность ftp-сервера или это связано с тем, как базовая ОС выполняет разрешения?
Вот как я это делаю в среде Windows IIS. Рисунок это кому-то поможет в будущем.
- настроить учетные записи локальных пользователей на компьютере для каждого «пользователя / клиента»
- В проводнике настройте структуру NTFS так, чтобы у вас была «корневая» папка, а внутри этой папки у вас были папки для каждого клиента / и т. Д.
- Настройте права NTFS так, чтобы каждый пользователь (вы можете использовать группу с именем FTP-пользователи и добавлять их всех в эту группу) имел права «Список» для корневой папки. Затем дайте им определенные права на каждую из их «домашних» папок (чтение / запись / что угодно).
- В IIS для FTP-сайта создайте виртуальные каталоги с именами ТОЧНО такие же, как у созданных вами учетных записей пользователей, и укажите для каждого из них правильную домашнюю папку. т.е. виртуальный каталог BOBJONES указывает на d: \ ftpsite \ BOBJONES
- вернитесь в проводник и создайте новую папку в той же папке, что и папка ROOT, и назовите ее DEADEND
- предоставить список пользователей FTP / права на чтение для папки DEADEND
- Вернувшись в IIS, установите "корневую папку" для FTP-сайта в папку DEADEND.
Вот и все.
теперь, когда BOBJONES входит на FTP-сайт, он находится в каталоге BOBJONES. Если он станет хитрым и попытается сделать компакт-диск ... для перехода к родительскому / корневому каталогу, он попадет в папку DEADEND и не увидит список всех остальных домашних папок и т. Д. (ПРИМЕЧАНИЕ: он может получить вернуться в свою домашнюю папку, набрав cd BOBJONES still)
ОДИН ЗАКЛЮЧИТЕЛЬНОЕ ПРИМЕЧАНИЕ: любой, у кого есть идентификатор пользователя, но не имеет виртуального каталога с таким же именем, по умолчанию получит корневой каталог, который был изменен на DEADEND.
Заключение в тюрьму FTP означает, что пользователь видит свой корневой каталог как тот, который вы определяете. Он не может подняться выше по дереву, поскольку FTP-клиент видит его каталог как корневой каталог.
Допустим, у вас есть следующее:
/home/ben_linus/
/home/ben_linus/data
/home/ben_linus/progs
Вы устанавливаете корень в / home / ben_linus /
Он увидит
/
/data
/progs
«Заключение в тюрьму» в ftp означает блокировку сеанса ftp для определенного подмножества файловой системы. Обычно он устанавливается таким образом, что если конкретный пользователь входит в систему, он может только ftp к своему собственному пространству каталога.
На ftp-сервере часто есть опция, которая при подключении пользователя исключает пользователя, что означает, что для этого пользователя корень юниверса является определенной частью всей доступной файловой системы.
'vsftp' имеет действительно четкое объяснение и инструкции по vsftpd.
Некоторые другие примеры включают профтп и ftp на hp / ux.
Я не вижу причин, по которым это должно зависеть от ОС. Ничто не мешает вам кодировать FTP-сервер, который будет возвращать / для некоторого случайного каталога после использования cd ..
достаточно часто, фактически не находясь в / на Unix или на диске верхнего уровня в Windows.
Что касается разрешений, это во многом зависит от того, как вы настраиваете свои FTP-серверы, некоторые FTP-серверы могут отображаться от / к любому пользователю, это означает, что вы можете настроить FTP-сервер, который требует «нормальной» аутентификации, но при записи файла в ОС на хосте. разрешения будут привязаны к определенному пользователю, которого вы настроили.
Некоторое обсуждение chroot (а также дополнительную ссылку) можно найти в ProFTPd FAQ.
Это особенность ftp-сервера (для большинства из них). Например, с vsftpd вы можете "заключать" пользователей в их домашний адрес, используя конфигурацию
chroot_local_user=YES
FTP-сервер не позволит пользователю перейти ниже этого каталога.
User homedir: /home/ftp
User can access: /home/ftp, /home/ftp/pub
User can not access: /home, /etc, /, /root etc..
Это может означать две вещи:
В старые времена в системах UNIX помещать пользователей в определенный каталог было обременительно, чревато ошибками и могло привести к проблемам. Вам нужно было скомпилировать специальные статические связанные двоичные файлы для таких вещей, как ls и cd, и, например, переместить их в тюрьму. Если ваша ОС / программное обеспечение требует этого - учтите, что это проблематично. Я предпочитаю более новые FTP-серверы, которые не требуют такого подхода.
В IIS мне трудно сделать заключенный в тюрьму FTP - хотя есть одно описание чего-то близкого выше, это не совсем так гладко. Престижность за то, что я сделал это, я много раз пытался найти что-то подобное. Вместо этого я использую Filezilla в Windows, это довольно элегантное решение проблемы с тюрьмами, которое работает должным образом. Насколько мне известно, никаких проблем с безопасностью нет, Filezilla, похоже, быстро устраняет уязвимости.
Современные реализации FTP в UNIX, похоже, делают заключение в тюрьму намного проще и, вероятно, намного безопаснее. Остается большая часть проблем безопасности; как только вы предположите, что можете предоставить своему пользователю доступ ко всему, что ниже точки тюремного заключения, возникает вопрос: «Предоставляет ли мой поставщик / поставщик программного обеспечения FOSS своевременные исправления?»