Added initial script to harden SSH installs
This commit is contained in:
39
playbooks/ssh_hardening.yml
Normal file
39
playbooks/ssh_hardening.yml
Normal file
@@ -0,0 +1,39 @@
|
||||
---
|
||||
- name: Harden SSH Configuration
|
||||
hosts: all
|
||||
become: true
|
||||
vars:
|
||||
# Set this to true in Semaphore to allow key-based root login
|
||||
# If ALLOW_ROOT_SSH isn't in Semaphore, it defaults to 'false'
|
||||
allow_root_ssh: "{{ ALLOW_ROOT__SSH | default(false) | bool }}"
|
||||
|
||||
|
||||
tasks:
|
||||
- name: Backup SSH config
|
||||
ansible.builtin.copy:
|
||||
src: /etc/ssh/sshd_config
|
||||
dest: /etc/ssh/sshd_config.bak
|
||||
remote_src: true
|
||||
mode: '0600'
|
||||
|
||||
- name: Configure SSH Hardening
|
||||
ansible.builtin.lineinfile:
|
||||
path: /etc/ssh/sshd_config
|
||||
regexp: "{{ item.regexp }}"
|
||||
line: "{{ item.line }}"
|
||||
state: present
|
||||
validate: '/usr/sbin/sshd -t -f %s'
|
||||
loop:
|
||||
# Disables all password logins
|
||||
- { regexp: '^#?PasswordAuthentication', line: "PasswordAuthentication no" }
|
||||
# Allows root ONLY if they have a key
|
||||
- { regexp: '^#?PermitRootLogin', line: "PermitRootLogin {{ 'prohibit-password' if allow_root_ssh else 'no' }}" }
|
||||
# Ensures PubKey is definitely on
|
||||
- { regexp: '^#?PubkeyAuthentication', line: "PubkeyAuthentication yes" }
|
||||
notify: Restart SSH
|
||||
|
||||
handlers:
|
||||
- name: Restart SSH
|
||||
ansible.builtin.service:
|
||||
name: ssh
|
||||
state: restarted
|
||||
Reference in New Issue
Block a user