--- - name: load os/distrubtion/version specific variables include_vars: "{{ item }}" with_first_found: - files: - "{{ ansible_distribution_release }}.yml" - "{{ ansible_distribution }}.yml" - "{{ ansible_os_family }}.yml" - name: hardening ssh-server config vars: sshd_options: IgnoreRhosts: "yes" PermitRootLogin: "without-password" PubkeyAuthentication: "yes" HostbasedAuthentication: "no" PermitEmptyPasswords: "no" UseDNS: "no" loop: "{{ sshd_options | dict2items }}" loop_control: label: "{{ item.key }} = {{ item.value }}" lineinfile: dest: /etc/ssh/sshd_config regexp: "^#?\\s*{{ item.key }}\\s" line: "{{ item.key }} {{ item.value }}" insertbefore: '^### ansible core/sshd config barrier ###' notify: restart ssh - name: limit allowed users when: not sshd_allow_any_user | bool lineinfile: dest: /etc/ssh/sshd_config regexp: "^AllowUsers\\s" line: "AllowUsers {{ ' '.join([ 'root' ] | union(sshd_allowusers_group) | union(sshd_allowusers_host)) }}" insertbefore: '^### ansible core/sshd config barrier ###' notify: restart ssh - name: allow any user when: sshd_allow_any_user | bool lineinfile: dest: /etc/ssh/sshd_config regexp: "^AllowUsers\\s" state: absent notify: restart ssh - name: install config barrier for other roles to use lineinfile: dest: /etc/ssh/sshd_config line: "### ansible core/sshd config barrier ###" insertafter: EOF notify: restart ssh - name: install ssh keys for root authorized_key: user: root key: "{{ ssh_keys_root | union(ssh_keys_root_extra) | join('\n') }}" exclusive: yes - name: delete root password when: sshd_disabled_password is defined user: name: root password: "{{ sshd_disabled_password }}"