sftp_server

SFTP-Сервер

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

Это роль Ansible, которая настраивает сервер OpenSSH для изолированного доступа SFTP. Роль разработана так, чтобы не изменять пользовательские настройки 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: test-playbook | Тестирование роли 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 nephosolutions/ansible-role-sftp-server
Лицензия
mit
Загрузки
579
Владелец
ICT Consultancy & Services – DevOps & Cloud Architects