diff --git a/playbooks/deploy_ssh_certs.yml b/playbooks/deploy_ssh_certs.yml deleted file mode 100644 index a52e574..0000000 --- a/playbooks/deploy_ssh_certs.yml +++ /dev/null @@ -1,94 +0,0 @@ -- hosts: all - become: yes - vars: - # Задайте пути к ключам на вашей локальной машине (где запускается Ansible), - # предварительно скачав их с сервера step-ca - local_ssh_user_ca_pub_path: "~/.step/secrets/ssh_user_ca_key.pub" - local_ssh_host_ca_key_path: "~/.step/secrets/ssh_host_ca_key" - - tasks: - # --- ЭТАП 1: УПРАВЛЕНИЕ ПОЛЬЗОВАТЕЛЯМИ И КАТАЛОГАМИ --- - - - name: Создание системной директории для принципалов - file: - path: /etc/ssh/auth_principals - state: directory - owner: root - group: root - mode: '0755' - - - name: Создание локальных пользователей из списка проекта - user: - name: "{{ item.name }}" - shell: /bin/bash - create_home: yes - state: present - loop: "{{ project_users }}" - - - name: Генерация файлов auth_principals для каждого пользователя - copy: - dest: "/etc/ssh/auth_principals/{{ item.name }}" - content: "{{ allowed_projects | join('\n') }}\n" - owner: root - group: root - mode: '0644' - loop: "{{ project_users }}" - - - name: Настройка беспарольного sudo для администраторов проекта - copy: - dest: "/etc/sudoers.d/project-ssh-{{ item.name }}" - content: "{{ item.name }} ALL=(ALL) NOPASSWD:ALL" - validate: /usr/sbin/visudo -cf %s - mode: '0440' - loop: "{{ project_users }}" - when: item.sudo | bool - - # --- ЭТАП 2: РАСКАТКА ДОВЕРИЯ К USER CA --- - - - name: Копирование публичного ключа User CA на хост - copy: - src: "{{ local_ssh_user_ca_pub_path }}" - dest: /etc/ssh/ca.pub - owner: root - group: root - mode: '0644' - - # --- ЭТАП 3: ХОСТОВЫЕ СЕРТИФИКАТЫ (Опционально, локальный выпуск) --- - # Мы генерируем сертификат прямо на машине администратора с помощью локального step-cli - # и копируем готовый сертификат на целевой сервер. - - - name: Локальная генерация Host-сертификата для целевой ноды - delegate_to: localhost - become: no - shell: > - step ssh certificate {{ inventory_hostname }} /tmp/{{ inventory_hostname }}_host.pub - --host --sign --ca-key {{ local_ssh_host_ca_key_path }} --no-password --insecure - --principal {{ inventory_hostname }} --principal {{ ansible_host }} - args: - creates: "/tmp/{{ inventory_hostname }}-cert.pub" - # Примечание: Для работы этой задачи на вашем ПК должен быть настроен step-cli контекст. - # Если это сложно автоматизировать, этот блок можно пока пропустить. - - # --- ЭТАП 4: НАСТРОЙКА SSHD_CONFIG --- - - - name: Сбор имен всех разрешенных пользователей для AllowUsers - set_fact: - allow_users_list: "{{ project_users | map(attribute='name') | join(' ') }}" - - - name: Конфигурация OpenSSH Daemon - blockinfile: - path: /etc/ssh/sshd_config - block: | - TrustedUserCAKeys /etc/ssh/ca.pub - AuthorizedPrincipalsFile /etc/ssh/auth_principals/%u - AllowUsers {{ allow_users_list }} hogweed1 - PasswordAuthentication no - PubkeyAuthentication yes - marker: "# {mark} ANSIBLE MANAGED ZERO TRUST BLOCK #" - notify: Restart SSH - - handlers: - - name: Restart SSH - service: - name: sshd - state: restarted \ No newline at end of file