Опубліковано випуск сервера 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.
Джерело: opennet.ru