Поиск по сайту:

Как установить SFTPGo на Ubuntu 22.04


На этой странице

  1. Предпосылки
  2. Настройка брандмауэра UFW
  3. Установка SFTPGo в Ubuntu 22.04
  4. Завершите установку SFTPGo
  5. Новые функции в версии 2.3.0
    1. Группы
    2. Внешние общие ресурсы
    3. Брендинг
    4. Подключение OpenID
    5. АКМЕ
    6. Гео-IP-фильтрация
    7. Ограничение файлов и каталогов на основе шаблонов оболочки

    SFTPGo — это бесплатный полнофункциональный SFTP-сервер с открытым исходным кодом и широкими возможностями настройки с дополнительной поддержкой HTTP/S, FTP/S и WebDAV.
    Поддерживаются несколько серверных хранилищ: локальная файловая система, зашифрованная локальная файловая система, S3 (совместимое) объектное хранилище. , Google Cloud Storage, Azure Blob Storage, другие SFTP-серверы.

    Все поддерживаемые функции подробно описаны на странице проекта GitHub.

    SFTPGo доступен для многих операционных систем, включая Linux, Windows, macOS, FreeBSD.
    В этом руководстве вы узнаете, как установить SFTPGo в системе Ubuntu Ubuntu 22.04, а также изучите основные новые функции, представленные в версии 2.3.0.

    Предпосылки

    • Сервер Ubuntu 22.04.
    • Пользователь без полномочий root с привилегиями sudo.

    Настройка брандмауэра UFW

    В целях безопасности рекомендуется установить и настроить брандмауэр UFW в вашей системе. Сначала установите брандмауэр UFW с помощью следующей команды:

    sudo apt install ufw -y

    SFTPGo использует следующие порты TCP с конфигурацией по умолчанию:

    • 2022 для службы SFTP.
    • 8080 для пользовательских веб-интерфейсов администратора.

    Нам также необходимо разрешить порт OpenSSH для администрирования сервера.

    Разрешите все необходимые порты с помощью следующих команд:

    sudo ufw allow OpenSSH
    sudo ufw allow 2022/tcp
    sudo ufw allow 8080/tcp

    Далее включите брандмауэр UFW для запуска после перезагрузки системы:

    sudo ufw enable

    Проверьте статус:

    sudo ufw status

    Вы получите следующий вывод:

    Status: active

    To Action From
    -- ------ ----
    OpenSSH ALLOW Anywhere
    2022/tcp ALLOW Anywhere
    8080/tcp ALLOW Anywhere
    OpenSSH (v6) ALLOW Anywhere (v6)
    2022/tcp (v6) ALLOW Anywhere (v6)
    8080/tcp (v6) ALLOW Anywhere (v6)

    Установка SFTPGo на Ubuntu 22.04

    Вы можете установить SFTPGo из его PPA.

    Начните с добавления PPA:

    sudo add-apt-repository ppa:sftpgo/sftpgo
    sudo apt update

    Далее установите SFTPGo:

    sudo apt install sftpgo

    После установки SFTPGo уже должен быть запущен с конфигурацией по умолчанию и настроен на автоматический запуск при загрузке, проверьте его состояние с помощью следующей команды:

    systemctl status sftpgo

    Завершите установку SFTPGo

    Теперь откройте веб-браузер и войдите в мастер установки SFTPGo, используя URL-адрес: \http:///\.
    Вы будете перенаправлены на следующую страницу:

    Введите имя пользователя и пароль администратора и нажмите кнопку \Создать администратора\.
    Вновь созданный администратор автоматически войдет в систему, чтобы вы могли создавать своих пользователей SFTPGo.

    Дополнительные сведения о создании пользователей см. в Руководстве по началу работы.

    Новые функции в версии 2.3.0

    Давайте рассмотрим основные новые функции, представленные в версии 2.3.0, в следующих разделах.

    Группы

    Использование групп упрощает администрирование нескольких пользователей SFTPGo: вы можете назначить настройки один раз для группы, а не несколько раз для каждого отдельного пользователя.

    SFTPGo поддерживает два типа групп:

    • основные группы
    • дополнительные группы

    Пользователь может быть членом основной группы и многих дополнительных групп. В зависимости от типа группы настройки наследуются по-разному.
    Более подробную информацию можно найти в официальной документации.

    Давайте посмотрим на пример использования здесь.

    Предположим, у вас есть следующие требования:

    • каждый пользователь должен быть ограничен локальным домашним каталогом, содержащим имя пользователя в качестве последнего элемента пути, например, /srv/sftpgo/data/
    • для каждого пользователя максимальный размер загружаемого файла не должен превышать 1 ГБ.
    • у каждого пользователя должна быть виртуальная папка S3, доступная по пути /s3, и каждый пользователь может получить доступ только к указанному \префиксу\ корзины S3. Он не должен иметь доступа к файлам других пользователей
    • у каждого пользователя должна быть виртуальная папка S3, доступная по пути /shared. Это папка, к которой имеют доступ другие пользователи
    • группа пользователей может загружать и просматривать содержимое только по пути /shared, в то время как другая группа пользователей имеет полный доступ

    Мы можем легко выполнить эти требования, определив две группы.

    В пользовательском интерфейсе веб-администратора SFTPGo щелкните \Папки\, а затем значок \+\.

    Создайте папку с именем \S3private\.
    Укажите в качестве хранилища \AWS S3 (Compatible)\ и заполните необходимые параметры:

    • название сегмента
    • регион
    • учетные данные: ключ доступа и секрет доступа

    Важной частью является \Префикс ключа\, установите для него значение users/%username%/.

    Префикс ключа ограничивает доступ к указанной подпапке ведра.
    Заполнитель \%username%\ будет заменен соответствующим именем пользователя.

    Создайте еще одну папку с именем \S3shared\ с теми же настройками, что и \S3private\, но на этот раз установите \Префикс ключа\ на shared/.
    Префикс ключа не имеет заполнителя, поэтому папка будет работать по статическому пути, который не будет меняться в зависимости от связанного пользователя.

    Теперь нажмите на «Группы», а затем на значок «+» и добавьте группу с именем «Основная».

    Установите \Домашний каталог\ на /srv/sftpgo/data/%username%.

    Как и прежде, заполнитель \%username%\ будет заменен соответствующим именем пользователя.

    Добавьте две виртуальные папки в эту группу и установите «Максимальный размер загружаемого файла» на 1073741824 байта (1 ГБ).

    Добавьте новую группу и назовите ее \SharedReadOnly\, в разделе ACL установите разрешение на путь /shared, чтобы был предоставлен доступ только для чтения.

    На этом настройка группы завершена.

    Теперь мы можем создать наших пользователей и установить основную группу в \Primary\.
    Для пользователей, которым нужен доступ только для чтения к пути /shared, мы также должны установить \SharedReadOnly\ в качестве вторичной группы.

    Нажмите на «Пользователи», а затем на значок «+» и добавьте пользователя с именем «user1».

    Этот пользователь соответствует вышеуказанным ограничениям и имеет полный доступ к пути /shared.

    Теперь создайте «user2», который соответствует указанным выше ограничениям и имеет доступ только для чтения к пути /shared.

    Вы также можете создать несколько пользователей одновременно, используя функцию шаблона.

    Просто установите имена пользователей, учетные данные и членство в группе.

    Теперь вы можете войти в систему с помощью любого SFTP-клиента, такого как FileZilla, WinSCP и т. д., и убедиться, что требования соблюдены.

    Внешние ресурсы

    Обмен файлами с внешними пользователями без учетной записи SFTPGo является распространенным требованием. В версии 2.3.0 эта функция была улучшена.
    Поддерживаются следующие режимы общего доступа:

    • только для чтения
    • только писать
    • читать и писать

    Давайте посмотрим, как они работают.
    Войдите в пользовательский интерфейс WebClient и создайте новый каталог с именем \external_share\.

    Добавьте несколько файлов во вновь созданный каталог.

    Затем выберите папку \external_share\ и щелкните значок \Общий ресурс\.

    Появится экран «Добавить новый общий ресурс», выберите область «Чтение».
    При желании вы можете ограничить количество использований общей папки, защитить общую папку паролем, ограничить доступ по исходному IP-адресу, установить дату автоматического истечения срока действия.

    Затем из списка общих ресурсов выберите только что созданный общий ресурс и щелкните значок «Ссылка». Появится всплывающее окно с инструкциями по использованию общего ресурса.

    Вы можете загрузить общий контент в виде одного ZIP-файла или просмотреть его и загрузить файл за файлом.
    Вы можете скопировать эти ссылки и отправить их своим внешним клиентам.

    Ссылка на доступный для просмотра общий ресурс появится, как вы можете видеть на следующем экране.

    Теперь отредактируйте общий ресурс и измените область действия на \Запись\.
    Ссылка на общий ресурс покажет следующий экран.

    Таким образом, ваши внешние пользователи могут загружать файлы, но не могут просматривать или загружать общее содержимое.
    Если вы хотите предотвратить перезапись существующих файлов, вы можете использовать стандартные разрешения SFTPGo для каждого каталога.

    Снова отредактируйте общий ресурс и измените область действия на \Чтение/запись\.
    Ссылка на общий ресурс покажет следующий экран.

    Теперь внешние пользователи могут просматривать, загружать и добавлять новые файлы в общий каталог.

    Брендинг

    Веб-интерфейсы SFTPGo можно настроить в соответствии с вашим брендом. Вот соответствующий раздел конфигурации в /etc/sftpgo/sftogo.json:

    "branding": {
    "web_admin": {
    "name": "",
    "short_name": "",
    "favicon_path": "",
    "logo_path": "",
    "login_image_path": "",
    "disclaimer_name": "",
    "disclaimer_path": "",
    "default_css": "",
    "extra_css": []
    },
    "web_client": {
    "name": "",
    "short_name": "",
    "favicon_path": "",
    "logo_path": "",
    "login_image_path": "",
    "disclaimer_name": "",
    "disclaimer_path": "",
    "default_css": "",
    "extra_css": []
    }
    }

    Взгляните на экран входа в систему WebAdmin.

    \Имя\ по умолчанию – \SFTPGo WebAdmin\, поэтому заголовок страницы – \SFTPGo WebAdmin – Логин\.
    Короткое имя\ по умолчанию – \WebAdmin\, поэтому имя входа страница показывает \WebAdmin - <версия SFTPGo>\.
    Вы можете настроить значок значка, установив \favicon_path\, а изображение слева, установив \login_image_path\.
    Если вы установите \disclaimer_name\ и \disclaimer_path\, в нижней части страницы входа появится новая ссылка. Вы можете использовать его для юридического заявления об отказе от ответственности или чего-либо еще.

    Вы можете настроить логотип и метку в левом верхнем углу страниц для вошедших в систему пользователей, установив \logo_path\ и \short_name\.

    SFTPGo использует отличную тему SB Admin2. Если вы хотите внести небольшие изменения в тему, вы можете установить \extra_css\, чтобы указать пути к вашим пользовательским файлам CSS.
    Если, с другой стороны, вы пересобираете CSS SB Admin 2, вы можете установите \default_css\ на путь к вашему пользовательскому CSS. Таким образом, мы избегаем загрузки темы по умолчанию, а затем переопределения ее вашими изменениями.

    Все сконфигурированные пути (favicon_path, logo_path и т. д.) должны относиться к \static_files_path\.
    В Linux путь к статическим_файлам по умолчанию - /usr/share/sftpgo/static, вы можете создать, например, каталог \branding\ и поместить туда свои пользовательские ресурсы.
    Например, вы можете скопировать свой favicon в /usr/share/sftpgo/static/branding/favicon.ico и установить \favicon_path\ в /branding/favicon.ico.

    Вы можете переопределить любые параметры конфигурации с помощью переменных среды. Например, путь к значку веб-администратора можно задать с помощью переменной среды SFTPGO_HTTPD__BINDINGS__0__BRANDING__WEB_ADMIN__FAVICON_PATH.
    Дополнительную информацию о настройке SFTPGo с использованием переменных среды можно найти здесь.

    После изменения файла конфигурации вам необходимо перезапустить службу SFTPGo, чтобы изменения вступили в силу.

    sudo systemctl restart sftpgo.service

    Подключиться к OpenID

    Если у вас есть существующий поставщик удостоверений, он, скорее всего, поддерживает стандарт OpenID Connect.

    Теперь вы можете сопоставить пользователей вашего поставщика удостоверений с администраторами/пользователями SFTPGo, чтобы вы могли входить в SFTPGo WebClient и пользовательские интерфейсы WebAdmin, используя своего поставщика удостоверений.

    Пользователи SFTPGo также могут автоматически создаваться после успешного входа в систему с подключением OpenID путем определения ловушки перед входом в систему. Вы можете настроить поля утверждений токенов, чтобы они были доступны для хука перед входом в систему, а затем реализовать свою собственную логику при создании/обновлении пользователей SFTPGo в хуке.

    Официальная документация SFTPGo объясняет шаги по интеграции SFTPGo с Keycloak. Другие поставщики удостоверений, такие как Google Identity, Azure Active Directory, Auth0, OneLogin, были протестированы сообществом SFTPGo и подтверждены их работоспособностью.

    Как правило, любой поставщик удостоверений OpenID Connect, реализующий спецификации OpenID Connect Discovery, должен работать.

    АКМЕ

    SFTPGo имеет встроенную среду ACME (автоматическая среда управления сертификатами), поэтому вы можете легко получить и обновить бесплатный сертификат Lets encrypt TLS для веб-интерфейса SFTPGo и REST API, службы WebDAV и службы FTP.

    Получение сертификата Lets Encrypt включает в себя решение задачи проверки домена, выдаваемой сервером ACME (автоматическая среда управления сертификатами). Эта задача подтверждает ваше право собственности на домен(ы), для которых вы пытаетесь получить сертификат. Существуют различные типы вызовов, SFTPGo поддерживает типы вызовов «HTTP-01» и «TLS-ALPN-01».

    Чтобы иметь возможность использовать протокол ACME, вам необходимо действительное доменное имя, указанное с IP-адресом вашего сервера.

    Давайте посмотрим пример конфигурации, мы делаем следующие предположения:

    • нам нужен сертификат TLS для домена \sftpgo.com\
    • у нас уже есть веб-сервер, работающий на порту \80\ для домена \sftpgo.com\, а корневой веб-путь — /var/www/sftpgo.com.

    Откройте файл конфигурации SFTPGo /etc/sftpgo/sftpgo.json, найдите раздел «acme» и измените его следующим образом:

    "acme": {
    "domains": ["sftpgo.com"],
    "email": "<you email address here>",
    "key_type": "4096",
    "certs_path": "/var/lib/sftpgo/certs",
    "ca_endpoint": "https://acme-v02.api.letsencrypt.org/directory",
    "renew_days": 30,
    "http01_challenge": {
    "port": 80,
    "proxy_header": "",
    "webroot": "/var/www/sftpgo.com"
    },
    "tls_alpn01_challenge": {
    "port": 0
    }
    }

    Убедитесь, что пользователь \sftpgo\ может писать в каталог /var/www/sftpgo.com или предварительно создать каталог /var/www/sftpgo.com/.well-known/acme-challenge с соответствующими разрешениями. .

    Зарегистрируйте свою учетную запись и получите сертификаты, выполнив следующую команду:

    sudo -E su - sftpgo -m -s /bin/bash -c 'sftpgo acme run -c /etc/sftpgo'

    Сделанный! Отныне служба SFTPGo позаботится об автоматическом обновлении сертификатов для настроенных доменов.
    По умолчанию сертификаты хранятся в каталоге /var/lib/sftpgo/certs. Теперь вы можете настроить службы SFTPGo для использования этих сертификатов.
    Например, для веб-интерфейса измените файл конфигурации SFTPGo /etc/sftpgo/sftpgo.json следующим образом:

    "httpd": {
    "bindings": [
    {
    "port": 9443,
    "address": "",
    "enable_web_admin": true,
    "enable_web_client": true,
    "enable_https": true,
    "certificate_file": "/var/lib/sftpgo/certs/sftpgo.com.crt",
    "certificate_key_file": "/var/lib/sftpgo/certs/sftpgo.com.key",
    .....

    Перезапустите службу SFTPGo, чтобы применить изменения:

    sudo systemctl restart sftpgo.service

    Аналогичным образом вы можете включить TLS для других сервисов.

    Гео-IP фильтрация

    Плагин фильтрации SFTPGO Geo-IP позволяет принимать/отклонять подключения на основе географического положения IP-адресов клиентов.

    Плагин может читать базы данных MaxMind GeoIP2. Вам необходимо скачать базу данных страны в формате MMDB.

    Давайте посмотрим на пример конфигурации.
    Мы делаем следующие предположения:

    • плагин фильтрации Geo-IP находится по пути /usr/local/bin/sftpgo-plugin-geoipfilter-linux-amd64.
    • база данных страны находится по пути /var/lib/sftpgo/GeoLite2-Country.mmdb.
    • мы хотим разрешить подключение только из Италии

    Откройте файл конфигурации SFTPGo /etc/sftpgo/sftpgo.json, найдите раздел \плагины\ и измените его следующим образом:

    "plugins": [
    {
    "type": "ipfilter",
    "cmd": "/usr/local/bin/sftpgo-plugin-geoipfilter-linux-amd64",
    "args": ["serve", "--db-file", "/var/lib/sftpgo/GeoLite2-Country.mmdb", "--allowed-countries", "IT"],
    "sha256sum": "",
    "auto_mtls": true
    }
    ]

    Перезапустите службу SFTPGo, чтобы применить изменения:

    sudo systemctl restart sftpgo.service

    Сделанный!

    В журналах SFTPGo вы увидите что-то подобное, когда соединение из запрещенной страны будет отклонено:

    {"level":"debug","time":"2022-06-02T14:05:48.616","sender":"plugins.ipfilter.sftpgo-plugin-geoipfilter-linux-amd64","message":"[DEBUG] country not allowed: ip=XXX.XX.XXX.XXX country=NL"}

    Другие плагины SFTPGo доступны здесь.

    Ограничение файлов и каталогов на основе шаблонов оболочки

    SFTPGo поддерживает фильтры по шаблонам оболочки для каждого пользователя и для каждого каталога: файлы могут быть разрешены, запрещены и, при необходимости, скрыты на основе шаблонов, подобных оболочке.

    Давайте рассмотрим несколько примеров.
    Предположим, что вы хотите запретить все файлы с расширениями jpg и png в определенном каталоге.
    Выберите пользователя для изменения, разверните раздел \ACL\ и добавьте похожий на оболочку ограничение по шаблону.

    Таким образом, файлы с расширениями png и jpg не могут быть загружены или загружены, но по-прежнему видны в списке каталогов, если они уже существуют.
    Вы можете скрыть их, установив для политики значение \Скрытый\.

    Политика \Скрытая\ была введена в v2.3.0.