nephosolutions.sftp_server
SFTP-Сервер
Это роль 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
ansible-galaxy install nephosolutions.sftp_server