# yamllint disable rule:line-length --- - name: "Create {{ evobsd_internal_group }}, {{ evobsd_ssh_group }}, {{ evobsd_sudo_group }} group" group: name: "{{ item }}" system: true with_items: - "{{ evobsd_internal_group }}" - "{{ evobsd_ssh_group }}" - "{{ evobsd_sudo_group }}" tags: - accounts - admin - name: "Create user accounts" include: user.yml vars: user: "{{ item.value }}" with_dict: "{{ evolix_users }}" when: evolix_users != {} tags: - accounts - admin - name: "Verify AllowGroups directive" command: "grep -E '^AllowGroups' /etc/ssh/sshd_config" changed_when: false failed_when: false check_mode: false register: grep_allowgroups_ssh tags: - accounts - admin - name: "Verify AllowUsers directive" command: "grep -E '^AllowUsers' /etc/ssh/sshd_config" changed_when: false failed_when: false check_mode: false register: grep_allowusers_ssh tags: - accounts - admin - name: "Check that AllowUsers and AllowGroup do not override each other" assert: that: "not (grep_allowusers_ssh.rc == 0 and grep_allowgroups_ssh.rc == 0)" msg: "We can't deal with AllowUsers and AllowGroups at the same time" tags: - accounts - admin - name: "If AllowGroups is present then use it" set_fact: ssh_allowgroups: "{{ (grep_allowgroups_ssh.rc == 0) or (grep_allowusers_ssh.rc != 0) }}" tags: - accounts - admin - name: "Add AllowGroups sshd directive with '{{ evobsd_ssh_group }}'" lineinfile: dest: /etc/ssh/sshd_config line: "\nAllowGroups {{ evobsd_ssh_group }}" insertafter: 'Subsystem' validate: '/usr/sbin/sshd -t -f %s' notify: reload sshd when: - ssh_allowgroups - grep_allowgroups_ssh.rc == 1 tags: - accounts - admin - name: "Append '{{ evobsd_ssh_group }}' to AllowGroups sshd directive" replace: dest: /etc/ssh/sshd_config regexp: '^(AllowGroups ((?!\b{{ evobsd_ssh_group }}\b).)*)$' replace: '\1 {{ evobsd_ssh_group }}' validate: '/usr/sbin/sshd -t -f %s' notify: reload sshd when: - ssh_allowgroups - grep_allowgroups_ssh.rc == 0 tags: - accounts - admin - name: "Security directives for EvoBSD" blockinfile: dest: /etc/ssh/sshd_config marker: "# {mark} EVOBSD PASSWORD RESTRICTIONS" block: | Match Address {{ evolix_trusted_ips | join(',') }} PasswordAuthentication yes Match Group {{ evobsd_internal_group }} PasswordAuthentication no insertafter: EOF validate: '/usr/sbin/sshd -t -f %s' notify: reload sshd when: - evolix_trusted_ips != [] tags: - accounts - admin - name: "Disable root login" replace: dest: /etc/ssh/sshd_config regexp: '^PermitRootLogin (yes|without-password|prohibit-password)' replace: "PermitRootLogin no" notify: reload sshd tags: - accounts - admin