Публикувана версия на 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 без използването на външни инструменти.
- В уеб интерфейса е добавена поддръжка на операции за запис (качване на файлове, създаване на директории, преименуване и изтриване), реализирана е възможност за нулиране на парола с потвърждение по имейл, интегрирани са редактор на текстови файлове и прегледач на 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 за управление на потребители и директории, създаване на резервни копия и генериране на отчети за активни връзки.
- Уеб интерфейс (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.
Източник: opennet.ru
