sftp-server

SFTP-сервер

Роль Ansible Лицензия ПО Статус сборки

Эта роль Ansible настраивает сервер OpenSSH для доступа к SFTP с использованием chroot. Роль создана так, чтобы не менять настройки OpenSSH пользователя без необходимости. Вместо этого она изменяет только важные параметры и добавляет остальные настройки в виде специального блока конфигурации (отсутствие поддержки конфигурации в формате conf.d/ в OpenSSH вынуждает к такому поведению).

Требования

Рекомендуется установить scp_if_ssh в значение true в разделе ssh_connection вашего файла ansible.cfg, так как Ansible по умолчанию использует SFTP для передачи файлов, и с помощью этой роли вы можете случайно заблокировать доступ к SFTP на вашем сервере. Резервная копия SCP продолжит работать. Пример конфигурации:

; ansible.cfg
...
[ssh_connection]
scp_if_ssh=True

Кроме того, требуется только сам Ansible. Тестировалось с версиями Ansible 2.0.2.0, 2.2.2.0 и 2.3.0.0. Работает на Ubuntu 14.04 и 16.04, не тестировалось на других версиях. Некоторая работа была проведена по поддержке RHEL, но это в настоящее время официально не поддерживается оригинальным автором (дополнительные вклады, конечно, приветствуются ;-)

Переменные роли

Следующие переменные роли имеют отношение:

  • sftp_home_partition: Раздел, где будут находиться домашние директории пользователей SFTP. По умолчанию "/home".
  • sftp_group_name: Имя группы Unix, к которой должны принадлежать все пользователи SFTP. По умолчанию "sftpusers".
  • sftp_directories: Список директорий, которые необходимо создать автоматически по умолчанию для всех пользователей SFTP. По умолчанию пустой список (т.е. "[]").
    • Значения могут быть простыми строками или словарями, содержащими пары ключ/значение name и (опционально) mode.
  • sftp_start_directory: Директория, которая должна быть частью значений sftp_directories и является начальной директорией нового SFTP-соединения. По умолчанию отключена с пустым строковым значением.
  • sftp_allow_passwords: Разрешать ли аутентификацию по паролю для SFTP. По умолчанию False.
  • sftp_enable_selinux_support: Явно включить поддержку SELinux или нет. По умолчанию False.
  • sftp_enable_logging: Включить ведение журнала. Журналы аутентификации будут записываться в /var/log/sftp/auth.log, а журналы активности SFTP будут записываться в /var/log/sftp/verbose.log. По умолчанию False.
  • sftp_users: Список пользователей, в виде карты, содержащей следующие элементы:
    • name: Имя Unix пользователя, которому нужен доступ к SFTP.
    • group: Необязательная основная группа пользователя. Если установлена, будет использоваться для разрешения на домашнюю директорию пользователя. В противном случае используется sftp_group_name.
    • password: Хэш пароля для входа пользователя - т.е. openssl passwd -1 -salt salty passpass. Пустые пароли можно установить с помощью password: "". ПРИМЕЧАНИЕ: Похоже, что для правильной работы пустых паролей необходимо установить UsePAM yes и PermitEmptyPassword yes в sshd_config. Внесение этих изменений выходит за рамки данной роли и должно быть сделано отдельно.
    • shell: Булевое значение, указывающее, должен ли пользователь иметь доступ к оболочке (по умолчанию True).
    • authorized: Необязательный список файлов, размещенных в files/, которые содержат действительные открытые ключи для SFTP пользователя.
    • sftp_directories: Список директорий, которые необходимо создать индивидуально для пользователя SFTP. По умолчанию пустой список (т.е. "[]").
    • append: Булевое значение для добавления sftp_group_name в группы пользователей (если есть), вместо установки (по умолчанию False).
    • mode: Режим домашней директории пользователя (по умолчанию 0750).
    • skeleton: Необязательная директория-скелет для домашней директории (например: /dev/null). По умолчанию системные настройки.
    • home: Необязательная домашняя директория (например: /home/bob). По умолчанию sftp_home_partition/name.
  • sftp_nologin_shell: Оболочка пользователя с "nologin". (по умолчанию /sbin/nologin.)

Заметки:

  • Настройка sftp_nologin_shell определяет оболочку, назначаемую пользователям sftp_users, когда оболочка пользователя SFTP установлена в значение False. (Оболочка nologin гарантирует, что пользователь может использовать только SFTP и не имеет других прав на вход.) Это значение может различаться в зависимости от версии операционной системы.

Пример плейбука

---
- name: тест-плейбук | Тест роли sftp-server
  hosts: all
  become: yes
  become_user: root
  vars:
    - sftp_users:
      - name: peter
        password: "$1$salty$li5TXAa2G6oxHTDkqx3Dz/" # passpass
        shell: False
        sftp_directories:
        - directory_only_for_peter1
        - directory_only_for_peter2
      - name: sally
        password: ""
        authorized: [sally.pub]
        home: /var/tmp/sally
        append: True
    - sftp_directories:
      - imports
      - exports
      - { name: public, mode: 755 }
      - other
  roles:
    - sftp-server

Лицензия

Эта роль Ansible распространяется под лицензией MIT. Более подробную информацию можно найти в файле LICENSE.

Пожертвования

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

  • BTC: 1AWHJcUBha35FnuuWat9urRW2FNc4ftztv
  • ETH: 0xAF1Aac4c40446F4C46e55614F14d9b32d712ECBc
О проекте

Setup chrooted SFTP service on top of OpenSSH

Установить
ansible-galaxy install johanmeiring/ansible-sftp
Лицензия
mit
Загрузки
114285
Владелец