Апублікаваны выпуск сервера 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