The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Выпуск SFTP-сервера SFTPGo 2.2.0

29.11.2021 09:54

Опубликован выпуск сервера SFTPGo 2.2, позволяющего организовать удалённый доступ к файлам при помощи протоколов SFTP, SCP/SSH, Rsync, HTTP и WebDav. В том числе SFTPGo может использоваться для предоставления доступа к Git-репозиториям, используя протокол SSH. Данные могут отдаваться как с локальной файловой системы, так и из внешних хранилищ, совместимых с Amazon S3, Google Cloud Storage и Azure Blob Storage. Возможно хранение данных в зашифрованном виде. Для хранения пользовательской базы и метаданных используются СУБД с поддержкой SQL или формата ключ/значение, такие как PostgreSQL, MySQL, SQLite, CockroachDB или bbolt, но имеется и возможность хранения метаданных в оперативной памяти, не требующая подключения внешней БД. Код проекта написан на языке Go и распространяется под лицензией GPLv3.

В новой версии:

  • Добавлена поддержка двухфакторной аутентификации с использованием одноразовых паролей с ограниченным временем жизни (TOTP, RFC 6238). В качестве аутентификаторов могут использоваться такие приложения, как Authy и Google Authenticator.
  • Реализована возможность расширения функциональности через плагины. Среди уже доступных плагинов: поддержка дополнительных сервисов обмена ключами, интеграция схемы Publish/Subscribe, хранение и поиск информации о событиях в СУБД.
  • В REST API добавлена поддержка аутентификации по ключам, помимо токенов JWT, а также обеспечена возможность задания политик хранения данных (ограничение времени жизни данных) в привязке к отдельным каталогам и пользователям. По умолчанию активирован интерфейс Swagger UI для навигации по ресурсам API без применения внешних утилит.
  • В web-интерфейс добавлена поддержка операций записи (загрузка файлов, создание каталогов, переименование и удаление), реализована возможность сброса пароля с подтверждением по email, интегрированы редактор текстовых файлов и просмотрщик PDF-документов. Добавлена возможность создания HTTP-ссылок для предоставления внешним пользователям доступа к отдельным файлам и каталогам, с возможностью задания отдельного пароля доступа, ограничения по IP-адресам, задания времени жизни ссылки и лимитирования числа загрузок.



Основные возможности SFTPGo:

  • Для каждой учётной записи применяется chroot-изоляция, ограничивающая доступ домашним каталогом пользователя. Возможно создания виртуальных каталогов, ссылающихся на данные вне пользовательского домашнего каталога.
  • Учётные записи хранятся в виртуальной базе пользователей, не пересекающейся с системной БД пользователей. Для хранения БД пользователей могут применяться SQLite, MySQL, PostgreSQL, bbolt и хранение в памяти. Предоставляются средства для сопоставления виртуальных и системных учётных записей - возможно прямое или произвольное сопоставление (один системный пользователь может быть сопоставлен с другим виртуальным пользователем).
  • Поддерживается аутентификация по открытым ключам, ключам SSH и паролям (в том числе интерактивная аутентификация с вводом пароля с клавиатуры). Возможна привязка нескольких ключей для каждого пользователя, а также настройка мультифакторной и многоэтапной аутентификации (например, в случае успешной аутентификации по ключу может дополнительно быть запрошен пароль).
  • Для каждого пользователя возможна настройка разных методов аутентификации, а также определение собственных методов, реализуемых через вызов внешних программ-аутентификаторов (например, для аутентификации через LDAP) или отправку запросов через HTTP API.
  • Возможно подключение внешних обработчиков или вызовов HTTP API для динамического изменения параметров пользователя, вызываемых перед входом пользователя. Поддерживается динамическое создание пользователей при подключении.
  • Поддержка индивидуальных квот на размер данных и число файлов.
  • Поддержка ограничения пропускной способности с раздельной настройкой ограничений для входящего и исходящего трафика, а также ограничений на число одновременных подключений.
  • Средства разграничения доступа, действующие в привязке к пользователю или каталогу (можно ограничить просмотр списка файлов, запретить загрузку, скачивание, перезапись, удаление, переименование или изменение прав доступа, запретить создание каталогов или символических ссылок и т.п.).
  • Для каждого пользователя можно определить индивидуальные сетевые ограничения, например, можно разрешить вход только с определённых IP или подсетей.
  • Поддерживается подключение фильтров загружаемого контента в привязке к отдельным пользователям и каталогам (например, можно блокировать загрузку файлов с определённым расширением).
  • Возможна привязка обработчиков, запускаемых при различных операциях с файлом (загрузка, удаление, переименование и т.п.). Кроме вызова обработчиков поддерживается отправка уведомлений в форме HTTP-запросов.
  • Автоматическое завершение неактивных соединений.
  • Атомарное обновление конфигурации без разрыва соединений.
  • Предоставление метрик для мониторинга в Prometheus.
  • Поддерживается протокол HAProxy PROXY для организации балансировки нагрузки или проксирования соединений к сервисам SFTP/SCP без потери сведений об исходном IP-адресе пользователя.
  • REST API для управления пользователями и каталогами, создания резервных копий и формирования отчётов об активных соединениях.
  • Web-интерфейс (http://127.0.0.1:8080/web) для настройки и мониторинга (поддерживается и настройка через обычные файлы конфигурации).
  • Возможность определения настроек в форматах JSON, TOML, YAML, HCL и envfile.
  • Поддержка подключения по SSH с ограниченным доступом к системным командам. Например, разрешён запуск команд, необходимых для работы Git (git-receive-pack, git-upload-pack, git-upload-archive) и rsync, а также нескольких встроенных команд (scp, md5sum, sha*sum, cd, pwd, sftpgo-copy и sftpgo-remove).
  • Режим portable для совместного использования одного общего каталога с автоматической генерацией учётных данных для подключения, анонсируемых через multicast DNS.
  • Встроенная система профилирования для анализа производительности.
  • Упрощённый процесс миграции системных учётных записей Linux.
  • Хранение логов в формате JSON.
  • Поддержка виртуальных каталогов (например, содержимое определённого каталога можно отдавать не из локальной ФС, а из внешнего облачного хранилища).
  • Поддержка cryptfs для прозрачного шифрования данных на лету при сохранении в ФС и расшифровки при отдаче.
  • Поддержка проброса соединений к другим серверам SFTP.
  • Возможность использования SFTPGo в качестве SFTP-подсистемы для OpenSSH.
  • Возможность хранения учётных и конфиденциальных данных в зашифрованном виде с использованием KMS-серверов (Key Management Services), таких как Vault, GCP KMS, AWS KMS.


  1. Главная ссылка к новости (https://github.com/drakkan/sft...)
  2. OpenNews: Выпуск vsftpd 3.0.4
  3. OpenNews: Уязвимость в ftpd из FreeBSD, позволявшая получить root-доступ при использовании ftpchroot
  4. OpenNews: Выпуск SFTP-сервера SFTPGo 1.0
  5. OpenNews: Критическая уязвимость в ProFTPd
  6. OpenNews: Обновление ProFTPD 1.3.5d
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/56247-sftpgo
Ключевые слова: sftpgo, sftp, ftp
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (47) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 10:05, 29/11/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Когда в браузеры завезут поддержку?
     
     
  • 2.2, zo0M (ok), 10:07, 29/11/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    вчера
     
  • 2.3, Аноним (3), 10:09, 29/11/2021 [^] [^^] [^^^] [ответить]  
  • –3 +/
    поддержку чего? го? безопасного фтп? питона? ой, уже
     
     
  • 3.18, Аноним (18), 12:34, 29/11/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    HTTP. Стильная-модная-смузёвая фича, не в каждом браузере есть.
     

  • 1.9, Аноним (9), 11:16, 29/11/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Нахера название языка, на к-м софт написан, указывать в названии программы?
     
     
  • 2.11, x3who (?), 11:36, 29/11/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Нахера название языка, на к-м софт написан, указывать в названии программы?

    это как правило сказывается на пользовательских качествах программы, хотя бы поэтому чтоит указывать

     
  • 2.14, Alex (??), 11:50, 29/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Тут скорее так совпало что слово Go может ещё использоваться как что то удобное и функциональное из коробки.
    Типа поставил завёл и поехал.

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

     
     
  • 3.36, Аноним (36), 19:36, 29/11/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    ага, совпало. а также совпало в hugo, gosu, gogs и прочих 😁
     
  • 2.15, ыы (?), 11:52, 29/11/2021 [^] [^^] [^^^] [ответить]  
  • +13 +/
    Чтобы унизить приверженцев раста :)
     
  • 2.23, OpenEcho (?), 13:56, 29/11/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Нахера название языка, на к-м софт написан, указывать в названии программы?

    Потому- что префикс/окончание с GO дает подсказку, что это - тоже самое, но только мультиплатформенное и как правило более современное и с большим количеством фич

    SFTP vs SFTPgo
    gocryptfs VS eCryptfs
    и так далее

     
     
  • 3.33, Аноним (33), 17:06, 29/11/2021 [^] [^^] [^^^] [ответить]  
  • –2 +/
    > мультиплатформенное

    Т.е. linux надо писать как linuxc? А где на Go ОС мультиплатформерная?

     
     
  • 4.37, OpenEcho (?), 21:05, 29/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    >> мультиплатформенное
    > Т.е. linux надо писать как linuxc? А где на Go ОС мультиплатформерная?

    А где я говорил что на Go ось мультиплатформенная ???

    SFTPgo - мультиплатформенная, может работать, на Линуксе, Фре, Виндовс
    GocryptFS - тоже

    Вы термин мультиплатформенности чуток не поняли ;)

     
     
  • 5.45, Аноним (45), 23:39, 29/11/2021 [^] [^^] [^^^] [ответить]  
  • –2 +/
    А какое отношение мультиплатформенность имеет к языку и тем более к названию проекта?
     
     
  • 6.49, OpenEcho (?), 01:22, 30/11/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > А какое отношение мультиплатформенность имеет к языку и тем более к названию
    > проекта?

    К тому, что практически все Гоу программы работают на разных платформах, поэтому, если видна приставка/окончание go, то это вроде как намекает, что это будет работать везде.

    Ну, по крайней мере, это моя интерпритация - "почему"... :)

     
     
  • 7.58, Аноним (45), 20:36, 30/11/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > практически все Гоу программы работают на разных платформах, поэтому, если видна приставка/окончание go, то это вроде как намекает, что это будет работать везде.

    docker, gocryptfs на винде и макоси уже пашут? Вот gobject или, скажем, gosa действительно на разных платформах работают, только почему-то они не на go.
    Чувак, ты попутал, для чего язык программирования нужен. Он для того, чтобы на нём программы писать. Для остального есть порнхаб.

     
     
  • 8.64, OpenEcho (?), 20:41, 02/12/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Чувак, я просто попытался найти причину, почему народ называет программы с прист... текст свёрнут, показать
     

  • 1.16, Аноним (16), 12:27, 29/11/2021 Скрыто ботом-модератором [﹢﹢﹢] [ · · · ]     [к модератору]
  • +/
     

     ....ответы скрыты (5)

  • 1.20, Аноним (45), 12:56, 29/11/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    > протоколов SFTP, SCP/SSH, Rsync, HTTP и WebDav
    > СУБД с поддержкой SQL или формата ключ/значение, такие как PostgreSQL, MySQL, SQLite, CockroachDB или bbolt
    > настроек в форматах JSON, TOML, YAML, HCL и envfile

    Вот это вот всё точно нужно для того, чтобы просто расшарить файлы? KISS!

     
     
  • 2.51, Брат Анон (ok), 09:12, 30/11/2021 [^] [^^] [^^^] [ответить]  
  • +2 +/
    1. Ну попробуй передать по SSH файлы и сохранить их компактно в виде одного бинарного блоба БД.
    2. Ну покажи мне программу, которая на любой ОСи работает одинаково для этих целей?
    3. Если ты считаешь всё это ненужным -- напиши свою (на Расте будет особенно хорошо -- будет с чем сравнить, если ты конечно в Раст умеешь.).
     

  • 1.22, Аноним (22), 13:39, 29/11/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    ssh для Ъ-админа локалхоста достаточно, а поверх него запускаются scp или rsync

    всё

     
     
  • 2.52, Брат Анон (ok), 09:13, 30/11/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Неужели по SSH можно файлы в трёх базах данных сохранять? Или через HTTP-Proxy прокидывать?! Я что-то упустил?
     

  • 1.24, OpenEcho (?), 13:58, 29/11/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    @Drakkan, Thanks a lot for pretty useful program !
     
  • 1.26, PnD (??), 15:12, 29/11/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Заглянул под капот. Вся криптография написана на go.
    С одной стороны это ожидаемо, т.к. линковка с C хотя и делается просто, на go даёт заметный пенальти.
    С другой стороны, имеем "неуловимого Джо" с туманными перспективами аудита.

    В общем, если прикрыть доступ снаружи VPN (да, понизив криптостойкость), может быть в каких-то случаях полезным.

    ** Логи в json — это шесть.

     
     
  • 2.27, pavlinux (ok), 15:42, 29/11/2021 [^] [^^] [^^^] [ответить]  
  • –3 +/
    > Вся криптография написана на ...

    Они, чо, сами всю критпу реализовали?  Ну нах...

     
     
  • 3.44, Аноним (45), 23:33, 29/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    >> Вся криптография написана на ...
    > Они, чо, сами всю критпу реализовали?  Ну нах...

    Вся крипта есть в стандартной библиотеке Go. Не в ней проблема, а в 100500 других внешних зависимостей.

     
  • 2.28, Аноним (28), 15:45, 29/11/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Логи в предсказуемый структурированный формат — это шесть. Нужно писать строка за строкой, а потом прогонять по ним sed-ы и awk-ы с криво переданными параметрами. Вот это по-нашему, по-юниксовому.
     
     
  • 3.29, pavlinux (ok), 15:53, 29/11/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Слухайте, ну JSON явно не для админов с grep/awk/sed.
    Обычно для встраивания в какие-то системы аудита.  
     
     
  • 4.53, Брат Анон (ok), 09:16, 30/11/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Не пишите ерунду. Лучше хреновая структура, чем красивая каша в духе "я художник. я так вижу".
     
     
  • 5.56, Аноним (18), 12:04, 30/11/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Исторически, все юниксовые демоны пишут логи именно кашицей. Поэтому приходится преодолевать привычку "чтобы выделить в логе поля xxx и yyy, нужно написать однострочник в духе патча Бармина".
     
     
  • 6.62, Брат Анон (ok), 08:59, 01/12/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Исторически, все юниксовые демоны пишут логи именно кашицей.

    Я прекрасно понимаю, откуда растут ноги от подобных решений.


     
  • 3.30, YetAnotherOnanym (ok), 16:15, 29/11/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Как будто пройтись по json-логу cli'шной тулзой может составить проблему.
     
     
  • 4.39, Аноним (18), 21:58, 29/11/2021 [^] [^^] [^^^] [ответить]  
  • +5 +/
    Проблема в выразительности синтаксиса

    Сравните

        cat access.log | jq -r '.user_agent'

    и

        perl -ne 'if(/"([^"]+)"$/){$ua{$1}++;} END{for(keys %ua){print "$ua{$_} $_\n"}}' access_log

    Второй вариант куда более понятен и прозрачен.

     
  • 2.42, OpenEcho (?), 22:40, 29/11/2021 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > С другой стороны, имеем "неуловимого Джо" с туманными перспективами аудита.

    Я далеко не копал, но на сколько я понял, там используется та же самая Го-шная библиотека что и в gocryptfs, которая проходила аудит, то же самое и syncthing

    > В общем, если прикрыть доступ снаружи VPN (да, понизив криптостойкость), может быть
    > в каких-то случаях полезным.

    Программа прекрасно изолируется и легко защищается фаил2баном

    > ** Логи в json — это шесть.

    И чем оно страшнее обычных, разношерстно-стандартных строчек?
    {"level":"debug","time":"2021-11-29T14:36:50.790","sender":"DAV","connection_id":"DAV_хххх","message":"transfer added, id: 1428, active transfers: 1"}

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

     

  • 1.32, Аноним (32), 16:37, 29/11/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • –4 +/
    Ец ы принципе правильно, показатель отстойного качества.
     
     
  • 2.43, OpenEcho (?), 22:45, 29/11/2021 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Ец ы принципе правильно, показатель отстойного качества.

    Ец ы ысчо один спецыалист со своим ничем не подкрепленным мнением

     

  • 1.38, Аноним (38), 21:19, 29/11/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Шифрование отключить хоть можно? А то sshfs удобная штука, но в локальной сети, где чужих нет и шифрование не нужно, иногда хотелось бы быстрее.
     
     
  • 2.40, Аноним (18), 22:01, 29/11/2021 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Для начала, неплохо бы найти SFTP-клиент с отключаемым шифрованием :)
     

  • 1.46, Аноним (46), 23:42, 29/11/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    >> Хранение логов в формате JSON

    А чего не бинарем неизвестного формата?

     
     
  • 2.48, Аноним (18), 00:11, 30/11/2021 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Это было бы чересчур юниксвейно.
     
  • 2.59, Аноним (45), 20:43, 30/11/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Меня, с учётом подхода авторов, больше интересует, почему не реализовано альтернативное логирование в XML, YAML и REBOL.
     
     
  • 3.60, Аноним (45), 20:44, 30/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    А, да, и ещё в twitter неплохо было бы.
     
  • 3.61, Аноним (18), 00:09, 01/12/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > XML

    Оставим его труЪ-энтерпрайз джавистам.

    > YAML

    Обратно совместим с JSON - условие выполнено автоматически.

    > REBOL

    Хм. Сейчас уточню у знакомого лингвиста-историка, может, он слышал про этот REBOL.

     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру