การเปิดตัวเซิร์ฟเวอร์ SFTP SFTPGo 2.2.0

Опубликован выпуск сервера 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:

  • แต่ละบัญชีถูก chrooted ซึ่งจำกัดการเข้าถึงโฮมไดเร็กตอรี่ของผู้ใช้ เป็นไปได้ที่จะสร้างไดเร็กทอรีเสมือนที่อ้างอิงข้อมูลภายนอกโฮมไดเร็กทอรีของผู้ใช้
  • บัญชีจะถูกจัดเก็บไว้ในฐานข้อมูลผู้ใช้เสมือนที่ไม่ทับซ้อนกับฐานข้อมูลผู้ใช้ระบบ สามารถใช้ 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)
  • โหมดพกพาสำหรับการแชร์ไดเรกทอรีร่วมหนึ่งรายการด้วยการสร้างข้อมูลรับรองการเชื่อมต่ออัตโนมัติที่โฆษณาผ่าน multicast DNS
  • ระบบโปรไฟล์ในตัวสำหรับการวิเคราะห์ประสิทธิภาพ
  • กระบวนการที่ง่ายขึ้นสำหรับการย้ายบัญชีระบบ Linux
  • การจัดเก็บบันทึกในรูปแบบ JSON
  • รองรับไดเร็กทอรีเสมือน (เช่น เนื้อหาของไดเร็กทอรีบางตัวไม่สามารถให้บริการได้จาก FS ในเครื่อง แต่จากที่เก็บข้อมูลบนคลาวด์ภายนอก)
  • Cryptfs รองรับการเข้ารหัสข้อมูลแบบโปร่งใสได้ทันทีเมื่อบันทึกลงใน FS และถอดรหัสเมื่อส่งคืน
  • รองรับการส่งต่อการเชื่อมต่อไปยังเซิร์ฟเวอร์ SFTP อื่น ๆ
  • ความสามารถในการใช้ SFTPGo เป็นระบบย่อย SFTP สำหรับ OpenSSH
  • ความสามารถในการจัดเก็บข้อมูลประจำตัวและข้อมูลลับในรูปแบบที่เข้ารหัสโดยใช้เซิร์ฟเวอร์ KMS (บริการการจัดการคีย์) เช่น Vault, GCP KMS, AWS KMS

ที่มา: opennet.ru

เพิ่มความคิดเห็น