Випуск SFTP-сервера SFTPGo 1.0

Відбувся перший значний випуск сервера SFTPGo 1.0, що дозволяє організувати віддалений доступ до файлів за допомогою протоколів SFTP, SCP/SSH та Rsync. У тому числі SFTPGo може використовуватися для надання доступу до Git-репозиторій, використовуючи протокол SSH. Дані можуть віддаватися як з локальної файлової системи, так і зовнішніх сховищ, сумісних з Amazon S3 і Google Cloud Storage. Для зберігання бази користувача та метаданих використовуються СУБД з підтримкою SQL або формату ключ/значення, такі як PostgreSQL 9.4+, MySQL 5.6+, SQLite 3.x або bbolt 1.3.x. Існує також режим зберігання метаданих в оперативній пам'яті, що не вимагає підключення зовнішньої БД. Код проекту написаний мовою Go та поширюється ліцензія GPLv3.

Основні особливості:

  • Для кожного облікового запису використовується 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).
  • режим портативний для спільного використання одного загального каталогу з автоматичним створенням облікових даних для підключення, що анонсуються через multicast DNS.
  • Вбудована система профілювання для аналізу продуктивності.
  • Спрощений процес міграції системних облікових записів Linux
  • Зберігання логів у форматі JSON.

Джерело: opennet.ru

Додати коментар або відгук